I: pbuilder: network access will be disabled during build I: Current time: Tue Oct 4 05:13:22 -12 2022 I: pbuilder-time-stamp: 1664903602 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/buster-reproducible-base.tgz] I: copying local configuration I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [clickhouse_18.16.1+ds-4.dsc] I: copying [./clickhouse_18.16.1+ds.orig.tar.xz] I: copying [./clickhouse_18.16.1+ds-4.debian.tar.xz] I: Extracting source gpgv: unknown type of key resource 'trustedkeys.kbx' gpgv: keyblock resource '/var/lib/jenkins/.gnupg/trustedkeys.kbx': General error gpgv: Signature made Sun Feb 3 10:52:20 2019 -12 gpgv: using RSA key 04B59D90DF7CC2ABCD49BAEACA87E9E82AAC33F1 gpgv: issuer "gq@debian.org" gpgv: Can't check signature: No public key dpkg-source: warning: failed to verify signature on ./clickhouse_18.16.1+ds-4.dsc dpkg-source: info: extracting clickhouse in clickhouse-18.16.1+ds dpkg-source: info: unpacking clickhouse_18.16.1+ds.orig.tar.xz dpkg-source: info: unpacking clickhouse_18.16.1+ds-4.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying 0001-Enable-link-time-optimization-flto.patch dpkg-source: info: applying 0002-Remove-non-determinism.patch dpkg-source: info: applying 0003-Fix-FTBFS-with-gcc-because-of-Wno-format.patch dpkg-source: info: applying 0004-Disable-optimization-for-build-host.patch dpkg-source: info: applying 0005-Use-system-installed-googletest.patch dpkg-source: info: applying 0006-Disable-unwind.patch dpkg-source: info: applying 0007-Disable-base64-usage-not-available-in-Debian-yet.patch dpkg-source: info: applying 0008-Replace-cpuid-with-cpuinfo.patch dpkg-source: info: applying 0009-Fix-install-of-binaries-when-SPLIT_BINARIES-is-set.patch dpkg-source: info: applying 0010-Fix-link-with-pthread-when-std-thread-is-used.patch dpkg-source: info: applying 0011-Change-libraries-hierarchy-links-most-of-them-into-m.patch dpkg-source: info: applying 0012-Correctly-find-and-use-system-metrohash-library.patch dpkg-source: info: applying 0013-server-config.xml-Set-log-level-to-warning.patch dpkg-source: info: applying 0014-Set-default-umask-to-027.patch dpkg-source: info: applying 0015-Fix-fallback-lz4-decomression.patch I: using fakeroot in build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/9511/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='arm64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=8' DISTRIBUTION='' HOME='/var/lib/jenkins' HOST_ARCH='arm64' IFS=' ' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='9511' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/tmp.ZWaVYvV1GT/pbuilderrc_LVNE --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/buster-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.ZWaVYvV1GT/b1 --logfile b1/build.log clickhouse_18.16.1+ds-4.dsc' SUDO_GID='117' SUDO_UID='110' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' USERNAME='root' _='/usr/bin/systemd-run' http_proxy='http://192.168.101.16:3128' I: uname -a Linux codethink11-arm64 4.15.0-154-generic #161-Ubuntu SMP Fri Jul 30 13:01:15 UTC 2021 aarch64 GNU/Linux I: ls -l /bin total 4928 -rwxr-xr-x 1 root root 1216928 Apr 17 2019 bash -rwxr-xr-x 3 root root 34808 Jul 10 2019 bunzip2 -rwxr-xr-x 3 root root 34808 Jul 10 2019 bzcat lrwxrwxrwx 1 root root 6 Jul 10 2019 bzcmp -> bzdiff -rwxr-xr-x 1 root root 2227 Jul 10 2019 bzdiff lrwxrwxrwx 1 root root 6 Jul 10 2019 bzegrep -> bzgrep -rwxr-xr-x 1 root root 4877 Jun 24 2019 bzexe lrwxrwxrwx 1 root root 6 Jul 10 2019 bzfgrep -> bzgrep -rwxr-xr-x 1 root root 3641 Jul 10 2019 bzgrep -rwxr-xr-x 3 root root 34808 Jul 10 2019 bzip2 -rwxr-xr-x 1 root root 14264 Jul 10 2019 bzip2recover lrwxrwxrwx 1 root root 6 Jul 10 2019 bzless -> bzmore -rwxr-xr-x 1 root root 1297 Jul 10 2019 bzmore -rwxr-xr-x 1 root root 35576 Feb 28 2019 cat -rwxr-xr-x 1 root root 60256 Feb 28 2019 chgrp -rwxr-xr-x 1 root root 56096 Feb 28 2019 chmod -rwxr-xr-x 1 root root 64368 Feb 28 2019 chown -rwxr-xr-x 1 root root 134632 Feb 28 2019 cp -rwxr-xr-x 1 root root 129536 Jan 17 2019 dash -rwxr-xr-x 1 root root 97136 Feb 28 2019 date -rwxr-xr-x 1 root root 76736 Feb 28 2019 dd -rwxr-xr-x 1 root root 93752 Feb 28 2019 df -rwxr-xr-x 1 root root 138848 Feb 28 2019 dir -rwxr-xr-x 1 root root 75984 Jan 9 2019 dmesg lrwxrwxrwx 1 root root 8 Sep 26 2018 dnsdomainname -> hostname lrwxrwxrwx 1 root root 8 Sep 26 2018 domainname -> hostname -rwxr-xr-x 1 root root 31368 Feb 28 2019 echo -rwxr-xr-x 1 root root 28 Jan 7 2019 egrep -rwxr-xr-x 1 root root 27256 Feb 28 2019 false -rwxr-xr-x 1 root root 28 Jan 7 2019 fgrep -rwxr-xr-x 1 root root 68792 Jan 9 2019 findmnt -rwsr-xr-x 1 root root 34824 Apr 22 2020 fusermount -rwxr-xr-x 1 root root 174304 Jan 7 2019 grep -rwxr-xr-x 2 root root 2345 Jan 5 2019 gunzip -rwxr-xr-x 1 root root 6375 Jan 5 2019 gzexe -rwxr-xr-x 1 root root 89656 Jan 5 2019 gzip -rwxr-xr-x 1 root root 18440 Sep 26 2018 hostname -rwxr-xr-x 1 root root 64472 Feb 28 2019 ln -rwxr-xr-x 1 root root 52544 Jul 26 2018 login -rwxr-xr-x 1 root root 138848 Feb 28 2019 ls -rwxr-xr-x 1 root root 108552 Jan 9 2019 lsblk -rwxr-xr-x 1 root root 76840 Feb 28 2019 mkdir -rwxr-xr-x 1 root root 64480 Feb 28 2019 mknod -rwxr-xr-x 1 root root 39736 Feb 28 2019 mktemp -rwxr-xr-x 1 root root 38840 Jan 9 2019 more -rwsr-xr-x 1 root root 47112 Jan 9 2019 mount -rwxr-xr-x 1 root root 14344 Jan 9 2019 mountpoint -rwxr-xr-x 1 root root 138736 Feb 28 2019 mv lrwxrwxrwx 1 root root 8 Sep 26 2018 nisdomainname -> hostname lrwxrwxrwx 1 root root 14 Feb 14 2019 pidof -> /sbin/killall5 -rwxr-xr-x 1 root root 35560 Feb 28 2019 pwd lrwxrwxrwx 1 root root 4 Apr 17 2019 rbash -> bash -rwxr-xr-x 1 root root 43712 Feb 28 2019 readlink -rwxr-xr-x 1 root root 68440 Feb 28 2019 rm -rwxr-xr-x 1 root root 39624 Feb 28 2019 rmdir -rwxr-xr-x 1 root root 19144 Jan 21 2019 run-parts -rwxr-xr-x 1 root root 114016 Dec 22 2018 sed lrwxrwxrwx 1 root root 4 Sep 9 02:46 sh -> dash -rwxr-xr-x 1 root root 31384 Feb 28 2019 sleep -rwxr-xr-x 1 root root 72480 Feb 28 2019 stty -rwsr-xr-x 1 root root 59424 Jan 9 2019 su -rwxr-xr-x 1 root root 31416 Feb 28 2019 sync -rwxr-xr-x 1 root root 449416 Apr 23 2019 tar -rwxr-xr-x 1 root root 10560 Jan 21 2019 tempfile -rwxr-xr-x 1 root root 88968 Feb 28 2019 touch -rwxr-xr-x 1 root root 27256 Feb 28 2019 true -rwxr-xr-x 1 root root 14264 Apr 22 2020 ulockmgr_server -rwsr-xr-x 1 root root 30728 Jan 9 2019 umount -rwxr-xr-x 1 root root 31384 Feb 28 2019 uname -rwxr-xr-x 2 root root 2345 Jan 5 2019 uncompress -rwxr-xr-x 1 root root 138848 Feb 28 2019 vdir -rwxr-xr-x 1 root root 34824 Jan 9 2019 wdctl -rwxr-xr-x 1 root root 946 Jan 21 2019 which lrwxrwxrwx 1 root root 8 Sep 26 2018 ypdomainname -> hostname -rwxr-xr-x 1 root root 1983 Jan 5 2019 zcat -rwxr-xr-x 1 root root 1677 Jan 5 2019 zcmp -rwxr-xr-x 1 root root 5879 Jan 5 2019 zdiff -rwxr-xr-x 1 root root 29 Jan 5 2019 zegrep -rwxr-xr-x 1 root root 29 Jan 5 2019 zfgrep -rwxr-xr-x 1 root root 2080 Jan 5 2019 zforce -rwxr-xr-x 1 root root 7584 Jan 5 2019 zgrep -rwxr-xr-x 1 root root 2205 Jan 5 2019 zless -rwxr-xr-x 1 root root 1841 Jan 5 2019 zmore -rwxr-xr-x 1 root root 4552 Jan 5 2019 znew I: user script /srv/workspace/pbuilder/9511/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: arm64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: cmake, curl, debhelper (>= 10), default-libmysqlclient-dev | libmysqlclient-dev, gdb, googletest, libboost-dev, libboost-filesystem-dev, libboost-program-options-dev, libboost-regex-dev, libboost-system-dev, libboost-thread-dev, libcapnp-dev, libcctz-dev, libcpuinfo-dev, libdouble-conversion-dev, libfarmhash-dev, libglib2.0-dev, libgoogle-perftools-dev, libgsasl7-dev, libicu-dev, libjemalloc-dev, libltdl-dev, liblz4-dev, libpoco-dev, librdkafka-dev, libre2-dev, libreadline-dev, libsparsehash-dev, libssl-dev, libzstd-dev, llvm-dev, openssl, python-lxml, python-requests, python-termcolor, unixodbc-dev, zlib1g-dev, libdivide-dev, libpcg-cpp-dev, libmetrohash-dev dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19168 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on cmake; however: Package cmake is not installed. pbuilder-satisfydepends-dummy depends on curl; however: Package curl is not installed. pbuilder-satisfydepends-dummy depends on debhelper (>= 10); however: Package debhelper is not installed. pbuilder-satisfydepends-dummy depends on default-libmysqlclient-dev | libmysqlclient-dev; however: Package default-libmysqlclient-dev is not installed. Package libmysqlclient-dev is not installed. pbuilder-satisfydepends-dummy depends on gdb; however: Package gdb is not installed. pbuilder-satisfydepends-dummy depends on googletest; however: Package googletest is not installed. pbuilder-satisfydepends-dummy depends on libboost-dev; however: Package libboost-dev is not installed. pbuilder-satisfydepends-dummy depends on libboost-filesystem-dev; however: Package libboost-filesystem-dev is not installed. pbuilder-satisfydepends-dummy depends on libboost-program-options-dev; however: Package libboost-program-options-dev is not installed. pbuilder-satisfydepends-dummy depends on libboost-regex-dev; however: Package libboost-regex-dev is not installed. pbuilder-satisfydepends-dummy depends on libboost-system-dev; however: Package libboost-system-dev is not installed. pbuilder-satisfydepends-dummy depends on libboost-thread-dev; however: Package libboost-thread-dev is not installed. pbuilder-satisfydepends-dummy depends on libcapnp-dev; however: Package libcapnp-dev is not installed. pbuilder-satisfydepends-dummy depends on libcctz-dev; however: Package libcctz-dev is not installed. pbuilder-satisfydepends-dummy depends on libcpuinfo-dev; however: Package libcpuinfo-dev is not installed. pbuilder-satisfydepends-dummy depends on libdouble-conversion-dev; however: Package libdouble-conversion-dev is not installed. pbuilder-satisfydepends-dummy depends on libfarmhash-dev; however: Package libfarmhash-dev is not installed. pbuilder-satisfydepends-dummy depends on libglib2.0-dev; however: Package libglib2.0-dev is not installed. pbuilder-satisfydepends-dummy depends on libgoogle-perftools-dev; however: Package libgoogle-perftools-dev is not installed. pbuilder-satisfydepends-dummy depends on libgsasl7-dev; however: Package libgsasl7-dev is not installed. pbuilder-satisfydepends-dummy depends on libicu-dev; however: Package libicu-dev is not installed. pbuilder-satisfydepends-dummy depends on libjemalloc-dev; however: Package libjemalloc-dev is not installed. pbuilder-satisfydepends-dummy depends on libltdl-dev; however: Package libltdl-dev is not installed. pbuilder-satisfydepends-dummy depends on liblz4-dev; however: Package liblz4-dev is not installed. pbuilder-satisfydepends-dummy depends on libpoco-dev; however: Package libpoco-dev is not installed. pbuilder-satisfydepends-dummy depends on librdkafka-dev; however: Package librdkafka-dev is not installed. pbuilder-satisfydepends-dummy depends on libre2-dev; however: Package libre2-dev is not installed. pbuilder-satisfydepends-dummy depends on libreadline-dev; however: Package libreadline-dev is not installed. pbuilder-satisfydepends-dummy depends on libsparsehash-dev; however: Package libsparsehash-dev is not installed. pbuilder-satisfydepends-dummy depends on libssl-dev; however: Package libssl-dev is not installed. pbuilder-satisfydepends-dummy depends on libzstd-dev; however: Package libzstd-dev is not installed. pbuilder-satisfydepends-dummy depends on llvm-dev; however: Package llvm-dev is not installed. pbuilder-satisfydepends-dummy depends on openssl; however: Package openssl is not installed. pbuilder-satisfydepends-dummy depends on python-lxml; however: Package python-lxml is not installed. pbuilder-satisfydepends-dummy depends on python-requests; however: Package python-requests is not installed. pbuilder-satisfydepends-dummy depends on python-termcolor; however: Package python-termcolor is not installed. pbuilder-satisfydepends-dummy depends on unixodbc-dev; however: Package unixodbc-dev is not installed. pbuilder-satisfydepends-dummy depends on zlib1g-dev; however: Package zlib1g-dev is not installed. pbuilder-satisfydepends-dummy depends on libdivide-dev; however: Package libdivide-dev is not installed. pbuilder-satisfydepends-dummy depends on libpcg-cpp-dev; however: Package libpcg-cpp-dev is not installed. pbuilder-satisfydepends-dummy depends on libmetrohash-dev; however: Package libmetrohash-dev is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} binfmt-support{a} bsdmainutils{a} ca-certificates{a} cmake{a} cmake-data{a} comerr-dev{a} curl{a} debhelper{a} default-libmysqlclient-dev{a} dh-autoreconf{a} dh-strip-nondeterminism{a} dwz{a} file{a} gdb{a} gettext{a} gettext-base{a} googletest{a} groff-base{a} icu-devtools{a} intltool-debian{a} krb5-multidev{a} libarchive-zip-perl{a} libarchive13{a} libblkid-dev{a} libboost-atomic1.67-dev{a} libboost-atomic1.67.0{a} libboost-chrono1.67-dev{a} libboost-chrono1.67.0{a} libboost-date-time1.67-dev{a} libboost-date-time1.67.0{a} libboost-dev{a} libboost-filesystem-dev{a} libboost-filesystem1.67-dev{a} libboost-filesystem1.67.0{a} libboost-program-options-dev{a} libboost-program-options1.67-dev{a} libboost-program-options1.67.0{a} libboost-regex-dev{a} libboost-regex1.67-dev{a} libboost-regex1.67.0{a} libboost-serialization1.67-dev{a} libboost-serialization1.67.0{a} libboost-system-dev{a} libboost-system1.67-dev{a} libboost-thread-dev{a} libboost-thread1.67-dev{a} libboost-thread1.67.0{a} libboost1.67-dev{a} libbsd0{a} libcapnp-0.7.0{a} libcapnp-dev{a} libcctz-dev{a} libcctz2{a} libcpuinfo-dev{a} libcpuinfo0{a} libcroco3{a} libcurl4{a} libdivide-dev{a} libdouble-conversion-dev{a} libdouble-conversion1{a} libedit2{a} libelf1{a} libevent-2.1-6{a} libexpat1{a} libexpat1-dev{a} libfarmhash-dev{a} libfarmhash0{a} libffi-dev{a} libfile-stripnondeterminism-perl{a} libglib2.0-0{a} libglib2.0-bin{a} libglib2.0-data{a} libglib2.0-dev{a} libglib2.0-dev-bin{a} libgmp-dev{a} libgmpxx4ldbl{a} libgnutls-dane0{a} libgnutls-openssl27{a} libgnutls28-dev{a} libgnutlsxx28{a} libgoogle-perftools-dev{a} libgoogle-perftools4{a} libgsasl7{a} libgsasl7-dev{a} libgssapi-krb5-2{a} libgssrpc4{a} libicu-dev{a} libicu63{a} libidn11{a} libidn11-dev{a} libidn2-dev{a} libjemalloc-dev{a} libjemalloc2{a} libjsoncpp1{a} libk5crypto3{a} libkadm5clnt-mit11{a} libkadm5srv-mit11{a} libkdb5-9{a} libkeyutils1{a} libkrb5-3{a} libkrb5support0{a} libldap-2.4-2{a} libldap-common{a} libllvm7{a} libltdl-dev{a} libltdl7{a} liblz4-dev{a} libmagic-mgc{a} libmagic1{a} libmariadb-dev{a} libmariadb-dev-compat{a} libmariadb3{a} libmetrohash-dev{a} libmetrohash1{a} libmount-dev{a} libmpdec2{a} libncurses-dev{a} libncurses6{a} libnghttp2-14{a} libntlm0{a} libntlm0-dev{a} libodbc1{a} libp11-kit-dev{a} libpcg-cpp-dev{a} libpcre16-3{a} libpcre3-dev{a} libpcre32-3{a} libpcrecpp0v5{a} libpipeline1{a} libpoco-dev{a} libpococrypto60{a} libpocodata60{a} libpocodatamysql60{a} libpocodataodbc60{a} libpocodatasqlite60{a} libpocoencodings60{a} libpocofoundation60{a} libpocojson60{a} libpocomongodb60{a} libpoconet60{a} libpoconetssl60{a} libpocoredis60{a} libpocoutil60{a} libpocoxml60{a} libpocozip60{a} libprocps7{a} libpsl5{a} libpython-stdlib{a} libpython2-stdlib{a} libpython2.7-minimal{a} libpython2.7-stdlib{a} libpython3-stdlib{a} libpython3.7{a} libpython3.7-minimal{a} libpython3.7-stdlib{a} librdkafka++1{a} librdkafka-dev{a} librdkafka1{a} libre2-5{a} libre2-dev{a} libreadline-dev{a} libreadline7{a} librhash0{a} librtmp1{a} libsasl2-2{a} libsasl2-modules-db{a} libselinux1-dev{a} libsepol1-dev{a} libsigsegv2{a} libsparsehash-dev{a} libsqlite3-dev{a} libssh2-1{a} libssl-dev{a} libssl1.1{a} libtasn1-6-dev{a} libtcmalloc-minimal4{a} libtool{a} libuchardet0{a} libunbound8{a} libuv1{a} libxml2{a} libxslt1.1{a} libzstd-dev{a} llvm{a} llvm-7{a} llvm-7-dev{a} llvm-7-runtime{a} llvm-dev{a} llvm-runtime{a} lsb-base{a} m4{a} man-db{a} mariadb-common{a} mime-support{a} mysql-common{a} nettle-dev{a} odbcinst{a} odbcinst1debian2{a} openssl{a} pkg-config{a} po-debconf{a} procps{a} python{a} python-certifi{a} python-chardet{a} python-idna{a} python-lxml{a} python-minimal{a} python-pkg-resources{a} python-requests{a} python-six{a} python-termcolor{a} python-urllib3{a} python2{a} python2-minimal{a} python2.7{a} python2.7-minimal{a} python3{a} python3-distutils{a} python3-lib2to3{a} python3-minimal{a} python3.7{a} python3.7-minimal{a} readline-common{a} sensible-utils{a} unixodbc-dev{a} uuid-dev{a} zlib1g-dev{a} The following packages are RECOMMENDED but will NOT be installed: krb5-locales libarchive-cpio-perl libc6-dbg libgpm2 libmail-sendmail-perl libsasl2-modules libtasn1-doc psmisc publicsuffix python-bs4 python-cryptography python-html5lib python-ipaddress python-openssl shared-mime-info xdg-user-dirs 0 packages upgraded, 232 newly installed, 0 to remove and 0 not upgraded. Need to get 128 MB of archives. After unpacking 742 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian buster/main arm64 libbsd0 arm64 0.9.1-2+deb10u1 [97.6 kB] Get: 2 http://deb.debian.org/debian buster/main arm64 bsdmainutils arm64 11.1.2+b1 [185 kB] Get: 3 http://deb.debian.org/debian buster/main arm64 libuchardet0 arm64 0.0.6-3 [65.0 kB] Get: 4 http://deb.debian.org/debian buster/main arm64 groff-base arm64 1.22.4-3+deb10u1 [870 kB] Get: 5 http://deb.debian.org/debian buster/main arm64 libpipeline1 arm64 1.5.1-2 [29.8 kB] Get: 6 http://deb.debian.org/debian buster/main arm64 man-db arm64 2.8.5-2 [1258 kB] Get: 7 http://deb.debian.org/debian buster/main arm64 libpython2.7-minimal arm64 2.7.16-2+deb10u1 [395 kB] Get: 8 http://deb.debian.org/debian buster/main arm64 python2.7-minimal arm64 2.7.16-2+deb10u1 [1292 kB] Get: 9 http://deb.debian.org/debian buster/main arm64 python2-minimal arm64 2.7.16-1 [41.4 kB] Get: 10 http://deb.debian.org/debian buster/main arm64 python-minimal arm64 2.7.16-1 [21.0 kB] Get: 11 http://deb.debian.org/debian buster/main arm64 libssl1.1 arm64 1.1.1d-0+deb10u6 [1382 kB] Get: 12 http://deb.debian.org/debian buster/main arm64 mime-support all 3.62 [37.2 kB] Get: 13 http://deb.debian.org/debian buster/main arm64 libexpat1 arm64 2.2.6-2+deb10u1 [85.4 kB] Get: 14 http://deb.debian.org/debian buster/main arm64 readline-common all 7.0-5 [70.6 kB] Get: 15 http://deb.debian.org/debian buster/main arm64 libreadline7 arm64 7.0-5 [134 kB] Get: 16 http://deb.debian.org/debian buster/main arm64 libpython2.7-stdlib arm64 2.7.16-2+deb10u1 [1890 kB] Get: 17 http://deb.debian.org/debian buster/main arm64 python2.7 arm64 2.7.16-2+deb10u1 [305 kB] Get: 18 http://deb.debian.org/debian buster/main arm64 libpython2-stdlib arm64 2.7.16-1 [20.8 kB] Get: 19 http://deb.debian.org/debian buster/main arm64 libpython-stdlib arm64 2.7.16-1 [20.8 kB] Get: 20 http://deb.debian.org/debian buster/main arm64 python2 arm64 2.7.16-1 [41.6 kB] Get: 21 http://deb.debian.org/debian buster/main arm64 python arm64 2.7.16-1 [22.8 kB] Get: 22 http://deb.debian.org/debian buster/main arm64 libpython3.7-minimal arm64 3.7.3-2+deb10u3 [588 kB] Get: 23 http://deb.debian.org/debian buster/main arm64 python3.7-minimal arm64 3.7.3-2+deb10u3 [1404 kB] Get: 24 http://deb.debian.org/debian buster/main arm64 python3-minimal arm64 3.7.3-1 [36.6 kB] Get: 25 http://deb.debian.org/debian buster/main arm64 libmpdec2 arm64 2.4.2-2 [77.7 kB] Get: 26 http://deb.debian.org/debian buster/main arm64 libpython3.7-stdlib arm64 3.7.3-2+deb10u3 [1642 kB] Get: 27 http://deb.debian.org/debian buster/main arm64 python3.7 arm64 3.7.3-2+deb10u3 [330 kB] Get: 28 http://deb.debian.org/debian buster/main arm64 libpython3-stdlib arm64 3.7.3-1 [20.0 kB] Get: 29 http://deb.debian.org/debian buster/main arm64 python3 arm64 3.7.3-1 [61.5 kB] Get: 30 http://deb.debian.org/debian buster/main arm64 libncurses6 arm64 6.1+20181013-2+deb10u2 [92.6 kB] Get: 31 http://deb.debian.org/debian buster/main arm64 libprocps7 arm64 2:3.3.15-2 [58.0 kB] Get: 32 http://deb.debian.org/debian buster/main arm64 lsb-base all 10.2019051400 [28.4 kB] Get: 33 http://deb.debian.org/debian buster/main arm64 procps arm64 2:3.3.15-2 [245 kB] Get: 34 http://deb.debian.org/debian buster/main arm64 sensible-utils all 0.0.12 [15.8 kB] Get: 35 http://deb.debian.org/debian buster/main arm64 libmagic-mgc arm64 1:5.35-4+deb10u2 [242 kB] Get: 36 http://deb.debian.org/debian buster/main arm64 libmagic1 arm64 1:5.35-4+deb10u2 [115 kB] Get: 37 http://deb.debian.org/debian buster/main arm64 file arm64 1:5.35-4+deb10u2 [66.5 kB] Get: 38 http://deb.debian.org/debian buster/main arm64 gettext-base arm64 0.19.8.1-9 [120 kB] Get: 39 http://deb.debian.org/debian buster/main arm64 libsigsegv2 arm64 2.12-2 [32.3 kB] Get: 40 http://deb.debian.org/debian buster/main arm64 m4 arm64 1.4.18-2 [198 kB] Get: 41 http://deb.debian.org/debian buster/main arm64 autoconf all 2.69-11 [341 kB] Get: 42 http://deb.debian.org/debian buster/main arm64 autotools-dev all 20180224.1 [77.0 kB] Get: 43 http://deb.debian.org/debian buster/main arm64 automake all 1:1.16.1-4 [771 kB] Get: 44 http://deb.debian.org/debian buster/main arm64 autopoint all 0.19.8.1-9 [434 kB] Get: 45 http://deb.debian.org/debian buster/main arm64 binfmt-support arm64 2.2.0-2 [67.0 kB] Get: 46 http://deb.debian.org/debian buster/main arm64 openssl arm64 1.1.1d-0+deb10u6 [823 kB] Get: 47 http://deb.debian.org/debian buster/main arm64 ca-certificates all 20200601~deb10u2 [166 kB] Get: 48 http://deb.debian.org/debian buster/main arm64 cmake-data all 3.13.4-1 [1476 kB] Get: 49 http://deb.debian.org/debian buster/main arm64 libicu63 arm64 63.1-6+deb10u1 [8151 kB] Get: 50 http://deb.debian.org/debian buster/main arm64 libxml2 arm64 2.9.4+dfsg1-7+deb10u2 [625 kB] Get: 51 http://deb.debian.org/debian buster/main arm64 libarchive13 arm64 3.3.3-4+deb10u1 [291 kB] Get: 52 http://deb.debian.org/debian buster/main arm64 libkeyutils1 arm64 1.6-6 [14.9 kB] Get: 53 http://deb.debian.org/debian buster/main arm64 libkrb5support0 arm64 1.17-3+deb10u1 [64.9 kB] Get: 54 http://deb.debian.org/debian buster/main arm64 libk5crypto3 arm64 1.17-3+deb10u1 [123 kB] Get: 55 http://deb.debian.org/debian buster/main arm64 libkrb5-3 arm64 1.17-3+deb10u1 [351 kB] Get: 56 http://deb.debian.org/debian buster/main arm64 libgssapi-krb5-2 arm64 1.17-3+deb10u1 [150 kB] Get: 57 http://deb.debian.org/debian buster/main arm64 libsasl2-modules-db arm64 2.1.27+dfsg-1+deb10u1 [69.3 kB] Get: 58 http://deb.debian.org/debian buster/main arm64 libsasl2-2 arm64 2.1.27+dfsg-1+deb10u1 [105 kB] Get: 59 http://deb.debian.org/debian buster/main arm64 libldap-common all 2.4.47+dfsg-3+deb10u6 [90.0 kB] Get: 60 http://deb.debian.org/debian buster/main arm64 libldap-2.4-2 arm64 2.4.47+dfsg-3+deb10u6 [216 kB] Get: 61 http://deb.debian.org/debian buster/main arm64 libnghttp2-14 arm64 1.36.0-2+deb10u1 [81.9 kB] Get: 62 http://deb.debian.org/debian buster/main arm64 libpsl5 arm64 0.20.2-2 [53.6 kB] Get: 63 http://deb.debian.org/debian buster/main arm64 librtmp1 arm64 2.4+20151223.gitfa8646d.1-2 [55.7 kB] Get: 64 http://deb.debian.org/debian buster/main arm64 libssh2-1 arm64 1.8.0-2.1 [135 kB] Get: 65 http://deb.debian.org/debian buster/main arm64 libcurl4 arm64 7.64.0-4+deb10u2 [312 kB] Get: 66 http://deb.debian.org/debian buster/main arm64 libjsoncpp1 arm64 1.7.4-3 [71.0 kB] Get: 67 http://deb.debian.org/debian buster/main arm64 librhash0 arm64 1.3.8-1 [121 kB] Get: 68 http://deb.debian.org/debian buster/main arm64 libuv1 arm64 1.24.1-1 [105 kB] Get: 69 http://deb.debian.org/debian buster/main arm64 cmake arm64 3.13.4-1 [3046 kB] Get: 70 http://deb.debian.org/debian buster/main arm64 comerr-dev arm64 2.1-1.44.5-1+deb10u3 [102 kB] Get: 71 http://deb.debian.org/debian buster/main arm64 curl arm64 7.64.0-4+deb10u2 [260 kB] Get: 72 http://deb.debian.org/debian buster/main arm64 libtool all 2.4.6-9 [547 kB] Get: 73 http://deb.debian.org/debian buster/main arm64 dh-autoreconf all 19 [16.9 kB] Get: 74 http://deb.debian.org/debian buster/main arm64 libarchive-zip-perl all 1.64-1 [96.8 kB] Get: 75 http://deb.debian.org/debian buster/main arm64 libfile-stripnondeterminism-perl all 1.1.2-1 [19.8 kB] Get: 76 http://deb.debian.org/debian buster/main arm64 dh-strip-nondeterminism all 1.1.2-1 [13.0 kB] Get: 77 http://deb.debian.org/debian buster/main arm64 libelf1 arm64 0.176-1.1 [160 kB] Get: 78 http://deb.debian.org/debian buster/main arm64 dwz arm64 0.12-3 [71.7 kB] Get: 79 http://deb.debian.org/debian buster/main arm64 libglib2.0-0 arm64 2.58.3-2+deb10u3 [1185 kB] Get: 80 http://deb.debian.org/debian buster/main arm64 libcroco3 arm64 0.6.12-3 [140 kB] Get: 81 http://deb.debian.org/debian buster/main arm64 gettext arm64 0.19.8.1-9 [1261 kB] Get: 82 http://deb.debian.org/debian buster/main arm64 intltool-debian all 0.35.0+20060710.5 [26.8 kB] Get: 83 http://deb.debian.org/debian buster/main arm64 po-debconf all 1.0.21 [248 kB] Get: 84 http://deb.debian.org/debian buster/main arm64 debhelper all 12.1.1 [1016 kB] Get: 85 http://deb.debian.org/debian buster/main arm64 mysql-common all 5.8+1.0.5 [7324 B] Get: 86 http://deb.debian.org/debian buster/main arm64 mariadb-common all 1:10.3.29-0+deb10u1 [32.5 kB] Get: 87 http://deb.debian.org/debian buster/main arm64 libmariadb3 arm64 1:10.3.29-0+deb10u1 [162 kB] Get: 88 http://deb.debian.org/debian buster/main arm64 libevent-2.1-6 arm64 2.1.8-stable-4 [150 kB] Get: 89 http://deb.debian.org/debian buster/main arm64 libunbound8 arm64 1.9.0-2+deb10u2 [432 kB] Get: 90 http://deb.debian.org/debian buster/main arm64 libgnutls-dane0 arm64 3.6.7-4+deb10u7 [317 kB] Get: 91 http://deb.debian.org/debian buster/main arm64 libgnutls-openssl27 arm64 3.6.7-4+deb10u7 [316 kB] Get: 92 http://deb.debian.org/debian buster/main arm64 libgnutlsxx28 arm64 3.6.7-4+deb10u7 [12.9 kB] Get: 93 http://deb.debian.org/debian buster/main arm64 libidn2-dev arm64 2.0.5-1+deb10u1 [79.0 kB] Get: 94 http://deb.debian.org/debian buster/main arm64 libp11-kit-dev arm64 0.23.15-2+deb10u1 [196 kB] Get: 95 http://deb.debian.org/debian buster/main arm64 libtasn1-6-dev arm64 4.13-3 [100 kB] Get: 96 http://deb.debian.org/debian buster/main arm64 libgmpxx4ldbl arm64 2:6.1.2+dfsg-4 [22.6 kB] Get: 97 http://deb.debian.org/debian buster/main arm64 libgmp-dev arm64 2:6.1.2+dfsg-4 [608 kB] Get: 98 http://deb.debian.org/debian buster/main arm64 nettle-dev arm64 3.4.1-1 [1091 kB] Get: 99 http://deb.debian.org/debian buster/main arm64 libgnutls28-dev arm64 3.6.7-4+deb10u7 [1124 kB] Get: 100 http://deb.debian.org/debian buster/main arm64 zlib1g-dev arm64 1:1.2.11.dfsg-1 [210 kB] Get: 101 http://deb.debian.org/debian buster/main arm64 libmariadb-dev arm64 1:10.3.29-0+deb10u1 [1015 kB] Get: 102 http://deb.debian.org/debian buster/main arm64 libmariadb-dev-compat arm64 1:10.3.29-0+deb10u1 [31.7 kB] Get: 103 http://deb.debian.org/debian buster/main arm64 default-libmysqlclient-dev arm64 1.0.5 [3764 B] Get: 104 http://deb.debian.org/debian buster/main arm64 libpython3.7 arm64 3.7.3-2+deb10u3 [1371 kB] Get: 105 http://deb.debian.org/debian buster/main arm64 gdb arm64 8.2.1-2+b3 [3122 kB] Get: 106 http://deb.debian.org/debian buster/main arm64 googletest arm64 1.8.1-3 [903 kB] Get: 107 http://deb.debian.org/debian buster/main arm64 icu-devtools arm64 63.1-6+deb10u1 [179 kB] Get: 108 http://deb.debian.org/debian buster/main arm64 libgssrpc4 arm64 1.17-3+deb10u1 [88.8 kB] Get: 109 http://deb.debian.org/debian buster/main arm64 libkdb5-9 arm64 1.17-3+deb10u1 [72.2 kB] Get: 110 http://deb.debian.org/debian buster/main arm64 libkadm5srv-mit11 arm64 1.17-3+deb10u1 [83.8 kB] Get: 111 http://deb.debian.org/debian buster/main arm64 libkadm5clnt-mit11 arm64 1.17-3+deb10u1 [72.0 kB] Get: 112 http://deb.debian.org/debian buster/main arm64 krb5-multidev arm64 1.17-3+deb10u1 [156 kB] Get: 113 http://deb.debian.org/debian buster/main arm64 uuid-dev arm64 2.33.1-0.1 [93.8 kB] Get: 114 http://deb.debian.org/debian buster/main arm64 libblkid-dev arm64 2.33.1-0.1 [229 kB] Get: 115 http://deb.debian.org/debian buster/main arm64 libboost1.67-dev arm64 1.67.0-13+deb10u1 [8388 kB] Get: 116 http://deb.debian.org/debian buster/main arm64 libboost-atomic1.67.0 arm64 1.67.0-13+deb10u1 [226 kB] Get: 117 http://deb.debian.org/debian buster/main arm64 libboost-atomic1.67-dev arm64 1.67.0-13+deb10u1 [225 kB] Get: 118 http://deb.debian.org/debian buster/main arm64 libboost-chrono1.67.0 arm64 1.67.0-13+deb10u1 [233 kB] Get: 119 http://deb.debian.org/debian buster/main arm64 libboost-chrono1.67-dev arm64 1.67.0-13+deb10u1 [235 kB] Get: 120 http://deb.debian.org/debian buster/main arm64 libboost-date-time1.67.0 arm64 1.67.0-13+deb10u1 [238 kB] Get: 121 http://deb.debian.org/debian buster/main arm64 libboost-serialization1.67.0 arm64 1.67.0-13+deb10u1 [311 kB] Get: 122 http://deb.debian.org/debian buster/main arm64 libboost-serialization1.67-dev arm64 1.67.0-13+deb10u1 [358 kB] Get: 123 http://deb.debian.org/debian buster/main arm64 libboost-date-time1.67-dev arm64 1.67.0-13+deb10u1 [248 kB] Get: 124 http://deb.debian.org/debian buster/main arm64 libboost-dev arm64 1.67.0.1 [3864 B] Get: 125 http://deb.debian.org/debian buster/main arm64 libboost-filesystem1.67.0 arm64 1.67.0-13+deb10u1 [257 kB] Get: 126 http://deb.debian.org/debian buster/main arm64 libboost-system1.67-dev arm64 1.67.0-13+deb10u1 [231 kB] Get: 127 http://deb.debian.org/debian buster/main arm64 libboost-filesystem1.67-dev arm64 1.67.0-13+deb10u1 [267 kB] Get: 128 http://deb.debian.org/debian buster/main arm64 libboost-filesystem-dev arm64 1.67.0.1 [3684 B] Get: 129 http://deb.debian.org/debian buster/main arm64 libboost-program-options1.67.0 arm64 1.67.0-13+deb10u1 [346 kB] Get: 130 http://deb.debian.org/debian buster/main arm64 libboost-program-options1.67-dev arm64 1.67.0-13+deb10u1 [384 kB] Get: 131 http://deb.debian.org/debian buster/main arm64 libboost-program-options-dev arm64 1.67.0.1 [3656 B] Get: 132 http://deb.debian.org/debian buster/main arm64 libboost-regex1.67.0 arm64 1.67.0-13+deb10u1 [458 kB] Get: 133 http://deb.debian.org/debian buster/main arm64 libicu-dev arm64 63.1-6+deb10u1 [9062 kB] Get: 134 http://deb.debian.org/debian buster/main arm64 libboost-regex1.67-dev arm64 1.67.0-13+deb10u1 [517 kB] Get: 135 http://deb.debian.org/debian buster/main arm64 libboost-regex-dev arm64 1.67.0.1 [3916 B] Get: 136 http://deb.debian.org/debian buster/main arm64 libboost-system-dev arm64 1.67.0.1 [3788 B] Get: 137 http://deb.debian.org/debian buster/main arm64 libboost-thread1.67.0 arm64 1.67.0-13+deb10u1 [264 kB] Get: 138 http://deb.debian.org/debian buster/main arm64 libboost-thread1.67-dev arm64 1.67.0-13+deb10u1 [270 kB] Get: 139 http://deb.debian.org/debian buster/main arm64 libboost-thread-dev arm64 1.67.0.1 [3672 B] Get: 140 http://deb.debian.org/debian buster/main arm64 libcapnp-0.7.0 arm64 0.7.0-3 [915 kB] Get: 141 http://deb.debian.org/debian buster/main arm64 libcapnp-dev arm64 0.7.0-3 [1384 kB] Get: 142 http://deb.debian.org/debian buster/main arm64 libcctz2 arm64 2.2+dfsg1-2 [38.7 kB] Get: 143 http://deb.debian.org/debian buster/main arm64 libcctz-dev arm64 2.2+dfsg1-2 [15.0 kB] Get: 144 http://deb.debian.org/debian buster/main arm64 libcpuinfo0 arm64 0.0~git20190201.d5e37ad-1 [23.6 kB] Get: 145 http://deb.debian.org/debian buster/main arm64 libcpuinfo-dev arm64 0.0~git20190201.d5e37ad-1 [12.7 kB] Get: 146 http://deb.debian.org/debian buster/main arm64 libdivide-dev all 1.0+dfsg1-2 [19.7 kB] Get: 147 http://deb.debian.org/debian buster/main arm64 libdouble-conversion1 arm64 3.1.0-3 [36.0 kB] Get: 148 http://deb.debian.org/debian buster/main arm64 libdouble-conversion-dev arm64 3.1.0-3 [54.8 kB] Get: 149 http://deb.debian.org/debian buster/main arm64 libedit2 arm64 3.1-20181209-1 [91.2 kB] Get: 150 http://deb.debian.org/debian buster/main arm64 libexpat1-dev arm64 2.2.6-2+deb10u1 [128 kB] Get: 151 http://deb.debian.org/debian buster/main arm64 libfarmhash0 arm64 0~git20171030.2f0e005-1 [10.2 kB] Get: 152 http://deb.debian.org/debian buster/main arm64 libfarmhash-dev arm64 0~git20171030.2f0e005-1 [48.6 kB] Get: 153 http://deb.debian.org/debian buster/main arm64 libffi-dev arm64 3.2.1-9 [155 kB] Get: 154 http://deb.debian.org/debian buster/main arm64 libglib2.0-data all 2.58.3-2+deb10u3 [1111 kB] Get: 155 http://deb.debian.org/debian buster/main arm64 libglib2.0-bin arm64 2.58.3-2+deb10u3 [123 kB] Get: 156 http://deb.debian.org/debian buster/main arm64 python3-lib2to3 all 3.7.3-1 [76.7 kB] Get: 157 http://deb.debian.org/debian buster/main arm64 python3-distutils all 3.7.3-1 [142 kB] Get: 158 http://deb.debian.org/debian buster/main arm64 libglib2.0-dev-bin arm64 2.58.3-2+deb10u3 [157 kB] Get: 159 http://deb.debian.org/debian buster/main arm64 libmount-dev arm64 2.33.1-0.1 [238 kB] Get: 160 http://deb.debian.org/debian buster/main arm64 libpcre16-3 arm64 2:8.39-12 [236 kB] Get: 161 http://deb.debian.org/debian buster/main arm64 libpcre32-3 arm64 2:8.39-12 [230 kB] Get: 162 http://deb.debian.org/debian buster/main arm64 libpcrecpp0v5 arm64 2:8.39-12 [151 kB] Get: 163 http://deb.debian.org/debian buster/main arm64 libpcre3-dev arm64 2:8.39-12 [578 kB] Get: 164 http://deb.debian.org/debian buster/main arm64 libsepol1-dev arm64 2.8-1 [308 kB] Get: 165 http://deb.debian.org/debian buster/main arm64 libselinux1-dev arm64 2.8-1+b1 [163 kB] Get: 166 http://deb.debian.org/debian buster/main arm64 pkg-config arm64 0.29-6 [62.2 kB] Get: 167 http://deb.debian.org/debian buster/main arm64 libglib2.0-dev arm64 2.58.3-2+deb10u3 [1511 kB] Get: 168 http://deb.debian.org/debian buster/main arm64 libtcmalloc-minimal4 arm64 2.7-1 [201 kB] Get: 169 http://deb.debian.org/debian buster/main arm64 libgoogle-perftools4 arm64 2.7-1 [299 kB] Get: 170 http://deb.debian.org/debian buster/main arm64 libgoogle-perftools-dev arm64 2.7-1 [568 kB] Get: 171 http://deb.debian.org/debian buster/main arm64 libidn11 arm64 1.33-2.2 [113 kB] Get: 172 http://deb.debian.org/debian buster/main arm64 libntlm0 arm64 1.5-1+deb10u1 [23.6 kB] Get: 173 http://deb.debian.org/debian buster/main arm64 libgsasl7 arm64 1.8.0-8+b2 [198 kB] Get: 174 http://deb.debian.org/debian buster/main arm64 libidn11-dev arm64 1.33-2.2 [592 kB] Get: 175 http://deb.debian.org/debian buster/main arm64 libntlm0-dev arm64 1.5-1+deb10u1 [28.3 kB] Get: 176 http://deb.debian.org/debian buster/main arm64 libgsasl7-dev arm64 1.8.0-8+b2 [266 kB] Get: 177 http://deb.debian.org/debian buster/main arm64 libjemalloc2 arm64 5.1.0-3 [178 kB] Get: 178 http://deb.debian.org/debian buster/main arm64 libjemalloc-dev arm64 5.1.0-3 [315 kB] Get: 179 http://deb.debian.org/debian buster/main arm64 libllvm7 arm64 1:7.0.1-8+deb10u2 [10.8 MB] Get: 180 http://deb.debian.org/debian buster/main arm64 libltdl7 arm64 2.4.6-9 [389 kB] Get: 181 http://deb.debian.org/debian buster/main arm64 libltdl-dev arm64 2.4.6-9 [162 kB] Get: 182 http://deb.debian.org/debian buster/main arm64 liblz4-dev arm64 1.8.3-1+deb10u1 [66.8 kB] Get: 183 http://deb.debian.org/debian buster/main arm64 libmetrohash1 arm64 1.1.3-4 [7656 B] Get: 184 http://deb.debian.org/debian buster/main arm64 libmetrohash-dev arm64 1.1.3-4 [5080 B] Get: 185 http://deb.debian.org/debian buster/main arm64 libncurses-dev arm64 6.1+20181013-2+deb10u2 [324 kB] Get: 186 http://deb.debian.org/debian buster/main arm64 libodbc1 arm64 2.3.6-0.1 [187 kB] Get: 187 http://deb.debian.org/debian buster/main arm64 libpcg-cpp-dev all 0.98.1-2 [21.3 kB] Get: 188 http://deb.debian.org/debian buster/main arm64 libpocofoundation60 arm64 1.9.0-5+b1 [470 kB] Get: 189 http://deb.debian.org/debian buster/main arm64 libpococrypto60 arm64 1.9.0-5+b1 [119 kB] Get: 190 http://deb.debian.org/debian buster/main arm64 libpocodata60 arm64 1.9.0-5+b1 [401 kB] Get: 191 http://deb.debian.org/debian buster/main arm64 libpocoencodings60 arm64 1.9.0-5+b1 [370 kB] Get: 192 http://deb.debian.org/debian buster/main arm64 libpocojson60 arm64 1.9.0-5+b1 [142 kB] Get: 193 http://deb.debian.org/debian buster/main arm64 libpocodatamysql60 arm64 1.9.0-5+b1 [100 kB] Get: 194 http://deb.debian.org/debian buster/main arm64 libpoconet60 arm64 1.9.0-5+b1 [356 kB] Get: 195 http://deb.debian.org/debian buster/main arm64 libpocomongodb60 arm64 1.9.0-5+b1 [120 kB] Get: 196 http://deb.debian.org/debian buster/main arm64 libpocoxml60 arm64 1.9.0-5+b1 [180 kB] Get: 197 http://deb.debian.org/debian buster/main arm64 libpocoutil60 arm64 1.9.0-5+b1 [170 kB] Get: 198 http://deb.debian.org/debian buster/main arm64 libpoconetssl60 arm64 1.9.0-5+b1 [126 kB] Get: 199 http://deb.debian.org/debian buster/main arm64 libpocodataodbc60 arm64 1.9.0-5+b1 [249 kB] Get: 200 http://deb.debian.org/debian buster/main arm64 libpocodatasqlite60 arm64 1.9.0-5+b1 [142 kB] Get: 201 http://deb.debian.org/debian buster/main arm64 libpocoredis60 arm64 1.9.0-5+b1 [101 kB] Get: 202 http://deb.debian.org/debian buster/main arm64 libpocozip60 arm64 1.9.0-5+b1 [136 kB] Get: 203 http://deb.debian.org/debian buster/main arm64 libsqlite3-dev arm64 3.27.2-3+deb10u1 [746 kB] Get: 204 http://deb.debian.org/debian buster/main arm64 libssl-dev arm64 1.1.1d-0+deb10u6 [1686 kB] Get: 205 http://deb.debian.org/debian buster/main arm64 libpoco-dev arm64 1.9.0-5+b1 [580 kB] Get: 206 http://deb.debian.org/debian buster/main arm64 librdkafka1 arm64 0.11.6-1.1 [304 kB] Get: 207 http://deb.debian.org/debian buster/main arm64 librdkafka++1 arm64 0.11.6-1.1 [33.0 kB] Get: 208 http://deb.debian.org/debian buster/main arm64 librdkafka-dev arm64 0.11.6-1.1 [437 kB] Get: 209 http://deb.debian.org/debian buster/main arm64 libre2-5 arm64 20190101+dfsg-2 [144 kB] Get: 210 http://deb.debian.org/debian buster/main arm64 libre2-dev arm64 20190101+dfsg-2 [209 kB] Get: 211 http://deb.debian.org/debian buster/main arm64 libreadline-dev arm64 7.0-5 [128 kB] Get: 212 http://deb.debian.org/debian buster/main arm64 libsparsehash-dev all 2.0.2-1 [76.9 kB] Get: 213 http://deb.debian.org/debian buster/main arm64 libxslt1.1 arm64 1.1.32-2.2~deb10u1 [225 kB] Get: 214 http://deb.debian.org/debian buster/main arm64 libzstd-dev arm64 1.3.8+dfsg-3+deb10u2 [267 kB] Get: 215 http://deb.debian.org/debian buster/main arm64 llvm-7-runtime arm64 1:7.0.1-8+deb10u2 [159 kB] Get: 216 http://deb.debian.org/debian buster/main arm64 llvm-runtime arm64 1:7.0-47 [7132 B] Get: 217 http://deb.debian.org/debian buster/main arm64 llvm-7 arm64 1:7.0.1-8+deb10u2 [3607 kB] Get: 218 http://deb.debian.org/debian buster/main arm64 llvm arm64 1:7.0-47 [9468 B] Get: 219 http://deb.debian.org/debian buster/main arm64 llvm-7-dev arm64 1:7.0.1-8+deb10u2 [19.3 MB] Get: 220 http://deb.debian.org/debian buster/main arm64 llvm-dev arm64 1:7.0-47 [7392 B] Get: 221 http://deb.debian.org/debian buster/main arm64 odbcinst1debian2 arm64 2.3.6-0.1 [75.5 kB] Get: 222 http://deb.debian.org/debian buster/main arm64 odbcinst arm64 2.3.6-0.1 [47.8 kB] Get: 223 http://deb.debian.org/debian buster/main arm64 python-certifi all 2018.8.24-1 [140 kB] Get: 224 http://deb.debian.org/debian buster/main arm64 python-pkg-resources all 40.8.0-1 [182 kB] Get: 225 http://deb.debian.org/debian buster/main arm64 python-chardet all 3.0.4-3 [80.6 kB] Get: 226 http://deb.debian.org/debian buster/main arm64 python-idna all 2.6-1 [34.1 kB] Get: 227 http://deb.debian.org/debian buster/main arm64 python-lxml arm64 4.3.2-1+deb10u3 [996 kB] Get: 228 http://deb.debian.org/debian buster/main arm64 python-six all 1.12.0-1 [15.7 kB] Get: 229 http://deb.debian.org/debian buster/main arm64 python-urllib3 all 1.24.1-1 [97.0 kB] Get: 230 http://deb.debian.org/debian buster/main arm64 python-requests all 2.21.0-1 [67.1 kB] Get: 231 http://deb.debian.org/debian buster/main arm64 python-termcolor all 1.1.0-2 [5708 B] Get: 232 http://deb.debian.org/debian buster/main arm64 unixodbc-dev arm64 2.3.6-0.1 [232 kB] Fetched 128 MB in 5s (23.7 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libbsd0:arm64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19168 files and directories currently installed.) Preparing to unpack .../00-libbsd0_0.9.1-2+deb10u1_arm64.deb ... Unpacking libbsd0:arm64 (0.9.1-2+deb10u1) ... Selecting previously unselected package bsdmainutils. Preparing to unpack .../01-bsdmainutils_11.1.2+b1_arm64.deb ... Unpacking bsdmainutils (11.1.2+b1) ... Selecting previously unselected package libuchardet0:arm64. Preparing to unpack .../02-libuchardet0_0.0.6-3_arm64.deb ... Unpacking libuchardet0:arm64 (0.0.6-3) ... Selecting previously unselected package groff-base. Preparing to unpack .../03-groff-base_1.22.4-3+deb10u1_arm64.deb ... Unpacking groff-base (1.22.4-3+deb10u1) ... Selecting previously unselected package libpipeline1:arm64. Preparing to unpack .../04-libpipeline1_1.5.1-2_arm64.deb ... Unpacking libpipeline1:arm64 (1.5.1-2) ... Selecting previously unselected package man-db. Preparing to unpack .../05-man-db_2.8.5-2_arm64.deb ... Unpacking man-db (2.8.5-2) ... Selecting previously unselected package libpython2.7-minimal:arm64. Preparing to unpack .../06-libpython2.7-minimal_2.7.16-2+deb10u1_arm64.deb ... Unpacking libpython2.7-minimal:arm64 (2.7.16-2+deb10u1) ... Selecting previously unselected package python2.7-minimal. Preparing to unpack .../07-python2.7-minimal_2.7.16-2+deb10u1_arm64.deb ... Unpacking python2.7-minimal (2.7.16-2+deb10u1) ... Selecting previously unselected package python2-minimal. Preparing to unpack .../08-python2-minimal_2.7.16-1_arm64.deb ... Unpacking python2-minimal (2.7.16-1) ... Selecting previously unselected package python-minimal. Preparing to unpack .../09-python-minimal_2.7.16-1_arm64.deb ... Unpacking python-minimal (2.7.16-1) ... Selecting previously unselected package libssl1.1:arm64. Preparing to unpack .../10-libssl1.1_1.1.1d-0+deb10u6_arm64.deb ... Unpacking libssl1.1:arm64 (1.1.1d-0+deb10u6) ... Selecting previously unselected package mime-support. Preparing to unpack .../11-mime-support_3.62_all.deb ... Unpacking mime-support (3.62) ... Selecting previously unselected package libexpat1:arm64. Preparing to unpack .../12-libexpat1_2.2.6-2+deb10u1_arm64.deb ... Unpacking libexpat1:arm64 (2.2.6-2+deb10u1) ... Selecting previously unselected package readline-common. Preparing to unpack .../13-readline-common_7.0-5_all.deb ... Unpacking readline-common (7.0-5) ... Selecting previously unselected package libreadline7:arm64. Preparing to unpack .../14-libreadline7_7.0-5_arm64.deb ... Unpacking libreadline7:arm64 (7.0-5) ... Selecting previously unselected package libpython2.7-stdlib:arm64. Preparing to unpack .../15-libpython2.7-stdlib_2.7.16-2+deb10u1_arm64.deb ... Unpacking libpython2.7-stdlib:arm64 (2.7.16-2+deb10u1) ... Selecting previously unselected package python2.7. Preparing to unpack .../16-python2.7_2.7.16-2+deb10u1_arm64.deb ... Unpacking python2.7 (2.7.16-2+deb10u1) ... Selecting previously unselected package libpython2-stdlib:arm64. Preparing to unpack .../17-libpython2-stdlib_2.7.16-1_arm64.deb ... Unpacking libpython2-stdlib:arm64 (2.7.16-1) ... Selecting previously unselected package libpython-stdlib:arm64. Preparing to unpack .../18-libpython-stdlib_2.7.16-1_arm64.deb ... Unpacking libpython-stdlib:arm64 (2.7.16-1) ... Setting up libpython2.7-minimal:arm64 (2.7.16-2+deb10u1) ... Setting up python2.7-minimal (2.7.16-2+deb10u1) ... Setting up python2-minimal (2.7.16-1) ... Selecting previously unselected package python2. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20631 files and directories currently installed.) Preparing to unpack .../python2_2.7.16-1_arm64.deb ... Unpacking python2 (2.7.16-1) ... Setting up python-minimal (2.7.16-1) ... Selecting previously unselected package python. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20664 files and directories currently installed.) Preparing to unpack .../python_2.7.16-1_arm64.deb ... Unpacking python (2.7.16-1) ... Selecting previously unselected package libpython3.7-minimal:arm64. Preparing to unpack .../libpython3.7-minimal_3.7.3-2+deb10u3_arm64.deb ... Unpacking libpython3.7-minimal:arm64 (3.7.3-2+deb10u3) ... Selecting previously unselected package python3.7-minimal. Preparing to unpack .../python3.7-minimal_3.7.3-2+deb10u3_arm64.deb ... Unpacking python3.7-minimal (3.7.3-2+deb10u3) ... Setting up libssl1.1:arm64 (1.1.1d-0+deb10u6) ... Setting up libpython3.7-minimal:arm64 (3.7.3-2+deb10u3) ... Setting up libexpat1:arm64 (2.2.6-2+deb10u1) ... Setting up python3.7-minimal (3.7.3-2+deb10u3) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20918 files and directories currently installed.) Preparing to unpack .../python3-minimal_3.7.3-1_arm64.deb ... Unpacking python3-minimal (3.7.3-1) ... Selecting previously unselected package libmpdec2:arm64. Preparing to unpack .../libmpdec2_2.4.2-2_arm64.deb ... Unpacking libmpdec2:arm64 (2.4.2-2) ... Selecting previously unselected package libpython3.7-stdlib:arm64. Preparing to unpack .../libpython3.7-stdlib_3.7.3-2+deb10u3_arm64.deb ... Unpacking libpython3.7-stdlib:arm64 (3.7.3-2+deb10u3) ... Selecting previously unselected package python3.7. Preparing to unpack .../python3.7_3.7.3-2+deb10u3_arm64.deb ... Unpacking python3.7 (3.7.3-2+deb10u3) ... Selecting previously unselected package libpython3-stdlib:arm64. Preparing to unpack .../libpython3-stdlib_3.7.3-1_arm64.deb ... Unpacking libpython3-stdlib:arm64 (3.7.3-1) ... Setting up python3-minimal (3.7.3-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21330 files and directories currently installed.) Preparing to unpack .../000-python3_3.7.3-1_arm64.deb ... Unpacking python3 (3.7.3-1) ... Selecting previously unselected package libncurses6:arm64. Preparing to unpack .../001-libncurses6_6.1+20181013-2+deb10u2_arm64.deb ... Unpacking libncurses6:arm64 (6.1+20181013-2+deb10u2) ... Selecting previously unselected package libprocps7:arm64. Preparing to unpack .../002-libprocps7_2%3a3.3.15-2_arm64.deb ... Unpacking libprocps7:arm64 (2:3.3.15-2) ... Selecting previously unselected package lsb-base. Preparing to unpack .../003-lsb-base_10.2019051400_all.deb ... Unpacking lsb-base (10.2019051400) ... Selecting previously unselected package procps. Preparing to unpack .../004-procps_2%3a3.3.15-2_arm64.deb ... Unpacking procps (2:3.3.15-2) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../005-sensible-utils_0.0.12_all.deb ... Unpacking sensible-utils (0.0.12) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../006-libmagic-mgc_1%3a5.35-4+deb10u2_arm64.deb ... Unpacking libmagic-mgc (1:5.35-4+deb10u2) ... Selecting previously unselected package libmagic1:arm64. Preparing to unpack .../007-libmagic1_1%3a5.35-4+deb10u2_arm64.deb ... Unpacking libmagic1:arm64 (1:5.35-4+deb10u2) ... Selecting previously unselected package file. Preparing to unpack .../008-file_1%3a5.35-4+deb10u2_arm64.deb ... Unpacking file (1:5.35-4+deb10u2) ... Selecting previously unselected package gettext-base. Preparing to unpack .../009-gettext-base_0.19.8.1-9_arm64.deb ... Unpacking gettext-base (0.19.8.1-9) ... Selecting previously unselected package libsigsegv2:arm64. Preparing to unpack .../010-libsigsegv2_2.12-2_arm64.deb ... Unpacking libsigsegv2:arm64 (2.12-2) ... Selecting previously unselected package m4. Preparing to unpack .../011-m4_1.4.18-2_arm64.deb ... Unpacking m4 (1.4.18-2) ... Selecting previously unselected package autoconf. Preparing to unpack .../012-autoconf_2.69-11_all.deb ... Unpacking autoconf (2.69-11) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../013-autotools-dev_20180224.1_all.deb ... Unpacking autotools-dev (20180224.1) ... Selecting previously unselected package automake. Preparing to unpack .../014-automake_1%3a1.16.1-4_all.deb ... Unpacking automake (1:1.16.1-4) ... Selecting previously unselected package autopoint. Preparing to unpack .../015-autopoint_0.19.8.1-9_all.deb ... Unpacking autopoint (0.19.8.1-9) ... Selecting previously unselected package binfmt-support. Preparing to unpack .../016-binfmt-support_2.2.0-2_arm64.deb ... Unpacking binfmt-support (2.2.0-2) ... Selecting previously unselected package openssl. Preparing to unpack .../017-openssl_1.1.1d-0+deb10u6_arm64.deb ... Unpacking openssl (1.1.1d-0+deb10u6) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../018-ca-certificates_20200601~deb10u2_all.deb ... Unpacking ca-certificates (20200601~deb10u2) ... Selecting previously unselected package cmake-data. Preparing to unpack .../019-cmake-data_3.13.4-1_all.deb ... Unpacking cmake-data (3.13.4-1) ... Selecting previously unselected package libicu63:arm64. Preparing to unpack .../020-libicu63_63.1-6+deb10u1_arm64.deb ... Unpacking libicu63:arm64 (63.1-6+deb10u1) ... Selecting previously unselected package libxml2:arm64. Preparing to unpack .../021-libxml2_2.9.4+dfsg1-7+deb10u2_arm64.deb ... Unpacking libxml2:arm64 (2.9.4+dfsg1-7+deb10u2) ... Selecting previously unselected package libarchive13:arm64. Preparing to unpack .../022-libarchive13_3.3.3-4+deb10u1_arm64.deb ... Unpacking libarchive13:arm64 (3.3.3-4+deb10u1) ... Selecting previously unselected package libkeyutils1:arm64. Preparing to unpack .../023-libkeyutils1_1.6-6_arm64.deb ... Unpacking libkeyutils1:arm64 (1.6-6) ... Selecting previously unselected package libkrb5support0:arm64. Preparing to unpack .../024-libkrb5support0_1.17-3+deb10u1_arm64.deb ... Unpacking libkrb5support0:arm64 (1.17-3+deb10u1) ... Selecting previously unselected package libk5crypto3:arm64. Preparing to unpack .../025-libk5crypto3_1.17-3+deb10u1_arm64.deb ... Unpacking libk5crypto3:arm64 (1.17-3+deb10u1) ... Selecting previously unselected package libkrb5-3:arm64. Preparing to unpack .../026-libkrb5-3_1.17-3+deb10u1_arm64.deb ... Unpacking libkrb5-3:arm64 (1.17-3+deb10u1) ... Selecting previously unselected package libgssapi-krb5-2:arm64. Preparing to unpack .../027-libgssapi-krb5-2_1.17-3+deb10u1_arm64.deb ... Unpacking libgssapi-krb5-2:arm64 (1.17-3+deb10u1) ... Selecting previously unselected package libsasl2-modules-db:arm64. Preparing to unpack .../028-libsasl2-modules-db_2.1.27+dfsg-1+deb10u1_arm64.deb ... Unpacking libsasl2-modules-db:arm64 (2.1.27+dfsg-1+deb10u1) ... Selecting previously unselected package libsasl2-2:arm64. Preparing to unpack .../029-libsasl2-2_2.1.27+dfsg-1+deb10u1_arm64.deb ... Unpacking libsasl2-2:arm64 (2.1.27+dfsg-1+deb10u1) ... Selecting previously unselected package libldap-common. Preparing to unpack .../030-libldap-common_2.4.47+dfsg-3+deb10u6_all.deb ... Unpacking libldap-common (2.4.47+dfsg-3+deb10u6) ... Selecting previously unselected package libldap-2.4-2:arm64. Preparing to unpack .../031-libldap-2.4-2_2.4.47+dfsg-3+deb10u6_arm64.deb ... Unpacking libldap-2.4-2:arm64 (2.4.47+dfsg-3+deb10u6) ... Selecting previously unselected package libnghttp2-14:arm64. Preparing to unpack .../032-libnghttp2-14_1.36.0-2+deb10u1_arm64.deb ... Unpacking libnghttp2-14:arm64 (1.36.0-2+deb10u1) ... Selecting previously unselected package libpsl5:arm64. Preparing to unpack .../033-libpsl5_0.20.2-2_arm64.deb ... Unpacking libpsl5:arm64 (0.20.2-2) ... Selecting previously unselected package librtmp1:arm64. Preparing to unpack .../034-librtmp1_2.4+20151223.gitfa8646d.1-2_arm64.deb ... Unpacking librtmp1:arm64 (2.4+20151223.gitfa8646d.1-2) ... Selecting previously unselected package libssh2-1:arm64. Preparing to unpack .../035-libssh2-1_1.8.0-2.1_arm64.deb ... Unpacking libssh2-1:arm64 (1.8.0-2.1) ... Selecting previously unselected package libcurl4:arm64. Preparing to unpack .../036-libcurl4_7.64.0-4+deb10u2_arm64.deb ... Unpacking libcurl4:arm64 (7.64.0-4+deb10u2) ... Selecting previously unselected package libjsoncpp1:arm64. Preparing to unpack .../037-libjsoncpp1_1.7.4-3_arm64.deb ... Unpacking libjsoncpp1:arm64 (1.7.4-3) ... Selecting previously unselected package librhash0:arm64. Preparing to unpack .../038-librhash0_1.3.8-1_arm64.deb ... Unpacking librhash0:arm64 (1.3.8-1) ... Selecting previously unselected package libuv1:arm64. Preparing to unpack .../039-libuv1_1.24.1-1_arm64.deb ... Unpacking libuv1:arm64 (1.24.1-1) ... Selecting previously unselected package cmake. Preparing to unpack .../040-cmake_3.13.4-1_arm64.deb ... Unpacking cmake (3.13.4-1) ... Selecting previously unselected package comerr-dev:arm64. Preparing to unpack .../041-comerr-dev_2.1-1.44.5-1+deb10u3_arm64.deb ... Unpacking comerr-dev:arm64 (2.1-1.44.5-1+deb10u3) ... Selecting previously unselected package curl. Preparing to unpack .../042-curl_7.64.0-4+deb10u2_arm64.deb ... Unpacking curl (7.64.0-4+deb10u2) ... Selecting previously unselected package libtool. Preparing to unpack .../043-libtool_2.4.6-9_all.deb ... Unpacking libtool (2.4.6-9) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../044-dh-autoreconf_19_all.deb ... Unpacking dh-autoreconf (19) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../045-libarchive-zip-perl_1.64-1_all.deb ... Unpacking libarchive-zip-perl (1.64-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../046-libfile-stripnondeterminism-perl_1.1.2-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.1.2-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../047-dh-strip-nondeterminism_1.1.2-1_all.deb ... Unpacking dh-strip-nondeterminism (1.1.2-1) ... Selecting previously unselected package libelf1:arm64. Preparing to unpack .../048-libelf1_0.176-1.1_arm64.deb ... Unpacking libelf1:arm64 (0.176-1.1) ... Selecting previously unselected package dwz. Preparing to unpack .../049-dwz_0.12-3_arm64.deb ... Unpacking dwz (0.12-3) ... Selecting previously unselected package libglib2.0-0:arm64. Preparing to unpack .../050-libglib2.0-0_2.58.3-2+deb10u3_arm64.deb ... Unpacking libglib2.0-0:arm64 (2.58.3-2+deb10u3) ... Selecting previously unselected package libcroco3:arm64. Preparing to unpack .../051-libcroco3_0.6.12-3_arm64.deb ... Unpacking libcroco3:arm64 (0.6.12-3) ... Selecting previously unselected package gettext. Preparing to unpack .../052-gettext_0.19.8.1-9_arm64.deb ... Unpacking gettext (0.19.8.1-9) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../053-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 .../054-po-debconf_1.0.21_all.deb ... Unpacking po-debconf (1.0.21) ... Selecting previously unselected package debhelper. Preparing to unpack .../055-debhelper_12.1.1_all.deb ... Unpacking debhelper (12.1.1) ... Selecting previously unselected package mysql-common. Preparing to unpack .../056-mysql-common_5.8+1.0.5_all.deb ... Unpacking mysql-common (5.8+1.0.5) ... Selecting previously unselected package mariadb-common. Preparing to unpack .../057-mariadb-common_1%3a10.3.29-0+deb10u1_all.deb ... Unpacking mariadb-common (1:10.3.29-0+deb10u1) ... Selecting previously unselected package libmariadb3:arm64. Preparing to unpack .../058-libmariadb3_1%3a10.3.29-0+deb10u1_arm64.deb ... Unpacking libmariadb3:arm64 (1:10.3.29-0+deb10u1) ... Selecting previously unselected package libevent-2.1-6:arm64. Preparing to unpack .../059-libevent-2.1-6_2.1.8-stable-4_arm64.deb ... Unpacking libevent-2.1-6:arm64 (2.1.8-stable-4) ... Selecting previously unselected package libunbound8:arm64. Preparing to unpack .../060-libunbound8_1.9.0-2+deb10u2_arm64.deb ... Unpacking libunbound8:arm64 (1.9.0-2+deb10u2) ... Selecting previously unselected package libgnutls-dane0:arm64. Preparing to unpack .../061-libgnutls-dane0_3.6.7-4+deb10u7_arm64.deb ... Unpacking libgnutls-dane0:arm64 (3.6.7-4+deb10u7) ... Selecting previously unselected package libgnutls-openssl27:arm64. Preparing to unpack .../062-libgnutls-openssl27_3.6.7-4+deb10u7_arm64.deb ... Unpacking libgnutls-openssl27:arm64 (3.6.7-4+deb10u7) ... Selecting previously unselected package libgnutlsxx28:arm64. Preparing to unpack .../063-libgnutlsxx28_3.6.7-4+deb10u7_arm64.deb ... Unpacking libgnutlsxx28:arm64 (3.6.7-4+deb10u7) ... Selecting previously unselected package libidn2-dev:arm64. Preparing to unpack .../064-libidn2-dev_2.0.5-1+deb10u1_arm64.deb ... Unpacking libidn2-dev:arm64 (2.0.5-1+deb10u1) ... Selecting previously unselected package libp11-kit-dev:arm64. Preparing to unpack .../065-libp11-kit-dev_0.23.15-2+deb10u1_arm64.deb ... Unpacking libp11-kit-dev:arm64 (0.23.15-2+deb10u1) ... Selecting previously unselected package libtasn1-6-dev:arm64. Preparing to unpack .../066-libtasn1-6-dev_4.13-3_arm64.deb ... Unpacking libtasn1-6-dev:arm64 (4.13-3) ... Selecting previously unselected package libgmpxx4ldbl:arm64. Preparing to unpack .../067-libgmpxx4ldbl_2%3a6.1.2+dfsg-4_arm64.deb ... Unpacking libgmpxx4ldbl:arm64 (2:6.1.2+dfsg-4) ... Selecting previously unselected package libgmp-dev:arm64. Preparing to unpack .../068-libgmp-dev_2%3a6.1.2+dfsg-4_arm64.deb ... Unpacking libgmp-dev:arm64 (2:6.1.2+dfsg-4) ... Selecting previously unselected package nettle-dev:arm64. Preparing to unpack .../069-nettle-dev_3.4.1-1_arm64.deb ... Unpacking nettle-dev:arm64 (3.4.1-1) ... Selecting previously unselected package libgnutls28-dev:arm64. Preparing to unpack .../070-libgnutls28-dev_3.6.7-4+deb10u7_arm64.deb ... Unpacking libgnutls28-dev:arm64 (3.6.7-4+deb10u7) ... Selecting previously unselected package zlib1g-dev:arm64. Preparing to unpack .../071-zlib1g-dev_1%3a1.2.11.dfsg-1_arm64.deb ... Unpacking zlib1g-dev:arm64 (1:1.2.11.dfsg-1) ... Selecting previously unselected package libmariadb-dev. Preparing to unpack .../072-libmariadb-dev_1%3a10.3.29-0+deb10u1_arm64.deb ... Unpacking libmariadb-dev (1:10.3.29-0+deb10u1) ... Selecting previously unselected package libmariadb-dev-compat:arm64. Preparing to unpack .../073-libmariadb-dev-compat_1%3a10.3.29-0+deb10u1_arm64.deb ... Unpacking libmariadb-dev-compat:arm64 (1:10.3.29-0+deb10u1) ... Selecting previously unselected package default-libmysqlclient-dev:arm64. Preparing to unpack .../074-default-libmysqlclient-dev_1.0.5_arm64.deb ... Unpacking default-libmysqlclient-dev:arm64 (1.0.5) ... Selecting previously unselected package libpython3.7:arm64. Preparing to unpack .../075-libpython3.7_3.7.3-2+deb10u3_arm64.deb ... Unpacking libpython3.7:arm64 (3.7.3-2+deb10u3) ... Selecting previously unselected package gdb. Preparing to unpack .../076-gdb_8.2.1-2+b3_arm64.deb ... Unpacking gdb (8.2.1-2+b3) ... Selecting previously unselected package googletest:arm64. Preparing to unpack .../077-googletest_1.8.1-3_arm64.deb ... Unpacking googletest:arm64 (1.8.1-3) ... Selecting previously unselected package icu-devtools. Preparing to unpack .../078-icu-devtools_63.1-6+deb10u1_arm64.deb ... Unpacking icu-devtools (63.1-6+deb10u1) ... Selecting previously unselected package libgssrpc4:arm64. Preparing to unpack .../079-libgssrpc4_1.17-3+deb10u1_arm64.deb ... Unpacking libgssrpc4:arm64 (1.17-3+deb10u1) ... Selecting previously unselected package libkdb5-9:arm64. Preparing to unpack .../080-libkdb5-9_1.17-3+deb10u1_arm64.deb ... Unpacking libkdb5-9:arm64 (1.17-3+deb10u1) ... Selecting previously unselected package libkadm5srv-mit11:arm64. Preparing to unpack .../081-libkadm5srv-mit11_1.17-3+deb10u1_arm64.deb ... Unpacking libkadm5srv-mit11:arm64 (1.17-3+deb10u1) ... Selecting previously unselected package libkadm5clnt-mit11:arm64. Preparing to unpack .../082-libkadm5clnt-mit11_1.17-3+deb10u1_arm64.deb ... Unpacking libkadm5clnt-mit11:arm64 (1.17-3+deb10u1) ... Selecting previously unselected package krb5-multidev:arm64. Preparing to unpack .../083-krb5-multidev_1.17-3+deb10u1_arm64.deb ... Unpacking krb5-multidev:arm64 (1.17-3+deb10u1) ... Selecting previously unselected package uuid-dev:arm64. Preparing to unpack .../084-uuid-dev_2.33.1-0.1_arm64.deb ... Unpacking uuid-dev:arm64 (2.33.1-0.1) ... Selecting previously unselected package libblkid-dev:arm64. Preparing to unpack .../085-libblkid-dev_2.33.1-0.1_arm64.deb ... Unpacking libblkid-dev:arm64 (2.33.1-0.1) ... Selecting previously unselected package libboost1.67-dev:arm64. Preparing to unpack .../086-libboost1.67-dev_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost1.67-dev:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-atomic1.67.0:arm64. Preparing to unpack .../087-libboost-atomic1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-atomic1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-atomic1.67-dev:arm64. Preparing to unpack .../088-libboost-atomic1.67-dev_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-atomic1.67-dev:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-chrono1.67.0:arm64. Preparing to unpack .../089-libboost-chrono1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-chrono1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-chrono1.67-dev:arm64. Preparing to unpack .../090-libboost-chrono1.67-dev_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-chrono1.67-dev:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-date-time1.67.0:arm64. Preparing to unpack .../091-libboost-date-time1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-date-time1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-serialization1.67.0:arm64. Preparing to unpack .../092-libboost-serialization1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-serialization1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-serialization1.67-dev:arm64. Preparing to unpack .../093-libboost-serialization1.67-dev_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-serialization1.67-dev:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-date-time1.67-dev:arm64. Preparing to unpack .../094-libboost-date-time1.67-dev_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-date-time1.67-dev:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-dev:arm64. Preparing to unpack .../095-libboost-dev_1.67.0.1_arm64.deb ... Unpacking libboost-dev:arm64 (1.67.0.1) ... Selecting previously unselected package libboost-filesystem1.67.0:arm64. Preparing to unpack .../096-libboost-filesystem1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-filesystem1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-system1.67-dev:arm64. Preparing to unpack .../097-libboost-system1.67-dev_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-system1.67-dev:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-filesystem1.67-dev:arm64. Preparing to unpack .../098-libboost-filesystem1.67-dev_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-filesystem1.67-dev:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-filesystem-dev:arm64. Preparing to unpack .../099-libboost-filesystem-dev_1.67.0.1_arm64.deb ... Unpacking libboost-filesystem-dev:arm64 (1.67.0.1) ... Selecting previously unselected package libboost-program-options1.67.0:arm64. Preparing to unpack .../100-libboost-program-options1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-program-options1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-program-options1.67-dev:arm64. Preparing to unpack .../101-libboost-program-options1.67-dev_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-program-options1.67-dev:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-program-options-dev:arm64. Preparing to unpack .../102-libboost-program-options-dev_1.67.0.1_arm64.deb ... Unpacking libboost-program-options-dev:arm64 (1.67.0.1) ... Selecting previously unselected package libboost-regex1.67.0:arm64. Preparing to unpack .../103-libboost-regex1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-regex1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libicu-dev:arm64. Preparing to unpack .../104-libicu-dev_63.1-6+deb10u1_arm64.deb ... Unpacking libicu-dev:arm64 (63.1-6+deb10u1) ... Selecting previously unselected package libboost-regex1.67-dev:arm64. Preparing to unpack .../105-libboost-regex1.67-dev_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-regex1.67-dev:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-regex-dev:arm64. Preparing to unpack .../106-libboost-regex-dev_1.67.0.1_arm64.deb ... Unpacking libboost-regex-dev:arm64 (1.67.0.1) ... Selecting previously unselected package libboost-system-dev:arm64. Preparing to unpack .../107-libboost-system-dev_1.67.0.1_arm64.deb ... Unpacking libboost-system-dev:arm64 (1.67.0.1) ... Selecting previously unselected package libboost-thread1.67.0:arm64. Preparing to unpack .../108-libboost-thread1.67.0_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-thread1.67.0:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-thread1.67-dev:arm64. Preparing to unpack .../109-libboost-thread1.67-dev_1.67.0-13+deb10u1_arm64.deb ... Unpacking libboost-thread1.67-dev:arm64 (1.67.0-13+deb10u1) ... Selecting previously unselected package libboost-thread-dev:arm64. Preparing to unpack .../110-libboost-thread-dev_1.67.0.1_arm64.deb ... Unpacking libboost-thread-dev:arm64 (1.67.0.1) ... Selecting previously unselected package libcapnp-0.7.0:arm64. Preparing to unpack .../111-libcapnp-0.7.0_0.7.0-3_arm64.deb ... Unpacking libcapnp-0.7.0:arm64 (0.7.0-3) ... Selecting previously unselected package libcapnp-dev:arm64. Preparing to unpack .../112-libcapnp-dev_0.7.0-3_arm64.deb ... Unpacking libcapnp-dev:arm64 (0.7.0-3) ... Selecting previously unselected package libcctz2:arm64. Preparing to unpack .../113-libcctz2_2.2+dfsg1-2_arm64.deb ... Unpacking libcctz2:arm64 (2.2+dfsg1-2) ... Selecting previously unselected package libcctz-dev. Preparing to unpack .../114-libcctz-dev_2.2+dfsg1-2_arm64.deb ... Unpacking libcctz-dev (2.2+dfsg1-2) ... Selecting previously unselected package libcpuinfo0:arm64. Preparing to unpack .../115-libcpuinfo0_0.0~git20190201.d5e37ad-1_arm64.deb ... Unpacking libcpuinfo0:arm64 (0.0~git20190201.d5e37ad-1) ... Selecting previously unselected package libcpuinfo-dev:arm64. Preparing to unpack .../116-libcpuinfo-dev_0.0~git20190201.d5e37ad-1_arm64.deb ... Unpacking libcpuinfo-dev:arm64 (0.0~git20190201.d5e37ad-1) ... Selecting previously unselected package libdivide-dev. Preparing to unpack .../117-libdivide-dev_1.0+dfsg1-2_all.deb ... Unpacking libdivide-dev (1.0+dfsg1-2) ... Selecting previously unselected package libdouble-conversion1:arm64. Preparing to unpack .../118-libdouble-conversion1_3.1.0-3_arm64.deb ... Unpacking libdouble-conversion1:arm64 (3.1.0-3) ... Selecting previously unselected package libdouble-conversion-dev:arm64. Preparing to unpack .../119-libdouble-conversion-dev_3.1.0-3_arm64.deb ... Unpacking libdouble-conversion-dev:arm64 (3.1.0-3) ... Selecting previously unselected package libedit2:arm64. Preparing to unpack .../120-libedit2_3.1-20181209-1_arm64.deb ... Unpacking libedit2:arm64 (3.1-20181209-1) ... Selecting previously unselected package libexpat1-dev:arm64. Preparing to unpack .../121-libexpat1-dev_2.2.6-2+deb10u1_arm64.deb ... Unpacking libexpat1-dev:arm64 (2.2.6-2+deb10u1) ... Selecting previously unselected package libfarmhash0. Preparing to unpack .../122-libfarmhash0_0~git20171030.2f0e005-1_arm64.deb ... Unpacking libfarmhash0 (0~git20171030.2f0e005-1) ... Selecting previously unselected package libfarmhash-dev. Preparing to unpack .../123-libfarmhash-dev_0~git20171030.2f0e005-1_arm64.deb ... Unpacking libfarmhash-dev (0~git20171030.2f0e005-1) ... Selecting previously unselected package libffi-dev:arm64. Preparing to unpack .../124-libffi-dev_3.2.1-9_arm64.deb ... Unpacking libffi-dev:arm64 (3.2.1-9) ... Selecting previously unselected package libglib2.0-data. Preparing to unpack .../125-libglib2.0-data_2.58.3-2+deb10u3_all.deb ... Unpacking libglib2.0-data (2.58.3-2+deb10u3) ... Selecting previously unselected package libglib2.0-bin. Preparing to unpack .../126-libglib2.0-bin_2.58.3-2+deb10u3_arm64.deb ... Unpacking libglib2.0-bin (2.58.3-2+deb10u3) ... Selecting previously unselected package python3-lib2to3. Preparing to unpack .../127-python3-lib2to3_3.7.3-1_all.deb ... Unpacking python3-lib2to3 (3.7.3-1) ... Selecting previously unselected package python3-distutils. Preparing to unpack .../128-python3-distutils_3.7.3-1_all.deb ... Unpacking python3-distutils (3.7.3-1) ... Selecting previously unselected package libglib2.0-dev-bin. Preparing to unpack .../129-libglib2.0-dev-bin_2.58.3-2+deb10u3_arm64.deb ... Unpacking libglib2.0-dev-bin (2.58.3-2+deb10u3) ... Selecting previously unselected package libmount-dev:arm64. Preparing to unpack .../130-libmount-dev_2.33.1-0.1_arm64.deb ... Unpacking libmount-dev:arm64 (2.33.1-0.1) ... Selecting previously unselected package libpcre16-3:arm64. Preparing to unpack .../131-libpcre16-3_2%3a8.39-12_arm64.deb ... Unpacking libpcre16-3:arm64 (2:8.39-12) ... Selecting previously unselected package libpcre32-3:arm64. Preparing to unpack .../132-libpcre32-3_2%3a8.39-12_arm64.deb ... Unpacking libpcre32-3:arm64 (2:8.39-12) ... Selecting previously unselected package libpcrecpp0v5:arm64. Preparing to unpack .../133-libpcrecpp0v5_2%3a8.39-12_arm64.deb ... Unpacking libpcrecpp0v5:arm64 (2:8.39-12) ... Selecting previously unselected package libpcre3-dev:arm64. Preparing to unpack .../134-libpcre3-dev_2%3a8.39-12_arm64.deb ... Unpacking libpcre3-dev:arm64 (2:8.39-12) ... Selecting previously unselected package libsepol1-dev:arm64. Preparing to unpack .../135-libsepol1-dev_2.8-1_arm64.deb ... Unpacking libsepol1-dev:arm64 (2.8-1) ... Selecting previously unselected package libselinux1-dev:arm64. Preparing to unpack .../136-libselinux1-dev_2.8-1+b1_arm64.deb ... Unpacking libselinux1-dev:arm64 (2.8-1+b1) ... Selecting previously unselected package pkg-config. Preparing to unpack .../137-pkg-config_0.29-6_arm64.deb ... Unpacking pkg-config (0.29-6) ... Selecting previously unselected package libglib2.0-dev:arm64. Preparing to unpack .../138-libglib2.0-dev_2.58.3-2+deb10u3_arm64.deb ... Unpacking libglib2.0-dev:arm64 (2.58.3-2+deb10u3) ... Selecting previously unselected package libtcmalloc-minimal4:arm64. Preparing to unpack .../139-libtcmalloc-minimal4_2.7-1_arm64.deb ... Unpacking libtcmalloc-minimal4:arm64 (2.7-1) ... Selecting previously unselected package libgoogle-perftools4:arm64. Preparing to unpack .../140-libgoogle-perftools4_2.7-1_arm64.deb ... Unpacking libgoogle-perftools4:arm64 (2.7-1) ... Selecting previously unselected package libgoogle-perftools-dev:arm64. Preparing to unpack .../141-libgoogle-perftools-dev_2.7-1_arm64.deb ... Unpacking libgoogle-perftools-dev:arm64 (2.7-1) ... Selecting previously unselected package libidn11:arm64. Preparing to unpack .../142-libidn11_1.33-2.2_arm64.deb ... Unpacking libidn11:arm64 (1.33-2.2) ... Selecting previously unselected package libntlm0:arm64. Preparing to unpack .../143-libntlm0_1.5-1+deb10u1_arm64.deb ... Unpacking libntlm0:arm64 (1.5-1+deb10u1) ... Selecting previously unselected package libgsasl7. Preparing to unpack .../144-libgsasl7_1.8.0-8+b2_arm64.deb ... Unpacking libgsasl7 (1.8.0-8+b2) ... Selecting previously unselected package libidn11-dev:arm64. Preparing to unpack .../145-libidn11-dev_1.33-2.2_arm64.deb ... Unpacking libidn11-dev:arm64 (1.33-2.2) ... Selecting previously unselected package libntlm0-dev:arm64. Preparing to unpack .../146-libntlm0-dev_1.5-1+deb10u1_arm64.deb ... Unpacking libntlm0-dev:arm64 (1.5-1+deb10u1) ... Selecting previously unselected package libgsasl7-dev. Preparing to unpack .../147-libgsasl7-dev_1.8.0-8+b2_arm64.deb ... Unpacking libgsasl7-dev (1.8.0-8+b2) ... Selecting previously unselected package libjemalloc2:arm64. Preparing to unpack .../148-libjemalloc2_5.1.0-3_arm64.deb ... Unpacking libjemalloc2:arm64 (5.1.0-3) ... Selecting previously unselected package libjemalloc-dev. Preparing to unpack .../149-libjemalloc-dev_5.1.0-3_arm64.deb ... Unpacking libjemalloc-dev (5.1.0-3) ... Selecting previously unselected package libllvm7:arm64. Preparing to unpack .../150-libllvm7_1%3a7.0.1-8+deb10u2_arm64.deb ... Unpacking libllvm7:arm64 (1:7.0.1-8+deb10u2) ... Selecting previously unselected package libltdl7:arm64. Preparing to unpack .../151-libltdl7_2.4.6-9_arm64.deb ... Unpacking libltdl7:arm64 (2.4.6-9) ... Selecting previously unselected package libltdl-dev:arm64. Preparing to unpack .../152-libltdl-dev_2.4.6-9_arm64.deb ... Unpacking libltdl-dev:arm64 (2.4.6-9) ... Selecting previously unselected package liblz4-dev:arm64. Preparing to unpack .../153-liblz4-dev_1.8.3-1+deb10u1_arm64.deb ... Unpacking liblz4-dev:arm64 (1.8.3-1+deb10u1) ... Selecting previously unselected package libmetrohash1:arm64. Preparing to unpack .../154-libmetrohash1_1.1.3-4_arm64.deb ... Unpacking libmetrohash1:arm64 (1.1.3-4) ... Selecting previously unselected package libmetrohash-dev:arm64. Preparing to unpack .../155-libmetrohash-dev_1.1.3-4_arm64.deb ... Unpacking libmetrohash-dev:arm64 (1.1.3-4) ... Selecting previously unselected package libncurses-dev:arm64. Preparing to unpack .../156-libncurses-dev_6.1+20181013-2+deb10u2_arm64.deb ... Unpacking libncurses-dev:arm64 (6.1+20181013-2+deb10u2) ... Selecting previously unselected package libodbc1:arm64. Preparing to unpack .../157-libodbc1_2.3.6-0.1_arm64.deb ... Unpacking libodbc1:arm64 (2.3.6-0.1) ... Selecting previously unselected package libpcg-cpp-dev. Preparing to unpack .../158-libpcg-cpp-dev_0.98.1-2_all.deb ... Unpacking libpcg-cpp-dev (0.98.1-2) ... Selecting previously unselected package libpocofoundation60. Preparing to unpack .../159-libpocofoundation60_1.9.0-5+b1_arm64.deb ... Unpacking libpocofoundation60 (1.9.0-5+b1) ... Selecting previously unselected package libpococrypto60. Preparing to unpack .../160-libpococrypto60_1.9.0-5+b1_arm64.deb ... Unpacking libpococrypto60 (1.9.0-5+b1) ... Selecting previously unselected package libpocodata60. Preparing to unpack .../161-libpocodata60_1.9.0-5+b1_arm64.deb ... Unpacking libpocodata60 (1.9.0-5+b1) ... Selecting previously unselected package libpocoencodings60. Preparing to unpack .../162-libpocoencodings60_1.9.0-5+b1_arm64.deb ... Unpacking libpocoencodings60 (1.9.0-5+b1) ... Selecting previously unselected package libpocojson60. Preparing to unpack .../163-libpocojson60_1.9.0-5+b1_arm64.deb ... Unpacking libpocojson60 (1.9.0-5+b1) ... Selecting previously unselected package libpocodatamysql60. Preparing to unpack .../164-libpocodatamysql60_1.9.0-5+b1_arm64.deb ... Unpacking libpocodatamysql60 (1.9.0-5+b1) ... Selecting previously unselected package libpoconet60. Preparing to unpack .../165-libpoconet60_1.9.0-5+b1_arm64.deb ... Unpacking libpoconet60 (1.9.0-5+b1) ... Selecting previously unselected package libpocomongodb60. Preparing to unpack .../166-libpocomongodb60_1.9.0-5+b1_arm64.deb ... Unpacking libpocomongodb60 (1.9.0-5+b1) ... Selecting previously unselected package libpocoxml60. Preparing to unpack .../167-libpocoxml60_1.9.0-5+b1_arm64.deb ... Unpacking libpocoxml60 (1.9.0-5+b1) ... Selecting previously unselected package libpocoutil60. Preparing to unpack .../168-libpocoutil60_1.9.0-5+b1_arm64.deb ... Unpacking libpocoutil60 (1.9.0-5+b1) ... Selecting previously unselected package libpoconetssl60. Preparing to unpack .../169-libpoconetssl60_1.9.0-5+b1_arm64.deb ... Unpacking libpoconetssl60 (1.9.0-5+b1) ... Selecting previously unselected package libpocodataodbc60. Preparing to unpack .../170-libpocodataodbc60_1.9.0-5+b1_arm64.deb ... Unpacking libpocodataodbc60 (1.9.0-5+b1) ... Selecting previously unselected package libpocodatasqlite60. Preparing to unpack .../171-libpocodatasqlite60_1.9.0-5+b1_arm64.deb ... Unpacking libpocodatasqlite60 (1.9.0-5+b1) ... Selecting previously unselected package libpocoredis60. Preparing to unpack .../172-libpocoredis60_1.9.0-5+b1_arm64.deb ... Unpacking libpocoredis60 (1.9.0-5+b1) ... Selecting previously unselected package libpocozip60. Preparing to unpack .../173-libpocozip60_1.9.0-5+b1_arm64.deb ... Unpacking libpocozip60 (1.9.0-5+b1) ... Selecting previously unselected package libsqlite3-dev:arm64. Preparing to unpack .../174-libsqlite3-dev_3.27.2-3+deb10u1_arm64.deb ... Unpacking libsqlite3-dev:arm64 (3.27.2-3+deb10u1) ... Selecting previously unselected package libssl-dev:arm64. Preparing to unpack .../175-libssl-dev_1.1.1d-0+deb10u6_arm64.deb ... Unpacking libssl-dev:arm64 (1.1.1d-0+deb10u6) ... Selecting previously unselected package libpoco-dev. Preparing to unpack .../176-libpoco-dev_1.9.0-5+b1_arm64.deb ... Unpacking libpoco-dev (1.9.0-5+b1) ... Selecting previously unselected package librdkafka1:arm64. Preparing to unpack .../177-librdkafka1_0.11.6-1.1_arm64.deb ... Unpacking librdkafka1:arm64 (0.11.6-1.1) ... Selecting previously unselected package librdkafka++1:arm64. Preparing to unpack .../178-librdkafka++1_0.11.6-1.1_arm64.deb ... Unpacking librdkafka++1:arm64 (0.11.6-1.1) ... Selecting previously unselected package librdkafka-dev:arm64. Preparing to unpack .../179-librdkafka-dev_0.11.6-1.1_arm64.deb ... Unpacking librdkafka-dev:arm64 (0.11.6-1.1) ... Selecting previously unselected package libre2-5:arm64. Preparing to unpack .../180-libre2-5_20190101+dfsg-2_arm64.deb ... Unpacking libre2-5:arm64 (20190101+dfsg-2) ... Selecting previously unselected package libre2-dev:arm64. Preparing to unpack .../181-libre2-dev_20190101+dfsg-2_arm64.deb ... Unpacking libre2-dev:arm64 (20190101+dfsg-2) ... Selecting previously unselected package libreadline-dev:arm64. Preparing to unpack .../182-libreadline-dev_7.0-5_arm64.deb ... Unpacking libreadline-dev:arm64 (7.0-5) ... Selecting previously unselected package libsparsehash-dev. Preparing to unpack .../183-libsparsehash-dev_2.0.2-1_all.deb ... Unpacking libsparsehash-dev (2.0.2-1) ... Selecting previously unselected package libxslt1.1:arm64. Preparing to unpack .../184-libxslt1.1_1.1.32-2.2~deb10u1_arm64.deb ... Unpacking libxslt1.1:arm64 (1.1.32-2.2~deb10u1) ... Selecting previously unselected package libzstd-dev:arm64. Preparing to unpack .../185-libzstd-dev_1.3.8+dfsg-3+deb10u2_arm64.deb ... Unpacking libzstd-dev:arm64 (1.3.8+dfsg-3+deb10u2) ... Selecting previously unselected package llvm-7-runtime. Preparing to unpack .../186-llvm-7-runtime_1%3a7.0.1-8+deb10u2_arm64.deb ... Unpacking llvm-7-runtime (1:7.0.1-8+deb10u2) ... Selecting previously unselected package llvm-runtime. Preparing to unpack .../187-llvm-runtime_1%3a7.0-47_arm64.deb ... Unpacking llvm-runtime (1:7.0-47) ... Selecting previously unselected package llvm-7. Preparing to unpack .../188-llvm-7_1%3a7.0.1-8+deb10u2_arm64.deb ... Unpacking llvm-7 (1:7.0.1-8+deb10u2) ... Selecting previously unselected package llvm. Preparing to unpack .../189-llvm_1%3a7.0-47_arm64.deb ... Unpacking llvm (1:7.0-47) ... Selecting previously unselected package llvm-7-dev. Preparing to unpack .../190-llvm-7-dev_1%3a7.0.1-8+deb10u2_arm64.deb ... Unpacking llvm-7-dev (1:7.0.1-8+deb10u2) ... Selecting previously unselected package llvm-dev. Preparing to unpack .../191-llvm-dev_1%3a7.0-47_arm64.deb ... Unpacking llvm-dev (1:7.0-47) ... Selecting previously unselected package odbcinst1debian2:arm64. Preparing to unpack .../192-odbcinst1debian2_2.3.6-0.1_arm64.deb ... Unpacking odbcinst1debian2:arm64 (2.3.6-0.1) ... Selecting previously unselected package odbcinst. Preparing to unpack .../193-odbcinst_2.3.6-0.1_arm64.deb ... Unpacking odbcinst (2.3.6-0.1) ... Selecting previously unselected package python-certifi. Preparing to unpack .../194-python-certifi_2018.8.24-1_all.deb ... Unpacking python-certifi (2018.8.24-1) ... Selecting previously unselected package python-pkg-resources. Preparing to unpack .../195-python-pkg-resources_40.8.0-1_all.deb ... Unpacking python-pkg-resources (40.8.0-1) ... Selecting previously unselected package python-chardet. Preparing to unpack .../196-python-chardet_3.0.4-3_all.deb ... Unpacking python-chardet (3.0.4-3) ... Selecting previously unselected package python-idna. Preparing to unpack .../197-python-idna_2.6-1_all.deb ... Unpacking python-idna (2.6-1) ... Selecting previously unselected package python-lxml:arm64. Preparing to unpack .../198-python-lxml_4.3.2-1+deb10u3_arm64.deb ... Unpacking python-lxml:arm64 (4.3.2-1+deb10u3) ... Selecting previously unselected package python-six. Preparing to unpack .../199-python-six_1.12.0-1_all.deb ... Unpacking python-six (1.12.0-1) ... Selecting previously unselected package python-urllib3. Preparing to unpack .../200-python-urllib3_1.24.1-1_all.deb ... Unpacking python-urllib3 (1.24.1-1) ... Selecting previously unselected package python-requests. Preparing to unpack .../201-python-requests_2.21.0-1_all.deb ... Unpacking python-requests (2.21.0-1) ... Selecting previously unselected package python-termcolor. Preparing to unpack .../202-python-termcolor_1.1.0-2_all.deb ... Unpacking python-termcolor (1.1.0-2) ... Selecting previously unselected package unixodbc-dev:arm64. Preparing to unpack .../203-unixodbc-dev_2.3.6-0.1_arm64.deb ... Unpacking unixodbc-dev:arm64 (2.3.6-0.1) ... Setting up libpocofoundation60 (1.9.0-5+b1) ... Setting up libboost1.67-dev:arm64 (1.67.0-13+deb10u1) ... Setting up libboost-program-options1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up libpcrecpp0v5:arm64 (2:8.39-12) ... Setting up libpipeline1:arm64 (1.5.1-2) ... Setting up libdivide-dev (1.0+dfsg1-2) ... Setting up libpocodata60 (1.9.0-5+b1) ... Setting up lsb-base (10.2019051400) ... Setting up mysql-common (5.8+1.0.5) ... update-alternatives: using /etc/mysql/my.cnf.fallback to provide /etc/mysql/my.cnf (my.cnf) in auto mode Setting up libkeyutils1:arm64 (1.6-6) ... Setting up libpsl5:arm64 (0.20.2-2) ... Setting up libboost-chrono1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up libgnutls-openssl27:arm64 (3.6.7-4+deb10u7) ... Setting up libpoconet60 (1.9.0-5+b1) ... Setting up libzstd-dev:arm64 (1.3.8+dfsg-3+deb10u2) ... Setting up mime-support (3.62) ... Setting up libpcre16-3:arm64 (2:8.39-12) ... Setting up libpocojson60 (1.9.0-5+b1) ... Setting up libfarmhash0 (0~git20171030.2f0e005-1) ... Setting up libmagic-mgc (1:5.35-4+deb10u2) ... Setting up libarchive-zip-perl (1.64-1) ... Setting up libboost-program-options1.67-dev:arm64 (1.67.0-13+deb10u1) ... Setting up libglib2.0-0:arm64 (2.58.3-2+deb10u3) ... No schema files found: doing nothing. Setting up libprocps7:arm64 (2:3.3.15-2) ... Setting up libtcmalloc-minimal4:arm64 (2.7-1) ... Setting up libnghttp2-14:arm64 (1.36.0-2+deb10u1) ... Setting up libmagic1:arm64 (1:5.35-4+deb10u2) ... Setting up libsepol1-dev:arm64 (2.8-1) ... Setting up gettext-base (0.19.8.1-9) ... Setting up libboost-date-time1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up file (1:5.35-4+deb10u2) ... Setting up libjemalloc2:arm64 (5.1.0-3) ... Setting up libffi-dev:arm64 (3.2.1-9) ... Setting up libldap-common (2.4.47+dfsg-3+deb10u6) ... Setting up libsparsehash-dev (2.0.2-1) ... Setting up libcapnp-0.7.0:arm64 (0.7.0-3) ... Setting up googletest:arm64 (1.8.1-3) ... Setting up libcctz2:arm64 (2.2+dfsg1-2) ... Setting up libicu63:arm64 (63.1-6+deb10u1) ... Setting up libkrb5support0:arm64 (1.17-3+deb10u1) ... Setting up libsasl2-modules-db:arm64 (2.1.27+dfsg-1+deb10u1) ... Setting up mariadb-common (1:10.3.29-0+deb10u1) ... update-alternatives: using /etc/mysql/mariadb.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode Setting up libjemalloc-dev (5.1.0-3) ... Setting up libfarmhash-dev (0~git20171030.2f0e005-1) ... Setting up libboost-chrono1.67-dev:arm64 (1.67.0-13+deb10u1) ... Setting up autotools-dev (20180224.1) ... Setting up libglib2.0-data (2.58.3-2+deb10u3) ... Setting up libgmpxx4ldbl:arm64 (2:6.1.2+dfsg-4) ... Setting up libuv1:arm64 (1.24.1-1) ... Setting up libexpat1-dev:arm64 (2.2.6-2+deb10u1) ... Setting up libsqlite3-dev:arm64 (3.27.2-3+deb10u1) ... Setting up libboost-program-options-dev:arm64 (1.67.0.1) ... Setting up libntlm0:arm64 (1.5-1+deb10u1) ... Setting up librtmp1:arm64 (2.4+20151223.gitfa8646d.1-2) ... Setting up libidn11:arm64 (1.33-2.2) ... Setting up libntlm0-dev:arm64 (1.5-1+deb10u1) ... Setting up uuid-dev:arm64 (2.33.1-0.1) ... Setting up libpococrypto60 (1.9.0-5+b1) ... Setting up libncurses6:arm64 (6.1+20181013-2+deb10u2) ... Setting up libsigsegv2:arm64 (2.12-2) ... Setting up comerr-dev:arm64 (2.1-1.44.5-1+deb10u3) ... Setting up libssl-dev:arm64 (1.1.1d-0+deb10u6) ... Setting up libpcre32-3:arm64 (2:8.39-12) ... Setting up libpocoxml60 (1.9.0-5+b1) ... Setting up libpocomongodb60 (1.9.0-5+b1) ... Setting up autopoint (0.19.8.1-9) ... Setting up binfmt-support (2.2.0-2) ... invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up icu-devtools (63.1-6+deb10u1) ... Setting up liblz4-dev:arm64 (1.8.3-1+deb10u1) ... Setting up pkg-config (0.29-6) ... Setting up libmariadb3:arm64 (1:10.3.29-0+deb10u1) ... Setting up libgnutlsxx28:arm64 (3.6.7-4+deb10u7) ... Setting up libpocoredis60 (1.9.0-5+b1) ... Setting up libk5crypto3:arm64 (1.17-3+deb10u1) ... Setting up libltdl7:arm64 (2.4.6-9) ... Setting up libidn2-dev:arm64 (2.0.5-1+deb10u1) ... Setting up libsasl2-2:arm64 (2.1.27+dfsg-1+deb10u1) ... Setting up librdkafka1:arm64 (0.11.6-1.1) ... Setting up libevent-2.1-6:arm64 (2.1.8-stable-4) ... Setting up libcpuinfo0:arm64 (0.0~git20190201.d5e37ad-1) ... Setting up zlib1g-dev:arm64 (1:1.2.11.dfsg-1) ... Setting up sensible-utils (0.0.12) ... Setting up libmetrohash1:arm64 (1.1.3-4) ... Setting up librhash0:arm64 (1.3.8-1) ... Setting up libuchardet0:arm64 (0.0.6-3) ... Setting up procps (2:3.3.15-2) ... update-alternatives: using /usr/bin/w.procps to provide /usr/bin/w (w) in auto mode Setting up libpocoencodings60 (1.9.0-5+b1) ... Setting up libre2-5:arm64 (20190101+dfsg-2) ... Setting up libboost-filesystem1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up libpcg-cpp-dev (0.98.1-2) ... Setting up libssh2-1:arm64 (1.8.0-2.1) ... Setting up libboost-atomic1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up cmake-data (3.13.4-1) ... Setting up libboost-system1.67-dev:arm64 (1.67.0-13+deb10u1) ... Setting up libkrb5-3:arm64 (1.17-3+deb10u1) ... Setting up libboost-dev:arm64 (1.67.0.1) ... Setting up libmpdec2:arm64 (2.4.2-2) ... Setting up libpocodatasqlite60 (1.9.0-5+b1) ... Setting up libre2-dev:arm64 (20190101+dfsg-2) ... Setting up libtasn1-6-dev:arm64 (4.13-3) ... Setting up libboost-serialization1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up openssl (1.1.1d-0+deb10u6) ... Setting up libbsd0:arm64 (0.9.1-2+deb10u1) ... Setting up libelf1:arm64 (0.176-1.1) ... Setting up readline-common (7.0-5) ... Setting up libicu-dev:arm64 (63.1-6+deb10u1) ... Setting up libxml2:arm64 (2.9.4+dfsg1-7+deb10u2) ... Setting up libdouble-conversion1:arm64 (3.1.0-3) ... Setting up libp11-kit-dev:arm64 (0.23.15-2+deb10u1) ... Setting up libcapnp-dev:arm64 (0.7.0-3) ... Setting up libjsoncpp1:arm64 (1.7.4-3) ... Setting up libgoogle-perftools4:arm64 (2.7-1) ... Setting up libreadline7:arm64 (7.0-5) ... Setting up libboost-atomic1.67-dev:arm64 (1.67.0-13+deb10u1) ... Setting up libfile-stripnondeterminism-perl (1.1.2-1) ... Setting up libboost-serialization1.67-dev:arm64 (1.67.0-13+deb10u1) ... Setting up libpocodatamysql60 (1.9.0-5+b1) ... Setting up libblkid-dev:arm64 (2.33.1-0.1) ... Setting up libcctz-dev (2.2+dfsg1-2) ... Setting up libpython3.7-stdlib:arm64 (3.7.3-2+deb10u3) ... Setting up libidn11-dev:arm64 (1.33-2.2) ... Setting up libncurses-dev:arm64 (6.1+20181013-2+deb10u2) ... Setting up libpocoutil60 (1.9.0-5+b1) ... Setting up libboost-regex1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up libgmp-dev:arm64 (2:6.1.2+dfsg-4) ... Setting up libboost-filesystem1.67-dev:arm64 (1.67.0-13+deb10u1) ... Setting up nettle-dev:arm64 (3.4.1-1) ... Setting up libboost-thread1.67.0:arm64 (1.67.0-13+deb10u1) ... Setting up libpython3.7:arm64 (3.7.3-2+deb10u3) ... Setting up libtool (2.4.6-9) ... Setting up libpoconetssl60 (1.9.0-5+b1) ... Setting up libarchive13:arm64 (3.3.3-4+deb10u1) ... Setting up libpcre3-dev:arm64 (2:8.39-12) ... Setting up libboost-regex1.67-dev:arm64 (1.67.0-13+deb10u1) ... Setting up libgoogle-perftools-dev:arm64 (2.7-1) ... Setting up libedit2:arm64 (3.1-20181209-1) ... Setting up libboost-system-dev:arm64 (1.67.0.1) ... Setting up libcpuinfo-dev:arm64 (0.0~git20190201.d5e37ad-1) ... Setting up librdkafka++1:arm64 (0.11.6-1.1) ... Setting up libglib2.0-bin (2.58.3-2+deb10u3) ... Setting up libldap-2.4-2:arm64 (2.4.47+dfsg-3+deb10u6) ... Setting up m4 (1.4.18-2) ... Setting up libmetrohash-dev:arm64 (1.1.3-4) ... Setting up libreadline-dev:arm64 (7.0-5) ... Setting up libpython2.7-stdlib:arm64 (2.7.16-2+deb10u1) ... Setting up ca-certificates (20200601~deb10u2) ... Updating certificates in /etc/ssl/certs... 137 added, 0 removed; done. Setting up libboost-date-time1.67-dev:arm64 (1.67.0-13+deb10u1) ... Setting up libunbound8:arm64 (1.9.0-2+deb10u2) ... Setting up gdb (8.2.1-2+b3) ... Setting up bsdmainutils (11.1.2+b1) ... update-alternatives: using /usr/bin/bsd-write to provide /usr/bin/write (write) in auto mode update-alternatives: using /usr/bin/bsd-from to provide /usr/bin/from (from) in auto mode Setting up libgssapi-krb5-2:arm64 (1.17-3+deb10u1) ... Setting up libcroco3:arm64 (0.6.12-3) ... Setting up libpocozip60 (1.9.0-5+b1) ... Setting up libodbc1:arm64 (2.3.6-0.1) ... Setting up libdouble-conversion-dev:arm64 (3.1.0-3) ... Setting up autoconf (2.69-11) ... Setting up dwz (0.12-3) ... Setting up groff-base (1.22.4-3+deb10u1) ... Setting up libxslt1.1:arm64 (1.1.32-2.2~deb10u1) ... Setting up librdkafka-dev:arm64 (0.11.6-1.1) ... Setting up libcurl4:arm64 (7.64.0-4+deb10u2) ... Setting up libllvm7:arm64 (1:7.0.1-8+deb10u2) ... Setting up curl (7.64.0-4+deb10u2) ... Setting up libboost-regex-dev:arm64 (1.67.0.1) ... Setting up libmount-dev:arm64 (2.33.1-0.1) ... Setting up libboost-filesystem-dev:arm64 (1.67.0.1) ... Setting up libpython3-stdlib:arm64 (3.7.3-1) ... Setting up automake (1:1.16.1-4) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up python3.7 (3.7.3-2+deb10u3) ... Setting up libgnutls-dane0:arm64 (3.6.7-4+deb10u7) ... Setting up gettext (0.19.8.1-9) ... Setting up llvm-7-runtime (1:7.0.1-8+deb10u2) ... Setting up python2.7 (2.7.16-2+deb10u1) ... Setting up llvm-7 (1:7.0.1-8+deb10u2) ... Setting up libboost-thread1.67-dev:arm64 (1.67.0-13+deb10u1) ... Setting up libpython2-stdlib:arm64 (2.7.16-1) ... Setting up libpocodataodbc60 (1.9.0-5+b1) ... Setting up libselinux1-dev:arm64 (2.8-1+b1) ... Setting up libgsasl7 (1.8.0-8+b2) ... Setting up python3 (3.7.3-1) ... Setting up man-db (2.8.5-2) ... Not building database; man-db/auto-update is not 'true'. Setting up python2 (2.7.16-1) ... Setting up intltool-debian (0.35.0+20060710.5) ... Setting up libltdl-dev:arm64 (2.4.6-9) ... Setting up libgssrpc4:arm64 (1.17-3+deb10u1) ... Setting up libpython-stdlib:arm64 (2.7.16-1) ... Setting up llvm-runtime (1:7.0-47) ... Setting up llvm (1:7.0-47) ... Setting up libkdb5-9:arm64 (1.17-3+deb10u1) ... Setting up cmake (3.13.4-1) ... Setting up libkadm5srv-mit11:arm64 (1.17-3+deb10u1) ... Setting up python3-lib2to3 (3.7.3-1) ... Setting up python (2.7.16-1) ... Setting up python-lxml:arm64 (4.3.2-1+deb10u3) ... Setting up libboost-thread-dev:arm64 (1.67.0.1) ... Setting up python3-distutils (3.7.3-1) ... Setting up libgnutls28-dev:arm64 (3.6.7-4+deb10u7) ... Setting up libglib2.0-dev-bin (2.58.3-2+deb10u3) ... Setting up libkadm5clnt-mit11:arm64 (1.17-3+deb10u1) ... Setting up llvm-7-dev (1:7.0.1-8+deb10u2) ... Setting up python-pkg-resources (40.8.0-1) ... Setting up po-debconf (1.0.21) ... Setting up python-termcolor (1.1.0-2) ... Setting up python-certifi (2018.8.24-1) ... Setting up python-six (1.12.0-1) ... Setting up libglib2.0-dev:arm64 (2.58.3-2+deb10u3) ... Setting up python-idna (2.6-1) ... Setting up libmariadb-dev (1:10.3.29-0+deb10u1) ... Setting up python-chardet (3.0.4-3) ... Setting up krb5-multidev:arm64 (1.17-3+deb10u1) ... Setting up llvm-dev (1:7.0-47) ... Setting up libmariadb-dev-compat:arm64 (1:10.3.29-0+deb10u1) ... Setting up python-urllib3 (1.24.1-1) ... Setting up libgsasl7-dev (1.8.0-8+b2) ... Setting up python-requests (2.21.0-1) ... Setting up default-libmysqlclient-dev:arm64 (1.0.5) ... Setting up libpoco-dev (1.9.0-5+b1) ... Setting up odbcinst (2.3.6-0.1) ... Setting up dh-autoreconf (19) ... Setting up dh-strip-nondeterminism (1.1.2-1) ... Setting up odbcinst1debian2:arm64 (2.3.6-0.1) ... Setting up unixodbc-dev:arm64 (2.3.6-0.1) ... Setting up debhelper (12.1.1) ... Processing triggers for libc-bin (2.28-10) ... Processing triggers for ca-certificates (20200601~deb10u2) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps Reading package lists... Building dependency tree... Reading state information... fakeroot is already the newest version (1.23-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package I: Running cd /build/clickhouse-18.16.1+ds/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../clickhouse_18.16.1+ds-4_source.changes dpkg-buildpackage: info: source package clickhouse dpkg-buildpackage: info: source version 18.16.1+ds-4 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Alexander GQ Gerasiov dpkg-source --before-build . dpkg-buildpackage: info: host architecture arm64 fakeroot debian/rules clean dh clean --buildsystem=cmake dh_auto_clean -O--buildsystem=cmake dh_autoreconf_clean -O--buildsystem=cmake dh_clean -O--buildsystem=cmake rm -f debian/debhelper-build-stamp rm -rf debian/.debhelper/ rm -f -- debian/clickhouse-common.substvars debian/clickhouse-server.substvars debian/clickhouse-client.substvars debian/clickhouse-tools.substvars debian/files rm -fr -- debian/clickhouse-common/ debian/tmp/ debian/clickhouse-server/ debian/clickhouse-client/ debian/clickhouse-tools/ find . \( \( \ \( -path .\*/.git -o -path .\*/.svn -o -path .\*/.bzr -o -path .\*/.hg -o -path .\*/CVS -o -path .\*/.pc -o -path .\*/_darcs \) -prune -o -type f -a \ \( -name '#*#' -o -name '.*~' -o -name '*~' -o -name DEADJOE \ -o -name '*.orig' -o -name '*.rej' -o -name '*.bak' \ -o -name '.*.orig' -o -name .*.rej -o -name '.SUMS' \ -o -name TAGS -o \( -path '*/.deps/*' -a -name '*.P' \) \ \) -exec rm -f {} + \) -o \ \( -type d -a -name autom4te.cache -prune -exec rm -rf {} + \) \) debian/rules build dh build --buildsystem=cmake dh_update_autotools_config -O--buildsystem=cmake dh_autoreconf -O--buildsystem=cmake debian/rules override_dh_auto_configure make[1]: Entering directory '/build/clickhouse-18.16.1+ds' dh_auto_configure -- -DUNBUNDLED=1 -DUSE_STATIC_LIBRARIES=0 USE_UNWIND=0 -DCLICKHOUSE_SPLIT_BINARY=1 -DVERSION_DESCRIBE=18.16.1+ds-4 install -d obj-aarch64-linux-gnu cd obj-aarch64-linux-gnu && cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON "-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/aarch64-linux-gnu -DUNBUNDLED=1 -DUSE_STATIC_LIBRARIES=0 USE_UNWIND=0 -DCLICKHOUSE_SPLIT_BINARY=1 -DVERSION_DESCRIBE=18.16.1\+ds-4 .. -- The C compiler identification is GNU 8.3.0 -- The CXX compiler identification is GNU 8.3.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- IPO/LTO not enabled. -- CMAKE_BUILD_TYPE is not set, set to default = RELWITHDEBINFO -- CMAKE_BUILD_TYPE: RELWITHDEBINFO -- Using linker: gold (selected from: LLD_PATH=LLD_PATH-NOTFOUND; GOLD_PATH=/usr/bin/gold; COMPILER_POSTFIX=) -- Looking for pthread.h -- Looking for pthread.h - found -- Looking for pthread_create -- Looking for pthread_create - not found -- Check if compiler accepts -pthread -- Check if compiler accepts -pthread - yes -- Found Threads: TRUE -- Performing Test HAVE_NO_PIE -- Performing Test HAVE_NO_PIE - Success -- Tests are enabled -- Building for: Linux-4.15.0-154-generic aarch64 aarch64-linux-gnu ; USE_STATIC_LIBRARIES=0 MAKE_STATIC_LIBRARIES=OFF UNBUNDLED=1 CCACHE=CCACHE_FOUND-NOTFOUND -- Found OpenSSL: /usr/lib/aarch64-linux-gnu/libcrypto.so (found version "1.1.1d") -- Using ssl=TRUE: /usr/include : /usr/lib/aarch64-linux-gnu/libssl.so;/usr/lib/aarch64-linux-gnu/libcrypto.so -- Found the following ICU libraries: -- i18n (required) -- uc (required) -- data (required) -- Found ICU: /usr/include (found version "63.1") -- Using icu=1: /usr/include : /usr/lib/aarch64-linux-gnu/libicui18n.so;/usr/lib/aarch64-linux-gnu/libicuuc.so;/usr/lib/aarch64-linux-gnu/libicudata.so -- Boost version: 1.67.0 -- Found the following Boost libraries: -- program_options -- system -- filesystem -- thread -- chrono -- date_time -- atomic -- Using Boost: /usr/include : /usr/lib/aarch64-linux-gnu/libboost_program_options.so,/usr/lib/aarch64-linux-gnu/libboost_system.so,/usr/lib/aarch64-linux-gnu/libboost_filesystem.so -- Found ZLIB: /usr/lib/aarch64-linux-gnu/libz.so (found version "1.2.11") -- Using zlib: /usr/include : /usr/lib/aarch64-linux-gnu/libz.so -- Using zstd: /usr/include : /usr/lib/aarch64-linux-gnu/libzstd.so -- Using termcap: /usr/lib/aarch64-linux-gnu/libtermcap.so -- Found ODBC: /usr/include -- Using odbc=TRUE: /usr/include : /usr/lib/aarch64-linux-gnu/libodbc.so -- Looking for Poco install directory structure. -- Assuming Poco install directory structure at /usr. -- Found Poco Net: /usr/lib/libPocoNet.so -- Found Poco XML: /usr/lib/libPocoXML.so CMake Warning at cmake/Modules/FindPoco.cmake:151 (message): Poco_SQL_INCLUDE_DIR NOT FOUND Call Stack (most recent call first): cmake/find_poco.cmake:25 (find_package) CMakeLists.txt:282 (include) CMake Warning at cmake/Modules/FindPoco.cmake:198 (message): Could not find Poco component SQL! Call Stack (most recent call first): cmake/find_poco.cmake:25 (find_package) CMakeLists.txt:282 (include) -- Found Poco Data: /usr/lib/libPocoData.so -- Found Poco Crypto: /usr/lib/libPocoCrypto.so -- Found Poco NetSSL: /usr/lib/libPocoNetSSL.so -- Found Poco MongoDB: /usr/lib/libPocoMongoDB.so -- Found Poco DataODBC: /usr/lib/libPocoDataODBC.so CMake Warning at cmake/Modules/FindPoco.cmake:151 (message): Poco_SQLODBC_INCLUDE_DIR NOT FOUND Call Stack (most recent call first): cmake/find_poco.cmake:25 (find_package) CMakeLists.txt:282 (include) CMake Warning at cmake/Modules/FindPoco.cmake:198 (message): Could not find Poco component SQLODBC! Call Stack (most recent call first): cmake/find_poco.cmake:25 (find_package) CMakeLists.txt:282 (include) -- Found Poco Util: /usr/lib/libPocoUtil.so -- Found Poco Foundation: /usr/lib/libPocoFoundation.so -- Found Poco: optimized;/usr/lib/libPocoNet.so;optimized;/usr/lib/libPocoXML.so;optimized;/usr/lib/libPocoData.so;optimized;/usr/lib/libPocoCrypto.so;optimized;/usr/lib/libPocoNetSSL.so;optimized;/usr/lib/libPocoMongoDB.so;optimized;/usr/lib/libPocoDataODBC.so;optimized;/usr/lib/libPocoUtil.so;optimized;/usr/lib/libPocoFoundation.so -- Using Poco: /usr/include;/usr/include;/usr/include;/usr/include;/usr/include;/usr/include;/usr/include;/usr/include;/usr/include;/usr/include;/usr/include;/usr/include : /usr/lib/libPocoFoundation.so,/usr/lib/libPocoUtil.so,/usr/lib/libPocoNet.so,/usr/lib/libPocoNetSSL.so;/usr/lib/aarch64-linux-gnu/libssl.so;/usr/lib/aarch64-linux-gnu/libcrypto.so,/usr/lib/libPocoCrypto.so,/usr/lib/libPocoXML.so,/usr/lib/libPocoData.so,/usr/lib/libPocoDataODBC.so;/usr/lib/aarch64-linux-gnu/libodbc.so,Poco_SQL_LIBRARY-NOTFOUND,Poco_SQLODBC_LIBRARY-NOTFOUND,/usr/lib/libPocoMongoDB.so; MongoDB=1, DataODBC=1, NetSSL=1 -- Using lz4: /usr/include : /usr/lib/aarch64-linux-gnu/liblz4.so -- Using sparsehash: /usr/include -- Using rt: -- Using line editing libraries (readline): /usr/include : /usr/lib/aarch64-linux-gnu/libreadline.so;/usr/lib/aarch64-linux-gnu/libtermcap.so -- Performing Test HAVE_READLINE_HISTORY -- Performing Test HAVE_READLINE_HISTORY - Success -- Using re2: /usr/include : /usr/lib/aarch64-linux-gnu/libre2.so; : /usr/lib/aarch64-linux-gnu/libre2.so -- Using librdkafka=: : -- Using capnp=1: /usr/include : /usr/lib/aarch64-linux-gnu/libcapnpc.so;/usr/lib/aarch64-linux-gnu/libcapnp.so;/usr/lib/aarch64-linux-gnu/libkj.so CMake Warning at cmake/find_llvm.cmake:35 (message): liblld (LLD_LIBRARY_TEST-NOTFOUND, LLD_INCLUDE_DIR_TEST-NOTFOUND) not found in /usr/lib/llvm-7/include /usr/lib/llvm-7/lib. Disabling internal compiler. Call Stack (most recent call first): CMakeLists.txt:291 (include) -- Using cpuinfo: /usr/include : /usr/lib/aarch64-linux-gnu/libcpuinfo.so -- Using libgsasl: /usr/include : /usr/lib/libgsasl.so -- Using libxml2: LIBXML2_INCLUDE_DIR-NOTFOUND : LIBXML2_LIBRARY-NOTFOUND -- Using hdfs3=: : -- Using consistent-hashing: CONSISTENT_HASHING_INCLUDE_DIR-NOTFOUND : consistent-hashing -- Could NOT find cityhash (missing: CITYHASH_LIBRARIES CITYHASH_INCLUDE_DIR) -- Using cityhash: /build/clickhouse-18.16.1+ds/contrib/cityhash102/include : cityhash -- Found farmhash: /usr/lib/aarch64-linux-gnu/libfarmhash.so -- Using farmhash: /usr/include : /usr/lib/aarch64-linux-gnu/libfarmhash.so -- Found metrohash: /usr/lib/aarch64-linux-gnu/libmetrohash.so -- Using metrohash: /usr/include/metrohash : /usr/lib/aarch64-linux-gnu/libmetrohash.so -- Could NOT find btrie (missing: BTRIE_LIBRARIES BTRIE_INCLUDE_DIR) -- Using btrie: BTRIE_INCLUDE_DIR-NOTFOUND : btrie -- Found double_conversion: /usr/lib/aarch64-linux-gnu/libdouble-conversion.so -- Using double-conversion: /usr/include : /usr/lib/aarch64-linux-gnu/libdouble-conversion.so -- Using cctz: /usr/include : /usr/lib/aarch64-linux-gnu/libcctz.so -- Using mysqlclient=1: /usr/include : /usr/lib/aarch64-linux-gnu/libmariadb.so; staticlib= -- compiler C = /usr/bin/cc -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -O2 -g -DNDEBUG -O3 -- compiler CXX = /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -- LINKER_FLAGS = -Wl,-z,relro -fuse-ld=gold CMake Warning at /usr/src/googletest/googletest/CMakeLists.txt:47 (project): VERSION keyword not followed by a value or was followed by a value that expanded to nothing. -- Found PythonInterp: /usr/bin/python (found version "2.7.16") CMake Warning at libs/libcommon/CMakeLists.txt:83 (message): Non default allocator is disabled. This is not recommended for production Linux builds. -- Will build ClickHouse 18.16.1 -- Using internal=OFF compiler=0: headers=/usr/share/clickhouse/headers/18.16.1 : /usr/bin/clickhouse-clang -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -std=c++1z -x c++ -march=native -fPIC -fvisibility=hidden -fno-implement-inlines -nostdinc -nostdinc++ -Wno-unused-command-line-argument -Bprefix=/usr/share/clickhouse -isysroot=/usr/share/clickhouse/headers/18.16.1; clickhouse-lld -- Target check already exists -- Configuring done -- Generating done CMake Warning: Manually-specified variables were not used by the project: CMAKE_EXPORT_NO_PACKAGE_REGISTRY -- Build files have been written to: /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu make[1]: Leaving directory '/build/clickhouse-18.16.1+ds' dh_auto_build -O--buildsystem=cmake cd obj-aarch64-linux-gnu && make -j8 make[1]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' /usr/bin/cmake -S/build/clickhouse-18.16.1+ds -B/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu --check-build-system CMakeFiles/Makefile.cmake 0 /usr/bin/cmake -E cmake_progress_start /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/CMakeFiles /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/CMakeFiles/progress.marks make -f CMakeFiles/Makefile2 all make[2]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f contrib/cityhash102/CMakeFiles/cityhash.dir/build.make contrib/cityhash102/CMakeFiles/cityhash.dir/depend make -f contrib/murmurhash/CMakeFiles/murmurhash.dir/build.make contrib/murmurhash/CMakeFiles/murmurhash.dir/depend make -f contrib/libbtrie/CMakeFiles/btrie.dir/build.make contrib/libbtrie/CMakeFiles/btrie.dir/depend make -f contrib/googletest/CMakeFiles/gtest.dir/build.make contrib/googletest/CMakeFiles/gtest.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/contrib/cityhash102 /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/cityhash102 /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/cityhash102/CMakeFiles/cityhash.dir/DependInfo.cmake --color= make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/contrib/murmurhash /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/murmurhash /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/murmurhash/CMakeFiles/murmurhash.dir/DependInfo.cmake --color= make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/contrib/libbtrie /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/libbtrie /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/libbtrie/CMakeFiles/btrie.dir/DependInfo.cmake --color= make -f libs/libpocoext/CMakeFiles/pocoext.dir/build.make libs/libpocoext/CMakeFiles/pocoext.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /usr/src/googletest/googletest /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/googletest /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/googletest/CMakeFiles/gtest.dir/DependInfo.cmake --color= make -f libs/libcommon/CMakeFiles/apple_rt.dir/build.make libs/libcommon/CMakeFiles/apple_rt.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libpocoext /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libpocoext /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libpocoext/CMakeFiles/pocoext.dir/DependInfo.cmake --color= make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libcommon /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/CMakeFiles/apple_rt.dir/DependInfo.cmake --color= make -f dbms/src/Common/StringUtils/CMakeFiles/string_utils.dir/build.make dbms/src/Common/StringUtils/CMakeFiles/string_utils.dir/depend Scanning dependencies of target pocoext make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/src/Common/StringUtils /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/StringUtils /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/StringUtils/CMakeFiles/string_utils.dir/DependInfo.cmake --color= make -f libs/libwidechar_width/CMakeFiles/widechar_width.dir/build.make libs/libwidechar_width/CMakeFiles/widechar_width.dir/depend make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' Scanning dependencies of target cityhash Scanning dependencies of target murmurhash make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libwidechar_width /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libwidechar_width /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libwidechar_width/CMakeFiles/widechar_width.dir/DependInfo.cmake --color= Scanning dependencies of target btrie make -f libs/libpocoext/CMakeFiles/pocoext.dir/build.make libs/libpocoext/CMakeFiles/pocoext.dir/build make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f contrib/murmurhash/CMakeFiles/murmurhash.dir/build.make contrib/murmurhash/CMakeFiles/murmurhash.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' Scanning dependencies of target gtest make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f contrib/cityhash102/CMakeFiles/cityhash.dir/build.make contrib/cityhash102/CMakeFiles/cityhash.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f contrib/libbtrie/CMakeFiles/btrie.dir/build.make contrib/libbtrie/CMakeFiles/btrie.dir/build Scanning dependencies of target string_utils make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f contrib/googletest/CMakeFiles/gtest.dir/build.make contrib/googletest/CMakeFiles/gtest.dir/build make -f dbms/src/Common/StringUtils/CMakeFiles/string_utils.dir/build.make dbms/src/Common/StringUtils/CMakeFiles/string_utils.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' Scanning dependencies of target widechar_width Scanning dependencies of target apple_rt make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libcommon/CMakeFiles/apple_rt.dir/build.make libs/libcommon/CMakeFiles/apple_rt.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libwidechar_width/CMakeFiles/widechar_width.dir/build.make libs/libwidechar_width/CMakeFiles/widechar_width.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 0%] Building CXX object libs/libpocoext/CMakeFiles/pocoext.dir/src/LevelFilterChannel.cpp.o [ 0%] Building CXX object contrib/cityhash102/CMakeFiles/cityhash.dir/src/city.cc.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/cityhash102 && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/src -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wno-old-style-cast -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-result -Wno-deprecated-declarations -Wno-non-virtual-dtor -Wno-maybe-uninitialized -Wno-misleading-indentation -Wno-implicit-fallthrough -Wno-class-memaccess -std=c++1z -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/cityhash.dir/src/city.cc.o -c /build/clickhouse-18.16.1+ds/contrib/cityhash102/src/city.cc cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libpocoext && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/pocoext.dir/src/LevelFilterChannel.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libpocoext/src/LevelFilterChannel.cpp [ 0%] Building CXX object contrib/murmurhash/CMakeFiles/murmurhash.dir/src/murmurhash2.cpp.o [ 0%] Building C object contrib/libbtrie/CMakeFiles/btrie.dir/src/btrie.c.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/libbtrie && /usr/bin/cc -I/build/clickhouse-18.16.1+ds/contrib/libbtrie/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-result -Wno-deprecated-declarations -Wno-maybe-uninitialized -Wno-misleading-indentation -Wno-stringop-overflow -O2 -g -DNDEBUG -O3 -fPIC -o CMakeFiles/btrie.dir/src/btrie.c.o -c /build/clickhouse-18.16.1+ds/contrib/libbtrie/src/btrie.c cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/murmurhash && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wno-old-style-cast -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-result -Wno-deprecated-declarations -Wno-non-virtual-dtor -Wno-maybe-uninitialized -Wno-misleading-indentation -Wno-implicit-fallthrough -Wno-class-memaccess -std=c++1z -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/murmurhash.dir/src/murmurhash2.cpp.o -c /build/clickhouse-18.16.1+ds/contrib/murmurhash/src/murmurhash2.cpp [ 0%] Building CXX object contrib/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o [ 0%] Building CXX object libs/libcommon/CMakeFiles/apple_rt.dir/src/apple_rt.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/googletest && /usr/bin/c++ -I/usr/src/googletest/googletest/include -I/usr/src/googletest/googletest -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wno-old-style-cast -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-result -Wno-deprecated-declarations -Wno-non-virtual-dtor -Wno-maybe-uninitialized -Wno-misleading-indentation -Wno-implicit-fallthrough -Wno-class-memaccess -std=c++1z -O2 -g -DNDEBUG -O3 -fPIC -Wall -Wshadow -Wno-error=dangling-else -DGTEST_HAS_PTHREAD=1 -fexceptions -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -pthread -std=c++17 -o CMakeFiles/gtest.dir/src/gtest-all.cc.o -c /usr/src/googletest/googletest/src/gtest-all.cc cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/apple_rt.dir/src/apple_rt.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/apple_rt.cpp [ 0%] Building CXX object dbms/src/Common/StringUtils/CMakeFiles/string_utils.dir/StringUtils.cpp.o [ 0%] Building CXX object libs/libwidechar_width/CMakeFiles/widechar_width.dir/widechar_width.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libwidechar_width && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/widechar_width.dir/widechar_width.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libwidechar_width/widechar_width.cpp cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/StringUtils && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/string_utils.dir/StringUtils.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/StringUtils/StringUtils.cpp [ 0%] Linking CXX static library libapple_rt.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/cmake -P CMakeFiles/apple_rt.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/cmake -E cmake_link_script CMakeFiles/apple_rt.dir/link.txt --verbose=1 /usr/bin/ar qc libapple_rt.a CMakeFiles/apple_rt.dir/src/apple_rt.cpp.o /usr/bin/ranlib libapple_rt.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 0%] Built target apple_rt make -f libs/consistent-hashing/CMakeFiles/consistent-hashing.dir/build.make libs/consistent-hashing/CMakeFiles/consistent-hashing.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/consistent-hashing /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing/CMakeFiles/consistent-hashing.dir/DependInfo.cmake --color= [ 1%] Building CXX object contrib/murmurhash/CMakeFiles/murmurhash.dir/src/murmurhash3.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/murmurhash && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wno-old-style-cast -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-result -Wno-deprecated-declarations -Wno-non-virtual-dtor -Wno-maybe-uninitialized -Wno-misleading-indentation -Wno-implicit-fallthrough -Wno-class-memaccess -std=c++1z -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/murmurhash.dir/src/murmurhash3.cpp.o -c /build/clickhouse-18.16.1+ds/contrib/murmurhash/src/murmurhash3.cpp Scanning dependencies of target consistent-hashing make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/consistent-hashing/CMakeFiles/consistent-hashing.dir/build.make libs/consistent-hashing/CMakeFiles/consistent-hashing.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 1%] Building CXX object libs/consistent-hashing/CMakeFiles/consistent-hashing.dir/consistent_hashing.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/consistent-hashing.dir/consistent_hashing.cpp.o -c /build/clickhouse-18.16.1+ds/libs/consistent-hashing/consistent_hashing.cpp [ 1%] Linking C static library libbtrie.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/libbtrie && /usr/bin/cmake -P CMakeFiles/btrie.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/libbtrie && /usr/bin/cmake -E cmake_link_script CMakeFiles/btrie.dir/link.txt --verbose=1 /usr/bin/ar qc libbtrie.a CMakeFiles/btrie.dir/src/btrie.c.o /usr/bin/ranlib libbtrie.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 1%] Built target btrie make -f libs/consistent-hashing-sumbur/CMakeFiles/consistent-hashing-sumbur.dir/build.make libs/consistent-hashing-sumbur/CMakeFiles/consistent-hashing-sumbur.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing-sumbur /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing-sumbur/CMakeFiles/consistent-hashing-sumbur.dir/DependInfo.cmake --color= Scanning dependencies of target consistent-hashing-sumbur make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/consistent-hashing-sumbur/CMakeFiles/consistent-hashing-sumbur.dir/build.make libs/consistent-hashing-sumbur/CMakeFiles/consistent-hashing-sumbur.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 1%] Building CXX object libs/consistent-hashing-sumbur/CMakeFiles/consistent-hashing-sumbur.dir/sumbur.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing-sumbur && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/consistent-hashing-sumbur.dir/sumbur.cpp.o -c /build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur/sumbur.cpp [ 1%] Linking CXX static library libcityhash.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/cityhash102 && /usr/bin/cmake -P CMakeFiles/cityhash.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/cityhash102 && /usr/bin/cmake -E cmake_link_script CMakeFiles/cityhash.dir/link.txt --verbose=1 /usr/bin/ar qc libcityhash.a CMakeFiles/cityhash.dir/src/city.cc.o /usr/bin/ranlib libcityhash.a [ 1%] Linking CXX static library libstring_utils.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/StringUtils && /usr/bin/cmake -P CMakeFiles/string_utils.dir/cmake_clean_target.cmake [ 1%] Built target cityhash make -f dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/build.make dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/depend cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/StringUtils && /usr/bin/cmake -E cmake_link_script CMakeFiles/string_utils.dir/link.txt --verbose=1 make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/DependInfo.cmake --color= /usr/bin/ar qc libstring_utils.a CMakeFiles/string_utils.dir/StringUtils.cpp.o /usr/bin/ranlib libstring_utils.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 1%] Built target string_utils make -f dbms/src/Core/tests/CMakeFiles/rvo_test.dir/build.make dbms/src/Core/tests/CMakeFiles/rvo_test.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/src/Core/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Core/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Core/tests/CMakeFiles/rvo_test.dir/DependInfo.cmake --color= [ 1%] Linking CXX static library libmurmurhash.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/murmurhash && /usr/bin/cmake -P CMakeFiles/murmurhash.dir/cmake_clean_target.cmake Scanning dependencies of target rvo_test Scanning dependencies of target clickhouse_aggregate_functions make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/build.make dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/build make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/src/Core/tests/CMakeFiles/rvo_test.dir/build.make dbms/src/Core/tests/CMakeFiles/rvo_test.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/murmurhash && /usr/bin/cmake -E cmake_link_script CMakeFiles/murmurhash.dir/link.txt --verbose=1 [ 1%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionArray.cpp.o [ 1%] Building CXX object dbms/src/Core/tests/CMakeFiles/rvo_test.dir/rvo_test.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionArray.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionArray.cpp /usr/bin/ar qc libmurmurhash.a CMakeFiles/murmurhash.dir/src/murmurhash2.cpp.o CMakeFiles/murmurhash.dir/src/murmurhash3.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Core/tests && /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIE -fno-tree-loop-distribute-patterns -pthread -std=c++17 -o CMakeFiles/rvo_test.dir/rvo_test.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Core/tests/rvo_test.cpp /usr/bin/ranlib libmurmurhash.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 1%] Building CXX object libs/consistent-hashing/CMakeFiles/consistent-hashing.dir/popcount.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/consistent-hashing.dir/popcount.cpp.o -c /build/clickhouse-18.16.1+ds/libs/consistent-hashing/popcount.cpp [ 1%] Built target murmurhash make -f dbms/src/IO/tests/CMakeFiles/zlib_ng_bug.dir/build.make dbms/src/IO/tests/CMakeFiles/zlib_ng_bug.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/src/IO/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/IO/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/IO/tests/CMakeFiles/zlib_ng_bug.dir/DependInfo.cmake --color= [ 1%] Linking CXX static library libwidechar_width.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libwidechar_width && /usr/bin/cmake -P CMakeFiles/widechar_width.dir/cmake_clean_target.cmake Scanning dependencies of target zlib_ng_bug make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/src/IO/tests/CMakeFiles/zlib_ng_bug.dir/build.make dbms/src/IO/tests/CMakeFiles/zlib_ng_bug.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libwidechar_width && /usr/bin/cmake -E cmake_link_script CMakeFiles/widechar_width.dir/link.txt --verbose=1 [ 1%] Building CXX object dbms/src/IO/tests/CMakeFiles/zlib_ng_bug.dir/zlib_ng_bug.cpp.o /usr/bin/ar qc libwidechar_width.a CMakeFiles/widechar_width.dir/widechar_width.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/IO/tests && /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIE -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/zlib_ng_bug.dir/zlib_ng_bug.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/tests/zlib_ng_bug.cpp /usr/bin/ranlib libwidechar_width.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 1%] Built target widechar_width make -f dbms/programs/clang/CMakeFiles/make-headers-directory.dir/build.make dbms/programs/clang/CMakeFiles/make-headers-directory.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/programs/clang /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/programs/clang /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/programs/clang/CMakeFiles/make-headers-directory.dir/DependInfo.cmake --color= Scanning dependencies of target make-headers-directory make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/programs/clang/CMakeFiles/make-headers-directory.dir/build.make dbms/programs/clang/CMakeFiles/make-headers-directory.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/programs/clang && /usr/bin/cmake -E make_directory /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/programs/clang/headers/18.16.1 make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 1%] Built target make-headers-directory make -f dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_c.dir/build.make dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_c.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/tests/external_dictionaries/dictionary_library /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_c.dir/DependInfo.cmake --color= Scanning dependencies of target dictionary_library_c make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_c.dir/build.make dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_c.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 1%] Building C object dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_c.dir/dictionary_library_c.c.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library && /usr/bin/cc -Ddictionary_library_c_EXPORTS -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -o CMakeFiles/dictionary_library_c.dir/dictionary_library_c.c.o -c /build/clickhouse-18.16.1+ds/dbms/tests/external_dictionaries/dictionary_library/dictionary_library_c.c [ 1%] Building CXX object libs/libpocoext/CMakeFiles/pocoext.dir/src/ThreadNumber.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libpocoext && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/pocoext.dir/src/ThreadNumber.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libpocoext/src/ThreadNumber.cpp [ 1%] Linking C shared library dictionary_library_c.so cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library && /usr/bin/cmake -E cmake_link_script CMakeFiles/dictionary_library_c.dir/link.txt --verbose=1 [ 2%] Linking CXX static library libconsistent-hashing-sumbur.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing-sumbur && /usr/bin/cmake -P CMakeFiles/consistent-hashing-sumbur.dir/cmake_clean_target.cmake /usr/bin/cc -fPIC -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -O2 -g -DNDEBUG -O3 -Wl,-z,relro -shared -Wl,-soname,dictionary_library_c.so -o dictionary_library_c.so CMakeFiles/dictionary_library_c.dir/dictionary_library_c.c.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing-sumbur && /usr/bin/cmake -E cmake_link_script CMakeFiles/consistent-hashing-sumbur.dir/link.txt --verbose=1 /usr/bin/ar qc libconsistent-hashing-sumbur.a CMakeFiles/consistent-hashing-sumbur.dir/sumbur.cpp.o /usr/bin/ranlib libconsistent-hashing-sumbur.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 2%] Building CXX object libs/libpocoext/CMakeFiles/pocoext.dir/src/SessionPoolHelpers.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libpocoext && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/pocoext.dir/src/SessionPoolHelpers.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libpocoext/src/SessionPoolHelpers.cpp [ 2%] Built target consistent-hashing-sumbur make -f dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library.dir/build.make dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/tests/external_dictionaries/dictionary_library /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library.dir/DependInfo.cmake --color= [ 2%] Built target dictionary_library_c make -f dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_empty.dir/build.make dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_empty.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/tests/external_dictionaries/dictionary_library /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_empty.dir/DependInfo.cmake --color= Scanning dependencies of target dictionary_library Scanning dependencies of target dictionary_library_empty make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library.dir/build.make dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library.dir/build make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_empty.dir/build.make dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_empty.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 2%] Building CXX object dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library_empty.dir/dictionary_library_empty.cpp.o [ 2%] Building CXX object dbms/tests/external_dictionaries/dictionary_library/CMakeFiles/dictionary_library.dir/dictionary_library.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library && /usr/bin/c++ -Ddictionary_library_empty_EXPORTS -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/dictionary_library_empty.dir/dictionary_library_empty.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/tests/external_dictionaries/dictionary_library/dictionary_library_empty.cpp cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library && /usr/bin/c++ -Ddictionary_library_EXPORTS -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/dictionary_library.dir/dictionary_library.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/tests/external_dictionaries/dictionary_library/dictionary_library.cpp [ 2%] Linking CXX shared library dictionary_library_empty.so cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library && /usr/bin/cmake -E cmake_link_script CMakeFiles/dictionary_library_empty.dir/link.txt --verbose=1 /usr/bin/c++ -fPIC -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -Wl,-z,relro -shared -Wl,-soname,dictionary_library_empty.so -o dictionary_library_empty.so CMakeFiles/dictionary_library_empty.dir/dictionary_library_empty.cpp.o [ 2%] Linking CXX executable zlib_ng_bug cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/IO/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/zlib_ng_bug.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/zlib_ng_bug.dir/zlib_ng_bug.cpp.o -o zlib_ng_bug /usr/lib/libPocoFoundation.so make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 2%] Built target zlib_ng_bug make -f contrib/libbtrie/CMakeFiles/test_btrie.dir/build.make contrib/libbtrie/CMakeFiles/test_btrie.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/contrib/libbtrie /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/libbtrie /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/libbtrie/CMakeFiles/test_btrie.dir/DependInfo.cmake --color= [ 2%] Built target dictionary_library_empty Scanning dependencies of target test_btrie make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f contrib/libbtrie/CMakeFiles/test_btrie.dir/build.make contrib/libbtrie/CMakeFiles/test_btrie.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 2%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionAvg.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionAvg.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionAvg.cpp [ 2%] Building C object contrib/libbtrie/CMakeFiles/test_btrie.dir/test/test_btrie.c.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/libbtrie && /usr/bin/cc -I/build/clickhouse-18.16.1+ds/contrib/libbtrie/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-result -Wno-deprecated-declarations -Wno-maybe-uninitialized -Wno-misleading-indentation -Wno-stringop-overflow -O2 -g -DNDEBUG -O3 -fPIE -o CMakeFiles/test_btrie.dir/test/test_btrie.c.o -c /build/clickhouse-18.16.1+ds/contrib/libbtrie/test/test_btrie.c [ 3%] Linking C executable test_btrie cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/libbtrie && /usr/bin/cmake -E cmake_link_script CMakeFiles/test_btrie.dir/link.txt --verbose=1 /usr/bin/cc -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-result -Wno-deprecated-declarations -Wno-maybe-uninitialized -Wno-misleading-indentation -Wno-stringop-overflow -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/test_btrie.dir/test/test_btrie.c.o -o test_btrie libbtrie.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 3%] Built target test_btrie [ 3%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionBitwise.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionBitwise.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionBitwise.cpp [ 3%] Linking CXX executable rvo_test cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Core/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/rvo_test.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/rvo_test.dir/rvo_test.cpp.o -o rvo_test -pthread [ 3%] Linking CXX static library libconsistent-hashing.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing && /usr/bin/cmake -P CMakeFiles/consistent-hashing.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/consistent-hashing && /usr/bin/cmake -E cmake_link_script CMakeFiles/consistent-hashing.dir/link.txt --verbose=1 make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 3%] Built target rvo_test /usr/bin/ar qc libconsistent-hashing.a CMakeFiles/consistent-hashing.dir/consistent_hashing.cpp.o CMakeFiles/consistent-hashing.dir/popcount.cpp.o /usr/bin/ranlib libconsistent-hashing.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 3%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionCount.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionCount.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionCount.cpp [ 3%] Built target consistent-hashing make -f dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/build.make dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/src/Functions /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/DependInfo.cmake --color= Scanning dependencies of target clickhouse_functions make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/build.make dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 3%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionJoinGet.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionJoinGet.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionJoinGet.cpp [ 3%] Linking CXX static library libpocoext.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libpocoext && /usr/bin/cmake -P CMakeFiles/pocoext.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libpocoext && /usr/bin/cmake -E cmake_link_script CMakeFiles/pocoext.dir/link.txt --verbose=1 /usr/bin/ar qc libpocoext.a CMakeFiles/pocoext.dir/src/LevelFilterChannel.cpp.o CMakeFiles/pocoext.dir/src/ThreadNumber.cpp.o CMakeFiles/pocoext.dir/src/SessionPoolHelpers.cpp.o /usr/bin/ranlib libpocoext.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 3%] Built target pocoext make -f libs/libcommon/CMakeFiles/common.dir/build.make libs/libcommon/CMakeFiles/common.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libcommon /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/CMakeFiles/common.dir/DependInfo.cmake --color= Scanning dependencies of target common make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libcommon/CMakeFiles/common.dir/build.make libs/libcommon/CMakeFiles/common.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 3%] Building CXX object libs/libcommon/CMakeFiles/common.dir/src/DateLUT.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/common.dir/src/DateLUT.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/DateLUT.cpp [ 3%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionForEach.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionForEach.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionForEach.cpp [ 3%] Linking CXX shared library dictionary_library.so cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/tests/external_dictionaries/dictionary_library && /usr/bin/cmake -E cmake_link_script CMakeFiles/dictionary_library.dir/link.txt --verbose=1 /usr/bin/c++ -fPIC -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -Wl,-z,relro -shared -Wl,-soname,dictionary_library.so -o dictionary_library.so CMakeFiles/dictionary_library.dir/dictionary_library.cpp.o make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 3%] Built target dictionary_library [ 3%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionGroupArray.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionGroupArray.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionGroupArray.cpp [ 3%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionGroupArrayInsertAt.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionGroupArrayInsertAt.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionGroupArrayInsertAt.cpp [ 3%] Building CXX object libs/libcommon/CMakeFiles/common.dir/src/DateLUTImpl.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/common.dir/src/DateLUTImpl.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/DateLUTImpl.cpp [ 3%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionGroupUniqArray.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionGroupUniqArray.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionGroupUniqArray.cpp [ 3%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionHistogram.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionHistogram.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionHistogram.cpp [ 3%] Building C object libs/libcommon/CMakeFiles/common.dir/src/preciseExp10.c.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/cc -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -O2 -g -DNDEBUG -O3 -fPIC -o CMakeFiles/common.dir/src/preciseExp10.c.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/preciseExp10.c [ 3%] Building CXX object libs/libcommon/CMakeFiles/common.dir/src/shift10.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/common.dir/src/shift10.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/shift10.cpp [ 3%] Building CXX object libs/libcommon/CMakeFiles/common.dir/src/mremap.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/common.dir/src/mremap.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/mremap.cpp [ 3%] Building CXX object libs/libcommon/CMakeFiles/common.dir/src/JSON.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/common.dir/src/JSON.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/JSON.cpp [ 3%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionIf.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionIf.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionIf.cpp [ 3%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsCoding.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsCoding.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsCoding.cpp [ 3%] Building CXX object libs/libcommon/CMakeFiles/common.dir/src/getMemoryAmount.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/common.dir/src/getMemoryAmount.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/getMemoryAmount.cpp [ 3%] Building CXX object libs/libcommon/CMakeFiles/common.dir/src/ThreadPool.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/common.dir/src/ThreadPool.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/ThreadPool.cpp [ 4%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionMaxIntersections.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionMaxIntersections.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionMaxIntersections.cpp [ 4%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionMerge.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionMerge.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionMerge.cpp [ 4%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionMinMaxAny.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionMinMaxAny.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionMinMaxAny.cpp [ 4%] Building CXX object libs/libcommon/CMakeFiles/common.dir/src/demangle.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/common.dir/src/demangle.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/demangle.cpp [ 5%] Building CXX object libs/libcommon/CMakeFiles/common.dir/src/SetTerminalEcho.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/common.dir/src/SetTerminalEcho.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/SetTerminalEcho.cpp [ 5%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionNull.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionNull.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionNull.cpp [ 5%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionQuantile.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionQuantile.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionQuantile.cpp [ 5%] Linking CXX static library libcommon.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/cmake -P CMakeFiles/common.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon && /usr/bin/cmake -E cmake_link_script CMakeFiles/common.dir/link.txt --verbose=1 /usr/bin/ar qc libcommon.a CMakeFiles/common.dir/src/DateLUT.cpp.o CMakeFiles/common.dir/src/DateLUTImpl.cpp.o CMakeFiles/common.dir/src/preciseExp10.c.o CMakeFiles/common.dir/src/shift10.cpp.o CMakeFiles/common.dir/src/mremap.cpp.o CMakeFiles/common.dir/src/JSON.cpp.o CMakeFiles/common.dir/src/getMemoryAmount.cpp.o CMakeFiles/common.dir/src/ThreadPool.cpp.o CMakeFiles/common.dir/src/demangle.cpp.o CMakeFiles/common.dir/src/SetTerminalEcho.cpp.o /usr/bin/ranlib libcommon.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 5%] Built target common [ 5%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionRetention.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionRetention.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionRetention.cpp [ 5%] Linking CXX static library libgtest.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/googletest && /usr/bin/cmake -P CMakeFiles/gtest.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/contrib/googletest && /usr/bin/cmake -E cmake_link_script CMakeFiles/gtest.dir/link.txt --verbose=1 /usr/bin/ar qc libgtest.a CMakeFiles/gtest.dir/src/gtest-all.cc.o /usr/bin/ranlib libgtest.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 5%] Built target gtest make -f libs/libcommon/src/tests/CMakeFiles/date_lut2.dir/build.make libs/libcommon/src/tests/CMakeFiles/date_lut2.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests/CMakeFiles/date_lut2.dir/DependInfo.cmake --color= Scanning dependencies of target date_lut2 make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libcommon/src/tests/CMakeFiles/date_lut2.dir/build.make libs/libcommon/src/tests/CMakeFiles/date_lut2.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 5%] Building CXX object libs/libcommon/src/tests/CMakeFiles/date_lut2.dir/date_lut2.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/date_lut2.dir/date_lut2.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests/date_lut2.cpp [ 5%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionSequenceMatch.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionSequenceMatch.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionSequenceMatch.cpp [ 5%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionStatistics.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionStatistics.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionStatistics.cpp [ 5%] Linking CXX executable date_lut2 cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/date_lut2.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/date_lut2.dir/date_lut2.cpp.o -o date_lut2 ../../libcommon.a -ldl ../../../libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 5%] Built target date_lut2 make -f libs/libcommon/src/tests/CMakeFiles/date_lut3.dir/build.make libs/libcommon/src/tests/CMakeFiles/date_lut3.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests/CMakeFiles/date_lut3.dir/DependInfo.cmake --color= Scanning dependencies of target date_lut3 make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libcommon/src/tests/CMakeFiles/date_lut3.dir/build.make libs/libcommon/src/tests/CMakeFiles/date_lut3.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 5%] Building CXX object libs/libcommon/src/tests/CMakeFiles/date_lut3.dir/date_lut3.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/date_lut3.dir/date_lut3.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests/date_lut3.cpp [ 5%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionSum.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionSum.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionSum.cpp [ 5%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsConsistentHashing.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsConsistentHashing.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsConsistentHashing.cpp [ 5%] Linking CXX executable date_lut3 cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/date_lut3.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/date_lut3.dir/date_lut3.cpp.o -o date_lut3 ../../libcommon.a -ldl ../../../libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 5%] Built target date_lut3 make -f libs/libcommon/src/tests/CMakeFiles/date_lut4.dir/build.make libs/libcommon/src/tests/CMakeFiles/date_lut4.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests/CMakeFiles/date_lut4.dir/DependInfo.cmake --color= Scanning dependencies of target date_lut4 make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libcommon/src/tests/CMakeFiles/date_lut4.dir/build.make libs/libcommon/src/tests/CMakeFiles/date_lut4.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 5%] Building CXX object libs/libcommon/src/tests/CMakeFiles/date_lut4.dir/date_lut4.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/date_lut4.dir/date_lut4.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests/date_lut4.cpp [ 5%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionSumMap.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionSumMap.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionSumMap.cpp [ 6%] Linking CXX executable date_lut4 cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/date_lut4.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/date_lut4.dir/date_lut4.cpp.o -o date_lut4 ../../libcommon.a -ldl ../../../libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 6%] Built target date_lut4 make -f dbms/CMakeFiles/clickhouse_common_io.dir/build.make dbms/CMakeFiles/clickhouse_common_io.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/CMakeFiles/clickhouse_common_io.dir/DependInfo.cmake --color= Scanning dependencies of target clickhouse_common_io make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/CMakeFiles/clickhouse_common_io.dir/build.make dbms/CMakeFiles/clickhouse_common_io.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 6%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/ActionLock.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/ActionLock.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ActionLock.cpp [ 6%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/AlignedBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/AlignedBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/AlignedBuffer.cpp [ 6%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/Allocator.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/Allocator.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/Allocator.cpp [ 6%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionTopK.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionTopK.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionTopK.cpp [ 6%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsConversion.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsConversion.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsConversion.cpp [ 6%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/ClickHouseRevision.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/ClickHouseRevision.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ClickHouseRevision.cpp [ 7%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/CurrentMetrics.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/CurrentMetrics.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/CurrentMetrics.cpp [ 7%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/CurrentThread.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/CurrentThread.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/CurrentThread.cpp [ 7%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionUniq.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionUniq.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionUniq.cpp [ 7%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/DNSResolver.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/DNSResolver.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/DNSResolver.cpp [ 7%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/ErrorCodes.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/ErrorCodes.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ErrorCodes.cpp [ 7%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/Exception.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/Exception.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/Exception.cpp [ 7%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionUniqCombined.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionUniqCombined.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionUniqCombined.cpp [ 7%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/FieldVisitors.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/FieldVisitors.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/FieldVisitors.cpp [ 7%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionUniqUpTo.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionUniqUpTo.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionUniqUpTo.cpp [ 7%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/FileChecker.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/FileChecker.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/FileChecker.cpp [ 8%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionWindowFunnel.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionWindowFunnel.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionWindowFunnel.cpp [ 8%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/Macros.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/Macros.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/Macros.cpp [ 8%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/MemoryTracker.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/MemoryTracker.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/MemoryTracker.cpp [ 8%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionsStatisticsSimple.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionsStatisticsSimple.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/AggregateFunctionsStatisticsSimple.cpp [ 8%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/UniqCombinedBiasData.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/UniqCombinedBiasData.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/UniqCombinedBiasData.cpp [ 8%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/UniqVariadicHash.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/UniqVariadicHash.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/UniqVariadicHash.cpp [ 8%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/OptimizedRegularExpression.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/OptimizedRegularExpression.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/OptimizedRegularExpression.cpp [ 8%] Building CXX object dbms/src/AggregateFunctions/CMakeFiles/clickhouse_aggregate_functions.dir/registerAggregateFunctions.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_aggregate_functions.dir/registerAggregateFunctions.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/registerAggregateFunctions.cpp [ 8%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/ProfileEvents.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/ProfileEvents.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ProfileEvents.cpp [ 8%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/RWLock.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/RWLock.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/RWLock.cpp [ 8%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/SharedLibrary.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/SharedLibrary.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/SharedLibrary.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/ShellCommand.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/ShellCommand.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ShellCommand.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/StackTrace.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/StackTrace.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/StackTrace.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/StatusFile.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/StatusFile.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/StatusFile.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/Stopwatch.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/Stopwatch.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/Stopwatch.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/TaskStatsInfoGetter.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/TaskStatsInfoGetter.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/TaskStatsInfoGetter.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/ThreadStatus.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/ThreadStatus.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ThreadStatus.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/UTF8Helpers.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/UTF8Helpers.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/UTF8Helpers.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/createHardLink.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/createHardLink.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/createHardLink.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/escapeForFileName.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/escapeForFileName.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/escapeForFileName.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/formatIPv6.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/formatIPv6.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/formatIPv6.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/formatReadable.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/formatReadable.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/formatReadable.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/getFQDNOrHostName.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/getFQDNOrHostName.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/getFQDNOrHostName.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/getMultipleKeysFromConfig.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/getMultipleKeysFromConfig.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/getMultipleKeysFromConfig.cpp [ 9%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/getNumberOfPhysicalCPUCores.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/getNumberOfPhysicalCPUCores.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/getNumberOfPhysicalCPUCores.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/hasLinuxCapability.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/hasLinuxCapability.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/hasLinuxCapability.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/hex.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/hex.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/hex.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/isLocalAddress.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/isLocalAddress.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/isLocalAddress.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/localBackup.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/localBackup.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/localBackup.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/parseAddress.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/parseAddress.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/parseAddress.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/randomSeed.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/randomSeed.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/randomSeed.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/Common/setThreadName.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/Common/setThreadName.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/setThreadName.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/AIO.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/AIO.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/AIO.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/AIOContextPool.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/AIOContextPool.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/AIOContextPool.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/CachedCompressedReadBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/CachedCompressedReadBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/CachedCompressedReadBuffer.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/CascadeWriteBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/CascadeWriteBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/CascadeWriteBuffer.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedReadBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedReadBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/CompressedReadBuffer.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedReadBufferBase.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedReadBufferBase.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/CompressedReadBufferBase.cpp [ 10%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedReadBufferFromFile.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedReadBufferFromFile.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/CompressedReadBufferFromFile.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedWriteBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedWriteBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/CompressedWriteBuffer.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/CompressionSettings.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/CompressionSettings.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/CompressionSettings.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/HTTPCommon.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/HTTPCommon.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/HTTPCommon.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/HashingWriteBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/HashingWriteBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/HashingWriteBuffer.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/HexWriteBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/HexWriteBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/HexWriteBuffer.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/InterserverWriteBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/InterserverWriteBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/InterserverWriteBuffer.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/LZ4_decompress_faster.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/LZ4_decompress_faster.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/LZ4_decompress_faster.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/LimitReadBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/LimitReadBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/LimitReadBuffer.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/MMapReadBufferFromFile.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/MMapReadBufferFromFile.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/MMapReadBufferFromFile.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/MMapReadBufferFromFileDescriptor.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/MMapReadBufferFromFileDescriptor.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/MMapReadBufferFromFileDescriptor.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/MemoryReadWriteBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/MemoryReadWriteBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/MemoryReadWriteBuffer.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/Progress.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/Progress.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/Progress.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferAIO.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferAIO.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBufferAIO.cpp [ 11%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromFile.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromFile.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBufferFromFile.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromFileBase.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromFileBase.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBufferFromFileBase.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromFileDescriptor.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromFileDescriptor.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBufferFromFileDescriptor.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromIStream.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromIStream.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBufferFromIStream.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromPocoSocket.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromPocoSocket.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBufferFromPocoSocket.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/ReadHelpers.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadHelpers.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/ReadHelpers.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/ReadWriteBufferFromHTTP.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadWriteBufferFromHTTP.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/ReadWriteBufferFromHTTP.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/UseSSL.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/UseSSL.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/UseSSL.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferAIO.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferAIO.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferAIO.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromFile.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromFile.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromFile.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromFileBase.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromFileBase.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromFileBase.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromFileDescriptor.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromFileDescriptor.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromFileDescriptor.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromHTTP.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromHTTP.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromHTTP.cpp [ 12%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromHTTPServerResponse.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromHTTPServerResponse.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromHTTPServerResponse.cpp [ 13%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromOStream.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromOStream.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromOStream.cpp [ 13%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromPocoSocket.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromPocoSocket.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromPocoSocket.cpp [ 13%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromTemporaryFile.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromTemporaryFile.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromTemporaryFile.cpp [ 13%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferValidUTF8.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferValidUTF8.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferValidUTF8.cpp [ 13%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/WriteHelpers.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteHelpers.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.cpp [ 13%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/ZlibDeflatingWriteBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/ZlibDeflatingWriteBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/ZlibDeflatingWriteBuffer.cpp [ 13%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/ZlibInflatingReadBuffer.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/ZlibInflatingReadBuffer.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/ZlibInflatingReadBuffer.cpp [ 13%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/copyData.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/copyData.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/copyData.cpp [ 13%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/createReadBufferFromFileBase.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/createReadBufferFromFileBase.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/createReadBufferFromFileBase.cpp [ 14%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsEmbeddedDictionaries.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsEmbeddedDictionaries.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsEmbeddedDictionaries.cpp [ 14%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/createWriteBufferFromFileBase.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/createWriteBufferFromFileBase.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/createWriteBufferFromFileBase.cpp [ 14%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/parseDateTimeBestEffort.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/parseDateTimeBestEffort.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/parseDateTimeBestEffort.cpp [ 14%] Building CXX object dbms/CMakeFiles/clickhouse_common_io.dir/src/IO/readFloatText.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libwidechar_width -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_io.dir/src/IO/readFloatText.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/IO/readFloatText.cpp [ 14%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsExternalDictionaries.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsExternalDictionaries.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsExternalDictionaries.cpp [ 14%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsExternalModels.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsExternalModels.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsExternalModels.cpp [ 14%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsFindCluster.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsFindCluster.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsFindCluster.cpp [ 14%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsFormatting.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsFormatting.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsFormatting.cpp [ 14%] Linking CXX static library libclickhouse_common_io.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/cmake -P CMakeFiles/clickhouse_common_io.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms && /usr/bin/cmake -E cmake_link_script CMakeFiles/clickhouse_common_io.dir/link.txt --verbose=1 /usr/bin/ar qc libclickhouse_common_io.a CMakeFiles/clickhouse_common_io.dir/src/Common/ActionLock.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/AlignedBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/Allocator.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/ClickHouseRevision.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/CurrentMetrics.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/CurrentThread.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/DNSResolver.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/ErrorCodes.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/Exception.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/FieldVisitors.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/FileChecker.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/Macros.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/MemoryTracker.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/OptimizedRegularExpression.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/ProfileEvents.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/RWLock.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/SharedLibrary.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/ShellCommand.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/StackTrace.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/StatusFile.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/Stopwatch.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/TaskStatsInfoGetter.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/ThreadStatus.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/UTF8Helpers.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/createHardLink.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/escapeForFileName.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/formatIPv6.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/formatReadable.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/getFQDNOrHostName.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/getMultipleKeysFromConfig.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/getNumberOfPhysicalCPUCores.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/hasLinuxCapability.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/hex.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/isLocalAddress.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/localBackup.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/parseAddress.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/randomSeed.cpp.o CMakeFiles/clickhouse_common_io.dir/src/Common/setThreadName.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/AIO.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/AIOContextPool.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/CachedCompressedReadBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/CascadeWriteBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedReadBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedReadBufferBase.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedReadBufferFromFile.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/CompressedWriteBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/CompressionSettings.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/HTTPCommon.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/HashingWriteBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/HexWriteBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/InterserverWriteBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/LZ4_decompress_faster.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/LimitReadBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/MMapReadBufferFromFile.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/MMapReadBufferFromFileDescriptor.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/MemoryReadWriteBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/Progress.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferAIO.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromFile.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromFileBase.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromFileDescriptor.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromIStream.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadBufferFromPocoSocket.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadHelpers.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/ReadWriteBufferFromHTTP.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/UseSSL.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferAIO.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromFile.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromFileBase.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromFileDescriptor.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromHTTP.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromHTTPServerResponse.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromOStream.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromPocoSocket.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferFromTemporaryFile.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteBufferValidUTF8.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/WriteHelpers.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/ZlibDeflatingWriteBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/ZlibInflatingReadBuffer.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/copyData.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/createReadBufferFromFileBase.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/createWriteBufferFromFileBase.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/parseDateTimeBestEffort.cpp.o CMakeFiles/clickhouse_common_io.dir/src/IO/readFloatText.cpp.o /usr/bin/ranlib libclickhouse_common_io.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Built target clickhouse_common_io make -f libs/libcommon/src/tests/CMakeFiles/date_lut_init.dir/build.make libs/libcommon/src/tests/CMakeFiles/date_lut_init.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests/CMakeFiles/date_lut_init.dir/DependInfo.cmake --color= Scanning dependencies of target date_lut_init make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libcommon/src/tests/CMakeFiles/date_lut_init.dir/build.make libs/libcommon/src/tests/CMakeFiles/date_lut_init.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsGeo.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsGeo.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsGeo.cpp [ 14%] Building CXX object libs/libcommon/src/tests/CMakeFiles/date_lut_init.dir/date_lut_init.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/date_lut_init.dir/date_lut_init.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests/date_lut_init.cpp [ 14%] Linking CXX executable date_lut_init cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/date_lut_init.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/date_lut_init.dir/date_lut_init.cpp.o -o date_lut_init ../../libcommon.a -ldl ../../../libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Built target date_lut_init make -f libs/libcommon/src/tests/CMakeFiles/date_lut_default_timezone.dir/build.make libs/libcommon/src/tests/CMakeFiles/date_lut_default_timezone.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests/CMakeFiles/date_lut_default_timezone.dir/DependInfo.cmake --color= Scanning dependencies of target date_lut_default_timezone make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libcommon/src/tests/CMakeFiles/date_lut_default_timezone.dir/build.make libs/libcommon/src/tests/CMakeFiles/date_lut_default_timezone.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Building CXX object libs/libcommon/src/tests/CMakeFiles/date_lut_default_timezone.dir/date_lut_default_timezone.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/date_lut_default_timezone.dir/date_lut_default_timezone.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests/date_lut_default_timezone.cpp [ 14%] Linking CXX static library libclickhouse_aggregate_functions.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/cmake -P CMakeFiles/clickhouse_aggregate_functions.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/AggregateFunctions && /usr/bin/cmake -E cmake_link_script CMakeFiles/clickhouse_aggregate_functions.dir/link.txt --verbose=1 /usr/bin/ar qc libclickhouse_aggregate_functions.a CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionArray.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionAvg.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionBitwise.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionCount.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionForEach.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionGroupArray.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionGroupArrayInsertAt.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionGroupUniqArray.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionHistogram.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionIf.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionMaxIntersections.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionMerge.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionMinMaxAny.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionNull.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionQuantile.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionRetention.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionSequenceMatch.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionStatistics.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionSum.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionSumMap.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionTopK.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionUniq.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionUniqCombined.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionUniqUpTo.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionWindowFunnel.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/AggregateFunctionsStatisticsSimple.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/UniqCombinedBiasData.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/UniqVariadicHash.cpp.o CMakeFiles/clickhouse_aggregate_functions.dir/registerAggregateFunctions.cpp.o [ 14%] Linking CXX executable date_lut_default_timezone cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/date_lut_default_timezone.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/date_lut_default_timezone.dir/date_lut_default_timezone.cpp.o -o date_lut_default_timezone ../../libcommon.a -ldl ../../../libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Built target date_lut_default_timezone make -f libs/libcommon/src/tests/CMakeFiles/multi_version.dir/build.make libs/libcommon/src/tests/CMakeFiles/multi_version.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests/CMakeFiles/multi_version.dir/DependInfo.cmake --color= Scanning dependencies of target multi_version make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libcommon/src/tests/CMakeFiles/multi_version.dir/build.make libs/libcommon/src/tests/CMakeFiles/multi_version.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Building CXX object libs/libcommon/src/tests/CMakeFiles/multi_version.dir/multi_version.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/multi_version.dir/multi_version.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests/multi_version.cpp /usr/bin/ranlib libclickhouse_aggregate_functions.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Built target clickhouse_aggregate_functions make -f libs/libcommon/src/tests/CMakeFiles/local_date_time_comparison.dir/build.make libs/libcommon/src/tests/CMakeFiles/local_date_time_comparison.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests/CMakeFiles/local_date_time_comparison.dir/DependInfo.cmake --color= Scanning dependencies of target local_date_time_comparison make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libcommon/src/tests/CMakeFiles/local_date_time_comparison.dir/build.make libs/libcommon/src/tests/CMakeFiles/local_date_time_comparison.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Building CXX object libs/libcommon/src/tests/CMakeFiles/local_date_time_comparison.dir/local_date_time_comparison.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/local_date_time_comparison.dir/local_date_time_comparison.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libcommon/src/tests/local_date_time_comparison.cpp [ 14%] Linking CXX executable multi_version cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/multi_version.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/multi_version.dir/multi_version.cpp.o -o multi_version ../../libcommon.a ../../../libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Built target multi_version make -f dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/build.make dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/src/Common/ZooKeeper /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/ZooKeeper /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/DependInfo.cmake --color= Scanning dependencies of target clickhouse_common_zookeeper make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/build.make dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsHashing.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsHashing.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsHashing.cpp [ 14%] Building CXX object dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/IKeeper.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/ZooKeeper && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_zookeeper.dir/IKeeper.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ZooKeeper/IKeeper.cpp [ 14%] Linking CXX executable local_date_time_comparison cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/src/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/local_date_time_comparison.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/local_date_time_comparison.dir/local_date_time_comparison.cpp.o -o local_date_time_comparison ../../libcommon.a ../../../libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Built target local_date_time_comparison make -f libs/libmysqlxx/CMakeFiles/mysqlxx.dir/build.make libs/libmysqlxx/CMakeFiles/mysqlxx.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/libs/libmysqlxx /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx/CMakeFiles/mysqlxx.dir/DependInfo.cmake --color= Scanning dependencies of target mysqlxx make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f libs/libmysqlxx/CMakeFiles/mysqlxx.dir/build.make libs/libmysqlxx/CMakeFiles/mysqlxx.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 14%] Building CXX object libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/Connection.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/mysqlxx.dir/src/Connection.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libmysqlxx/src/Connection.cpp [ 14%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsLogical.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsLogical.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsLogical.cpp [ 15%] Building CXX object dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/Lock.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/ZooKeeper && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_zookeeper.dir/Lock.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ZooKeeper/Lock.cpp [ 15%] Building CXX object libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/Exception.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/mysqlxx.dir/src/Exception.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libmysqlxx/src/Exception.cpp [ 15%] Building CXX object libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/Query.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/mysqlxx.dir/src/Query.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libmysqlxx/src/Query.cpp [ 15%] Building CXX object dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeper.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/ZooKeeper && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeper.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ZooKeeper/ZooKeeper.cpp [ 15%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsRandom.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsRandom.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsRandom.cpp [ 15%] Building CXX object libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/ResultBase.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/mysqlxx.dir/src/ResultBase.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libmysqlxx/src/ResultBase.cpp [ 15%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsReinterpret.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsReinterpret.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsReinterpret.cpp [ 15%] Building CXX object libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/StoreQueryResult.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/mysqlxx.dir/src/StoreQueryResult.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libmysqlxx/src/StoreQueryResult.cpp [ 15%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsRound.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsRound.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsRound.cpp [ 15%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsStringArray.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsStringArray.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsStringArray.cpp [ 15%] Building CXX object libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/UseQueryResult.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/mysqlxx.dir/src/UseQueryResult.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libmysqlxx/src/UseQueryResult.cpp [ 15%] Building CXX object libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/Row.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/mysqlxx.dir/src/Row.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libmysqlxx/src/Row.cpp [ 15%] Building CXX object libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/Value.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/mysqlxx.dir/src/Value.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libmysqlxx/src/Value.cpp [ 15%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsStringSearch.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsStringSearch.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsStringSearch.cpp [ 15%] Building CXX object libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/Pool.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/mysqlxx.dir/src/Pool.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libmysqlxx/src/Pool.cpp [ 15%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/FunctionsVisitParam.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/FunctionsVisitParam.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionsVisitParam.cpp [ 15%] Building CXX object dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeperHolder.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/ZooKeeper && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeperHolder.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ZooKeeper/ZooKeeperHolder.cpp [ 15%] Building CXX object libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/PoolWithFailover.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIC -std=c++17 -o CMakeFiles/mysqlxx.dir/src/PoolWithFailover.cpp.o -c /build/clickhouse-18.16.1+ds/libs/libmysqlxx/src/PoolWithFailover.cpp [ 15%] Building CXX object dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeperImpl.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/ZooKeeper && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeperImpl.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ZooKeeper/ZooKeeperImpl.cpp [ 16%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/URLHierarchy.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/URLHierarchy.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/URLHierarchy.cpp [ 17%] Linking CXX static library libmysqlxx.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/cmake -P CMakeFiles/mysqlxx.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libmysqlxx && /usr/bin/cmake -E cmake_link_script CMakeFiles/mysqlxx.dir/link.txt --verbose=1 /usr/bin/ar qc libmysqlxx.a CMakeFiles/mysqlxx.dir/src/Connection.cpp.o CMakeFiles/mysqlxx.dir/src/Exception.cpp.o CMakeFiles/mysqlxx.dir/src/Query.cpp.o CMakeFiles/mysqlxx.dir/src/ResultBase.cpp.o CMakeFiles/mysqlxx.dir/src/StoreQueryResult.cpp.o CMakeFiles/mysqlxx.dir/src/UseQueryResult.cpp.o CMakeFiles/mysqlxx.dir/src/Row.cpp.o CMakeFiles/mysqlxx.dir/src/Value.cpp.o CMakeFiles/mysqlxx.dir/src/Pool.cpp.o CMakeFiles/mysqlxx.dir/src/PoolWithFailover.cpp.o /usr/bin/ranlib libmysqlxx.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 17%] Built target mysqlxx make -f utils/compressor/CMakeFiles/zstd_test.dir/build.make utils/compressor/CMakeFiles/zstd_test.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/utils/compressor /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor/CMakeFiles/zstd_test.dir/DependInfo.cmake --color= Scanning dependencies of target zstd_test make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f utils/compressor/CMakeFiles/zstd_test.dir/build.make utils/compressor/CMakeFiles/zstd_test.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 17%] Building CXX object utils/compressor/CMakeFiles/zstd_test.dir/zstd_test.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -pthread -std=c++17 -o CMakeFiles/zstd_test.dir/zstd_test.cpp.o -c /build/clickhouse-18.16.1+ds/utils/compressor/zstd_test.cpp [ 17%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/URLPathHierarchy.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/URLPathHierarchy.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/URLPathHierarchy.cpp [ 18%] Linking CXX executable zstd_test cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor && /usr/bin/cmake -E cmake_link_script CMakeFiles/zstd_test.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/zstd_test.dir/zstd_test.cpp.o -o zstd_test /usr/lib/aarch64-linux-gnu/libzstd.so ../../libs/libcommon/libcommon.a ../../libs/libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 18%] Built target zstd_test make -f utils/compressor/CMakeFiles/decompress_perf.dir/build.make utils/compressor/CMakeFiles/decompress_perf.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/utils/compressor /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor/CMakeFiles/decompress_perf.dir/DependInfo.cmake --color= Scanning dependencies of target decompress_perf make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f utils/compressor/CMakeFiles/decompress_perf.dir/build.make utils/compressor/CMakeFiles/decompress_perf.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 18%] Building CXX object utils/compressor/CMakeFiles/decompress_perf.dir/decompress_perf.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/decompress_perf.dir/decompress_perf.cpp.o -c /build/clickhouse-18.16.1+ds/utils/compressor/decompress_perf.cpp [ 18%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/abs.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/abs.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/abs.cpp [ 18%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/acos.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/acos.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/acos.cpp [ 18%] Linking CXX executable decompress_perf cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor && /usr/bin/cmake -E cmake_link_script CMakeFiles/decompress_perf.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/decompress_perf.dir/decompress_perf.cpp.o -o decompress_perf ../../dbms/libclickhouse_common_io.a /usr/lib/aarch64-linux-gnu/liblz4.so ../../libs/libcommon/libcommon.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so -pthread ../../dbms/src/Common/StringUtils/libstring_utils.a ../../libs/libwidechar_width/libwidechar_width.a /usr/lib/aarch64-linux-gnu/libzstd.so /usr/lib/aarch64-linux-gnu/libdouble-conversion.so ../../libs/libpocoext/libpocoext.a /usr/lib/libPocoNet.so /usr/lib/libPocoUtil.so /usr/lib/libPocoFoundation.so /usr/lib/aarch64-linux-gnu/libre2.so ../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/aarch64-linux-gnu/libboost_system.so ../../libs/libcommon/libapple_rt.a -ldl /usr/lib/aarch64-linux-gnu/libcpuinfo.so /usr/lib/libPocoData.so /usr/lib/libPocoNetSSL.so /usr/lib/aarch64-linux-gnu/libssl.so /usr/lib/aarch64-linux-gnu/libcrypto.so /usr/lib/libPocoCrypto.so make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 18%] Built target decompress_perf make -f dbms/programs/compressor/CMakeFiles/clickhouse-compressor-lib.dir/build.make dbms/programs/compressor/CMakeFiles/clickhouse-compressor-lib.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/programs/compressor /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/programs/compressor /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/programs/compressor/CMakeFiles/clickhouse-compressor-lib.dir/DependInfo.cmake --color= Scanning dependencies of target clickhouse-compressor-lib make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/programs/compressor/CMakeFiles/clickhouse-compressor-lib.dir/build.make dbms/programs/compressor/CMakeFiles/clickhouse-compressor-lib.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 18%] Building CXX object dbms/programs/compressor/CMakeFiles/clickhouse-compressor-lib.dir/Compressor.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/programs/compressor && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse-compressor-lib.dir/Compressor.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/programs/compressor/Compressor.cpp [ 18%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/addDays.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/addDays.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/addDays.cpp [ 18%] Building CXX object dbms/src/Common/ZooKeeper/CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeperNodeCache.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/ZooKeeper && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeperNodeCache.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Common/ZooKeeper/ZooKeeperNodeCache.cpp [ 18%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/addHours.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/addHours.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/addHours.cpp [ 18%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/addMinutes.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/addMinutes.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/addMinutes.cpp [ 18%] Linking CXX static library libclickhouse_common_zookeeper.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/ZooKeeper && /usr/bin/cmake -P CMakeFiles/clickhouse_common_zookeeper.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/ZooKeeper && /usr/bin/cmake -E cmake_link_script CMakeFiles/clickhouse_common_zookeeper.dir/link.txt --verbose=1 /usr/bin/ar qc libclickhouse_common_zookeeper.a CMakeFiles/clickhouse_common_zookeeper.dir/IKeeper.cpp.o CMakeFiles/clickhouse_common_zookeeper.dir/Lock.cpp.o CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeper.cpp.o CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeperHolder.cpp.o CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeperImpl.cpp.o CMakeFiles/clickhouse_common_zookeeper.dir/ZooKeeperNodeCache.cpp.o /usr/bin/ranlib libclickhouse_common_zookeeper.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 18%] Built target clickhouse_common_zookeeper make -f utils/compressor/CMakeFiles/mutator.dir/build.make utils/compressor/CMakeFiles/mutator.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/utils/compressor /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor/CMakeFiles/mutator.dir/DependInfo.cmake --color= Scanning dependencies of target mutator make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f utils/compressor/CMakeFiles/mutator.dir/build.make utils/compressor/CMakeFiles/mutator.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 18%] Building CXX object utils/compressor/CMakeFiles/mutator.dir/mutator.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/mutator.dir/mutator.cpp.o -c /build/clickhouse-18.16.1+ds/utils/compressor/mutator.cpp [ 18%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/addMonths.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/addMonths.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/addMonths.cpp [ 18%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/addSeconds.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/addSeconds.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/addSeconds.cpp [ 18%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/addWeeks.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/addWeeks.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/addWeeks.cpp [ 18%] Linking CXX executable mutator cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/compressor && /usr/bin/cmake -E cmake_link_script CMakeFiles/mutator.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/mutator.dir/mutator.cpp.o -o mutator ../../dbms/libclickhouse_common_io.a ../../libs/libcommon/libcommon.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so -pthread ../../dbms/src/Common/StringUtils/libstring_utils.a ../../libs/libwidechar_width/libwidechar_width.a /usr/lib/aarch64-linux-gnu/liblz4.so /usr/lib/aarch64-linux-gnu/libzstd.so /usr/lib/aarch64-linux-gnu/libdouble-conversion.so ../../libs/libpocoext/libpocoext.a /usr/lib/libPocoNet.so /usr/lib/libPocoUtil.so /usr/lib/libPocoFoundation.so /usr/lib/aarch64-linux-gnu/libre2.so ../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/aarch64-linux-gnu/libboost_system.so ../../libs/libcommon/libapple_rt.a -ldl /usr/lib/aarch64-linux-gnu/libcpuinfo.so /usr/lib/libPocoData.so /usr/lib/libPocoNetSSL.so /usr/lib/aarch64-linux-gnu/libssl.so /usr/lib/aarch64-linux-gnu/libcrypto.so /usr/lib/libPocoCrypto.so [ 18%] Linking CXX static library libclickhouse-compressor-lib.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/programs/compressor && /usr/bin/cmake -P CMakeFiles/clickhouse-compressor-lib.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/programs/compressor && /usr/bin/cmake -E cmake_link_script CMakeFiles/clickhouse-compressor-lib.dir/link.txt --verbose=1 /usr/bin/ar qc libclickhouse-compressor-lib.a CMakeFiles/clickhouse-compressor-lib.dir/Compressor.cpp.o /usr/bin/ranlib libclickhouse-compressor-lib.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 18%] Built target clickhouse-compressor-lib make -f utils/iotest/CMakeFiles/iotest_nonblock.dir/build.make utils/iotest/CMakeFiles/iotest_nonblock.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/utils/iotest /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest/CMakeFiles/iotest_nonblock.dir/DependInfo.cmake --color= make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 18%] Built target mutator make -f utils/iotest/CMakeFiles/iotest.dir/build.make utils/iotest/CMakeFiles/iotest.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/utils/iotest /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest/CMakeFiles/iotest.dir/DependInfo.cmake --color= Scanning dependencies of target iotest_nonblock make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f utils/iotest/CMakeFiles/iotest_nonblock.dir/build.make utils/iotest/CMakeFiles/iotest_nonblock.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' Scanning dependencies of target iotest make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f utils/iotest/CMakeFiles/iotest.dir/build.make utils/iotest/CMakeFiles/iotest.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 18%] Building CXX object utils/iotest/CMakeFiles/iotest.dir/iotest.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/iotest.dir/iotest.cpp.o -c /build/clickhouse-18.16.1+ds/utils/iotest/iotest.cpp [ 19%] Building CXX object utils/iotest/CMakeFiles/iotest_nonblock.dir/iotest_nonblock.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/iotest_nonblock.dir/iotest_nonblock.cpp.o -c /build/clickhouse-18.16.1+ds/utils/iotest/iotest_nonblock.cpp [ 19%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/addYears.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/addYears.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/addYears.cpp [ 19%] Linking CXX executable iotest_nonblock cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest && /usr/bin/cmake -E cmake_link_script CMakeFiles/iotest_nonblock.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/iotest_nonblock.dir/iotest_nonblock.cpp.o -o iotest_nonblock ../../dbms/libclickhouse_common_io.a ../../libs/libcommon/libcommon.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so -pthread ../../dbms/src/Common/StringUtils/libstring_utils.a ../../libs/libwidechar_width/libwidechar_width.a /usr/lib/aarch64-linux-gnu/liblz4.so /usr/lib/aarch64-linux-gnu/libzstd.so /usr/lib/aarch64-linux-gnu/libdouble-conversion.so ../../libs/libpocoext/libpocoext.a /usr/lib/libPocoNet.so /usr/lib/libPocoUtil.so /usr/lib/libPocoFoundation.so /usr/lib/aarch64-linux-gnu/libre2.so ../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/aarch64-linux-gnu/libboost_system.so ../../libs/libcommon/libapple_rt.a -ldl /usr/lib/aarch64-linux-gnu/libcpuinfo.so /usr/lib/libPocoData.so /usr/lib/libPocoNetSSL.so /usr/lib/aarch64-linux-gnu/libssl.so /usr/lib/aarch64-linux-gnu/libcrypto.so /usr/lib/libPocoCrypto.so [ 19%] Linking CXX executable iotest cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest && /usr/bin/cmake -E cmake_link_script CMakeFiles/iotest.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/iotest.dir/iotest.cpp.o -o iotest ../../dbms/libclickhouse_common_io.a ../../libs/libcommon/libcommon.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so -pthread ../../dbms/src/Common/StringUtils/libstring_utils.a ../../libs/libwidechar_width/libwidechar_width.a /usr/lib/aarch64-linux-gnu/liblz4.so /usr/lib/aarch64-linux-gnu/libzstd.so /usr/lib/aarch64-linux-gnu/libdouble-conversion.so ../../libs/libpocoext/libpocoext.a /usr/lib/libPocoNet.so /usr/lib/libPocoUtil.so /usr/lib/libPocoFoundation.so /usr/lib/aarch64-linux-gnu/libre2.so ../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/aarch64-linux-gnu/libboost_system.so ../../libs/libcommon/libapple_rt.a -ldl /usr/lib/aarch64-linux-gnu/libcpuinfo.so /usr/lib/libPocoData.so /usr/lib/libPocoNetSSL.so /usr/lib/aarch64-linux-gnu/libssl.so /usr/lib/aarch64-linux-gnu/libcrypto.so /usr/lib/libPocoCrypto.so [ 19%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/appendTrailingCharIfAbsent.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/appendTrailingCharIfAbsent.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/appendTrailingCharIfAbsent.cpp make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 19%] Built target iotest_nonblock make -f utils/iotest/CMakeFiles/iotest_aio.dir/build.make utils/iotest/CMakeFiles/iotest_aio.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/utils/iotest /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest/CMakeFiles/iotest_aio.dir/DependInfo.cmake --color= [ 19%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/array.cpp.o make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/array.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/array.cpp Scanning dependencies of target iotest_aio make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f utils/iotest/CMakeFiles/iotest_aio.dir/build.make utils/iotest/CMakeFiles/iotest_aio.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 19%] Built target iotest make -f utils/corrector_utf8/CMakeFiles/corrector_utf8.dir/build.make utils/corrector_utf8/CMakeFiles/corrector_utf8.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/utils/corrector_utf8 /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/corrector_utf8 /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/corrector_utf8/CMakeFiles/corrector_utf8.dir/DependInfo.cmake --color= [ 19%] Building CXX object utils/iotest/CMakeFiles/iotest_aio.dir/iotest_aio.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/iotest_aio.dir/iotest_aio.cpp.o -c /build/clickhouse-18.16.1+ds/utils/iotest/iotest_aio.cpp Scanning dependencies of target corrector_utf8 make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f utils/corrector_utf8/CMakeFiles/corrector_utf8.dir/build.make utils/corrector_utf8/CMakeFiles/corrector_utf8.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 19%] Building CXX object utils/corrector_utf8/CMakeFiles/corrector_utf8.dir/corrector_utf8.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/corrector_utf8 && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/corrector_utf8.dir/corrector_utf8.cpp.o -c /build/clickhouse-18.16.1+ds/utils/corrector_utf8/corrector_utf8.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayAll.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayAll.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayAll.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayConcat.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayConcat.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayConcat.cpp [ 20%] Linking CXX executable corrector_utf8 cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/corrector_utf8 && /usr/bin/cmake -E cmake_link_script CMakeFiles/corrector_utf8.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/corrector_utf8.dir/corrector_utf8.cpp.o -o corrector_utf8 ../../dbms/libclickhouse_common_io.a ../../libs/libcommon/libcommon.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so -pthread ../../dbms/src/Common/StringUtils/libstring_utils.a ../../libs/libwidechar_width/libwidechar_width.a /usr/lib/aarch64-linux-gnu/liblz4.so /usr/lib/aarch64-linux-gnu/libzstd.so /usr/lib/aarch64-linux-gnu/libdouble-conversion.so ../../libs/libpocoext/libpocoext.a /usr/lib/libPocoNet.so /usr/lib/libPocoUtil.so /usr/lib/libPocoFoundation.so /usr/lib/aarch64-linux-gnu/libre2.so ../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/aarch64-linux-gnu/libboost_system.so ../../libs/libcommon/libapple_rt.a -ldl /usr/lib/aarch64-linux-gnu/libcpuinfo.so /usr/lib/libPocoData.so /usr/lib/libPocoNetSSL.so /usr/lib/aarch64-linux-gnu/libssl.so /usr/lib/aarch64-linux-gnu/libcrypto.so /usr/lib/libPocoCrypto.so make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 20%] Built target corrector_utf8 make -f utils/zookeeper-cli/CMakeFiles/clickhouse-zookeeper-cli.dir/build.make utils/zookeeper-cli/CMakeFiles/clickhouse-zookeeper-cli.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/utils/zookeeper-cli /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-cli /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-cli/CMakeFiles/clickhouse-zookeeper-cli.dir/DependInfo.cmake --color= Scanning dependencies of target clickhouse-zookeeper-cli make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f utils/zookeeper-cli/CMakeFiles/clickhouse-zookeeper-cli.dir/build.make utils/zookeeper-cli/CMakeFiles/clickhouse-zookeeper-cli.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 20%] Building CXX object utils/zookeeper-cli/CMakeFiles/clickhouse-zookeeper-cli.dir/zookeeper-cli.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-cli && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/clickhouse-zookeeper-cli.dir/zookeeper-cli.cpp.o -c /build/clickhouse-18.16.1+ds/utils/zookeeper-cli/zookeeper-cli.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayCount.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayCount.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayCount.cpp [ 20%] Linking CXX executable iotest_aio cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/iotest && /usr/bin/cmake -E cmake_link_script CMakeFiles/iotest_aio.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/iotest_aio.dir/iotest_aio.cpp.o -o iotest_aio ../../dbms/libclickhouse_common_io.a ../../libs/libcommon/libcommon.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so -pthread ../../dbms/src/Common/StringUtils/libstring_utils.a ../../libs/libwidechar_width/libwidechar_width.a /usr/lib/aarch64-linux-gnu/liblz4.so /usr/lib/aarch64-linux-gnu/libzstd.so /usr/lib/aarch64-linux-gnu/libdouble-conversion.so ../../libs/libpocoext/libpocoext.a /usr/lib/libPocoNet.so /usr/lib/libPocoUtil.so /usr/lib/libPocoFoundation.so /usr/lib/aarch64-linux-gnu/libre2.so ../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/aarch64-linux-gnu/libboost_system.so ../../libs/libcommon/libapple_rt.a -ldl /usr/lib/aarch64-linux-gnu/libcpuinfo.so /usr/lib/libPocoData.so /usr/lib/libPocoNetSSL.so /usr/lib/aarch64-linux-gnu/libssl.so /usr/lib/aarch64-linux-gnu/libcrypto.so /usr/lib/libPocoCrypto.so make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 20%] Built target iotest_aio make -f utils/zookeeper-dump-tree/CMakeFiles/zookeeper-dump-tree.dir/build.make utils/zookeeper-dump-tree/CMakeFiles/zookeeper-dump-tree.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/utils/zookeeper-dump-tree /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-dump-tree /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-dump-tree/CMakeFiles/zookeeper-dump-tree.dir/DependInfo.cmake --color= Scanning dependencies of target zookeeper-dump-tree make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f utils/zookeeper-dump-tree/CMakeFiles/zookeeper-dump-tree.dir/build.make utils/zookeeper-dump-tree/CMakeFiles/zookeeper-dump-tree.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 20%] Building CXX object utils/zookeeper-dump-tree/CMakeFiles/zookeeper-dump-tree.dir/main.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-dump-tree && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/zookeeper-dump-tree.dir/main.cpp.o -c /build/clickhouse-18.16.1+ds/utils/zookeeper-dump-tree/main.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayCumSum.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayCumSum.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayCumSum.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayCumSumNonNegative.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayCumSumNonNegative.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayCumSumNonNegative.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayDifference.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayDifference.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayDifference.cpp [ 20%] Linking CXX executable clickhouse-zookeeper-cli cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-cli && /usr/bin/cmake -E cmake_link_script CMakeFiles/clickhouse-zookeeper-cli.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/clickhouse-zookeeper-cli.dir/zookeeper-cli.cpp.o -o clickhouse-zookeeper-cli ../../dbms/src/Common/ZooKeeper/libclickhouse_common_zookeeper.a /usr/lib/aarch64-linux-gnu/libreadline.so -ltermcap ../../dbms/libclickhouse_common_io.a ../../libs/libwidechar_width/libwidechar_width.a /usr/lib/aarch64-linux-gnu/liblz4.so /usr/lib/aarch64-linux-gnu/libzstd.so /usr/lib/aarch64-linux-gnu/libdouble-conversion.so /usr/lib/libPocoNet.so /usr/lib/aarch64-linux-gnu/libre2.so /usr/lib/aarch64-linux-gnu/libz.so ../../libs/libcommon/libapple_rt.a -ldl /usr/lib/aarch64-linux-gnu/libcpuinfo.so /usr/lib/libPocoNetSSL.so /usr/lib/aarch64-linux-gnu/libssl.so /usr/lib/aarch64-linux-gnu/libcrypto.so /usr/lib/libPocoCrypto.so ../../libs/libcommon/libcommon.a ../../libs/libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread ../../dbms/src/Common/StringUtils/libstring_utils.a /usr/lib/libPocoUtil.so make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 20%] Built target clickhouse-zookeeper-cli make -f utils/zookeeper-remove-by-list/CMakeFiles/zookeeper-remove-by-list.dir/build.make utils/zookeeper-remove-by-list/CMakeFiles/zookeeper-remove-by-list.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/utils/zookeeper-remove-by-list /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-remove-by-list /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-remove-by-list/CMakeFiles/zookeeper-remove-by-list.dir/DependInfo.cmake --color= Scanning dependencies of target zookeeper-remove-by-list make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f utils/zookeeper-remove-by-list/CMakeFiles/zookeeper-remove-by-list.dir/build.make utils/zookeeper-remove-by-list/CMakeFiles/zookeeper-remove-by-list.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 20%] Building CXX object utils/zookeeper-remove-by-list/CMakeFiles/zookeeper-remove-by-list.dir/main.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-remove-by-list && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -fPIE -std=c++17 -o CMakeFiles/zookeeper-remove-by-list.dir/main.cpp.o -c /build/clickhouse-18.16.1+ds/utils/zookeeper-remove-by-list/main.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayDistinct.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayDistinct.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayDistinct.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayElement.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayElement.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayElement.cpp [ 20%] Linking CXX executable zookeeper-dump-tree cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-dump-tree && /usr/bin/cmake -E cmake_link_script CMakeFiles/zookeeper-dump-tree.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/zookeeper-dump-tree.dir/main.cpp.o -o zookeeper-dump-tree ../../dbms/src/Common/ZooKeeper/libclickhouse_common_zookeeper.a ../../dbms/libclickhouse_common_io.a /usr/lib/aarch64-linux-gnu/libboost_program_options.so ../../libs/libwidechar_width/libwidechar_width.a /usr/lib/aarch64-linux-gnu/liblz4.so /usr/lib/aarch64-linux-gnu/libzstd.so /usr/lib/aarch64-linux-gnu/libdouble-conversion.so /usr/lib/libPocoNet.so /usr/lib/aarch64-linux-gnu/libre2.so /usr/lib/aarch64-linux-gnu/libz.so ../../libs/libcommon/libapple_rt.a -ldl /usr/lib/aarch64-linux-gnu/libcpuinfo.so /usr/lib/libPocoNetSSL.so /usr/lib/aarch64-linux-gnu/libssl.so /usr/lib/aarch64-linux-gnu/libcrypto.so /usr/lib/libPocoCrypto.so ../../libs/libcommon/libcommon.a ../../libs/libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread ../../dbms/src/Common/StringUtils/libstring_utils.a /usr/lib/libPocoUtil.so [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayEnumerate.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayEnumerate.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayEnumerate.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayEnumerateDense.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayEnumerateDense.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayEnumerateDense.cpp make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 20%] Built target zookeeper-dump-tree make -f dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/build.make dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/DependInfo.cmake --color= Scanning dependencies of target clickhouse_dictionaries make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/build.make dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 20%] Building CXX object dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/CacheDictionary.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/contrib/libbtrie/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries.dir/CacheDictionary.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/CacheDictionary.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayEnumerateUniq.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayEnumerateUniq.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayEnumerateUniq.cpp [ 20%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayExists.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayExists.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayExists.cpp [ 20%] Linking CXX executable zookeeper-remove-by-list cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/utils/zookeeper-remove-by-list && /usr/bin/cmake -E cmake_link_script CMakeFiles/zookeeper-remove-by-list.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -O2 -g -DNDEBUG -O3 -Wl,-z,relro -fuse-ld=gold CMakeFiles/zookeeper-remove-by-list.dir/main.cpp.o -o zookeeper-remove-by-list ../../dbms/src/Common/ZooKeeper/libclickhouse_common_zookeeper.a /usr/lib/aarch64-linux-gnu/libboost_program_options.so ../../dbms/libclickhouse_common_io.a ../../libs/libwidechar_width/libwidechar_width.a /usr/lib/aarch64-linux-gnu/liblz4.so /usr/lib/aarch64-linux-gnu/libzstd.so /usr/lib/aarch64-linux-gnu/libdouble-conversion.so /usr/lib/libPocoNet.so /usr/lib/aarch64-linux-gnu/libre2.so /usr/lib/aarch64-linux-gnu/libz.so ../../libs/libcommon/libapple_rt.a -ldl /usr/lib/aarch64-linux-gnu/libcpuinfo.so /usr/lib/libPocoNetSSL.so /usr/lib/aarch64-linux-gnu/libssl.so /usr/lib/aarch64-linux-gnu/libcrypto.so /usr/lib/libPocoCrypto.so ../../libs/libcommon/libcommon.a ../../libs/libpocoext/libpocoext.a /usr/lib/libPocoData.so /usr/lib/libPocoFoundation.so ../../contrib/cityhash102/libcityhash.a /usr/lib/aarch64-linux-gnu/libcctz.so /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /usr/lib/aarch64-linux-gnu/libboost_system.so -pthread ../../dbms/src/Common/StringUtils/libstring_utils.a /usr/lib/libPocoUtil.so make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 20%] Built target zookeeper-remove-by-list make -f dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/build.make dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/Embedded /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/DependInfo.cmake --color= Scanning dependencies of target clickhouse_dictionaries_embedded make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/build.make dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 21%] Building CXX object dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/GeoDictionariesLoader.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries_embedded.dir/GeoDictionariesLoader.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/Embedded/GeoDictionariesLoader.cpp [ 21%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayFilter.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayFilter.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayFilter.cpp [ 21%] Building CXX object dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/RegionsHierarchies.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries_embedded.dir/RegionsHierarchies.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/Embedded/RegionsHierarchies.cpp [ 21%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayFirst.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayFirst.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayFirst.cpp [ 21%] Building CXX object dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/RegionsHierarchy.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries_embedded.dir/RegionsHierarchy.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/Embedded/RegionsHierarchy.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayFirstIndex.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayFirstIndex.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayFirstIndex.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayIntersect.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayIntersect.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayIntersect.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayJoin.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayJoin.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayJoin.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayMap.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayMap.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayMap.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayPopBack.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayPopBack.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayPopBack.cpp [ 22%] Building CXX object dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/RegionsNames.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries_embedded.dir/RegionsNames.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/Embedded/RegionsNames.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayPopFront.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayPopFront.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayPopFront.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayPushBack.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayPushBack.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayPushBack.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayPushFront.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayPushFront.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayPushFront.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayReduce.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayReduce.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayReduce.cpp [ 22%] Building CXX object dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/TechDataHierarchy.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries_embedded.dir/TechDataHierarchy.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/Embedded/TechDataHierarchy.cpp [ 22%] Building CXX object dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/HierarchiesProvider.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/HierarchiesProvider.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/Embedded/GeodataProviders/HierarchiesProvider.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayResize.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayResize.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayResize.cpp [ 22%] Building CXX object dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/HierarchyFormatReader.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/HierarchyFormatReader.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/Embedded/GeodataProviders/HierarchyFormatReader.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayReverse.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayReverse.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayReverse.cpp [ 22%] Building CXX object dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/NamesFormatReader.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/NamesFormatReader.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/Embedded/GeodataProviders/NamesFormatReader.cpp [ 22%] Building CXX object dbms/src/Dictionaries/Embedded/CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/NamesProvider.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/NamesProvider.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/Embedded/GeodataProviders/NamesProvider.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arraySlice.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arraySlice.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arraySlice.cpp [ 22%] Linking CXX static library libclickhouse_dictionaries_embedded.a cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/cmake -P CMakeFiles/clickhouse_dictionaries_embedded.dir/cmake_clean_target.cmake cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries/Embedded && /usr/bin/cmake -E cmake_link_script CMakeFiles/clickhouse_dictionaries_embedded.dir/link.txt --verbose=1 /usr/bin/ar qc libclickhouse_dictionaries_embedded.a CMakeFiles/clickhouse_dictionaries_embedded.dir/GeoDictionariesLoader.cpp.o CMakeFiles/clickhouse_dictionaries_embedded.dir/RegionsHierarchies.cpp.o CMakeFiles/clickhouse_dictionaries_embedded.dir/RegionsHierarchy.cpp.o CMakeFiles/clickhouse_dictionaries_embedded.dir/RegionsNames.cpp.o CMakeFiles/clickhouse_dictionaries_embedded.dir/TechDataHierarchy.cpp.o CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/HierarchiesProvider.cpp.o CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/HierarchyFormatReader.cpp.o CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/NamesFormatReader.cpp.o CMakeFiles/clickhouse_dictionaries_embedded.dir/GeodataProviders/NamesProvider.cpp.o /usr/bin/ranlib libclickhouse_dictionaries_embedded.a make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 22%] Built target clickhouse_dictionaries_embedded make -f dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/build.make dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/depend make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/clickhouse-18.16.1+ds /build/clickhouse-18.16.1+ds/dbms/src/Storages/System /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Storages/System /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/DependInfo.cmake --color= Scanning dependencies of target clickhouse_storages_system make[3]: Leaving directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' make -f dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/build.make dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/build make[3]: Entering directory '/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu' [ 22%] Building CXX object dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/StorageSystemAggregateFunctionCombinators.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Storages/System && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_storages_system.dir/StorageSystemAggregateFunctionCombinators.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Storages/System/StorageSystemAggregateFunctionCombinators.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arraySort.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arraySort.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arraySort.cpp [ 22%] Building CXX object dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/ClickHouseDictionarySource.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/contrib/libbtrie/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries.dir/ClickHouseDictionarySource.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/ClickHouseDictionarySource.cpp [ 22%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arraySum.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arraySum.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arraySum.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/arrayUniq.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/arrayUniq.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/arrayUniq.cpp [ 23%] Building CXX object dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/StorageSystemAsynchronousMetrics.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Storages/System && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_storages_system.dir/StorageSystemAsynchronousMetrics.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Storages/System/StorageSystemAsynchronousMetrics.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/asin.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/asin.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/asin.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/assumeNotNull.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/assumeNotNull.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/assumeNotNull.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/atan.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/atan.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/atan.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bar.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bar.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bar.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/base64Decode.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/base64Decode.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/base64Decode.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/base64Encode.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/base64Encode.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/base64Encode.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitAnd.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitAnd.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitAnd.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitNot.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitNot.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitNot.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitOr.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitOr.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitOr.cpp [ 23%] Building CXX object dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/ComplexKeyCacheDictionary.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/contrib/libbtrie/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries.dir/ComplexKeyCacheDictionary.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/ComplexKeyCacheDictionary.cpp [ 23%] Building CXX object dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/StorageSystemBuildOptions.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Storages/System && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_storages_system.dir/StorageSystemBuildOptions.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Storages/System/StorageSystemBuildOptions.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitRotateLeft.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitRotateLeft.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitRotateLeft.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitRotateRight.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitRotateRight.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitRotateRight.cpp [ 23%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitShiftLeft.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitShiftLeft.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitShiftLeft.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitShiftRight.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitShiftRight.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitShiftRight.cpp [ 24%] Building CXX object dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/StorageSystemClusters.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Storages/System && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_storages_system.dir/StorageSystemClusters.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Storages/System/StorageSystemClusters.cpp during RTL pass: expand In file included from /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitRotateLeft.cpp:2: /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h: In static member function 'static void DB::BinaryOperationImplBase::vector_constant(DB::PaddedPODArray&, B, DB::PaddedPODArray&) [with A = unsigned char; B = long unsigned int; Op = DB::BitRotateLeftImpl; ResultType_ = long unsigned int]': /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h:67:13: internal compiler error: in expand_shift_1, at expmed.c:2631 c[i] = Op::template apply(a[i], b); ^ Please submit a full bug report, with preprocessed source if appropriate. See for instructions. during RTL pass: expand In file included from /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitRotateRight.cpp:2: /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h: In static member function 'static void DB::BinaryOperationImplBase::vector_constant(DB::PaddedPODArray&, B, DB::PaddedPODArray&) [with A = unsigned char; B = long unsigned int; Op = DB::BitRotateRightImpl; ResultType_ = long unsigned int]': /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h:67:13: internal compiler error: in expand_shift_1, at expmed.c:2631 c[i] = Op::template apply(a[i], b); ^ Please submit a full bug report, with preprocessed source if appropriate. See for instructions. [ 24%] Building CXX object dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/StorageSystemCollations.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Storages/System && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_storages_system.dir/StorageSystemCollations.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Storages/System/StorageSystemCollations.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitTest.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitTest.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitTest.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitTestAll.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitTestAll.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitTestAll.cpp [ 24%] Building CXX object dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/ComplexKeyCacheDictionary_createAttributeWithType.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/contrib/libbtrie/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries.dir/ComplexKeyCacheDictionary_createAttributeWithType.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/ComplexKeyCacheDictionary_createAttributeWithType.cpp [ 24%] Building CXX object dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/StorageSystemColumns.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Storages/System && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_storages_system.dir/StorageSystemColumns.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Storages/System/StorageSystemColumns.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitTestAny.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitTestAny.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitTestAny.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/bitXor.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/bitXor.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitXor.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/blockNumber.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/blockNumber.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/blockNumber.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/blockSize.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/blockSize.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/blockSize.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/caseWithExpression.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/caseWithExpression.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/caseWithExpression.cpp [ 24%] Building CXX object dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/ComplexKeyCacheDictionary_setAttributeValue.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/contrib/libbtrie/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries.dir/ComplexKeyCacheDictionary_setAttributeValue.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/ComplexKeyCacheDictionary_setAttributeValue.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/cbrt.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/cbrt.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/cbrt.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/coalesce.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/coalesce.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/coalesce.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/concat.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/concat.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/concat.cpp [ 24%] Building CXX object dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/ComplexKeyCacheDictionary_setDefaultAttributeValue.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/contrib/libbtrie/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries.dir/ComplexKeyCacheDictionary_setDefaultAttributeValue.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/ComplexKeyCacheDictionary_setDefaultAttributeValue.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/convertCharset.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/convertCharset.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/convertCharset.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/cos.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/cos.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/cos.cpp [ 24%] Building CXX object dbms/src/Storages/System/CMakeFiles/clickhouse_storages_system.dir/StorageSystemContributors.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Storages/System && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_storages_system.dir/StorageSystemContributors.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Storages/System/StorageSystemContributors.cpp [ 24%] Building CXX object dbms/src/Dictionaries/CMakeFiles/clickhouse_dictionaries.dir/ComplexKeyHashedDictionary.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Dictionaries && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/dbms/src -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -I/build/clickhouse-18.16.1+ds/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -I/build/clickhouse-18.16.1+ds/libs/libpocoext/include -I/build/clickhouse-18.16.1+ds/libs/libmysqlxx/include -I/build/clickhouse-18.16.1+ds/contrib/libbtrie/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -std=c++17 -o CMakeFiles/clickhouse_dictionaries.dir/ComplexKeyHashedDictionary.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Dictionaries/ComplexKeyHashedDictionary.cpp [ 24%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/countEqual.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/countEqual.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/countEqual.cpp [ 25%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/currentDatabase.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/currentDatabase.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/currentDatabase.cpp [ 25%] Building CXX object dbms/src/Functions/CMakeFiles/clickhouse_functions.dir/cutFragment.cpp.o cd /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Functions && /usr/bin/c++ -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing -I/build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I/build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I/build/clickhouse-18.16.1+ds/contrib/cityhash102/include -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide -g -O2 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pipe -march=native -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -O2 -g -DNDEBUG -O3 -fPIC -fno-tree-loop-distribute-patterns -g0 -std=c++17 -o CMakeFiles/clickhouse_functions.dir/cutFragment.cpp.o -c /build/clickhouse-18.16.1+ds/dbms/src/Functions/cutFragment.cpp Preprocessed source stored into /tmp/ccCkud1y.out file, please attach this to your bugreport. === BEGIN GCC DUMP === 25082: // Target: aarch64-linux-gnu 25082: // Configured with: ../src/configure -v --with-pkgversion='Debian 8.3.0-6' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=aarch64-linux-gnu- --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-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --disable-libphobos --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu 25082: // Thread model: posix 25082: // gcc version 8.3.0 (Debian 8.3.0-6) 25082: // 25082: // during RTL pass: expand 25082: // In file included from /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitRotateLeft.cpp:2: 25082: // /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h: In static member function 'static void DB::BinaryOperationImplBase::vector_constant(DB::PaddedPODArray&, B, DB::PaddedPODArray&) [with A = unsigned char; B = long unsigned int; Op = DB::BitRotateLeftImpl; ResultType_ = long unsigned int]': 25082: // /build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h:67:13: internal compiler error: in expand_shift_1, at expmed.c:2631 25082: // c[i] = Op::template apply(a[i], b); 25082: // ^ 25082: // Please submit a full bug report, 25082: // with preprocessed source if appropriate. 25082: // See for instructions. 25082: 25082: // /usr/lib/gcc/aarch64-linux-gnu/8/cc1plus -quiet -I /build/clickhouse-18.16.1+ds/libs/consistent-hashing -I /build/clickhouse-18.16.1+ds/libs/consistent-hashing-sumbur -I /build/clickhouse-18.16.1+ds/contrib/murmurhash/include -I /build/clickhouse-18.16.1+ds/contrib/cityhash102/include -imultiarch aarch64-linux-gnu -D_GNU_SOURCE -D _FORTIFY_SOURCE=2 -D NDEBUG -isystem /build/clickhouse-18.16.1+ds/dbms/src -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src -isystem /build/clickhouse-18.16.1+ds/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/libs/libcommon/include -isystem /build/clickhouse-18.16.1+ds/contrib/libpcg-random/include -isystem /usr/include/metrohash -isystem /build/clickhouse-18.16.1+ds/contrib/libdivide /build/clickhouse-18.16.1+ds/dbms/src/Functions/bitRotateLeft.cpp -quiet -dumpbase bitRotateLeft.cpp -mlittle-endian -mabi=lp64 -march=armv8-a -auxbase-strip CMakeFiles/clickhouse_functions.dir/bitRotateLeft.cpp.o -g -g -g0 -O2 -O2 -O3 -Wformat=1 -Werror=format-security -Wdate-time -Wall -Wnon-virtual-dtor -Wextra -std=c++17 -ffile-prefix-map=/build/clickhouse-18.16.1+ds=. -fstack-protector-strong -fno-omit-frame-pointer -fPIC -fno-tree-loop-distribute-patterns -o - -frandom-seed=0 -fdump-noaddr 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/bitRotateLeft.cpp" 25082: # 1 "" 25082: # 1 "" 25082: # 1 "/usr/include/stdc-predef.h" 1 3 4 25082: # 1 "" 2 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/bitRotateLeft.cpp" 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionFactory.h" 1 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 1 3 4 25082: 25082: 25082: # 1 "/usr/include/c++/8/memory" 1 3 4 25082: # 46 "/usr/include/c++/8/memory" 3 4 25082: 25082: # 47 "/usr/include/c++/8/memory" 3 25082: # 62 "/usr/include/c++/8/memory" 3 25082: # 1 "/usr/include/c++/8/bits/stl_algobase.h" 1 3 25082: # 59 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++config.h" 1 3 25082: # 236 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++config.h" 3 25082: 25082: # 236 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++config.h" 3 25082: namespace std 25082: { 25082: typedef long unsigned int size_t; 25082: typedef long int ptrdiff_t; 25082: 25082: 25082: typedef decltype(nullptr) nullptr_t; 25082: 25082: } 25082: # 258 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++config.h" 3 25082: namespace std 25082: { 25082: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 25082: } 25082: namespace __gnu_cxx 25082: { 25082: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 25082: } 25082: # 508 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++config.h" 3 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/os_defines.h" 1 3 25082: # 39 "/usr/include/aarch64-linux-gnu/c++/8/bits/os_defines.h" 3 25082: # 1 "/usr/include/features.h" 1 3 4 25082: # 424 "/usr/include/features.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 1 3 4 25082: # 442 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 25082: # 443 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4 25082: # 444 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4 25082: # 425 "/usr/include/features.h" 2 3 4 25082: # 448 "/usr/include/features.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 1 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 25082: # 6 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/gnu/stubs-lp64.h" 1 3 4 25082: # 9 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4 25082: # 449 "/usr/include/features.h" 2 3 4 25082: # 40 "/usr/include/aarch64-linux-gnu/c++/8/bits/os_defines.h" 2 3 25082: # 509 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++config.h" 2 3 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/cpu_defines.h" 1 3 25082: # 512 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++config.h" 2 3 25082: # 60 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: # 1 "/usr/include/c++/8/bits/functexcept.h" 1 3 25082: # 40 "/usr/include/c++/8/bits/functexcept.h" 3 25082: # 1 "/usr/include/c++/8/bits/exception_defines.h" 1 3 25082: # 41 "/usr/include/c++/8/bits/functexcept.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: void 25082: __throw_bad_exception(void) __attribute__((__noreturn__)); 25082: 25082: 25082: void 25082: __throw_bad_alloc(void) __attribute__((__noreturn__)); 25082: 25082: 25082: void 25082: __throw_bad_cast(void) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_bad_typeid(void) __attribute__((__noreturn__)); 25082: 25082: 25082: void 25082: __throw_logic_error(const char*) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_domain_error(const char*) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_invalid_argument(const char*) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_length_error(const char*) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_out_of_range(const char*) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__)) 25082: __attribute__((__format__(__gnu_printf__, 1, 2))); 25082: 25082: void 25082: __throw_runtime_error(const char*) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_range_error(const char*) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_overflow_error(const char*) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_underflow_error(const char*) __attribute__((__noreturn__)); 25082: 25082: 25082: void 25082: __throw_ios_failure(const char*) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_system_error(int) __attribute__((__noreturn__)); 25082: 25082: void 25082: __throw_future_error(int) __attribute__((__noreturn__)); 25082: 25082: 25082: void 25082: __throw_bad_function_call() __attribute__((__noreturn__)); 25082: 25082: 25082: } 25082: # 61 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: # 1 "/usr/include/c++/8/bits/cpp_type_traits.h" 1 3 25082: # 35 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 25082: 25082: # 36 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 25082: # 67 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 25082: extern "C++" { 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: struct __true_type { }; 25082: struct __false_type { }; 25082: 25082: template 25082: struct __truth_type 25082: { typedef __false_type __type; }; 25082: 25082: template<> 25082: struct __truth_type 25082: { typedef __true_type __type; }; 25082: 25082: 25082: 25082: template 25082: struct __traitor 25082: { 25082: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; 25082: typedef typename __truth_type<__value>::__type __type; 25082: }; 25082: 25082: 25082: template 25082: struct __are_same 25082: { 25082: enum { __value = 0 }; 25082: typedef __false_type __type; 25082: }; 25082: 25082: template 25082: struct __are_same<_Tp, _Tp> 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: template 25082: struct __is_void 25082: { 25082: enum { __value = 0 }; 25082: typedef __false_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_void 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_integer 25082: { 25082: enum { __value = 0 }; 25082: typedef __false_type __type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_integer 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: # 278 "/usr/include/c++/8/bits/cpp_type_traits.h" 3 25082: template 25082: struct __is_floating 25082: { 25082: enum { __value = 0 }; 25082: typedef __false_type __type; 25082: }; 25082: 25082: 25082: template<> 25082: struct __is_floating 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_floating 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_floating 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_pointer 25082: { 25082: enum { __value = 0 }; 25082: typedef __false_type __type; 25082: }; 25082: 25082: template 25082: struct __is_pointer<_Tp*> 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_arithmetic 25082: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > 25082: { }; 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_scalar 25082: : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > 25082: { }; 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_char 25082: { 25082: enum { __value = 0 }; 25082: typedef __false_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_char 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: template<> 25082: struct __is_char 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: template 25082: struct __is_byte 25082: { 25082: enum { __value = 0 }; 25082: typedef __false_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_byte 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_byte 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template<> 25082: struct __is_byte 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: enum class byte : unsigned char; 25082: 25082: template<> 25082: struct __is_byte 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_move_iterator 25082: { 25082: enum { __value = 0 }; 25082: typedef __false_type __type; 25082: }; 25082: 25082: 25082: 25082: template 25082: inline _Iterator 25082: __miter_base(_Iterator __it) 25082: { return __it; } 25082: 25082: 25082: } 25082: } 25082: # 62 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: # 1 "/usr/include/c++/8/ext/type_traits.h" 1 3 25082: # 32 "/usr/include/c++/8/ext/type_traits.h" 3 25082: 25082: # 33 "/usr/include/c++/8/ext/type_traits.h" 3 25082: 25082: 25082: 25082: 25082: extern "C++" { 25082: 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: struct __enable_if 25082: { }; 25082: 25082: template 25082: struct __enable_if 25082: { typedef _Tp __type; }; 25082: 25082: 25082: 25082: template 25082: struct __conditional_type 25082: { typedef _Iftrue __type; }; 25082: 25082: template 25082: struct __conditional_type 25082: { typedef _Iffalse __type; }; 25082: 25082: 25082: 25082: template 25082: struct __add_unsigned 25082: { 25082: private: 25082: typedef __enable_if::__value, _Tp> __if_type; 25082: 25082: public: 25082: typedef typename __if_type::__type __type; 25082: }; 25082: 25082: template<> 25082: struct __add_unsigned 25082: { typedef unsigned char __type; }; 25082: 25082: template<> 25082: struct __add_unsigned 25082: { typedef unsigned char __type; }; 25082: 25082: template<> 25082: struct __add_unsigned 25082: { typedef unsigned short __type; }; 25082: 25082: template<> 25082: struct __add_unsigned 25082: { typedef unsigned int __type; }; 25082: 25082: template<> 25082: struct __add_unsigned 25082: { typedef unsigned long __type; }; 25082: 25082: template<> 25082: struct __add_unsigned 25082: { typedef unsigned long long __type; }; 25082: 25082: 25082: template<> 25082: struct __add_unsigned; 25082: 25082: template<> 25082: struct __add_unsigned; 25082: 25082: 25082: 25082: template 25082: struct __remove_unsigned 25082: { 25082: private: 25082: typedef __enable_if::__value, _Tp> __if_type; 25082: 25082: public: 25082: typedef typename __if_type::__type __type; 25082: }; 25082: 25082: template<> 25082: struct __remove_unsigned 25082: { typedef signed char __type; }; 25082: 25082: template<> 25082: struct __remove_unsigned 25082: { typedef signed char __type; }; 25082: 25082: template<> 25082: struct __remove_unsigned 25082: { typedef short __type; }; 25082: 25082: template<> 25082: struct __remove_unsigned 25082: { typedef int __type; }; 25082: 25082: template<> 25082: struct __remove_unsigned 25082: { typedef long __type; }; 25082: 25082: template<> 25082: struct __remove_unsigned 25082: { typedef long long __type; }; 25082: 25082: 25082: template<> 25082: struct __remove_unsigned; 25082: 25082: template<> 25082: struct __remove_unsigned; 25082: 25082: 25082: 25082: template 25082: inline bool 25082: __is_null_pointer(_Type* __ptr) 25082: { return __ptr == 0; } 25082: 25082: template 25082: inline bool 25082: __is_null_pointer(_Type) 25082: { return false; } 25082: 25082: 25082: inline bool 25082: __is_null_pointer(std::nullptr_t) 25082: { return true; } 25082: 25082: 25082: 25082: template::__value> 25082: struct __promote 25082: { typedef double __type; }; 25082: 25082: 25082: 25082: 25082: template 25082: struct __promote<_Tp, false> 25082: { }; 25082: 25082: template<> 25082: struct __promote 25082: { typedef long double __type; }; 25082: 25082: template<> 25082: struct __promote 25082: { typedef double __type; }; 25082: 25082: template<> 25082: struct __promote 25082: { typedef float __type; }; 25082: 25082: template::__type, 25082: typename _Up2 = typename __promote<_Up>::__type> 25082: struct __promote_2 25082: { 25082: typedef __typeof__(_Tp2() + _Up2()) __type; 25082: }; 25082: 25082: template::__type, 25082: typename _Up2 = typename __promote<_Up>::__type, 25082: typename _Vp2 = typename __promote<_Vp>::__type> 25082: struct __promote_3 25082: { 25082: typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; 25082: }; 25082: 25082: template::__type, 25082: typename _Up2 = typename __promote<_Up>::__type, 25082: typename _Vp2 = typename __promote<_Vp>::__type, 25082: typename _Wp2 = typename __promote<_Wp>::__type> 25082: struct __promote_4 25082: { 25082: typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; 25082: }; 25082: 25082: 25082: } 25082: } 25082: # 63 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: # 1 "/usr/include/c++/8/ext/numeric_traits.h" 1 3 25082: # 32 "/usr/include/c++/8/ext/numeric_traits.h" 3 25082: 25082: # 33 "/usr/include/c++/8/ext/numeric_traits.h" 3 25082: 25082: 25082: 25082: 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 54 "/usr/include/c++/8/ext/numeric_traits.h" 3 25082: template 25082: struct __numeric_traits_integer 25082: { 25082: 25082: static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0); 25082: static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0); 25082: 25082: 25082: 25082: static const bool __is_signed = ((_Value)(-1) < 0); 25082: static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0)); 25082: }; 25082: 25082: template 25082: const _Value __numeric_traits_integer<_Value>::__min; 25082: 25082: template 25082: const _Value __numeric_traits_integer<_Value>::__max; 25082: 25082: template 25082: const bool __numeric_traits_integer<_Value>::__is_signed; 25082: 25082: template 25082: const int __numeric_traits_integer<_Value>::__digits; 25082: # 99 "/usr/include/c++/8/ext/numeric_traits.h" 3 25082: template 25082: struct __numeric_traits_floating 25082: { 25082: 25082: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 113) * 643L / 2136); 25082: 25082: 25082: static const bool __is_signed = true; 25082: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 33); 25082: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932); 25082: }; 25082: 25082: template 25082: const int __numeric_traits_floating<_Value>::__max_digits10; 25082: 25082: template 25082: const bool __numeric_traits_floating<_Value>::__is_signed; 25082: 25082: template 25082: const int __numeric_traits_floating<_Value>::__digits10; 25082: 25082: template 25082: const int __numeric_traits_floating<_Value>::__max_exponent10; 25082: 25082: template 25082: struct __numeric_traits 25082: : public __conditional_type::__value, 25082: __numeric_traits_integer<_Value>, 25082: __numeric_traits_floating<_Value> >::__type 25082: { }; 25082: 25082: 25082: } 25082: # 64 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_pair.h" 1 3 25082: # 59 "/usr/include/c++/8/bits/stl_pair.h" 3 25082: # 1 "/usr/include/c++/8/bits/move.h" 1 3 25082: # 34 "/usr/include/c++/8/bits/move.h" 3 25082: # 1 "/usr/include/c++/8/bits/concept_check.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/concept_check.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/concept_check.h" 3 25082: # 35 "/usr/include/c++/8/bits/move.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr _Tp* 25082: __addressof(_Tp& __r) noexcept 25082: { return __builtin_addressof(__r); } 25082: 25082: 25082: 25082: 25082: } 25082: 25082: # 1 "/usr/include/c++/8/type_traits" 1 3 25082: # 32 "/usr/include/c++/8/type_traits" 3 25082: 25082: # 33 "/usr/include/c++/8/type_traits" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 56 "/usr/include/c++/8/type_traits" 3 25082: template 25082: struct integral_constant 25082: { 25082: static constexpr _Tp value = __v; 25082: typedef _Tp value_type; 25082: typedef integral_constant<_Tp, __v> type; 25082: constexpr operator value_type() const noexcept { return value; } 25082: 25082: 25082: 25082: 25082: constexpr value_type operator()() const noexcept { return value; } 25082: 25082: }; 25082: 25082: template 25082: constexpr _Tp integral_constant<_Tp, __v>::value; 25082: 25082: 25082: typedef integral_constant true_type; 25082: 25082: 25082: typedef integral_constant false_type; 25082: 25082: template 25082: using __bool_constant = integral_constant; 25082: 25082: 25082: 25082: template 25082: using bool_constant = integral_constant; 25082: 25082: 25082: 25082: 25082: template 25082: struct conditional; 25082: 25082: template 25082: struct __or_; 25082: 25082: template<> 25082: struct __or_<> 25082: : public false_type 25082: { }; 25082: 25082: template 25082: struct __or_<_B1> 25082: : public _B1 25082: { }; 25082: 25082: template 25082: struct __or_<_B1, _B2> 25082: : public conditional<_B1::value, _B1, _B2>::type 25082: { }; 25082: 25082: template 25082: struct __or_<_B1, _B2, _B3, _Bn...> 25082: : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type 25082: { }; 25082: 25082: template 25082: struct __and_; 25082: 25082: template<> 25082: struct __and_<> 25082: : public true_type 25082: { }; 25082: 25082: template 25082: struct __and_<_B1> 25082: : public _B1 25082: { }; 25082: 25082: template 25082: struct __and_<_B1, _B2> 25082: : public conditional<_B1::value, _B2, _B1>::type 25082: { }; 25082: 25082: template 25082: struct __and_<_B1, _B2, _B3, _Bn...> 25082: : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type 25082: { }; 25082: 25082: template 25082: struct __not_ 25082: : public __bool_constant 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct conjunction 25082: : __and_<_Bn...> 25082: { }; 25082: 25082: template 25082: struct disjunction 25082: : __or_<_Bn...> 25082: { }; 25082: 25082: template 25082: struct negation 25082: : __not_<_Pp> 25082: { }; 25082: 25082: template 25082: inline constexpr bool conjunction_v = conjunction<_Bn...>::value; 25082: 25082: template 25082: inline constexpr bool disjunction_v = disjunction<_Bn...>::value; 25082: 25082: template 25082: inline constexpr bool negation_v = negation<_Pp>::value; 25082: # 180 "/usr/include/c++/8/type_traits" 3 25082: template 25082: struct __success_type 25082: { typedef _Tp type; }; 25082: 25082: struct __failure_type 25082: { }; 25082: 25082: 25082: 25082: template 25082: struct remove_cv; 25082: 25082: template 25082: struct __is_void_helper 25082: : public false_type { }; 25082: 25082: template<> 25082: struct __is_void_helper 25082: : public true_type { }; 25082: 25082: 25082: template 25082: struct is_void 25082: : public __is_void_helper::type>::type 25082: { }; 25082: 25082: template 25082: struct __is_integral_helper 25082: : public false_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_integral_helper 25082: : public true_type { }; 25082: # 312 "/usr/include/c++/8/type_traits" 3 25082: template 25082: struct is_integral 25082: : public __is_integral_helper::type>::type 25082: { }; 25082: 25082: template 25082: struct __is_floating_point_helper 25082: : public false_type { }; 25082: 25082: template<> 25082: struct __is_floating_point_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_floating_point_helper 25082: : public true_type { }; 25082: 25082: template<> 25082: struct __is_floating_point_helper 25082: : public true_type { }; 25082: # 340 "/usr/include/c++/8/type_traits" 3 25082: template 25082: struct is_floating_point 25082: : public __is_floating_point_helper::type>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_array 25082: : public false_type { }; 25082: 25082: template 25082: struct is_array<_Tp[_Size]> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_array<_Tp[]> 25082: : public true_type { }; 25082: 25082: template 25082: struct __is_pointer_helper 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_pointer_helper<_Tp*> 25082: : public true_type { }; 25082: 25082: 25082: template 25082: struct is_pointer 25082: : public __is_pointer_helper::type>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_lvalue_reference 25082: : public false_type { }; 25082: 25082: template 25082: struct is_lvalue_reference<_Tp&> 25082: : public true_type { }; 25082: 25082: 25082: template 25082: struct is_rvalue_reference 25082: : public false_type { }; 25082: 25082: template 25082: struct is_rvalue_reference<_Tp&&> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function; 25082: 25082: template 25082: struct __is_member_object_pointer_helper 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_member_object_pointer_helper<_Tp _Cp::*> 25082: : public integral_constant::value> { }; 25082: 25082: 25082: template 25082: struct is_member_object_pointer 25082: : public __is_member_object_pointer_helper< 25082: typename remove_cv<_Tp>::type>::type 25082: { }; 25082: 25082: template 25082: struct __is_member_function_pointer_helper 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_member_function_pointer_helper<_Tp _Cp::*> 25082: : public integral_constant::value> { }; 25082: 25082: 25082: template 25082: struct is_member_function_pointer 25082: : public __is_member_function_pointer_helper< 25082: typename remove_cv<_Tp>::type>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_enum 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: template 25082: struct is_union 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: template 25082: struct is_class 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: template 25082: struct is_function 25082: : public false_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) & noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) && noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) & noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) && noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) const noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) const & noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) const && noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) const noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) const & noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) const && noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) volatile noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) volatile & noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) volatile && noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) volatile noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) volatile & noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) volatile && noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) const volatile noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) const volatile & noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes...) const volatile && noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) const volatile noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) const volatile & noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: template 25082: struct is_function<_Res(_ArgTypes......) const volatile && noexcept (_NE)> 25082: : public true_type { }; 25082: 25082: 25082: 25082: template 25082: struct __is_null_pointer_helper 25082: : public false_type { }; 25082: 25082: template<> 25082: struct __is_null_pointer_helper 25082: : public true_type { }; 25082: 25082: 25082: template 25082: struct is_null_pointer 25082: : public __is_null_pointer_helper::type>::type 25082: { }; 25082: 25082: 25082: template 25082: struct __is_nullptr_t 25082: : public is_null_pointer<_Tp> 25082: { }; 25082: 25082: 25082: 25082: 25082: template 25082: struct is_reference 25082: : public __or_, 25082: is_rvalue_reference<_Tp>>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_arithmetic 25082: : public __or_, is_floating_point<_Tp>>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_fundamental 25082: : public __or_, is_void<_Tp>, 25082: is_null_pointer<_Tp>>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_object 25082: : public __not_<__or_, is_reference<_Tp>, 25082: is_void<_Tp>>>::type 25082: { }; 25082: 25082: template 25082: struct is_member_pointer; 25082: 25082: 25082: template 25082: struct is_scalar 25082: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, 25082: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_compound 25082: : public integral_constant::value> { }; 25082: 25082: template 25082: struct __is_member_pointer_helper 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_member_pointer_helper<_Tp _Cp::*> 25082: : public true_type { }; 25082: 25082: 25082: template 25082: struct is_member_pointer 25082: : public __is_member_pointer_helper::type>::type 25082: { }; 25082: 25082: 25082: 25082: template 25082: struct __is_referenceable 25082: : public __or_, is_reference<_Tp>>::type 25082: { }; 25082: 25082: template 25082: struct __is_referenceable<_Res(_Args...) noexcept (_NE)> 25082: : public true_type 25082: { }; 25082: 25082: template 25082: struct __is_referenceable<_Res(_Args......) noexcept (_NE)> 25082: : public true_type 25082: { }; 25082: 25082: 25082: 25082: 25082: template 25082: struct is_const 25082: : public false_type { }; 25082: 25082: template 25082: struct is_const<_Tp const> 25082: : public true_type { }; 25082: 25082: 25082: template 25082: struct is_volatile 25082: : public false_type { }; 25082: 25082: template 25082: struct is_volatile<_Tp volatile> 25082: : public true_type { }; 25082: 25082: 25082: template 25082: struct is_trivial 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: template 25082: struct is_trivially_copyable 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: template 25082: struct is_standard_layout 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: 25082: template 25082: struct is_pod 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: template 25082: struct is_literal_type 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: template 25082: struct is_empty 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: template 25082: struct is_polymorphic 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: 25082: 25082: template 25082: struct is_final 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: 25082: template 25082: struct is_abstract 25082: : public integral_constant 25082: { }; 25082: 25082: template::value> 25082: struct __is_signed_helper 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_signed_helper<_Tp, true> 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: template 25082: struct is_signed 25082: : public __is_signed_helper<_Tp>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_unsigned 25082: : public __and_, __not_>> 25082: { }; 25082: # 747 "/usr/include/c++/8/type_traits" 3 25082: template 25082: _Up 25082: __declval(int); 25082: 25082: template 25082: _Tp 25082: __declval(long); 25082: 25082: template 25082: auto declval() noexcept -> decltype(__declval<_Tp>(0)); 25082: 25082: template 25082: struct extent; 25082: 25082: template 25082: struct remove_all_extents; 25082: 25082: template 25082: struct __is_array_known_bounds 25082: : public integral_constant::value > 0)> 25082: { }; 25082: 25082: template 25082: struct __is_array_unknown_bounds 25082: : public __and_, __not_>> 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct __do_is_destructible_impl 25082: { 25082: template().~_Tp())> 25082: static true_type __test(int); 25082: 25082: template 25082: static false_type __test(...); 25082: }; 25082: 25082: template 25082: struct __is_destructible_impl 25082: : public __do_is_destructible_impl 25082: { 25082: typedef decltype(__test<_Tp>(0)) type; 25082: }; 25082: 25082: template, 25082: __is_array_unknown_bounds<_Tp>, 25082: is_function<_Tp>>::value, 25082: bool = __or_, is_scalar<_Tp>>::value> 25082: struct __is_destructible_safe; 25082: 25082: template 25082: struct __is_destructible_safe<_Tp, false, false> 25082: : public __is_destructible_impl::type>::type 25082: { }; 25082: 25082: template 25082: struct __is_destructible_safe<_Tp, true, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_destructible_safe<_Tp, false, true> 25082: : public true_type { }; 25082: 25082: 25082: template 25082: struct is_destructible 25082: : public __is_destructible_safe<_Tp>::type 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: struct __do_is_nt_destructible_impl 25082: { 25082: template 25082: static integral_constant().~_Tp())> 25082: __test(int); 25082: 25082: template 25082: static false_type __test(...); 25082: }; 25082: 25082: template 25082: struct __is_nt_destructible_impl 25082: : public __do_is_nt_destructible_impl 25082: { 25082: typedef decltype(__test<_Tp>(0)) type; 25082: }; 25082: 25082: template, 25082: __is_array_unknown_bounds<_Tp>, 25082: is_function<_Tp>>::value, 25082: bool = __or_, is_scalar<_Tp>>::value> 25082: struct __is_nt_destructible_safe; 25082: 25082: template 25082: struct __is_nt_destructible_safe<_Tp, false, false> 25082: : public __is_nt_destructible_impl::type>::type 25082: { }; 25082: 25082: template 25082: struct __is_nt_destructible_safe<_Tp, true, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_nt_destructible_safe<_Tp, false, true> 25082: : public true_type { }; 25082: 25082: 25082: template 25082: struct is_nothrow_destructible 25082: : public __is_nt_destructible_safe<_Tp>::type 25082: { }; 25082: 25082: struct __do_is_default_constructible_impl 25082: { 25082: template 25082: static true_type __test(int); 25082: 25082: template 25082: static false_type __test(...); 25082: }; 25082: 25082: template 25082: struct __is_default_constructible_impl 25082: : public __do_is_default_constructible_impl 25082: { 25082: typedef decltype(__test<_Tp>(0)) type; 25082: }; 25082: 25082: template 25082: struct __is_default_constructible_atom 25082: : public __and_<__not_>, 25082: __is_default_constructible_impl<_Tp>> 25082: { }; 25082: 25082: template::value> 25082: struct __is_default_constructible_safe; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_default_constructible_safe<_Tp, true> 25082: : public __and_<__is_array_known_bounds<_Tp>, 25082: __is_default_constructible_atom::type>> 25082: { }; 25082: 25082: template 25082: struct __is_default_constructible_safe<_Tp, false> 25082: : public __is_default_constructible_atom<_Tp>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_default_constructible 25082: : public __is_default_constructible_safe<_Tp>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_constructible 25082: : public __bool_constant<__is_constructible(_Tp, _Args...)> 25082: { }; 25082: 25082: template::value> 25082: struct __is_copy_constructible_impl; 25082: 25082: template 25082: struct __is_copy_constructible_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_copy_constructible_impl<_Tp, true> 25082: : public is_constructible<_Tp, const _Tp&> 25082: { }; 25082: 25082: 25082: template 25082: struct is_copy_constructible 25082: : public __is_copy_constructible_impl<_Tp> 25082: { }; 25082: 25082: template::value> 25082: struct __is_move_constructible_impl; 25082: 25082: template 25082: struct __is_move_constructible_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_move_constructible_impl<_Tp, true> 25082: : public is_constructible<_Tp, _Tp&&> 25082: { }; 25082: 25082: 25082: template 25082: struct is_move_constructible 25082: : public __is_move_constructible_impl<_Tp> 25082: { }; 25082: 25082: template 25082: struct __is_nt_default_constructible_atom 25082: : public integral_constant 25082: { }; 25082: 25082: template::value> 25082: struct __is_nt_default_constructible_impl; 25082: 25082: template 25082: struct __is_nt_default_constructible_impl<_Tp, true> 25082: : public __and_<__is_array_known_bounds<_Tp>, 25082: __is_nt_default_constructible_atom::type>> 25082: { }; 25082: 25082: template 25082: struct __is_nt_default_constructible_impl<_Tp, false> 25082: : public __is_nt_default_constructible_atom<_Tp> 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_default_constructible 25082: : public __and_, 25082: __is_nt_default_constructible_impl<_Tp>> 25082: { }; 25082: 25082: template 25082: struct __is_nt_constructible_impl 25082: : public integral_constant()...))> 25082: { }; 25082: 25082: template 25082: struct __is_nt_constructible_impl<_Tp, _Arg> 25082: : public integral_constant(declval<_Arg>()))> 25082: { }; 25082: 25082: template 25082: struct __is_nt_constructible_impl<_Tp> 25082: : public is_nothrow_default_constructible<_Tp> 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_constructible 25082: : public __and_, 25082: __is_nt_constructible_impl<_Tp, _Args...>> 25082: { }; 25082: 25082: template::value> 25082: struct __is_nothrow_copy_constructible_impl; 25082: 25082: template 25082: struct __is_nothrow_copy_constructible_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_nothrow_copy_constructible_impl<_Tp, true> 25082: : public is_nothrow_constructible<_Tp, const _Tp&> 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_copy_constructible 25082: : public __is_nothrow_copy_constructible_impl<_Tp> 25082: { }; 25082: 25082: template::value> 25082: struct __is_nothrow_move_constructible_impl; 25082: 25082: template 25082: struct __is_nothrow_move_constructible_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_nothrow_move_constructible_impl<_Tp, true> 25082: : public is_nothrow_constructible<_Tp, _Tp&&> 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_move_constructible 25082: : public __is_nothrow_move_constructible_impl<_Tp> 25082: { }; 25082: 25082: 25082: template 25082: struct is_assignable 25082: : public __bool_constant<__is_assignable(_Tp, _Up)> 25082: { }; 25082: 25082: template::value> 25082: struct __is_copy_assignable_impl; 25082: 25082: template 25082: struct __is_copy_assignable_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_copy_assignable_impl<_Tp, true> 25082: : public is_assignable<_Tp&, const _Tp&> 25082: { }; 25082: 25082: 25082: template 25082: struct is_copy_assignable 25082: : public __is_copy_assignable_impl<_Tp> 25082: { }; 25082: 25082: template::value> 25082: struct __is_move_assignable_impl; 25082: 25082: template 25082: struct __is_move_assignable_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_move_assignable_impl<_Tp, true> 25082: : public is_assignable<_Tp&, _Tp&&> 25082: { }; 25082: 25082: 25082: template 25082: struct is_move_assignable 25082: : public __is_move_assignable_impl<_Tp> 25082: { }; 25082: 25082: template 25082: struct __is_nt_assignable_impl 25082: : public integral_constant() = declval<_Up>())> 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_assignable 25082: : public __and_, 25082: __is_nt_assignable_impl<_Tp, _Up>> 25082: { }; 25082: 25082: template::value> 25082: struct __is_nt_copy_assignable_impl; 25082: 25082: template 25082: struct __is_nt_copy_assignable_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_nt_copy_assignable_impl<_Tp, true> 25082: : public is_nothrow_assignable<_Tp&, const _Tp&> 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_copy_assignable 25082: : public __is_nt_copy_assignable_impl<_Tp> 25082: { }; 25082: 25082: template::value> 25082: struct __is_nt_move_assignable_impl; 25082: 25082: template 25082: struct __is_nt_move_assignable_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_nt_move_assignable_impl<_Tp, true> 25082: : public is_nothrow_assignable<_Tp&, _Tp&&> 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_move_assignable 25082: : public __is_nt_move_assignable_impl<_Tp> 25082: { }; 25082: 25082: 25082: template 25082: struct is_trivially_constructible 25082: : public __and_, __bool_constant< 25082: __is_trivially_constructible(_Tp, _Args...)>>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_trivially_default_constructible 25082: : public is_trivially_constructible<_Tp>::type 25082: { }; 25082: 25082: struct __do_is_implicitly_default_constructible_impl 25082: { 25082: template 25082: static void __helper(const _Tp&); 25082: 25082: template 25082: static true_type __test(const _Tp&, 25082: decltype(__helper({}))* = 0); 25082: 25082: static false_type __test(...); 25082: }; 25082: 25082: template 25082: struct __is_implicitly_default_constructible_impl 25082: : public __do_is_implicitly_default_constructible_impl 25082: { 25082: typedef decltype(__test(declval<_Tp>())) type; 25082: }; 25082: 25082: template 25082: struct __is_implicitly_default_constructible_safe 25082: : public __is_implicitly_default_constructible_impl<_Tp>::type 25082: { }; 25082: 25082: template 25082: struct __is_implicitly_default_constructible 25082: : public __and_, 25082: __is_implicitly_default_constructible_safe<_Tp>> 25082: { }; 25082: 25082: 25082: 25082: template::value> 25082: struct __is_trivially_copy_constructible_impl; 25082: 25082: template 25082: struct __is_trivially_copy_constructible_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_trivially_copy_constructible_impl<_Tp, true> 25082: : public __and_, 25082: integral_constant> 25082: { }; 25082: 25082: template 25082: struct is_trivially_copy_constructible 25082: : public __is_trivially_copy_constructible_impl<_Tp> 25082: { }; 25082: 25082: 25082: 25082: template::value> 25082: struct __is_trivially_move_constructible_impl; 25082: 25082: template 25082: struct __is_trivially_move_constructible_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_trivially_move_constructible_impl<_Tp, true> 25082: : public __and_, 25082: integral_constant> 25082: { }; 25082: 25082: template 25082: struct is_trivially_move_constructible 25082: : public __is_trivially_move_constructible_impl<_Tp> 25082: { }; 25082: 25082: 25082: template 25082: struct is_trivially_assignable 25082: : public __bool_constant<__is_trivially_assignable(_Tp, _Up)> 25082: { }; 25082: 25082: 25082: 25082: template::value> 25082: struct __is_trivially_copy_assignable_impl; 25082: 25082: template 25082: struct __is_trivially_copy_assignable_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_trivially_copy_assignable_impl<_Tp, true> 25082: : public __and_, 25082: integral_constant> 25082: { }; 25082: 25082: template 25082: struct is_trivially_copy_assignable 25082: : public __is_trivially_copy_assignable_impl<_Tp> 25082: { }; 25082: 25082: 25082: 25082: template::value> 25082: struct __is_trivially_move_assignable_impl; 25082: 25082: template 25082: struct __is_trivially_move_assignable_impl<_Tp, false> 25082: : public false_type { }; 25082: 25082: template 25082: struct __is_trivially_move_assignable_impl<_Tp, true> 25082: : public __and_, 25082: integral_constant> 25082: { }; 25082: 25082: template 25082: struct is_trivially_move_assignable 25082: : public __is_trivially_move_assignable_impl<_Tp> 25082: { }; 25082: 25082: 25082: template 25082: struct is_trivially_destructible 25082: : public __and_, integral_constant> 25082: { }; 25082: 25082: 25082: 25082: template 25082: struct has_virtual_destructor 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct alignment_of 25082: : public integral_constant { }; 25082: 25082: 25082: template 25082: struct rank 25082: : public integral_constant { }; 25082: 25082: template 25082: struct rank<_Tp[_Size]> 25082: : public integral_constant::value> { }; 25082: 25082: template 25082: struct rank<_Tp[]> 25082: : public integral_constant::value> { }; 25082: 25082: 25082: template 25082: struct extent 25082: : public integral_constant { }; 25082: 25082: template 25082: struct extent<_Tp[_Size], _Uint> 25082: : public integral_constant::value> 25082: { }; 25082: 25082: template 25082: struct extent<_Tp[], _Uint> 25082: : public integral_constant::value> 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_same 25082: : public false_type { }; 25082: 25082: template 25082: struct is_same<_Tp, _Tp> 25082: : public true_type { }; 25082: 25082: 25082: template 25082: struct is_base_of 25082: : public integral_constant 25082: { }; 25082: 25082: template, is_function<_To>, 25082: is_array<_To>>::value> 25082: struct __is_convertible_helper 25082: { typedef typename is_void<_To>::type type; }; 25082: 25082: template 25082: class __is_convertible_helper<_From, _To, false> 25082: { 25082: template 25082: static void __test_aux(_To1); 25082: 25082: template(std::declval<_From1>()))> 25082: static true_type 25082: __test(int); 25082: 25082: template 25082: static false_type 25082: __test(...); 25082: 25082: public: 25082: typedef decltype(__test<_From, _To>(0)) type; 25082: }; 25082: 25082: 25082: 25082: template 25082: struct is_convertible 25082: : public __is_convertible_helper<_From, _To>::type 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct remove_const 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct remove_const<_Tp const> 25082: { typedef _Tp type; }; 25082: 25082: 25082: template 25082: struct remove_volatile 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct remove_volatile<_Tp volatile> 25082: { typedef _Tp type; }; 25082: 25082: 25082: template 25082: struct remove_cv 25082: { 25082: typedef typename 25082: remove_const::type>::type type; 25082: }; 25082: 25082: 25082: template 25082: struct add_const 25082: { typedef _Tp const type; }; 25082: 25082: 25082: template 25082: struct add_volatile 25082: { typedef _Tp volatile type; }; 25082: 25082: 25082: template 25082: struct add_cv 25082: { 25082: typedef typename 25082: add_const::type>::type type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: using remove_const_t = typename remove_const<_Tp>::type; 25082: 25082: 25082: template 25082: using remove_volatile_t = typename remove_volatile<_Tp>::type; 25082: 25082: 25082: template 25082: using remove_cv_t = typename remove_cv<_Tp>::type; 25082: 25082: 25082: template 25082: using add_const_t = typename add_const<_Tp>::type; 25082: 25082: 25082: template 25082: using add_volatile_t = typename add_volatile<_Tp>::type; 25082: 25082: 25082: template 25082: using add_cv_t = typename add_cv<_Tp>::type; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct remove_reference 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct remove_reference<_Tp&> 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct remove_reference<_Tp&&> 25082: { typedef _Tp type; }; 25082: 25082: template::value> 25082: struct __add_lvalue_reference_helper 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct __add_lvalue_reference_helper<_Tp, true> 25082: { typedef _Tp& type; }; 25082: 25082: 25082: template 25082: struct add_lvalue_reference 25082: : public __add_lvalue_reference_helper<_Tp> 25082: { }; 25082: 25082: template::value> 25082: struct __add_rvalue_reference_helper 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct __add_rvalue_reference_helper<_Tp, true> 25082: { typedef _Tp&& type; }; 25082: 25082: 25082: template 25082: struct add_rvalue_reference 25082: : public __add_rvalue_reference_helper<_Tp> 25082: { }; 25082: 25082: 25082: 25082: template 25082: using remove_reference_t = typename remove_reference<_Tp>::type; 25082: 25082: 25082: template 25082: using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; 25082: 25082: 25082: template 25082: using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __cv_selector; 25082: 25082: template 25082: struct __cv_selector<_Unqualified, false, false> 25082: { typedef _Unqualified __type; }; 25082: 25082: template 25082: struct __cv_selector<_Unqualified, false, true> 25082: { typedef volatile _Unqualified __type; }; 25082: 25082: template 25082: struct __cv_selector<_Unqualified, true, false> 25082: { typedef const _Unqualified __type; }; 25082: 25082: template 25082: struct __cv_selector<_Unqualified, true, true> 25082: { typedef const volatile _Unqualified __type; }; 25082: 25082: template::value, 25082: bool _IsVol = is_volatile<_Qualified>::value> 25082: class __match_cv_qualifiers 25082: { 25082: typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match; 25082: 25082: public: 25082: typedef typename __match::__type __type; 25082: }; 25082: 25082: 25082: template 25082: struct __make_unsigned 25082: { typedef _Tp __type; }; 25082: 25082: template<> 25082: struct __make_unsigned 25082: { typedef unsigned char __type; }; 25082: 25082: template<> 25082: struct __make_unsigned 25082: { typedef unsigned char __type; }; 25082: 25082: template<> 25082: struct __make_unsigned 25082: { typedef unsigned short __type; }; 25082: 25082: template<> 25082: struct __make_unsigned 25082: { typedef unsigned int __type; }; 25082: 25082: template<> 25082: struct __make_unsigned 25082: { typedef unsigned long __type; }; 25082: 25082: template<> 25082: struct __make_unsigned 25082: { typedef unsigned long long __type; }; 25082: # 1590 "/usr/include/c++/8/type_traits" 3 25082: template::value, 25082: bool _IsEnum = is_enum<_Tp>::value> 25082: class __make_unsigned_selector; 25082: 25082: template 25082: class __make_unsigned_selector<_Tp, true, false> 25082: { 25082: typedef __make_unsigned::type> __unsignedt; 25082: typedef typename __unsignedt::__type __unsigned_type; 25082: typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; 25082: 25082: public: 25082: typedef typename __cv_unsigned::__type __type; 25082: }; 25082: 25082: template 25082: class __make_unsigned_selector<_Tp, false, true> 25082: { 25082: 25082: typedef unsigned char __smallest; 25082: static const bool __b0 = sizeof(_Tp) <= sizeof(__smallest); 25082: static const bool __b1 = sizeof(_Tp) <= sizeof(unsigned short); 25082: static const bool __b2 = sizeof(_Tp) <= sizeof(unsigned int); 25082: static const bool __b3 = sizeof(_Tp) <= sizeof(unsigned long); 25082: typedef conditional<__b3, unsigned long, unsigned long long> __cond3; 25082: typedef typename __cond3::type __cond3_type; 25082: typedef conditional<__b2, unsigned int, __cond3_type> __cond2; 25082: typedef typename __cond2::type __cond2_type; 25082: typedef conditional<__b1, unsigned short, __cond2_type> __cond1; 25082: typedef typename __cond1::type __cond1_type; 25082: 25082: typedef typename conditional<__b0, __smallest, __cond1_type>::type 25082: __unsigned_type; 25082: typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; 25082: 25082: public: 25082: typedef typename __cv_unsigned::__type __type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct make_unsigned 25082: { typedef typename __make_unsigned_selector<_Tp>::__type type; }; 25082: 25082: 25082: template<> 25082: struct make_unsigned; 25082: 25082: 25082: 25082: template 25082: struct __make_signed 25082: { typedef _Tp __type; }; 25082: 25082: template<> 25082: struct __make_signed 25082: { typedef signed char __type; }; 25082: 25082: template<> 25082: struct __make_signed 25082: { typedef signed char __type; }; 25082: 25082: template<> 25082: struct __make_signed 25082: { typedef signed short __type; }; 25082: 25082: template<> 25082: struct __make_signed 25082: { typedef signed int __type; }; 25082: 25082: template<> 25082: struct __make_signed 25082: { typedef signed long __type; }; 25082: 25082: template<> 25082: struct __make_signed 25082: { typedef signed long long __type; }; 25082: # 1694 "/usr/include/c++/8/type_traits" 3 25082: template::value, 25082: bool _IsEnum = is_enum<_Tp>::value> 25082: class __make_signed_selector; 25082: 25082: template 25082: class __make_signed_selector<_Tp, true, false> 25082: { 25082: typedef __make_signed::type> __signedt; 25082: typedef typename __signedt::__type __signed_type; 25082: typedef __match_cv_qualifiers<_Tp, __signed_type> __cv_signed; 25082: 25082: public: 25082: typedef typename __cv_signed::__type __type; 25082: }; 25082: 25082: template 25082: class __make_signed_selector<_Tp, false, true> 25082: { 25082: typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type; 25082: 25082: public: 25082: typedef typename __make_signed_selector<__unsigned_type>::__type __type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct make_signed 25082: { typedef typename __make_signed_selector<_Tp>::__type type; }; 25082: 25082: 25082: template<> 25082: struct make_signed; 25082: 25082: 25082: 25082: template 25082: using make_signed_t = typename make_signed<_Tp>::type; 25082: 25082: 25082: template 25082: using make_unsigned_t = typename make_unsigned<_Tp>::type; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct remove_extent 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct remove_extent<_Tp[_Size]> 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct remove_extent<_Tp[]> 25082: { typedef _Tp type; }; 25082: 25082: 25082: template 25082: struct remove_all_extents 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct remove_all_extents<_Tp[_Size]> 25082: { typedef typename remove_all_extents<_Tp>::type type; }; 25082: 25082: template 25082: struct remove_all_extents<_Tp[]> 25082: { typedef typename remove_all_extents<_Tp>::type type; }; 25082: 25082: 25082: 25082: template 25082: using remove_extent_t = typename remove_extent<_Tp>::type; 25082: 25082: 25082: template 25082: using remove_all_extents_t = typename remove_all_extents<_Tp>::type; 25082: 25082: 25082: 25082: 25082: template 25082: struct __remove_pointer_helper 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct __remove_pointer_helper<_Tp, _Up*> 25082: { typedef _Up type; }; 25082: 25082: 25082: template 25082: struct remove_pointer 25082: : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> 25082: { }; 25082: 25082: 25082: template, 25082: is_void<_Tp>>::value> 25082: struct __add_pointer_helper 25082: { typedef _Tp type; }; 25082: 25082: template 25082: struct __add_pointer_helper<_Tp, true> 25082: { typedef typename remove_reference<_Tp>::type* type; }; 25082: 25082: template 25082: struct add_pointer 25082: : public __add_pointer_helper<_Tp> 25082: { }; 25082: 25082: 25082: 25082: template 25082: using remove_pointer_t = typename remove_pointer<_Tp>::type; 25082: 25082: 25082: template 25082: using add_pointer_t = typename add_pointer<_Tp>::type; 25082: 25082: 25082: template 25082: struct __aligned_storage_msa 25082: { 25082: union __type 25082: { 25082: unsigned char __data[_Len]; 25082: struct __attribute__((__aligned__)) { } __align; 25082: }; 25082: }; 25082: # 1840 "/usr/include/c++/8/type_traits" 3 25082: template::__type)> 25082: struct aligned_storage 25082: { 25082: union type 25082: { 25082: unsigned char __data[_Len]; 25082: struct __attribute__((__aligned__((_Align)))) { } __align; 25082: }; 25082: }; 25082: 25082: template 25082: struct __strictest_alignment 25082: { 25082: static const size_t _S_alignment = 0; 25082: static const size_t _S_size = 0; 25082: }; 25082: 25082: template 25082: struct __strictest_alignment<_Tp, _Types...> 25082: { 25082: static const size_t _S_alignment = 25082: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment 25082: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; 25082: static const size_t _S_size = 25082: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size 25082: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; 25082: }; 25082: # 1879 "/usr/include/c++/8/type_traits" 3 25082: template 25082: struct aligned_union 25082: { 25082: private: 25082: static_assert(sizeof...(_Types) != 0, "At least one type is required"); 25082: 25082: using __strictest = __strictest_alignment<_Types...>; 25082: static const size_t _S_len = _Len > __strictest::_S_size 25082: ? _Len : __strictest::_S_size; 25082: public: 25082: 25082: static const size_t alignment_value = __strictest::_S_alignment; 25082: 25082: typedef typename aligned_storage<_S_len, alignment_value>::type type; 25082: }; 25082: 25082: template 25082: const size_t aligned_union<_Len, _Types...>::alignment_value; 25082: 25082: 25082: 25082: template::value, 25082: bool _IsFunction = is_function<_Up>::value> 25082: struct __decay_selector; 25082: 25082: 25082: template 25082: struct __decay_selector<_Up, false, false> 25082: { typedef typename remove_cv<_Up>::type __type; }; 25082: 25082: template 25082: struct __decay_selector<_Up, true, false> 25082: { typedef typename remove_extent<_Up>::type* __type; }; 25082: 25082: template 25082: struct __decay_selector<_Up, false, true> 25082: { typedef typename add_pointer<_Up>::type __type; }; 25082: 25082: 25082: template 25082: class decay 25082: { 25082: typedef typename remove_reference<_Tp>::type __remove_type; 25082: 25082: public: 25082: typedef typename __decay_selector<__remove_type>::__type type; 25082: }; 25082: 25082: template 25082: class reference_wrapper; 25082: 25082: 25082: template 25082: struct __strip_reference_wrapper 25082: { 25082: typedef _Tp __type; 25082: }; 25082: 25082: template 25082: struct __strip_reference_wrapper > 25082: { 25082: typedef _Tp& __type; 25082: }; 25082: 25082: template 25082: struct __decay_and_strip 25082: { 25082: typedef typename __strip_reference_wrapper< 25082: typename decay<_Tp>::type>::__type __type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct enable_if 25082: { }; 25082: 25082: 25082: template 25082: struct enable_if 25082: { typedef _Tp type; }; 25082: 25082: template 25082: using _Require = typename enable_if<__and_<_Cond...>::value>::type; 25082: 25082: 25082: 25082: template 25082: struct conditional 25082: { typedef _Iftrue type; }; 25082: 25082: 25082: template 25082: struct conditional 25082: { typedef _Iffalse type; }; 25082: 25082: 25082: template 25082: struct common_type; 25082: 25082: 25082: 25082: struct __do_common_type_impl 25082: { 25082: template 25082: static __success_type() 25082: : std::declval<_Up>())>::type> _S_test(int); 25082: 25082: template 25082: static __failure_type _S_test(...); 25082: }; 25082: 25082: template 25082: struct __common_type_impl 25082: : private __do_common_type_impl 25082: { 25082: typedef decltype(_S_test<_Tp, _Up>(0)) type; 25082: }; 25082: 25082: struct __do_member_type_wrapper 25082: { 25082: template 25082: static __success_type _S_test(int); 25082: 25082: template 25082: static __failure_type _S_test(...); 25082: }; 25082: 25082: template 25082: struct __member_type_wrapper 25082: : private __do_member_type_wrapper 25082: { 25082: typedef decltype(_S_test<_Tp>(0)) type; 25082: }; 25082: 25082: template 25082: struct __expanded_common_type_wrapper 25082: { 25082: typedef common_type type; 25082: }; 25082: 25082: template 25082: struct __expanded_common_type_wrapper<__failure_type, _Args...> 25082: { typedef __failure_type type; }; 25082: 25082: template 25082: struct common_type<_Tp> 25082: { typedef typename decay<_Tp>::type type; }; 25082: 25082: template 25082: struct common_type<_Tp, _Up> 25082: : public __common_type_impl<_Tp, _Up>::type 25082: { }; 25082: 25082: template 25082: struct common_type<_Tp, _Up, _Vp...> 25082: : public __expanded_common_type_wrapper>::type, _Vp...>::type 25082: { }; 25082: 25082: 25082: template 25082: struct underlying_type 25082: { 25082: typedef __underlying_type(_Tp) type; 25082: }; 25082: 25082: template 25082: struct __declval_protector 25082: { 25082: static const bool __stop = false; 25082: }; 25082: 25082: template 25082: auto declval() noexcept -> decltype(__declval<_Tp>(0)) 25082: { 25082: static_assert(__declval_protector<_Tp>::__stop, 25082: "declval() must not be used!"); 25082: return __declval<_Tp>(0); 25082: } 25082: # 2072 "/usr/include/c++/8/type_traits" 3 25082: template<> 25082: struct __make_unsigned 25082: { 25082: using __type 25082: = typename __make_unsigned_selector::__type; 25082: }; 25082: 25082: template<> 25082: struct __make_signed 25082: { 25082: using __type 25082: = typename __make_signed_selector::__type; 25082: }; 25082: 25082: 25082: template<> 25082: struct __make_unsigned 25082: { 25082: using __type 25082: = typename __make_unsigned_selector::__type; 25082: }; 25082: 25082: template<> 25082: struct __make_signed 25082: { 25082: using __type 25082: = typename __make_signed_selector::__type; 25082: }; 25082: 25082: template<> 25082: struct __make_unsigned 25082: { 25082: using __type 25082: = typename __make_unsigned_selector::__type; 25082: }; 25082: 25082: template<> 25082: struct __make_signed 25082: { 25082: using __type 25082: = typename __make_signed_selector::__type; 25082: }; 25082: 25082: 25082: 25082: template 25082: class result_of; 25082: 25082: 25082: 25082: 25082: 25082: struct __invoke_memfun_ref { }; 25082: struct __invoke_memfun_deref { }; 25082: struct __invoke_memobj_ref { }; 25082: struct __invoke_memobj_deref { }; 25082: struct __invoke_other { }; 25082: 25082: 25082: template 25082: struct __result_of_success : __success_type<_Tp> 25082: { using __invoke_type = _Tag; }; 25082: 25082: 25082: struct __result_of_memfun_ref_impl 25082: { 25082: template 25082: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) 25082: ), __invoke_memfun_ref> _S_test(int); 25082: 25082: template 25082: static __failure_type _S_test(...); 25082: }; 25082: 25082: template 25082: struct __result_of_memfun_ref 25082: : private __result_of_memfun_ref_impl 25082: { 25082: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; 25082: }; 25082: 25082: 25082: struct __result_of_memfun_deref_impl 25082: { 25082: template 25082: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) 25082: ), __invoke_memfun_deref> _S_test(int); 25082: 25082: template 25082: static __failure_type _S_test(...); 25082: }; 25082: 25082: template 25082: struct __result_of_memfun_deref 25082: : private __result_of_memfun_deref_impl 25082: { 25082: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; 25082: }; 25082: 25082: 25082: struct __result_of_memobj_ref_impl 25082: { 25082: template 25082: static __result_of_success().*std::declval<_Fp>() 25082: ), __invoke_memobj_ref> _S_test(int); 25082: 25082: template 25082: static __failure_type _S_test(...); 25082: }; 25082: 25082: template 25082: struct __result_of_memobj_ref 25082: : private __result_of_memobj_ref_impl 25082: { 25082: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; 25082: }; 25082: 25082: 25082: struct __result_of_memobj_deref_impl 25082: { 25082: template 25082: static __result_of_success()).*std::declval<_Fp>() 25082: ), __invoke_memobj_deref> _S_test(int); 25082: 25082: template 25082: static __failure_type _S_test(...); 25082: }; 25082: 25082: template 25082: struct __result_of_memobj_deref 25082: : private __result_of_memobj_deref_impl 25082: { 25082: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; 25082: }; 25082: 25082: template 25082: struct __result_of_memobj; 25082: 25082: template 25082: struct __result_of_memobj<_Res _Class::*, _Arg> 25082: { 25082: typedef typename remove_cv::type>::type _Argval; 25082: typedef _Res _Class::* _MemPtr; 25082: typedef typename conditional<__or_, 25082: is_base_of<_Class, _Argval>>::value, 25082: __result_of_memobj_ref<_MemPtr, _Arg>, 25082: __result_of_memobj_deref<_MemPtr, _Arg> 25082: >::type::type type; 25082: }; 25082: 25082: template 25082: struct __result_of_memfun; 25082: 25082: template 25082: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> 25082: { 25082: typedef typename remove_cv::type>::type _Argval; 25082: typedef _Res _Class::* _MemPtr; 25082: typedef typename conditional<__or_, 25082: is_base_of<_Class, _Argval>>::value, 25082: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, 25082: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> 25082: >::type::type type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template::type> 25082: struct __inv_unwrap 25082: { 25082: using type = _Tp; 25082: }; 25082: 25082: template 25082: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> 25082: { 25082: using type = _Up&; 25082: }; 25082: 25082: template 25082: struct __result_of_impl 25082: { 25082: typedef __failure_type type; 25082: }; 25082: 25082: template 25082: struct __result_of_impl 25082: : public __result_of_memobj::type, 25082: typename __inv_unwrap<_Arg>::type> 25082: { }; 25082: 25082: template 25082: struct __result_of_impl 25082: : public __result_of_memfun::type, 25082: typename __inv_unwrap<_Arg>::type, _Args...> 25082: { }; 25082: 25082: 25082: struct __result_of_other_impl 25082: { 25082: template 25082: static __result_of_success()(std::declval<_Args>()...) 25082: ), __invoke_other> _S_test(int); 25082: 25082: template 25082: static __failure_type _S_test(...); 25082: }; 25082: 25082: template 25082: struct __result_of_impl 25082: : private __result_of_other_impl 25082: { 25082: typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; 25082: }; 25082: 25082: 25082: template 25082: struct __invoke_result 25082: : public __result_of_impl< 25082: is_member_object_pointer< 25082: typename remove_reference<_Functor>::type 25082: >::value, 25082: is_member_function_pointer< 25082: typename remove_reference<_Functor>::type 25082: >::value, 25082: _Functor, _ArgTypes... 25082: >::type 25082: { }; 25082: 25082: template 25082: struct result_of<_Functor(_ArgTypes...)> 25082: : public __invoke_result<_Functor, _ArgTypes...> 25082: { }; 25082: 25082: 25082: 25082: template::__type)> 25082: using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; 25082: 25082: template 25082: using aligned_union_t = typename aligned_union<_Len, _Types...>::type; 25082: 25082: 25082: template 25082: using decay_t = typename decay<_Tp>::type; 25082: 25082: 25082: template 25082: using enable_if_t = typename enable_if<_Cond, _Tp>::type; 25082: 25082: 25082: template 25082: using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; 25082: 25082: 25082: template 25082: using common_type_t = typename common_type<_Tp...>::type; 25082: 25082: 25082: template 25082: using underlying_type_t = typename underlying_type<_Tp>::type; 25082: 25082: 25082: template 25082: using result_of_t = typename result_of<_Tp>::type; 25082: 25082: 25082: 25082: template 25082: using __enable_if_t = typename enable_if<_Cond, _Tp>::type; 25082: 25082: 25082: template using __void_t = void; 25082: 25082: 25082: 25082: 25082: template using void_t = void; 25082: 25082: 25082: 25082: template class _Op, typename... _Args> 25082: struct __detector 25082: { 25082: using value_t = false_type; 25082: using type = _Default; 25082: }; 25082: 25082: 25082: template class _Op, 25082: typename... _Args> 25082: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> 25082: { 25082: using value_t = true_type; 25082: using type = _Op<_Args...>; 25082: }; 25082: 25082: 25082: template class _Op, 25082: typename... _Args> 25082: using __detected_or = __detector<_Default, void, _Op, _Args...>; 25082: 25082: 25082: template class _Op, 25082: typename... _Args> 25082: using __detected_or_t 25082: = typename __detected_or<_Default, _Op, _Args...>::type; 25082: # 2408 "/usr/include/c++/8/type_traits" 3 25082: template 25082: struct __is_swappable; 25082: 25082: template 25082: struct __is_nothrow_swappable; 25082: 25082: template 25082: class tuple; 25082: 25082: template 25082: struct __is_tuple_like_impl : false_type 25082: { }; 25082: 25082: template 25082: struct __is_tuple_like_impl> : true_type 25082: { }; 25082: 25082: 25082: template 25082: struct __is_tuple_like 25082: : public __is_tuple_like_impl::type>::type>::type 25082: { }; 25082: 25082: template 25082: inline 25082: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 25082: is_move_constructible<_Tp>, 25082: is_move_assignable<_Tp>>::value>::type 25082: swap(_Tp&, _Tp&) 25082: noexcept(__and_, 25082: is_nothrow_move_assignable<_Tp>>::value); 25082: 25082: template 25082: inline 25082: typename enable_if<__is_swappable<_Tp>::value>::type 25082: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 25082: noexcept(__is_nothrow_swappable<_Tp>::value); 25082: 25082: namespace __swappable_details { 25082: using std::swap; 25082: 25082: struct __do_is_swappable_impl 25082: { 25082: template(), std::declval<_Tp&>()))> 25082: static true_type __test(int); 25082: 25082: template 25082: static false_type __test(...); 25082: }; 25082: 25082: struct __do_is_nothrow_swappable_impl 25082: { 25082: template 25082: static __bool_constant< 25082: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) 25082: > __test(int); 25082: 25082: template 25082: static false_type __test(...); 25082: }; 25082: 25082: } 25082: 25082: template 25082: struct __is_swappable_impl 25082: : public __swappable_details::__do_is_swappable_impl 25082: { 25082: typedef decltype(__test<_Tp>(0)) type; 25082: }; 25082: 25082: template 25082: struct __is_nothrow_swappable_impl 25082: : public __swappable_details::__do_is_nothrow_swappable_impl 25082: { 25082: typedef decltype(__test<_Tp>(0)) type; 25082: }; 25082: 25082: template 25082: struct __is_swappable 25082: : public __is_swappable_impl<_Tp>::type 25082: { }; 25082: 25082: template 25082: struct __is_nothrow_swappable 25082: : public __is_nothrow_swappable_impl<_Tp>::type 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_swappable 25082: : public __is_swappable_impl<_Tp>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_swappable 25082: : public __is_nothrow_swappable_impl<_Tp>::type 25082: { }; 25082: 25082: 25082: 25082: template 25082: inline constexpr bool is_swappable_v = 25082: is_swappable<_Tp>::value; 25082: 25082: 25082: template 25082: inline constexpr bool is_nothrow_swappable_v = 25082: is_nothrow_swappable<_Tp>::value; 25082: 25082: 25082: namespace __swappable_with_details { 25082: using std::swap; 25082: 25082: struct __do_is_swappable_with_impl 25082: { 25082: template(), std::declval<_Up>())), 25082: typename 25082: = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> 25082: static true_type __test(int); 25082: 25082: template 25082: static false_type __test(...); 25082: }; 25082: 25082: struct __do_is_nothrow_swappable_with_impl 25082: { 25082: template 25082: static __bool_constant< 25082: noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) 25082: && 25082: noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())) 25082: > __test(int); 25082: 25082: template 25082: static false_type __test(...); 25082: }; 25082: 25082: } 25082: 25082: template 25082: struct __is_swappable_with_impl 25082: : public __swappable_with_details::__do_is_swappable_with_impl 25082: { 25082: typedef decltype(__test<_Tp, _Up>(0)) type; 25082: }; 25082: 25082: 25082: template 25082: struct __is_swappable_with_impl<_Tp&, _Tp&> 25082: : public __swappable_details::__do_is_swappable_impl 25082: { 25082: typedef decltype(__test<_Tp&>(0)) type; 25082: }; 25082: 25082: template 25082: struct __is_nothrow_swappable_with_impl 25082: : public __swappable_with_details::__do_is_nothrow_swappable_with_impl 25082: { 25082: typedef decltype(__test<_Tp, _Up>(0)) type; 25082: }; 25082: 25082: 25082: template 25082: struct __is_nothrow_swappable_with_impl<_Tp&, _Tp&> 25082: : public __swappable_details::__do_is_nothrow_swappable_impl 25082: { 25082: typedef decltype(__test<_Tp&>(0)) type; 25082: }; 25082: 25082: 25082: template 25082: struct is_swappable_with 25082: : public __is_swappable_with_impl<_Tp, _Up>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_swappable_with 25082: : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type 25082: { }; 25082: 25082: 25082: 25082: template 25082: inline constexpr bool is_swappable_with_v = 25082: is_swappable_with<_Tp, _Up>::value; 25082: 25082: 25082: template 25082: inline constexpr bool is_nothrow_swappable_with_v = 25082: is_nothrow_swappable_with<_Tp, _Up>::value; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_invocable_impl : false_type { }; 25082: 25082: template 25082: struct __is_invocable_impl<_Result, _Ret, __void_t> 25082: : __or_, is_convertible>::type 25082: { }; 25082: 25082: template 25082: struct __is_invocable 25082: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type 25082: { }; 25082: 25082: template 25082: constexpr bool __call_is_nt(__invoke_memfun_ref) 25082: { 25082: using _Up = typename __inv_unwrap<_Tp>::type; 25082: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( 25082: std::declval<_Args>()...)); 25082: } 25082: 25082: template 25082: constexpr bool __call_is_nt(__invoke_memfun_deref) 25082: { 25082: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( 25082: std::declval<_Args>()...)); 25082: } 25082: 25082: template 25082: constexpr bool __call_is_nt(__invoke_memobj_ref) 25082: { 25082: using _Up = typename __inv_unwrap<_Tp>::type; 25082: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); 25082: } 25082: 25082: template 25082: constexpr bool __call_is_nt(__invoke_memobj_deref) 25082: { 25082: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); 25082: } 25082: 25082: template 25082: constexpr bool __call_is_nt(__invoke_other) 25082: { 25082: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); 25082: } 25082: 25082: template 25082: struct __call_is_nothrow 25082: : __bool_constant< 25082: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) 25082: > 25082: { }; 25082: 25082: template 25082: using __call_is_nothrow_ 25082: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; 25082: 25082: 25082: template 25082: struct __is_nothrow_invocable 25082: : __and_<__is_invocable<_Fn, _Args...>, 25082: __call_is_nothrow_<_Fn, _Args...>>::type 25082: { }; 25082: 25082: struct __nonesuch { 25082: __nonesuch() = delete; 25082: ~__nonesuch() = delete; 25082: __nonesuch(__nonesuch const&) = delete; 25082: void operator=(__nonesuch const&) = delete; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct invoke_result 25082: : public __invoke_result<_Functor, _ArgTypes...> 25082: { }; 25082: 25082: 25082: template 25082: using invoke_result_t = typename invoke_result<_Fn, _Args...>::type; 25082: 25082: 25082: template 25082: struct is_invocable 25082: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_invocable_r 25082: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_invocable 25082: : __and_<__is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>, 25082: __call_is_nothrow_<_Fn, _ArgTypes...>>::type 25082: { }; 25082: 25082: template 25082: struct __is_nt_invocable_impl : false_type { }; 25082: 25082: template 25082: struct __is_nt_invocable_impl<_Result, _Ret, 25082: __void_t> 25082: : __or_, 25082: __and_, 25082: is_nothrow_constructible<_Ret, typename _Result::type>>> 25082: { }; 25082: 25082: 25082: template 25082: struct is_nothrow_invocable_r 25082: : __and_<__is_nt_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>, 25082: __call_is_nothrow_<_Fn, _ArgTypes...>>::type 25082: { }; 25082: 25082: 25082: template 25082: inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value; 25082: 25082: 25082: template 25082: inline constexpr bool is_nothrow_invocable_v 25082: = is_nothrow_invocable<_Fn, _Args...>::value; 25082: 25082: 25082: template 25082: inline constexpr bool is_invocable_r_v 25082: = is_invocable_r<_Fn, _Args...>::value; 25082: 25082: 25082: template 25082: inline constexpr bool is_nothrow_invocable_r_v 25082: = is_nothrow_invocable_r<_Fn, _Args...>::value; 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr bool is_void_v = is_void<_Tp>::value; 25082: template 25082: inline constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value; 25082: template 25082: inline constexpr bool is_integral_v = is_integral<_Tp>::value; 25082: template 25082: inline constexpr bool is_floating_point_v = is_floating_point<_Tp>::value; 25082: template 25082: inline constexpr bool is_array_v = is_array<_Tp>::value; 25082: template 25082: inline constexpr bool is_pointer_v = is_pointer<_Tp>::value; 25082: template 25082: inline constexpr bool is_lvalue_reference_v = 25082: is_lvalue_reference<_Tp>::value; 25082: template 25082: inline constexpr bool is_rvalue_reference_v = 25082: is_rvalue_reference<_Tp>::value; 25082: template 25082: inline constexpr bool is_member_object_pointer_v = 25082: is_member_object_pointer<_Tp>::value; 25082: template 25082: inline constexpr bool is_member_function_pointer_v = 25082: is_member_function_pointer<_Tp>::value; 25082: template 25082: inline constexpr bool is_enum_v = is_enum<_Tp>::value; 25082: template 25082: inline constexpr bool is_union_v = is_union<_Tp>::value; 25082: template 25082: inline constexpr bool is_class_v = is_class<_Tp>::value; 25082: template 25082: inline constexpr bool is_function_v = is_function<_Tp>::value; 25082: template 25082: inline constexpr bool is_reference_v = is_reference<_Tp>::value; 25082: template 25082: inline constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value; 25082: template 25082: inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value; 25082: template 25082: inline constexpr bool is_object_v = is_object<_Tp>::value; 25082: template 25082: inline constexpr bool is_scalar_v = is_scalar<_Tp>::value; 25082: template 25082: inline constexpr bool is_compound_v = is_compound<_Tp>::value; 25082: template 25082: inline constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value; 25082: template 25082: inline constexpr bool is_const_v = is_const<_Tp>::value; 25082: template 25082: inline constexpr bool is_volatile_v = is_volatile<_Tp>::value; 25082: template 25082: inline constexpr bool is_trivial_v = is_trivial<_Tp>::value; 25082: template 25082: inline constexpr bool is_trivially_copyable_v = 25082: is_trivially_copyable<_Tp>::value; 25082: template 25082: inline constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value; 25082: template 25082: inline constexpr bool is_pod_v = is_pod<_Tp>::value; 25082: template 25082: inline constexpr bool is_literal_type_v = is_literal_type<_Tp>::value; 25082: template 25082: inline constexpr bool is_empty_v = is_empty<_Tp>::value; 25082: template 25082: inline constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value; 25082: template 25082: inline constexpr bool is_abstract_v = is_abstract<_Tp>::value; 25082: template 25082: inline constexpr bool is_final_v = is_final<_Tp>::value; 25082: template 25082: inline constexpr bool is_signed_v = is_signed<_Tp>::value; 25082: template 25082: inline constexpr bool is_unsigned_v = is_unsigned<_Tp>::value; 25082: template 25082: inline constexpr bool is_constructible_v = 25082: is_constructible<_Tp, _Args...>::value; 25082: template 25082: inline constexpr bool is_default_constructible_v = 25082: is_default_constructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_copy_constructible_v = 25082: is_copy_constructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_move_constructible_v = 25082: is_move_constructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_assignable_v = is_assignable<_Tp, _Up>::value; 25082: template 25082: inline constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value; 25082: template 25082: inline constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value; 25082: template 25082: inline constexpr bool is_destructible_v = is_destructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_trivially_constructible_v = 25082: is_trivially_constructible<_Tp, _Args...>::value; 25082: template 25082: inline constexpr bool is_trivially_default_constructible_v = 25082: is_trivially_default_constructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_trivially_copy_constructible_v = 25082: is_trivially_copy_constructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_trivially_move_constructible_v = 25082: is_trivially_move_constructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_trivially_assignable_v = 25082: is_trivially_assignable<_Tp, _Up>::value; 25082: template 25082: inline constexpr bool is_trivially_copy_assignable_v = 25082: is_trivially_copy_assignable<_Tp>::value; 25082: template 25082: inline constexpr bool is_trivially_move_assignable_v = 25082: is_trivially_move_assignable<_Tp>::value; 25082: template 25082: inline constexpr bool is_trivially_destructible_v = 25082: is_trivially_destructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_nothrow_constructible_v = 25082: is_nothrow_constructible<_Tp, _Args...>::value; 25082: template 25082: inline constexpr bool is_nothrow_default_constructible_v = 25082: is_nothrow_default_constructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_nothrow_copy_constructible_v = 25082: is_nothrow_copy_constructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_nothrow_move_constructible_v = 25082: is_nothrow_move_constructible<_Tp>::value; 25082: template 25082: inline constexpr bool is_nothrow_assignable_v = 25082: is_nothrow_assignable<_Tp, _Up>::value; 25082: template 25082: inline constexpr bool is_nothrow_copy_assignable_v = 25082: is_nothrow_copy_assignable<_Tp>::value; 25082: template 25082: inline constexpr bool is_nothrow_move_assignable_v = 25082: is_nothrow_move_assignable<_Tp>::value; 25082: template 25082: inline constexpr bool is_nothrow_destructible_v = 25082: is_nothrow_destructible<_Tp>::value; 25082: template 25082: inline constexpr bool has_virtual_destructor_v = 25082: has_virtual_destructor<_Tp>::value; 25082: template 25082: inline constexpr size_t alignment_of_v = alignment_of<_Tp>::value; 25082: template 25082: inline constexpr size_t rank_v = rank<_Tp>::value; 25082: template 25082: inline constexpr size_t extent_v = extent<_Tp, _Idx>::value; 25082: template 25082: inline constexpr bool is_same_v = is_same<_Tp, _Up>::value; 25082: template 25082: inline constexpr bool is_base_of_v = is_base_of<_Base, _Derived>::value; 25082: template 25082: inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value; 25082: # 2926 "/usr/include/c++/8/type_traits" 3 25082: template 25082: struct has_unique_object_representations 25082: : bool_constant<__has_unique_object_representations( 25082: remove_cv_t> 25082: )> 25082: { }; 25082: 25082: template 25082: inline constexpr bool has_unique_object_representations_v 25082: = has_unique_object_representations<_Tp>::value; 25082: # 2951 "/usr/include/c++/8/type_traits" 3 25082: template 25082: struct is_aggregate 25082: : bool_constant<__is_aggregate(remove_cv_t<_Tp>)> { }; 25082: 25082: 25082: template 25082: inline constexpr bool is_aggregate_v = is_aggregate<_Tp>::value; 25082: # 2973 "/usr/include/c++/8/type_traits" 3 25082: 25082: } 25082: # 56 "/usr/include/c++/8/bits/move.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 72 "/usr/include/c++/8/bits/move.h" 3 25082: template 25082: constexpr _Tp&& 25082: forward(typename std::remove_reference<_Tp>::type& __t) noexcept 25082: { return static_cast<_Tp&&>(__t); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr _Tp&& 25082: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept 25082: { 25082: static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument" 25082: " substituting _Tp is an lvalue reference type"); 25082: return static_cast<_Tp&&>(__t); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr typename std::remove_reference<_Tp>::type&& 25082: move(_Tp&& __t) noexcept 25082: { return static_cast::type&&>(__t); } 25082: 25082: 25082: template 25082: struct __move_if_noexcept_cond 25082: : public __and_<__not_>, 25082: is_copy_constructible<_Tp>>::type { }; 25082: # 116 "/usr/include/c++/8/bits/move.h" 3 25082: template 25082: constexpr typename 25082: conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type 25082: move_if_noexcept(_Tp& __x) noexcept 25082: { return std::move(__x); } 25082: # 136 "/usr/include/c++/8/bits/move.h" 3 25082: template 25082: inline constexpr _Tp* 25082: addressof(_Tp& __r) noexcept 25082: { return std::__addressof(__r); } 25082: 25082: 25082: 25082: template 25082: const _Tp* addressof(const _Tp&&) = delete; 25082: 25082: 25082: template 25082: inline _Tp 25082: __exchange(_Tp& __obj, _Up&& __new_val) 25082: { 25082: _Tp __old_val = std::move(__obj); 25082: __obj = std::forward<_Up>(__new_val); 25082: return __old_val; 25082: } 25082: # 176 "/usr/include/c++/8/bits/move.h" 3 25082: template 25082: inline 25082: 25082: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 25082: is_move_constructible<_Tp>, 25082: is_move_assignable<_Tp>>::value>::type 25082: swap(_Tp& __a, _Tp& __b) 25082: noexcept(__and_, 25082: is_nothrow_move_assignable<_Tp>>::value) 25082: 25082: 25082: 25082: 25082: { 25082: 25082: 25082: 25082: _Tp __tmp = std::move(__a); 25082: __a = std::move(__b); 25082: __b = std::move(__tmp); 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: inline 25082: 25082: typename enable_if<__is_swappable<_Tp>::value>::type 25082: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 25082: noexcept(__is_nothrow_swappable<_Tp>::value) 25082: 25082: 25082: 25082: 25082: { 25082: for (size_t __n = 0; __n < _Nm; ++__n) 25082: swap(__a[__n], __b[__n]); 25082: } 25082: 25082: 25082: 25082: } 25082: # 60 "/usr/include/c++/8/bits/stl_pair.h" 2 3 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 76 "/usr/include/c++/8/bits/stl_pair.h" 3 25082: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; 25082: 25082: 25082: inline constexpr piecewise_construct_t piecewise_construct = 25082: piecewise_construct_t(); 25082: 25082: 25082: template 25082: class tuple; 25082: 25082: template 25082: struct _Index_tuple; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _PCC 25082: { 25082: template 25082: static constexpr bool _ConstructiblePair() 25082: { 25082: return __and_, 25082: is_constructible<_T2, const _U2&>>::value; 25082: } 25082: 25082: template 25082: static constexpr bool _ImplicitlyConvertiblePair() 25082: { 25082: return __and_, 25082: is_convertible>::value; 25082: } 25082: 25082: template 25082: static constexpr bool _MoveConstructiblePair() 25082: { 25082: return __and_, 25082: is_constructible<_T2, _U2&&>>::value; 25082: } 25082: 25082: template 25082: static constexpr bool _ImplicitlyMoveConvertiblePair() 25082: { 25082: return __and_, 25082: is_convertible<_U2&&, _T2>>::value; 25082: } 25082: 25082: template 25082: static constexpr bool _CopyMovePair() 25082: { 25082: using __do_converts = __and_, 25082: is_convertible<_U2&&, _T2>>; 25082: using __converts = typename conditional<__implicit, 25082: __do_converts, 25082: __not_<__do_converts>>::type; 25082: return __and_, 25082: is_constructible<_T2, _U2&&>, 25082: __converts 25082: >::value; 25082: } 25082: 25082: template 25082: static constexpr bool _MoveCopyPair() 25082: { 25082: using __do_converts = __and_, 25082: is_convertible>; 25082: using __converts = typename conditional<__implicit, 25082: __do_converts, 25082: __not_<__do_converts>>::type; 25082: return __and_, 25082: is_constructible<_T2, const _U2&&>, 25082: __converts 25082: >::value; 25082: } 25082: }; 25082: 25082: template 25082: struct _PCC 25082: { 25082: template 25082: static constexpr bool _ConstructiblePair() 25082: { 25082: return false; 25082: } 25082: 25082: template 25082: static constexpr bool _ImplicitlyConvertiblePair() 25082: { 25082: return false; 25082: } 25082: 25082: template 25082: static constexpr bool _MoveConstructiblePair() 25082: { 25082: return false; 25082: } 25082: 25082: template 25082: static constexpr bool _ImplicitlyMoveConvertiblePair() 25082: { 25082: return false; 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: struct __nonesuch_no_braces : std::__nonesuch { 25082: explicit __nonesuch_no_braces(const __nonesuch&) = delete; 25082: }; 25082: 25082: 25082: template class __pair_base 25082: { 25082: 25082: template friend struct pair; 25082: __pair_base() = default; 25082: ~__pair_base() = default; 25082: __pair_base(const __pair_base&) = default; 25082: __pair_base& operator=(const __pair_base&) = delete; 25082: 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct pair 25082: : private __pair_base<_T1, _T2> 25082: { 25082: typedef _T1 first_type; 25082: typedef _T2 second_type; 25082: 25082: _T1 first; 25082: _T2 second; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template , 25082: __is_implicitly_default_constructible<_U2>> 25082: ::value, bool>::type = true> 25082: 25082: constexpr pair() 25082: : first(), second() { } 25082: 25082: 25082: template , 25082: is_default_constructible<_U2>, 25082: __not_< 25082: __and_<__is_implicitly_default_constructible<_U1>, 25082: __is_implicitly_default_constructible<_U2>>>> 25082: ::value, bool>::type = false> 25082: explicit constexpr pair() 25082: : first(), second() { } 25082: # 252 "/usr/include/c++/8/bits/stl_pair.h" 3 25082: using _PCCP = _PCC; 25082: 25082: template() 25082: && _PCCP::template 25082: _ImplicitlyConvertiblePair<_U1, _U2>(), 25082: bool>::type=true> 25082: constexpr pair(const _T1& __a, const _T2& __b) 25082: : first(__a), second(__b) { } 25082: 25082: template() 25082: && !_PCCP::template 25082: _ImplicitlyConvertiblePair<_U1, _U2>(), 25082: bool>::type=false> 25082: explicit constexpr pair(const _T1& __a, const _T2& __b) 25082: : first(__a), second(__b) { } 25082: # 280 "/usr/include/c++/8/bits/stl_pair.h" 3 25082: template 25082: using _PCCFP = _PCC::value 25082: || !is_same<_T2, _U2>::value, 25082: _T1, _T2>; 25082: 25082: template::template 25082: _ConstructiblePair<_U1, _U2>() 25082: && _PCCFP<_U1, _U2>::template 25082: _ImplicitlyConvertiblePair<_U1, _U2>(), 25082: bool>::type=true> 25082: constexpr pair(const pair<_U1, _U2>& __p) 25082: : first(__p.first), second(__p.second) { } 25082: 25082: template::template 25082: _ConstructiblePair<_U1, _U2>() 25082: && !_PCCFP<_U1, _U2>::template 25082: _ImplicitlyConvertiblePair<_U1, _U2>(), 25082: bool>::type=false> 25082: explicit constexpr pair(const pair<_U1, _U2>& __p) 25082: : first(__p.first), second(__p.second) { } 25082: 25082: constexpr pair(const pair&) = default; 25082: constexpr pair(pair&&) = default; 25082: 25082: 25082: template(), 25082: bool>::type=true> 25082: constexpr pair(_U1&& __x, const _T2& __y) 25082: : first(std::forward<_U1>(__x)), second(__y) { } 25082: 25082: template(), 25082: bool>::type=false> 25082: explicit constexpr pair(_U1&& __x, const _T2& __y) 25082: : first(std::forward<_U1>(__x)), second(__y) { } 25082: 25082: template(), 25082: bool>::type=true> 25082: constexpr pair(const _T1& __x, _U2&& __y) 25082: : first(__x), second(std::forward<_U2>(__y)) { } 25082: 25082: template(), 25082: bool>::type=false> 25082: explicit pair(const _T1& __x, _U2&& __y) 25082: : first(__x), second(std::forward<_U2>(__y)) { } 25082: 25082: template() 25082: && _PCCP::template 25082: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 25082: bool>::type=true> 25082: constexpr pair(_U1&& __x, _U2&& __y) 25082: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } 25082: 25082: template() 25082: && !_PCCP::template 25082: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 25082: bool>::type=false> 25082: explicit constexpr pair(_U1&& __x, _U2&& __y) 25082: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } 25082: 25082: 25082: template::template 25082: _MoveConstructiblePair<_U1, _U2>() 25082: && _PCCFP<_U1, _U2>::template 25082: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 25082: bool>::type=true> 25082: constexpr pair(pair<_U1, _U2>&& __p) 25082: : first(std::forward<_U1>(__p.first)), 25082: second(std::forward<_U2>(__p.second)) { } 25082: 25082: template::template 25082: _MoveConstructiblePair<_U1, _U2>() 25082: && !_PCCFP<_U1, _U2>::template 25082: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 25082: bool>::type=false> 25082: explicit constexpr pair(pair<_U1, _U2>&& __p) 25082: : first(std::forward<_U1>(__p.first)), 25082: second(std::forward<_U2>(__p.second)) { } 25082: 25082: template 25082: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); 25082: 25082: pair& 25082: operator=(typename conditional< 25082: __and_, 25082: is_copy_assignable<_T2>>::value, 25082: const pair&, const __nonesuch_no_braces&>::type __p) 25082: { 25082: first = __p.first; 25082: second = __p.second; 25082: return *this; 25082: } 25082: 25082: pair& 25082: operator=(typename conditional< 25082: __and_, 25082: is_move_assignable<_T2>>::value, 25082: pair&&, __nonesuch_no_braces&&>::type __p) 25082: noexcept(__and_, 25082: is_nothrow_move_assignable<_T2>>::value) 25082: { 25082: first = std::forward(__p.first); 25082: second = std::forward(__p.second); 25082: return *this; 25082: } 25082: 25082: template 25082: typename enable_if<__and_, 25082: is_assignable<_T2&, const _U2&>>::value, 25082: pair&>::type 25082: operator=(const pair<_U1, _U2>& __p) 25082: { 25082: first = __p.first; 25082: second = __p.second; 25082: return *this; 25082: } 25082: 25082: template 25082: typename enable_if<__and_, 25082: is_assignable<_T2&, _U2&&>>::value, 25082: pair&>::type 25082: operator=(pair<_U1, _U2>&& __p) 25082: { 25082: first = std::forward<_U1>(__p.first); 25082: second = std::forward<_U2>(__p.second); 25082: return *this; 25082: } 25082: 25082: void 25082: swap(pair& __p) 25082: noexcept(__and_<__is_nothrow_swappable<_T1>, 25082: __is_nothrow_swappable<_T2>>::value) 25082: { 25082: using std::swap; 25082: swap(first, __p.first); 25082: swap(second, __p.second); 25082: } 25082: 25082: private: 25082: template 25082: pair(tuple<_Args1...>&, tuple<_Args2...>&, 25082: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); 25082: 25082: }; 25082: 25082: 25082: template pair(_T1, _T2) -> pair<_T1, _T2>; 25082: 25082: 25082: 25082: template 25082: inline constexpr bool 25082: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 25082: { return __x.first == __y.first && __x.second == __y.second; } 25082: 25082: 25082: template 25082: inline constexpr bool 25082: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 25082: { return __x.first < __y.first 25082: || (!(__y.first < __x.first) && __x.second < __y.second); } 25082: 25082: 25082: template 25082: inline constexpr bool 25082: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 25082: { return !(__x == __y); } 25082: 25082: 25082: template 25082: inline constexpr bool 25082: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 25082: { return __y < __x; } 25082: 25082: 25082: template 25082: inline constexpr bool 25082: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 25082: { return !(__y < __x); } 25082: 25082: 25082: template 25082: inline constexpr bool 25082: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 25082: { return !(__x < __y); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline 25082: 25082: 25082: typename enable_if<__and_<__is_swappable<_T1>, 25082: __is_swappable<_T2>>::value>::type 25082: 25082: 25082: 25082: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: 25082: template 25082: typename enable_if, 25082: __is_swappable<_T2>>::value>::type 25082: swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete; 25082: # 521 "/usr/include/c++/8/bits/stl_pair.h" 3 25082: template 25082: constexpr pair::__type, 25082: typename __decay_and_strip<_T2>::__type> 25082: make_pair(_T1&& __x, _T2&& __y) 25082: { 25082: typedef typename __decay_and_strip<_T1>::__type __ds_type1; 25082: typedef typename __decay_and_strip<_T2>::__type __ds_type2; 25082: typedef pair<__ds_type1, __ds_type2> __pair_type; 25082: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); 25082: } 25082: # 540 "/usr/include/c++/8/bits/stl_pair.h" 3 25082: 25082: } 25082: # 65 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 1 3 25082: # 62 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 25082: 25082: # 63 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 89 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 25082: struct input_iterator_tag { }; 25082: 25082: 25082: struct output_iterator_tag { }; 25082: 25082: 25082: struct forward_iterator_tag : public input_iterator_tag { }; 25082: 25082: 25082: 25082: struct bidirectional_iterator_tag : public forward_iterator_tag { }; 25082: 25082: 25082: 25082: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; 25082: # 116 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 25082: template 25082: struct iterator 25082: { 25082: 25082: typedef _Category iterator_category; 25082: 25082: typedef _Tp value_type; 25082: 25082: typedef _Distance difference_type; 25082: 25082: typedef _Pointer pointer; 25082: 25082: typedef _Reference reference; 25082: }; 25082: # 143 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 25082: template> 25082: struct __iterator_traits { }; 25082: 25082: template 25082: struct __iterator_traits<_Iterator, 25082: __void_t> 25082: { 25082: typedef typename _Iterator::iterator_category iterator_category; 25082: typedef typename _Iterator::value_type value_type; 25082: typedef typename _Iterator::difference_type difference_type; 25082: typedef typename _Iterator::pointer pointer; 25082: typedef typename _Iterator::reference reference; 25082: }; 25082: 25082: template 25082: struct iterator_traits 25082: : public __iterator_traits<_Iterator> { }; 25082: # 177 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 25082: template 25082: struct iterator_traits<_Tp*> 25082: { 25082: typedef random_access_iterator_tag iterator_category; 25082: typedef _Tp value_type; 25082: typedef ptrdiff_t difference_type; 25082: typedef _Tp* pointer; 25082: typedef _Tp& reference; 25082: }; 25082: 25082: 25082: template 25082: struct iterator_traits 25082: { 25082: typedef random_access_iterator_tag iterator_category; 25082: typedef _Tp value_type; 25082: typedef ptrdiff_t difference_type; 25082: typedef const _Tp* pointer; 25082: typedef const _Tp& reference; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr 25082: typename iterator_traits<_Iter>::iterator_category 25082: __iterator_category(const _Iter&) 25082: { return typename iterator_traits<_Iter>::iterator_category(); } 25082: # 231 "/usr/include/c++/8/bits/stl_iterator_base_types.h" 3 25082: template 25082: using _RequireInputIter = typename 25082: enable_if::iterator_category, 25082: input_iterator_tag>::value>::type; 25082: 25082: 25082: 25082: } 25082: # 66 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 1 3 25082: # 62 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 25082: 25082: # 63 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/debug/assertions.h" 1 3 25082: # 66 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: template struct _List_iterator; 25082: template struct _List_const_iterator; 25082: 25082: 25082: template 25082: inline constexpr 25082: typename iterator_traits<_InputIterator>::difference_type 25082: __distance(_InputIterator __first, _InputIterator __last, 25082: input_iterator_tag) 25082: { 25082: 25082: 25082: 25082: typename iterator_traits<_InputIterator>::difference_type __n = 0; 25082: while (__first != __last) 25082: { 25082: ++__first; 25082: ++__n; 25082: } 25082: return __n; 25082: } 25082: 25082: template 25082: inline constexpr 25082: typename iterator_traits<_RandomAccessIterator>::difference_type 25082: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: random_access_iterator_tag) 25082: { 25082: 25082: 25082: 25082: return __last - __first; 25082: } 25082: 25082: 25082: 25082: template 25082: ptrdiff_t 25082: __distance(std::_List_iterator<_Tp>, 25082: std::_List_iterator<_Tp>, 25082: input_iterator_tag); 25082: 25082: template 25082: ptrdiff_t 25082: __distance(std::_List_const_iterator<_Tp>, 25082: std::_List_const_iterator<_Tp>, 25082: input_iterator_tag); 25082: # 135 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 25082: template 25082: inline constexpr 25082: typename iterator_traits<_InputIterator>::difference_type 25082: distance(_InputIterator __first, _InputIterator __last) 25082: { 25082: 25082: return std::__distance(__first, __last, 25082: std::__iterator_category(__first)); 25082: } 25082: 25082: template 25082: inline constexpr void 25082: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) 25082: { 25082: 25082: 25082: ; 25082: while (__n--) 25082: ++__i; 25082: } 25082: 25082: template 25082: inline constexpr void 25082: __advance(_BidirectionalIterator& __i, _Distance __n, 25082: bidirectional_iterator_tag) 25082: { 25082: 25082: 25082: 25082: if (__n > 0) 25082: while (__n--) 25082: ++__i; 25082: else 25082: while (__n++) 25082: --__i; 25082: } 25082: 25082: template 25082: inline constexpr void 25082: __advance(_RandomAccessIterator& __i, _Distance __n, 25082: random_access_iterator_tag) 25082: { 25082: 25082: 25082: 25082: if (__builtin_constant_p(__n) && __n == 1) 25082: ++__i; 25082: else if (__builtin_constant_p(__n) && __n == -1) 25082: --__i; 25082: else 25082: __i += __n; 25082: } 25082: # 200 "/usr/include/c++/8/bits/stl_iterator_base_funcs.h" 3 25082: template 25082: inline constexpr void 25082: advance(_InputIterator& __i, _Distance __n) 25082: { 25082: 25082: typename iterator_traits<_InputIterator>::difference_type __d = __n; 25082: std::__advance(__i, __d, std::__iterator_category(__i)); 25082: } 25082: 25082: 25082: 25082: template 25082: inline constexpr _InputIterator 25082: next(_InputIterator __x, typename 25082: iterator_traits<_InputIterator>::difference_type __n = 1) 25082: { 25082: 25082: 25082: std::advance(__x, __n); 25082: return __x; 25082: } 25082: 25082: template 25082: inline constexpr _BidirectionalIterator 25082: prev(_BidirectionalIterator __x, typename 25082: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) 25082: { 25082: 25082: 25082: 25082: std::advance(__x, -__n); 25082: return __x; 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: # 67 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_iterator.h" 1 3 25082: # 66 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: # 1 "/usr/include/c++/8/bits/ptr_traits.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/ptr_traits.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: class __undefined; 25082: 25082: 25082: template 25082: struct __get_first_arg 25082: { using type = __undefined; }; 25082: 25082: template class _Template, typename _Tp, 25082: typename... _Types> 25082: struct __get_first_arg<_Template<_Tp, _Types...>> 25082: { using type = _Tp; }; 25082: 25082: template 25082: using __get_first_arg_t = typename __get_first_arg<_Tp>::type; 25082: 25082: 25082: template 25082: struct __replace_first_arg 25082: { }; 25082: 25082: template class _Template, typename _Up, 25082: typename _Tp, typename... _Types> 25082: struct __replace_first_arg<_Template<_Tp, _Types...>, _Up> 25082: { using type = _Template<_Up, _Types...>; }; 25082: 25082: template 25082: using __replace_first_arg_t = typename __replace_first_arg<_Tp, _Up>::type; 25082: 25082: template 25082: using __make_not_void 25082: = typename conditional::value, __undefined, _Tp>::type; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct pointer_traits 25082: { 25082: private: 25082: template 25082: using __element_type = typename _Tp::element_type; 25082: 25082: template 25082: using __difference_type = typename _Tp::difference_type; 25082: 25082: template 25082: struct __rebind : __replace_first_arg<_Tp, _Up> { }; 25082: 25082: template 25082: struct __rebind<_Tp, _Up, __void_t>> 25082: { using type = typename _Tp::template rebind<_Up>; }; 25082: 25082: public: 25082: 25082: using pointer = _Ptr; 25082: 25082: 25082: using element_type 25082: = __detected_or_t<__get_first_arg_t<_Ptr>, __element_type, _Ptr>; 25082: 25082: 25082: using difference_type 25082: = __detected_or_t; 25082: 25082: 25082: template 25082: using rebind = typename __rebind<_Ptr, _Up>::type; 25082: 25082: static _Ptr 25082: pointer_to(__make_not_void& __e) 25082: { return _Ptr::pointer_to(__e); } 25082: 25082: static_assert(!is_same::value, 25082: "pointer type defines element_type or is like SomePointer"); 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct pointer_traits<_Tp*> 25082: { 25082: 25082: typedef _Tp* pointer; 25082: 25082: typedef _Tp element_type; 25082: 25082: typedef ptrdiff_t difference_type; 25082: 25082: template 25082: using rebind = _Up*; 25082: 25082: 25082: 25082: 25082: 25082: 25082: static pointer 25082: pointer_to(__make_not_void& __r) noexcept 25082: { return std::addressof(__r); } 25082: }; 25082: 25082: 25082: template 25082: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; 25082: 25082: template 25082: constexpr _Tp* 25082: __to_address(_Tp* __ptr) noexcept 25082: { 25082: static_assert(!std::is_function<_Tp>::value, "not a function pointer"); 25082: return __ptr; 25082: } 25082: 25082: 25082: template 25082: constexpr typename std::pointer_traits<_Ptr>::element_type* 25082: __to_address(const _Ptr& __ptr) 25082: { return std::__to_address(__ptr.operator->()); } 25082: # 198 "/usr/include/c++/8/bits/ptr_traits.h" 3 25082: 25082: } 25082: # 67 "/usr/include/c++/8/bits/stl_iterator.h" 2 3 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 100 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: class reverse_iterator 25082: : public iterator::iterator_category, 25082: typename iterator_traits<_Iterator>::value_type, 25082: typename iterator_traits<_Iterator>::difference_type, 25082: typename iterator_traits<_Iterator>::pointer, 25082: typename iterator_traits<_Iterator>::reference> 25082: { 25082: protected: 25082: _Iterator current; 25082: 25082: typedef iterator_traits<_Iterator> __traits_type; 25082: 25082: public: 25082: typedef _Iterator iterator_type; 25082: typedef typename __traits_type::difference_type difference_type; 25082: typedef typename __traits_type::pointer pointer; 25082: typedef typename __traits_type::reference reference; 25082: # 126 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: constexpr 25082: reverse_iterator() : current() { } 25082: 25082: 25082: 25082: 25082: explicit constexpr 25082: reverse_iterator(iterator_type __x) : current(__x) { } 25082: 25082: 25082: 25082: 25082: constexpr 25082: reverse_iterator(const reverse_iterator& __x) 25082: : current(__x.current) { } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr 25082: reverse_iterator(const reverse_iterator<_Iter>& __x) 25082: : current(__x.base()) { } 25082: 25082: 25082: 25082: 25082: constexpr iterator_type 25082: base() const 25082: { return current; } 25082: # 168 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: constexpr reference 25082: operator*() const 25082: { 25082: _Iterator __tmp = current; 25082: return *--__tmp; 25082: } 25082: # 182 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: constexpr pointer 25082: operator->() const 25082: { return std::__addressof(operator*()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: constexpr reverse_iterator& 25082: operator++() 25082: { 25082: --current; 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: constexpr reverse_iterator 25082: operator++(int) 25082: { 25082: reverse_iterator __tmp = *this; 25082: --current; 25082: return __tmp; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: constexpr reverse_iterator& 25082: operator--() 25082: { 25082: ++current; 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: constexpr reverse_iterator 25082: operator--(int) 25082: { 25082: reverse_iterator __tmp = *this; 25082: ++current; 25082: return __tmp; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: constexpr reverse_iterator 25082: operator+(difference_type __n) const 25082: { return reverse_iterator(current - __n); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: constexpr reverse_iterator& 25082: operator+=(difference_type __n) 25082: { 25082: current -= __n; 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: constexpr reverse_iterator 25082: operator-(difference_type __n) const 25082: { return reverse_iterator(current + __n); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: constexpr reverse_iterator& 25082: operator-=(difference_type __n) 25082: { 25082: current += __n; 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: constexpr reference 25082: operator[](difference_type __n) const 25082: { return *(*this + __n); } 25082: }; 25082: # 300 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: inline constexpr bool 25082: operator==(const reverse_iterator<_Iterator>& __x, 25082: const reverse_iterator<_Iterator>& __y) 25082: { return __x.base() == __y.base(); } 25082: 25082: template 25082: inline constexpr bool 25082: operator<(const reverse_iterator<_Iterator>& __x, 25082: const reverse_iterator<_Iterator>& __y) 25082: { return __y.base() < __x.base(); } 25082: 25082: template 25082: inline constexpr bool 25082: operator!=(const reverse_iterator<_Iterator>& __x, 25082: const reverse_iterator<_Iterator>& __y) 25082: { return !(__x == __y); } 25082: 25082: template 25082: inline constexpr bool 25082: operator>(const reverse_iterator<_Iterator>& __x, 25082: const reverse_iterator<_Iterator>& __y) 25082: { return __y < __x; } 25082: 25082: template 25082: inline constexpr bool 25082: operator<=(const reverse_iterator<_Iterator>& __x, 25082: const reverse_iterator<_Iterator>& __y) 25082: { return !(__y < __x); } 25082: 25082: template 25082: inline constexpr bool 25082: operator>=(const reverse_iterator<_Iterator>& __x, 25082: const reverse_iterator<_Iterator>& __y) 25082: { return !(__x < __y); } 25082: 25082: 25082: 25082: template 25082: inline constexpr bool 25082: operator==(const reverse_iterator<_IteratorL>& __x, 25082: const reverse_iterator<_IteratorR>& __y) 25082: { return __x.base() == __y.base(); } 25082: 25082: template 25082: inline constexpr bool 25082: operator<(const reverse_iterator<_IteratorL>& __x, 25082: const reverse_iterator<_IteratorR>& __y) 25082: { return __y.base() < __x.base(); } 25082: 25082: template 25082: inline constexpr bool 25082: operator!=(const reverse_iterator<_IteratorL>& __x, 25082: const reverse_iterator<_IteratorR>& __y) 25082: { return !(__x == __y); } 25082: 25082: template 25082: inline constexpr bool 25082: operator>(const reverse_iterator<_IteratorL>& __x, 25082: const reverse_iterator<_IteratorR>& __y) 25082: { return __y < __x; } 25082: 25082: template 25082: inline constexpr bool 25082: operator<=(const reverse_iterator<_IteratorL>& __x, 25082: const reverse_iterator<_IteratorR>& __y) 25082: { return !(__y < __x); } 25082: 25082: template 25082: inline constexpr bool 25082: operator>=(const reverse_iterator<_IteratorL>& __x, 25082: const reverse_iterator<_IteratorR>& __y) 25082: { return !(__x < __y); } 25082: # 390 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: inline constexpr auto 25082: operator-(const reverse_iterator<_IteratorL>& __x, 25082: const reverse_iterator<_IteratorR>& __y) 25082: -> decltype(__y.base() - __x.base()) 25082: { return __y.base() - __x.base(); } 25082: 25082: 25082: template 25082: inline constexpr reverse_iterator<_Iterator> 25082: operator+(typename reverse_iterator<_Iterator>::difference_type __n, 25082: const reverse_iterator<_Iterator>& __x) 25082: { return reverse_iterator<_Iterator>(__x.base() - __n); } 25082: 25082: 25082: 25082: template 25082: inline constexpr reverse_iterator<_Iterator> 25082: __make_reverse_iterator(_Iterator __i) 25082: { return reverse_iterator<_Iterator>(__i); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr reverse_iterator<_Iterator> 25082: make_reverse_iterator(_Iterator __i) 25082: { return reverse_iterator<_Iterator>(__i); } 25082: 25082: 25082: 25082: 25082: template 25082: auto 25082: __niter_base(reverse_iterator<_Iterator> __it) 25082: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) 25082: { return __make_reverse_iterator(__niter_base(__it.base())); } 25082: 25082: template 25082: struct __is_move_iterator > 25082: : __is_move_iterator<_Iterator> 25082: { }; 25082: 25082: template 25082: auto 25082: __miter_base(reverse_iterator<_Iterator> __it) 25082: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) 25082: { return __make_reverse_iterator(__miter_base(__it.base())); } 25082: # 454 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: class back_insert_iterator 25082: : public iterator 25082: { 25082: protected: 25082: _Container* container; 25082: 25082: public: 25082: 25082: typedef _Container container_type; 25082: 25082: 25082: explicit 25082: back_insert_iterator(_Container& __x) 25082: : container(std::__addressof(__x)) { } 25082: # 489 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: back_insert_iterator& 25082: operator=(const typename _Container::value_type& __value) 25082: { 25082: container->push_back(__value); 25082: return *this; 25082: } 25082: 25082: back_insert_iterator& 25082: operator=(typename _Container::value_type&& __value) 25082: { 25082: container->push_back(std::move(__value)); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: back_insert_iterator& 25082: operator*() 25082: { return *this; } 25082: 25082: 25082: back_insert_iterator& 25082: operator++() 25082: { return *this; } 25082: 25082: 25082: back_insert_iterator 25082: operator++(int) 25082: { return *this; } 25082: }; 25082: # 531 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: inline back_insert_iterator<_Container> 25082: back_inserter(_Container& __x) 25082: { return back_insert_iterator<_Container>(__x); } 25082: # 546 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: class front_insert_iterator 25082: : public iterator 25082: { 25082: protected: 25082: _Container* container; 25082: 25082: public: 25082: 25082: typedef _Container container_type; 25082: 25082: 25082: explicit front_insert_iterator(_Container& __x) 25082: : container(std::__addressof(__x)) { } 25082: # 580 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: front_insert_iterator& 25082: operator=(const typename _Container::value_type& __value) 25082: { 25082: container->push_front(__value); 25082: return *this; 25082: } 25082: 25082: front_insert_iterator& 25082: operator=(typename _Container::value_type&& __value) 25082: { 25082: container->push_front(std::move(__value)); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: front_insert_iterator& 25082: operator*() 25082: { return *this; } 25082: 25082: 25082: front_insert_iterator& 25082: operator++() 25082: { return *this; } 25082: 25082: 25082: front_insert_iterator 25082: operator++(int) 25082: { return *this; } 25082: }; 25082: # 622 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: inline front_insert_iterator<_Container> 25082: front_inserter(_Container& __x) 25082: { return front_insert_iterator<_Container>(__x); } 25082: # 641 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: class insert_iterator 25082: : public iterator 25082: { 25082: protected: 25082: _Container* container; 25082: typename _Container::iterator iter; 25082: 25082: public: 25082: 25082: typedef _Container container_type; 25082: 25082: 25082: 25082: 25082: 25082: insert_iterator(_Container& __x, typename _Container::iterator __i) 25082: : container(std::__addressof(__x)), iter(__i) {} 25082: # 692 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: insert_iterator& 25082: operator=(const typename _Container::value_type& __value) 25082: { 25082: iter = container->insert(iter, __value); 25082: ++iter; 25082: return *this; 25082: } 25082: 25082: insert_iterator& 25082: operator=(typename _Container::value_type&& __value) 25082: { 25082: iter = container->insert(iter, std::move(__value)); 25082: ++iter; 25082: return *this; 25082: } 25082: 25082: 25082: 25082: insert_iterator& 25082: operator*() 25082: { return *this; } 25082: 25082: 25082: insert_iterator& 25082: operator++() 25082: { return *this; } 25082: 25082: 25082: insert_iterator& 25082: operator++(int) 25082: { return *this; } 25082: }; 25082: # 737 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: inline insert_iterator<_Container> 25082: inserter(_Container& __x, _Iterator __i) 25082: { 25082: return insert_iterator<_Container>(__x, 25082: typename _Container::iterator(__i)); 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 761 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: using std::iterator_traits; 25082: using std::iterator; 25082: template 25082: class __normal_iterator 25082: { 25082: protected: 25082: _Iterator _M_current; 25082: 25082: typedef iterator_traits<_Iterator> __traits_type; 25082: 25082: public: 25082: typedef _Iterator iterator_type; 25082: typedef typename __traits_type::iterator_category iterator_category; 25082: typedef typename __traits_type::value_type value_type; 25082: typedef typename __traits_type::difference_type difference_type; 25082: typedef typename __traits_type::reference reference; 25082: typedef typename __traits_type::pointer pointer; 25082: 25082: constexpr __normal_iterator() noexcept 25082: : _M_current(_Iterator()) { } 25082: 25082: explicit 25082: __normal_iterator(const _Iterator& __i) noexcept 25082: : _M_current(__i) { } 25082: 25082: 25082: template 25082: __normal_iterator(const __normal_iterator<_Iter, 25082: typename __enable_if< 25082: (std::__are_same<_Iter, typename _Container::pointer>::__value), 25082: _Container>::__type>& __i) noexcept 25082: : _M_current(__i.base()) { } 25082: 25082: 25082: reference 25082: operator*() const noexcept 25082: { return *_M_current; } 25082: 25082: pointer 25082: operator->() const noexcept 25082: { return _M_current; } 25082: 25082: __normal_iterator& 25082: operator++() noexcept 25082: { 25082: ++_M_current; 25082: return *this; 25082: } 25082: 25082: __normal_iterator 25082: operator++(int) noexcept 25082: { return __normal_iterator(_M_current++); } 25082: 25082: 25082: __normal_iterator& 25082: operator--() noexcept 25082: { 25082: --_M_current; 25082: return *this; 25082: } 25082: 25082: __normal_iterator 25082: operator--(int) noexcept 25082: { return __normal_iterator(_M_current--); } 25082: 25082: 25082: reference 25082: operator[](difference_type __n) const noexcept 25082: { return _M_current[__n]; } 25082: 25082: __normal_iterator& 25082: operator+=(difference_type __n) noexcept 25082: { _M_current += __n; return *this; } 25082: 25082: __normal_iterator 25082: operator+(difference_type __n) const noexcept 25082: { return __normal_iterator(_M_current + __n); } 25082: 25082: __normal_iterator& 25082: operator-=(difference_type __n) noexcept 25082: { _M_current -= __n; return *this; } 25082: 25082: __normal_iterator 25082: operator-(difference_type __n) const noexcept 25082: { return __normal_iterator(_M_current - __n); } 25082: 25082: const _Iterator& 25082: base() const noexcept 25082: { return _M_current; } 25082: }; 25082: # 861 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: inline bool 25082: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, 25082: const __normal_iterator<_IteratorR, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() == __rhs.base(); } 25082: 25082: template 25082: inline bool 25082: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, 25082: const __normal_iterator<_Iterator, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() == __rhs.base(); } 25082: 25082: template 25082: inline bool 25082: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, 25082: const __normal_iterator<_IteratorR, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() != __rhs.base(); } 25082: 25082: template 25082: inline bool 25082: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, 25082: const __normal_iterator<_Iterator, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() != __rhs.base(); } 25082: 25082: 25082: template 25082: inline bool 25082: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, 25082: const __normal_iterator<_IteratorR, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() < __rhs.base(); } 25082: 25082: template 25082: inline bool 25082: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, 25082: const __normal_iterator<_Iterator, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() < __rhs.base(); } 25082: 25082: template 25082: inline bool 25082: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, 25082: const __normal_iterator<_IteratorR, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() > __rhs.base(); } 25082: 25082: template 25082: inline bool 25082: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, 25082: const __normal_iterator<_Iterator, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() > __rhs.base(); } 25082: 25082: template 25082: inline bool 25082: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, 25082: const __normal_iterator<_IteratorR, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() <= __rhs.base(); } 25082: 25082: template 25082: inline bool 25082: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, 25082: const __normal_iterator<_Iterator, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() <= __rhs.base(); } 25082: 25082: template 25082: inline bool 25082: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, 25082: const __normal_iterator<_IteratorR, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() >= __rhs.base(); } 25082: 25082: template 25082: inline bool 25082: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, 25082: const __normal_iterator<_Iterator, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() >= __rhs.base(); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: 25082: 25082: inline auto 25082: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, 25082: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept 25082: -> decltype(__lhs.base() - __rhs.base()) 25082: 25082: 25082: 25082: 25082: 25082: { return __lhs.base() - __rhs.base(); } 25082: 25082: template 25082: inline typename __normal_iterator<_Iterator, _Container>::difference_type 25082: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, 25082: const __normal_iterator<_Iterator, _Container>& __rhs) 25082: noexcept 25082: { return __lhs.base() - __rhs.base(); } 25082: 25082: template 25082: inline __normal_iterator<_Iterator, _Container> 25082: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type 25082: __n, const __normal_iterator<_Iterator, _Container>& __i) 25082: noexcept 25082: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } 25082: 25082: 25082: } 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: _Iterator 25082: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) 25082: { return __it.base(); } 25082: # 1006 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: class move_iterator 25082: { 25082: protected: 25082: _Iterator _M_current; 25082: 25082: typedef iterator_traits<_Iterator> __traits_type; 25082: typedef typename __traits_type::reference __base_ref; 25082: 25082: public: 25082: typedef _Iterator iterator_type; 25082: typedef typename __traits_type::iterator_category iterator_category; 25082: typedef typename __traits_type::value_type value_type; 25082: typedef typename __traits_type::difference_type difference_type; 25082: 25082: typedef _Iterator pointer; 25082: 25082: 25082: typedef typename conditional::value, 25082: typename remove_reference<__base_ref>::type&&, 25082: __base_ref>::type reference; 25082: 25082: constexpr 25082: move_iterator() 25082: : _M_current() { } 25082: 25082: explicit constexpr 25082: move_iterator(iterator_type __i) 25082: : _M_current(__i) { } 25082: 25082: template 25082: constexpr 25082: move_iterator(const move_iterator<_Iter>& __i) 25082: : _M_current(__i.base()) { } 25082: 25082: constexpr iterator_type 25082: base() const 25082: { return _M_current; } 25082: 25082: constexpr reference 25082: operator*() const 25082: { return static_cast(*_M_current); } 25082: 25082: constexpr pointer 25082: operator->() const 25082: { return _M_current; } 25082: 25082: constexpr move_iterator& 25082: operator++() 25082: { 25082: ++_M_current; 25082: return *this; 25082: } 25082: 25082: constexpr move_iterator 25082: operator++(int) 25082: { 25082: move_iterator __tmp = *this; 25082: ++_M_current; 25082: return __tmp; 25082: } 25082: 25082: constexpr move_iterator& 25082: operator--() 25082: { 25082: --_M_current; 25082: return *this; 25082: } 25082: 25082: constexpr move_iterator 25082: operator--(int) 25082: { 25082: move_iterator __tmp = *this; 25082: --_M_current; 25082: return __tmp; 25082: } 25082: 25082: constexpr move_iterator 25082: operator+(difference_type __n) const 25082: { return move_iterator(_M_current + __n); } 25082: 25082: constexpr move_iterator& 25082: operator+=(difference_type __n) 25082: { 25082: _M_current += __n; 25082: return *this; 25082: } 25082: 25082: constexpr move_iterator 25082: operator-(difference_type __n) const 25082: { return move_iterator(_M_current - __n); } 25082: 25082: constexpr move_iterator& 25082: operator-=(difference_type __n) 25082: { 25082: _M_current -= __n; 25082: return *this; 25082: } 25082: 25082: constexpr reference 25082: operator[](difference_type __n) const 25082: { return std::move(_M_current[__n]); } 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr bool 25082: operator==(const move_iterator<_IteratorL>& __x, 25082: const move_iterator<_IteratorR>& __y) 25082: { return __x.base() == __y.base(); } 25082: 25082: template 25082: inline constexpr bool 25082: operator==(const move_iterator<_Iterator>& __x, 25082: const move_iterator<_Iterator>& __y) 25082: { return __x.base() == __y.base(); } 25082: 25082: template 25082: inline constexpr bool 25082: operator!=(const move_iterator<_IteratorL>& __x, 25082: const move_iterator<_IteratorR>& __y) 25082: { return !(__x == __y); } 25082: 25082: template 25082: inline constexpr bool 25082: operator!=(const move_iterator<_Iterator>& __x, 25082: const move_iterator<_Iterator>& __y) 25082: { return !(__x == __y); } 25082: 25082: template 25082: inline constexpr bool 25082: operator<(const move_iterator<_IteratorL>& __x, 25082: const move_iterator<_IteratorR>& __y) 25082: { return __x.base() < __y.base(); } 25082: 25082: template 25082: inline constexpr bool 25082: operator<(const move_iterator<_Iterator>& __x, 25082: const move_iterator<_Iterator>& __y) 25082: { return __x.base() < __y.base(); } 25082: 25082: template 25082: inline constexpr bool 25082: operator<=(const move_iterator<_IteratorL>& __x, 25082: const move_iterator<_IteratorR>& __y) 25082: { return !(__y < __x); } 25082: 25082: template 25082: inline constexpr bool 25082: operator<=(const move_iterator<_Iterator>& __x, 25082: const move_iterator<_Iterator>& __y) 25082: { return !(__y < __x); } 25082: 25082: template 25082: inline constexpr bool 25082: operator>(const move_iterator<_IteratorL>& __x, 25082: const move_iterator<_IteratorR>& __y) 25082: { return __y < __x; } 25082: 25082: template 25082: inline constexpr bool 25082: operator>(const move_iterator<_Iterator>& __x, 25082: const move_iterator<_Iterator>& __y) 25082: { return __y < __x; } 25082: 25082: template 25082: inline constexpr bool 25082: operator>=(const move_iterator<_IteratorL>& __x, 25082: const move_iterator<_IteratorR>& __y) 25082: { return !(__x < __y); } 25082: 25082: template 25082: inline constexpr bool 25082: operator>=(const move_iterator<_Iterator>& __x, 25082: const move_iterator<_Iterator>& __y) 25082: { return !(__x < __y); } 25082: 25082: 25082: template 25082: inline constexpr auto 25082: operator-(const move_iterator<_IteratorL>& __x, 25082: const move_iterator<_IteratorR>& __y) 25082: -> decltype(__x.base() - __y.base()) 25082: { return __x.base() - __y.base(); } 25082: 25082: template 25082: inline constexpr move_iterator<_Iterator> 25082: operator+(typename move_iterator<_Iterator>::difference_type __n, 25082: const move_iterator<_Iterator>& __x) 25082: { return __x + __n; } 25082: 25082: template 25082: inline constexpr move_iterator<_Iterator> 25082: make_move_iterator(_Iterator __i) 25082: { return move_iterator<_Iterator>(__i); } 25082: 25082: template::value_type>::value, 25082: _Iterator, move_iterator<_Iterator>>::type> 25082: inline constexpr _ReturnType 25082: __make_move_if_noexcept_iterator(_Iterator __i) 25082: { return _ReturnType(__i); } 25082: 25082: 25082: 25082: template::value, 25082: const _Tp*, move_iterator<_Tp*>>::type> 25082: inline constexpr _ReturnType 25082: __make_move_if_noexcept_iterator(_Tp* __i) 25082: { return _ReturnType(__i); } 25082: 25082: 25082: 25082: template 25082: auto 25082: __niter_base(move_iterator<_Iterator> __it) 25082: -> decltype(make_move_iterator(__niter_base(__it.base()))) 25082: { return make_move_iterator(__niter_base(__it.base())); } 25082: 25082: template 25082: struct __is_move_iterator > 25082: { 25082: enum { __value = 1 }; 25082: typedef __true_type __type; 25082: }; 25082: 25082: template 25082: auto 25082: __miter_base(move_iterator<_Iterator> __it) 25082: -> decltype(__miter_base(__it.base())) 25082: { return __miter_base(__it.base()); } 25082: # 1253 "/usr/include/c++/8/bits/stl_iterator.h" 3 25082: template 25082: using __iter_key_t = remove_const_t< 25082: typename iterator_traits<_InputIterator>::value_type::first_type>; 25082: 25082: template 25082: using __iter_val_t = 25082: typename iterator_traits<_InputIterator>::value_type::second_type; 25082: 25082: template 25082: struct pair; 25082: 25082: template 25082: using __iter_to_alloc_t = 25082: pair>, 25082: __iter_val_t<_InputIterator>>; 25082: 25082: 25082: 25082: 25082: } 25082: # 68 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: 25082: # 1 "/usr/include/c++/8/debug/debug.h" 1 3 25082: # 48 "/usr/include/c++/8/debug/debug.h" 3 25082: namespace std 25082: { 25082: namespace __debug { } 25082: } 25082: 25082: 25082: 25082: 25082: namespace __gnu_debug 25082: { 25082: using namespace std::__debug; 25082: } 25082: # 70 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: 25082: # 1 "/usr/include/c++/8/bits/predefined_ops.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/predefined_ops.h" 3 25082: namespace __gnu_cxx 25082: { 25082: namespace __ops 25082: { 25082: struct _Iter_less_iter 25082: { 25082: template 25082: constexpr 25082: bool 25082: operator()(_Iterator1 __it1, _Iterator2 __it2) const 25082: { return *__it1 < *__it2; } 25082: }; 25082: 25082: constexpr 25082: inline _Iter_less_iter 25082: __iter_less_iter() 25082: { return _Iter_less_iter(); } 25082: 25082: struct _Iter_less_val 25082: { 25082: 25082: constexpr _Iter_less_val() = default; 25082: 25082: 25082: 25082: 25082: explicit 25082: _Iter_less_val(_Iter_less_iter) { } 25082: 25082: template 25082: bool 25082: operator()(_Iterator __it, _Value& __val) const 25082: { return *__it < __val; } 25082: }; 25082: 25082: inline _Iter_less_val 25082: __iter_less_val() 25082: { return _Iter_less_val(); } 25082: 25082: inline _Iter_less_val 25082: __iter_comp_val(_Iter_less_iter) 25082: { return _Iter_less_val(); } 25082: 25082: struct _Val_less_iter 25082: { 25082: 25082: constexpr _Val_less_iter() = default; 25082: 25082: 25082: 25082: 25082: explicit 25082: _Val_less_iter(_Iter_less_iter) { } 25082: 25082: template 25082: bool 25082: operator()(_Value& __val, _Iterator __it) const 25082: { return __val < *__it; } 25082: }; 25082: 25082: inline _Val_less_iter 25082: __val_less_iter() 25082: { return _Val_less_iter(); } 25082: 25082: inline _Val_less_iter 25082: __val_comp_iter(_Iter_less_iter) 25082: { return _Val_less_iter(); } 25082: 25082: struct _Iter_equal_to_iter 25082: { 25082: template 25082: bool 25082: operator()(_Iterator1 __it1, _Iterator2 __it2) const 25082: { return *__it1 == *__it2; } 25082: }; 25082: 25082: inline _Iter_equal_to_iter 25082: __iter_equal_to_iter() 25082: { return _Iter_equal_to_iter(); } 25082: 25082: struct _Iter_equal_to_val 25082: { 25082: template 25082: bool 25082: operator()(_Iterator __it, _Value& __val) const 25082: { return *__it == __val; } 25082: }; 25082: 25082: inline _Iter_equal_to_val 25082: __iter_equal_to_val() 25082: { return _Iter_equal_to_val(); } 25082: 25082: inline _Iter_equal_to_val 25082: __iter_comp_val(_Iter_equal_to_iter) 25082: { return _Iter_equal_to_val(); } 25082: 25082: template 25082: struct _Iter_comp_iter 25082: { 25082: _Compare _M_comp; 25082: 25082: explicit constexpr 25082: _Iter_comp_iter(_Compare __comp) 25082: : _M_comp(std::move(__comp)) 25082: { } 25082: 25082: template 25082: constexpr 25082: bool 25082: operator()(_Iterator1 __it1, _Iterator2 __it2) 25082: { return bool(_M_comp(*__it1, *__it2)); } 25082: }; 25082: 25082: template 25082: constexpr 25082: inline _Iter_comp_iter<_Compare> 25082: __iter_comp_iter(_Compare __comp) 25082: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } 25082: 25082: template 25082: struct _Iter_comp_val 25082: { 25082: _Compare _M_comp; 25082: 25082: explicit 25082: _Iter_comp_val(_Compare __comp) 25082: : _M_comp(std::move(__comp)) 25082: { } 25082: 25082: explicit 25082: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) 25082: : _M_comp(__comp._M_comp) 25082: { } 25082: 25082: 25082: explicit 25082: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) 25082: : _M_comp(std::move(__comp._M_comp)) 25082: { } 25082: 25082: 25082: template 25082: bool 25082: operator()(_Iterator __it, _Value& __val) 25082: { return bool(_M_comp(*__it, __val)); } 25082: }; 25082: 25082: template 25082: inline _Iter_comp_val<_Compare> 25082: __iter_comp_val(_Compare __comp) 25082: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 25082: 25082: template 25082: inline _Iter_comp_val<_Compare> 25082: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) 25082: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 25082: 25082: template 25082: struct _Val_comp_iter 25082: { 25082: _Compare _M_comp; 25082: 25082: explicit 25082: _Val_comp_iter(_Compare __comp) 25082: : _M_comp(std::move(__comp)) 25082: { } 25082: 25082: explicit 25082: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) 25082: : _M_comp(__comp._M_comp) 25082: { } 25082: 25082: 25082: explicit 25082: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) 25082: : _M_comp(std::move(__comp._M_comp)) 25082: { } 25082: 25082: 25082: template 25082: bool 25082: operator()(_Value& __val, _Iterator __it) 25082: { return bool(_M_comp(__val, *__it)); } 25082: }; 25082: 25082: template 25082: inline _Val_comp_iter<_Compare> 25082: __val_comp_iter(_Compare __comp) 25082: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 25082: 25082: template 25082: inline _Val_comp_iter<_Compare> 25082: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) 25082: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 25082: 25082: template 25082: struct _Iter_equals_val 25082: { 25082: _Value& _M_value; 25082: 25082: explicit 25082: _Iter_equals_val(_Value& __value) 25082: : _M_value(__value) 25082: { } 25082: 25082: template 25082: bool 25082: operator()(_Iterator __it) 25082: { return *__it == _M_value; } 25082: }; 25082: 25082: template 25082: inline _Iter_equals_val<_Value> 25082: __iter_equals_val(_Value& __val) 25082: { return _Iter_equals_val<_Value>(__val); } 25082: 25082: template 25082: struct _Iter_equals_iter 25082: { 25082: _Iterator1 _M_it1; 25082: 25082: explicit 25082: _Iter_equals_iter(_Iterator1 __it1) 25082: : _M_it1(__it1) 25082: { } 25082: 25082: template 25082: bool 25082: operator()(_Iterator2 __it2) 25082: { return *__it2 == *_M_it1; } 25082: }; 25082: 25082: template 25082: inline _Iter_equals_iter<_Iterator> 25082: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) 25082: { return _Iter_equals_iter<_Iterator>(__it); } 25082: 25082: template 25082: struct _Iter_pred 25082: { 25082: _Predicate _M_pred; 25082: 25082: explicit 25082: _Iter_pred(_Predicate __pred) 25082: : _M_pred(std::move(__pred)) 25082: { } 25082: 25082: template 25082: bool 25082: operator()(_Iterator __it) 25082: { return bool(_M_pred(*__it)); } 25082: }; 25082: 25082: template 25082: inline _Iter_pred<_Predicate> 25082: __pred_iter(_Predicate __pred) 25082: { return _Iter_pred<_Predicate>(std::move(__pred)); } 25082: 25082: template 25082: struct _Iter_comp_to_val 25082: { 25082: _Compare _M_comp; 25082: _Value& _M_value; 25082: 25082: _Iter_comp_to_val(_Compare __comp, _Value& __value) 25082: : _M_comp(std::move(__comp)), _M_value(__value) 25082: { } 25082: 25082: template 25082: bool 25082: operator()(_Iterator __it) 25082: { return bool(_M_comp(*__it, _M_value)); } 25082: }; 25082: 25082: template 25082: _Iter_comp_to_val<_Compare, _Value> 25082: __iter_comp_val(_Compare __comp, _Value &__val) 25082: { 25082: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); 25082: } 25082: 25082: template 25082: struct _Iter_comp_to_iter 25082: { 25082: _Compare _M_comp; 25082: _Iterator1 _M_it1; 25082: 25082: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) 25082: : _M_comp(std::move(__comp)), _M_it1(__it1) 25082: { } 25082: 25082: template 25082: bool 25082: operator()(_Iterator2 __it2) 25082: { return bool(_M_comp(*__it2, *_M_it1)); } 25082: }; 25082: 25082: template 25082: inline _Iter_comp_to_iter<_Compare, _Iterator> 25082: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) 25082: { 25082: return _Iter_comp_to_iter<_Compare, _Iterator>( 25082: std::move(__comp._M_comp), __it); 25082: } 25082: 25082: template 25082: struct _Iter_negate 25082: { 25082: _Predicate _M_pred; 25082: 25082: explicit 25082: _Iter_negate(_Predicate __pred) 25082: : _M_pred(std::move(__pred)) 25082: { } 25082: 25082: template 25082: bool 25082: operator()(_Iterator __it) 25082: { return !bool(_M_pred(*__it)); } 25082: }; 25082: 25082: template 25082: inline _Iter_negate<_Predicate> 25082: __negate(_Iter_pred<_Predicate> __pred) 25082: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } 25082: 25082: } 25082: } 25082: # 72 "/usr/include/c++/8/bits/stl_algobase.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 118 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline void 25082: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 25082: { 25082: 25082: 25082: 25082: 25082: # 148 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: swap(*__a, *__b); 25082: 25082: } 25082: # 164 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: _ForwardIterator2 25082: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: for (; __first1 != __last1; ++__first1, (void)++__first2) 25082: std::iter_swap(__first1, __first2); 25082: return __first2; 25082: } 25082: # 192 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: constexpr 25082: inline const _Tp& 25082: min(const _Tp& __a, const _Tp& __b) 25082: { 25082: 25082: 25082: 25082: if (__b < __a) 25082: return __b; 25082: return __a; 25082: } 25082: # 216 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: constexpr 25082: inline const _Tp& 25082: max(const _Tp& __a, const _Tp& __b) 25082: { 25082: 25082: 25082: 25082: if (__a < __b) 25082: return __b; 25082: return __a; 25082: } 25082: # 240 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: constexpr 25082: inline const _Tp& 25082: min(const _Tp& __a, const _Tp& __b, _Compare __comp) 25082: { 25082: 25082: if (__comp(__b, __a)) 25082: return __b; 25082: return __a; 25082: } 25082: # 262 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: constexpr 25082: inline const _Tp& 25082: max(const _Tp& __a, const _Tp& __b, _Compare __comp) 25082: { 25082: 25082: if (__comp(__a, __b)) 25082: return __b; 25082: return __a; 25082: } 25082: 25082: 25082: 25082: template 25082: inline _Iterator 25082: __niter_base(_Iterator __it) 25082: { return __it; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __copy_move 25082: { 25082: template 25082: static _OI 25082: __copy_m(_II __first, _II __last, _OI __result) 25082: { 25082: for (; __first != __last; ++__result, (void)++__first) 25082: *__result = *__first; 25082: return __result; 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct __copy_move 25082: { 25082: template 25082: static _OI 25082: __copy_m(_II __first, _II __last, _OI __result) 25082: { 25082: for (; __first != __last; ++__result, (void)++__first) 25082: *__result = std::move(*__first); 25082: return __result; 25082: } 25082: }; 25082: 25082: 25082: template<> 25082: struct __copy_move 25082: { 25082: template 25082: static _OI 25082: __copy_m(_II __first, _II __last, _OI __result) 25082: { 25082: typedef typename iterator_traits<_II>::difference_type _Distance; 25082: for(_Distance __n = __last - __first; __n > 0; --__n) 25082: { 25082: *__result = *__first; 25082: ++__first; 25082: ++__result; 25082: } 25082: return __result; 25082: } 25082: }; 25082: 25082: 25082: template<> 25082: struct __copy_move 25082: { 25082: template 25082: static _OI 25082: __copy_m(_II __first, _II __last, _OI __result) 25082: { 25082: typedef typename iterator_traits<_II>::difference_type _Distance; 25082: for(_Distance __n = __last - __first; __n > 0; --__n) 25082: { 25082: *__result = std::move(*__first); 25082: ++__first; 25082: ++__result; 25082: } 25082: return __result; 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct __copy_move<_IsMove, true, random_access_iterator_tag> 25082: { 25082: template 25082: static _Tp* 25082: __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) 25082: { 25082: 25082: using __assignable = conditional<_IsMove, 25082: is_move_assignable<_Tp>, 25082: is_copy_assignable<_Tp>>; 25082: 25082: static_assert( __assignable::type::value, "type is not assignable" ); 25082: 25082: const ptrdiff_t _Num = __last - __first; 25082: if (_Num) 25082: __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); 25082: return __result + _Num; 25082: } 25082: }; 25082: 25082: template 25082: inline _OI 25082: __copy_move_a(_II __first, _II __last, _OI __result) 25082: { 25082: typedef typename iterator_traits<_II>::value_type _ValueTypeI; 25082: typedef typename iterator_traits<_OI>::value_type _ValueTypeO; 25082: typedef typename iterator_traits<_II>::iterator_category _Category; 25082: const bool __simple = (__is_trivial(_ValueTypeI) 25082: && __is_pointer<_II>::__value 25082: && __is_pointer<_OI>::__value 25082: && __are_same<_ValueTypeI, _ValueTypeO>::__value); 25082: 25082: return std::__copy_move<_IsMove, __simple, 25082: _Category>::__copy_m(__first, __last, __result); 25082: } 25082: 25082: 25082: 25082: template 25082: struct char_traits; 25082: 25082: template 25082: class istreambuf_iterator; 25082: 25082: template 25082: class ostreambuf_iterator; 25082: 25082: template 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 25082: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 25082: __copy_move_a2(_CharT*, _CharT*, 25082: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 25082: 25082: template 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 25082: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 25082: __copy_move_a2(const _CharT*, const _CharT*, 25082: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 25082: 25082: template 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 25082: _CharT*>::__type 25082: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, 25082: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); 25082: 25082: template 25082: inline _OI 25082: __copy_move_a2(_II __first, _II __last, _OI __result) 25082: { 25082: return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first), 25082: std::__niter_base(__last), 25082: std::__niter_base(__result))); 25082: } 25082: # 444 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline _OI 25082: copy(_II __first, _II __last, _OI __result) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return (std::__copy_move_a2<__is_move_iterator<_II>::__value> 25082: (std::__miter_base(__first), std::__miter_base(__last), 25082: __result)); 25082: } 25082: # 477 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline _OI 25082: move(_II __first, _II __last, _OI __result) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__copy_move_a2(std::__miter_base(__first), 25082: std::__miter_base(__last), __result); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __copy_move_backward 25082: { 25082: template 25082: static _BI2 25082: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 25082: { 25082: while (__first != __last) 25082: *--__result = *--__last; 25082: return __result; 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct __copy_move_backward 25082: { 25082: template 25082: static _BI2 25082: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 25082: { 25082: while (__first != __last) 25082: *--__result = std::move(*--__last); 25082: return __result; 25082: } 25082: }; 25082: 25082: 25082: template<> 25082: struct __copy_move_backward 25082: { 25082: template 25082: static _BI2 25082: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 25082: { 25082: typename iterator_traits<_BI1>::difference_type __n; 25082: for (__n = __last - __first; __n > 0; --__n) 25082: *--__result = *--__last; 25082: return __result; 25082: } 25082: }; 25082: 25082: 25082: template<> 25082: struct __copy_move_backward 25082: { 25082: template 25082: static _BI2 25082: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 25082: { 25082: typename iterator_traits<_BI1>::difference_type __n; 25082: for (__n = __last - __first; __n > 0; --__n) 25082: *--__result = std::move(*--__last); 25082: return __result; 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> 25082: { 25082: template 25082: static _Tp* 25082: __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) 25082: { 25082: 25082: using __assignable = conditional<_IsMove, 25082: is_move_assignable<_Tp>, 25082: is_copy_assignable<_Tp>>; 25082: 25082: static_assert( __assignable::type::value, "type is not assignable" ); 25082: 25082: const ptrdiff_t _Num = __last - __first; 25082: if (_Num) 25082: __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); 25082: return __result - _Num; 25082: } 25082: }; 25082: 25082: template 25082: inline _BI2 25082: __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result) 25082: { 25082: typedef typename iterator_traits<_BI1>::value_type _ValueType1; 25082: typedef typename iterator_traits<_BI2>::value_type _ValueType2; 25082: typedef typename iterator_traits<_BI1>::iterator_category _Category; 25082: const bool __simple = (__is_trivial(_ValueType1) 25082: && __is_pointer<_BI1>::__value 25082: && __is_pointer<_BI2>::__value 25082: && __are_same<_ValueType1, _ValueType2>::__value); 25082: 25082: return std::__copy_move_backward<_IsMove, __simple, 25082: _Category>::__copy_move_b(__first, 25082: __last, 25082: __result); 25082: } 25082: 25082: template 25082: inline _BI2 25082: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) 25082: { 25082: return _BI2(std::__copy_move_backward_a<_IsMove> 25082: (std::__niter_base(__first), std::__niter_base(__last), 25082: std::__niter_base(__result))); 25082: } 25082: # 620 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline _BI2 25082: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value> 25082: (std::__miter_base(__first), std::__miter_base(__last), 25082: __result)); 25082: } 25082: # 656 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline _BI2 25082: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__copy_move_backward_a2(std::__miter_base(__first), 25082: std::__miter_base(__last), 25082: __result); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline typename 25082: __gnu_cxx::__enable_if::__value, void>::__type 25082: __fill_a(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __value) 25082: { 25082: for (; __first != __last; ++__first) 25082: *__first = __value; 25082: } 25082: 25082: template 25082: inline typename 25082: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type 25082: __fill_a(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __value) 25082: { 25082: const _Tp __tmp = __value; 25082: for (; __first != __last; ++__first) 25082: *__first = __tmp; 25082: } 25082: 25082: 25082: template 25082: inline typename 25082: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type 25082: __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c) 25082: { 25082: const _Tp __tmp = __c; 25082: if (const size_t __len = __last - __first) 25082: __builtin_memset(__first, static_cast(__tmp), __len); 25082: } 25082: # 722 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline void 25082: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) 25082: { 25082: 25082: 25082: 25082: ; 25082: 25082: std::__fill_a(std::__niter_base(__first), std::__niter_base(__last), 25082: __value); 25082: } 25082: 25082: template 25082: inline typename 25082: __gnu_cxx::__enable_if::__value, _OutputIterator>::__type 25082: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) 25082: { 25082: for (__decltype(__n + 0) __niter = __n; 25082: __niter > 0; --__niter, (void) ++__first) 25082: *__first = __value; 25082: return __first; 25082: } 25082: 25082: template 25082: inline typename 25082: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type 25082: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) 25082: { 25082: const _Tp __tmp = __value; 25082: for (__decltype(__n + 0) __niter = __n; 25082: __niter > 0; --__niter, (void) ++__first) 25082: *__first = __tmp; 25082: return __first; 25082: } 25082: 25082: template 25082: inline typename 25082: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type 25082: __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c) 25082: { 25082: std::__fill_a(__first, __first + __n, __c); 25082: return __first + __n; 25082: } 25082: # 782 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline _OI 25082: fill_n(_OI __first, _Size __n, const _Tp& __value) 25082: { 25082: 25082: 25082: 25082: return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); 25082: } 25082: 25082: template 25082: struct __equal 25082: { 25082: template 25082: static bool 25082: equal(_II1 __first1, _II1 __last1, _II2 __first2) 25082: { 25082: for (; __first1 != __last1; ++__first1, (void) ++__first2) 25082: if (!(*__first1 == *__first2)) 25082: return false; 25082: return true; 25082: } 25082: }; 25082: 25082: template<> 25082: struct __equal 25082: { 25082: template 25082: static bool 25082: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) 25082: { 25082: if (const size_t __len = (__last1 - __first1)) 25082: return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len); 25082: return true; 25082: } 25082: }; 25082: 25082: template 25082: inline bool 25082: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) 25082: { 25082: typedef typename iterator_traits<_II1>::value_type _ValueType1; 25082: typedef typename iterator_traits<_II2>::value_type _ValueType2; 25082: const bool __simple = ((__is_integer<_ValueType1>::__value 25082: || __is_pointer<_ValueType1>::__value) 25082: && __is_pointer<_II1>::__value 25082: && __is_pointer<_II2>::__value 25082: && __are_same<_ValueType1, _ValueType2>::__value); 25082: 25082: return std::__equal<__simple>::equal(__first1, __last1, __first2); 25082: } 25082: 25082: template 25082: struct __lc_rai 25082: { 25082: template 25082: static _II1 25082: __newlast1(_II1, _II1 __last1, _II2, _II2) 25082: { return __last1; } 25082: 25082: template 25082: static bool 25082: __cnd2(_II __first, _II __last) 25082: { return __first != __last; } 25082: }; 25082: 25082: template<> 25082: struct __lc_rai 25082: { 25082: template 25082: static _RAI1 25082: __newlast1(_RAI1 __first1, _RAI1 __last1, 25082: _RAI2 __first2, _RAI2 __last2) 25082: { 25082: const typename iterator_traits<_RAI1>::difference_type 25082: __diff1 = __last1 - __first1; 25082: const typename iterator_traits<_RAI2>::difference_type 25082: __diff2 = __last2 - __first2; 25082: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; 25082: } 25082: 25082: template 25082: static bool 25082: __cnd2(_RAI, _RAI) 25082: { return true; } 25082: }; 25082: 25082: template 25082: bool 25082: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, 25082: _II2 __first2, _II2 __last2, 25082: _Compare __comp) 25082: { 25082: typedef typename iterator_traits<_II1>::iterator_category _Category1; 25082: typedef typename iterator_traits<_II2>::iterator_category _Category2; 25082: typedef std::__lc_rai<_Category1, _Category2> __rai_type; 25082: 25082: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); 25082: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); 25082: ++__first1, (void)++__first2) 25082: { 25082: if (__comp(__first1, __first2)) 25082: return true; 25082: if (__comp(__first2, __first1)) 25082: return false; 25082: } 25082: return __first1 == __last1 && __first2 != __last2; 25082: } 25082: 25082: template 25082: struct __lexicographical_compare 25082: { 25082: template 25082: static bool __lc(_II1, _II1, _II2, _II2); 25082: }; 25082: 25082: template 25082: template 25082: bool 25082: __lexicographical_compare<_BoolType>:: 25082: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 25082: { 25082: return std::__lexicographical_compare_impl(__first1, __last1, 25082: __first2, __last2, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: 25082: template<> 25082: struct __lexicographical_compare 25082: { 25082: template 25082: static bool 25082: __lc(const _Tp* __first1, const _Tp* __last1, 25082: const _Up* __first2, const _Up* __last2) 25082: { 25082: const size_t __len1 = __last1 - __first1; 25082: const size_t __len2 = __last2 - __first2; 25082: if (const size_t __len = std::min(__len1, __len2)) 25082: if (int __result = __builtin_memcmp(__first1, __first2, __len)) 25082: return __result < 0; 25082: return __len1 < __len2; 25082: } 25082: }; 25082: 25082: template 25082: inline bool 25082: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, 25082: _II2 __first2, _II2 __last2) 25082: { 25082: typedef typename iterator_traits<_II1>::value_type _ValueType1; 25082: typedef typename iterator_traits<_II2>::value_type _ValueType2; 25082: const bool __simple = 25082: (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value 25082: && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed 25082: && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed 25082: && __is_pointer<_II1>::__value 25082: && __is_pointer<_II2>::__value); 25082: 25082: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, 25082: __first2, __last2); 25082: } 25082: 25082: template 25082: _ForwardIterator 25082: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val, _Compare __comp) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::difference_type 25082: _DistanceType; 25082: 25082: _DistanceType __len = std::distance(__first, __last); 25082: 25082: while (__len > 0) 25082: { 25082: _DistanceType __half = __len >> 1; 25082: _ForwardIterator __middle = __first; 25082: std::advance(__middle, __half); 25082: if (__comp(__middle, __val)) 25082: { 25082: __first = __middle; 25082: ++__first; 25082: __len = __len - __half - 1; 25082: } 25082: else 25082: __len = __half; 25082: } 25082: return __first; 25082: } 25082: # 982 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline _ForwardIterator 25082: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__lower_bound(__first, __last, __val, 25082: __gnu_cxx::__ops::__iter_less_val()); 25082: } 25082: 25082: 25082: 25082: inline constexpr int 25082: __lg(int __n) 25082: { return sizeof(int) * 8 - 1 - __builtin_clz(__n); } 25082: 25082: inline constexpr unsigned 25082: __lg(unsigned __n) 25082: { return sizeof(int) * 8 - 1 - __builtin_clz(__n); } 25082: 25082: inline constexpr long 25082: __lg(long __n) 25082: { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); } 25082: 25082: inline constexpr unsigned long 25082: __lg(unsigned long __n) 25082: { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); } 25082: 25082: inline constexpr long long 25082: __lg(long long __n) 25082: { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } 25082: 25082: inline constexpr unsigned long long 25082: __lg(unsigned long long __n) 25082: { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } 25082: 25082: 25082: # 1037 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline bool 25082: equal(_II1 __first1, _II1 __last1, _II2 __first2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__equal_aux(std::__niter_base(__first1), 25082: std::__niter_base(__last1), 25082: std::__niter_base(__first2)); 25082: } 25082: # 1069 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline bool 25082: equal(_IIter1 __first1, _IIter1 __last1, 25082: _IIter2 __first2, _BinaryPredicate __binary_pred) 25082: { 25082: 25082: 25082: 25082: ; 25082: 25082: for (; __first1 != __last1; ++__first1, (void)++__first2) 25082: if (!bool(__binary_pred(*__first1, *__first2))) 25082: return false; 25082: return true; 25082: } 25082: 25082: 25082: 25082: template 25082: inline bool 25082: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 25082: { 25082: using _RATag = random_access_iterator_tag; 25082: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 25082: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 25082: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 25082: if (_RAIters()) 25082: { 25082: auto __d1 = std::distance(__first1, __last1); 25082: auto __d2 = std::distance(__first2, __last2); 25082: if (__d1 != __d2) 25082: return false; 25082: return std::equal(__first1, __last1, __first2); 25082: } 25082: 25082: for (; __first1 != __last1 && __first2 != __last2; 25082: ++__first1, (void)++__first2) 25082: if (!(*__first1 == *__first2)) 25082: return false; 25082: return __first1 == __last1 && __first2 == __last2; 25082: } 25082: 25082: 25082: template 25082: inline bool 25082: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, 25082: _BinaryPredicate __binary_pred) 25082: { 25082: using _RATag = random_access_iterator_tag; 25082: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 25082: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 25082: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 25082: if (_RAIters()) 25082: { 25082: auto __d1 = std::distance(__first1, __last1); 25082: auto __d2 = std::distance(__first2, __last2); 25082: if (__d1 != __d2) 25082: return false; 25082: return std::equal(__first1, __last1, __first2, 25082: __binary_pred); 25082: } 25082: 25082: for (; __first1 != __last1 && __first2 != __last2; 25082: ++__first1, (void)++__first2) 25082: if (!bool(__binary_pred(*__first1, *__first2))) 25082: return false; 25082: return __first1 == __last1 && __first2 == __last2; 25082: } 25082: # 1156 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline bool 25082: equal(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__equal4(__first1, __last1, __first2, __last2); 25082: } 25082: # 1188 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline bool 25082: equal(_IIter1 __first1, _IIter1 __last1, 25082: _IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred) 25082: { 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__equal4(__first1, __last1, __first2, __last2, 25082: __binary_pred); 25082: } 25082: # 1219 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline bool 25082: lexicographical_compare(_II1 __first1, _II1 __last1, 25082: _II2 __first2, _II2 __last2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__lexicographical_compare_aux(std::__niter_base(__first1), 25082: std::__niter_base(__last1), 25082: std::__niter_base(__first2), 25082: std::__niter_base(__last2)); 25082: } 25082: # 1255 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline bool 25082: lexicographical_compare(_II1 __first1, _II1 __last1, 25082: _II2 __first2, _II2 __last2, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__lexicographical_compare_impl 25082: (__first1, __last1, __first2, __last2, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: pair<_InputIterator1, _InputIterator2> 25082: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 25082: { 25082: while (__first1 != __last1 && __binary_pred(__first1, __first2)) 25082: { 25082: ++__first1; 25082: ++__first2; 25082: } 25082: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 25082: } 25082: # 1298 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline pair<_InputIterator1, _InputIterator2> 25082: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__mismatch(__first1, __last1, __first2, 25082: __gnu_cxx::__ops::__iter_equal_to_iter()); 25082: } 25082: # 1331 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline pair<_InputIterator1, _InputIterator2> 25082: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 25082: { 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__mismatch(__first1, __last1, __first2, 25082: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 25082: } 25082: 25082: 25082: 25082: template 25082: pair<_InputIterator1, _InputIterator2> 25082: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _BinaryPredicate __binary_pred) 25082: { 25082: while (__first1 != __last1 && __first2 != __last2 25082: && __binary_pred(__first1, __first2)) 25082: { 25082: ++__first1; 25082: ++__first2; 25082: } 25082: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 25082: } 25082: # 1378 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline pair<_InputIterator1, _InputIterator2> 25082: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__mismatch(__first1, __last1, __first2, __last2, 25082: __gnu_cxx::__ops::__iter_equal_to_iter()); 25082: } 25082: # 1413 "/usr/include/c++/8/bits/stl_algobase.h" 3 25082: template 25082: inline pair<_InputIterator1, _InputIterator2> 25082: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _BinaryPredicate __binary_pred) 25082: { 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__mismatch(__first1, __last1, __first2, __last2, 25082: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: # 63 "/usr/include/c++/8/memory" 2 3 25082: # 1 "/usr/include/c++/8/bits/allocator.h" 1 3 25082: # 46 "/usr/include/c++/8/bits/allocator.h" 3 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++allocator.h" 1 3 25082: # 33 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++allocator.h" 3 25082: # 1 "/usr/include/c++/8/ext/new_allocator.h" 1 3 25082: # 33 "/usr/include/c++/8/ext/new_allocator.h" 3 25082: # 1 "/usr/include/c++/8/new" 1 3 25082: # 37 "/usr/include/c++/8/new" 3 25082: 25082: # 38 "/usr/include/c++/8/new" 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/exception" 1 3 25082: # 33 "/usr/include/c++/8/exception" 3 25082: 25082: # 34 "/usr/include/c++/8/exception" 3 25082: 25082: #pragma GCC visibility push(default) 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/exception.h" 1 3 25082: # 34 "/usr/include/c++/8/bits/exception.h" 3 25082: 25082: # 35 "/usr/include/c++/8/bits/exception.h" 3 25082: 25082: #pragma GCC visibility push(default) 25082: 25082: 25082: 25082: extern "C++" { 25082: 25082: namespace std 25082: { 25082: # 60 "/usr/include/c++/8/bits/exception.h" 3 25082: class exception 25082: { 25082: public: 25082: exception() noexcept { } 25082: virtual ~exception() noexcept; 25082: 25082: 25082: 25082: virtual const char* 25082: what() const noexcept; 25082: }; 25082: 25082: } 25082: 25082: } 25082: 25082: #pragma GCC visibility pop 25082: # 39 "/usr/include/c++/8/exception" 2 3 25082: 25082: extern "C++" { 25082: 25082: namespace std 25082: { 25082: 25082: 25082: class bad_exception : public exception 25082: { 25082: public: 25082: bad_exception() noexcept { } 25082: 25082: 25082: 25082: virtual ~bad_exception() noexcept; 25082: 25082: 25082: virtual const char* 25082: what() const noexcept; 25082: }; 25082: 25082: 25082: typedef void (*terminate_handler) (); 25082: 25082: 25082: typedef void (*unexpected_handler) (); 25082: 25082: 25082: terminate_handler set_terminate(terminate_handler) noexcept; 25082: 25082: 25082: 25082: terminate_handler get_terminate() noexcept; 25082: 25082: 25082: 25082: 25082: void terminate() noexcept __attribute__ ((__noreturn__)); 25082: 25082: 25082: unexpected_handler set_unexpected(unexpected_handler) noexcept; 25082: 25082: 25082: 25082: unexpected_handler get_unexpected() noexcept; 25082: 25082: 25082: 25082: 25082: void unexpected() __attribute__ ((__noreturn__)); 25082: # 101 "/usr/include/c++/8/exception" 3 25082: [[__deprecated__]] 25082: bool uncaught_exception() noexcept __attribute__ ((__pure__)); 25082: 25082: 25082: 25082: 25082: int uncaught_exceptions() noexcept __attribute__ ((__pure__)); 25082: 25082: 25082: 25082: } 25082: 25082: namespace __gnu_cxx 25082: { 25082: 25082: # 133 "/usr/include/c++/8/exception" 3 25082: void __verbose_terminate_handler(); 25082: 25082: 25082: } 25082: 25082: } 25082: 25082: #pragma GCC visibility pop 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/exception_ptr.h" 1 3 25082: # 34 "/usr/include/c++/8/bits/exception_ptr.h" 3 25082: #pragma GCC visibility push(default) 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 1 3 25082: # 34 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 3 25082: 25082: # 35 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 3 25082: 25082: #pragma GCC visibility push(default) 25082: 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 149 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 3 4 25082: typedef long int ptrdiff_t; 25082: # 216 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 3 4 25082: typedef long unsigned int size_t; 25082: # 426 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 3 4 25082: typedef struct { 25082: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); 25082: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); 25082: # 437 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 3 4 25082: } max_align_t; 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef decltype(nullptr) nullptr_t; 25082: # 39 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 2 3 25082: # 50 "/usr/include/c++/8/bits/cxxabi_init_exception.h" 3 25082: namespace std 25082: { 25082: class type_info; 25082: } 25082: 25082: namespace __cxxabiv1 25082: { 25082: struct __cxa_refcounted_exception; 25082: 25082: extern "C" 25082: { 25082: 25082: void* 25082: __cxa_allocate_exception(size_t) noexcept; 25082: 25082: void 25082: __cxa_free_exception(void*) noexcept; 25082: 25082: 25082: __cxa_refcounted_exception* 25082: __cxa_init_primary_exception(void *object, std::type_info *tinfo, 25082: void ( *dest) (void *)) noexcept; 25082: 25082: } 25082: } 25082: 25082: 25082: 25082: #pragma GCC visibility pop 25082: # 39 "/usr/include/c++/8/bits/exception_ptr.h" 2 3 25082: # 1 "/usr/include/c++/8/typeinfo" 1 3 25082: # 32 "/usr/include/c++/8/typeinfo" 3 25082: 25082: # 33 "/usr/include/c++/8/typeinfo" 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/hash_bytes.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/hash_bytes.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/hash_bytes.h" 3 25082: 25082: 25082: 25082: namespace std 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_t 25082: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); 25082: 25082: 25082: 25082: 25082: 25082: size_t 25082: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); 25082: 25082: 25082: } 25082: # 37 "/usr/include/c++/8/typeinfo" 2 3 25082: 25082: 25082: #pragma GCC visibility push(default) 25082: 25082: extern "C++" { 25082: 25082: namespace __cxxabiv1 25082: { 25082: class __class_type_info; 25082: } 25082: # 80 "/usr/include/c++/8/typeinfo" 3 25082: namespace std 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: class type_info 25082: { 25082: public: 25082: 25082: 25082: 25082: 25082: virtual ~type_info(); 25082: 25082: 25082: 25082: const char* name() const noexcept 25082: { return __name[0] == '*' ? __name + 1 : __name; } 25082: # 115 "/usr/include/c++/8/typeinfo" 3 25082: bool before(const type_info& __arg) const noexcept 25082: { return (__name[0] == '*' && __arg.__name[0] == '*') 25082: ? __name < __arg.__name 25082: : __builtin_strcmp (__name, __arg.__name) < 0; } 25082: 25082: bool operator==(const type_info& __arg) const noexcept 25082: { 25082: return ((__name == __arg.__name) 25082: || (__name[0] != '*' && 25082: __builtin_strcmp (__name, __arg.__name) == 0)); 25082: } 25082: # 136 "/usr/include/c++/8/typeinfo" 3 25082: bool operator!=(const type_info& __arg) const noexcept 25082: { return !operator==(__arg); } 25082: 25082: 25082: size_t hash_code() const noexcept 25082: { 25082: 25082: return _Hash_bytes(name(), __builtin_strlen(name()), 25082: static_cast(0xc70f6907UL)); 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: virtual bool __is_pointer_p() const; 25082: 25082: 25082: virtual bool __is_function_p() const; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, 25082: unsigned __outer) const; 25082: 25082: 25082: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, 25082: void **__obj_ptr) const; 25082: 25082: protected: 25082: const char *__name; 25082: 25082: explicit type_info(const char *__n): __name(__n) { } 25082: 25082: private: 25082: 25082: type_info& operator=(const type_info&); 25082: type_info(const type_info&); 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: class bad_cast : public exception 25082: { 25082: public: 25082: bad_cast() noexcept { } 25082: 25082: 25082: 25082: virtual ~bad_cast() noexcept; 25082: 25082: 25082: virtual const char* what() const noexcept; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: class bad_typeid : public exception 25082: { 25082: public: 25082: bad_typeid () noexcept { } 25082: 25082: 25082: 25082: virtual ~bad_typeid() noexcept; 25082: 25082: 25082: virtual const char* what() const noexcept; 25082: }; 25082: } 25082: 25082: } 25082: 25082: #pragma GCC visibility pop 25082: # 40 "/usr/include/c++/8/bits/exception_ptr.h" 2 3 25082: # 1 "/usr/include/c++/8/new" 1 3 25082: # 41 "/usr/include/c++/8/bits/exception_ptr.h" 2 3 25082: 25082: extern "C++" { 25082: 25082: namespace std 25082: { 25082: class type_info; 25082: 25082: 25082: 25082: 25082: 25082: namespace __exception_ptr 25082: { 25082: class exception_ptr; 25082: } 25082: 25082: using __exception_ptr::exception_ptr; 25082: 25082: 25082: 25082: 25082: 25082: exception_ptr current_exception() noexcept; 25082: 25082: template 25082: exception_ptr make_exception_ptr(_Ex) noexcept; 25082: 25082: 25082: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); 25082: 25082: namespace __exception_ptr 25082: { 25082: using std::rethrow_exception; 25082: 25082: 25082: 25082: 25082: 25082: class exception_ptr 25082: { 25082: void* _M_exception_object; 25082: 25082: explicit exception_ptr(void* __e) noexcept; 25082: 25082: void _M_addref() noexcept; 25082: void _M_release() noexcept; 25082: 25082: void *_M_get() const noexcept __attribute__ ((__pure__)); 25082: 25082: friend exception_ptr std::current_exception() noexcept; 25082: friend void std::rethrow_exception(exception_ptr); 25082: template 25082: friend exception_ptr std::make_exception_ptr(_Ex) noexcept; 25082: 25082: public: 25082: exception_ptr() noexcept; 25082: 25082: exception_ptr(const exception_ptr&) noexcept; 25082: 25082: 25082: exception_ptr(nullptr_t) noexcept 25082: : _M_exception_object(0) 25082: { } 25082: 25082: exception_ptr(exception_ptr&& __o) noexcept 25082: : _M_exception_object(__o._M_exception_object) 25082: { __o._M_exception_object = 0; } 25082: # 117 "/usr/include/c++/8/bits/exception_ptr.h" 3 25082: exception_ptr& 25082: operator=(const exception_ptr&) noexcept; 25082: 25082: 25082: exception_ptr& 25082: operator=(exception_ptr&& __o) noexcept 25082: { 25082: exception_ptr(static_cast(__o)).swap(*this); 25082: return *this; 25082: } 25082: 25082: 25082: ~exception_ptr() noexcept; 25082: 25082: void 25082: swap(exception_ptr&) noexcept; 25082: # 144 "/usr/include/c++/8/bits/exception_ptr.h" 3 25082: explicit operator bool() const 25082: { return _M_exception_object; } 25082: 25082: 25082: friend bool 25082: operator==(const exception_ptr&, const exception_ptr&) 25082: noexcept __attribute__ ((__pure__)); 25082: 25082: const class std::type_info* 25082: __cxa_exception_type() const noexcept 25082: __attribute__ ((__pure__)); 25082: }; 25082: 25082: bool 25082: operator==(const exception_ptr&, const exception_ptr&) 25082: noexcept __attribute__ ((__pure__)); 25082: 25082: bool 25082: operator!=(const exception_ptr&, const exception_ptr&) 25082: noexcept __attribute__ ((__pure__)); 25082: 25082: inline void 25082: swap(exception_ptr& __lhs, exception_ptr& __rhs) 25082: { __lhs.swap(__rhs); } 25082: 25082: template 25082: inline void 25082: __dest_thunk(void* __x) 25082: { static_cast<_Ex*>(__x)->~_Ex(); } 25082: 25082: } 25082: 25082: 25082: template 25082: exception_ptr 25082: make_exception_ptr(_Ex __ex) noexcept 25082: { 25082: 25082: void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); 25082: (void) __cxxabiv1::__cxa_init_primary_exception( 25082: __e, const_cast(&typeid(__ex)), 25082: __exception_ptr::__dest_thunk<_Ex>); 25082: try 25082: { 25082: ::new (__e) _Ex(__ex); 25082: return exception_ptr(__e); 25082: } 25082: catch(...) 25082: { 25082: __cxxabiv1::__cxa_free_exception(__e); 25082: return current_exception(); 25082: } 25082: # 208 "/usr/include/c++/8/bits/exception_ptr.h" 3 25082: } 25082: 25082: 25082: } 25082: 25082: } 25082: 25082: #pragma GCC visibility pop 25082: # 144 "/usr/include/c++/8/exception" 2 3 25082: # 1 "/usr/include/c++/8/bits/nested_exception.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/nested_exception.h" 3 25082: #pragma GCC visibility push(default) 25082: # 42 "/usr/include/c++/8/bits/nested_exception.h" 3 25082: extern "C++" { 25082: 25082: namespace std 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: class nested_exception 25082: { 25082: exception_ptr _M_ptr; 25082: 25082: public: 25082: nested_exception() noexcept : _M_ptr(current_exception()) { } 25082: 25082: nested_exception(const nested_exception&) noexcept = default; 25082: 25082: nested_exception& operator=(const nested_exception&) noexcept = default; 25082: 25082: virtual ~nested_exception() noexcept; 25082: 25082: [[noreturn]] 25082: void 25082: rethrow_nested() const 25082: { 25082: if (_M_ptr) 25082: rethrow_exception(_M_ptr); 25082: std::terminate(); 25082: } 25082: 25082: exception_ptr 25082: nested_ptr() const noexcept 25082: { return _M_ptr; } 25082: }; 25082: 25082: template 25082: struct _Nested_exception : public _Except, public nested_exception 25082: { 25082: explicit _Nested_exception(const _Except& __ex) 25082: : _Except(__ex) 25082: { } 25082: 25082: explicit _Nested_exception(_Except&& __ex) 25082: : _Except(static_cast<_Except&&>(__ex)) 25082: { } 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: [[noreturn]] 25082: inline void 25082: __throw_with_nested_impl(_Tp&& __t, true_type) 25082: { 25082: using _Up = typename remove_reference<_Tp>::type; 25082: throw _Nested_exception<_Up>{std::forward<_Tp>(__t)}; 25082: } 25082: 25082: template 25082: [[noreturn]] 25082: inline void 25082: __throw_with_nested_impl(_Tp&& __t, false_type) 25082: { throw std::forward<_Tp>(__t); } 25082: 25082: 25082: 25082: template 25082: [[noreturn]] 25082: inline void 25082: throw_with_nested(_Tp&& __t) 25082: { 25082: using _Up = typename decay<_Tp>::type; 25082: using _CopyConstructible 25082: = __and_, is_move_constructible<_Up>>; 25082: static_assert(_CopyConstructible::value, 25082: "throw_with_nested argument must be CopyConstructible"); 25082: using __nest = __and_, __bool_constant, 25082: __not_>>; 25082: std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{}); 25082: } 25082: 25082: 25082: template 25082: using __rethrow_if_nested_cond = typename enable_if< 25082: __and_, 25082: __or_<__not_>, 25082: is_convertible<_Tp*, nested_exception*>>>::value 25082: >::type; 25082: 25082: 25082: template 25082: inline __rethrow_if_nested_cond<_Ex> 25082: __rethrow_if_nested_impl(const _Ex* __ptr) 25082: { 25082: if (auto __ne_ptr = dynamic_cast(__ptr)) 25082: __ne_ptr->rethrow_nested(); 25082: } 25082: 25082: 25082: inline void 25082: __rethrow_if_nested_impl(const void*) 25082: { } 25082: 25082: 25082: template 25082: inline void 25082: rethrow_if_nested(const _Ex& __ex) 25082: { std::__rethrow_if_nested_impl(std::__addressof(__ex)); } 25082: 25082: 25082: } 25082: 25082: } 25082: 25082: 25082: 25082: #pragma GCC visibility pop 25082: # 145 "/usr/include/c++/8/exception" 2 3 25082: # 41 "/usr/include/c++/8/new" 2 3 25082: 25082: #pragma GCC visibility push(default) 25082: 25082: extern "C++" { 25082: 25082: namespace std 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: class bad_alloc : public exception 25082: { 25082: public: 25082: bad_alloc() throw() { } 25082: 25082: 25082: 25082: virtual ~bad_alloc() throw(); 25082: 25082: 25082: virtual const char* what() const throw(); 25082: }; 25082: 25082: 25082: class bad_array_new_length : public bad_alloc 25082: { 25082: public: 25082: bad_array_new_length() throw() { } 25082: 25082: 25082: 25082: virtual ~bad_array_new_length() throw(); 25082: 25082: 25082: virtual const char* what() const throw(); 25082: }; 25082: 25082: 25082: 25082: enum class align_val_t: size_t {}; 25082: 25082: 25082: struct nothrow_t 25082: { 25082: 25082: explicit nothrow_t() = default; 25082: 25082: }; 25082: 25082: extern const nothrow_t nothrow; 25082: 25082: 25082: 25082: typedef void (*new_handler)(); 25082: 25082: 25082: 25082: new_handler set_new_handler(new_handler) throw(); 25082: 25082: 25082: 25082: new_handler get_new_handler() noexcept; 25082: 25082: } 25082: # 120 "/usr/include/c++/8/new" 3 25082: void* operator new(std::size_t) 25082: __attribute__((__externally_visible__)); 25082: void* operator new[](std::size_t) 25082: __attribute__((__externally_visible__)); 25082: void operator delete(void*) noexcept 25082: __attribute__((__externally_visible__)); 25082: void operator delete[](void*) noexcept 25082: __attribute__((__externally_visible__)); 25082: 25082: void operator delete(void*, std::size_t) noexcept 25082: __attribute__((__externally_visible__)); 25082: void operator delete[](void*, std::size_t) noexcept 25082: __attribute__((__externally_visible__)); 25082: 25082: void* operator new(std::size_t, const std::nothrow_t&) noexcept 25082: __attribute__((__externally_visible__)); 25082: void* operator new[](std::size_t, const std::nothrow_t&) noexcept 25082: __attribute__((__externally_visible__)); 25082: void operator delete(void*, const std::nothrow_t&) noexcept 25082: __attribute__((__externally_visible__)); 25082: void operator delete[](void*, const std::nothrow_t&) noexcept 25082: __attribute__((__externally_visible__)); 25082: 25082: void* operator new(std::size_t, std::align_val_t) 25082: __attribute__((__externally_visible__)); 25082: void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&) 25082: noexcept __attribute__((__externally_visible__)); 25082: void operator delete(void*, std::align_val_t) 25082: noexcept __attribute__((__externally_visible__)); 25082: void operator delete(void*, std::align_val_t, const std::nothrow_t&) 25082: noexcept __attribute__((__externally_visible__)); 25082: void* operator new[](std::size_t, std::align_val_t) 25082: __attribute__((__externally_visible__)); 25082: void* operator new[](std::size_t, std::align_val_t, const std::nothrow_t&) 25082: noexcept __attribute__((__externally_visible__)); 25082: void operator delete[](void*, std::align_val_t) 25082: noexcept __attribute__((__externally_visible__)); 25082: void operator delete[](void*, std::align_val_t, const std::nothrow_t&) 25082: noexcept __attribute__((__externally_visible__)); 25082: 25082: void operator delete(void*, std::size_t, std::align_val_t) 25082: noexcept __attribute__((__externally_visible__)); 25082: void operator delete[](void*, std::size_t, std::align_val_t) 25082: noexcept __attribute__((__externally_visible__)); 25082: 25082: 25082: 25082: 25082: inline void* operator new(std::size_t, void* __p) noexcept 25082: { return __p; } 25082: inline void* operator new[](std::size_t, void* __p) noexcept 25082: { return __p; } 25082: 25082: 25082: inline void operator delete (void*, void*) noexcept { } 25082: inline void operator delete[](void*, void*) noexcept { } 25082: 25082: } 25082: # 190 "/usr/include/c++/8/new" 3 25082: namespace std 25082: { 25082: 25082: 25082: template 25082: [[nodiscard]] constexpr _Tp* 25082: launder(_Tp* __p) noexcept 25082: { return __builtin_launder(__p); } 25082: 25082: 25082: 25082: 25082: template 25082: void launder(_Ret (*)(_Args...) noexcept (_NE)) = delete; 25082: template 25082: void launder(_Ret (*)(_Args......) noexcept (_NE)) = delete; 25082: 25082: void launder(void*) = delete; 25082: void launder(const void*) = delete; 25082: void launder(volatile void*) = delete; 25082: void launder(const volatile void*) = delete; 25082: } 25082: 25082: 25082: 25082: 25082: #pragma GCC visibility pop 25082: # 34 "/usr/include/c++/8/ext/new_allocator.h" 2 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: using std::size_t; 25082: using std::ptrdiff_t; 25082: # 57 "/usr/include/c++/8/ext/new_allocator.h" 3 25082: template 25082: class new_allocator 25082: { 25082: public: 25082: typedef size_t size_type; 25082: typedef ptrdiff_t difference_type; 25082: typedef _Tp* pointer; 25082: typedef const _Tp* const_pointer; 25082: typedef _Tp& reference; 25082: typedef const _Tp& const_reference; 25082: typedef _Tp value_type; 25082: 25082: template 25082: struct rebind 25082: { typedef new_allocator<_Tp1> other; }; 25082: 25082: 25082: 25082: 25082: typedef std::true_type propagate_on_container_move_assignment; 25082: 25082: 25082: new_allocator() noexcept { } 25082: 25082: new_allocator(const new_allocator&) noexcept { } 25082: 25082: template 25082: new_allocator(const new_allocator<_Tp1>&) noexcept { } 25082: 25082: ~new_allocator() noexcept { } 25082: 25082: pointer 25082: address(reference __x) const noexcept 25082: { return std::__addressof(__x); } 25082: 25082: const_pointer 25082: address(const_reference __x) const noexcept 25082: { return std::__addressof(__x); } 25082: 25082: 25082: 25082: pointer 25082: allocate(size_type __n, const void* = static_cast(0)) 25082: { 25082: if (__n > this->max_size()) 25082: std::__throw_bad_alloc(); 25082: 25082: 25082: if (alignof(_Tp) > 16) 25082: { 25082: std::align_val_t __al = std::align_val_t(alignof(_Tp)); 25082: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp), __al)); 25082: } 25082: 25082: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); 25082: } 25082: 25082: 25082: void 25082: deallocate(pointer __p, size_type) 25082: { 25082: 25082: if (alignof(_Tp) > 16) 25082: { 25082: ::operator delete(__p, std::align_val_t(alignof(_Tp))); 25082: return; 25082: } 25082: 25082: ::operator delete(__p); 25082: } 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return size_t(-1) / sizeof(_Tp); } 25082: 25082: 25082: template 25082: void 25082: construct(_Up* __p, _Args&&... __args) 25082: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 25082: 25082: template 25082: void 25082: destroy(_Up* __p) { __p->~_Up(); } 25082: # 151 "/usr/include/c++/8/ext/new_allocator.h" 3 25082: }; 25082: 25082: template 25082: inline bool 25082: operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&) 25082: { return true; } 25082: 25082: template 25082: inline bool 25082: operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&) 25082: { return false; } 25082: 25082: 25082: } 25082: # 34 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++allocator.h" 2 3 25082: 25082: 25082: namespace std 25082: { 25082: # 47 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++allocator.h" 3 25082: template 25082: using __allocator_base = __gnu_cxx::new_allocator<_Tp>; 25082: } 25082: # 47 "/usr/include/c++/8/bits/allocator.h" 2 3 25082: # 1 "/usr/include/c++/8/bits/memoryfwd.h" 1 3 25082: # 46 "/usr/include/c++/8/bits/memoryfwd.h" 3 25082: 25082: # 47 "/usr/include/c++/8/bits/memoryfwd.h" 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 63 "/usr/include/c++/8/bits/memoryfwd.h" 3 25082: template 25082: class allocator; 25082: 25082: template<> 25082: class allocator; 25082: 25082: 25082: template 25082: struct uses_allocator; 25082: 25082: 25082: 25082: 25082: } 25082: # 48 "/usr/include/c++/8/bits/allocator.h" 2 3 25082: # 57 "/usr/include/c++/8/bits/allocator.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: class allocator 25082: { 25082: public: 25082: typedef size_t size_type; 25082: typedef ptrdiff_t difference_type; 25082: typedef void* pointer; 25082: typedef const void* const_pointer; 25082: typedef void value_type; 25082: 25082: template 25082: struct rebind 25082: { typedef allocator<_Tp1> other; }; 25082: 25082: 25082: 25082: 25082: typedef true_type propagate_on_container_move_assignment; 25082: 25082: typedef true_type is_always_equal; 25082: 25082: template 25082: void 25082: construct(_Up* __p, _Args&&... __args) 25082: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 25082: 25082: template 25082: void 25082: destroy(_Up* __p) { __p->~_Up(); } 25082: 25082: }; 25082: # 107 "/usr/include/c++/8/bits/allocator.h" 3 25082: template 25082: class allocator : public __allocator_base<_Tp> 25082: { 25082: public: 25082: typedef size_t size_type; 25082: typedef ptrdiff_t difference_type; 25082: typedef _Tp* pointer; 25082: typedef const _Tp* const_pointer; 25082: typedef _Tp& reference; 25082: typedef const _Tp& const_reference; 25082: typedef _Tp value_type; 25082: 25082: template 25082: struct rebind 25082: { typedef allocator<_Tp1> other; }; 25082: 25082: 25082: 25082: 25082: typedef true_type propagate_on_container_move_assignment; 25082: 25082: typedef true_type is_always_equal; 25082: 25082: 25082: allocator() throw() { } 25082: 25082: allocator(const allocator& __a) throw() 25082: : __allocator_base<_Tp>(__a) { } 25082: 25082: template 25082: allocator(const allocator<_Tp1>&) throw() { } 25082: 25082: ~allocator() throw() { } 25082: 25082: 25082: }; 25082: 25082: template 25082: inline bool 25082: operator==(const allocator<_T1>&, const allocator<_T2>&) 25082: noexcept 25082: { return true; } 25082: 25082: template 25082: inline bool 25082: operator==(const allocator<_Tp>&, const allocator<_Tp>&) 25082: noexcept 25082: { return true; } 25082: 25082: template 25082: inline bool 25082: operator!=(const allocator<_T1>&, const allocator<_T2>&) 25082: noexcept 25082: { return false; } 25082: 25082: template 25082: inline bool 25082: operator!=(const allocator<_Tp>&, const allocator<_Tp>&) 25082: noexcept 25082: { return false; } 25082: 25082: 25082: 25082: template 25082: class allocator 25082: { 25082: public: 25082: typedef _Tp value_type; 25082: template allocator(const allocator<_Up>&) { } 25082: }; 25082: 25082: template 25082: class allocator 25082: { 25082: public: 25082: typedef _Tp value_type; 25082: template allocator(const allocator<_Up>&) { } 25082: }; 25082: 25082: template 25082: class allocator 25082: { 25082: public: 25082: typedef _Tp value_type; 25082: template allocator(const allocator<_Up>&) { } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern template class allocator; 25082: extern template class allocator; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __alloc_swap 25082: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; 25082: 25082: template 25082: struct __alloc_swap<_Alloc, false> 25082: { 25082: static void 25082: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept 25082: { 25082: 25082: if (__one != __two) 25082: swap(__one, __two); 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct __alloc_neq 25082: { 25082: static bool 25082: _S_do_it(const _Alloc&, const _Alloc&) 25082: { return false; } 25082: }; 25082: 25082: template 25082: struct __alloc_neq<_Alloc, false> 25082: { 25082: static bool 25082: _S_do_it(const _Alloc& __one, const _Alloc& __two) 25082: { return __one != __two; } 25082: }; 25082: 25082: 25082: template, 25082: is_nothrow_move_constructible>::value> 25082: struct __shrink_to_fit_aux 25082: { static bool _S_do_it(_Tp&) noexcept { return false; } }; 25082: 25082: template 25082: struct __shrink_to_fit_aux<_Tp, true> 25082: { 25082: static bool 25082: _S_do_it(_Tp& __c) noexcept 25082: { 25082: 25082: try 25082: { 25082: _Tp(__make_move_if_noexcept_iterator(__c.begin()), 25082: __make_move_if_noexcept_iterator(__c.end()), 25082: __c.get_allocator()).swap(__c); 25082: return true; 25082: } 25082: catch(...) 25082: { return false; } 25082: 25082: 25082: 25082: } 25082: }; 25082: 25082: 25082: 25082: } 25082: # 64 "/usr/include/c++/8/memory" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_construct.h" 1 3 25082: # 61 "/usr/include/c++/8/bits/stl_construct.h" 3 25082: # 1 "/usr/include/c++/8/ext/alloc_traits.h" 1 3 25082: # 32 "/usr/include/c++/8/ext/alloc_traits.h" 3 25082: 25082: # 33 "/usr/include/c++/8/ext/alloc_traits.h" 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/alloc_traits.h" 1 3 25082: # 41 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: struct __allocator_traits_base 25082: { 25082: template 25082: struct __rebind : __replace_first_arg<_Tp, _Up> { }; 25082: 25082: template 25082: struct __rebind<_Tp, _Up, 25082: __void_t::other>> 25082: { using type = typename _Tp::template rebind<_Up>::other; }; 25082: 25082: protected: 25082: template 25082: using __pointer = typename _Tp::pointer; 25082: template 25082: using __c_pointer = typename _Tp::const_pointer; 25082: template 25082: using __v_pointer = typename _Tp::void_pointer; 25082: template 25082: using __cv_pointer = typename _Tp::const_void_pointer; 25082: template 25082: using __pocca = typename _Tp::propagate_on_container_copy_assignment; 25082: template 25082: using __pocma = typename _Tp::propagate_on_container_move_assignment; 25082: template 25082: using __pocs = typename _Tp::propagate_on_container_swap; 25082: template 25082: using __equal = typename _Tp::is_always_equal; 25082: }; 25082: 25082: template 25082: using __alloc_rebind 25082: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct allocator_traits : __allocator_traits_base 25082: { 25082: 25082: typedef _Alloc allocator_type; 25082: 25082: typedef typename _Alloc::value_type value_type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: using pointer = __detected_or_t; 25082: 25082: private: 25082: 25082: template class _Func, typename _Tp, typename = void> 25082: struct _Ptr 25082: { 25082: using type = typename pointer_traits::template rebind<_Tp>; 25082: }; 25082: 25082: template class _Func, typename _Tp> 25082: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> 25082: { 25082: using type = _Func<_Alloc>; 25082: }; 25082: 25082: 25082: template 25082: struct _Diff 25082: { using type = typename pointer_traits<_PtrT>::difference_type; }; 25082: 25082: template 25082: struct _Diff<_A2, _PtrT, __void_t> 25082: { using type = typename _A2::difference_type; }; 25082: 25082: 25082: template 25082: struct _Size : make_unsigned<_DiffT> { }; 25082: 25082: template 25082: struct _Size<_A2, _DiffT, __void_t> 25082: { using type = typename _A2::size_type; }; 25082: 25082: public: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using void_pointer = typename _Ptr<__v_pointer, void>::type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using difference_type = typename _Diff<_Alloc, pointer>::type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using size_type = typename _Size<_Alloc, difference_type>::type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using propagate_on_container_copy_assignment 25082: = __detected_or_t; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using propagate_on_container_move_assignment 25082: = __detected_or_t; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using propagate_on_container_swap 25082: = __detected_or_t; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using is_always_equal 25082: = __detected_or_t::type, __equal, _Alloc>; 25082: 25082: template 25082: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; 25082: template 25082: using rebind_traits = allocator_traits>; 25082: 25082: private: 25082: template 25082: static auto 25082: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int) 25082: -> decltype(__a.allocate(__n, __hint)) 25082: { return __a.allocate(__n, __hint); } 25082: 25082: template 25082: static pointer 25082: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...) 25082: { return __a.allocate(__n); } 25082: 25082: template 25082: struct __construct_helper 25082: { 25082: template()->construct( 25082: std::declval<_Tp*>(), std::declval<_Args>()...))> 25082: static true_type __test(int); 25082: 25082: template 25082: static false_type __test(...); 25082: 25082: using type = decltype(__test<_Alloc>(0)); 25082: }; 25082: 25082: template 25082: using __has_construct 25082: = typename __construct_helper<_Tp, _Args...>::type; 25082: 25082: template 25082: static _Require<__has_construct<_Tp, _Args...>> 25082: _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 25082: { __a.construct(__p, std::forward<_Args>(__args)...); } 25082: 25082: template 25082: static 25082: _Require<__and_<__not_<__has_construct<_Tp, _Args...>>, 25082: is_constructible<_Tp, _Args...>>> 25082: _S_construct(_Alloc&, _Tp* __p, _Args&&... __args) 25082: { ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); } 25082: 25082: template 25082: static auto 25082: _S_destroy(_Alloc2& __a, _Tp* __p, int) 25082: -> decltype(__a.destroy(__p)) 25082: { __a.destroy(__p); } 25082: 25082: template 25082: static void 25082: _S_destroy(_Alloc2&, _Tp* __p, ...) 25082: { __p->~_Tp(); } 25082: 25082: template 25082: static auto 25082: _S_max_size(_Alloc2& __a, int) 25082: -> decltype(__a.max_size()) 25082: { return __a.max_size(); } 25082: 25082: template 25082: static size_type 25082: _S_max_size(_Alloc2&, ...) 25082: { 25082: 25082: 25082: return __gnu_cxx::__numeric_traits::__max 25082: / sizeof(value_type); 25082: } 25082: 25082: template 25082: static auto 25082: _S_select(_Alloc2& __a, int) 25082: -> decltype(__a.select_on_container_copy_construction()) 25082: { return __a.select_on_container_copy_construction(); } 25082: 25082: template 25082: static _Alloc2 25082: _S_select(_Alloc2& __a, ...) 25082: { return __a; } 25082: 25082: public: 25082: # 299 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: static pointer 25082: allocate(_Alloc& __a, size_type __n) 25082: { return __a.allocate(__n); } 25082: # 314 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: static pointer 25082: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) 25082: { return _S_allocate(__a, __n, __hint, 0); } 25082: # 326 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: static void 25082: deallocate(_Alloc& __a, pointer __p, size_type __n) 25082: { __a.deallocate(__p, __n); } 25082: # 341 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: template 25082: static auto construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 25082: -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...)) 25082: { _S_construct(__a, __p, std::forward<_Args>(__args)...); } 25082: # 354 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: template 25082: static void destroy(_Alloc& __a, _Tp* __p) 25082: { _S_destroy(__a, __p, 0); } 25082: # 366 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: static size_type max_size(const _Alloc& __a) noexcept 25082: { return _S_max_size(__a, 0); } 25082: # 377 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: static _Alloc 25082: select_on_container_copy_construction(const _Alloc& __rhs) 25082: { return _S_select(__rhs, 0); } 25082: }; 25082: 25082: 25082: template 25082: struct allocator_traits> 25082: { 25082: 25082: using allocator_type = allocator<_Tp>; 25082: 25082: using value_type = _Tp; 25082: 25082: 25082: using pointer = _Tp*; 25082: 25082: 25082: using const_pointer = const _Tp*; 25082: 25082: 25082: using void_pointer = void*; 25082: 25082: 25082: using const_void_pointer = const void*; 25082: 25082: 25082: using difference_type = std::ptrdiff_t; 25082: 25082: 25082: using size_type = std::size_t; 25082: 25082: 25082: using propagate_on_container_copy_assignment = false_type; 25082: 25082: 25082: using propagate_on_container_move_assignment = true_type; 25082: 25082: 25082: using propagate_on_container_swap = false_type; 25082: 25082: 25082: using is_always_equal = true_type; 25082: 25082: template 25082: using rebind_alloc = allocator<_Up>; 25082: 25082: template 25082: using rebind_traits = allocator_traits>; 25082: # 434 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: static pointer 25082: allocate(allocator_type& __a, size_type __n) 25082: { return __a.allocate(__n); } 25082: # 448 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: static pointer 25082: allocate(allocator_type& __a, size_type __n, const_void_pointer __hint) 25082: { return __a.allocate(__n, __hint); } 25082: # 460 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: static void 25082: deallocate(allocator_type& __a, pointer __p, size_type __n) 25082: { __a.deallocate(__p, __n); } 25082: # 472 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: template 25082: static void 25082: construct(allocator_type& __a, _Up* __p, _Args&&... __args) 25082: { __a.construct(__p, std::forward<_Args>(__args)...); } 25082: # 484 "/usr/include/c++/8/bits/alloc_traits.h" 3 25082: template 25082: static void 25082: destroy(allocator_type& __a, _Up* __p) 25082: { __a.destroy(__p); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: static size_type 25082: max_size(const allocator_type& __a) noexcept 25082: { return __a.max_size(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: static allocator_type 25082: select_on_container_copy_construction(const allocator_type& __rhs) 25082: { return __rhs; } 25082: }; 25082: 25082: 25082: template 25082: inline void 25082: __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type) 25082: { __one = __two; } 25082: 25082: template 25082: inline void 25082: __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type) 25082: { } 25082: 25082: template 25082: inline void __alloc_on_copy(_Alloc& __one, const _Alloc& __two) 25082: { 25082: typedef allocator_traits<_Alloc> __traits; 25082: typedef typename __traits::propagate_on_container_copy_assignment __pocca; 25082: __do_alloc_on_copy(__one, __two, __pocca()); 25082: } 25082: 25082: template 25082: inline _Alloc __alloc_on_copy(const _Alloc& __a) 25082: { 25082: typedef allocator_traits<_Alloc> __traits; 25082: return __traits::select_on_container_copy_construction(__a); 25082: } 25082: 25082: template 25082: inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type) 25082: { __one = std::move(__two); } 25082: 25082: template 25082: inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type) 25082: { } 25082: 25082: template 25082: inline void __alloc_on_move(_Alloc& __one, _Alloc& __two) 25082: { 25082: typedef allocator_traits<_Alloc> __traits; 25082: typedef typename __traits::propagate_on_container_move_assignment __pocma; 25082: __do_alloc_on_move(__one, __two, __pocma()); 25082: } 25082: 25082: template 25082: inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type) 25082: { 25082: using std::swap; 25082: swap(__one, __two); 25082: } 25082: 25082: template 25082: inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type) 25082: { } 25082: 25082: template 25082: inline void __alloc_on_swap(_Alloc& __one, _Alloc& __two) 25082: { 25082: typedef allocator_traits<_Alloc> __traits; 25082: typedef typename __traits::propagate_on_container_swap __pocs; 25082: __do_alloc_on_swap(__one, __two, __pocs()); 25082: } 25082: 25082: template 25082: class __is_copy_insertable_impl 25082: { 25082: typedef allocator_traits<_Alloc> _Traits; 25082: 25082: template(), 25082: std::declval<_Up*>(), 25082: std::declval()))> 25082: static true_type 25082: _M_select(int); 25082: 25082: template 25082: static false_type 25082: _M_select(...); 25082: 25082: public: 25082: typedef decltype(_M_select(0)) type; 25082: }; 25082: 25082: 25082: template 25082: struct __is_copy_insertable 25082: : __is_copy_insertable_impl<_Alloc>::type 25082: { }; 25082: 25082: 25082: template 25082: struct __is_copy_insertable> 25082: : is_copy_constructible<_Tp> 25082: { }; 25082: 25082: 25082: template 25082: struct __is_allocator : false_type { }; 25082: 25082: template 25082: struct __is_allocator<_Alloc, 25082: __void_t().allocate(size_t{}))>> 25082: : true_type { }; 25082: 25082: template 25082: using _RequireAllocator 25082: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; 25082: 25082: 25082: } 25082: # 37 "/usr/include/c++/8/ext/alloc_traits.h" 2 3 25082: 25082: 25082: 25082: 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __alloc_traits 25082: 25082: : std::allocator_traits<_Alloc> 25082: 25082: { 25082: typedef _Alloc allocator_type; 25082: 25082: typedef std::allocator_traits<_Alloc> _Base_type; 25082: typedef typename _Base_type::value_type value_type; 25082: typedef typename _Base_type::pointer pointer; 25082: typedef typename _Base_type::const_pointer const_pointer; 25082: typedef typename _Base_type::size_type size_type; 25082: typedef typename _Base_type::difference_type difference_type; 25082: 25082: typedef value_type& reference; 25082: typedef const value_type& const_reference; 25082: using _Base_type::allocate; 25082: using _Base_type::deallocate; 25082: using _Base_type::construct; 25082: using _Base_type::destroy; 25082: using _Base_type::max_size; 25082: 25082: private: 25082: template 25082: using __is_custom_pointer 25082: = std::__and_, 25082: std::__not_>>; 25082: 25082: public: 25082: 25082: template 25082: static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type 25082: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) 25082: { 25082: _Base_type::construct(__a, std::__to_address(__p), 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: 25082: template 25082: static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type 25082: destroy(_Alloc& __a, _Ptr __p) 25082: { _Base_type::destroy(__a, std::__to_address(__p)); } 25082: 25082: static _Alloc _S_select_on_copy(const _Alloc& __a) 25082: { return _Base_type::select_on_container_copy_construction(__a); } 25082: 25082: static void _S_on_swap(_Alloc& __a, _Alloc& __b) 25082: { std::__alloc_on_swap(__a, __b); } 25082: 25082: static constexpr bool _S_propagate_on_copy_assign() 25082: { return _Base_type::propagate_on_container_copy_assignment::value; } 25082: 25082: static constexpr bool _S_propagate_on_move_assign() 25082: { return _Base_type::propagate_on_container_move_assignment::value; } 25082: 25082: static constexpr bool _S_propagate_on_swap() 25082: { return _Base_type::propagate_on_container_swap::value; } 25082: 25082: static constexpr bool _S_always_equal() 25082: { return _Base_type::is_always_equal::value; } 25082: 25082: static constexpr bool _S_nothrow_move() 25082: { return _S_propagate_on_move_assign() || _S_always_equal(); } 25082: 25082: template 25082: struct rebind 25082: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; 25082: # 158 "/usr/include/c++/8/ext/alloc_traits.h" 3 25082: }; 25082: 25082: 25082: } 25082: # 62 "/usr/include/c++/8/bits/stl_construct.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline void 25082: _Construct(_T1* __p, _Args&&... __args) 25082: { ::new(static_cast(__p)) _T1(std::forward<_Args>(__args)...); } 25082: # 87 "/usr/include/c++/8/bits/stl_construct.h" 3 25082: template 25082: inline void 25082: _Construct_novalue(_T1* __p) 25082: { ::new(static_cast(__p)) _T1; } 25082: 25082: 25082: 25082: 25082: template 25082: inline void 25082: _Destroy(_Tp* __pointer) 25082: { __pointer->~_Tp(); } 25082: 25082: template 25082: struct _Destroy_aux 25082: { 25082: template 25082: static void 25082: __destroy(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: for (; __first != __last; ++__first) 25082: std::_Destroy(std::__addressof(*__first)); 25082: } 25082: }; 25082: 25082: template<> 25082: struct _Destroy_aux 25082: { 25082: template 25082: static void 25082: __destroy(_ForwardIterator, _ForwardIterator) { } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline void 25082: _Destroy(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _Value_type; 25082: 25082: 25082: static_assert(is_destructible<_Value_type>::value, 25082: "value type is destructible"); 25082: 25082: std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: 25082: __destroy(__first, __last); 25082: } 25082: 25082: template 25082: struct _Destroy_n_aux 25082: { 25082: template 25082: static _ForwardIterator 25082: __destroy_n(_ForwardIterator __first, _Size __count) 25082: { 25082: for (; __count > 0; (void)++__first, --__count) 25082: std::_Destroy(std::__addressof(*__first)); 25082: return __first; 25082: } 25082: }; 25082: 25082: template<> 25082: struct _Destroy_n_aux 25082: { 25082: template 25082: static _ForwardIterator 25082: __destroy_n(_ForwardIterator __first, _Size __count) 25082: { 25082: std::advance(__first, __count); 25082: return __first; 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline _ForwardIterator 25082: _Destroy_n(_ForwardIterator __first, _Size __count) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _Value_type; 25082: 25082: 25082: static_assert(is_destructible<_Value_type>::value, 25082: "value type is destructible"); 25082: 25082: return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>:: 25082: __destroy_n(__first, __count); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 25082: _Allocator& __alloc) 25082: { 25082: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 25082: for (; __first != __last; ++__first) 25082: __traits::destroy(__alloc, std::__addressof(*__first)); 25082: } 25082: 25082: template 25082: inline void 25082: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 25082: allocator<_Tp>&) 25082: { 25082: _Destroy(__first, __last); 25082: } 25082: 25082: 25082: template 25082: inline void 25082: destroy_at(_Tp* __location) 25082: { 25082: std::_Destroy(__location); 25082: } 25082: 25082: template 25082: inline void 25082: destroy(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: std::_Destroy(__first, __last); 25082: } 25082: 25082: template 25082: inline _ForwardIterator 25082: destroy_n(_ForwardIterator __first, _Size __count) 25082: { 25082: return std::_Destroy_n(__first, __count); 25082: } 25082: 25082: 25082: 25082: } 25082: # 65 "/usr/include/c++/8/memory" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_uninitialized.h" 1 3 25082: # 60 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 25082: # 1 "/usr/include/c++/8/utility" 1 3 25082: # 58 "/usr/include/c++/8/utility" 3 25082: 25082: # 59 "/usr/include/c++/8/utility" 3 25082: # 69 "/usr/include/c++/8/utility" 3 25082: # 1 "/usr/include/c++/8/bits/stl_relops.h" 1 3 25082: # 67 "/usr/include/c++/8/bits/stl_relops.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: namespace rel_ops 25082: { 25082: # 85 "/usr/include/c++/8/bits/stl_relops.h" 3 25082: template 25082: inline bool 25082: operator!=(const _Tp& __x, const _Tp& __y) 25082: { return !(__x == __y); } 25082: # 98 "/usr/include/c++/8/bits/stl_relops.h" 3 25082: template 25082: inline bool 25082: operator>(const _Tp& __x, const _Tp& __y) 25082: { return __y < __x; } 25082: # 111 "/usr/include/c++/8/bits/stl_relops.h" 3 25082: template 25082: inline bool 25082: operator<=(const _Tp& __x, const _Tp& __y) 25082: { return !(__y < __x); } 25082: # 124 "/usr/include/c++/8/bits/stl_relops.h" 3 25082: template 25082: inline bool 25082: operator>=(const _Tp& __x, const _Tp& __y) 25082: { return !(__x < __y); } 25082: } 25082: 25082: 25082: } 25082: # 70 "/usr/include/c++/8/utility" 2 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/initializer_list" 1 3 25082: # 33 "/usr/include/c++/8/initializer_list" 3 25082: 25082: # 34 "/usr/include/c++/8/initializer_list" 3 25082: 25082: 25082: 25082: 25082: 25082: #pragma GCC visibility push(default) 25082: 25082: 25082: 25082: namespace std 25082: { 25082: 25082: template 25082: class initializer_list 25082: { 25082: public: 25082: typedef _E value_type; 25082: typedef const _E& reference; 25082: typedef const _E& const_reference; 25082: typedef size_t size_type; 25082: typedef const _E* iterator; 25082: typedef const _E* const_iterator; 25082: 25082: private: 25082: iterator _M_array; 25082: size_type _M_len; 25082: 25082: 25082: constexpr initializer_list(const_iterator __a, size_type __l) 25082: : _M_array(__a), _M_len(__l) { } 25082: 25082: public: 25082: constexpr initializer_list() noexcept 25082: : _M_array(0), _M_len(0) { } 25082: 25082: 25082: constexpr size_type 25082: size() const noexcept { return _M_len; } 25082: 25082: 25082: constexpr const_iterator 25082: begin() const noexcept { return _M_array; } 25082: 25082: 25082: constexpr const_iterator 25082: end() const noexcept { return begin() + size(); } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr const _Tp* 25082: begin(initializer_list<_Tp> __ils) noexcept 25082: { return __ils.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr const _Tp* 25082: end(initializer_list<_Tp> __ils) noexcept 25082: { return __ils.end(); } 25082: } 25082: 25082: #pragma GCC visibility pop 25082: # 77 "/usr/include/c++/8/utility" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: struct tuple_size; 25082: 25082: 25082: 25082: 25082: 25082: template::type, 25082: typename = typename enable_if::value>::type, 25082: size_t = tuple_size<_Tp>::value> 25082: using __enable_if_has_tuple_size = _Tp; 25082: 25082: template 25082: struct tuple_size> 25082: : public tuple_size<_Tp> { }; 25082: 25082: template 25082: struct tuple_size> 25082: : public tuple_size<_Tp> { }; 25082: 25082: template 25082: struct tuple_size> 25082: : public tuple_size<_Tp> { }; 25082: 25082: 25082: template 25082: struct tuple_element; 25082: 25082: 25082: template 25082: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; 25082: 25082: template 25082: struct tuple_element<__i, const _Tp> 25082: { 25082: typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type; 25082: }; 25082: 25082: template 25082: struct tuple_element<__i, volatile _Tp> 25082: { 25082: typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type; 25082: }; 25082: 25082: template 25082: struct tuple_element<__i, const volatile _Tp> 25082: { 25082: typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: using tuple_element_t = typename tuple_element<__i, _Tp>::type; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_tuple_like_impl> : true_type 25082: { }; 25082: 25082: 25082: template 25082: struct tuple_size> 25082: : public integral_constant { }; 25082: 25082: 25082: template 25082: struct tuple_element<0, std::pair<_Tp1, _Tp2>> 25082: { typedef _Tp1 type; }; 25082: 25082: 25082: template 25082: struct tuple_element<1, std::pair<_Tp1, _Tp2>> 25082: { typedef _Tp2 type; }; 25082: 25082: template 25082: struct __pair_get; 25082: 25082: template<> 25082: struct __pair_get<0> 25082: { 25082: template 25082: static constexpr _Tp1& 25082: __get(std::pair<_Tp1, _Tp2>& __pair) noexcept 25082: { return __pair.first; } 25082: 25082: template 25082: static constexpr _Tp1&& 25082: __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept 25082: { return std::forward<_Tp1>(__pair.first); } 25082: 25082: template 25082: static constexpr const _Tp1& 25082: __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept 25082: { return __pair.first; } 25082: 25082: template 25082: static constexpr const _Tp1&& 25082: __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept 25082: { return std::forward(__pair.first); } 25082: }; 25082: 25082: template<> 25082: struct __pair_get<1> 25082: { 25082: template 25082: static constexpr _Tp2& 25082: __get(std::pair<_Tp1, _Tp2>& __pair) noexcept 25082: { return __pair.second; } 25082: 25082: template 25082: static constexpr _Tp2&& 25082: __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept 25082: { return std::forward<_Tp2>(__pair.second); } 25082: 25082: template 25082: static constexpr const _Tp2& 25082: __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept 25082: { return __pair.second; } 25082: 25082: template 25082: static constexpr const _Tp2&& 25082: __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept 25082: { return std::forward(__pair.second); } 25082: }; 25082: 25082: template 25082: constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& 25082: get(std::pair<_Tp1, _Tp2>& __in) noexcept 25082: { return __pair_get<_Int>::__get(__in); } 25082: 25082: template 25082: constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& 25082: get(std::pair<_Tp1, _Tp2>&& __in) noexcept 25082: { return __pair_get<_Int>::__move_get(std::move(__in)); } 25082: 25082: template 25082: constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& 25082: get(const std::pair<_Tp1, _Tp2>& __in) noexcept 25082: { return __pair_get<_Int>::__const_get(__in); } 25082: 25082: template 25082: constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& 25082: get(const std::pair<_Tp1, _Tp2>&& __in) noexcept 25082: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr _Tp& 25082: get(pair<_Tp, _Up>& __p) noexcept 25082: { return __p.first; } 25082: 25082: template 25082: constexpr const _Tp& 25082: get(const pair<_Tp, _Up>& __p) noexcept 25082: { return __p.first; } 25082: 25082: template 25082: constexpr _Tp&& 25082: get(pair<_Tp, _Up>&& __p) noexcept 25082: { return std::move(__p.first); } 25082: 25082: template 25082: constexpr const _Tp&& 25082: get(const pair<_Tp, _Up>&& __p) noexcept 25082: { return std::move(__p.first); } 25082: 25082: template 25082: constexpr _Tp& 25082: get(pair<_Up, _Tp>& __p) noexcept 25082: { return __p.second; } 25082: 25082: template 25082: constexpr const _Tp& 25082: get(const pair<_Up, _Tp>& __p) noexcept 25082: { return __p.second; } 25082: 25082: template 25082: constexpr _Tp&& 25082: get(pair<_Up, _Tp>&& __p) noexcept 25082: { return std::move(__p.second); } 25082: 25082: template 25082: constexpr const _Tp&& 25082: get(const pair<_Up, _Tp>&& __p) noexcept 25082: { return std::move(__p.second); } 25082: 25082: 25082: 25082: 25082: template 25082: inline _Tp 25082: exchange(_Tp& __obj, _Up&& __new_val) 25082: { return std::__exchange(__obj, std::forward<_Up>(__new_val)); } 25082: 25082: 25082: 25082: 25082: template struct _Index_tuple { }; 25082: # 298 "/usr/include/c++/8/utility" 3 25082: template 25082: struct _Build_index_tuple 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: using __type = _Index_tuple<__integer_pack(_Num)...>; 25082: 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct integer_sequence 25082: { 25082: typedef _Tp value_type; 25082: static constexpr size_t size() noexcept { return sizeof...(_Idx); } 25082: }; 25082: 25082: 25082: template 25082: using make_integer_sequence 25082: 25082: 25082: 25082: = integer_sequence<_Tp, __integer_pack(_Num)...>; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: using index_sequence = integer_sequence; 25082: 25082: 25082: template 25082: using make_index_sequence = make_integer_sequence; 25082: 25082: 25082: template 25082: using index_sequence_for = make_index_sequence; 25082: 25082: 25082: 25082: 25082: struct in_place_t { 25082: explicit in_place_t() = default; 25082: }; 25082: 25082: inline constexpr in_place_t in_place{}; 25082: 25082: template struct in_place_type_t 25082: { 25082: explicit in_place_type_t() = default; 25082: }; 25082: 25082: template 25082: inline constexpr in_place_type_t<_Tp> in_place_type{}; 25082: 25082: template struct in_place_index_t 25082: { 25082: explicit in_place_index_t() = default; 25082: }; 25082: 25082: template 25082: inline constexpr in_place_index_t<_Idx> in_place_index{}; 25082: 25082: template 25082: struct __is_in_place_type_impl : false_type 25082: { }; 25082: 25082: template 25082: struct __is_in_place_type_impl> : true_type 25082: { }; 25082: 25082: template 25082: struct __is_in_place_type 25082: : public __is_in_place_type_impl<_Tp> 25082: { }; 25082: 25082: 25082: template 25082: constexpr add_const_t<_Tp>& as_const(_Tp& __t) noexcept { return __t; } 25082: 25082: template 25082: void as_const(const _Tp&&) = delete; 25082: 25082: 25082: 25082: 25082: } 25082: # 61 "/usr/include/c++/8/bits/stl_uninitialized.h" 2 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: struct __uninitialized_copy 25082: { 25082: template 25082: static _ForwardIterator 25082: __uninit_copy(_InputIterator __first, _InputIterator __last, 25082: _ForwardIterator __result) 25082: { 25082: _ForwardIterator __cur = __result; 25082: try 25082: { 25082: for (; __first != __last; ++__first, (void)++__cur) 25082: std::_Construct(std::__addressof(*__cur), *__first); 25082: return __cur; 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__result, __cur); 25082: throw; 25082: } 25082: } 25082: }; 25082: 25082: template<> 25082: struct __uninitialized_copy 25082: { 25082: template 25082: static _ForwardIterator 25082: __uninit_copy(_InputIterator __first, _InputIterator __last, 25082: _ForwardIterator __result) 25082: { return std::copy(__first, __last, __result); } 25082: }; 25082: # 113 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 25082: template 25082: inline _ForwardIterator 25082: uninitialized_copy(_InputIterator __first, _InputIterator __last, 25082: _ForwardIterator __result) 25082: { 25082: typedef typename iterator_traits<_InputIterator>::value_type 25082: _ValueType1; 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _ValueType2; 25082: 25082: 25082: 25082: 25082: typedef typename iterator_traits<_InputIterator>::reference _RefType1; 25082: typedef typename iterator_traits<_ForwardIterator>::reference _RefType2; 25082: const bool __assignable = is_assignable<_RefType2, _RefType1>::value; 25082: 25082: 25082: return std::__uninitialized_copy<__is_trivial(_ValueType1) 25082: && __is_trivial(_ValueType2) 25082: && __assignable>:: 25082: __uninit_copy(__first, __last, __result); 25082: } 25082: 25082: 25082: template 25082: struct __uninitialized_fill 25082: { 25082: template 25082: static void 25082: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __x) 25082: { 25082: _ForwardIterator __cur = __first; 25082: try 25082: { 25082: for (; __cur != __last; ++__cur) 25082: std::_Construct(std::__addressof(*__cur), __x); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur); 25082: throw; 25082: } 25082: } 25082: }; 25082: 25082: template<> 25082: struct __uninitialized_fill 25082: { 25082: template 25082: static void 25082: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __x) 25082: { std::fill(__first, __last, __x); } 25082: }; 25082: # 179 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 25082: template 25082: inline void 25082: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __x) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _ValueType; 25082: 25082: 25082: 25082: 25082: const bool __assignable = is_copy_assignable<_ValueType>::value; 25082: 25082: 25082: std::__uninitialized_fill<__is_trivial(_ValueType) && __assignable>:: 25082: __uninit_fill(__first, __last, __x); 25082: } 25082: 25082: 25082: template 25082: struct __uninitialized_fill_n 25082: { 25082: template 25082: static _ForwardIterator 25082: __uninit_fill_n(_ForwardIterator __first, _Size __n, 25082: const _Tp& __x) 25082: { 25082: _ForwardIterator __cur = __first; 25082: try 25082: { 25082: for (; __n > 0; --__n, (void) ++__cur) 25082: std::_Construct(std::__addressof(*__cur), __x); 25082: return __cur; 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur); 25082: throw; 25082: } 25082: } 25082: }; 25082: 25082: template<> 25082: struct __uninitialized_fill_n 25082: { 25082: template 25082: static _ForwardIterator 25082: __uninit_fill_n(_ForwardIterator __first, _Size __n, 25082: const _Tp& __x) 25082: { return std::fill_n(__first, __n, __x); } 25082: }; 25082: # 242 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 25082: template 25082: inline _ForwardIterator 25082: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _ValueType; 25082: 25082: 25082: 25082: 25082: const bool __assignable = is_copy_assignable<_ValueType>::value; 25082: 25082: return __uninitialized_fill_n<__is_trivial(_ValueType) && __assignable>:: 25082: __uninit_fill_n(__first, __n, __x); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _ForwardIterator 25082: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 25082: _ForwardIterator __result, _Allocator& __alloc) 25082: { 25082: _ForwardIterator __cur = __result; 25082: try 25082: { 25082: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 25082: for (; __first != __last; ++__first, (void)++__cur) 25082: __traits::construct(__alloc, std::__addressof(*__cur), *__first); 25082: return __cur; 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__result, __cur, __alloc); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 25082: _ForwardIterator __result, allocator<_Tp>&) 25082: { return std::uninitialized_copy(__first, __last, __result); } 25082: 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, 25082: _ForwardIterator __result, _Allocator& __alloc) 25082: { 25082: return std::__uninitialized_copy_a(std::make_move_iterator(__first), 25082: std::make_move_iterator(__last), 25082: __result, __alloc); 25082: } 25082: 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_move_if_noexcept_a(_InputIterator __first, 25082: _InputIterator __last, 25082: _ForwardIterator __result, 25082: _Allocator& __alloc) 25082: { 25082: return std::__uninitialized_copy_a 25082: (std::__make_move_if_noexcept_iterator(__first), 25082: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); 25082: } 25082: 25082: template 25082: void 25082: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __x, _Allocator& __alloc) 25082: { 25082: _ForwardIterator __cur = __first; 25082: try 25082: { 25082: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 25082: for (; __cur != __last; ++__cur) 25082: __traits::construct(__alloc, std::__addressof(*__cur), __x); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur, __alloc); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: inline void 25082: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __x, allocator<_Tp2>&) 25082: { std::uninitialized_fill(__first, __last, __x); } 25082: 25082: template 25082: _ForwardIterator 25082: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 25082: const _Tp& __x, _Allocator& __alloc) 25082: { 25082: _ForwardIterator __cur = __first; 25082: try 25082: { 25082: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 25082: for (; __n > 0; --__n, (void) ++__cur) 25082: __traits::construct(__alloc, std::__addressof(*__cur), __x); 25082: return __cur; 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur, __alloc); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 25082: const _Tp& __x, allocator<_Tp2>&) 25082: { return std::uninitialized_fill_n(__first, __n, __x); } 25082: # 378 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_copy_move(_InputIterator1 __first1, 25082: _InputIterator1 __last1, 25082: _InputIterator2 __first2, 25082: _InputIterator2 __last2, 25082: _ForwardIterator __result, 25082: _Allocator& __alloc) 25082: { 25082: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, 25082: __result, 25082: __alloc); 25082: try 25082: { 25082: return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__result, __mid, __alloc); 25082: throw; 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_move_copy(_InputIterator1 __first1, 25082: _InputIterator1 __last1, 25082: _InputIterator2 __first2, 25082: _InputIterator2 __last2, 25082: _ForwardIterator __result, 25082: _Allocator& __alloc) 25082: { 25082: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, 25082: __result, 25082: __alloc); 25082: try 25082: { 25082: return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__result, __mid, __alloc); 25082: throw; 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, 25082: const _Tp& __x, _InputIterator __first, 25082: _InputIterator __last, _Allocator& __alloc) 25082: { 25082: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); 25082: try 25082: { 25082: return std::__uninitialized_move_a(__first, __last, __mid, __alloc); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__result, __mid, __alloc); 25082: throw; 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: inline void 25082: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, 25082: _ForwardIterator __first2, 25082: _ForwardIterator __last2, const _Tp& __x, 25082: _Allocator& __alloc) 25082: { 25082: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, 25082: __first2, 25082: __alloc); 25082: try 25082: { 25082: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first2, __mid2, __alloc); 25082: throw; 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __uninitialized_default_1 25082: { 25082: template 25082: static void 25082: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: _ForwardIterator __cur = __first; 25082: try 25082: { 25082: for (; __cur != __last; ++__cur) 25082: std::_Construct(std::__addressof(*__cur)); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur); 25082: throw; 25082: } 25082: } 25082: }; 25082: 25082: template<> 25082: struct __uninitialized_default_1 25082: { 25082: template 25082: static void 25082: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _ValueType; 25082: 25082: std::fill(__first, __last, _ValueType()); 25082: } 25082: }; 25082: 25082: template 25082: struct __uninitialized_default_n_1 25082: { 25082: template 25082: static _ForwardIterator 25082: __uninit_default_n(_ForwardIterator __first, _Size __n) 25082: { 25082: _ForwardIterator __cur = __first; 25082: try 25082: { 25082: for (; __n > 0; --__n, (void) ++__cur) 25082: std::_Construct(std::__addressof(*__cur)); 25082: return __cur; 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur); 25082: throw; 25082: } 25082: } 25082: }; 25082: 25082: template<> 25082: struct __uninitialized_default_n_1 25082: { 25082: template 25082: static _ForwardIterator 25082: __uninit_default_n(_ForwardIterator __first, _Size __n) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _ValueType; 25082: 25082: return std::fill_n(__first, __n, _ValueType()); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: inline void 25082: __uninitialized_default(_ForwardIterator __first, 25082: _ForwardIterator __last) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _ValueType; 25082: 25082: const bool __assignable = is_copy_assignable<_ValueType>::value; 25082: 25082: std::__uninitialized_default_1<__is_trivial(_ValueType) 25082: && __assignable>:: 25082: __uninit_default(__first, __last); 25082: } 25082: 25082: 25082: 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_default_n(_ForwardIterator __first, _Size __n) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _ValueType; 25082: 25082: const bool __assignable = is_copy_assignable<_ValueType>::value; 25082: 25082: return __uninitialized_default_n_1<__is_trivial(_ValueType) 25082: && __assignable>:: 25082: __uninit_default_n(__first, __n); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: __uninitialized_default_a(_ForwardIterator __first, 25082: _ForwardIterator __last, 25082: _Allocator& __alloc) 25082: { 25082: _ForwardIterator __cur = __first; 25082: try 25082: { 25082: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 25082: for (; __cur != __last; ++__cur) 25082: __traits::construct(__alloc, std::__addressof(*__cur)); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur, __alloc); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: inline void 25082: __uninitialized_default_a(_ForwardIterator __first, 25082: _ForwardIterator __last, 25082: allocator<_Tp>&) 25082: { std::__uninitialized_default(__first, __last); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _ForwardIterator 25082: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 25082: _Allocator& __alloc) 25082: { 25082: _ForwardIterator __cur = __first; 25082: try 25082: { 25082: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 25082: for (; __n > 0; --__n, (void) ++__cur) 25082: __traits::construct(__alloc, std::__addressof(*__cur)); 25082: return __cur; 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur, __alloc); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 25082: allocator<_Tp>&) 25082: { return std::__uninitialized_default_n(__first, __n); } 25082: 25082: template 25082: struct __uninitialized_default_novalue_1 25082: { 25082: template 25082: static void 25082: __uninit_default_novalue(_ForwardIterator __first, 25082: _ForwardIterator __last) 25082: { 25082: _ForwardIterator __cur = __first; 25082: try 25082: { 25082: for (; __cur != __last; ++__cur) 25082: std::_Construct_novalue(std::__addressof(*__cur)); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur); 25082: throw; 25082: } 25082: } 25082: }; 25082: 25082: template<> 25082: struct __uninitialized_default_novalue_1 25082: { 25082: template 25082: static void 25082: __uninit_default_novalue(_ForwardIterator __first, 25082: _ForwardIterator __last) 25082: { 25082: } 25082: }; 25082: 25082: template 25082: struct __uninitialized_default_novalue_n_1 25082: { 25082: template 25082: static _ForwardIterator 25082: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 25082: { 25082: _ForwardIterator __cur = __first; 25082: try 25082: { 25082: for (; __n > 0; --__n, (void) ++__cur) 25082: std::_Construct_novalue(std::__addressof(*__cur)); 25082: return __cur; 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur); 25082: throw; 25082: } 25082: } 25082: }; 25082: 25082: template<> 25082: struct __uninitialized_default_novalue_n_1 25082: { 25082: template 25082: static _ForwardIterator 25082: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 25082: { return std::next(__first, __n); } 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: inline void 25082: __uninitialized_default_novalue(_ForwardIterator __first, 25082: _ForwardIterator __last) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _ValueType; 25082: 25082: std::__uninitialized_default_novalue_1< 25082: is_trivially_default_constructible<_ValueType>::value>:: 25082: __uninit_default_novalue(__first, __last); 25082: } 25082: 25082: 25082: 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _ValueType; 25082: 25082: return __uninitialized_default_novalue_n_1< 25082: is_trivially_default_constructible<_ValueType>::value>:: 25082: __uninit_default_novalue_n(__first, __n); 25082: } 25082: 25082: template 25082: _ForwardIterator 25082: __uninitialized_copy_n(_InputIterator __first, _Size __n, 25082: _ForwardIterator __result, input_iterator_tag) 25082: { 25082: _ForwardIterator __cur = __result; 25082: try 25082: { 25082: for (; __n > 0; --__n, (void) ++__first, ++__cur) 25082: std::_Construct(std::__addressof(*__cur), *__first); 25082: return __cur; 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__result, __cur); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: inline _ForwardIterator 25082: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, 25082: _ForwardIterator __result, 25082: random_access_iterator_tag) 25082: { return std::uninitialized_copy(__first, __first + __n, __result); } 25082: 25082: template 25082: pair<_InputIterator, _ForwardIterator> 25082: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 25082: _ForwardIterator __result, input_iterator_tag) 25082: { 25082: _ForwardIterator __cur = __result; 25082: try 25082: { 25082: for (; __n > 0; --__n, (void) ++__first, ++__cur) 25082: std::_Construct(std::__addressof(*__cur), *__first); 25082: return {__first, __cur}; 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__result, __cur); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: inline pair<_RandomAccessIterator, _ForwardIterator> 25082: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, 25082: _ForwardIterator __result, 25082: random_access_iterator_tag) 25082: { 25082: auto __second_res = uninitialized_copy(__first, __first + __n, __result); 25082: auto __first_res = std::next(__first, __n); 25082: return {__first_res, __second_res}; 25082: } 25082: # 810 "/usr/include/c++/8/bits/stl_uninitialized.h" 3 25082: template 25082: inline _ForwardIterator 25082: uninitialized_copy_n(_InputIterator __first, _Size __n, 25082: _ForwardIterator __result) 25082: { return std::__uninitialized_copy_n(__first, __n, __result, 25082: std::__iterator_category(__first)); } 25082: 25082: template 25082: inline pair<_InputIterator, _ForwardIterator> 25082: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 25082: _ForwardIterator __result) 25082: { 25082: return 25082: std::__uninitialized_copy_n_pair(__first, __n, __result, 25082: std::__iterator_category(__first)); 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: inline void 25082: uninitialized_default_construct(_ForwardIterator __first, 25082: _ForwardIterator __last) 25082: { 25082: __uninitialized_default_novalue(__first, __last); 25082: } 25082: 25082: template 25082: inline _ForwardIterator 25082: uninitialized_default_construct_n(_ForwardIterator __first, _Size __count) 25082: { 25082: return __uninitialized_default_novalue_n(__first, __count); 25082: } 25082: 25082: template 25082: inline void 25082: uninitialized_value_construct(_ForwardIterator __first, 25082: _ForwardIterator __last) 25082: { 25082: return __uninitialized_default(__first, __last); 25082: } 25082: 25082: template 25082: inline _ForwardIterator 25082: uninitialized_value_construct_n(_ForwardIterator __first, _Size __count) 25082: { 25082: return __uninitialized_default_n(__first, __count); 25082: } 25082: 25082: template 25082: inline _ForwardIterator 25082: uninitialized_move(_InputIterator __first, _InputIterator __last, 25082: _ForwardIterator __result) 25082: { 25082: return std::uninitialized_copy 25082: (std::make_move_iterator(__first), 25082: std::make_move_iterator(__last), __result); 25082: } 25082: 25082: template 25082: inline pair<_InputIterator, _ForwardIterator> 25082: uninitialized_move_n(_InputIterator __first, _Size __count, 25082: _ForwardIterator __result) 25082: { 25082: auto __res = std::__uninitialized_copy_n_pair 25082: (std::make_move_iterator(__first), 25082: __count, __result); 25082: return {__res.first.base(), __res.second}; 25082: } 25082: 25082: 25082: 25082: } 25082: # 66 "/usr/include/c++/8/memory" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_tempbuf.h" 1 3 25082: # 62 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 83 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 25082: template 25082: pair<_Tp*, ptrdiff_t> 25082: get_temporary_buffer(ptrdiff_t __len) noexcept 25082: { 25082: const ptrdiff_t __max = 25082: __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 25082: if (__len > __max) 25082: __len = __max; 25082: 25082: while (__len > 0) 25082: { 25082: _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), 25082: std::nothrow)); 25082: if (__tmp != 0) 25082: return std::pair<_Tp*, ptrdiff_t>(__tmp, __len); 25082: __len /= 2; 25082: } 25082: return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); 25082: } 25082: # 110 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 25082: template 25082: inline void 25082: return_temporary_buffer(_Tp* __p) 25082: { ::operator delete(__p, std::nothrow); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class _Temporary_buffer 25082: { 25082: 25082: 25082: 25082: public: 25082: typedef _Tp value_type; 25082: typedef value_type* pointer; 25082: typedef pointer iterator; 25082: typedef ptrdiff_t size_type; 25082: 25082: protected: 25082: size_type _M_original_len; 25082: size_type _M_len; 25082: pointer _M_buffer; 25082: 25082: public: 25082: 25082: size_type 25082: size() const 25082: { return _M_len; } 25082: 25082: 25082: size_type 25082: requested_size() const 25082: { return _M_original_len; } 25082: 25082: 25082: iterator 25082: begin() 25082: { return _M_buffer; } 25082: 25082: 25082: iterator 25082: end() 25082: { return _M_buffer + _M_len; } 25082: 25082: 25082: 25082: 25082: 25082: _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last); 25082: 25082: ~_Temporary_buffer() 25082: { 25082: std::_Destroy(_M_buffer, _M_buffer + _M_len); 25082: std::return_temporary_buffer(_M_buffer); 25082: } 25082: 25082: private: 25082: 25082: _Temporary_buffer(const _Temporary_buffer&); 25082: 25082: void 25082: operator=(const _Temporary_buffer&); 25082: }; 25082: 25082: 25082: template 25082: struct __uninitialized_construct_buf_dispatch 25082: { 25082: template 25082: static void 25082: __ucr(_Pointer __first, _Pointer __last, 25082: _ForwardIterator __seed) 25082: { 25082: if(__first == __last) 25082: return; 25082: 25082: _Pointer __cur = __first; 25082: try 25082: { 25082: std::_Construct(std::__addressof(*__first), 25082: std::move(*__seed)); 25082: _Pointer __prev = __cur; 25082: ++__cur; 25082: for(; __cur != __last; ++__cur, ++__prev) 25082: std::_Construct(std::__addressof(*__cur), 25082: std::move(*__prev)); 25082: *__seed = std::move(*__prev); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__first, __cur); 25082: throw; 25082: } 25082: } 25082: }; 25082: 25082: template<> 25082: struct __uninitialized_construct_buf_dispatch 25082: { 25082: template 25082: static void 25082: __ucr(_Pointer, _Pointer, _ForwardIterator) { } 25082: }; 25082: # 229 "/usr/include/c++/8/bits/stl_tempbuf.h" 3 25082: template 25082: inline void 25082: __uninitialized_construct_buf(_Pointer __first, _Pointer __last, 25082: _ForwardIterator __seed) 25082: { 25082: typedef typename std::iterator_traits<_Pointer>::value_type 25082: _ValueType; 25082: 25082: std::__uninitialized_construct_buf_dispatch< 25082: __has_trivial_constructor(_ValueType)>:: 25082: __ucr(__first, __last, __seed); 25082: } 25082: 25082: template 25082: _Temporary_buffer<_ForwardIterator, _Tp>:: 25082: _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) 25082: : _M_original_len(std::distance(__first, __last)), 25082: _M_len(0), _M_buffer(0) 25082: { 25082: try 25082: { 25082: std::pair __p(std::get_temporary_buffer< 25082: value_type>(_M_original_len)); 25082: _M_buffer = __p.first; 25082: _M_len = __p.second; 25082: if (_M_buffer) 25082: std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len, 25082: __first); 25082: } 25082: catch(...) 25082: { 25082: std::return_temporary_buffer(_M_buffer); 25082: _M_buffer = 0; 25082: _M_len = 0; 25082: throw; 25082: } 25082: } 25082: 25082: 25082: } 25082: # 67 "/usr/include/c++/8/memory" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_raw_storage_iter.h" 1 3 25082: # 59 "/usr/include/c++/8/bits/stl_raw_storage_iter.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class raw_storage_iterator 25082: : public iterator 25082: { 25082: protected: 25082: _OutputIterator _M_iter; 25082: 25082: public: 25082: explicit 25082: raw_storage_iterator(_OutputIterator __x) 25082: : _M_iter(__x) {} 25082: 25082: raw_storage_iterator& 25082: operator*() { return *this; } 25082: 25082: raw_storage_iterator& 25082: operator=(const _Tp& __element) 25082: { 25082: std::_Construct(std::__addressof(*_M_iter), __element); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: raw_storage_iterator& 25082: operator=(_Tp&& __element) 25082: { 25082: std::_Construct(std::__addressof(*_M_iter), std::move(__element)); 25082: return *this; 25082: } 25082: 25082: 25082: raw_storage_iterator& 25082: operator++() 25082: { 25082: ++_M_iter; 25082: return *this; 25082: } 25082: 25082: raw_storage_iterator 25082: operator++(int) 25082: { 25082: raw_storage_iterator __tmp = *this; 25082: ++_M_iter; 25082: return __tmp; 25082: } 25082: 25082: 25082: 25082: _OutputIterator base() const { return _M_iter; } 25082: }; 25082: 25082: 25082: } 25082: # 68 "/usr/include/c++/8/memory" 2 3 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/iosfwd" 1 3 25082: # 36 "/usr/include/c++/8/iosfwd" 3 25082: 25082: # 37 "/usr/include/c++/8/iosfwd" 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/stringfwd.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/stringfwd.h" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/stringfwd.h" 3 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct char_traits; 25082: 25082: template<> struct char_traits; 25082: 25082: 25082: template<> struct char_traits; 25082: 25082: 25082: 25082: 25082: template<> struct char_traits; 25082: template<> struct char_traits; 25082: 25082: 25082: namespace __cxx11 { 25082: 25082: template, 25082: typename _Alloc = allocator<_CharT> > 25082: class basic_string; 25082: 25082: 25082: typedef basic_string string; 25082: 25082: 25082: 25082: typedef basic_string wstring; 25082: 25082: 25082: 25082: 25082: 25082: typedef basic_string u16string; 25082: 25082: 25082: typedef basic_string u32string; 25082: 25082: 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: # 40 "/usr/include/c++/8/iosfwd" 2 3 25082: # 1 "/usr/include/c++/8/bits/postypes.h" 1 3 25082: # 38 "/usr/include/c++/8/bits/postypes.h" 3 25082: 25082: # 39 "/usr/include/c++/8/bits/postypes.h" 3 25082: 25082: # 1 "/usr/include/c++/8/cwchar" 1 3 25082: # 39 "/usr/include/c++/8/cwchar" 3 25082: 25082: # 40 "/usr/include/c++/8/cwchar" 3 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/wchar.h" 1 3 4 25082: # 27 "/usr/include/wchar.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 25082: # 28 "/usr/include/wchar.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 1 3 4 25082: # 23 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 2 3 4 25082: # 80 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4 25082: typedef long double _Float128; 25082: # 95 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4 25082: # 25 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 2 3 4 25082: # 214 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 25082: typedef float _Float32; 25082: # 251 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 25082: typedef double _Float64; 25082: # 268 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 25082: typedef double _Float32x; 25082: # 285 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 25082: typedef long double _Float64x; 25082: # 96 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 2 3 4 25082: # 31 "/usr/include/wchar.h" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 36 "/usr/include/wchar.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stdarg.h" 1 3 4 25082: # 40 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stdarg.h" 3 4 25082: typedef __builtin_va_list __gnuc_va_list; 25082: # 39 "/usr/include/wchar.h" 2 3 4 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/wchar.h" 1 3 4 25082: # 41 "/usr/include/wchar.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/wint_t.h" 1 3 4 25082: # 20 "/usr/include/aarch64-linux-gnu/bits/types/wint_t.h" 3 4 25082: typedef unsigned int wint_t; 25082: # 42 "/usr/include/wchar.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/mbstate_t.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 1 3 4 25082: # 13 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 3 4 25082: typedef struct 25082: { 25082: int __count; 25082: union 25082: { 25082: unsigned int __wch; 25082: char __wchb[4]; 25082: } __value; 25082: } __mbstate_t; 25082: # 5 "/usr/include/aarch64-linux-gnu/bits/types/mbstate_t.h" 2 3 4 25082: 25082: typedef __mbstate_t mbstate_t; 25082: # 43 "/usr/include/wchar.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__FILE.h" 1 3 4 25082: 25082: 25082: 25082: struct _IO_FILE; 25082: typedef struct _IO_FILE __FILE; 25082: # 44 "/usr/include/wchar.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/FILE.h" 1 3 4 25082: 25082: 25082: 25082: struct _IO_FILE; 25082: 25082: 25082: typedef struct _IO_FILE FILE; 25082: # 47 "/usr/include/wchar.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 1 3 4 25082: # 22 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h" 1 3 4 25082: # 28 "/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h" 3 4 25082: struct __locale_struct 25082: { 25082: 25082: struct __locale_data *__locales[13]; 25082: 25082: 25082: const unsigned short int *__ctype_b; 25082: const int *__ctype_tolower; 25082: const int *__ctype_toupper; 25082: 25082: 25082: const char *__names[13]; 25082: }; 25082: 25082: typedef struct __locale_struct *__locale_t; 25082: # 23 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 2 3 4 25082: 25082: typedef __locale_t locale_t; 25082: # 50 "/usr/include/wchar.h" 2 3 4 25082: # 79 "/usr/include/wchar.h" 3 4 25082: extern "C" { 25082: 25082: 25082: 25082: struct tm; 25082: 25082: 25082: 25082: extern wchar_t *wcscpy (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern wchar_t *wcscat (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: extern wchar_t *wcsncat (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) throw (); 25082: 25082: 25082: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, 25082: size_t __n) throw (); 25082: 25082: 25082: 25082: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 25082: locale_t __loc) throw (); 25082: 25082: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 25082: size_t __n, locale_t __loc) throw (); 25082: 25082: 25082: 25082: 25082: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) throw (); 25082: 25082: 25082: 25082: extern size_t wcsxfrm (wchar_t *__restrict __s1, 25082: const wchar_t *__restrict __s2, size_t __n) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, 25082: locale_t __loc) throw (); 25082: 25082: 25082: 25082: 25082: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, 25082: size_t __n, locale_t __loc) throw (); 25082: 25082: 25082: extern wchar_t *wcsdup (const wchar_t *__s) throw () __attribute__ ((__malloc__)); 25082: 25082: 25082: 25082: 25082: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) 25082: throw () __asm ("wcschr") __attribute__ ((__pure__)); 25082: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) 25082: throw () __asm ("wcschr") __attribute__ ((__pure__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) 25082: throw () __asm ("wcsrchr") __attribute__ ((__pure__)); 25082: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) 25082: throw () __asm ("wcsrchr") __attribute__ ((__pure__)); 25082: # 181 "/usr/include/wchar.h" 3 4 25082: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) 25082: throw () __attribute__ ((__pure__)); 25082: 25082: 25082: 25082: 25082: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) 25082: throw () __attribute__ ((__pure__)); 25082: 25082: 25082: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) 25082: throw () __attribute__ ((__pure__)); 25082: 25082: 25082: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) 25082: throw () __asm ("wcspbrk") __attribute__ ((__pure__)); 25082: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, 25082: const wchar_t *__accept) 25082: throw () __asm ("wcspbrk") __attribute__ ((__pure__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) 25082: throw () __asm ("wcsstr") __attribute__ ((__pure__)); 25082: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, 25082: const wchar_t *__needle) 25082: throw () __asm ("wcsstr") __attribute__ ((__pure__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern wchar_t *wcstok (wchar_t *__restrict __s, 25082: const wchar_t *__restrict __delim, 25082: wchar_t **__restrict __ptr) throw (); 25082: 25082: 25082: extern size_t wcslen (const wchar_t *__s) throw () __attribute__ ((__pure__)); 25082: 25082: 25082: 25082: 25082: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) 25082: throw () __asm ("wcswcs") __attribute__ ((__pure__)); 25082: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, 25082: const wchar_t *__needle) 25082: throw () __asm ("wcswcs") __attribute__ ((__pure__)); 25082: # 240 "/usr/include/wchar.h" 3 4 25082: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) 25082: throw () __attribute__ ((__pure__)); 25082: 25082: 25082: 25082: 25082: 25082: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) 25082: throw () __asm ("wmemchr") __attribute__ ((__pure__)); 25082: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, 25082: size_t __n) 25082: throw () __asm ("wmemchr") __attribute__ ((__pure__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 25082: throw () __attribute__ ((__pure__)); 25082: 25082: 25082: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, 25082: const wchar_t *__restrict __s2, size_t __n) throw (); 25082: 25082: 25082: 25082: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) 25082: throw (); 25082: 25082: 25082: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw (); 25082: 25082: 25082: 25082: 25082: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, 25082: const wchar_t *__restrict __s2, size_t __n) 25082: throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern wint_t btowc (int __c) throw (); 25082: 25082: 25082: 25082: extern int wctob (wint_t __c) throw (); 25082: 25082: 25082: 25082: extern int mbsinit (const mbstate_t *__ps) throw () __attribute__ ((__pure__)); 25082: 25082: 25082: 25082: extern size_t mbrtowc (wchar_t *__restrict __pwc, 25082: const char *__restrict __s, size_t __n, 25082: mbstate_t *__restrict __p) throw (); 25082: 25082: 25082: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, 25082: mbstate_t *__restrict __ps) throw (); 25082: 25082: 25082: extern size_t __mbrlen (const char *__restrict __s, size_t __n, 25082: mbstate_t *__restrict __ps) throw (); 25082: extern size_t mbrlen (const char *__restrict __s, size_t __n, 25082: mbstate_t *__restrict __ps) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern wint_t __btowc_alias (int __c) __asm ("btowc"); 25082: extern __inline __attribute__ ((__gnu_inline__)) wint_t 25082: __attribute__ ((__leaf__)) btowc (int __c) throw () 25082: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' 25082: ? (wint_t) __c : __btowc_alias (__c)); } 25082: 25082: extern int __wctob_alias (wint_t __c) __asm ("wctob"); 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: __attribute__ ((__leaf__)) wctob (wint_t __wc) throw () 25082: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' 25082: ? (int) __wc : __wctob_alias (__wc)); } 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) size_t 25082: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw () 25082: 25082: { return (__ps != __null 25082: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } 25082: 25082: 25082: 25082: 25082: extern size_t mbsrtowcs (wchar_t *__restrict __dst, 25082: const char **__restrict __src, size_t __len, 25082: mbstate_t *__restrict __ps) throw (); 25082: 25082: 25082: 25082: extern size_t wcsrtombs (char *__restrict __dst, 25082: const wchar_t **__restrict __src, size_t __len, 25082: mbstate_t *__restrict __ps) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, 25082: const char **__restrict __src, size_t __nmc, 25082: size_t __len, mbstate_t *__restrict __ps) throw (); 25082: 25082: 25082: 25082: extern size_t wcsnrtombs (char *__restrict __dst, 25082: const wchar_t **__restrict __src, 25082: size_t __nwc, size_t __len, 25082: mbstate_t *__restrict __ps) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int wcwidth (wchar_t __c) throw (); 25082: 25082: 25082: 25082: extern int wcswidth (const wchar_t *__s, size_t __n) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern double wcstod (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr) throw (); 25082: 25082: 25082: 25082: extern float wcstof (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr) throw (); 25082: extern long double wcstold (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr) throw (); 25082: # 396 "/usr/include/wchar.h" 3 4 25082: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr) throw (); 25082: 25082: 25082: 25082: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr) throw (); 25082: 25082: 25082: 25082: extern _Float128 wcstof128 (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr) throw (); 25082: 25082: 25082: 25082: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr) throw (); 25082: 25082: 25082: 25082: extern _Float64x wcstof64x (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr) throw (); 25082: # 428 "/usr/include/wchar.h" 3 4 25082: extern long int wcstol (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, int __base) throw (); 25082: 25082: 25082: 25082: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, int __base) 25082: throw (); 25082: 25082: 25082: 25082: 25082: __extension__ 25082: extern long long int wcstoll (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, int __base) 25082: throw (); 25082: 25082: 25082: 25082: __extension__ 25082: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: int __base) throw (); 25082: 25082: 25082: 25082: 25082: 25082: __extension__ 25082: extern long long int wcstoq (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, int __base) 25082: throw (); 25082: 25082: 25082: 25082: __extension__ 25082: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: int __base) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int wcstol_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, int __base, 25082: locale_t __loc) throw (); 25082: 25082: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: int __base, locale_t __loc) throw (); 25082: 25082: __extension__ 25082: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: int __base, locale_t __loc) throw (); 25082: 25082: __extension__ 25082: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: int __base, locale_t __loc) 25082: throw (); 25082: 25082: extern double wcstod_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, locale_t __loc) 25082: throw (); 25082: 25082: extern float wcstof_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, locale_t __loc) 25082: throw (); 25082: 25082: extern long double wcstold_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: locale_t __loc) throw (); 25082: # 511 "/usr/include/wchar.h" 3 4 25082: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: locale_t __loc) throw (); 25082: 25082: 25082: 25082: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: locale_t __loc) throw (); 25082: 25082: 25082: 25082: extern _Float128 wcstof128_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: locale_t __loc) throw (); 25082: 25082: 25082: 25082: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: locale_t __loc) throw (); 25082: 25082: 25082: 25082: extern _Float64x wcstof64x_l (const wchar_t *__restrict __nptr, 25082: wchar_t **__restrict __endptr, 25082: locale_t __loc) throw (); 25082: # 551 "/usr/include/wchar.h" 3 4 25082: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src) throw (); 25082: 25082: 25082: 25082: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src, size_t __n) 25082: throw (); 25082: # 567 "/usr/include/wchar.h" 3 4 25082: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern int fwide (__FILE *__fp, int __mode) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int fwprintf (__FILE *__restrict __stream, 25082: const wchar_t *__restrict __format, ...) 25082: ; 25082: 25082: 25082: 25082: 25082: extern int wprintf (const wchar_t *__restrict __format, ...) 25082: ; 25082: 25082: extern int swprintf (wchar_t *__restrict __s, size_t __n, 25082: const wchar_t *__restrict __format, ...) 25082: throw () ; 25082: 25082: 25082: 25082: 25082: 25082: extern int vfwprintf (__FILE *__restrict __s, 25082: const wchar_t *__restrict __format, 25082: __gnuc_va_list __arg) 25082: ; 25082: 25082: 25082: 25082: 25082: extern int vwprintf (const wchar_t *__restrict __format, 25082: __gnuc_va_list __arg) 25082: ; 25082: 25082: 25082: extern int vswprintf (wchar_t *__restrict __s, size_t __n, 25082: const wchar_t *__restrict __format, 25082: __gnuc_va_list __arg) 25082: throw () ; 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int fwscanf (__FILE *__restrict __stream, 25082: const wchar_t *__restrict __format, ...) 25082: ; 25082: 25082: 25082: 25082: 25082: extern int wscanf (const wchar_t *__restrict __format, ...) 25082: ; 25082: 25082: extern int swscanf (const wchar_t *__restrict __s, 25082: const wchar_t *__restrict __format, ...) 25082: throw () ; 25082: # 673 "/usr/include/wchar.h" 3 4 25082: extern int vfwscanf (__FILE *__restrict __s, 25082: const wchar_t *__restrict __format, 25082: __gnuc_va_list __arg) 25082: ; 25082: 25082: 25082: 25082: 25082: extern int vwscanf (const wchar_t *__restrict __format, 25082: __gnuc_va_list __arg) 25082: ; 25082: 25082: extern int vswscanf (const wchar_t *__restrict __s, 25082: const wchar_t *__restrict __format, 25082: __gnuc_va_list __arg) 25082: throw () ; 25082: # 727 "/usr/include/wchar.h" 3 4 25082: extern wint_t fgetwc (__FILE *__stream); 25082: extern wint_t getwc (__FILE *__stream); 25082: 25082: 25082: 25082: 25082: 25082: extern wint_t getwchar (void); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); 25082: extern wint_t putwc (wchar_t __wc, __FILE *__stream); 25082: 25082: 25082: 25082: 25082: 25082: extern wint_t putwchar (wchar_t __wc); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, 25082: __FILE *__restrict __stream); 25082: 25082: 25082: 25082: 25082: 25082: extern int fputws (const wchar_t *__restrict __ws, 25082: __FILE *__restrict __stream); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); 25082: # 782 "/usr/include/wchar.h" 3 4 25082: extern wint_t getwc_unlocked (__FILE *__stream); 25082: extern wint_t getwchar_unlocked (void); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern wint_t fgetwc_unlocked (__FILE *__stream); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); 25082: # 808 "/usr/include/wchar.h" 3 4 25082: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); 25082: extern wint_t putwchar_unlocked (wchar_t __wc); 25082: # 818 "/usr/include/wchar.h" 3 4 25082: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, 25082: __FILE *__restrict __stream); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int fputws_unlocked (const wchar_t *__restrict __ws, 25082: __FILE *__restrict __stream); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, 25082: const wchar_t *__restrict __format, 25082: const struct tm *__restrict __tp) throw (); 25082: 25082: 25082: 25082: 25082: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, 25082: const wchar_t *__restrict __format, 25082: const struct tm *__restrict __tp, 25082: locale_t __loc) throw (); 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/wchar2.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/wchar2.h" 3 4 25082: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, 25082: const wchar_t *__restrict __s2, size_t __n, 25082: size_t __ns1) throw (); 25082: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmemcpy") 25082: 25082: 25082: ; 25082: 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") 25082: 25082: 25082: 25082: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 25082: __attribute__ ((__leaf__)) wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () 25082: 25082: { 25082: if (__builtin_object_size (__s1, 0) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__n)) 25082: return __wmemcpy_chk (__s1, __s2, __n, 25082: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 25082: 25082: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) 25082: return __wmemcpy_chk_warn (__s1, __s2, __n, 25082: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 25082: } 25082: return __wmemcpy_alias (__s1, __s2, __n); 25082: } 25082: 25082: 25082: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, 25082: size_t __n, size_t __ns1) throw (); 25082: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () __asm__ ("" "wmemmove") 25082: 25082: ; 25082: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemmove_chk") 25082: 25082: 25082: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 25082: __attribute__ ((__leaf__)) wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () 25082: { 25082: if (__builtin_object_size (__s1, 0) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__n)) 25082: return __wmemmove_chk (__s1, __s2, __n, 25082: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 25082: 25082: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) 25082: return __wmemmove_chk_warn (__s1, __s2, __n, 25082: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 25082: } 25082: return __wmemmove_alias (__s1, __s2, __n); 25082: } 25082: 25082: 25082: 25082: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, 25082: const wchar_t *__restrict __s2, size_t __n, 25082: size_t __ns1) throw (); 25082: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmempcpy") 25082: 25082: 25082: ; 25082: 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") 25082: 25082: 25082: 25082: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 25082: __attribute__ ((__leaf__)) wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () 25082: 25082: { 25082: if (__builtin_object_size (__s1, 0) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__n)) 25082: return __wmempcpy_chk (__s1, __s2, __n, 25082: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 25082: 25082: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) 25082: return __wmempcpy_chk_warn (__s1, __s2, __n, 25082: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 25082: } 25082: return __wmempcpy_alias (__s1, __s2, __n); 25082: } 25082: 25082: 25082: 25082: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, 25082: size_t __ns) throw (); 25082: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) throw () __asm__ ("" "wmemset") 25082: ; 25082: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) throw () __asm__ ("" "__wmemset_chk") 25082: 25082: 25082: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 25082: __attribute__ ((__leaf__)) wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw () 25082: { 25082: if (__builtin_object_size (__s, 0) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__n)) 25082: return __wmemset_chk (__s, __c, __n, __builtin_object_size (__s, 0) / sizeof (wchar_t)); 25082: 25082: if (__n > __builtin_object_size (__s, 0) / sizeof (wchar_t)) 25082: return __wmemset_chk_warn (__s, __c, __n, 25082: __builtin_object_size (__s, 0) / sizeof (wchar_t)); 25082: } 25082: return __wmemset_alias (__s, __c, __n); 25082: } 25082: 25082: 25082: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src, 25082: size_t __n) throw (); 25082: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscpy") 25082: 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 25082: __attribute__ ((__leaf__)) wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () 25082: { 25082: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 25082: return __wcscpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 25082: return __wcscpy_alias (__dest, __src); 25082: } 25082: 25082: 25082: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src, 25082: size_t __destlen) throw (); 25082: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcpcpy") 25082: 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 25082: __attribute__ ((__leaf__)) wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () 25082: { 25082: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 25082: return __wcpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 25082: return __wcpcpy_alias (__dest, __src); 25082: } 25082: 25082: 25082: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src, size_t __n, 25082: size_t __destlen) throw (); 25082: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncpy") 25082: 25082: 25082: ; 25082: 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") 25082: 25082: 25082: 25082: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 25082: __attribute__ ((__leaf__)) wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () 25082: 25082: { 25082: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__n)) 25082: return __wcsncpy_chk (__dest, __src, __n, 25082: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 25082: if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) 25082: return __wcsncpy_chk_warn (__dest, __src, __n, 25082: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 25082: } 25082: return __wcsncpy_alias (__dest, __src, __n); 25082: } 25082: 25082: 25082: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src, size_t __n, 25082: size_t __destlen) throw (); 25082: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcpncpy") 25082: 25082: 25082: ; 25082: 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") 25082: 25082: 25082: 25082: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 25082: __attribute__ ((__leaf__)) wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () 25082: 25082: { 25082: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__n)) 25082: return __wcpncpy_chk (__dest, __src, __n, 25082: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 25082: if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) 25082: return __wcpncpy_chk_warn (__dest, __src, __n, 25082: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 25082: } 25082: return __wcpncpy_alias (__dest, __src, __n); 25082: } 25082: 25082: 25082: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src, 25082: size_t __destlen) throw (); 25082: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscat") 25082: 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 25082: __attribute__ ((__leaf__)) wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () 25082: { 25082: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 25082: return __wcscat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 25082: return __wcscat_alias (__dest, __src); 25082: } 25082: 25082: 25082: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, 25082: const wchar_t *__restrict __src, 25082: size_t __n, size_t __destlen) throw (); 25082: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncat") 25082: 25082: 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 25082: __attribute__ ((__leaf__)) wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () 25082: 25082: { 25082: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 25082: return __wcsncat_chk (__dest, __src, __n, 25082: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 25082: return __wcsncat_alias (__dest, __src, __n); 25082: } 25082: 25082: 25082: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, 25082: int __flag, size_t __s_len, 25082: const wchar_t *__restrict __format, ...) 25082: throw () ; 25082: 25082: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () __asm__ ("" "swprintf") 25082: 25082: 25082: ; 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () 25082: 25082: { 25082: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1) 25082: return __swprintf_chk (__s, __n, 2 - 1, 25082: __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 25082: __fmt, __builtin_va_arg_pack ()); 25082: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); 25082: } 25082: # 303 "/usr/include/aarch64-linux-gnu/bits/wchar2.h" 3 4 25082: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, 25082: int __flag, size_t __s_len, 25082: const wchar_t *__restrict __format, 25082: __gnuc_va_list __arg) 25082: throw () ; 25082: 25082: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () __asm__ ("" "vswprintf") 25082: 25082: 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () 25082: 25082: { 25082: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1) 25082: return __vswprintf_chk (__s, __n, 2 - 1, 25082: __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), __fmt, __ap); 25082: return __vswprintf_alias (__s, __n, __fmt, __ap); 25082: } 25082: 25082: 25082: 25082: 25082: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, 25082: const wchar_t *__restrict __format, ...); 25082: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, 25082: ...); 25082: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, 25082: const wchar_t *__restrict __format, 25082: __gnuc_va_list __ap); 25082: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, 25082: __gnuc_va_list __ap); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: wprintf (const wchar_t *__restrict __fmt, ...) 25082: { 25082: return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) 25082: { 25082: return __fwprintf_chk (__stream, 2 - 1, __fmt, 25082: __builtin_va_arg_pack ()); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 25082: { 25082: return __vwprintf_chk (2 - 1, __fmt, __ap); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: vfwprintf (__FILE *__restrict __stream, 25082: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 25082: { 25082: return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap); 25082: } 25082: 25082: 25082: 25082: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, 25082: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") 25082: 25082: __attribute__ ((__warn_unused_result__)); 25082: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 25082: fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) 25082: { 25082: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__n) || __n <= 0) 25082: return __fgetws_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 25082: __n, __stream); 25082: 25082: if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t)) 25082: return __fgetws_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 25082: __n, __stream); 25082: } 25082: return __fgetws_alias (__s, __n, __stream); 25082: } 25082: 25082: 25082: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, 25082: int __n, __FILE *__restrict __stream) 25082: __attribute__ ((__warn_unused_result__)); 25082: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)); 25082: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") 25082: 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 25082: fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) 25082: { 25082: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__n) || __n <= 0) 25082: return __fgetws_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 25082: __n, __stream); 25082: 25082: if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t)) 25082: return __fgetws_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 25082: __n, __stream); 25082: } 25082: return __fgetws_unlocked_alias (__s, __n, __stream); 25082: } 25082: 25082: 25082: 25082: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, 25082: mbstate_t *__restrict __p, 25082: size_t __buflen) throw () __attribute__ ((__warn_unused_result__)); 25082: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcrtomb") 25082: 25082: __attribute__ ((__warn_unused_result__)); 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 25082: __attribute__ ((__leaf__)) wcrtomb (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () 25082: 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) 25082: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1)); 25082: return __wcrtomb_alias (__s, __wchar, __ps); 25082: } 25082: 25082: 25082: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, 25082: const char **__restrict __src, 25082: size_t __len, mbstate_t *__restrict __ps, 25082: size_t __dstlen) throw (); 25082: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsrtowcs") 25082: 25082: 25082: 25082: ; 25082: 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") 25082: 25082: 25082: 25082: 25082: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 25082: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () 25082: 25082: { 25082: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__len)) 25082: return __mbsrtowcs_chk (__dst, __src, __len, __ps, 25082: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 25082: 25082: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) 25082: return __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, 25082: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 25082: } 25082: return __mbsrtowcs_alias (__dst, __src, __len, __ps); 25082: } 25082: 25082: 25082: extern size_t __wcsrtombs_chk (char *__restrict __dst, 25082: const wchar_t **__restrict __src, 25082: size_t __len, mbstate_t *__restrict __ps, 25082: size_t __dstlen) throw (); 25082: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsrtombs") 25082: 25082: 25082: 25082: ; 25082: 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") 25082: 25082: 25082: 25082: 25082: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 25082: __attribute__ ((__leaf__)) wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () 25082: 25082: { 25082: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__len)) 25082: return __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)); 25082: 25082: if (__len > __builtin_object_size (__dst, 2 > 1)) 25082: return __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)); 25082: } 25082: return __wcsrtombs_alias (__dst, __src, __len, __ps); 25082: } 25082: 25082: 25082: 25082: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, 25082: const char **__restrict __src, size_t __nmc, 25082: size_t __len, mbstate_t *__restrict __ps, 25082: size_t __dstlen) throw (); 25082: 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") 25082: 25082: 25082: 25082: ; 25082: 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") 25082: 25082: 25082: 25082: 25082: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 25082: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () 25082: 25082: { 25082: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__len)) 25082: return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, 25082: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 25082: 25082: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) 25082: return __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, 25082: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 25082: } 25082: return __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps); 25082: } 25082: 25082: 25082: extern size_t __wcsnrtombs_chk (char *__restrict __dst, 25082: const wchar_t **__restrict __src, 25082: size_t __nwc, size_t __len, 25082: mbstate_t *__restrict __ps, size_t __dstlen) 25082: throw (); 25082: 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") 25082: 25082: 25082: 25082: ; 25082: 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") 25082: 25082: 25082: 25082: 25082: 25082: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 25082: __attribute__ ((__leaf__)) wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () 25082: 25082: { 25082: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__len)) 25082: return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, 25082: __builtin_object_size (__dst, 2 > 1)); 25082: 25082: if (__len > __builtin_object_size (__dst, 2 > 1)) 25082: return __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, 25082: __builtin_object_size (__dst, 2 > 1)); 25082: } 25082: return __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps); 25082: } 25082: # 851 "/usr/include/wchar.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 45 "/usr/include/c++/8/cwchar" 2 3 25082: # 62 "/usr/include/c++/8/cwchar" 3 25082: namespace std 25082: { 25082: using ::mbstate_t; 25082: } 25082: # 135 "/usr/include/c++/8/cwchar" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: using ::wint_t; 25082: 25082: using ::btowc; 25082: using ::fgetwc; 25082: using ::fgetws; 25082: using ::fputwc; 25082: using ::fputws; 25082: using ::fwide; 25082: using ::fwprintf; 25082: using ::fwscanf; 25082: using ::getwc; 25082: using ::getwchar; 25082: using ::mbrlen; 25082: using ::mbrtowc; 25082: using ::mbsinit; 25082: using ::mbsrtowcs; 25082: using ::putwc; 25082: using ::putwchar; 25082: 25082: using ::swprintf; 25082: 25082: using ::swscanf; 25082: using ::ungetwc; 25082: using ::vfwprintf; 25082: 25082: using ::vfwscanf; 25082: 25082: 25082: using ::vswprintf; 25082: 25082: 25082: using ::vswscanf; 25082: 25082: using ::vwprintf; 25082: 25082: using ::vwscanf; 25082: 25082: using ::wcrtomb; 25082: using ::wcscat; 25082: using ::wcscmp; 25082: using ::wcscoll; 25082: using ::wcscpy; 25082: using ::wcscspn; 25082: using ::wcsftime; 25082: using ::wcslen; 25082: using ::wcsncat; 25082: using ::wcsncmp; 25082: using ::wcsncpy; 25082: using ::wcsrtombs; 25082: using ::wcsspn; 25082: using ::wcstod; 25082: 25082: using ::wcstof; 25082: 25082: using ::wcstok; 25082: using ::wcstol; 25082: using ::wcstoul; 25082: using ::wcsxfrm; 25082: using ::wctob; 25082: using ::wmemcmp; 25082: using ::wmemcpy; 25082: using ::wmemmove; 25082: using ::wmemset; 25082: using ::wprintf; 25082: using ::wscanf; 25082: using ::wcschr; 25082: using ::wcspbrk; 25082: using ::wcsrchr; 25082: using ::wcsstr; 25082: using ::wmemchr; 25082: # 232 "/usr/include/c++/8/cwchar" 3 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace __gnu_cxx 25082: { 25082: 25082: 25082: 25082: 25082: 25082: using ::wcstold; 25082: # 257 "/usr/include/c++/8/cwchar" 3 25082: using ::wcstoll; 25082: using ::wcstoull; 25082: 25082: } 25082: 25082: namespace std 25082: { 25082: using ::__gnu_cxx::wcstold; 25082: using ::__gnu_cxx::wcstoll; 25082: using ::__gnu_cxx::wcstoull; 25082: } 25082: # 277 "/usr/include/c++/8/cwchar" 3 25082: namespace std 25082: { 25082: 25082: using std::wcstof; 25082: 25082: 25082: using std::vfwscanf; 25082: 25082: 25082: using std::vswscanf; 25082: 25082: 25082: using std::vwscanf; 25082: 25082: 25082: 25082: using std::wcstold; 25082: using std::wcstoll; 25082: using std::wcstoull; 25082: 25082: } 25082: # 41 "/usr/include/c++/8/bits/postypes.h" 2 3 25082: # 68 "/usr/include/c++/8/bits/postypes.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 88 "/usr/include/c++/8/bits/postypes.h" 3 25082: typedef long streamoff; 25082: # 98 "/usr/include/c++/8/bits/postypes.h" 3 25082: typedef ptrdiff_t streamsize; 25082: # 111 "/usr/include/c++/8/bits/postypes.h" 3 25082: template 25082: class fpos 25082: { 25082: private: 25082: streamoff _M_off; 25082: _StateT _M_state; 25082: 25082: public: 25082: 25082: 25082: 25082: 25082: fpos() 25082: : _M_off(0), _M_state() { } 25082: # 133 "/usr/include/c++/8/bits/postypes.h" 3 25082: fpos(streamoff __off) 25082: : _M_off(__off), _M_state() { } 25082: 25082: 25082: operator streamoff() const { return _M_off; } 25082: 25082: 25082: void 25082: state(_StateT __st) 25082: { _M_state = __st; } 25082: 25082: 25082: _StateT 25082: state() const 25082: { return _M_state; } 25082: 25082: 25082: 25082: 25082: 25082: fpos& 25082: operator+=(streamoff __off) 25082: { 25082: _M_off += __off; 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: fpos& 25082: operator-=(streamoff __off) 25082: { 25082: _M_off -= __off; 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: fpos 25082: operator+(streamoff __off) const 25082: { 25082: fpos __pos(*this); 25082: __pos += __off; 25082: return __pos; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: fpos 25082: operator-(streamoff __off) const 25082: { 25082: fpos __pos(*this); 25082: __pos -= __off; 25082: return __pos; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: streamoff 25082: operator-(const fpos& __other) const 25082: { return _M_off - __other._M_off; } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 25082: { return streamoff(__lhs) == streamoff(__rhs); } 25082: 25082: template 25082: inline bool 25082: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 25082: { return streamoff(__lhs) != streamoff(__rhs); } 25082: 25082: 25082: 25082: 25082: 25082: typedef fpos streampos; 25082: 25082: typedef fpos wstreampos; 25082: 25082: 25082: 25082: typedef fpos u16streampos; 25082: 25082: typedef fpos u32streampos; 25082: 25082: 25082: 25082: } 25082: # 41 "/usr/include/c++/8/iosfwd" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 74 "/usr/include/c++/8/iosfwd" 3 25082: class ios_base; 25082: 25082: template > 25082: class basic_ios; 25082: 25082: template > 25082: class basic_streambuf; 25082: 25082: template > 25082: class basic_istream; 25082: 25082: template > 25082: class basic_ostream; 25082: 25082: template > 25082: class basic_iostream; 25082: 25082: 25082: namespace __cxx11 { 25082: 25082: template, 25082: typename _Alloc = allocator<_CharT> > 25082: class basic_stringbuf; 25082: 25082: template, 25082: typename _Alloc = allocator<_CharT> > 25082: class basic_istringstream; 25082: 25082: template, 25082: typename _Alloc = allocator<_CharT> > 25082: class basic_ostringstream; 25082: 25082: template, 25082: typename _Alloc = allocator<_CharT> > 25082: class basic_stringstream; 25082: 25082: } 25082: 25082: template > 25082: class basic_filebuf; 25082: 25082: template > 25082: class basic_ifstream; 25082: 25082: template > 25082: class basic_ofstream; 25082: 25082: template > 25082: class basic_fstream; 25082: 25082: template > 25082: class istreambuf_iterator; 25082: 25082: template > 25082: class ostreambuf_iterator; 25082: 25082: 25082: 25082: typedef basic_ios ios; 25082: 25082: 25082: typedef basic_streambuf streambuf; 25082: 25082: 25082: typedef basic_istream istream; 25082: 25082: 25082: typedef basic_ostream ostream; 25082: 25082: 25082: typedef basic_iostream iostream; 25082: 25082: 25082: typedef basic_stringbuf stringbuf; 25082: 25082: 25082: typedef basic_istringstream istringstream; 25082: 25082: 25082: typedef basic_ostringstream ostringstream; 25082: 25082: 25082: typedef basic_stringstream stringstream; 25082: 25082: 25082: typedef basic_filebuf filebuf; 25082: 25082: 25082: typedef basic_ifstream ifstream; 25082: 25082: 25082: typedef basic_ofstream ofstream; 25082: 25082: 25082: typedef basic_fstream fstream; 25082: 25082: 25082: 25082: typedef basic_ios wios; 25082: 25082: 25082: typedef basic_streambuf wstreambuf; 25082: 25082: 25082: typedef basic_istream wistream; 25082: 25082: 25082: typedef basic_ostream wostream; 25082: 25082: 25082: typedef basic_iostream wiostream; 25082: 25082: 25082: typedef basic_stringbuf wstringbuf; 25082: 25082: 25082: typedef basic_istringstream wistringstream; 25082: 25082: 25082: typedef basic_ostringstream wostringstream; 25082: 25082: 25082: typedef basic_stringstream wstringstream; 25082: 25082: 25082: typedef basic_filebuf wfilebuf; 25082: 25082: 25082: typedef basic_ifstream wifstream; 25082: 25082: 25082: typedef basic_ofstream wofstream; 25082: 25082: 25082: typedef basic_fstream wfstream; 25082: 25082: 25082: 25082: 25082: } 25082: # 73 "/usr/include/c++/8/memory" 2 3 25082: # 1 "/usr/include/c++/8/ext/atomicity.h" 1 3 25082: # 32 "/usr/include/c++/8/ext/atomicity.h" 3 25082: 25082: # 33 "/usr/include/c++/8/ext/atomicity.h" 3 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr.h" 1 3 25082: # 30 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr.h" 3 25082: #pragma GCC visibility push(default) 25082: # 148 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr.h" 3 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr-default.h" 1 3 25082: # 35 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr-default.h" 3 25082: # 1 "/usr/include/pthread.h" 1 3 4 25082: # 22 "/usr/include/pthread.h" 3 4 25082: # 1 "/usr/include/endian.h" 1 3 4 25082: # 36 "/usr/include/endian.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/endian.h" 1 3 4 25082: # 37 "/usr/include/endian.h" 2 3 4 25082: # 60 "/usr/include/endian.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 1 3 4 25082: # 27 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types.h" 1 3 4 25082: # 27 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 25082: # 28 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 25082: 25082: 25082: typedef unsigned char __u_char; 25082: typedef unsigned short int __u_short; 25082: typedef unsigned int __u_int; 25082: typedef unsigned long int __u_long; 25082: 25082: 25082: typedef signed char __int8_t; 25082: typedef unsigned char __uint8_t; 25082: typedef signed short int __int16_t; 25082: typedef unsigned short int __uint16_t; 25082: typedef signed int __int32_t; 25082: typedef unsigned int __uint32_t; 25082: 25082: typedef signed long int __int64_t; 25082: typedef unsigned long int __uint64_t; 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef __int8_t __int_least8_t; 25082: typedef __uint8_t __uint_least8_t; 25082: typedef __int16_t __int_least16_t; 25082: typedef __uint16_t __uint_least16_t; 25082: typedef __int32_t __int_least32_t; 25082: typedef __uint32_t __uint_least32_t; 25082: typedef __int64_t __int_least64_t; 25082: typedef __uint64_t __uint_least64_t; 25082: 25082: 25082: 25082: typedef long int __quad_t; 25082: typedef unsigned long int __u_quad_t; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef long int __intmax_t; 25082: typedef unsigned long int __uintmax_t; 25082: # 140 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/typesizes.h" 1 3 4 25082: # 141 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 25082: 25082: 25082: typedef unsigned long int __dev_t; 25082: typedef unsigned int __uid_t; 25082: typedef unsigned int __gid_t; 25082: typedef unsigned long int __ino_t; 25082: typedef unsigned long int __ino64_t; 25082: typedef unsigned int __mode_t; 25082: typedef unsigned int __nlink_t; 25082: typedef long int __off_t; 25082: typedef long int __off64_t; 25082: typedef int __pid_t; 25082: typedef struct { int __val[2]; } __fsid_t; 25082: typedef long int __clock_t; 25082: typedef unsigned long int __rlim_t; 25082: typedef unsigned long int __rlim64_t; 25082: typedef unsigned int __id_t; 25082: typedef long int __time_t; 25082: typedef unsigned int __useconds_t; 25082: typedef long int __suseconds_t; 25082: 25082: typedef int __daddr_t; 25082: typedef int __key_t; 25082: 25082: 25082: typedef int __clockid_t; 25082: 25082: 25082: typedef void * __timer_t; 25082: 25082: 25082: typedef int __blksize_t; 25082: 25082: 25082: 25082: 25082: typedef long int __blkcnt_t; 25082: typedef long int __blkcnt64_t; 25082: 25082: 25082: typedef unsigned long int __fsblkcnt_t; 25082: typedef unsigned long int __fsblkcnt64_t; 25082: 25082: 25082: typedef unsigned long int __fsfilcnt_t; 25082: typedef unsigned long int __fsfilcnt64_t; 25082: 25082: 25082: typedef long int __fsword_t; 25082: 25082: typedef long int __ssize_t; 25082: 25082: 25082: typedef long int __syscall_slong_t; 25082: 25082: typedef unsigned long int __syscall_ulong_t; 25082: 25082: 25082: 25082: typedef __off64_t __loff_t; 25082: typedef char *__caddr_t; 25082: 25082: 25082: typedef long int __intptr_t; 25082: 25082: 25082: typedef unsigned int __socklen_t; 25082: 25082: 25082: 25082: 25082: typedef int __sig_atomic_t; 25082: # 28 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: static __inline __uint16_t 25082: __bswap_16 (__uint16_t __bsx) 25082: { 25082: 25082: return __builtin_bswap16 (__bsx); 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: static __inline __uint32_t 25082: __bswap_32 (__uint32_t __bsx) 25082: { 25082: 25082: return __builtin_bswap32 (__bsx); 25082: 25082: 25082: 25082: } 25082: # 69 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4 25082: __extension__ static __inline __uint64_t 25082: __bswap_64 (__uint64_t __bsx) 25082: { 25082: 25082: return __builtin_bswap64 (__bsx); 25082: 25082: 25082: 25082: } 25082: # 61 "/usr/include/endian.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 1 3 4 25082: # 32 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 3 4 25082: static __inline __uint16_t 25082: __uint16_identity (__uint16_t __x) 25082: { 25082: return __x; 25082: } 25082: 25082: static __inline __uint32_t 25082: __uint32_identity (__uint32_t __x) 25082: { 25082: return __x; 25082: } 25082: 25082: static __inline __uint64_t 25082: __uint64_identity (__uint64_t __x) 25082: { 25082: return __x; 25082: } 25082: # 62 "/usr/include/endian.h" 2 3 4 25082: # 23 "/usr/include/pthread.h" 2 3 4 25082: # 1 "/usr/include/sched.h" 1 3 4 25082: # 29 "/usr/include/sched.h" 3 4 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 30 "/usr/include/sched.h" 2 3 4 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/time_t.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef __time_t time_t; 25082: # 32 "/usr/include/sched.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 1 3 4 25082: # 9 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 3 4 25082: struct timespec 25082: { 25082: __time_t tv_sec; 25082: __syscall_slong_t tv_nsec; 25082: }; 25082: # 33 "/usr/include/sched.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: typedef __pid_t pid_t; 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/sched.h" 1 3 4 25082: # 74 "/usr/include/aarch64-linux-gnu/bits/sched.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h" 1 3 4 25082: # 23 "/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h" 3 4 25082: struct sched_param 25082: { 25082: int sched_priority; 25082: }; 25082: # 75 "/usr/include/aarch64-linux-gnu/bits/sched.h" 2 3 4 25082: 25082: extern "C" { 25082: 25082: 25082: 25082: extern int clone (int (*__fn) (void *__arg), void *__child_stack, 25082: int __flags, void *__arg, ...) throw (); 25082: 25082: 25082: extern int unshare (int __flags) throw (); 25082: 25082: 25082: extern int sched_getcpu (void) throw (); 25082: 25082: 25082: extern int setns (int __fd, int __nstype) throw (); 25082: 25082: 25082: } 25082: # 44 "/usr/include/sched.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 1 3 4 25082: # 32 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 3 4 25082: typedef unsigned long int __cpu_mask; 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef struct 25082: { 25082: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; 25082: } cpu_set_t; 25082: # 115 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 3 4 25082: extern "C" { 25082: 25082: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) 25082: throw (); 25082: extern cpu_set_t *__sched_cpualloc (size_t __count) throw () __attribute__ ((__warn_unused_result__)); 25082: extern void __sched_cpufree (cpu_set_t *__set) throw (); 25082: 25082: } 25082: # 45 "/usr/include/sched.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern "C" { 25082: 25082: 25082: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) 25082: throw (); 25082: 25082: 25082: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw (); 25082: 25082: 25082: extern int sched_setscheduler (__pid_t __pid, int __policy, 25082: const struct sched_param *__param) throw (); 25082: 25082: 25082: extern int sched_getscheduler (__pid_t __pid) throw (); 25082: 25082: 25082: extern int sched_yield (void) throw (); 25082: 25082: 25082: extern int sched_get_priority_max (int __algorithm) throw (); 25082: 25082: 25082: extern int sched_get_priority_min (int __algorithm) throw (); 25082: 25082: 25082: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw (); 25082: # 121 "/usr/include/sched.h" 3 4 25082: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, 25082: const cpu_set_t *__cpuset) throw (); 25082: 25082: 25082: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, 25082: cpu_set_t *__cpuset) throw (); 25082: 25082: 25082: } 25082: # 24 "/usr/include/pthread.h" 2 3 4 25082: # 1 "/usr/include/time.h" 1 3 4 25082: # 29 "/usr/include/time.h" 3 4 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 30 "/usr/include/time.h" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/time.h" 1 3 4 25082: # 73 "/usr/include/aarch64-linux-gnu/bits/time.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/timex.h" 1 3 4 25082: # 22 "/usr/include/aarch64-linux-gnu/bits/timex.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_timeval.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct timeval 25082: { 25082: __time_t tv_sec; 25082: __suseconds_t tv_usec; 25082: }; 25082: # 23 "/usr/include/aarch64-linux-gnu/bits/timex.h" 2 3 4 25082: 25082: 25082: 25082: struct timex 25082: { 25082: unsigned int modes; 25082: __syscall_slong_t offset; 25082: __syscall_slong_t freq; 25082: __syscall_slong_t maxerror; 25082: __syscall_slong_t esterror; 25082: int status; 25082: __syscall_slong_t constant; 25082: __syscall_slong_t precision; 25082: __syscall_slong_t tolerance; 25082: struct timeval time; 25082: __syscall_slong_t tick; 25082: __syscall_slong_t ppsfreq; 25082: __syscall_slong_t jitter; 25082: int shift; 25082: __syscall_slong_t stabil; 25082: __syscall_slong_t jitcnt; 25082: __syscall_slong_t calcnt; 25082: __syscall_slong_t errcnt; 25082: __syscall_slong_t stbcnt; 25082: 25082: int tai; 25082: 25082: 25082: int :32; int :32; int :32; int :32; 25082: int :32; int :32; int :32; int :32; 25082: int :32; int :32; int :32; 25082: }; 25082: # 74 "/usr/include/aarch64-linux-gnu/bits/time.h" 2 3 4 25082: 25082: extern "C" { 25082: 25082: 25082: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw (); 25082: 25082: } 25082: # 34 "/usr/include/time.h" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/clock_t.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef __clock_t clock_t; 25082: # 38 "/usr/include/time.h" 2 3 4 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_tm.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct tm 25082: { 25082: int tm_sec; 25082: int tm_min; 25082: int tm_hour; 25082: int tm_mday; 25082: int tm_mon; 25082: int tm_year; 25082: int tm_wday; 25082: int tm_yday; 25082: int tm_isdst; 25082: 25082: 25082: long int tm_gmtoff; 25082: const char *tm_zone; 25082: 25082: 25082: 25082: 25082: }; 25082: # 40 "/usr/include/time.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/clockid_t.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef __clockid_t clockid_t; 25082: # 47 "/usr/include/time.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/timer_t.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef __timer_t timer_t; 25082: # 48 "/usr/include/time.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_itimerspec.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct itimerspec 25082: { 25082: struct timespec it_interval; 25082: struct timespec it_value; 25082: }; 25082: # 49 "/usr/include/time.h" 2 3 4 25082: struct sigevent; 25082: # 68 "/usr/include/time.h" 3 4 25082: extern "C" { 25082: 25082: 25082: 25082: extern clock_t clock (void) throw (); 25082: 25082: 25082: extern time_t time (time_t *__timer) throw (); 25082: 25082: 25082: extern double difftime (time_t __time1, time_t __time0) 25082: throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern time_t mktime (struct tm *__tp) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern size_t strftime (char *__restrict __s, size_t __maxsize, 25082: const char *__restrict __format, 25082: const struct tm *__restrict __tp) throw (); 25082: 25082: 25082: 25082: 25082: extern char *strptime (const char *__restrict __s, 25082: const char *__restrict __fmt, struct tm *__tp) 25082: throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, 25082: const char *__restrict __format, 25082: const struct tm *__restrict __tp, 25082: locale_t __loc) throw (); 25082: 25082: 25082: 25082: extern char *strptime_l (const char *__restrict __s, 25082: const char *__restrict __fmt, struct tm *__tp, 25082: locale_t __loc) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern struct tm *gmtime (const time_t *__timer) throw (); 25082: 25082: 25082: 25082: extern struct tm *localtime (const time_t *__timer) throw (); 25082: 25082: 25082: 25082: 25082: extern struct tm *gmtime_r (const time_t *__restrict __timer, 25082: struct tm *__restrict __tp) throw (); 25082: 25082: 25082: 25082: extern struct tm *localtime_r (const time_t *__restrict __timer, 25082: struct tm *__restrict __tp) throw (); 25082: 25082: 25082: 25082: 25082: extern char *asctime (const struct tm *__tp) throw (); 25082: 25082: 25082: extern char *ctime (const time_t *__timer) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern char *asctime_r (const struct tm *__restrict __tp, 25082: char *__restrict __buf) throw (); 25082: 25082: 25082: extern char *ctime_r (const time_t *__restrict __timer, 25082: char *__restrict __buf) throw (); 25082: 25082: 25082: 25082: 25082: extern char *__tzname[2]; 25082: extern int __daylight; 25082: extern long int __timezone; 25082: 25082: 25082: 25082: 25082: extern char *tzname[2]; 25082: 25082: 25082: 25082: extern void tzset (void) throw (); 25082: 25082: 25082: 25082: extern int daylight; 25082: extern long int timezone; 25082: 25082: 25082: 25082: 25082: 25082: extern int stime (const time_t *__when) throw (); 25082: # 196 "/usr/include/time.h" 3 4 25082: extern time_t timegm (struct tm *__tp) throw (); 25082: 25082: 25082: extern time_t timelocal (struct tm *__tp) throw (); 25082: 25082: 25082: extern int dysize (int __year) throw () __attribute__ ((__const__)); 25082: # 211 "/usr/include/time.h" 3 4 25082: extern int nanosleep (const struct timespec *__requested_time, 25082: struct timespec *__remaining); 25082: 25082: 25082: 25082: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw (); 25082: 25082: 25082: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw (); 25082: 25082: 25082: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) 25082: throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int clock_nanosleep (clockid_t __clock_id, int __flags, 25082: const struct timespec *__req, 25082: struct timespec *__rem); 25082: 25082: 25082: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw (); 25082: 25082: 25082: 25082: 25082: extern int timer_create (clockid_t __clock_id, 25082: struct sigevent *__restrict __evp, 25082: timer_t *__restrict __timerid) throw (); 25082: 25082: 25082: extern int timer_delete (timer_t __timerid) throw (); 25082: 25082: 25082: extern int timer_settime (timer_t __timerid, int __flags, 25082: const struct itimerspec *__restrict __value, 25082: struct itimerspec *__restrict __ovalue) throw (); 25082: 25082: 25082: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) 25082: throw (); 25082: 25082: 25082: extern int timer_getoverrun (timer_t __timerid) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern int timespec_get (struct timespec *__ts, int __base) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: # 280 "/usr/include/time.h" 3 4 25082: extern int getdate_err; 25082: # 289 "/usr/include/time.h" 3 4 25082: extern struct tm *getdate (const char *__string); 25082: # 303 "/usr/include/time.h" 3 4 25082: extern int getdate_r (const char *__restrict __string, 25082: struct tm *__restrict __resbufp); 25082: 25082: 25082: } 25082: # 25 "/usr/include/pthread.h" 2 3 4 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 1 3 4 25082: # 23 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 1 3 4 25082: # 77 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes-arch.h" 1 3 4 25082: # 54 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes-arch.h" 3 4 25082: struct __pthread_rwlock_arch_t 25082: { 25082: unsigned int __readers; 25082: unsigned int __writers; 25082: unsigned int __wrphase_futex; 25082: unsigned int __writers_futex; 25082: unsigned int __pad3; 25082: unsigned int __pad4; 25082: int __cur_writer; 25082: int __shared; 25082: unsigned long int __pad1; 25082: unsigned long int __pad2; 25082: unsigned int __flags; 25082: }; 25082: # 78 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4 25082: 25082: 25082: 25082: 25082: typedef struct __pthread_internal_list 25082: { 25082: struct __pthread_internal_list *__prev; 25082: struct __pthread_internal_list *__next; 25082: } __pthread_list_t; 25082: # 118 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 25082: struct __pthread_mutex_s 25082: { 25082: int __lock ; 25082: unsigned int __count; 25082: int __owner; 25082: 25082: unsigned int __nusers; 25082: # 148 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 25082: int __kind; 25082: 25082: 25082: 25082: 25082: 25082: int __spins; 25082: __pthread_list_t __list; 25082: # 165 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 25082: 25082: }; 25082: 25082: 25082: 25082: 25082: struct __pthread_cond_s 25082: { 25082: __extension__ union 25082: { 25082: __extension__ unsigned long long int __wseq; 25082: struct 25082: { 25082: unsigned int __low; 25082: unsigned int __high; 25082: } __wseq32; 25082: }; 25082: __extension__ union 25082: { 25082: __extension__ unsigned long long int __g1_start; 25082: struct 25082: { 25082: unsigned int __low; 25082: unsigned int __high; 25082: } __g1_start32; 25082: }; 25082: unsigned int __g_refs[2] ; 25082: unsigned int __g_size[2]; 25082: unsigned int __g1_orig_size; 25082: unsigned int __wrefs; 25082: unsigned int __g_signals[2]; 25082: }; 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 2 3 4 25082: 25082: 25082: 25082: typedef unsigned long int pthread_t; 25082: 25082: 25082: 25082: 25082: typedef union 25082: { 25082: char __size[8]; 25082: int __align; 25082: } pthread_mutexattr_t; 25082: 25082: 25082: 25082: 25082: typedef union 25082: { 25082: char __size[8]; 25082: int __align; 25082: } pthread_condattr_t; 25082: 25082: 25082: 25082: typedef unsigned int pthread_key_t; 25082: 25082: 25082: 25082: typedef int pthread_once_t; 25082: 25082: 25082: union pthread_attr_t 25082: { 25082: char __size[64]; 25082: long int __align; 25082: }; 25082: 25082: typedef union pthread_attr_t pthread_attr_t; 25082: 25082: 25082: 25082: 25082: typedef union 25082: { 25082: struct __pthread_mutex_s __data; 25082: char __size[48]; 25082: long int __align; 25082: } pthread_mutex_t; 25082: 25082: 25082: typedef union 25082: { 25082: struct __pthread_cond_s __data; 25082: char __size[48]; 25082: __extension__ long long int __align; 25082: } pthread_cond_t; 25082: 25082: 25082: 25082: 25082: 25082: typedef union 25082: { 25082: struct __pthread_rwlock_arch_t __data; 25082: char __size[56]; 25082: long int __align; 25082: } pthread_rwlock_t; 25082: 25082: typedef union 25082: { 25082: char __size[8]; 25082: long int __align; 25082: } pthread_rwlockattr_t; 25082: 25082: 25082: 25082: 25082: 25082: typedef volatile int pthread_spinlock_t; 25082: 25082: 25082: 25082: 25082: typedef union 25082: { 25082: char __size[32]; 25082: long int __align; 25082: } pthread_barrier_t; 25082: 25082: typedef union 25082: { 25082: char __size[8]; 25082: int __align; 25082: } pthread_barrierattr_t; 25082: # 27 "/usr/include/pthread.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/setjmp.h" 1 3 4 25082: # 30 "/usr/include/aarch64-linux-gnu/bits/setjmp.h" 3 4 25082: __extension__ typedef unsigned long long __jmp_buf [22]; 25082: # 28 "/usr/include/pthread.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 25082: # 29 "/usr/include/pthread.h" 2 3 4 25082: 25082: 25082: 25082: 25082: enum 25082: { 25082: PTHREAD_CREATE_JOINABLE, 25082: 25082: PTHREAD_CREATE_DETACHED 25082: 25082: }; 25082: 25082: 25082: 25082: enum 25082: { 25082: PTHREAD_MUTEX_TIMED_NP, 25082: PTHREAD_MUTEX_RECURSIVE_NP, 25082: PTHREAD_MUTEX_ERRORCHECK_NP, 25082: PTHREAD_MUTEX_ADAPTIVE_NP 25082: 25082: , 25082: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, 25082: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, 25082: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, 25082: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL 25082: 25082: 25082: 25082: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP 25082: 25082: }; 25082: 25082: 25082: 25082: 25082: enum 25082: { 25082: PTHREAD_MUTEX_STALLED, 25082: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, 25082: PTHREAD_MUTEX_ROBUST, 25082: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: enum 25082: { 25082: PTHREAD_PRIO_NONE, 25082: PTHREAD_PRIO_INHERIT, 25082: PTHREAD_PRIO_PROTECT 25082: }; 25082: # 115 "/usr/include/pthread.h" 3 4 25082: enum 25082: { 25082: PTHREAD_RWLOCK_PREFER_READER_NP, 25082: PTHREAD_RWLOCK_PREFER_WRITER_NP, 25082: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, 25082: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP 25082: }; 25082: # 156 "/usr/include/pthread.h" 3 4 25082: enum 25082: { 25082: PTHREAD_INHERIT_SCHED, 25082: 25082: PTHREAD_EXPLICIT_SCHED 25082: 25082: }; 25082: 25082: 25082: 25082: enum 25082: { 25082: PTHREAD_SCOPE_SYSTEM, 25082: 25082: PTHREAD_SCOPE_PROCESS 25082: 25082: }; 25082: 25082: 25082: 25082: enum 25082: { 25082: PTHREAD_PROCESS_PRIVATE, 25082: 25082: PTHREAD_PROCESS_SHARED 25082: 25082: }; 25082: # 191 "/usr/include/pthread.h" 3 4 25082: struct _pthread_cleanup_buffer 25082: { 25082: void (*__routine) (void *); 25082: void *__arg; 25082: int __canceltype; 25082: struct _pthread_cleanup_buffer *__prev; 25082: }; 25082: 25082: 25082: enum 25082: { 25082: PTHREAD_CANCEL_ENABLE, 25082: 25082: PTHREAD_CANCEL_DISABLE 25082: 25082: }; 25082: enum 25082: { 25082: PTHREAD_CANCEL_DEFERRED, 25082: 25082: PTHREAD_CANCEL_ASYNCHRONOUS 25082: 25082: }; 25082: # 229 "/usr/include/pthread.h" 3 4 25082: extern "C" { 25082: 25082: 25082: 25082: 25082: extern int pthread_create (pthread_t *__restrict __newthread, 25082: const pthread_attr_t *__restrict __attr, 25082: void *(*__start_routine) (void *), 25082: void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: 25082: 25082: 25082: 25082: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_join (pthread_t __th, void **__thread_return); 25082: 25082: 25082: 25082: 25082: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, 25082: const struct timespec *__abstime); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_detach (pthread_t __th) throw (); 25082: 25082: 25082: 25082: extern pthread_t pthread_self (void) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) 25082: throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_attr_destroy (pthread_attr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, 25082: int *__detachstate) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, 25082: int __detachstate) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, 25082: size_t *__guardsize) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, 25082: size_t __guardsize) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, 25082: struct sched_param *__restrict __param) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, 25082: const struct sched_param *__restrict 25082: __param) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict 25082: __attr, int *__restrict __policy) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict 25082: __attr, int *__restrict __inherit) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, 25082: int __inherit) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, 25082: int *__restrict __scope) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict 25082: __attr, void **__restrict __stackaddr) 25082: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, 25082: void *__stackaddr) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); 25082: 25082: 25082: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict 25082: __attr, size_t *__restrict __stacksize) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, 25082: size_t __stacksize) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, 25082: void **__restrict __stackaddr, 25082: size_t *__restrict __stacksize) 25082: throw () __attribute__ ((__nonnull__ (1, 2, 3))); 25082: 25082: 25082: 25082: 25082: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, 25082: size_t __stacksize) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, 25082: size_t __cpusetsize, 25082: const cpu_set_t *__cpuset) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: 25082: 25082: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, 25082: size_t __cpusetsize, 25082: cpu_set_t *__cpuset) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: 25082: extern int pthread_getattr_default_np (pthread_attr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, 25082: const struct sched_param *__param) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: 25082: 25082: extern int pthread_getschedparam (pthread_t __target_thread, 25082: int *__restrict __policy, 25082: struct sched_param *__restrict __param) 25082: throw () __attribute__ ((__nonnull__ (2, 3))); 25082: 25082: 25082: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) 25082: throw (); 25082: 25082: 25082: 25082: 25082: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, 25082: size_t __buflen) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_getconcurrency (void) throw (); 25082: 25082: 25082: extern int pthread_setconcurrency (int __level) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_yield (void) throw (); 25082: 25082: 25082: 25082: 25082: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, 25082: const cpu_set_t *__cpuset) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: 25082: 25082: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, 25082: cpu_set_t *__cpuset) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: # 495 "/usr/include/pthread.h" 3 4 25082: extern int pthread_once (pthread_once_t *__once_control, 25082: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); 25082: # 507 "/usr/include/pthread.h" 3 4 25082: extern int pthread_setcancelstate (int __state, int *__oldstate); 25082: 25082: 25082: 25082: extern int pthread_setcanceltype (int __type, int *__oldtype); 25082: 25082: 25082: extern int pthread_cancel (pthread_t __th); 25082: 25082: 25082: 25082: 25082: extern void pthread_testcancel (void); 25082: 25082: 25082: 25082: 25082: typedef struct 25082: { 25082: struct 25082: { 25082: __jmp_buf __cancel_jmp_buf; 25082: int __mask_was_saved; 25082: } __cancel_jmp_buf[1]; 25082: void *__pad[4]; 25082: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); 25082: # 541 "/usr/include/pthread.h" 3 4 25082: struct __pthread_cleanup_frame 25082: { 25082: void (*__cancel_routine) (void *); 25082: void *__cancel_arg; 25082: int __do_it; 25082: int __cancel_type; 25082: }; 25082: 25082: 25082: 25082: 25082: class __pthread_cleanup_class 25082: { 25082: void (*__cancel_routine) (void *); 25082: void *__cancel_arg; 25082: int __do_it; 25082: int __cancel_type; 25082: 25082: public: 25082: __pthread_cleanup_class (void (*__fct) (void *), void *__arg) 25082: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } 25082: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } 25082: void __setdoit (int __newval) { __do_it = __newval; } 25082: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, 25082: &__cancel_type); } 25082: void __restore () const { pthread_setcanceltype (__cancel_type, 0); } 25082: }; 25082: # 743 "/usr/include/pthread.h" 3 4 25082: struct __jmp_buf_tag; 25082: extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_mutex_init (pthread_mutex_t *__mutex, 25082: const pthread_mutexattr_t *__mutexattr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, 25082: const struct timespec *__restrict 25082: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * 25082: __restrict __mutex, 25082: int *__restrict __prioceiling) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, 25082: int __prioceiling, 25082: int *__restrict __old_ceiling) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: 25082: 25082: 25082: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: # 807 "/usr/include/pthread.h" 3 4 25082: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * 25082: __restrict __attr, 25082: int *__restrict __pshared) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, 25082: int __pshared) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict 25082: __attr, int *__restrict __kind) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * 25082: __restrict __attr, 25082: int *__restrict __protocol) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, 25082: int __protocol) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * 25082: __restrict __attr, 25082: int *__restrict __prioceiling) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, 25082: int __prioceiling) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, 25082: int *__robustness) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr, 25082: int *__robustness) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, 25082: int __robustness) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr, 25082: int __robustness) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: # 889 "/usr/include/pthread.h" 3 4 25082: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, 25082: const pthread_rwlockattr_t *__restrict 25082: __attr) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, 25082: const struct timespec *__restrict 25082: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, 25082: const struct timespec *__restrict 25082: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * 25082: __restrict __attr, 25082: int *__restrict __pshared) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, 25082: int __pshared) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * 25082: __restrict __attr, 25082: int *__restrict __pref) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, 25082: int __pref) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, 25082: const pthread_condattr_t *__restrict __cond_attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_cond_destroy (pthread_cond_t *__cond) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_cond_signal (pthread_cond_t *__cond) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_cond_broadcast (pthread_cond_t *__cond) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, 25082: pthread_mutex_t *__restrict __mutex) 25082: __attribute__ ((__nonnull__ (1, 2))); 25082: # 1001 "/usr/include/pthread.h" 3 4 25082: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, 25082: pthread_mutex_t *__restrict __mutex, 25082: const struct timespec *__restrict __abstime) 25082: __attribute__ ((__nonnull__ (1, 2, 3))); 25082: 25082: 25082: 25082: 25082: extern int pthread_condattr_init (pthread_condattr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_condattr_getpshared (const pthread_condattr_t * 25082: __restrict __attr, 25082: int *__restrict __pshared) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, 25082: int __pshared) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_condattr_getclock (const pthread_condattr_t * 25082: __restrict __attr, 25082: __clockid_t *__restrict __clock_id) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, 25082: __clockid_t __clock_id) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: # 1045 "/usr/include/pthread.h" 3 4 25082: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_spin_lock (pthread_spinlock_t *__lock) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, 25082: const pthread_barrierattr_t *__restrict 25082: __attr, unsigned int __count) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * 25082: __restrict __attr, 25082: int *__restrict __pshared) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, 25082: int __pshared) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: # 1112 "/usr/include/pthread.h" 3 4 25082: extern int pthread_key_create (pthread_key_t *__key, 25082: void (*__destr_function) (void *)) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int pthread_key_delete (pthread_key_t __key) throw (); 25082: 25082: 25082: extern void *pthread_getspecific (pthread_key_t __key) throw (); 25082: 25082: 25082: extern int pthread_setspecific (pthread_key_t __key, 25082: const void *__pointer) throw () ; 25082: 25082: 25082: 25082: 25082: extern int pthread_getcpuclockid (pthread_t __thread_id, 25082: __clockid_t *__clock_id) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: # 1146 "/usr/include/pthread.h" 3 4 25082: extern int pthread_atfork (void (*__prepare) (void), 25082: void (*__parent) (void), 25082: void (*__child) (void)) throw (); 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) throw () 25082: { 25082: return __thread1 == __thread2; 25082: } 25082: 25082: 25082: } 25082: # 36 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr-default.h" 2 3 25082: # 47 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr-default.h" 3 25082: typedef pthread_t __gthread_t; 25082: typedef pthread_key_t __gthread_key_t; 25082: typedef pthread_once_t __gthread_once_t; 25082: typedef pthread_mutex_t __gthread_mutex_t; 25082: typedef pthread_mutex_t __gthread_recursive_mutex_t; 25082: typedef pthread_cond_t __gthread_cond_t; 25082: typedef struct timespec __gthread_time_t; 25082: # 101 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr-default.h" 3 25082: static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once"))); 25082: static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific"))); 25082: static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific"))); 25082: 25082: static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create"))); 25082: static __typeof(pthread_join) __gthrw_pthread_join __attribute__ ((__weakref__("pthread_join"))); 25082: static __typeof(pthread_equal) __gthrw_pthread_equal __attribute__ ((__weakref__("pthread_equal"))); 25082: static __typeof(pthread_self) __gthrw_pthread_self __attribute__ ((__weakref__("pthread_self"))); 25082: static __typeof(pthread_detach) __gthrw_pthread_detach __attribute__ ((__weakref__("pthread_detach"))); 25082: 25082: static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel"))); 25082: 25082: static __typeof(sched_yield) __gthrw_sched_yield __attribute__ ((__weakref__("sched_yield"))); 25082: 25082: static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock"))); 25082: static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock"))); 25082: 25082: static __typeof(pthread_mutex_timedlock) __gthrw_pthread_mutex_timedlock __attribute__ ((__weakref__("pthread_mutex_timedlock"))); 25082: 25082: static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock"))); 25082: static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init"))); 25082: static __typeof(pthread_mutex_destroy) __gthrw_pthread_mutex_destroy __attribute__ ((__weakref__("pthread_mutex_destroy"))); 25082: 25082: static __typeof(pthread_cond_init) __gthrw_pthread_cond_init __attribute__ ((__weakref__("pthread_cond_init"))); 25082: static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast"))); 25082: static __typeof(pthread_cond_signal) __gthrw_pthread_cond_signal __attribute__ ((__weakref__("pthread_cond_signal"))); 25082: static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait"))); 25082: static __typeof(pthread_cond_timedwait) __gthrw_pthread_cond_timedwait __attribute__ ((__weakref__("pthread_cond_timedwait"))); 25082: static __typeof(pthread_cond_destroy) __gthrw_pthread_cond_destroy __attribute__ ((__weakref__("pthread_cond_destroy"))); 25082: 25082: static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create"))); 25082: static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete"))); 25082: static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init"))); 25082: static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype"))); 25082: static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy"))); 25082: # 236 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr-default.h" 3 25082: static __typeof(pthread_key_create) __gthrw___pthread_key_create __attribute__ ((__weakref__("__pthread_key_create"))); 25082: # 246 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr-default.h" 3 25082: static inline int 25082: __gthread_active_p (void) 25082: { 25082: static void *const __gthread_active_ptr 25082: = __extension__ (void *) &__gthrw___pthread_key_create; 25082: return __gthread_active_ptr != 0; 25082: } 25082: # 658 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr-default.h" 3 25082: static inline int 25082: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), 25082: void *__args) 25082: { 25082: return __gthrw_pthread_create (__threadid, __null, __func, __args); 25082: } 25082: 25082: static inline int 25082: __gthread_join (__gthread_t __threadid, void **__value_ptr) 25082: { 25082: return __gthrw_pthread_join (__threadid, __value_ptr); 25082: } 25082: 25082: static inline int 25082: __gthread_detach (__gthread_t __threadid) 25082: { 25082: return __gthrw_pthread_detach (__threadid); 25082: } 25082: 25082: static inline int 25082: __gthread_equal (__gthread_t __t1, __gthread_t __t2) 25082: { 25082: return __gthrw_pthread_equal (__t1, __t2); 25082: } 25082: 25082: static inline __gthread_t 25082: __gthread_self (void) 25082: { 25082: return __gthrw_pthread_self (); 25082: } 25082: 25082: static inline int 25082: __gthread_yield (void) 25082: { 25082: return __gthrw_sched_yield (); 25082: } 25082: 25082: static inline int 25082: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) 25082: { 25082: if (__gthread_active_p ()) 25082: return __gthrw_pthread_once (__once, __func); 25082: else 25082: return -1; 25082: } 25082: 25082: static inline int 25082: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) 25082: { 25082: return __gthrw_pthread_key_create (__key, __dtor); 25082: } 25082: 25082: static inline int 25082: __gthread_key_delete (__gthread_key_t __key) 25082: { 25082: return __gthrw_pthread_key_delete (__key); 25082: } 25082: 25082: static inline void * 25082: __gthread_getspecific (__gthread_key_t __key) 25082: { 25082: return __gthrw_pthread_getspecific (__key); 25082: } 25082: 25082: static inline int 25082: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) 25082: { 25082: return __gthrw_pthread_setspecific (__key, __ptr); 25082: } 25082: 25082: static inline void 25082: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) 25082: { 25082: if (__gthread_active_p ()) 25082: __gthrw_pthread_mutex_init (__mutex, __null); 25082: } 25082: 25082: static inline int 25082: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) 25082: { 25082: if (__gthread_active_p ()) 25082: return __gthrw_pthread_mutex_destroy (__mutex); 25082: else 25082: return 0; 25082: } 25082: 25082: static inline int 25082: __gthread_mutex_lock (__gthread_mutex_t *__mutex) 25082: { 25082: if (__gthread_active_p ()) 25082: return __gthrw_pthread_mutex_lock (__mutex); 25082: else 25082: return 0; 25082: } 25082: 25082: static inline int 25082: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) 25082: { 25082: if (__gthread_active_p ()) 25082: return __gthrw_pthread_mutex_trylock (__mutex); 25082: else 25082: return 0; 25082: } 25082: 25082: 25082: static inline int 25082: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, 25082: const __gthread_time_t *__abs_timeout) 25082: { 25082: if (__gthread_active_p ()) 25082: return __gthrw_pthread_mutex_timedlock (__mutex, __abs_timeout); 25082: else 25082: return 0; 25082: } 25082: 25082: 25082: static inline int 25082: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) 25082: { 25082: if (__gthread_active_p ()) 25082: return __gthrw_pthread_mutex_unlock (__mutex); 25082: else 25082: return 0; 25082: } 25082: # 807 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr-default.h" 3 25082: static inline int 25082: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) 25082: { 25082: return __gthread_mutex_lock (__mutex); 25082: } 25082: 25082: static inline int 25082: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) 25082: { 25082: return __gthread_mutex_trylock (__mutex); 25082: } 25082: 25082: 25082: static inline int 25082: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, 25082: const __gthread_time_t *__abs_timeout) 25082: { 25082: return __gthread_mutex_timedlock (__mutex, __abs_timeout); 25082: } 25082: 25082: 25082: static inline int 25082: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) 25082: { 25082: return __gthread_mutex_unlock (__mutex); 25082: } 25082: 25082: static inline int 25082: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) 25082: { 25082: return __gthread_mutex_destroy (__mutex); 25082: } 25082: # 849 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr-default.h" 3 25082: static inline int 25082: __gthread_cond_broadcast (__gthread_cond_t *__cond) 25082: { 25082: return __gthrw_pthread_cond_broadcast (__cond); 25082: } 25082: 25082: static inline int 25082: __gthread_cond_signal (__gthread_cond_t *__cond) 25082: { 25082: return __gthrw_pthread_cond_signal (__cond); 25082: } 25082: 25082: static inline int 25082: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) 25082: { 25082: return __gthrw_pthread_cond_wait (__cond, __mutex); 25082: } 25082: 25082: static inline int 25082: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, 25082: const __gthread_time_t *__abs_timeout) 25082: { 25082: return __gthrw_pthread_cond_timedwait (__cond, __mutex, __abs_timeout); 25082: } 25082: 25082: static inline int 25082: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, 25082: __gthread_recursive_mutex_t *__mutex) 25082: { 25082: return __gthread_cond_wait (__cond, __mutex); 25082: } 25082: 25082: static inline int 25082: __gthread_cond_destroy (__gthread_cond_t* __cond) 25082: { 25082: return __gthrw_pthread_cond_destroy (__cond); 25082: } 25082: # 149 "/usr/include/aarch64-linux-gnu/c++/8/bits/gthr.h" 2 3 25082: 25082: 25082: #pragma GCC visibility pop 25082: # 36 "/usr/include/c++/8/ext/atomicity.h" 2 3 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/atomic_word.h" 1 3 25082: # 32 "/usr/include/aarch64-linux-gnu/c++/8/bits/atomic_word.h" 3 25082: typedef int _Atomic_word; 25082: # 37 "/usr/include/c++/8/ext/atomicity.h" 2 3 25082: 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: static inline _Atomic_word 25082: __exchange_and_add(volatile _Atomic_word* __mem, int __val) 25082: { return __atomic_fetch_add(__mem, __val, 4); } 25082: 25082: static inline void 25082: __atomic_add(volatile _Atomic_word* __mem, int __val) 25082: { __atomic_fetch_add(__mem, __val, 4); } 25082: # 64 "/usr/include/c++/8/ext/atomicity.h" 3 25082: static inline _Atomic_word 25082: __exchange_and_add_single(_Atomic_word* __mem, int __val) 25082: { 25082: _Atomic_word __result = *__mem; 25082: *__mem += __val; 25082: return __result; 25082: } 25082: 25082: static inline void 25082: __atomic_add_single(_Atomic_word* __mem, int __val) 25082: { *__mem += __val; } 25082: 25082: static inline _Atomic_word 25082: __attribute__ ((__unused__)) 25082: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) 25082: { 25082: 25082: if (__gthread_active_p()) 25082: return __exchange_and_add(__mem, __val); 25082: else 25082: return __exchange_and_add_single(__mem, __val); 25082: 25082: 25082: 25082: } 25082: 25082: static inline void 25082: __attribute__ ((__unused__)) 25082: __atomic_add_dispatch(_Atomic_word* __mem, int __val) 25082: { 25082: 25082: if (__gthread_active_p()) 25082: __atomic_add(__mem, __val); 25082: else 25082: __atomic_add_single(__mem, __val); 25082: 25082: 25082: 25082: } 25082: 25082: 25082: } 25082: # 74 "/usr/include/c++/8/memory" 2 3 25082: # 1 "/usr/include/c++/8/ext/concurrence.h" 1 3 25082: # 32 "/usr/include/c++/8/ext/concurrence.h" 3 25082: 25082: # 33 "/usr/include/c++/8/ext/concurrence.h" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; 25082: 25082: 25082: 25082: static const _Lock_policy __default_lock_policy = 25082: 25082: 25082: 25082: _S_atomic; 25082: # 67 "/usr/include/c++/8/ext/concurrence.h" 3 25082: class __concurrence_lock_error : public std::exception 25082: { 25082: public: 25082: virtual char const* 25082: what() const throw() 25082: { return "__gnu_cxx::__concurrence_lock_error"; } 25082: }; 25082: 25082: class __concurrence_unlock_error : public std::exception 25082: { 25082: public: 25082: virtual char const* 25082: what() const throw() 25082: { return "__gnu_cxx::__concurrence_unlock_error"; } 25082: }; 25082: 25082: class __concurrence_broadcast_error : public std::exception 25082: { 25082: public: 25082: virtual char const* 25082: what() const throw() 25082: { return "__gnu_cxx::__concurrence_broadcast_error"; } 25082: }; 25082: 25082: class __concurrence_wait_error : public std::exception 25082: { 25082: public: 25082: virtual char const* 25082: what() const throw() 25082: { return "__gnu_cxx::__concurrence_wait_error"; } 25082: }; 25082: 25082: 25082: inline void 25082: __throw_concurrence_lock_error() 25082: { (throw (__concurrence_lock_error())); } 25082: 25082: inline void 25082: __throw_concurrence_unlock_error() 25082: { (throw (__concurrence_unlock_error())); } 25082: 25082: 25082: inline void 25082: __throw_concurrence_broadcast_error() 25082: { (throw (__concurrence_broadcast_error())); } 25082: 25082: inline void 25082: __throw_concurrence_wait_error() 25082: { (throw (__concurrence_wait_error())); } 25082: 25082: 25082: class __mutex 25082: { 25082: private: 25082: 25082: __gthread_mutex_t _M_mutex = { { 0, 0, 0, 0, 0, 0, { 0, 0 } } }; 25082: 25082: 25082: 25082: 25082: __mutex(const __mutex&); 25082: __mutex& operator=(const __mutex&); 25082: 25082: public: 25082: __mutex() 25082: { 25082: 25082: 25082: 25082: 25082: } 25082: # 147 "/usr/include/c++/8/ext/concurrence.h" 3 25082: void lock() 25082: { 25082: 25082: if (__gthread_active_p()) 25082: { 25082: if (__gthread_mutex_lock(&_M_mutex) != 0) 25082: __throw_concurrence_lock_error(); 25082: } 25082: 25082: } 25082: 25082: void unlock() 25082: { 25082: 25082: if (__gthread_active_p()) 25082: { 25082: if (__gthread_mutex_unlock(&_M_mutex) != 0) 25082: __throw_concurrence_unlock_error(); 25082: } 25082: 25082: } 25082: 25082: __gthread_mutex_t* gthread_mutex(void) 25082: { return &_M_mutex; } 25082: }; 25082: 25082: class __recursive_mutex 25082: { 25082: private: 25082: 25082: __gthread_recursive_mutex_t _M_mutex = { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0, 0 } } }; 25082: 25082: 25082: 25082: 25082: __recursive_mutex(const __recursive_mutex&); 25082: __recursive_mutex& operator=(const __recursive_mutex&); 25082: 25082: public: 25082: __recursive_mutex() 25082: { 25082: 25082: 25082: 25082: 25082: } 25082: # 202 "/usr/include/c++/8/ext/concurrence.h" 3 25082: void lock() 25082: { 25082: 25082: if (__gthread_active_p()) 25082: { 25082: if (__gthread_recursive_mutex_lock(&_M_mutex) != 0) 25082: __throw_concurrence_lock_error(); 25082: } 25082: 25082: } 25082: 25082: void unlock() 25082: { 25082: 25082: if (__gthread_active_p()) 25082: { 25082: if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0) 25082: __throw_concurrence_unlock_error(); 25082: } 25082: 25082: } 25082: 25082: __gthread_recursive_mutex_t* gthread_recursive_mutex(void) 25082: { return &_M_mutex; } 25082: }; 25082: 25082: 25082: 25082: 25082: class __scoped_lock 25082: { 25082: public: 25082: typedef __mutex __mutex_type; 25082: 25082: private: 25082: __mutex_type& _M_device; 25082: 25082: __scoped_lock(const __scoped_lock&); 25082: __scoped_lock& operator=(const __scoped_lock&); 25082: 25082: public: 25082: explicit __scoped_lock(__mutex_type& __name) : _M_device(__name) 25082: { _M_device.lock(); } 25082: 25082: ~__scoped_lock() throw() 25082: { _M_device.unlock(); } 25082: }; 25082: 25082: 25082: class __cond 25082: { 25082: private: 25082: 25082: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }; 25082: 25082: 25082: 25082: 25082: __cond(const __cond&); 25082: __cond& operator=(const __cond&); 25082: 25082: public: 25082: __cond() 25082: { 25082: 25082: 25082: 25082: 25082: } 25082: # 280 "/usr/include/c++/8/ext/concurrence.h" 3 25082: void broadcast() 25082: { 25082: 25082: if (__gthread_active_p()) 25082: { 25082: if (__gthread_cond_broadcast(&_M_cond) != 0) 25082: __throw_concurrence_broadcast_error(); 25082: } 25082: 25082: } 25082: 25082: void wait(__mutex *mutex) 25082: { 25082: 25082: { 25082: if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0) 25082: __throw_concurrence_wait_error(); 25082: } 25082: 25082: } 25082: 25082: void wait_recursive(__recursive_mutex *mutex) 25082: { 25082: 25082: { 25082: if (__gthread_cond_wait_recursive(&_M_cond, 25082: mutex->gthread_recursive_mutex()) 25082: != 0) 25082: __throw_concurrence_wait_error(); 25082: } 25082: 25082: } 25082: }; 25082: 25082: 25082: 25082: } 25082: # 75 "/usr/include/c++/8/memory" 2 3 25082: 25082: # 1 "/usr/include/c++/8/bits/stl_function.h" 1 3 25082: # 63 "/usr/include/c++/8/bits/stl_function.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 104 "/usr/include/c++/8/bits/stl_function.h" 3 25082: template 25082: struct unary_function 25082: { 25082: 25082: typedef _Arg argument_type; 25082: 25082: 25082: typedef _Result result_type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct binary_function 25082: { 25082: 25082: typedef _Arg1 first_argument_type; 25082: 25082: 25082: typedef _Arg2 second_argument_type; 25082: 25082: 25082: typedef _Result result_type; 25082: }; 25082: # 144 "/usr/include/c++/8/bits/stl_function.h" 3 25082: struct __is_transparent; 25082: 25082: template 25082: struct plus; 25082: 25082: template 25082: struct minus; 25082: 25082: template 25082: struct multiplies; 25082: 25082: template 25082: struct divides; 25082: 25082: template 25082: struct modulus; 25082: 25082: template 25082: struct negate; 25082: 25082: 25082: 25082: template 25082: struct plus : public binary_function<_Tp, _Tp, _Tp> 25082: { 25082: constexpr 25082: _Tp 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x + __y; } 25082: }; 25082: 25082: 25082: template 25082: struct minus : public binary_function<_Tp, _Tp, _Tp> 25082: { 25082: constexpr 25082: _Tp 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x - __y; } 25082: }; 25082: 25082: 25082: template 25082: struct multiplies : public binary_function<_Tp, _Tp, _Tp> 25082: { 25082: constexpr 25082: _Tp 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x * __y; } 25082: }; 25082: 25082: 25082: template 25082: struct divides : public binary_function<_Tp, _Tp, _Tp> 25082: { 25082: constexpr 25082: _Tp 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x / __y; } 25082: }; 25082: 25082: 25082: template 25082: struct modulus : public binary_function<_Tp, _Tp, _Tp> 25082: { 25082: constexpr 25082: _Tp 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x % __y; } 25082: }; 25082: 25082: 25082: template 25082: struct negate : public unary_function<_Tp, _Tp> 25082: { 25082: constexpr 25082: _Tp 25082: operator()(const _Tp& __x) const 25082: { return -__x; } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: struct plus 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) + std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) + std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) + std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: 25082: template<> 25082: struct minus 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) - std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) - std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) - std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: 25082: template<> 25082: struct multiplies 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) * std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) * std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) * std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: 25082: template<> 25082: struct divides 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) / std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) / std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) / std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: 25082: template<> 25082: struct modulus 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) % std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) % std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) % std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: 25082: template<> 25082: struct negate 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t) const 25082: noexcept(noexcept(-std::forward<_Tp>(__t))) 25082: -> decltype(-std::forward<_Tp>(__t)) 25082: { return -std::forward<_Tp>(__t); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: # 330 "/usr/include/c++/8/bits/stl_function.h" 3 25082: template 25082: struct equal_to; 25082: 25082: template 25082: struct not_equal_to; 25082: 25082: template 25082: struct greater; 25082: 25082: template 25082: struct less; 25082: 25082: template 25082: struct greater_equal; 25082: 25082: template 25082: struct less_equal; 25082: 25082: 25082: 25082: template 25082: struct equal_to : public binary_function<_Tp, _Tp, bool> 25082: { 25082: constexpr 25082: bool 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x == __y; } 25082: }; 25082: 25082: 25082: template 25082: struct not_equal_to : public binary_function<_Tp, _Tp, bool> 25082: { 25082: constexpr 25082: bool 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x != __y; } 25082: }; 25082: 25082: 25082: template 25082: struct greater : public binary_function<_Tp, _Tp, bool> 25082: { 25082: constexpr 25082: bool 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x > __y; } 25082: }; 25082: 25082: 25082: template 25082: struct less : public binary_function<_Tp, _Tp, bool> 25082: { 25082: constexpr 25082: bool 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x < __y; } 25082: }; 25082: 25082: 25082: template 25082: struct greater_equal : public binary_function<_Tp, _Tp, bool> 25082: { 25082: constexpr 25082: bool 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x >= __y; } 25082: }; 25082: 25082: 25082: template 25082: struct less_equal : public binary_function<_Tp, _Tp, bool> 25082: { 25082: constexpr 25082: bool 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x <= __y; } 25082: }; 25082: 25082: 25082: template 25082: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 25082: { 25082: constexpr bool 25082: operator()(_Tp* __x, _Tp* __y) const noexcept 25082: { 25082: if (__builtin_constant_p (__x > __y)) 25082: return __x > __y; 25082: return (long unsigned int)__x > (long unsigned int)__y; 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 25082: { 25082: constexpr bool 25082: operator()(_Tp* __x, _Tp* __y) const noexcept 25082: { 25082: if (__builtin_constant_p (__x < __y)) 25082: return __x < __y; 25082: return (long unsigned int)__x < (long unsigned int)__y; 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 25082: { 25082: constexpr bool 25082: operator()(_Tp* __x, _Tp* __y) const noexcept 25082: { 25082: if (__builtin_constant_p (__x >= __y)) 25082: return __x >= __y; 25082: return (long unsigned int)__x >= (long unsigned int)__y; 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 25082: { 25082: constexpr bool 25082: operator()(_Tp* __x, _Tp* __y) const noexcept 25082: { 25082: if (__builtin_constant_p (__x <= __y)) 25082: return __x <= __y; 25082: return (long unsigned int)__x <= (long unsigned int)__y; 25082: } 25082: }; 25082: 25082: 25082: 25082: template<> 25082: struct equal_to 25082: { 25082: template 25082: constexpr auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) == std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) == std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: 25082: template<> 25082: struct not_equal_to 25082: { 25082: template 25082: constexpr auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) != std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) != std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) != std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: 25082: template<> 25082: struct greater 25082: { 25082: template 25082: constexpr auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) > std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) > std::forward<_Up>(__u)) 25082: { 25082: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), 25082: __ptr_cmp<_Tp, _Up>{}); 25082: } 25082: 25082: template 25082: constexpr bool 25082: operator()(_Tp* __t, _Up* __u) const noexcept 25082: { return greater>{}(__t, __u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: 25082: private: 25082: template 25082: static constexpr decltype(auto) 25082: _S_cmp(_Tp&& __t, _Up&& __u, false_type) 25082: { return std::forward<_Tp>(__t) > std::forward<_Up>(__u); } 25082: 25082: template 25082: static constexpr bool 25082: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept 25082: { 25082: return greater{}( 25082: static_cast(std::forward<_Tp>(__t)), 25082: static_cast(std::forward<_Up>(__u))); 25082: } 25082: 25082: 25082: template 25082: struct __not_overloaded2 : true_type { }; 25082: 25082: 25082: template 25082: struct __not_overloaded2<_Tp, _Up, __void_t< 25082: decltype(std::declval<_Tp>().operator>(std::declval<_Up>()))>> 25082: : false_type { }; 25082: 25082: 25082: template 25082: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; 25082: 25082: 25082: template 25082: struct __not_overloaded<_Tp, _Up, __void_t< 25082: decltype(operator>(std::declval<_Tp>(), std::declval<_Up>()))>> 25082: : false_type { }; 25082: 25082: template 25082: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, 25082: is_convertible<_Tp, const volatile void*>, 25082: is_convertible<_Up, const volatile void*>>; 25082: }; 25082: 25082: 25082: template<> 25082: struct less 25082: { 25082: template 25082: constexpr auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) < std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) < std::forward<_Up>(__u)) 25082: { 25082: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), 25082: __ptr_cmp<_Tp, _Up>{}); 25082: } 25082: 25082: template 25082: constexpr bool 25082: operator()(_Tp* __t, _Up* __u) const noexcept 25082: { return less>{}(__t, __u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: 25082: private: 25082: template 25082: static constexpr decltype(auto) 25082: _S_cmp(_Tp&& __t, _Up&& __u, false_type) 25082: { return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } 25082: 25082: template 25082: static constexpr bool 25082: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept 25082: { 25082: return less{}( 25082: static_cast(std::forward<_Tp>(__t)), 25082: static_cast(std::forward<_Up>(__u))); 25082: } 25082: 25082: 25082: template 25082: struct __not_overloaded2 : true_type { }; 25082: 25082: 25082: template 25082: struct __not_overloaded2<_Tp, _Up, __void_t< 25082: decltype(std::declval<_Tp>().operator<(std::declval<_Up>()))>> 25082: : false_type { }; 25082: 25082: 25082: template 25082: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; 25082: 25082: 25082: template 25082: struct __not_overloaded<_Tp, _Up, __void_t< 25082: decltype(operator<(std::declval<_Tp>(), std::declval<_Up>()))>> 25082: : false_type { }; 25082: 25082: template 25082: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, 25082: is_convertible<_Tp, const volatile void*>, 25082: is_convertible<_Up, const volatile void*>>; 25082: }; 25082: 25082: 25082: template<> 25082: struct greater_equal 25082: { 25082: template 25082: constexpr auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) >= std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) >= std::forward<_Up>(__u)) 25082: { 25082: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), 25082: __ptr_cmp<_Tp, _Up>{}); 25082: } 25082: 25082: template 25082: constexpr bool 25082: operator()(_Tp* __t, _Up* __u) const noexcept 25082: { return greater_equal>{}(__t, __u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: 25082: private: 25082: template 25082: static constexpr decltype(auto) 25082: _S_cmp(_Tp&& __t, _Up&& __u, false_type) 25082: { return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); } 25082: 25082: template 25082: static constexpr bool 25082: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept 25082: { 25082: return greater_equal{}( 25082: static_cast(std::forward<_Tp>(__t)), 25082: static_cast(std::forward<_Up>(__u))); 25082: } 25082: 25082: 25082: template 25082: struct __not_overloaded2 : true_type { }; 25082: 25082: 25082: template 25082: struct __not_overloaded2<_Tp, _Up, __void_t< 25082: decltype(std::declval<_Tp>().operator>=(std::declval<_Up>()))>> 25082: : false_type { }; 25082: 25082: 25082: template 25082: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; 25082: 25082: 25082: template 25082: struct __not_overloaded<_Tp, _Up, __void_t< 25082: decltype(operator>=(std::declval<_Tp>(), std::declval<_Up>()))>> 25082: : false_type { }; 25082: 25082: template 25082: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, 25082: is_convertible<_Tp, const volatile void*>, 25082: is_convertible<_Up, const volatile void*>>; 25082: }; 25082: 25082: 25082: template<> 25082: struct less_equal 25082: { 25082: template 25082: constexpr auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) <= std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) <= std::forward<_Up>(__u)) 25082: { 25082: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), 25082: __ptr_cmp<_Tp, _Up>{}); 25082: } 25082: 25082: template 25082: constexpr bool 25082: operator()(_Tp* __t, _Up* __u) const noexcept 25082: { return less_equal>{}(__t, __u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: 25082: private: 25082: template 25082: static constexpr decltype(auto) 25082: _S_cmp(_Tp&& __t, _Up&& __u, false_type) 25082: { return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); } 25082: 25082: template 25082: static constexpr bool 25082: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept 25082: { 25082: return less_equal{}( 25082: static_cast(std::forward<_Tp>(__t)), 25082: static_cast(std::forward<_Up>(__u))); 25082: } 25082: 25082: 25082: template 25082: struct __not_overloaded2 : true_type { }; 25082: 25082: 25082: template 25082: struct __not_overloaded2<_Tp, _Up, __void_t< 25082: decltype(std::declval<_Tp>().operator<=(std::declval<_Up>()))>> 25082: : false_type { }; 25082: 25082: 25082: template 25082: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; 25082: 25082: 25082: template 25082: struct __not_overloaded<_Tp, _Up, __void_t< 25082: decltype(operator<=(std::declval<_Tp>(), std::declval<_Up>()))>> 25082: : false_type { }; 25082: 25082: template 25082: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, 25082: is_convertible<_Tp, const volatile void*>, 25082: is_convertible<_Up, const volatile void*>>; 25082: }; 25082: # 750 "/usr/include/c++/8/bits/stl_function.h" 3 25082: template 25082: struct logical_and; 25082: 25082: template 25082: struct logical_or; 25082: 25082: template 25082: struct logical_not; 25082: 25082: 25082: 25082: template 25082: struct logical_and : public binary_function<_Tp, _Tp, bool> 25082: { 25082: constexpr 25082: bool 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x && __y; } 25082: }; 25082: 25082: 25082: template 25082: struct logical_or : public binary_function<_Tp, _Tp, bool> 25082: { 25082: constexpr 25082: bool 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x || __y; } 25082: }; 25082: 25082: 25082: template 25082: struct logical_not : public unary_function<_Tp, bool> 25082: { 25082: constexpr 25082: bool 25082: operator()(const _Tp& __x) const 25082: { return !__x; } 25082: }; 25082: 25082: 25082: 25082: template<> 25082: struct logical_and 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) && std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) && std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) && std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: 25082: template<> 25082: struct logical_or 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) || std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) || std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) || std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: 25082: template<> 25082: struct logical_not 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t) const 25082: noexcept(noexcept(!std::forward<_Tp>(__t))) 25082: -> decltype(!std::forward<_Tp>(__t)) 25082: { return !std::forward<_Tp>(__t); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct bit_and; 25082: 25082: template 25082: struct bit_or; 25082: 25082: template 25082: struct bit_xor; 25082: 25082: template 25082: struct bit_not; 25082: 25082: 25082: 25082: 25082: template 25082: struct bit_and : public binary_function<_Tp, _Tp, _Tp> 25082: { 25082: constexpr 25082: _Tp 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x & __y; } 25082: }; 25082: 25082: template 25082: struct bit_or : public binary_function<_Tp, _Tp, _Tp> 25082: { 25082: constexpr 25082: _Tp 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x | __y; } 25082: }; 25082: 25082: template 25082: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> 25082: { 25082: constexpr 25082: _Tp 25082: operator()(const _Tp& __x, const _Tp& __y) const 25082: { return __x ^ __y; } 25082: }; 25082: 25082: template 25082: struct bit_not : public unary_function<_Tp, _Tp> 25082: { 25082: constexpr 25082: _Tp 25082: operator()(const _Tp& __x) const 25082: { return ~__x; } 25082: }; 25082: 25082: 25082: template <> 25082: struct bit_and 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) & std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) & std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) & std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: template <> 25082: struct bit_or 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) | std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) | std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) | std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: template <> 25082: struct bit_xor 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t, _Up&& __u) const 25082: noexcept(noexcept(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u))) 25082: -> decltype(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u)) 25082: { return std::forward<_Tp>(__t) ^ std::forward<_Up>(__u); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: 25082: template <> 25082: struct bit_not 25082: { 25082: template 25082: constexpr 25082: auto 25082: operator()(_Tp&& __t) const 25082: noexcept(noexcept(~std::forward<_Tp>(__t))) 25082: -> decltype(~std::forward<_Tp>(__t)) 25082: { return ~std::forward<_Tp>(__t); } 25082: 25082: typedef __is_transparent is_transparent; 25082: }; 25082: # 978 "/usr/include/c++/8/bits/stl_function.h" 3 25082: template 25082: class unary_negate 25082: : public unary_function 25082: { 25082: protected: 25082: _Predicate _M_pred; 25082: 25082: public: 25082: constexpr 25082: explicit 25082: unary_negate(const _Predicate& __x) : _M_pred(__x) { } 25082: 25082: constexpr 25082: bool 25082: operator()(const typename _Predicate::argument_type& __x) const 25082: { return !_M_pred(__x); } 25082: }; 25082: 25082: 25082: template 25082: constexpr 25082: inline unary_negate<_Predicate> 25082: not1(const _Predicate& __pred) 25082: { return unary_negate<_Predicate>(__pred); } 25082: 25082: 25082: template 25082: class binary_negate 25082: : public binary_function 25082: { 25082: protected: 25082: _Predicate _M_pred; 25082: 25082: public: 25082: constexpr 25082: explicit 25082: binary_negate(const _Predicate& __x) : _M_pred(__x) { } 25082: 25082: constexpr 25082: bool 25082: operator()(const typename _Predicate::first_argument_type& __x, 25082: const typename _Predicate::second_argument_type& __y) const 25082: { return !_M_pred(__x, __y); } 25082: }; 25082: 25082: 25082: template 25082: constexpr 25082: inline binary_negate<_Predicate> 25082: not2(const _Predicate& __pred) 25082: { return binary_negate<_Predicate>(__pred); } 25082: # 1055 "/usr/include/c++/8/bits/stl_function.h" 3 25082: template 25082: class pointer_to_unary_function : public unary_function<_Arg, _Result> 25082: { 25082: protected: 25082: _Result (*_M_ptr)(_Arg); 25082: 25082: public: 25082: pointer_to_unary_function() { } 25082: 25082: explicit 25082: pointer_to_unary_function(_Result (*__x)(_Arg)) 25082: : _M_ptr(__x) { } 25082: 25082: _Result 25082: operator()(_Arg __x) const 25082: { return _M_ptr(__x); } 25082: }; 25082: 25082: 25082: template 25082: inline pointer_to_unary_function<_Arg, _Result> 25082: ptr_fun(_Result (*__x)(_Arg)) 25082: { return pointer_to_unary_function<_Arg, _Result>(__x); } 25082: 25082: 25082: template 25082: class pointer_to_binary_function 25082: : public binary_function<_Arg1, _Arg2, _Result> 25082: { 25082: protected: 25082: _Result (*_M_ptr)(_Arg1, _Arg2); 25082: 25082: public: 25082: pointer_to_binary_function() { } 25082: 25082: explicit 25082: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 25082: : _M_ptr(__x) { } 25082: 25082: _Result 25082: operator()(_Arg1 __x, _Arg2 __y) const 25082: { return _M_ptr(__x, __y); } 25082: }; 25082: 25082: 25082: template 25082: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> 25082: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) 25082: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } 25082: 25082: 25082: template 25082: struct _Identity 25082: : public unary_function<_Tp, _Tp> 25082: { 25082: _Tp& 25082: operator()(_Tp& __x) const 25082: { return __x; } 25082: 25082: const _Tp& 25082: operator()(const _Tp& __x) const 25082: { return __x; } 25082: }; 25082: 25082: 25082: template struct _Identity : _Identity<_Tp> { }; 25082: 25082: template 25082: struct _Select1st 25082: : public unary_function<_Pair, typename _Pair::first_type> 25082: { 25082: typename _Pair::first_type& 25082: operator()(_Pair& __x) const 25082: { return __x.first; } 25082: 25082: const typename _Pair::first_type& 25082: operator()(const _Pair& __x) const 25082: { return __x.first; } 25082: 25082: 25082: template 25082: typename _Pair2::first_type& 25082: operator()(_Pair2& __x) const 25082: { return __x.first; } 25082: 25082: template 25082: const typename _Pair2::first_type& 25082: operator()(const _Pair2& __x) const 25082: { return __x.first; } 25082: 25082: }; 25082: 25082: template 25082: struct _Select2nd 25082: : public unary_function<_Pair, typename _Pair::second_type> 25082: { 25082: typename _Pair::second_type& 25082: operator()(_Pair& __x) const 25082: { return __x.second; } 25082: 25082: const typename _Pair::second_type& 25082: operator()(const _Pair& __x) const 25082: { return __x.second; } 25082: }; 25082: # 1178 "/usr/include/c++/8/bits/stl_function.h" 3 25082: template 25082: class mem_fun_t : public unary_function<_Tp*, _Ret> 25082: { 25082: public: 25082: explicit 25082: mem_fun_t(_Ret (_Tp::*__pf)()) 25082: : _M_f(__pf) { } 25082: 25082: _Ret 25082: operator()(_Tp* __p) const 25082: { return (__p->*_M_f)(); } 25082: 25082: private: 25082: _Ret (_Tp::*_M_f)(); 25082: }; 25082: 25082: 25082: 25082: template 25082: class const_mem_fun_t : public unary_function 25082: { 25082: public: 25082: explicit 25082: const_mem_fun_t(_Ret (_Tp::*__pf)() const) 25082: : _M_f(__pf) { } 25082: 25082: _Ret 25082: operator()(const _Tp* __p) const 25082: { return (__p->*_M_f)(); } 25082: 25082: private: 25082: _Ret (_Tp::*_M_f)() const; 25082: }; 25082: 25082: 25082: 25082: template 25082: class mem_fun_ref_t : public unary_function<_Tp, _Ret> 25082: { 25082: public: 25082: explicit 25082: mem_fun_ref_t(_Ret (_Tp::*__pf)()) 25082: : _M_f(__pf) { } 25082: 25082: _Ret 25082: operator()(_Tp& __r) const 25082: { return (__r.*_M_f)(); } 25082: 25082: private: 25082: _Ret (_Tp::*_M_f)(); 25082: }; 25082: 25082: 25082: 25082: template 25082: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> 25082: { 25082: public: 25082: explicit 25082: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) 25082: : _M_f(__pf) { } 25082: 25082: _Ret 25082: operator()(const _Tp& __r) const 25082: { return (__r.*_M_f)(); } 25082: 25082: private: 25082: _Ret (_Tp::*_M_f)() const; 25082: }; 25082: 25082: 25082: 25082: template 25082: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> 25082: { 25082: public: 25082: explicit 25082: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) 25082: : _M_f(__pf) { } 25082: 25082: _Ret 25082: operator()(_Tp* __p, _Arg __x) const 25082: { return (__p->*_M_f)(__x); } 25082: 25082: private: 25082: _Ret (_Tp::*_M_f)(_Arg); 25082: }; 25082: 25082: 25082: 25082: template 25082: class const_mem_fun1_t : public binary_function 25082: { 25082: public: 25082: explicit 25082: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) 25082: : _M_f(__pf) { } 25082: 25082: _Ret 25082: operator()(const _Tp* __p, _Arg __x) const 25082: { return (__p->*_M_f)(__x); } 25082: 25082: private: 25082: _Ret (_Tp::*_M_f)(_Arg) const; 25082: }; 25082: 25082: 25082: 25082: template 25082: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 25082: { 25082: public: 25082: explicit 25082: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) 25082: : _M_f(__pf) { } 25082: 25082: _Ret 25082: operator()(_Tp& __r, _Arg __x) const 25082: { return (__r.*_M_f)(__x); } 25082: 25082: private: 25082: _Ret (_Tp::*_M_f)(_Arg); 25082: }; 25082: 25082: 25082: 25082: template 25082: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 25082: { 25082: public: 25082: explicit 25082: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) 25082: : _M_f(__pf) { } 25082: 25082: _Ret 25082: operator()(const _Tp& __r, _Arg __x) const 25082: { return (__r.*_M_f)(__x); } 25082: 25082: private: 25082: _Ret (_Tp::*_M_f)(_Arg) const; 25082: }; 25082: 25082: 25082: 25082: template 25082: inline mem_fun_t<_Ret, _Tp> 25082: mem_fun(_Ret (_Tp::*__f)()) 25082: { return mem_fun_t<_Ret, _Tp>(__f); } 25082: 25082: template 25082: inline const_mem_fun_t<_Ret, _Tp> 25082: mem_fun(_Ret (_Tp::*__f)() const) 25082: { return const_mem_fun_t<_Ret, _Tp>(__f); } 25082: 25082: template 25082: inline mem_fun_ref_t<_Ret, _Tp> 25082: mem_fun_ref(_Ret (_Tp::*__f)()) 25082: { return mem_fun_ref_t<_Ret, _Tp>(__f); } 25082: 25082: template 25082: inline const_mem_fun_ref_t<_Ret, _Tp> 25082: mem_fun_ref(_Ret (_Tp::*__f)() const) 25082: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } 25082: 25082: template 25082: inline mem_fun1_t<_Ret, _Tp, _Arg> 25082: mem_fun(_Ret (_Tp::*__f)(_Arg)) 25082: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 25082: 25082: template 25082: inline const_mem_fun1_t<_Ret, _Tp, _Arg> 25082: mem_fun(_Ret (_Tp::*__f)(_Arg) const) 25082: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 25082: 25082: template 25082: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> 25082: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) 25082: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 25082: 25082: template 25082: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> 25082: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) 25082: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 25082: 25082: 25082: 25082: 25082: } 25082: 25082: 25082: # 1 "/usr/include/c++/8/backward/binders.h" 1 3 25082: # 60 "/usr/include/c++/8/backward/binders.h" 3 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 107 "/usr/include/c++/8/backward/binders.h" 3 25082: template 25082: class binder1st 25082: : public unary_function 25082: { 25082: protected: 25082: _Operation op; 25082: typename _Operation::first_argument_type value; 25082: 25082: public: 25082: binder1st(const _Operation& __x, 25082: const typename _Operation::first_argument_type& __y) 25082: : op(__x), value(__y) { } 25082: 25082: typename _Operation::result_type 25082: operator()(const typename _Operation::second_argument_type& __x) const 25082: { return op(value, __x); } 25082: 25082: 25082: 25082: typename _Operation::result_type 25082: operator()(typename _Operation::second_argument_type& __x) const 25082: { return op(value, __x); } 25082: } __attribute__ ((__deprecated__)); 25082: 25082: 25082: template 25082: inline binder1st<_Operation> 25082: bind1st(const _Operation& __fn, const _Tp& __x) 25082: { 25082: typedef typename _Operation::first_argument_type _Arg1_type; 25082: return binder1st<_Operation>(__fn, _Arg1_type(__x)); 25082: } 25082: 25082: 25082: template 25082: class binder2nd 25082: : public unary_function 25082: { 25082: protected: 25082: _Operation op; 25082: typename _Operation::second_argument_type value; 25082: 25082: public: 25082: binder2nd(const _Operation& __x, 25082: const typename _Operation::second_argument_type& __y) 25082: : op(__x), value(__y) { } 25082: 25082: typename _Operation::result_type 25082: operator()(const typename _Operation::first_argument_type& __x) const 25082: { return op(__x, value); } 25082: 25082: 25082: 25082: typename _Operation::result_type 25082: operator()(typename _Operation::first_argument_type& __x) const 25082: { return op(__x, value); } 25082: } __attribute__ ((__deprecated__)); 25082: 25082: 25082: template 25082: inline binder2nd<_Operation> 25082: bind2nd(const _Operation& __fn, const _Tp& __x) 25082: { 25082: typedef typename _Operation::second_argument_type _Arg2_type; 25082: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); 25082: } 25082: 25082: 25082: 25082: } 25082: 25082: #pragma GCC diagnostic pop 25082: # 1369 "/usr/include/c++/8/bits/stl_function.h" 2 3 25082: # 77 "/usr/include/c++/8/memory" 2 3 25082: # 1 "/usr/include/c++/8/bits/uses_allocator.h" 1 3 25082: # 35 "/usr/include/c++/8/bits/uses_allocator.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: struct __erased_type { }; 25082: 25082: template 25082: using __is_erased_or_convertible 25082: = __or_, is_convertible<_Alloc, _Tp>>; 25082: 25082: 25082: struct allocator_arg_t { explicit allocator_arg_t() = default; }; 25082: 25082: inline constexpr allocator_arg_t allocator_arg = 25082: allocator_arg_t(); 25082: 25082: template> 25082: struct __uses_allocator_helper 25082: : false_type { }; 25082: 25082: template 25082: struct __uses_allocator_helper<_Tp, _Alloc, 25082: __void_t> 25082: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type 25082: { }; 25082: 25082: 25082: template 25082: struct uses_allocator 25082: : __uses_allocator_helper<_Tp, _Alloc>::type 25082: { }; 25082: 25082: struct __uses_alloc_base { }; 25082: 25082: struct __uses_alloc0 : __uses_alloc_base 25082: { 25082: struct _Sink { void operator=(const void*) { } } _M_a; 25082: }; 25082: 25082: template 25082: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; 25082: 25082: template 25082: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; 25082: 25082: template 25082: struct __uses_alloc; 25082: 25082: template 25082: struct __uses_alloc 25082: : conditional< 25082: is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value, 25082: __uses_alloc1<_Alloc>, 25082: __uses_alloc2<_Alloc>>::type 25082: { 25082: static_assert(__or_< 25082: is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>, 25082: is_constructible<_Tp, _Args..., _Alloc>>::value, "construction with" 25082: " an allocator must be possible if uses_allocator is true"); 25082: }; 25082: 25082: template 25082: struct __uses_alloc 25082: : __uses_alloc0 { }; 25082: 25082: template 25082: using __uses_alloc_t = 25082: __uses_alloc::value, _Tp, _Alloc, _Args...>; 25082: 25082: template 25082: inline __uses_alloc_t<_Tp, _Alloc, _Args...> 25082: __use_alloc(const _Alloc& __a) 25082: { 25082: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; 25082: __ret._M_a = std::__addressof(__a); 25082: return __ret; 25082: } 25082: 25082: template 25082: void 25082: __use_alloc(const _Alloc&&) = delete; 25082: 25082: 25082: template 25082: inline constexpr bool uses_allocator_v = 25082: uses_allocator<_Tp, _Alloc>::value; 25082: 25082: 25082: template class _Predicate, 25082: typename _Tp, typename _Alloc, typename... _Args> 25082: struct __is_uses_allocator_predicate 25082: : conditional::value, 25082: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, 25082: _Predicate<_Tp, _Args..., _Alloc>>, 25082: _Predicate<_Tp, _Args...>>::type { }; 25082: 25082: template 25082: struct __is_uses_allocator_constructible 25082: : __is_uses_allocator_predicate 25082: { }; 25082: 25082: 25082: template 25082: inline constexpr bool __is_uses_allocator_constructible_v = 25082: __is_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; 25082: 25082: 25082: template 25082: struct __is_nothrow_uses_allocator_constructible 25082: : __is_uses_allocator_predicate 25082: { }; 25082: 25082: 25082: 25082: template 25082: inline constexpr bool 25082: __is_nothrow_uses_allocator_constructible_v = 25082: __is_nothrow_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; 25082: 25082: 25082: template 25082: void __uses_allocator_construct_impl(__uses_alloc0 __a, _Tp* __ptr, 25082: _Args&&... __args) 25082: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } 25082: 25082: template 25082: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, 25082: _Args&&... __args) 25082: { 25082: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: template 25082: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, 25082: _Args&&... __args) 25082: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } 25082: 25082: template 25082: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, 25082: _Args&&... __args) 25082: { 25082: __uses_allocator_construct_impl(__use_alloc<_Tp, _Alloc, _Args...>(__a), 25082: __ptr, std::forward<_Args>(__args)...); 25082: } 25082: 25082: 25082: } 25082: # 78 "/usr/include/c++/8/memory" 2 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/unique_ptr.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: # 1 "/usr/include/c++/8/tuple" 1 3 25082: # 32 "/usr/include/c++/8/tuple" 3 25082: 25082: # 33 "/usr/include/c++/8/tuple" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/array" 1 3 25082: # 32 "/usr/include/c++/8/array" 3 25082: 25082: # 33 "/usr/include/c++/8/array" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/stdexcept" 1 3 25082: # 36 "/usr/include/c++/8/stdexcept" 3 25082: 25082: # 37 "/usr/include/c++/8/stdexcept" 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/string" 1 3 25082: # 36 "/usr/include/c++/8/string" 3 25082: 25082: # 37 "/usr/include/c++/8/string" 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/char_traits.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/char_traits.h" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/char_traits.h" 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/cwchar" 1 3 25082: # 39 "/usr/include/c++/8/cwchar" 3 25082: 25082: # 40 "/usr/include/c++/8/cwchar" 3 25082: # 42 "/usr/include/c++/8/bits/char_traits.h" 2 3 25082: 25082: 25082: 25082: 25082: 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 61 "/usr/include/c++/8/bits/char_traits.h" 3 25082: template 25082: struct _Char_types 25082: { 25082: typedef unsigned long int_type; 25082: typedef std::streampos pos_type; 25082: typedef std::streamoff off_type; 25082: typedef std::mbstate_t state_type; 25082: }; 25082: # 86 "/usr/include/c++/8/bits/char_traits.h" 3 25082: template 25082: struct char_traits 25082: { 25082: typedef _CharT char_type; 25082: typedef typename _Char_types<_CharT>::int_type int_type; 25082: typedef typename _Char_types<_CharT>::pos_type pos_type; 25082: typedef typename _Char_types<_CharT>::off_type off_type; 25082: typedef typename _Char_types<_CharT>::state_type state_type; 25082: 25082: static constexpr void 25082: assign(char_type& __c1, const char_type& __c2) 25082: { __c1 = __c2; } 25082: 25082: static constexpr bool 25082: eq(const char_type& __c1, const char_type& __c2) 25082: { return __c1 == __c2; } 25082: 25082: static constexpr bool 25082: lt(const char_type& __c1, const char_type& __c2) 25082: { return __c1 < __c2; } 25082: 25082: static constexpr int 25082: compare(const char_type* __s1, const char_type* __s2, std::size_t __n); 25082: 25082: static constexpr std::size_t 25082: length(const char_type* __s); 25082: 25082: static constexpr const char_type* 25082: find(const char_type* __s, std::size_t __n, const char_type& __a); 25082: 25082: static char_type* 25082: move(char_type* __s1, const char_type* __s2, std::size_t __n); 25082: 25082: static char_type* 25082: copy(char_type* __s1, const char_type* __s2, std::size_t __n); 25082: 25082: static char_type* 25082: assign(char_type* __s, std::size_t __n, char_type __a); 25082: 25082: static constexpr char_type 25082: to_char_type(const int_type& __c) 25082: { return static_cast(__c); } 25082: 25082: static constexpr int_type 25082: to_int_type(const char_type& __c) 25082: { return static_cast(__c); } 25082: 25082: static constexpr bool 25082: eq_int_type(const int_type& __c1, const int_type& __c2) 25082: { return __c1 == __c2; } 25082: 25082: static constexpr int_type 25082: eof() 25082: { return static_cast(-1); } 25082: 25082: static constexpr int_type 25082: not_eof(const int_type& __c) 25082: { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } 25082: }; 25082: 25082: template 25082: constexpr int 25082: char_traits<_CharT>:: 25082: compare(const char_type* __s1, const char_type* __s2, std::size_t __n) 25082: { 25082: for (std::size_t __i = 0; __i < __n; ++__i) 25082: if (lt(__s1[__i], __s2[__i])) 25082: return -1; 25082: else if (lt(__s2[__i], __s1[__i])) 25082: return 1; 25082: return 0; 25082: } 25082: 25082: template 25082: constexpr std::size_t 25082: char_traits<_CharT>:: 25082: length(const char_type* __p) 25082: { 25082: std::size_t __i = 0; 25082: while (!eq(__p[__i], char_type())) 25082: ++__i; 25082: return __i; 25082: } 25082: 25082: template 25082: constexpr const typename char_traits<_CharT>::char_type* 25082: char_traits<_CharT>:: 25082: find(const char_type* __s, std::size_t __n, const char_type& __a) 25082: { 25082: for (std::size_t __i = 0; __i < __n; ++__i) 25082: if (eq(__s[__i], __a)) 25082: return __s + __i; 25082: return 0; 25082: } 25082: 25082: template 25082: typename char_traits<_CharT>::char_type* 25082: char_traits<_CharT>:: 25082: move(char_type* __s1, const char_type* __s2, std::size_t __n) 25082: { 25082: if (__n == 0) 25082: return __s1; 25082: return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, 25082: __n * sizeof(char_type))); 25082: } 25082: 25082: template 25082: typename char_traits<_CharT>::char_type* 25082: char_traits<_CharT>:: 25082: copy(char_type* __s1, const char_type* __s2, std::size_t __n) 25082: { 25082: 25082: std::copy(__s2, __s2 + __n, __s1); 25082: return __s1; 25082: } 25082: 25082: template 25082: typename char_traits<_CharT>::char_type* 25082: char_traits<_CharT>:: 25082: assign(char_type* __s, std::size_t __n, char_type __a) 25082: { 25082: 25082: std::fill_n(__s, __n, __a); 25082: return __s; 25082: } 25082: 25082: 25082: } 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 229 "/usr/include/c++/8/bits/char_traits.h" 3 25082: template 25082: static inline __attribute__((__always_inline__)) constexpr bool 25082: __constant_string_p(const _CharT* __s) 25082: { 25082: while (__builtin_constant_p(*__s) && *__s) 25082: __s++; 25082: return __builtin_constant_p(*__s); 25082: } 25082: # 246 "/usr/include/c++/8/bits/char_traits.h" 3 25082: template 25082: static inline __attribute__((__always_inline__)) constexpr bool 25082: __constant_char_array_p(const _CharT* __a, size_t __n) 25082: { 25082: size_t __i = 0; 25082: while (__i < __n && __builtin_constant_p(__a[__i])) 25082: __i++; 25082: return __i == __n; 25082: } 25082: # 270 "/usr/include/c++/8/bits/char_traits.h" 3 25082: template 25082: struct char_traits : public __gnu_cxx::char_traits<_CharT> 25082: { }; 25082: 25082: 25082: 25082: template<> 25082: struct char_traits 25082: { 25082: typedef char char_type; 25082: typedef int int_type; 25082: typedef streampos pos_type; 25082: typedef streamoff off_type; 25082: typedef mbstate_t state_type; 25082: 25082: static constexpr void 25082: assign(char_type& __c1, const char_type& __c2) noexcept 25082: { __c1 = __c2; } 25082: 25082: static constexpr bool 25082: eq(const char_type& __c1, const char_type& __c2) noexcept 25082: { return __c1 == __c2; } 25082: 25082: static constexpr bool 25082: lt(const char_type& __c1, const char_type& __c2) noexcept 25082: { 25082: 25082: return (static_cast(__c1) 25082: < static_cast(__c2)); 25082: } 25082: 25082: static constexpr int 25082: compare(const char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: 25082: if (__builtin_constant_p(__n) 25082: && __constant_char_array_p(__s1, __n) 25082: && __constant_char_array_p(__s2, __n)) 25082: return __gnu_cxx::char_traits::compare(__s1, __s2, __n); 25082: 25082: if (__n == 0) 25082: return 0; 25082: return __builtin_memcmp(__s1, __s2, __n); 25082: } 25082: 25082: static constexpr size_t 25082: length(const char_type* __s) 25082: { 25082: 25082: if (__constant_string_p(__s)) 25082: return __gnu_cxx::char_traits::length(__s); 25082: 25082: return __builtin_strlen(__s); 25082: } 25082: 25082: static constexpr const char_type* 25082: find(const char_type* __s, size_t __n, const char_type& __a) 25082: { 25082: 25082: if (__builtin_constant_p(__n) 25082: && __builtin_constant_p(__a) 25082: && __constant_char_array_p(__s, __n)) 25082: return __gnu_cxx::char_traits::find(__s, __n, __a); 25082: 25082: if (__n == 0) 25082: return 0; 25082: return static_cast(__builtin_memchr(__s, __a, __n)); 25082: } 25082: 25082: static char_type* 25082: move(char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: if (__n == 0) 25082: return __s1; 25082: return static_cast(__builtin_memmove(__s1, __s2, __n)); 25082: } 25082: 25082: static char_type* 25082: copy(char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: if (__n == 0) 25082: return __s1; 25082: return static_cast(__builtin_memcpy(__s1, __s2, __n)); 25082: } 25082: 25082: static char_type* 25082: assign(char_type* __s, size_t __n, char_type __a) 25082: { 25082: if (__n == 0) 25082: return __s; 25082: return static_cast(__builtin_memset(__s, __a, __n)); 25082: } 25082: 25082: static constexpr char_type 25082: to_char_type(const int_type& __c) noexcept 25082: { return static_cast(__c); } 25082: 25082: 25082: 25082: static constexpr int_type 25082: to_int_type(const char_type& __c) noexcept 25082: { return static_cast(static_cast(__c)); } 25082: 25082: static constexpr bool 25082: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 25082: { return __c1 == __c2; } 25082: 25082: static constexpr int_type 25082: eof() noexcept 25082: { return static_cast(-1); } 25082: 25082: static constexpr int_type 25082: not_eof(const int_type& __c) noexcept 25082: { return (__c == eof()) ? 0 : __c; } 25082: }; 25082: 25082: 25082: 25082: 25082: template<> 25082: struct char_traits 25082: { 25082: typedef wchar_t char_type; 25082: typedef wint_t int_type; 25082: typedef streamoff off_type; 25082: typedef wstreampos pos_type; 25082: typedef mbstate_t state_type; 25082: 25082: static constexpr void 25082: assign(char_type& __c1, const char_type& __c2) noexcept 25082: { __c1 = __c2; } 25082: 25082: static constexpr bool 25082: eq(const char_type& __c1, const char_type& __c2) noexcept 25082: { return __c1 == __c2; } 25082: 25082: static constexpr bool 25082: lt(const char_type& __c1, const char_type& __c2) noexcept 25082: { return __c1 < __c2; } 25082: 25082: static constexpr int 25082: compare(const char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: 25082: if (__builtin_constant_p(__n) 25082: && __constant_char_array_p(__s1, __n) 25082: && __constant_char_array_p(__s2, __n)) 25082: return __gnu_cxx::char_traits::compare(__s1, __s2, __n); 25082: 25082: if (__n == 0) 25082: return 0; 25082: else 25082: return wmemcmp(__s1, __s2, __n); 25082: } 25082: 25082: static constexpr size_t 25082: length(const char_type* __s) 25082: { 25082: 25082: if (__constant_string_p(__s)) 25082: return __gnu_cxx::char_traits::length(__s); 25082: else 25082: 25082: return wcslen(__s); 25082: } 25082: 25082: static constexpr const char_type* 25082: find(const char_type* __s, size_t __n, const char_type& __a) 25082: { 25082: 25082: if (__builtin_constant_p(__n) 25082: && __builtin_constant_p(__a) 25082: && __constant_char_array_p(__s, __n)) 25082: return __gnu_cxx::char_traits::find(__s, __n, __a); 25082: 25082: if (__n == 0) 25082: return 0; 25082: else 25082: return wmemchr(__s, __a, __n); 25082: } 25082: 25082: static char_type* 25082: move(char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: if (__n == 0) 25082: return __s1; 25082: return wmemmove(__s1, __s2, __n); 25082: } 25082: 25082: static char_type* 25082: copy(char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: if (__n == 0) 25082: return __s1; 25082: return wmemcpy(__s1, __s2, __n); 25082: } 25082: 25082: static char_type* 25082: assign(char_type* __s, size_t __n, char_type __a) 25082: { 25082: if (__n == 0) 25082: return __s; 25082: return wmemset(__s, __a, __n); 25082: } 25082: 25082: static constexpr char_type 25082: to_char_type(const int_type& __c) noexcept 25082: { return char_type(__c); } 25082: 25082: static constexpr int_type 25082: to_int_type(const char_type& __c) noexcept 25082: { return int_type(__c); } 25082: 25082: static constexpr bool 25082: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 25082: { return __c1 == __c2; } 25082: 25082: static constexpr int_type 25082: eof() noexcept 25082: { return static_cast((0xffffffffu)); } 25082: 25082: static constexpr int_type 25082: not_eof(const int_type& __c) noexcept 25082: { return eq_int_type(__c, eof()) ? 0 : __c; } 25082: }; 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/cstdint" 1 3 25082: # 32 "/usr/include/c++/8/cstdint" 3 25082: 25082: # 33 "/usr/include/c++/8/cstdint" 3 25082: # 41 "/usr/include/c++/8/cstdint" 3 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stdint.h" 1 3 4 25082: # 9 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stdint.h" 3 4 25082: # 1 "/usr/include/stdint.h" 1 3 4 25082: # 26 "/usr/include/stdint.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 25082: # 27 "/usr/include/stdint.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 25082: # 30 "/usr/include/stdint.h" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/stdint-intn.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/stdint-intn.h" 3 4 25082: typedef __int8_t int8_t; 25082: typedef __int16_t int16_t; 25082: typedef __int32_t int32_t; 25082: typedef __int64_t int64_t; 25082: # 35 "/usr/include/stdint.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h" 3 4 25082: typedef __uint8_t uint8_t; 25082: typedef __uint16_t uint16_t; 25082: typedef __uint32_t uint32_t; 25082: typedef __uint64_t uint64_t; 25082: # 38 "/usr/include/stdint.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: typedef __int_least8_t int_least8_t; 25082: typedef __int_least16_t int_least16_t; 25082: typedef __int_least32_t int_least32_t; 25082: typedef __int_least64_t int_least64_t; 25082: 25082: 25082: typedef __uint_least8_t uint_least8_t; 25082: typedef __uint_least16_t uint_least16_t; 25082: typedef __uint_least32_t uint_least32_t; 25082: typedef __uint_least64_t uint_least64_t; 25082: 25082: 25082: 25082: 25082: 25082: typedef signed char int_fast8_t; 25082: 25082: typedef long int int_fast16_t; 25082: typedef long int int_fast32_t; 25082: typedef long int int_fast64_t; 25082: # 71 "/usr/include/stdint.h" 3 4 25082: typedef unsigned char uint_fast8_t; 25082: 25082: typedef unsigned long int uint_fast16_t; 25082: typedef unsigned long int uint_fast32_t; 25082: typedef unsigned long int uint_fast64_t; 25082: # 87 "/usr/include/stdint.h" 3 4 25082: typedef long int intptr_t; 25082: 25082: 25082: typedef unsigned long int uintptr_t; 25082: # 101 "/usr/include/stdint.h" 3 4 25082: typedef __intmax_t intmax_t; 25082: typedef __uintmax_t uintmax_t; 25082: # 10 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stdint.h" 2 3 4 25082: # 42 "/usr/include/c++/8/cstdint" 2 3 25082: 25082: 25082: 25082: 25082: namespace std 25082: { 25082: using ::int8_t; 25082: using ::int16_t; 25082: using ::int32_t; 25082: using ::int64_t; 25082: 25082: using ::int_fast8_t; 25082: using ::int_fast16_t; 25082: using ::int_fast32_t; 25082: using ::int_fast64_t; 25082: 25082: using ::int_least8_t; 25082: using ::int_least16_t; 25082: using ::int_least32_t; 25082: using ::int_least64_t; 25082: 25082: using ::intmax_t; 25082: using ::intptr_t; 25082: 25082: using ::uint8_t; 25082: using ::uint16_t; 25082: using ::uint32_t; 25082: using ::uint64_t; 25082: 25082: using ::uint_fast8_t; 25082: using ::uint_fast16_t; 25082: using ::uint_fast32_t; 25082: using ::uint_fast64_t; 25082: 25082: using ::uint_least8_t; 25082: using ::uint_least16_t; 25082: using ::uint_least32_t; 25082: using ::uint_least64_t; 25082: 25082: using ::uintmax_t; 25082: using ::uintptr_t; 25082: } 25082: # 504 "/usr/include/c++/8/bits/char_traits.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template<> 25082: struct char_traits 25082: { 25082: typedef char16_t char_type; 25082: typedef uint_least16_t int_type; 25082: typedef streamoff off_type; 25082: typedef u16streampos pos_type; 25082: typedef mbstate_t state_type; 25082: 25082: static constexpr void 25082: assign(char_type& __c1, const char_type& __c2) noexcept 25082: { __c1 = __c2; } 25082: 25082: static constexpr bool 25082: eq(const char_type& __c1, const char_type& __c2) noexcept 25082: { return __c1 == __c2; } 25082: 25082: static constexpr bool 25082: lt(const char_type& __c1, const char_type& __c2) noexcept 25082: { return __c1 < __c2; } 25082: 25082: static constexpr int 25082: compare(const char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: for (size_t __i = 0; __i < __n; ++__i) 25082: if (lt(__s1[__i], __s2[__i])) 25082: return -1; 25082: else if (lt(__s2[__i], __s1[__i])) 25082: return 1; 25082: return 0; 25082: } 25082: 25082: static constexpr size_t 25082: length(const char_type* __s) 25082: { 25082: size_t __i = 0; 25082: while (!eq(__s[__i], char_type())) 25082: ++__i; 25082: return __i; 25082: } 25082: 25082: static constexpr const char_type* 25082: find(const char_type* __s, size_t __n, const char_type& __a) 25082: { 25082: for (size_t __i = 0; __i < __n; ++__i) 25082: if (eq(__s[__i], __a)) 25082: return __s + __i; 25082: return 0; 25082: } 25082: 25082: static char_type* 25082: move(char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: if (__n == 0) 25082: return __s1; 25082: return (static_cast 25082: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 25082: } 25082: 25082: static char_type* 25082: copy(char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: if (__n == 0) 25082: return __s1; 25082: return (static_cast 25082: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 25082: } 25082: 25082: static char_type* 25082: assign(char_type* __s, size_t __n, char_type __a) 25082: { 25082: for (size_t __i = 0; __i < __n; ++__i) 25082: assign(__s[__i], __a); 25082: return __s; 25082: } 25082: 25082: static constexpr char_type 25082: to_char_type(const int_type& __c) noexcept 25082: { return char_type(__c); } 25082: 25082: static constexpr int_type 25082: to_int_type(const char_type& __c) noexcept 25082: { return __c == eof() ? int_type(0xfffd) : int_type(__c); } 25082: 25082: static constexpr bool 25082: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 25082: { return __c1 == __c2; } 25082: 25082: static constexpr int_type 25082: eof() noexcept 25082: { return static_cast(-1); } 25082: 25082: static constexpr int_type 25082: not_eof(const int_type& __c) noexcept 25082: { return eq_int_type(__c, eof()) ? 0 : __c; } 25082: }; 25082: 25082: template<> 25082: struct char_traits 25082: { 25082: typedef char32_t char_type; 25082: typedef uint_least32_t int_type; 25082: typedef streamoff off_type; 25082: typedef u32streampos pos_type; 25082: typedef mbstate_t state_type; 25082: 25082: static constexpr void 25082: assign(char_type& __c1, const char_type& __c2) noexcept 25082: { __c1 = __c2; } 25082: 25082: static constexpr bool 25082: eq(const char_type& __c1, const char_type& __c2) noexcept 25082: { return __c1 == __c2; } 25082: 25082: static constexpr bool 25082: lt(const char_type& __c1, const char_type& __c2) noexcept 25082: { return __c1 < __c2; } 25082: 25082: static constexpr int 25082: compare(const char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: for (size_t __i = 0; __i < __n; ++__i) 25082: if (lt(__s1[__i], __s2[__i])) 25082: return -1; 25082: else if (lt(__s2[__i], __s1[__i])) 25082: return 1; 25082: return 0; 25082: } 25082: 25082: static constexpr size_t 25082: length(const char_type* __s) 25082: { 25082: size_t __i = 0; 25082: while (!eq(__s[__i], char_type())) 25082: ++__i; 25082: return __i; 25082: } 25082: 25082: static constexpr const char_type* 25082: find(const char_type* __s, size_t __n, const char_type& __a) 25082: { 25082: for (size_t __i = 0; __i < __n; ++__i) 25082: if (eq(__s[__i], __a)) 25082: return __s + __i; 25082: return 0; 25082: } 25082: 25082: static char_type* 25082: move(char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: if (__n == 0) 25082: return __s1; 25082: return (static_cast 25082: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 25082: } 25082: 25082: static char_type* 25082: copy(char_type* __s1, const char_type* __s2, size_t __n) 25082: { 25082: if (__n == 0) 25082: return __s1; 25082: return (static_cast 25082: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 25082: } 25082: 25082: static char_type* 25082: assign(char_type* __s, size_t __n, char_type __a) 25082: { 25082: for (size_t __i = 0; __i < __n; ++__i) 25082: assign(__s[__i], __a); 25082: return __s; 25082: } 25082: 25082: static constexpr char_type 25082: to_char_type(const int_type& __c) noexcept 25082: { return char_type(__c); } 25082: 25082: static constexpr int_type 25082: to_int_type(const char_type& __c) noexcept 25082: { return int_type(__c); } 25082: 25082: static constexpr bool 25082: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 25082: { return __c1 == __c2; } 25082: 25082: static constexpr int_type 25082: eof() noexcept 25082: { return static_cast(-1); } 25082: 25082: static constexpr int_type 25082: not_eof(const int_type& __c) noexcept 25082: { return eq_int_type(__c, eof()) ? 0 : __c; } 25082: }; 25082: 25082: 25082: } 25082: # 41 "/usr/include/c++/8/string" 2 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/localefwd.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/localefwd.h" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/localefwd.h" 3 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++locale.h" 1 3 25082: # 39 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++locale.h" 3 25082: 25082: # 40 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++locale.h" 3 25082: 25082: # 1 "/usr/include/c++/8/clocale" 1 3 25082: # 39 "/usr/include/c++/8/clocale" 3 25082: 25082: # 40 "/usr/include/c++/8/clocale" 3 25082: 25082: 25082: # 1 "/usr/include/locale.h" 1 3 4 25082: # 28 "/usr/include/locale.h" 3 4 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 29 "/usr/include/locale.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/locale.h" 1 3 4 25082: # 30 "/usr/include/locale.h" 2 3 4 25082: 25082: extern "C" { 25082: # 51 "/usr/include/locale.h" 3 4 25082: struct lconv 25082: { 25082: 25082: 25082: char *decimal_point; 25082: char *thousands_sep; 25082: 25082: 25082: 25082: 25082: 25082: char *grouping; 25082: 25082: 25082: 25082: 25082: 25082: char *int_curr_symbol; 25082: char *currency_symbol; 25082: char *mon_decimal_point; 25082: char *mon_thousands_sep; 25082: char *mon_grouping; 25082: char *positive_sign; 25082: char *negative_sign; 25082: char int_frac_digits; 25082: char frac_digits; 25082: 25082: char p_cs_precedes; 25082: 25082: char p_sep_by_space; 25082: 25082: char n_cs_precedes; 25082: 25082: char n_sep_by_space; 25082: 25082: 25082: 25082: 25082: 25082: 25082: char p_sign_posn; 25082: char n_sign_posn; 25082: 25082: 25082: char int_p_cs_precedes; 25082: 25082: char int_p_sep_by_space; 25082: 25082: char int_n_cs_precedes; 25082: 25082: char int_n_sep_by_space; 25082: 25082: 25082: 25082: 25082: 25082: 25082: char int_p_sign_posn; 25082: char int_n_sign_posn; 25082: # 118 "/usr/include/locale.h" 3 4 25082: }; 25082: 25082: 25082: 25082: extern char *setlocale (int __category, const char *__locale) throw (); 25082: 25082: 25082: extern struct lconv *localeconv (void) throw (); 25082: # 141 "/usr/include/locale.h" 3 4 25082: extern locale_t newlocale (int __category_mask, const char *__locale, 25082: locale_t __base) throw (); 25082: # 176 "/usr/include/locale.h" 3 4 25082: extern locale_t duplocale (locale_t __dataset) throw (); 25082: 25082: 25082: 25082: extern void freelocale (locale_t __dataset) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern locale_t uselocale (locale_t __dataset) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 43 "/usr/include/c++/8/clocale" 2 3 25082: # 51 "/usr/include/c++/8/clocale" 3 25082: namespace std 25082: { 25082: using ::lconv; 25082: using ::setlocale; 25082: using ::localeconv; 25082: } 25082: # 42 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++locale.h" 2 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: extern "C" __typeof(uselocale) __uselocale; 25082: 25082: 25082: } 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: typedef __locale_t __c_locale; 25082: 25082: 25082: 25082: 25082: 25082: inline int 25082: __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), 25082: char* __out, 25082: const int __size __attribute__ ((__unused__)), 25082: const char* __fmt, ...) 25082: { 25082: 25082: __c_locale __old = __gnu_cxx::__uselocale(__cloc); 25082: # 88 "/usr/include/aarch64-linux-gnu/c++/8/bits/c++locale.h" 3 25082: __builtin_va_list __args; 25082: __builtin_va_start(__args, __fmt); 25082: 25082: 25082: const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); 25082: 25082: 25082: 25082: 25082: __builtin_va_end(__args); 25082: 25082: 25082: __gnu_cxx::__uselocale(__old); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: return __ret; 25082: } 25082: 25082: 25082: } 25082: # 41 "/usr/include/c++/8/bits/localefwd.h" 2 3 25082: 25082: # 1 "/usr/include/c++/8/cctype" 1 3 25082: # 39 "/usr/include/c++/8/cctype" 3 25082: 25082: # 40 "/usr/include/c++/8/cctype" 3 25082: 25082: 25082: # 1 "/usr/include/ctype.h" 1 3 4 25082: # 28 "/usr/include/ctype.h" 3 4 25082: extern "C" { 25082: # 46 "/usr/include/ctype.h" 3 4 25082: enum 25082: { 25082: _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), 25082: _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), 25082: _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), 25082: _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), 25082: _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), 25082: _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), 25082: _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), 25082: _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), 25082: _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), 25082: _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), 25082: _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), 25082: _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) 25082: }; 25082: # 79 "/usr/include/ctype.h" 3 4 25082: extern const unsigned short int **__ctype_b_loc (void) 25082: throw () __attribute__ ((__const__)); 25082: extern const __int32_t **__ctype_tolower_loc (void) 25082: throw () __attribute__ ((__const__)); 25082: extern const __int32_t **__ctype_toupper_loc (void) 25082: throw () __attribute__ ((__const__)); 25082: # 108 "/usr/include/ctype.h" 3 4 25082: extern int isalnum (int) throw (); 25082: extern int isalpha (int) throw (); 25082: extern int iscntrl (int) throw (); 25082: extern int isdigit (int) throw (); 25082: extern int islower (int) throw (); 25082: extern int isgraph (int) throw (); 25082: extern int isprint (int) throw (); 25082: extern int ispunct (int) throw (); 25082: extern int isspace (int) throw (); 25082: extern int isupper (int) throw (); 25082: extern int isxdigit (int) throw (); 25082: 25082: 25082: 25082: extern int tolower (int __c) throw (); 25082: 25082: 25082: extern int toupper (int __c) throw (); 25082: 25082: 25082: 25082: 25082: extern int isblank (int) throw (); 25082: 25082: 25082: 25082: 25082: extern int isctype (int __c, int __mask) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int isascii (int __c) throw (); 25082: 25082: 25082: 25082: extern int toascii (int __c) throw (); 25082: 25082: 25082: 25082: extern int _toupper (int) throw (); 25082: extern int _tolower (int) throw (); 25082: # 251 "/usr/include/ctype.h" 3 4 25082: extern int isalnum_l (int, locale_t) throw (); 25082: extern int isalpha_l (int, locale_t) throw (); 25082: extern int iscntrl_l (int, locale_t) throw (); 25082: extern int isdigit_l (int, locale_t) throw (); 25082: extern int islower_l (int, locale_t) throw (); 25082: extern int isgraph_l (int, locale_t) throw (); 25082: extern int isprint_l (int, locale_t) throw (); 25082: extern int ispunct_l (int, locale_t) throw (); 25082: extern int isspace_l (int, locale_t) throw (); 25082: extern int isupper_l (int, locale_t) throw (); 25082: extern int isxdigit_l (int, locale_t) throw (); 25082: 25082: extern int isblank_l (int, locale_t) throw (); 25082: 25082: 25082: 25082: extern int __tolower_l (int __c, locale_t __l) throw (); 25082: extern int tolower_l (int __c, locale_t __l) throw (); 25082: 25082: 25082: extern int __toupper_l (int __c, locale_t __l) throw (); 25082: extern int toupper_l (int __c, locale_t __l) throw (); 25082: # 327 "/usr/include/ctype.h" 3 4 25082: } 25082: # 43 "/usr/include/c++/8/cctype" 2 3 25082: # 62 "/usr/include/c++/8/cctype" 3 25082: namespace std 25082: { 25082: using ::isalnum; 25082: using ::isalpha; 25082: using ::iscntrl; 25082: using ::isdigit; 25082: using ::isgraph; 25082: using ::islower; 25082: using ::isprint; 25082: using ::ispunct; 25082: using ::isspace; 25082: using ::isupper; 25082: using ::isxdigit; 25082: using ::tolower; 25082: using ::toupper; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace std 25082: { 25082: using ::isblank; 25082: } 25082: # 43 "/usr/include/c++/8/bits/localefwd.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 55 "/usr/include/c++/8/bits/localefwd.h" 3 25082: class locale; 25082: 25082: template 25082: bool 25082: has_facet(const locale&) throw(); 25082: 25082: template 25082: const _Facet& 25082: use_facet(const locale&); 25082: 25082: 25082: template 25082: bool 25082: isspace(_CharT, const locale&); 25082: 25082: template 25082: bool 25082: isprint(_CharT, const locale&); 25082: 25082: template 25082: bool 25082: iscntrl(_CharT, const locale&); 25082: 25082: template 25082: bool 25082: isupper(_CharT, const locale&); 25082: 25082: template 25082: bool 25082: islower(_CharT, const locale&); 25082: 25082: template 25082: bool 25082: isalpha(_CharT, const locale&); 25082: 25082: template 25082: bool 25082: isdigit(_CharT, const locale&); 25082: 25082: template 25082: bool 25082: ispunct(_CharT, const locale&); 25082: 25082: template 25082: bool 25082: isxdigit(_CharT, const locale&); 25082: 25082: template 25082: bool 25082: isalnum(_CharT, const locale&); 25082: 25082: template 25082: bool 25082: isgraph(_CharT, const locale&); 25082: 25082: 25082: template 25082: bool 25082: isblank(_CharT, const locale&); 25082: 25082: 25082: template 25082: _CharT 25082: toupper(_CharT, const locale&); 25082: 25082: template 25082: _CharT 25082: tolower(_CharT, const locale&); 25082: 25082: 25082: class ctype_base; 25082: template 25082: class ctype; 25082: template<> class ctype; 25082: 25082: template<> class ctype; 25082: 25082: template 25082: class ctype_byname; 25082: 25082: 25082: class codecvt_base; 25082: template 25082: class codecvt; 25082: template<> class codecvt; 25082: 25082: template<> class codecvt; 25082: 25082: template 25082: class codecvt_byname; 25082: 25082: 25082: 25082: template > 25082: class num_get; 25082: template > 25082: class num_put; 25082: 25082: namespace __cxx11 { 25082: template class numpunct; 25082: template class numpunct_byname; 25082: } 25082: 25082: namespace __cxx11 { 25082: 25082: template 25082: class collate; 25082: template 25082: class collate_byname; 25082: } 25082: 25082: 25082: class time_base; 25082: namespace __cxx11 { 25082: template > 25082: class time_get; 25082: template > 25082: class time_get_byname; 25082: } 25082: template > 25082: class time_put; 25082: template > 25082: class time_put_byname; 25082: 25082: 25082: class money_base; 25082: namespace __cxx11 { 25082: template > 25082: class money_get; 25082: template > 25082: class money_put; 25082: } 25082: namespace __cxx11 { 25082: template 25082: class moneypunct; 25082: template 25082: class moneypunct_byname; 25082: } 25082: 25082: 25082: class messages_base; 25082: namespace __cxx11 { 25082: template 25082: class messages; 25082: template 25082: class messages_byname; 25082: } 25082: 25082: 25082: } 25082: # 44 "/usr/include/c++/8/string" 2 3 25082: # 1 "/usr/include/c++/8/bits/ostream_insert.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/ostream_insert.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/ostream_insert.h" 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/cxxabi_forced.h" 1 3 25082: # 34 "/usr/include/c++/8/bits/cxxabi_forced.h" 3 25082: 25082: # 35 "/usr/include/c++/8/bits/cxxabi_forced.h" 3 25082: 25082: #pragma GCC visibility push(default) 25082: 25082: 25082: namespace __cxxabiv1 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: class __forced_unwind 25082: { 25082: virtual ~__forced_unwind() throw(); 25082: 25082: 25082: virtual void __pure_dummy() = 0; 25082: }; 25082: } 25082: 25082: 25082: #pragma GCC visibility pop 25082: # 37 "/usr/include/c++/8/bits/ostream_insert.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: inline void 25082: __ostream_write(basic_ostream<_CharT, _Traits>& __out, 25082: const _CharT* __s, streamsize __n) 25082: { 25082: typedef basic_ostream<_CharT, _Traits> __ostream_type; 25082: typedef typename __ostream_type::ios_base __ios_base; 25082: 25082: const streamsize __put = __out.rdbuf()->sputn(__s, __n); 25082: if (__put != __n) 25082: __out.setstate(__ios_base::badbit); 25082: } 25082: 25082: template 25082: inline void 25082: __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) 25082: { 25082: typedef basic_ostream<_CharT, _Traits> __ostream_type; 25082: typedef typename __ostream_type::ios_base __ios_base; 25082: 25082: const _CharT __c = __out.fill(); 25082: for (; __n > 0; --__n) 25082: { 25082: const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); 25082: if (_Traits::eq_int_type(__put, _Traits::eof())) 25082: { 25082: __out.setstate(__ios_base::badbit); 25082: break; 25082: } 25082: } 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: __ostream_insert(basic_ostream<_CharT, _Traits>& __out, 25082: const _CharT* __s, streamsize __n) 25082: { 25082: typedef basic_ostream<_CharT, _Traits> __ostream_type; 25082: typedef typename __ostream_type::ios_base __ios_base; 25082: 25082: typename __ostream_type::sentry __cerb(__out); 25082: if (__cerb) 25082: { 25082: try 25082: { 25082: const streamsize __w = __out.width(); 25082: if (__w > __n) 25082: { 25082: const bool __left = ((__out.flags() 25082: & __ios_base::adjustfield) 25082: == __ios_base::left); 25082: if (!__left) 25082: __ostream_fill(__out, __w - __n); 25082: if (__out.good()) 25082: __ostream_write(__out, __s, __n); 25082: if (__left && __out.good()) 25082: __ostream_fill(__out, __w - __n); 25082: } 25082: else 25082: __ostream_write(__out, __s, __n); 25082: __out.width(0); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __out._M_setstate(__ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { __out._M_setstate(__ios_base::badbit); } 25082: } 25082: return __out; 25082: } 25082: 25082: 25082: 25082: 25082: extern template ostream& __ostream_insert(ostream&, const char*, streamsize); 25082: 25082: 25082: extern template wostream& __ostream_insert(wostream&, const wchar_t*, 25082: streamsize); 25082: 25082: 25082: 25082: 25082: } 25082: # 45 "/usr/include/c++/8/string" 2 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/range_access.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/range_access.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/range_access.h" 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: begin(_Container& __cont) -> decltype(__cont.begin()) 25082: { return __cont.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: begin(const _Container& __cont) -> decltype(__cont.begin()) 25082: { return __cont.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: end(_Container& __cont) -> decltype(__cont.end()) 25082: { return __cont.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: end(const _Container& __cont) -> decltype(__cont.end()) 25082: { return __cont.end(); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr _Tp* 25082: begin(_Tp (&__arr)[_Nm]) 25082: { return __arr; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr _Tp* 25082: end(_Tp (&__arr)[_Nm]) 25082: { return __arr + _Nm; } 25082: 25082: 25082: 25082: template class valarray; 25082: 25082: template _Tp* begin(valarray<_Tp>&); 25082: template const _Tp* begin(const valarray<_Tp>&); 25082: template _Tp* end(valarray<_Tp>&); 25082: template const _Tp* end(const valarray<_Tp>&); 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont))) 25082: -> decltype(std::begin(__cont)) 25082: { return std::begin(__cont); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: cend(const _Container& __cont) noexcept(noexcept(std::end(__cont))) 25082: -> decltype(std::end(__cont)) 25082: { return std::end(__cont); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: rbegin(_Container& __cont) -> decltype(__cont.rbegin()) 25082: { return __cont.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: rbegin(const _Container& __cont) -> decltype(__cont.rbegin()) 25082: { return __cont.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: rend(_Container& __cont) -> decltype(__cont.rend()) 25082: { return __cont.rend(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: rend(const _Container& __cont) -> decltype(__cont.rend()) 25082: { return __cont.rend(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr reverse_iterator<_Tp*> 25082: rbegin(_Tp (&__arr)[_Nm]) 25082: { return reverse_iterator<_Tp*>(__arr + _Nm); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr reverse_iterator<_Tp*> 25082: rend(_Tp (&__arr)[_Nm]) 25082: { return reverse_iterator<_Tp*>(__arr); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr reverse_iterator 25082: rbegin(initializer_list<_Tp> __il) 25082: { return reverse_iterator(__il.end()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr reverse_iterator 25082: rend(initializer_list<_Tp> __il) 25082: { return reverse_iterator(__il.begin()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: crbegin(const _Container& __cont) -> decltype(std::rbegin(__cont)) 25082: { return std::rbegin(__cont); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline constexpr auto 25082: crend(const _Container& __cont) -> decltype(std::rend(__cont)) 25082: { return std::rend(__cont); } 25082: # 240 "/usr/include/c++/8/bits/range_access.h" 3 25082: template 25082: constexpr auto 25082: size(const _Container& __cont) noexcept(noexcept(__cont.size())) 25082: -> decltype(__cont.size()) 25082: { return __cont.size(); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr size_t 25082: size(const _Tp (& )[_Nm]) noexcept 25082: { return _Nm; } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: [[nodiscard]] constexpr auto 25082: empty(const _Container& __cont) noexcept(noexcept(__cont.empty())) 25082: -> decltype(__cont.empty()) 25082: { return __cont.empty(); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: [[nodiscard]] constexpr bool 25082: empty(const _Tp (& )[_Nm]) noexcept 25082: { return false; } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: [[nodiscard]] constexpr bool 25082: empty(initializer_list<_Tp> __il) noexcept 25082: { return __il.size() == 0;} 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr auto 25082: data(_Container& __cont) noexcept(noexcept(__cont.data())) 25082: -> decltype(__cont.data()) 25082: { return __cont.data(); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr auto 25082: data(const _Container& __cont) noexcept(noexcept(__cont.data())) 25082: -> decltype(__cont.data()) 25082: { return __cont.data(); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr _Tp* 25082: data(_Tp (&__array)[_Nm]) noexcept 25082: { return __array; } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr const _Tp* 25082: data(initializer_list<_Tp> __il) noexcept 25082: { return __il.begin(); } 25082: 25082: 25082: 25082: 25082: } 25082: # 52 "/usr/include/c++/8/string" 2 3 25082: # 1 "/usr/include/c++/8/bits/basic_string.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/basic_string.h" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/basic_string.h" 3 25082: # 48 "/usr/include/c++/8/bits/basic_string.h" 3 25082: # 1 "/usr/include/c++/8/string_view" 1 3 25082: # 36 "/usr/include/c++/8/string_view" 3 25082: 25082: # 37 "/usr/include/c++/8/string_view" 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/limits" 1 3 25082: # 40 "/usr/include/c++/8/limits" 3 25082: 25082: # 41 "/usr/include/c++/8/limits" 3 25082: # 158 "/usr/include/c++/8/limits" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: enum float_round_style 25082: { 25082: round_indeterminate = -1, 25082: round_toward_zero = 0, 25082: round_to_nearest = 1, 25082: round_toward_infinity = 2, 25082: round_toward_neg_infinity = 3 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: enum float_denorm_style 25082: { 25082: 25082: denorm_indeterminate = -1, 25082: 25082: denorm_absent = 0, 25082: 25082: denorm_present = 1 25082: }; 25082: # 202 "/usr/include/c++/8/limits" 3 25082: struct __numeric_limits_base 25082: { 25082: 25082: 25082: static constexpr bool is_specialized = false; 25082: 25082: 25082: 25082: 25082: static constexpr int digits = 0; 25082: 25082: 25082: static constexpr int digits10 = 0; 25082: 25082: 25082: 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: 25082: 25082: static constexpr bool is_signed = false; 25082: 25082: 25082: static constexpr bool is_integer = false; 25082: 25082: 25082: 25082: 25082: static constexpr bool is_exact = false; 25082: 25082: 25082: 25082: static constexpr int radix = 0; 25082: 25082: 25082: 25082: static constexpr int min_exponent = 0; 25082: 25082: 25082: 25082: static constexpr int min_exponent10 = 0; 25082: 25082: 25082: 25082: 25082: static constexpr int max_exponent = 0; 25082: 25082: 25082: 25082: static constexpr int max_exponent10 = 0; 25082: 25082: 25082: static constexpr bool has_infinity = false; 25082: 25082: 25082: 25082: static constexpr bool has_quiet_NaN = false; 25082: 25082: 25082: 25082: static constexpr bool has_signaling_NaN = false; 25082: 25082: 25082: static constexpr float_denorm_style has_denorm = denorm_absent; 25082: 25082: 25082: 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: 25082: 25082: static constexpr bool is_iec559 = false; 25082: 25082: 25082: 25082: 25082: static constexpr bool is_bounded = false; 25082: # 288 "/usr/include/c++/8/limits" 3 25082: static constexpr bool is_modulo = false; 25082: 25082: 25082: static constexpr bool traps = false; 25082: 25082: 25082: static constexpr bool tinyness_before = false; 25082: 25082: 25082: 25082: 25082: static constexpr float_round_style round_style = 25082: round_toward_zero; 25082: }; 25082: # 311 "/usr/include/c++/8/limits" 3 25082: template 25082: struct numeric_limits : public __numeric_limits_base 25082: { 25082: 25082: 25082: static constexpr _Tp 25082: min() noexcept { return _Tp(); } 25082: 25082: 25082: static constexpr _Tp 25082: max() noexcept { return _Tp(); } 25082: 25082: 25082: 25082: 25082: static constexpr _Tp 25082: lowest() noexcept { return _Tp(); } 25082: 25082: 25082: 25082: 25082: static constexpr _Tp 25082: epsilon() noexcept { return _Tp(); } 25082: 25082: 25082: static constexpr _Tp 25082: round_error() noexcept { return _Tp(); } 25082: 25082: 25082: static constexpr _Tp 25082: infinity() noexcept { return _Tp(); } 25082: 25082: 25082: 25082: static constexpr _Tp 25082: quiet_NaN() noexcept { return _Tp(); } 25082: 25082: 25082: 25082: static constexpr _Tp 25082: signaling_NaN() noexcept { return _Tp(); } 25082: 25082: 25082: 25082: 25082: static constexpr _Tp 25082: denorm_min() noexcept { return _Tp(); } 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct numeric_limits 25082: : public numeric_limits<_Tp> { }; 25082: 25082: template 25082: struct numeric_limits 25082: : public numeric_limits<_Tp> { }; 25082: 25082: template 25082: struct numeric_limits 25082: : public numeric_limits<_Tp> { }; 25082: # 382 "/usr/include/c++/8/limits" 3 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr bool 25082: min() noexcept { return false; } 25082: 25082: static constexpr bool 25082: max() noexcept { return true; } 25082: 25082: 25082: static constexpr bool 25082: lowest() noexcept { return min(); } 25082: 25082: static constexpr int digits = 1; 25082: static constexpr int digits10 = 0; 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = false; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr bool 25082: epsilon() noexcept { return false; } 25082: 25082: static constexpr bool 25082: round_error() noexcept { return false; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr bool 25082: infinity() noexcept { return false; } 25082: 25082: static constexpr bool 25082: quiet_NaN() noexcept { return false; } 25082: 25082: static constexpr bool 25082: signaling_NaN() noexcept { return false; } 25082: 25082: static constexpr bool 25082: denorm_min() noexcept { return false; } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = false; 25082: 25082: 25082: 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr char 25082: 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); } 25082: 25082: static constexpr char 25082: max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } 25082: 25082: 25082: static constexpr char 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); 25082: static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = ((char)(-1) < 0); 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr char 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr char 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr 25082: char infinity() noexcept { return char(); } 25082: 25082: static constexpr char 25082: quiet_NaN() noexcept { return char(); } 25082: 25082: static constexpr char 25082: signaling_NaN() noexcept { return char(); } 25082: 25082: static constexpr char 25082: denorm_min() noexcept { return static_cast(0); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = !is_signed; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr signed char 25082: min() noexcept { return -0x7f - 1; } 25082: 25082: static constexpr signed char 25082: max() noexcept { return 0x7f; } 25082: 25082: 25082: static constexpr signed char 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); 25082: static constexpr int digits10 25082: = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = true; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr signed char 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr signed char 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr signed char 25082: infinity() noexcept { return static_cast(0); } 25082: 25082: static constexpr signed char 25082: quiet_NaN() noexcept { return static_cast(0); } 25082: 25082: static constexpr signed char 25082: signaling_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr signed char 25082: denorm_min() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = false; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr unsigned char 25082: min() noexcept { return 0; } 25082: 25082: static constexpr unsigned char 25082: max() noexcept { return 0x7f * 2U + 1; } 25082: 25082: 25082: static constexpr unsigned char 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits 25082: = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); 25082: static constexpr int digits10 25082: = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = false; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr unsigned char 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr unsigned char 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr unsigned char 25082: infinity() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned char 25082: quiet_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned char 25082: signaling_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned char 25082: denorm_min() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = true; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr wchar_t 25082: 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); } 25082: 25082: static constexpr wchar_t 25082: 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); } 25082: 25082: 25082: static constexpr wchar_t 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); 25082: static constexpr int digits10 25082: = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = ((wchar_t)(-1) < 0); 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr wchar_t 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr wchar_t 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr wchar_t 25082: infinity() noexcept { return wchar_t(); } 25082: 25082: static constexpr wchar_t 25082: quiet_NaN() noexcept { return wchar_t(); } 25082: 25082: static constexpr wchar_t 25082: signaling_NaN() noexcept { return wchar_t(); } 25082: 25082: static constexpr wchar_t 25082: denorm_min() noexcept { return wchar_t(); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = !is_signed; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr char16_t 25082: 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); } 25082: 25082: static constexpr char16_t 25082: 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); } 25082: 25082: static constexpr char16_t 25082: lowest() noexcept { return min(); } 25082: 25082: static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)); 25082: static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136); 25082: static constexpr int max_digits10 = 0; 25082: static constexpr bool is_signed = ((char16_t)(-1) < 0); 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr char16_t 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr char16_t 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr char16_t 25082: infinity() noexcept { return char16_t(); } 25082: 25082: static constexpr char16_t 25082: quiet_NaN() noexcept { return char16_t(); } 25082: 25082: static constexpr char16_t 25082: signaling_NaN() noexcept { return char16_t(); } 25082: 25082: static constexpr char16_t 25082: denorm_min() noexcept { return char16_t(); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = !is_signed; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr char32_t 25082: 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); } 25082: 25082: static constexpr char32_t 25082: 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); } 25082: 25082: static constexpr char32_t 25082: lowest() noexcept { return min(); } 25082: 25082: static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)); 25082: static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136); 25082: static constexpr int max_digits10 = 0; 25082: static constexpr bool is_signed = ((char32_t)(-1) < 0); 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr char32_t 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr char32_t 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr char32_t 25082: infinity() noexcept { return char32_t(); } 25082: 25082: static constexpr char32_t 25082: quiet_NaN() noexcept { return char32_t(); } 25082: 25082: static constexpr char32_t 25082: signaling_NaN() noexcept { return char32_t(); } 25082: 25082: static constexpr char32_t 25082: denorm_min() noexcept { return char32_t(); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = !is_signed; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style = round_toward_zero; 25082: }; 25082: 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr short 25082: min() noexcept { return -0x7fff - 1; } 25082: 25082: static constexpr short 25082: max() noexcept { return 0x7fff; } 25082: 25082: 25082: static constexpr short 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); 25082: static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = true; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr short 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr short 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr short 25082: infinity() noexcept { return short(); } 25082: 25082: static constexpr short 25082: quiet_NaN() noexcept { return short(); } 25082: 25082: static constexpr short 25082: signaling_NaN() noexcept { return short(); } 25082: 25082: static constexpr short 25082: denorm_min() noexcept { return short(); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = false; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr unsigned short 25082: min() noexcept { return 0; } 25082: 25082: static constexpr unsigned short 25082: max() noexcept { return 0x7fff * 2U + 1; } 25082: 25082: 25082: static constexpr unsigned short 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits 25082: = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); 25082: static constexpr int digits10 25082: = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = false; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr unsigned short 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr unsigned short 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr unsigned short 25082: infinity() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned short 25082: quiet_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned short 25082: signaling_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned short 25082: denorm_min() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = true; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr int 25082: min() noexcept { return -0x7fffffff - 1; } 25082: 25082: static constexpr int 25082: max() noexcept { return 0x7fffffff; } 25082: 25082: 25082: static constexpr int 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); 25082: static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = true; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr int 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr int 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr int 25082: infinity() noexcept { return static_cast(0); } 25082: 25082: static constexpr int 25082: quiet_NaN() noexcept { return static_cast(0); } 25082: 25082: static constexpr int 25082: signaling_NaN() noexcept { return static_cast(0); } 25082: 25082: static constexpr int 25082: denorm_min() noexcept { return static_cast(0); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = false; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr unsigned int 25082: min() noexcept { return 0; } 25082: 25082: static constexpr unsigned int 25082: max() noexcept { return 0x7fffffff * 2U + 1; } 25082: 25082: 25082: static constexpr unsigned int 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits 25082: = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); 25082: static constexpr int digits10 25082: = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = false; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr unsigned int 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr unsigned int 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr unsigned int 25082: infinity() noexcept { return static_cast(0); } 25082: 25082: static constexpr unsigned int 25082: quiet_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned int 25082: signaling_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned int 25082: denorm_min() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = true; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr long 25082: min() noexcept { return -0x7fffffffffffffffL - 1; } 25082: 25082: static constexpr long 25082: max() noexcept { return 0x7fffffffffffffffL; } 25082: 25082: 25082: static constexpr long 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); 25082: static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = true; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr long 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr long 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr long 25082: infinity() noexcept { return static_cast(0); } 25082: 25082: static constexpr long 25082: quiet_NaN() noexcept { return static_cast(0); } 25082: 25082: static constexpr long 25082: signaling_NaN() noexcept { return static_cast(0); } 25082: 25082: static constexpr long 25082: denorm_min() noexcept { return static_cast(0); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = false; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr unsigned long 25082: min() noexcept { return 0; } 25082: 25082: static constexpr unsigned long 25082: max() noexcept { return 0x7fffffffffffffffL * 2UL + 1; } 25082: 25082: 25082: static constexpr unsigned long 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits 25082: = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); 25082: static constexpr int digits10 25082: = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = false; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr unsigned long 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr unsigned long 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr unsigned long 25082: infinity() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned long 25082: quiet_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned long 25082: signaling_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned long 25082: denorm_min() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = true; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr long long 25082: min() noexcept { return -0x7fffffffffffffffLL - 1; } 25082: 25082: static constexpr long long 25082: max() noexcept { return 0x7fffffffffffffffLL; } 25082: 25082: 25082: static constexpr long long 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits 25082: = (sizeof(long long) * 8 - ((long long)(-1) < 0)); 25082: static constexpr int digits10 25082: = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = true; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr long long 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr long long 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr long long 25082: infinity() noexcept { return static_cast(0); } 25082: 25082: static constexpr long long 25082: quiet_NaN() noexcept { return static_cast(0); } 25082: 25082: static constexpr long long 25082: signaling_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr long long 25082: denorm_min() noexcept { return static_cast(0); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = false; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr unsigned long long 25082: min() noexcept { return 0; } 25082: 25082: static constexpr unsigned long long 25082: max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; } 25082: 25082: 25082: static constexpr unsigned long long 25082: lowest() noexcept { return min(); } 25082: 25082: 25082: static constexpr int digits 25082: = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); 25082: static constexpr int digits10 25082: = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); 25082: 25082: static constexpr int max_digits10 = 0; 25082: 25082: static constexpr bool is_signed = false; 25082: static constexpr bool is_integer = true; 25082: static constexpr bool is_exact = true; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr unsigned long long 25082: epsilon() noexcept { return 0; } 25082: 25082: static constexpr unsigned long long 25082: round_error() noexcept { return 0; } 25082: 25082: static constexpr int min_exponent = 0; 25082: static constexpr int min_exponent10 = 0; 25082: static constexpr int max_exponent = 0; 25082: static constexpr int max_exponent10 = 0; 25082: 25082: static constexpr bool has_infinity = false; 25082: static constexpr bool has_quiet_NaN = false; 25082: static constexpr bool has_signaling_NaN = false; 25082: static constexpr float_denorm_style has_denorm 25082: = denorm_absent; 25082: static constexpr bool has_denorm_loss = false; 25082: 25082: static constexpr unsigned long long 25082: infinity() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned long long 25082: quiet_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned long long 25082: signaling_NaN() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr unsigned long long 25082: denorm_min() noexcept 25082: { return static_cast(0); } 25082: 25082: static constexpr bool is_iec559 = false; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = true; 25082: 25082: static constexpr bool traps = true; 25082: static constexpr bool tinyness_before = false; 25082: static constexpr float_round_style round_style 25082: = round_toward_zero; 25082: }; 25082: # 1593 "/usr/include/c++/8/limits" 3 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr float 25082: min() noexcept { return 1.17549435082228750796873653722224568e-38F; } 25082: 25082: static constexpr float 25082: max() noexcept { return 3.40282346638528859811704183484516925e+38F; } 25082: 25082: 25082: static constexpr float 25082: lowest() noexcept { return -3.40282346638528859811704183484516925e+38F; } 25082: 25082: 25082: static constexpr int digits = 24; 25082: static constexpr int digits10 = 6; 25082: 25082: static constexpr int max_digits10 25082: = (2 + (24) * 643L / 2136); 25082: 25082: static constexpr bool is_signed = true; 25082: static constexpr bool is_integer = false; 25082: static constexpr bool is_exact = false; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr float 25082: epsilon() noexcept { return 1.19209289550781250000000000000000000e-7F; } 25082: 25082: static constexpr float 25082: round_error() noexcept { return 0.5F; } 25082: 25082: static constexpr int min_exponent = (-125); 25082: static constexpr int min_exponent10 = (-37); 25082: static constexpr int max_exponent = 128; 25082: static constexpr int max_exponent10 = 38; 25082: 25082: static constexpr bool has_infinity = 1; 25082: static constexpr bool has_quiet_NaN = 1; 25082: static constexpr bool has_signaling_NaN = has_quiet_NaN; 25082: static constexpr float_denorm_style has_denorm 25082: = bool(1) ? denorm_present : denorm_absent; 25082: static constexpr bool has_denorm_loss 25082: = false; 25082: 25082: static constexpr float 25082: infinity() noexcept { return __builtin_huge_valf(); } 25082: 25082: static constexpr float 25082: quiet_NaN() noexcept { return __builtin_nanf(""); } 25082: 25082: static constexpr float 25082: signaling_NaN() noexcept { return __builtin_nansf(""); } 25082: 25082: static constexpr float 25082: denorm_min() noexcept { return 1.40129846432481707092372958328991613e-45F; } 25082: 25082: static constexpr bool is_iec559 25082: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = false; 25082: 25082: static constexpr bool traps = false; 25082: static constexpr bool tinyness_before 25082: = false; 25082: static constexpr float_round_style round_style 25082: = round_to_nearest; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr double 25082: min() noexcept { return double(2.22507385850720138309023271733240406e-308L); } 25082: 25082: static constexpr double 25082: max() noexcept { return double(1.79769313486231570814527423731704357e+308L); } 25082: 25082: 25082: static constexpr double 25082: lowest() noexcept { return -double(1.79769313486231570814527423731704357e+308L); } 25082: 25082: 25082: static constexpr int digits = 53; 25082: static constexpr int digits10 = 15; 25082: 25082: static constexpr int max_digits10 25082: = (2 + (53) * 643L / 2136); 25082: 25082: static constexpr bool is_signed = true; 25082: static constexpr bool is_integer = false; 25082: static constexpr bool is_exact = false; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr double 25082: epsilon() noexcept { return double(2.22044604925031308084726333618164062e-16L); } 25082: 25082: static constexpr double 25082: round_error() noexcept { return 0.5; } 25082: 25082: static constexpr int min_exponent = (-1021); 25082: static constexpr int min_exponent10 = (-307); 25082: static constexpr int max_exponent = 1024; 25082: static constexpr int max_exponent10 = 308; 25082: 25082: static constexpr bool has_infinity = 1; 25082: static constexpr bool has_quiet_NaN = 1; 25082: static constexpr bool has_signaling_NaN = has_quiet_NaN; 25082: static constexpr float_denorm_style has_denorm 25082: = bool(1) ? denorm_present : denorm_absent; 25082: static constexpr bool has_denorm_loss 25082: = false; 25082: 25082: static constexpr double 25082: infinity() noexcept { return __builtin_huge_val(); } 25082: 25082: static constexpr double 25082: quiet_NaN() noexcept { return __builtin_nan(""); } 25082: 25082: static constexpr double 25082: signaling_NaN() noexcept { return __builtin_nans(""); } 25082: 25082: static constexpr double 25082: denorm_min() noexcept { return double(4.94065645841246544176568792868221372e-324L); } 25082: 25082: static constexpr bool is_iec559 25082: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = false; 25082: 25082: static constexpr bool traps = false; 25082: static constexpr bool tinyness_before 25082: = false; 25082: static constexpr float_round_style round_style 25082: = round_to_nearest; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: struct numeric_limits 25082: { 25082: static constexpr bool is_specialized = true; 25082: 25082: static constexpr long double 25082: min() noexcept { return 3.36210314311209350626267781732175260e-4932L; } 25082: 25082: static constexpr long double 25082: max() noexcept { return 1.18973149535723176508575932662800702e+4932L; } 25082: 25082: 25082: static constexpr long double 25082: lowest() noexcept { return -1.18973149535723176508575932662800702e+4932L; } 25082: 25082: 25082: static constexpr int digits = 113; 25082: static constexpr int digits10 = 33; 25082: 25082: static constexpr int max_digits10 25082: = (2 + (113) * 643L / 2136); 25082: 25082: static constexpr bool is_signed = true; 25082: static constexpr bool is_integer = false; 25082: static constexpr bool is_exact = false; 25082: static constexpr int radix = 2; 25082: 25082: static constexpr long double 25082: epsilon() noexcept { return 1.92592994438723585305597794258492732e-34L; } 25082: 25082: static constexpr long double 25082: round_error() noexcept { return 0.5L; } 25082: 25082: static constexpr int min_exponent = (-16381); 25082: static constexpr int min_exponent10 = (-4931); 25082: static constexpr int max_exponent = 16384; 25082: static constexpr int max_exponent10 = 4932; 25082: 25082: static constexpr bool has_infinity = 1; 25082: static constexpr bool has_quiet_NaN = 1; 25082: static constexpr bool has_signaling_NaN = has_quiet_NaN; 25082: static constexpr float_denorm_style has_denorm 25082: = bool(1) ? denorm_present : denorm_absent; 25082: static constexpr bool has_denorm_loss 25082: = false; 25082: 25082: static constexpr long double 25082: infinity() noexcept { return __builtin_huge_vall(); } 25082: 25082: static constexpr long double 25082: quiet_NaN() noexcept { return __builtin_nanl(""); } 25082: 25082: static constexpr long double 25082: signaling_NaN() noexcept { return __builtin_nansl(""); } 25082: 25082: static constexpr long double 25082: denorm_min() noexcept { return 6.47517511943802511092443895822764655e-4966L; } 25082: 25082: static constexpr bool is_iec559 25082: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 25082: static constexpr bool is_bounded = true; 25082: static constexpr bool is_modulo = false; 25082: 25082: static constexpr bool traps = false; 25082: static constexpr bool tinyness_before = 25082: false; 25082: static constexpr float_round_style round_style = 25082: round_to_nearest; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 41 "/usr/include/c++/8/string_view" 2 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/functional_hash.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/functional_hash.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/functional_hash.h" 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 49 "/usr/include/c++/8/bits/functional_hash.h" 3 25082: template 25082: struct __hash_base 25082: { 25082: typedef _Result result_type [[__deprecated__]]; 25082: typedef _Arg argument_type [[__deprecated__]]; 25082: }; 25082: 25082: 25082: template 25082: struct hash; 25082: 25082: template 25082: struct __poison_hash 25082: { 25082: static constexpr bool __enable_hash_call = false; 25082: private: 25082: 25082: __poison_hash(__poison_hash&&); 25082: ~__poison_hash(); 25082: }; 25082: 25082: template 25082: struct __poison_hash<_Tp, __void_t()(declval<_Tp>()))>> 25082: { 25082: static constexpr bool __enable_hash_call = true; 25082: }; 25082: 25082: 25082: template::value> 25082: struct __hash_enum 25082: { 25082: private: 25082: 25082: __hash_enum(__hash_enum&&); 25082: ~__hash_enum(); 25082: }; 25082: 25082: 25082: template 25082: struct __hash_enum<_Tp, true> : public __hash_base 25082: { 25082: size_t 25082: operator()(_Tp __val) const noexcept 25082: { 25082: using __type = typename underlying_type<_Tp>::type; 25082: return hash<__type>{}(static_cast<__type>(__val)); 25082: } 25082: }; 25082: 25082: 25082: 25082: template 25082: struct hash : __hash_enum<_Tp> 25082: { }; 25082: 25082: 25082: template 25082: struct hash<_Tp*> : public __hash_base 25082: { 25082: size_t 25082: operator()(_Tp* __p) const noexcept 25082: { return reinterpret_cast(__p); } 25082: }; 25082: # 124 "/usr/include/c++/8/bits/functional_hash.h" 3 25082: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; 25082: 25082: 25082: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; 25082: # 187 "/usr/include/c++/8/bits/functional_hash.h" 3 25082: struct _Hash_impl 25082: { 25082: static size_t 25082: hash(const void* __ptr, size_t __clength, 25082: size_t __seed = static_cast(0xc70f6907UL)) 25082: { return _Hash_bytes(__ptr, __clength, __seed); } 25082: 25082: template 25082: static size_t 25082: hash(const _Tp& __val) 25082: { return hash(&__val, sizeof(__val)); } 25082: 25082: template 25082: static size_t 25082: __hash_combine(const _Tp& __val, size_t __hash) 25082: { return hash(&__val, sizeof(__val), __hash); } 25082: }; 25082: 25082: 25082: struct _Fnv_hash_impl 25082: { 25082: static size_t 25082: hash(const void* __ptr, size_t __clength, 25082: size_t __seed = static_cast(2166136261UL)) 25082: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } 25082: 25082: template 25082: static size_t 25082: hash(const _Tp& __val) 25082: { return hash(&__val, sizeof(__val)); } 25082: 25082: template 25082: static size_t 25082: __hash_combine(const _Tp& __val, size_t __hash) 25082: { return hash(&__val, sizeof(__val), __hash); } 25082: }; 25082: 25082: 25082: template<> 25082: struct hash : public __hash_base 25082: { 25082: size_t 25082: operator()(float __val) const noexcept 25082: { 25082: 25082: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; 25082: } 25082: }; 25082: 25082: 25082: template<> 25082: struct hash : public __hash_base 25082: { 25082: size_t 25082: operator()(double __val) const noexcept 25082: { 25082: 25082: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; 25082: } 25082: }; 25082: 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: __attribute__ ((__pure__)) size_t 25082: operator()(long double __val) const noexcept; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_fast_hash : public std::true_type 25082: { }; 25082: 25082: template<> 25082: struct __is_fast_hash> : public std::false_type 25082: { }; 25082: 25082: 25082: } 25082: # 44 "/usr/include/c++/8/string_view" 2 3 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 70 "/usr/include/c++/8/string_view" 3 25082: template> 25082: class basic_string_view 25082: { 25082: public: 25082: 25082: 25082: using traits_type = _Traits; 25082: using value_type = _CharT; 25082: using pointer = const _CharT*; 25082: using const_pointer = const _CharT*; 25082: using reference = const _CharT&; 25082: using const_reference = const _CharT&; 25082: using const_iterator = const _CharT*; 25082: using iterator = const_iterator; 25082: using const_reverse_iterator = std::reverse_iterator; 25082: using reverse_iterator = const_reverse_iterator; 25082: using size_type = size_t; 25082: using difference_type = ptrdiff_t; 25082: static constexpr size_type npos = size_type(-1); 25082: 25082: 25082: 25082: constexpr 25082: basic_string_view() noexcept 25082: : _M_len{0}, _M_str{nullptr} 25082: { } 25082: 25082: constexpr basic_string_view(const basic_string_view&) noexcept = default; 25082: 25082: constexpr basic_string_view(const _CharT* __str) noexcept 25082: : _M_len{__str == nullptr ? 0 : traits_type::length(__str)}, 25082: _M_str{__str} 25082: { } 25082: 25082: constexpr 25082: basic_string_view(const _CharT* __str, size_type __len) noexcept 25082: : _M_len{__len}, _M_str{__str} 25082: { } 25082: 25082: constexpr basic_string_view& 25082: operator=(const basic_string_view&) noexcept = default; 25082: 25082: 25082: 25082: constexpr const_iterator 25082: begin() const noexcept 25082: { return this->_M_str; } 25082: 25082: constexpr const_iterator 25082: end() const noexcept 25082: { return this->_M_str + this->_M_len; } 25082: 25082: constexpr const_iterator 25082: cbegin() const noexcept 25082: { return this->_M_str; } 25082: 25082: constexpr const_iterator 25082: cend() const noexcept 25082: { return this->_M_str + this->_M_len; } 25082: 25082: constexpr const_reverse_iterator 25082: rbegin() const noexcept 25082: { return const_reverse_iterator(this->end()); } 25082: 25082: constexpr const_reverse_iterator 25082: rend() const noexcept 25082: { return const_reverse_iterator(this->begin()); } 25082: 25082: constexpr const_reverse_iterator 25082: crbegin() const noexcept 25082: { return const_reverse_iterator(this->end()); } 25082: 25082: constexpr const_reverse_iterator 25082: crend() const noexcept 25082: { return const_reverse_iterator(this->begin()); } 25082: 25082: 25082: 25082: constexpr size_type 25082: size() const noexcept 25082: { return this->_M_len; } 25082: 25082: constexpr size_type 25082: length() const noexcept 25082: { return _M_len; } 25082: 25082: constexpr size_type 25082: max_size() const noexcept 25082: { 25082: return (npos - sizeof(size_type) - sizeof(void*)) 25082: / sizeof(value_type) / 4; 25082: } 25082: 25082: [[nodiscard]] constexpr bool 25082: empty() const noexcept 25082: { return this->_M_len == 0; } 25082: 25082: 25082: 25082: constexpr const _CharT& 25082: operator[](size_type __pos) const noexcept 25082: { 25082: 25082: 25082: return *(this->_M_str + __pos); 25082: } 25082: 25082: constexpr const _CharT& 25082: at(size_type __pos) const 25082: { 25082: if (__pos >= _M_len) 25082: __throw_out_of_range_fmt(("basic_string_view::at: __pos " "(which is %zu) >= this->size() " "(which is %zu)") 25082: 25082: , __pos, this->size()); 25082: return *(this->_M_str + __pos); 25082: } 25082: 25082: constexpr const _CharT& 25082: front() const noexcept 25082: { 25082: 25082: 25082: return *this->_M_str; 25082: } 25082: 25082: constexpr const _CharT& 25082: back() const noexcept 25082: { 25082: 25082: 25082: return *(this->_M_str + this->_M_len - 1); 25082: } 25082: 25082: constexpr const _CharT* 25082: data() const noexcept 25082: { return this->_M_str; } 25082: 25082: 25082: 25082: constexpr void 25082: remove_prefix(size_type __n) noexcept 25082: { 25082: ; 25082: this->_M_str += __n; 25082: this->_M_len -= __n; 25082: } 25082: 25082: constexpr void 25082: remove_suffix(size_type __n) noexcept 25082: { this->_M_len -= __n; } 25082: 25082: constexpr void 25082: swap(basic_string_view& __sv) noexcept 25082: { 25082: auto __tmp = *this; 25082: *this = __sv; 25082: __sv = __tmp; 25082: } 25082: 25082: 25082: 25082: 25082: size_type 25082: copy(_CharT* __str, size_type __n, size_type __pos = 0) const 25082: { 25082: ; 25082: __pos = _M_check(__pos, "basic_string_view::copy"); 25082: const size_type __rlen = std::min(__n, _M_len - __pos); 25082: 25082: 25082: traits_type::copy(__str, data() + __pos, __rlen); 25082: return __rlen; 25082: } 25082: 25082: constexpr basic_string_view 25082: substr(size_type __pos = 0, size_type __n = npos) const noexcept(false) 25082: { 25082: __pos = _M_check(__pos, "basic_string_view::substr"); 25082: const size_type __rlen = std::min(__n, _M_len - __pos); 25082: return basic_string_view{_M_str + __pos, __rlen}; 25082: } 25082: 25082: constexpr int 25082: compare(basic_string_view __str) const noexcept 25082: { 25082: const size_type __rlen = std::min(this->_M_len, __str._M_len); 25082: int __ret = traits_type::compare(this->_M_str, __str._M_str, __rlen); 25082: if (__ret == 0) 25082: __ret = _S_compare(this->_M_len, __str._M_len); 25082: return __ret; 25082: } 25082: 25082: constexpr int 25082: compare(size_type __pos1, size_type __n1, basic_string_view __str) const 25082: { return this->substr(__pos1, __n1).compare(__str); } 25082: 25082: constexpr int 25082: compare(size_type __pos1, size_type __n1, 25082: basic_string_view __str, size_type __pos2, size_type __n2) const 25082: { 25082: return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); 25082: } 25082: 25082: constexpr int 25082: compare(const _CharT* __str) const noexcept 25082: { return this->compare(basic_string_view{__str}); } 25082: 25082: constexpr int 25082: compare(size_type __pos1, size_type __n1, const _CharT* __str) const 25082: { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); } 25082: 25082: constexpr int 25082: compare(size_type __pos1, size_type __n1, 25082: const _CharT* __str, size_type __n2) const noexcept(false) 25082: { 25082: return this->substr(__pos1, __n1) 25082: .compare(basic_string_view(__str, __n2)); 25082: } 25082: 25082: constexpr size_type 25082: find(basic_string_view __str, size_type __pos = 0) const noexcept 25082: { return this->find(__str._M_str, __pos, __str._M_len); } 25082: 25082: constexpr size_type 25082: find(_CharT __c, size_type __pos = 0) const noexcept; 25082: 25082: constexpr size_type 25082: find(const _CharT* __str, size_type __pos, size_type __n) const noexcept; 25082: 25082: constexpr size_type 25082: find(const _CharT* __str, size_type __pos = 0) const noexcept 25082: { return this->find(__str, __pos, traits_type::length(__str)); } 25082: 25082: constexpr size_type 25082: rfind(basic_string_view __str, size_type __pos = npos) const noexcept 25082: { return this->rfind(__str._M_str, __pos, __str._M_len); } 25082: 25082: constexpr size_type 25082: rfind(_CharT __c, size_type __pos = npos) const noexcept; 25082: 25082: constexpr size_type 25082: rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept; 25082: 25082: constexpr size_type 25082: rfind(const _CharT* __str, size_type __pos = npos) const noexcept 25082: { return this->rfind(__str, __pos, traits_type::length(__str)); } 25082: 25082: constexpr size_type 25082: find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept 25082: { return this->find_first_of(__str._M_str, __pos, __str._M_len); } 25082: 25082: constexpr size_type 25082: find_first_of(_CharT __c, size_type __pos = 0) const noexcept 25082: { return this->find(__c, __pos); } 25082: 25082: constexpr size_type 25082: find_first_of(const _CharT* __str, size_type __pos, size_type __n) const noexcept; 25082: 25082: constexpr size_type 25082: find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept 25082: { return this->find_first_of(__str, __pos, traits_type::length(__str)); } 25082: 25082: constexpr size_type 25082: find_last_of(basic_string_view __str, 25082: size_type __pos = npos) const noexcept 25082: { return this->find_last_of(__str._M_str, __pos, __str._M_len); } 25082: 25082: constexpr size_type 25082: find_last_of(_CharT __c, size_type __pos=npos) const noexcept 25082: { return this->rfind(__c, __pos); } 25082: 25082: constexpr size_type 25082: find_last_of(const _CharT* __str, size_type __pos, 25082: size_type __n) const noexcept; 25082: 25082: constexpr size_type 25082: find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept 25082: { return this->find_last_of(__str, __pos, traits_type::length(__str)); } 25082: 25082: constexpr size_type 25082: find_first_not_of(basic_string_view __str, 25082: size_type __pos = 0) const noexcept 25082: { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); } 25082: 25082: constexpr size_type 25082: find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; 25082: 25082: constexpr size_type 25082: find_first_not_of(const _CharT* __str, 25082: size_type __pos, size_type __n) const noexcept; 25082: 25082: constexpr size_type 25082: find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept 25082: { 25082: return this->find_first_not_of(__str, __pos, 25082: traits_type::length(__str)); 25082: } 25082: 25082: constexpr size_type 25082: find_last_not_of(basic_string_view __str, 25082: size_type __pos = npos) const noexcept 25082: { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); } 25082: 25082: constexpr size_type 25082: find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; 25082: 25082: constexpr size_type 25082: find_last_not_of(const _CharT* __str, 25082: size_type __pos, size_type __n) const noexcept; 25082: 25082: constexpr size_type 25082: find_last_not_of(const _CharT* __str, 25082: size_type __pos = npos) const noexcept 25082: { 25082: return this->find_last_not_of(__str, __pos, 25082: traits_type::length(__str)); 25082: } 25082: 25082: constexpr size_type 25082: _M_check(size_type __pos, const char* __s) const noexcept(false) 25082: { 25082: if (__pos > this->size()) 25082: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") 25082: , 25082: __s, __pos, this->size()); 25082: return __pos; 25082: } 25082: 25082: 25082: constexpr size_type 25082: _M_limit(size_type __pos, size_type __off) const noexcept 25082: { 25082: const bool __testoff = __off < this->size() - __pos; 25082: return __testoff ? __off : this->size() - __pos; 25082: } 25082: 25082: private: 25082: 25082: static constexpr int 25082: _S_compare(size_type __n1, size_type __n2) noexcept 25082: { 25082: const difference_type __diff = __n1 - __n2; 25082: if (__diff > std::numeric_limits::max()) 25082: return std::numeric_limits::max(); 25082: if (__diff < std::numeric_limits::min()) 25082: return std::numeric_limits::min(); 25082: return static_cast(__diff); 25082: } 25082: 25082: size_t _M_len; 25082: const _CharT* _M_str; 25082: }; 25082: 25082: 25082: 25082: namespace __detail 25082: { 25082: 25082: 25082: 25082: template 25082: using __idt = common_type_t<_Tp>; 25082: } 25082: 25082: template 25082: constexpr bool 25082: operator==(basic_string_view<_CharT, _Traits> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return __x.size() == __y.size() && __x.compare(__y) == 0; } 25082: 25082: template 25082: constexpr bool 25082: operator==(basic_string_view<_CharT, _Traits> __x, 25082: __detail::__idt> __y) noexcept 25082: { return __x.size() == __y.size() && __x.compare(__y) == 0; } 25082: 25082: template 25082: constexpr bool 25082: operator==(__detail::__idt> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return __x.size() == __y.size() && __x.compare(__y) == 0; } 25082: 25082: template 25082: constexpr bool 25082: operator!=(basic_string_view<_CharT, _Traits> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return !(__x == __y); } 25082: 25082: template 25082: constexpr bool 25082: operator!=(basic_string_view<_CharT, _Traits> __x, 25082: __detail::__idt> __y) noexcept 25082: { return !(__x == __y); } 25082: 25082: template 25082: constexpr bool 25082: operator!=(__detail::__idt> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return !(__x == __y); } 25082: 25082: template 25082: constexpr bool 25082: operator< (basic_string_view<_CharT, _Traits> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return __x.compare(__y) < 0; } 25082: 25082: template 25082: constexpr bool 25082: operator< (basic_string_view<_CharT, _Traits> __x, 25082: __detail::__idt> __y) noexcept 25082: { return __x.compare(__y) < 0; } 25082: 25082: template 25082: constexpr bool 25082: operator< (__detail::__idt> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return __x.compare(__y) < 0; } 25082: 25082: template 25082: constexpr bool 25082: operator> (basic_string_view<_CharT, _Traits> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return __x.compare(__y) > 0; } 25082: 25082: template 25082: constexpr bool 25082: operator> (basic_string_view<_CharT, _Traits> __x, 25082: __detail::__idt> __y) noexcept 25082: { return __x.compare(__y) > 0; } 25082: 25082: template 25082: constexpr bool 25082: operator> (__detail::__idt> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return __x.compare(__y) > 0; } 25082: 25082: template 25082: constexpr bool 25082: operator<=(basic_string_view<_CharT, _Traits> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return __x.compare(__y) <= 0; } 25082: 25082: template 25082: constexpr bool 25082: operator<=(basic_string_view<_CharT, _Traits> __x, 25082: __detail::__idt> __y) noexcept 25082: { return __x.compare(__y) <= 0; } 25082: 25082: template 25082: constexpr bool 25082: operator<=(__detail::__idt> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return __x.compare(__y) <= 0; } 25082: 25082: template 25082: constexpr bool 25082: operator>=(basic_string_view<_CharT, _Traits> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return __x.compare(__y) >= 0; } 25082: 25082: template 25082: constexpr bool 25082: operator>=(basic_string_view<_CharT, _Traits> __x, 25082: __detail::__idt> __y) noexcept 25082: { return __x.compare(__y) >= 0; } 25082: 25082: template 25082: constexpr bool 25082: operator>=(__detail::__idt> __x, 25082: basic_string_view<_CharT, _Traits> __y) noexcept 25082: { return __x.compare(__y) >= 0; } 25082: 25082: 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, 25082: basic_string_view<_CharT,_Traits> __str) 25082: { return __ostream_insert(__os, __str.data(), __str.size()); } 25082: 25082: 25082: 25082: 25082: using string_view = basic_string_view; 25082: 25082: using wstring_view = basic_string_view; 25082: 25082: 25082: using u16string_view = basic_string_view; 25082: using u32string_view = basic_string_view; 25082: 25082: 25082: 25082: 25082: template 25082: struct hash; 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: size_t 25082: operator()(const string_view& __str) const noexcept 25082: { return std::_Hash_impl::hash(__str.data(), __str.length()); } 25082: }; 25082: 25082: template<> 25082: struct __is_fast_hash> : std::false_type 25082: { }; 25082: 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: size_t 25082: operator()(const wstring_view& __s) const noexcept 25082: { return std::_Hash_impl::hash(__s.data(), 25082: __s.length() * sizeof(wchar_t)); } 25082: }; 25082: 25082: template<> 25082: struct __is_fast_hash> : std::false_type 25082: { }; 25082: 25082: 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: size_t 25082: operator()(const u16string_view& __s) const noexcept 25082: { return std::_Hash_impl::hash(__s.data(), 25082: __s.length() * sizeof(char16_t)); } 25082: }; 25082: 25082: template<> 25082: struct __is_fast_hash> : std::false_type 25082: { }; 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: size_t 25082: operator()(const u32string_view& __s) const noexcept 25082: { return std::_Hash_impl::hash(__s.data(), 25082: __s.length() * sizeof(char32_t)); } 25082: }; 25082: 25082: template<> 25082: struct __is_fast_hash> : std::false_type 25082: { }; 25082: 25082: 25082: inline namespace literals 25082: { 25082: inline namespace string_view_literals 25082: { 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wliteral-suffix" 25082: inline constexpr basic_string_view 25082: operator""sv(const char* __str, size_t __len) noexcept 25082: { return basic_string_view{__str, __len}; } 25082: 25082: 25082: inline constexpr basic_string_view 25082: operator""sv(const wchar_t* __str, size_t __len) noexcept 25082: { return basic_string_view{__str, __len}; } 25082: 25082: 25082: 25082: inline constexpr basic_string_view 25082: operator""sv(const char16_t* __str, size_t __len) noexcept 25082: { return basic_string_view{__str, __len}; } 25082: 25082: inline constexpr basic_string_view 25082: operator""sv(const char32_t* __str, size_t __len) noexcept 25082: { return basic_string_view{__str, __len}; } 25082: 25082: #pragma GCC diagnostic pop 25082: } 25082: } 25082: 25082: 25082: } 25082: 25082: # 1 "/usr/include/c++/8/bits/string_view.tcc" 1 3 25082: # 37 "/usr/include/c++/8/bits/string_view.tcc" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/string_view.tcc" 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: constexpr typename basic_string_view<_CharT, _Traits>::size_type 25082: basic_string_view<_CharT, _Traits>:: 25082: find(const _CharT* __str, size_type __pos, size_type __n) const noexcept 25082: { 25082: ; 25082: 25082: if (__n == 0) 25082: return __pos <= this->_M_len ? __pos : npos; 25082: 25082: if (__n <= this->_M_len) 25082: { 25082: for (; __pos <= this->_M_len - __n; ++__pos) 25082: if (traits_type::eq(this->_M_str[__pos], __str[0]) 25082: && traits_type::compare(this->_M_str + __pos + 1, 25082: __str + 1, __n - 1) == 0) 25082: return __pos; 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: constexpr typename basic_string_view<_CharT, _Traits>::size_type 25082: basic_string_view<_CharT, _Traits>:: 25082: find(_CharT __c, size_type __pos) const noexcept 25082: { 25082: size_type __ret = npos; 25082: if (__pos < this->_M_len) 25082: { 25082: const size_type __n = this->_M_len - __pos; 25082: const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c); 25082: if (__p) 25082: __ret = __p - this->_M_str; 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: constexpr typename basic_string_view<_CharT, _Traits>::size_type 25082: basic_string_view<_CharT, _Traits>:: 25082: rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept 25082: { 25082: ; 25082: 25082: if (__n <= this->_M_len) 25082: { 25082: __pos = std::min(size_type(this->_M_len - __n), __pos); 25082: do 25082: { 25082: if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0) 25082: return __pos; 25082: } 25082: while (__pos-- > 0); 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: constexpr typename basic_string_view<_CharT, _Traits>::size_type 25082: basic_string_view<_CharT, _Traits>:: 25082: rfind(_CharT __c, size_type __pos) const noexcept 25082: { 25082: size_type __size = this->_M_len; 25082: if (__size > 0) 25082: { 25082: if (--__size > __pos) 25082: __size = __pos; 25082: for (++__size; __size-- > 0; ) 25082: if (traits_type::eq(this->_M_str[__size], __c)) 25082: return __size; 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: constexpr typename basic_string_view<_CharT, _Traits>::size_type 25082: basic_string_view<_CharT, _Traits>:: 25082: find_first_of(const _CharT* __str, size_type __pos, 25082: size_type __n) const noexcept 25082: { 25082: ; 25082: for (; __n && __pos < this->_M_len; ++__pos) 25082: { 25082: const _CharT* __p = traits_type::find(__str, __n, 25082: this->_M_str[__pos]); 25082: if (__p) 25082: return __pos; 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: constexpr typename basic_string_view<_CharT, _Traits>::size_type 25082: basic_string_view<_CharT, _Traits>:: 25082: find_last_of(const _CharT* __str, size_type __pos, 25082: size_type __n) const noexcept 25082: { 25082: ; 25082: size_type __size = this->size(); 25082: if (__size && __n) 25082: { 25082: if (--__size > __pos) 25082: __size = __pos; 25082: do 25082: { 25082: if (traits_type::find(__str, __n, this->_M_str[__size])) 25082: return __size; 25082: } 25082: while (__size-- != 0); 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: constexpr typename basic_string_view<_CharT, _Traits>::size_type 25082: basic_string_view<_CharT, _Traits>:: 25082: find_first_not_of(const _CharT* __str, size_type __pos, 25082: size_type __n) const noexcept 25082: { 25082: ; 25082: for (; __pos < this->_M_len; ++__pos) 25082: if (!traits_type::find(__str, __n, this->_M_str[__pos])) 25082: return __pos; 25082: return npos; 25082: } 25082: 25082: template 25082: constexpr typename basic_string_view<_CharT, _Traits>::size_type 25082: basic_string_view<_CharT, _Traits>:: 25082: find_first_not_of(_CharT __c, size_type __pos) const noexcept 25082: { 25082: for (; __pos < this->_M_len; ++__pos) 25082: if (!traits_type::eq(this->_M_str[__pos], __c)) 25082: return __pos; 25082: return npos; 25082: } 25082: 25082: template 25082: constexpr typename basic_string_view<_CharT, _Traits>::size_type 25082: basic_string_view<_CharT, _Traits>:: 25082: find_last_not_of(const _CharT* __str, size_type __pos, 25082: size_type __n) const noexcept 25082: { 25082: ; 25082: size_type __size = this->_M_len; 25082: if (__size) 25082: { 25082: if (--__size > __pos) 25082: __size = __pos; 25082: do 25082: { 25082: if (!traits_type::find(__str, __n, this->_M_str[__size])) 25082: return __size; 25082: } 25082: while (__size--); 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: constexpr typename basic_string_view<_CharT, _Traits>::size_type 25082: basic_string_view<_CharT, _Traits>:: 25082: find_last_not_of(_CharT __c, size_type __pos) const noexcept 25082: { 25082: size_type __size = this->_M_len; 25082: if (__size) 25082: { 25082: if (--__size > __pos) 25082: __size = __pos; 25082: do 25082: { 25082: if (!traits_type::eq(this->_M_str[__size], __c)) 25082: return __size; 25082: } 25082: while (__size--); 25082: } 25082: return npos; 25082: } 25082: 25082: 25082: } 25082: # 658 "/usr/include/c++/8/string_view" 2 3 25082: # 49 "/usr/include/c++/8/bits/basic_string.h" 2 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: namespace __cxx11 { 25082: # 76 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: class basic_string 25082: { 25082: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 25082: rebind<_CharT>::other _Char_alloc_type; 25082: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; 25082: 25082: 25082: public: 25082: typedef _Traits traits_type; 25082: typedef typename _Traits::char_type value_type; 25082: typedef _Char_alloc_type allocator_type; 25082: typedef typename _Alloc_traits::size_type size_type; 25082: typedef typename _Alloc_traits::difference_type difference_type; 25082: typedef typename _Alloc_traits::reference reference; 25082: typedef typename _Alloc_traits::const_reference const_reference; 25082: typedef typename _Alloc_traits::pointer pointer; 25082: typedef typename _Alloc_traits::const_pointer const_pointer; 25082: typedef __gnu_cxx::__normal_iterator iterator; 25082: typedef __gnu_cxx::__normal_iterator 25082: const_iterator; 25082: typedef std::reverse_iterator const_reverse_iterator; 25082: typedef std::reverse_iterator reverse_iterator; 25082: 25082: 25082: static const size_type npos = static_cast(-1); 25082: 25082: private: 25082: 25082: 25082: 25082: 25082: typedef const_iterator __const_iterator; 25082: 25082: 25082: 25082: 25082: typedef basic_string_view<_CharT, _Traits> __sv_type; 25082: 25082: template 25082: using _If_sv = enable_if_t< 25082: __and_, 25082: __not_>, 25082: __not_>>::value, 25082: _Res>; 25082: 25082: 25082: static __sv_type 25082: _S_to_string_view(__sv_type __svt) noexcept 25082: { return __svt; } 25082: 25082: 25082: 25082: 25082: 25082: struct __sv_wrapper 25082: { 25082: explicit __sv_wrapper(__sv_type __sv) noexcept : _M_sv(__sv) { } 25082: __sv_type _M_sv; 25082: }; 25082: 25082: 25082: 25082: struct _Alloc_hider : allocator_type 25082: { 25082: 25082: 25082: 25082: 25082: _Alloc_hider(pointer __dat, const _Alloc& __a) 25082: : allocator_type(__a), _M_p(__dat) { } 25082: 25082: _Alloc_hider(pointer __dat, _Alloc&& __a = _Alloc()) 25082: : allocator_type(std::move(__a)), _M_p(__dat) { } 25082: 25082: 25082: pointer _M_p; 25082: }; 25082: 25082: _Alloc_hider _M_dataplus; 25082: size_type _M_string_length; 25082: 25082: enum { _S_local_capacity = 15 / sizeof(_CharT) }; 25082: 25082: union 25082: { 25082: _CharT _M_local_buf[_S_local_capacity + 1]; 25082: size_type _M_allocated_capacity; 25082: }; 25082: 25082: void 25082: _M_data(pointer __p) 25082: { _M_dataplus._M_p = __p; } 25082: 25082: void 25082: _M_length(size_type __length) 25082: { _M_string_length = __length; } 25082: 25082: pointer 25082: _M_data() const 25082: { return _M_dataplus._M_p; } 25082: 25082: pointer 25082: _M_local_data() 25082: { 25082: 25082: return std::pointer_traits::pointer_to(*_M_local_buf); 25082: 25082: 25082: 25082: } 25082: 25082: const_pointer 25082: _M_local_data() const 25082: { 25082: 25082: return std::pointer_traits::pointer_to(*_M_local_buf); 25082: 25082: 25082: 25082: } 25082: 25082: void 25082: _M_capacity(size_type __capacity) 25082: { _M_allocated_capacity = __capacity; } 25082: 25082: void 25082: _M_set_length(size_type __n) 25082: { 25082: _M_length(__n); 25082: traits_type::assign(_M_data()[__n], _CharT()); 25082: } 25082: 25082: bool 25082: _M_is_local() const 25082: { return _M_data() == _M_local_data(); } 25082: 25082: 25082: pointer 25082: _M_create(size_type&, size_type); 25082: 25082: void 25082: _M_dispose() 25082: { 25082: if (!_M_is_local()) 25082: _M_destroy(_M_allocated_capacity); 25082: } 25082: 25082: void 25082: _M_destroy(size_type __size) throw() 25082: { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); } 25082: 25082: 25082: 25082: template 25082: void 25082: _M_construct_aux(_InIterator __beg, _InIterator __end, 25082: std::__false_type) 25082: { 25082: typedef typename iterator_traits<_InIterator>::iterator_category _Tag; 25082: _M_construct(__beg, __end, _Tag()); 25082: } 25082: 25082: 25082: 25082: template 25082: void 25082: _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type) 25082: { _M_construct_aux_2(static_cast(__beg), __end); } 25082: 25082: void 25082: _M_construct_aux_2(size_type __req, _CharT __c) 25082: { _M_construct(__req, __c); } 25082: 25082: template 25082: void 25082: _M_construct(_InIterator __beg, _InIterator __end) 25082: { 25082: typedef typename std::__is_integer<_InIterator>::__type _Integral; 25082: _M_construct_aux(__beg, __end, _Integral()); 25082: } 25082: 25082: 25082: template 25082: void 25082: _M_construct(_InIterator __beg, _InIterator __end, 25082: std::input_iterator_tag); 25082: 25082: 25082: 25082: template 25082: void 25082: _M_construct(_FwdIterator __beg, _FwdIterator __end, 25082: std::forward_iterator_tag); 25082: 25082: void 25082: _M_construct(size_type __req, _CharT __c); 25082: 25082: allocator_type& 25082: _M_get_allocator() 25082: { return _M_dataplus; } 25082: 25082: const allocator_type& 25082: _M_get_allocator() const 25082: { return _M_dataplus; } 25082: 25082: private: 25082: # 298 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: _M_check(size_type __pos, const char* __s) const 25082: { 25082: if (__pos > this->size()) 25082: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") 25082: , 25082: __s, __pos, this->size()); 25082: return __pos; 25082: } 25082: 25082: void 25082: _M_check_length(size_type __n1, size_type __n2, const char* __s) const 25082: { 25082: if (this->max_size() - (this->size() - __n1) < __n2) 25082: __throw_length_error((__s)); 25082: } 25082: 25082: 25082: 25082: size_type 25082: _M_limit(size_type __pos, size_type __off) const noexcept 25082: { 25082: const bool __testoff = __off < this->size() - __pos; 25082: return __testoff ? __off : this->size() - __pos; 25082: } 25082: 25082: 25082: bool 25082: _M_disjunct(const _CharT* __s) const noexcept 25082: { 25082: return (less()(__s, _M_data()) 25082: || less()(_M_data() + this->size(), __s)); 25082: } 25082: 25082: 25082: 25082: static void 25082: _S_copy(_CharT* __d, const _CharT* __s, size_type __n) 25082: { 25082: if (__n == 1) 25082: traits_type::assign(*__d, *__s); 25082: else 25082: traits_type::copy(__d, __s, __n); 25082: } 25082: 25082: static void 25082: _S_move(_CharT* __d, const _CharT* __s, size_type __n) 25082: { 25082: if (__n == 1) 25082: traits_type::assign(*__d, *__s); 25082: else 25082: traits_type::move(__d, __s, __n); 25082: } 25082: 25082: static void 25082: _S_assign(_CharT* __d, size_type __n, _CharT __c) 25082: { 25082: if (__n == 1) 25082: traits_type::assign(*__d, __c); 25082: else 25082: traits_type::assign(__d, __n, __c); 25082: } 25082: 25082: 25082: 25082: template 25082: static void 25082: _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) 25082: { 25082: for (; __k1 != __k2; ++__k1, (void)++__p) 25082: traits_type::assign(*__p, *__k1); 25082: } 25082: 25082: static void 25082: _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) noexcept 25082: { _S_copy_chars(__p, __k1.base(), __k2.base()); } 25082: 25082: static void 25082: _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) 25082: noexcept 25082: { _S_copy_chars(__p, __k1.base(), __k2.base()); } 25082: 25082: static void 25082: _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) noexcept 25082: { _S_copy(__p, __k1, __k2 - __k1); } 25082: 25082: static void 25082: _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) 25082: noexcept 25082: { _S_copy(__p, __k1, __k2 - __k1); } 25082: 25082: static int 25082: _S_compare(size_type __n1, size_type __n2) noexcept 25082: { 25082: const difference_type __d = difference_type(__n1 - __n2); 25082: 25082: if (__d > __gnu_cxx::__numeric_traits::__max) 25082: return __gnu_cxx::__numeric_traits::__max; 25082: else if (__d < __gnu_cxx::__numeric_traits::__min) 25082: return __gnu_cxx::__numeric_traits::__min; 25082: else 25082: return int(__d); 25082: } 25082: 25082: void 25082: _M_assign(const basic_string&); 25082: 25082: void 25082: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 25082: size_type __len2); 25082: 25082: void 25082: _M_erase(size_type __pos, size_type __n); 25082: 25082: public: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string() 25082: noexcept(is_nothrow_default_constructible<_Alloc>::value) 25082: : _M_dataplus(_M_local_data()) 25082: { _M_set_length(0); } 25082: 25082: 25082: 25082: 25082: explicit 25082: basic_string(const _Alloc& __a) noexcept 25082: : _M_dataplus(_M_local_data(), __a) 25082: { _M_set_length(0); } 25082: 25082: 25082: 25082: 25082: 25082: basic_string(const basic_string& __str) 25082: : _M_dataplus(_M_local_data(), 25082: _Alloc_traits::_S_select_on_copy(__str._M_get_allocator())) 25082: { _M_construct(__str._M_data(), __str._M_data() + __str.length()); } 25082: # 450 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string(const basic_string& __str, size_type __pos, 25082: const _Alloc& __a = _Alloc()) 25082: : _M_dataplus(_M_local_data(), __a) 25082: { 25082: const _CharT* __start = __str._M_data() 25082: + __str._M_check(__pos, "basic_string::basic_string"); 25082: _M_construct(__start, __start + __str._M_limit(__pos, npos)); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string(const basic_string& __str, size_type __pos, 25082: size_type __n) 25082: : _M_dataplus(_M_local_data()) 25082: { 25082: const _CharT* __start = __str._M_data() 25082: + __str._M_check(__pos, "basic_string::basic_string"); 25082: _M_construct(__start, __start + __str._M_limit(__pos, __n)); 25082: } 25082: # 481 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string(const basic_string& __str, size_type __pos, 25082: size_type __n, const _Alloc& __a) 25082: : _M_dataplus(_M_local_data(), __a) 25082: { 25082: const _CharT* __start 25082: = __str._M_data() + __str._M_check(__pos, "string::string"); 25082: _M_construct(__start, __start + __str._M_limit(__pos, __n)); 25082: } 25082: # 499 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string(const _CharT* __s, size_type __n, 25082: const _Alloc& __a = _Alloc()) 25082: : _M_dataplus(_M_local_data(), __a) 25082: { _M_construct(__s, __s + __n); } 25082: # 512 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template> 25082: 25082: basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) 25082: : _M_dataplus(_M_local_data(), __a) 25082: { _M_construct(__s, __s ? __s + traits_type::length(__s) : __s+npos); } 25082: # 527 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template> 25082: 25082: basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) 25082: : _M_dataplus(_M_local_data(), __a) 25082: { _M_construct(__n, __c); } 25082: # 541 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string(basic_string&& __str) noexcept 25082: : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator())) 25082: { 25082: if (__str._M_is_local()) 25082: { 25082: traits_type::copy(_M_local_buf, __str._M_local_buf, 25082: _S_local_capacity + 1); 25082: } 25082: else 25082: { 25082: _M_data(__str._M_data()); 25082: _M_capacity(__str._M_allocated_capacity); 25082: } 25082: 25082: 25082: 25082: 25082: _M_length(__str.length()); 25082: __str._M_data(__str._M_local_data()); 25082: __str._M_set_length(0); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) 25082: : _M_dataplus(_M_local_data(), __a) 25082: { _M_construct(__l.begin(), __l.end()); } 25082: 25082: basic_string(const basic_string& __str, const _Alloc& __a) 25082: : _M_dataplus(_M_local_data(), __a) 25082: { _M_construct(__str.begin(), __str.end()); } 25082: 25082: basic_string(basic_string&& __str, const _Alloc& __a) 25082: noexcept(_Alloc_traits::_S_always_equal()) 25082: : _M_dataplus(_M_local_data(), __a) 25082: { 25082: if (__str._M_is_local()) 25082: { 25082: traits_type::copy(_M_local_buf, __str._M_local_buf, 25082: _S_local_capacity + 1); 25082: _M_length(__str.length()); 25082: __str._M_set_length(0); 25082: } 25082: else if (_Alloc_traits::_S_always_equal() 25082: || __str.get_allocator() == __a) 25082: { 25082: _M_data(__str._M_data()); 25082: _M_length(__str.length()); 25082: _M_capacity(__str._M_allocated_capacity); 25082: __str._M_data(__str._M_local_buf); 25082: __str._M_set_length(0); 25082: } 25082: else 25082: _M_construct(__str.begin(), __str.end()); 25082: } 25082: # 609 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template> 25082: 25082: 25082: 25082: basic_string(_InputIterator __beg, _InputIterator __end, 25082: const _Alloc& __a = _Alloc()) 25082: : _M_dataplus(_M_local_data(), __a) 25082: { _M_construct(__beg, __end); } 25082: # 627 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template> 25082: basic_string(const _Tp& __t, size_type __pos, size_type __n, 25082: const _Alloc& __a = _Alloc()) 25082: : basic_string(_S_to_string_view(__t).substr(__pos, __n), __a) { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template> 25082: explicit 25082: basic_string(const _Tp& __t, const _Alloc& __a = _Alloc()) 25082: : basic_string(__sv_wrapper(_S_to_string_view(__t)), __a) { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: basic_string(__sv_wrapper __svw, const _Alloc& __a) 25082: : basic_string(__svw._M_sv.data(), __svw._M_sv.size(), __a) { } 25082: 25082: 25082: 25082: 25082: 25082: ~basic_string() 25082: { _M_dispose(); } 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: operator=(const basic_string& __str) 25082: { 25082: 25082: if (_Alloc_traits::_S_propagate_on_copy_assign()) 25082: { 25082: if (!_Alloc_traits::_S_always_equal() && !_M_is_local() 25082: && _M_get_allocator() != __str._M_get_allocator()) 25082: { 25082: 25082: 25082: if (__str.size() <= _S_local_capacity) 25082: { 25082: _M_destroy(_M_allocated_capacity); 25082: _M_data(_M_local_data()); 25082: _M_set_length(0); 25082: } 25082: else 25082: { 25082: const auto __len = __str.size(); 25082: auto __alloc = __str._M_get_allocator(); 25082: 25082: auto __ptr = _Alloc_traits::allocate(__alloc, __len + 1); 25082: _M_destroy(_M_allocated_capacity); 25082: _M_data(__ptr); 25082: _M_capacity(__len); 25082: _M_set_length(__len); 25082: } 25082: } 25082: std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator()); 25082: } 25082: 25082: return this->assign(__str); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: operator=(const _CharT* __s) 25082: { return this->assign(__s); } 25082: # 713 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: operator=(_CharT __c) 25082: { 25082: this->assign(1, __c); 25082: return *this; 25082: } 25082: # 731 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: operator=(basic_string&& __str) 25082: noexcept(_Alloc_traits::_S_nothrow_move()) 25082: { 25082: if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign() 25082: && !_Alloc_traits::_S_always_equal() 25082: && _M_get_allocator() != __str._M_get_allocator()) 25082: { 25082: 25082: _M_destroy(_M_allocated_capacity); 25082: _M_data(_M_local_data()); 25082: _M_set_length(0); 25082: } 25082: 25082: std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); 25082: 25082: if (__str._M_is_local()) 25082: { 25082: 25082: if (__str.size()) 25082: this->_S_copy(_M_data(), __str._M_data(), __str.size()); 25082: _M_set_length(__str.size()); 25082: } 25082: else if (_Alloc_traits::_S_propagate_on_move_assign() 25082: || _Alloc_traits::_S_always_equal() 25082: || _M_get_allocator() == __str._M_get_allocator()) 25082: { 25082: 25082: pointer __data = nullptr; 25082: size_type __capacity; 25082: if (!_M_is_local()) 25082: { 25082: if (_Alloc_traits::_S_always_equal()) 25082: { 25082: 25082: __data = _M_data(); 25082: __capacity = _M_allocated_capacity; 25082: } 25082: else 25082: _M_destroy(_M_allocated_capacity); 25082: } 25082: 25082: _M_data(__str._M_data()); 25082: _M_length(__str.length()); 25082: _M_capacity(__str._M_allocated_capacity); 25082: if (__data) 25082: { 25082: __str._M_data(__data); 25082: __str._M_capacity(__capacity); 25082: } 25082: else 25082: __str._M_data(__str._M_local_buf); 25082: } 25082: else 25082: assign(__str); 25082: __str.clear(); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: operator=(initializer_list<_CharT> __l) 25082: { 25082: this->assign(__l.begin(), __l.size()); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: operator=(const _Tp& __svt) 25082: { return this->assign(__svt); } 25082: 25082: 25082: 25082: 25082: 25082: operator __sv_type() const noexcept 25082: { return __sv_type(data(), size()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: begin() noexcept 25082: { return iterator(_M_data()); } 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return const_iterator(_M_data()); } 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() noexcept 25082: { return iterator(_M_data() + this->size()); } 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return const_iterator(_M_data() + this->size()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rbegin() noexcept 25082: { return reverse_iterator(this->end()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: rbegin() const noexcept 25082: { return const_reverse_iterator(this->end()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rend() noexcept 25082: { return reverse_iterator(this->begin()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: rend() const noexcept 25082: { return const_reverse_iterator(this->begin()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return const_iterator(this->_M_data()); } 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return const_iterator(this->_M_data() + this->size()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: crbegin() const noexcept 25082: { return const_reverse_iterator(this->end()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: crend() const noexcept 25082: { return const_reverse_iterator(this->begin()); } 25082: 25082: 25082: public: 25082: 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_string_length; } 25082: 25082: 25082: 25082: size_type 25082: length() const noexcept 25082: { return _M_string_length; } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return (_Alloc_traits::max_size(_M_get_allocator()) - 1) / 2; } 25082: # 954 "/usr/include/c++/8/bits/basic_string.h" 3 25082: void 25082: resize(size_type __n, _CharT __c); 25082: # 967 "/usr/include/c++/8/bits/basic_string.h" 3 25082: void 25082: resize(size_type __n) 25082: { this->resize(__n, _CharT()); } 25082: 25082: 25082: 25082: void 25082: shrink_to_fit() noexcept 25082: { 25082: 25082: if (capacity() > size()) 25082: { 25082: try 25082: { reserve(0); } 25082: catch(...) 25082: { } 25082: } 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: capacity() const noexcept 25082: { 25082: return _M_is_local() ? size_type(_S_local_capacity) 25082: : _M_allocated_capacity; 25082: } 25082: # 1016 "/usr/include/c++/8/bits/basic_string.h" 3 25082: void 25082: reserve(size_type __res_arg = 0); 25082: 25082: 25082: 25082: 25082: void 25082: clear() noexcept 25082: { _M_set_length(0); } 25082: 25082: 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return this->size() == 0; } 25082: # 1045 "/usr/include/c++/8/bits/basic_string.h" 3 25082: const_reference 25082: operator[] (size_type __pos) const noexcept 25082: { 25082: ; 25082: return _M_data()[__pos]; 25082: } 25082: # 1062 "/usr/include/c++/8/bits/basic_string.h" 3 25082: reference 25082: operator[](size_type __pos) 25082: { 25082: 25082: 25082: ; 25082: 25082: ; 25082: return _M_data()[__pos]; 25082: } 25082: # 1083 "/usr/include/c++/8/bits/basic_string.h" 3 25082: const_reference 25082: at(size_type __n) const 25082: { 25082: if (__n >= this->size()) 25082: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 25082: 25082: , 25082: __n, this->size()); 25082: return _M_data()[__n]; 25082: } 25082: # 1104 "/usr/include/c++/8/bits/basic_string.h" 3 25082: reference 25082: at(size_type __n) 25082: { 25082: if (__n >= size()) 25082: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 25082: 25082: , 25082: __n, this->size()); 25082: return _M_data()[__n]; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reference 25082: front() noexcept 25082: { 25082: ; 25082: return operator[](0); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: const_reference 25082: front() const noexcept 25082: { 25082: ; 25082: return operator[](0); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: reference 25082: back() noexcept 25082: { 25082: ; 25082: return operator[](this->size() - 1); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: const_reference 25082: back() const noexcept 25082: { 25082: ; 25082: return operator[](this->size() - 1); 25082: } 25082: # 1167 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: operator+=(const basic_string& __str) 25082: { return this->append(__str); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: operator+=(const _CharT* __s) 25082: { return this->append(__s); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: operator+=(_CharT __c) 25082: { 25082: this->push_back(__c); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: operator+=(initializer_list<_CharT> __l) 25082: { return this->append(__l.begin(), __l.size()); } 25082: # 1209 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: operator+=(const _Tp& __svt) 25082: { return this->append(__svt); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: append(const basic_string& __str) 25082: { return _M_append(__str._M_data(), __str.size()); } 25082: # 1237 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: append(const basic_string& __str, size_type __pos, size_type __n = npos) 25082: { return _M_append(__str._M_data() 25082: + __str._M_check(__pos, "basic_string::append"), 25082: __str._M_limit(__pos, __n)); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: append(const _CharT* __s, size_type __n) 25082: { 25082: ; 25082: _M_check_length(size_type(0), __n, "basic_string::append"); 25082: return _M_append(__s, __n); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: append(const _CharT* __s) 25082: { 25082: ; 25082: const size_type __n = traits_type::length(__s); 25082: _M_check_length(size_type(0), __n, "basic_string::append"); 25082: return _M_append(__s, __n); 25082: } 25082: # 1279 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: append(size_type __n, _CharT __c) 25082: { return _M_replace_aux(this->size(), size_type(0), __n, __c); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: append(initializer_list<_CharT> __l) 25082: { return this->append(__l.begin(), __l.size()); } 25082: # 1303 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template> 25082: 25082: 25082: 25082: basic_string& 25082: append(_InputIterator __first, _InputIterator __last) 25082: { return this->replace(end(), end(), __first, __last); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: append(const _Tp& __svt) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->append(__sv.data(), __sv.size()); 25082: } 25082: # 1333 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: append(const _Tp& __svt, size_type __pos, size_type __n = npos) 25082: { 25082: __sv_type __sv = __svt; 25082: return _M_append(__sv.data() 25082: + __sv._M_check(__pos, "basic_string::append"), 25082: __sv._M_limit(__pos, __n)); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: push_back(_CharT __c) 25082: { 25082: const size_type __size = this->size(); 25082: if (__size + 1 > this->capacity()) 25082: this->_M_mutate(__size, size_type(0), 0, size_type(1)); 25082: traits_type::assign(this->_M_data()[__size], __c); 25082: this->_M_set_length(__size + 1); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: assign(const basic_string& __str) 25082: { 25082: this->_M_assign(__str); 25082: return *this; 25082: } 25082: # 1379 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: assign(basic_string&& __str) 25082: noexcept(_Alloc_traits::_S_nothrow_move()) 25082: { 25082: 25082: 25082: return *this = std::move(__str); 25082: } 25082: # 1402 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: assign(const basic_string& __str, size_type __pos, size_type __n = npos) 25082: { return _M_replace(size_type(0), this->size(), __str._M_data() 25082: + __str._M_check(__pos, "basic_string::assign"), 25082: __str._M_limit(__pos, __n)); } 25082: # 1418 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: assign(const _CharT* __s, size_type __n) 25082: { 25082: ; 25082: return _M_replace(size_type(0), this->size(), __s, __n); 25082: } 25082: # 1434 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: assign(const _CharT* __s) 25082: { 25082: ; 25082: return _M_replace(size_type(0), this->size(), __s, 25082: traits_type::length(__s)); 25082: } 25082: # 1451 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: assign(size_type __n, _CharT __c) 25082: { return _M_replace_aux(size_type(0), this->size(), __n, __c); } 25082: # 1464 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template> 25082: 25082: 25082: 25082: basic_string& 25082: assign(_InputIterator __first, _InputIterator __last) 25082: { return this->replace(begin(), end(), __first, __last); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_string& 25082: assign(initializer_list<_CharT> __l) 25082: { return this->assign(__l.begin(), __l.size()); } 25082: # 1490 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: assign(const _Tp& __svt) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->assign(__sv.data(), __sv.size()); 25082: } 25082: # 1505 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: assign(const _Tp& __svt, size_type __pos, size_type __n = npos) 25082: { 25082: __sv_type __sv = __svt; 25082: return _M_replace(size_type(0), this->size(), __sv.data() 25082: + __sv._M_check(__pos, "basic_string::assign"), 25082: __sv._M_limit(__pos, __n)); 25082: } 25082: # 1532 "/usr/include/c++/8/bits/basic_string.h" 3 25082: iterator 25082: insert(const_iterator __p, size_type __n, _CharT __c) 25082: { 25082: ; 25082: const size_type __pos = __p - begin(); 25082: this->replace(__p, __p, __n, __c); 25082: return iterator(this->_M_data() + __pos); 25082: } 25082: # 1574 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template> 25082: iterator 25082: insert(const_iterator __p, _InputIterator __beg, _InputIterator __end) 25082: { 25082: ; 25082: const size_type __pos = __p - begin(); 25082: this->replace(__p, __p, __beg, __end); 25082: return iterator(this->_M_data() + __pos); 25082: } 25082: # 1610 "/usr/include/c++/8/bits/basic_string.h" 3 25082: void 25082: insert(iterator __p, initializer_list<_CharT> __l) 25082: { 25082: ; 25082: this->insert(__p - begin(), __l.begin(), __l.size()); 25082: } 25082: # 1630 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: insert(size_type __pos1, const basic_string& __str) 25082: { return this->replace(__pos1, size_type(0), 25082: __str._M_data(), __str.size()); } 25082: # 1653 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: insert(size_type __pos1, const basic_string& __str, 25082: size_type __pos2, size_type __n = npos) 25082: { return this->replace(__pos1, size_type(0), __str._M_data() 25082: + __str._M_check(__pos2, "basic_string::insert"), 25082: __str._M_limit(__pos2, __n)); } 25082: # 1676 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: insert(size_type __pos, const _CharT* __s, size_type __n) 25082: { return this->replace(__pos, size_type(0), __s, __n); } 25082: # 1695 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: insert(size_type __pos, const _CharT* __s) 25082: { 25082: ; 25082: return this->replace(__pos, size_type(0), __s, 25082: traits_type::length(__s)); 25082: } 25082: # 1719 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: insert(size_type __pos, size_type __n, _CharT __c) 25082: { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), 25082: size_type(0), __n, __c); } 25082: # 1737 "/usr/include/c++/8/bits/basic_string.h" 3 25082: iterator 25082: insert(__const_iterator __p, _CharT __c) 25082: { 25082: ; 25082: const size_type __pos = __p - begin(); 25082: _M_replace_aux(__pos, size_type(0), size_type(1), __c); 25082: return iterator(_M_data() + __pos); 25082: } 25082: # 1753 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: insert(size_type __pos, const _Tp& __svt) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->insert(__pos, __sv.data(), __sv.size()); 25082: } 25082: # 1770 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: insert(size_type __pos1, const _Tp& __svt, 25082: size_type __pos2, size_type __n = npos) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->replace(__pos1, size_type(0), __sv.data() 25082: + __sv._M_check(__pos2, "basic_string::insert"), 25082: __sv._M_limit(__pos2, __n)); 25082: } 25082: # 1797 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: erase(size_type __pos = 0, size_type __n = npos) 25082: { 25082: _M_check(__pos, "basic_string::erase"); 25082: if (__n == npos) 25082: this->_M_set_length(__pos); 25082: else if (__n != 0) 25082: this->_M_erase(__pos, _M_limit(__pos, __n)); 25082: return *this; 25082: } 25082: # 1816 "/usr/include/c++/8/bits/basic_string.h" 3 25082: iterator 25082: erase(__const_iterator __position) 25082: { 25082: 25082: ; 25082: const size_type __pos = __position - begin(); 25082: this->_M_erase(__pos, size_type(1)); 25082: return iterator(_M_data() + __pos); 25082: } 25082: # 1835 "/usr/include/c++/8/bits/basic_string.h" 3 25082: iterator 25082: erase(__const_iterator __first, __const_iterator __last) 25082: { 25082: 25082: ; 25082: const size_type __pos = __first - begin(); 25082: if (__last == end()) 25082: this->_M_set_length(__pos); 25082: else 25082: this->_M_erase(__pos, __last - __first); 25082: return iterator(this->_M_data() + __pos); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: pop_back() noexcept 25082: { 25082: ; 25082: _M_erase(size() - 1, 1); 25082: } 25082: # 1879 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: replace(size_type __pos, size_type __n, const basic_string& __str) 25082: { return this->replace(__pos, __n, __str._M_data(), __str.size()); } 25082: # 1901 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: replace(size_type __pos1, size_type __n1, const basic_string& __str, 25082: size_type __pos2, size_type __n2 = npos) 25082: { return this->replace(__pos1, __n1, __str._M_data() 25082: + __str._M_check(__pos2, "basic_string::replace"), 25082: __str._M_limit(__pos2, __n2)); } 25082: # 1926 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: replace(size_type __pos, size_type __n1, const _CharT* __s, 25082: size_type __n2) 25082: { 25082: ; 25082: return _M_replace(_M_check(__pos, "basic_string::replace"), 25082: _M_limit(__pos, __n1), __s, __n2); 25082: } 25082: # 1951 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: replace(size_type __pos, size_type __n1, const _CharT* __s) 25082: { 25082: ; 25082: return this->replace(__pos, __n1, __s, traits_type::length(__s)); 25082: } 25082: # 1975 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) 25082: { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), 25082: _M_limit(__pos, __n1), __n2, __c); } 25082: # 1993 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: replace(__const_iterator __i1, __const_iterator __i2, 25082: const basic_string& __str) 25082: { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } 25082: # 2013 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: replace(__const_iterator __i1, __const_iterator __i2, 25082: const _CharT* __s, size_type __n) 25082: { 25082: 25082: ; 25082: return this->replace(__i1 - begin(), __i2 - __i1, __s, __n); 25082: } 25082: # 2035 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s) 25082: { 25082: ; 25082: return this->replace(__i1, __i2, __s, traits_type::length(__s)); 25082: } 25082: # 2056 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: replace(__const_iterator __i1, __const_iterator __i2, size_type __n, 25082: _CharT __c) 25082: { 25082: 25082: ; 25082: return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c); 25082: } 25082: # 2081 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template> 25082: basic_string& 25082: replace(const_iterator __i1, const_iterator __i2, 25082: _InputIterator __k1, _InputIterator __k2) 25082: { 25082: 25082: ; 25082: ; 25082: return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, 25082: std::__false_type()); 25082: } 25082: # 2113 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& 25082: replace(__const_iterator __i1, __const_iterator __i2, 25082: _CharT* __k1, _CharT* __k2) 25082: { 25082: 25082: ; 25082: ; 25082: return this->replace(__i1 - begin(), __i2 - __i1, 25082: __k1, __k2 - __k1); 25082: } 25082: 25082: basic_string& 25082: replace(__const_iterator __i1, __const_iterator __i2, 25082: const _CharT* __k1, const _CharT* __k2) 25082: { 25082: 25082: ; 25082: ; 25082: return this->replace(__i1 - begin(), __i2 - __i1, 25082: __k1, __k2 - __k1); 25082: } 25082: 25082: basic_string& 25082: replace(__const_iterator __i1, __const_iterator __i2, 25082: iterator __k1, iterator __k2) 25082: { 25082: 25082: ; 25082: ; 25082: return this->replace(__i1 - begin(), __i2 - __i1, 25082: __k1.base(), __k2 - __k1); 25082: } 25082: 25082: basic_string& 25082: replace(__const_iterator __i1, __const_iterator __i2, 25082: const_iterator __k1, const_iterator __k2) 25082: { 25082: 25082: ; 25082: ; 25082: return this->replace(__i1 - begin(), __i2 - __i1, 25082: __k1.base(), __k2 - __k1); 25082: } 25082: # 2172 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string& replace(const_iterator __i1, const_iterator __i2, 25082: initializer_list<_CharT> __l) 25082: { return this->replace(__i1, __i2, __l.begin(), __l.size()); } 25082: # 2185 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: replace(size_type __pos, size_type __n, const _Tp& __svt) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->replace(__pos, __n, __sv.data(), __sv.size()); 25082: } 25082: # 2202 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: replace(size_type __pos1, size_type __n1, const _Tp& __svt, 25082: size_type __pos2, size_type __n2 = npos) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->replace(__pos1, __n1, __sv.data() 25082: + __sv._M_check(__pos2, "basic_string::replace"), 25082: __sv._M_limit(__pos2, __n2)); 25082: } 25082: # 2222 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, basic_string&> 25082: replace(const_iterator __i1, const_iterator __i2, const _Tp& __svt) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->replace(__i1 - begin(), __i2 - __i1, __sv); 25082: } 25082: 25082: 25082: private: 25082: template 25082: basic_string& 25082: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 25082: _Integer __n, _Integer __val, __true_type) 25082: { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); } 25082: 25082: template 25082: basic_string& 25082: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 25082: _InputIterator __k1, _InputIterator __k2, 25082: __false_type); 25082: 25082: basic_string& 25082: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 25082: _CharT __c); 25082: 25082: basic_string& 25082: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 25082: const size_type __len2); 25082: 25082: basic_string& 25082: _M_append(const _CharT* __s, size_type __n); 25082: 25082: public: 25082: # 2269 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: copy(_CharT* __s, size_type __n, size_type __pos = 0) const; 25082: # 2279 "/usr/include/c++/8/bits/basic_string.h" 3 25082: void 25082: swap(basic_string& __s) noexcept; 25082: # 2289 "/usr/include/c++/8/bits/basic_string.h" 3 25082: const _CharT* 25082: c_str() const noexcept 25082: { return _M_data(); } 25082: # 2301 "/usr/include/c++/8/bits/basic_string.h" 3 25082: const _CharT* 25082: data() const noexcept 25082: { return _M_data(); } 25082: # 2312 "/usr/include/c++/8/bits/basic_string.h" 3 25082: _CharT* 25082: data() noexcept 25082: { return _M_data(); } 25082: 25082: 25082: 25082: 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return _M_get_allocator(); } 25082: # 2336 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find(const _CharT* __s, size_type __pos, size_type __n) const 25082: noexcept; 25082: # 2350 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find(const basic_string& __str, size_type __pos = 0) const 25082: noexcept 25082: { return this->find(__str.data(), __pos, __str.size()); } 25082: # 2362 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, size_type> 25082: find(const _Tp& __svt, size_type __pos = 0) const 25082: noexcept(is_same<_Tp, __sv_type>::value) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->find(__sv.data(), __pos, __sv.size()); 25082: } 25082: # 2382 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find(const _CharT* __s, size_type __pos = 0) const noexcept 25082: { 25082: ; 25082: return this->find(__s, __pos, traits_type::length(__s)); 25082: } 25082: # 2399 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find(_CharT __c, size_type __pos = 0) const noexcept; 25082: # 2412 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: rfind(const basic_string& __str, size_type __pos = npos) const 25082: noexcept 25082: { return this->rfind(__str.data(), __pos, __str.size()); } 25082: # 2424 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, size_type> 25082: rfind(const _Tp& __svt, size_type __pos = npos) const 25082: noexcept(is_same<_Tp, __sv_type>::value) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->rfind(__sv.data(), __pos, __sv.size()); 25082: } 25082: # 2446 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: rfind(const _CharT* __s, size_type __pos, size_type __n) const 25082: noexcept; 25082: # 2460 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: rfind(const _CharT* __s, size_type __pos = npos) const 25082: { 25082: ; 25082: return this->rfind(__s, __pos, traits_type::length(__s)); 25082: } 25082: # 2477 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: rfind(_CharT __c, size_type __pos = npos) const noexcept; 25082: # 2491 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_first_of(const basic_string& __str, size_type __pos = 0) const 25082: noexcept 25082: { return this->find_first_of(__str.data(), __pos, __str.size()); } 25082: # 2504 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, size_type> 25082: find_first_of(const _Tp& __svt, size_type __pos = 0) const 25082: noexcept(is_same<_Tp, __sv_type>::value) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->find_first_of(__sv.data(), __pos, __sv.size()); 25082: } 25082: # 2526 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 25082: noexcept; 25082: # 2540 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_first_of(const _CharT* __s, size_type __pos = 0) const 25082: noexcept 25082: { 25082: ; 25082: return this->find_first_of(__s, __pos, traits_type::length(__s)); 25082: } 25082: # 2560 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_first_of(_CharT __c, size_type __pos = 0) const noexcept 25082: { return this->find(__c, __pos); } 25082: # 2575 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_last_of(const basic_string& __str, size_type __pos = npos) const 25082: noexcept 25082: { return this->find_last_of(__str.data(), __pos, __str.size()); } 25082: # 2588 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, size_type> 25082: find_last_of(const _Tp& __svt, size_type __pos = npos) const 25082: noexcept(is_same<_Tp, __sv_type>::value) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->find_last_of(__sv.data(), __pos, __sv.size()); 25082: } 25082: # 2610 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 25082: noexcept; 25082: # 2624 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_last_of(const _CharT* __s, size_type __pos = npos) const 25082: noexcept 25082: { 25082: ; 25082: return this->find_last_of(__s, __pos, traits_type::length(__s)); 25082: } 25082: # 2644 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_last_of(_CharT __c, size_type __pos = npos) const noexcept 25082: { return this->rfind(__c, __pos); } 25082: # 2658 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_first_not_of(const basic_string& __str, size_type __pos = 0) const 25082: noexcept 25082: { return this->find_first_not_of(__str.data(), __pos, __str.size()); } 25082: # 2671 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, size_type> 25082: find_first_not_of(const _Tp& __svt, size_type __pos = 0) const 25082: noexcept(is_same<_Tp, __sv_type>::value) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->find_first_not_of(__sv.data(), __pos, __sv.size()); 25082: } 25082: # 2693 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_first_not_of(const _CharT* __s, size_type __pos, 25082: size_type __n) const noexcept; 25082: # 2707 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_first_not_of(const _CharT* __s, size_type __pos = 0) const 25082: noexcept 25082: { 25082: ; 25082: return this->find_first_not_of(__s, __pos, traits_type::length(__s)); 25082: } 25082: # 2725 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_first_not_of(_CharT __c, size_type __pos = 0) const 25082: noexcept; 25082: # 2740 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_last_not_of(const basic_string& __str, size_type __pos = npos) const 25082: noexcept 25082: { return this->find_last_not_of(__str.data(), __pos, __str.size()); } 25082: # 2753 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, size_type> 25082: find_last_not_of(const _Tp& __svt, size_type __pos = npos) const 25082: noexcept(is_same<_Tp, __sv_type>::value) 25082: { 25082: __sv_type __sv = __svt; 25082: return this->find_last_not_of(__sv.data(), __pos, __sv.size()); 25082: } 25082: # 2775 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_last_not_of(const _CharT* __s, size_type __pos, 25082: size_type __n) const noexcept; 25082: # 2789 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_last_not_of(const _CharT* __s, size_type __pos = npos) const 25082: noexcept 25082: { 25082: ; 25082: return this->find_last_not_of(__s, __pos, traits_type::length(__s)); 25082: } 25082: # 2807 "/usr/include/c++/8/bits/basic_string.h" 3 25082: size_type 25082: find_last_not_of(_CharT __c, size_type __pos = npos) const 25082: noexcept; 25082: # 2823 "/usr/include/c++/8/bits/basic_string.h" 3 25082: basic_string 25082: substr(size_type __pos = 0, size_type __n = npos) const 25082: { return basic_string(*this, 25082: _M_check(__pos, "basic_string::substr"), __n); } 25082: # 2842 "/usr/include/c++/8/bits/basic_string.h" 3 25082: int 25082: compare(const basic_string& __str) const 25082: { 25082: const size_type __size = this->size(); 25082: const size_type __osize = __str.size(); 25082: const size_type __len = std::min(__size, __osize); 25082: 25082: int __r = traits_type::compare(_M_data(), __str.data(), __len); 25082: if (!__r) 25082: __r = _S_compare(__size, __osize); 25082: return __r; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _If_sv<_Tp, int> 25082: compare(const _Tp& __svt) const 25082: noexcept(is_same<_Tp, __sv_type>::value) 25082: { 25082: __sv_type __sv = __svt; 25082: const size_type __size = this->size(); 25082: const size_type __osize = __sv.size(); 25082: const size_type __len = std::min(__size, __osize); 25082: 25082: int __r = traits_type::compare(_M_data(), __sv.data(), __len); 25082: if (!__r) 25082: __r = _S_compare(__size, __osize); 25082: return __r; 25082: } 25082: # 2885 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, int> 25082: compare(size_type __pos, size_type __n, const _Tp& __svt) const 25082: noexcept(is_same<_Tp, __sv_type>::value) 25082: { 25082: __sv_type __sv = __svt; 25082: return __sv_type(*this).substr(__pos, __n).compare(__sv); 25082: } 25082: # 2904 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: _If_sv<_Tp, int> 25082: compare(size_type __pos1, size_type __n1, const _Tp& __svt, 25082: size_type __pos2, size_type __n2 = npos) const 25082: noexcept(is_same<_Tp, __sv_type>::value) 25082: { 25082: __sv_type __sv = __svt; 25082: return __sv_type(*this) 25082: .substr(__pos1, __n1).compare(__sv.substr(__pos2, __n2)); 25082: } 25082: # 2935 "/usr/include/c++/8/bits/basic_string.h" 3 25082: int 25082: compare(size_type __pos, size_type __n, const basic_string& __str) const; 25082: # 2961 "/usr/include/c++/8/bits/basic_string.h" 3 25082: int 25082: compare(size_type __pos1, size_type __n1, const basic_string& __str, 25082: size_type __pos2, size_type __n2 = npos) const; 25082: # 2979 "/usr/include/c++/8/bits/basic_string.h" 3 25082: int 25082: compare(const _CharT* __s) const noexcept; 25082: # 3003 "/usr/include/c++/8/bits/basic_string.h" 3 25082: int 25082: compare(size_type __pos, size_type __n1, const _CharT* __s) const; 25082: # 3030 "/usr/include/c++/8/bits/basic_string.h" 3 25082: int 25082: compare(size_type __pos, size_type __n1, const _CharT* __s, 25082: size_type __n2) const; 25082: 25082: 25082: template friend class basic_stringbuf; 25082: }; 25082: } 25082: # 5890 "/usr/include/c++/8/bits/basic_string.h" 3 25082: namespace __cxx11 { 25082: template::value_type, 25082: typename _Allocator = allocator<_CharT>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: basic_string(_InputIterator, _InputIterator, _Allocator = _Allocator()) 25082: -> basic_string<_CharT, char_traits<_CharT>, _Allocator>; 25082: 25082: 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: basic_string(basic_string_view<_CharT, _Traits>, const _Allocator& = _Allocator()) 25082: -> basic_string<_CharT, _Traits, _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: basic_string(basic_string_view<_CharT, _Traits>, 25082: typename basic_string<_CharT, _Traits, _Allocator>::size_type, 25082: typename basic_string<_CharT, _Traits, _Allocator>::size_type, 25082: const _Allocator& = _Allocator()) 25082: -> basic_string<_CharT, _Traits, _Allocator>; 25082: } 25082: # 5925 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: basic_string<_CharT, _Traits, _Alloc> 25082: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: { 25082: basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 25082: __str.append(__rhs); 25082: return __str; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: basic_string<_CharT,_Traits,_Alloc> 25082: operator+(const _CharT* __lhs, 25082: const basic_string<_CharT,_Traits,_Alloc>& __rhs); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: basic_string<_CharT,_Traits,_Alloc> 25082: operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline basic_string<_CharT, _Traits, _Alloc> 25082: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const _CharT* __rhs) 25082: { 25082: basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 25082: __str.append(__rhs); 25082: return __str; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline basic_string<_CharT, _Traits, _Alloc> 25082: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) 25082: { 25082: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 25082: typedef typename __string_type::size_type __size_type; 25082: __string_type __str(__lhs); 25082: __str.append(__size_type(1), __rhs); 25082: return __str; 25082: } 25082: 25082: 25082: template 25082: inline basic_string<_CharT, _Traits, _Alloc> 25082: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: { return std::move(__lhs.append(__rhs)); } 25082: 25082: template 25082: inline basic_string<_CharT, _Traits, _Alloc> 25082: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 25082: { return std::move(__rhs.insert(0, __lhs)); } 25082: 25082: template 25082: inline basic_string<_CharT, _Traits, _Alloc> 25082: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 25082: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 25082: { 25082: const auto __size = __lhs.size() + __rhs.size(); 25082: const bool __cond = (__size > __lhs.capacity() 25082: && __size <= __rhs.capacity()); 25082: return __cond ? std::move(__rhs.insert(0, __lhs)) 25082: : std::move(__lhs.append(__rhs)); 25082: } 25082: 25082: template 25082: inline basic_string<_CharT, _Traits, _Alloc> 25082: operator+(const _CharT* __lhs, 25082: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 25082: { return std::move(__rhs.insert(0, __lhs)); } 25082: 25082: template 25082: inline basic_string<_CharT, _Traits, _Alloc> 25082: operator+(_CharT __lhs, 25082: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 25082: { return std::move(__rhs.insert(0, 1, __lhs)); } 25082: 25082: template 25082: inline basic_string<_CharT, _Traits, _Alloc> 25082: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 25082: const _CharT* __rhs) 25082: { return std::move(__lhs.append(__rhs)); } 25082: 25082: template 25082: inline basic_string<_CharT, _Traits, _Alloc> 25082: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 25082: _CharT __rhs) 25082: { return std::move(__lhs.append(1, __rhs)); } 25082: # 6046 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: inline bool 25082: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: noexcept 25082: { return __lhs.compare(__rhs) == 0; } 25082: 25082: template 25082: inline 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type 25082: operator==(const basic_string<_CharT>& __lhs, 25082: const basic_string<_CharT>& __rhs) noexcept 25082: { return (__lhs.size() == __rhs.size() 25082: && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(), 25082: __lhs.size())); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator==(const _CharT* __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: { return __rhs.compare(__lhs) == 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const _CharT* __rhs) 25082: { return __lhs.compare(__rhs) == 0; } 25082: # 6093 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: inline bool 25082: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: noexcept 25082: { return !(__lhs == __rhs); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator!=(const _CharT* __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: { return !(__lhs == __rhs); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const _CharT* __rhs) 25082: { return !(__lhs == __rhs); } 25082: # 6131 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: inline bool 25082: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: noexcept 25082: { return __lhs.compare(__rhs) < 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const _CharT* __rhs) 25082: { return __lhs.compare(__rhs) < 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator<(const _CharT* __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: { return __rhs.compare(__lhs) > 0; } 25082: # 6169 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: inline bool 25082: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: noexcept 25082: { return __lhs.compare(__rhs) > 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const _CharT* __rhs) 25082: { return __lhs.compare(__rhs) > 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator>(const _CharT* __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: { return __rhs.compare(__lhs) < 0; } 25082: # 6207 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: inline bool 25082: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: noexcept 25082: { return __lhs.compare(__rhs) <= 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const _CharT* __rhs) 25082: { return __lhs.compare(__rhs) <= 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator<=(const _CharT* __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: { return __rhs.compare(__lhs) >= 0; } 25082: # 6245 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: inline bool 25082: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: noexcept 25082: { return __lhs.compare(__rhs) >= 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: const _CharT* __rhs) 25082: { return __lhs.compare(__rhs) >= 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator>=(const _CharT* __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: { return __rhs.compare(__lhs) <= 0; } 25082: # 6283 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: inline void 25082: swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, 25082: basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: noexcept(noexcept(__lhs.swap(__rhs))) 25082: { __lhs.swap(__rhs); } 25082: # 6303 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __is, 25082: basic_string<_CharT, _Traits, _Alloc>& __str); 25082: 25082: template<> 25082: basic_istream& 25082: operator>>(basic_istream& __is, basic_string& __str); 25082: # 6321 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, 25082: const basic_string<_CharT, _Traits, _Alloc>& __str) 25082: { 25082: 25082: 25082: return __ostream_insert(__os, __str.data(), __str.size()); 25082: } 25082: # 6344 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: getline(basic_istream<_CharT, _Traits>& __is, 25082: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); 25082: # 6361 "/usr/include/c++/8/bits/basic_string.h" 3 25082: template 25082: inline basic_istream<_CharT, _Traits>& 25082: getline(basic_istream<_CharT, _Traits>& __is, 25082: basic_string<_CharT, _Traits, _Alloc>& __str) 25082: { return std::getline(__is, __str, __is.widen('\n')); } 25082: 25082: 25082: 25082: template 25082: inline basic_istream<_CharT, _Traits>& 25082: getline(basic_istream<_CharT, _Traits>&& __is, 25082: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 25082: { return std::getline(__is, __str, __delim); } 25082: 25082: 25082: template 25082: inline basic_istream<_CharT, _Traits>& 25082: getline(basic_istream<_CharT, _Traits>&& __is, 25082: basic_string<_CharT, _Traits, _Alloc>& __str) 25082: { return std::getline(__is, __str); } 25082: 25082: 25082: template<> 25082: basic_istream& 25082: getline(basic_istream& __in, basic_string& __str, 25082: char __delim); 25082: 25082: 25082: template<> 25082: basic_istream& 25082: getline(basic_istream& __in, basic_string& __str, 25082: wchar_t __delim); 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/ext/string_conversions.h" 1 3 25082: # 32 "/usr/include/c++/8/ext/string_conversions.h" 3 25082: 25082: # 33 "/usr/include/c++/8/ext/string_conversions.h" 3 25082: # 41 "/usr/include/c++/8/ext/string_conversions.h" 3 25082: # 1 "/usr/include/c++/8/cstdlib" 1 3 25082: # 39 "/usr/include/c++/8/cstdlib" 3 25082: 25082: # 40 "/usr/include/c++/8/cstdlib" 3 25082: # 75 "/usr/include/c++/8/cstdlib" 3 25082: # 1 "/usr/include/stdlib.h" 1 3 4 25082: # 25 "/usr/include/stdlib.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 25082: # 26 "/usr/include/stdlib.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 32 "/usr/include/stdlib.h" 2 3 4 25082: 25082: extern "C" { 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/waitflags.h" 1 3 4 25082: # 52 "/usr/include/aarch64-linux-gnu/bits/waitflags.h" 3 4 25082: typedef enum 25082: { 25082: P_ALL, 25082: P_PID, 25082: P_PGID 25082: } idtype_t; 25082: # 40 "/usr/include/stdlib.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/waitstatus.h" 1 3 4 25082: # 41 "/usr/include/stdlib.h" 2 3 4 25082: # 58 "/usr/include/stdlib.h" 3 4 25082: typedef struct 25082: { 25082: int quot; 25082: int rem; 25082: } div_t; 25082: 25082: 25082: 25082: typedef struct 25082: { 25082: long int quot; 25082: long int rem; 25082: } ldiv_t; 25082: 25082: 25082: 25082: 25082: 25082: __extension__ typedef struct 25082: { 25082: long long int quot; 25082: long long int rem; 25082: } lldiv_t; 25082: # 97 "/usr/include/stdlib.h" 3 4 25082: extern size_t __ctype_get_mb_cur_max (void) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern double atof (const char *__nptr) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: extern int atoi (const char *__nptr) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: extern long int atol (const char *__nptr) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: __extension__ extern long long int atoll (const char *__nptr) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern double strtod (const char *__restrict __nptr, 25082: char **__restrict __endptr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern float strtof (const char *__restrict __nptr, 25082: char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: extern long double strtold (const char *__restrict __nptr, 25082: char **__restrict __endptr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: # 140 "/usr/include/stdlib.h" 3 4 25082: extern _Float32 strtof32 (const char *__restrict __nptr, 25082: char **__restrict __endptr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern _Float64 strtof64 (const char *__restrict __nptr, 25082: char **__restrict __endptr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern _Float128 strtof128 (const char *__restrict __nptr, 25082: char **__restrict __endptr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern _Float32x strtof32x (const char *__restrict __nptr, 25082: char **__restrict __endptr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern _Float64x strtof64x (const char *__restrict __nptr, 25082: char **__restrict __endptr) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: # 176 "/usr/include/stdlib.h" 3 4 25082: extern long int strtol (const char *__restrict __nptr, 25082: char **__restrict __endptr, int __base) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: extern unsigned long int strtoul (const char *__restrict __nptr, 25082: char **__restrict __endptr, int __base) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: __extension__ 25082: extern long long int strtoq (const char *__restrict __nptr, 25082: char **__restrict __endptr, int __base) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: __extension__ 25082: extern unsigned long long int strtouq (const char *__restrict __nptr, 25082: char **__restrict __endptr, int __base) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: __extension__ 25082: extern long long int strtoll (const char *__restrict __nptr, 25082: char **__restrict __endptr, int __base) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: __extension__ 25082: extern unsigned long long int strtoull (const char *__restrict __nptr, 25082: char **__restrict __endptr, int __base) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: extern int strfromd (char *__dest, size_t __size, const char *__format, 25082: double __f) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: 25082: extern int strfromf (char *__dest, size_t __size, const char *__format, 25082: float __f) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: 25082: extern int strfroml (char *__dest, size_t __size, const char *__format, 25082: long double __f) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: # 232 "/usr/include/stdlib.h" 3 4 25082: extern int strfromf32 (char *__dest, size_t __size, const char * __format, 25082: _Float32 __f) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: 25082: 25082: 25082: extern int strfromf64 (char *__dest, size_t __size, const char * __format, 25082: _Float64 __f) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: 25082: 25082: 25082: extern int strfromf128 (char *__dest, size_t __size, const char * __format, 25082: _Float128 __f) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: 25082: 25082: 25082: extern int strfromf32x (char *__dest, size_t __size, const char * __format, 25082: _Float32x __f) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: 25082: 25082: 25082: extern int strfromf64x (char *__dest, size_t __size, const char * __format, 25082: _Float64x __f) 25082: throw () __attribute__ ((__nonnull__ (3))); 25082: # 274 "/usr/include/stdlib.h" 3 4 25082: extern long int strtol_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, int __base, 25082: locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))); 25082: 25082: extern unsigned long int strtoul_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, 25082: int __base, locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 4))); 25082: 25082: __extension__ 25082: extern long long int strtoll_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, int __base, 25082: locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 4))); 25082: 25082: __extension__ 25082: extern unsigned long long int strtoull_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, 25082: int __base, locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 4))); 25082: 25082: extern double strtod_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: extern float strtof_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: extern long double strtold_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, 25082: locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: # 316 "/usr/include/stdlib.h" 3 4 25082: extern _Float32 strtof32_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, 25082: locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: 25082: 25082: extern _Float64 strtof64_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, 25082: locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: 25082: 25082: extern _Float128 strtof128_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, 25082: locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: 25082: 25082: extern _Float32x strtof32x_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, 25082: locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: 25082: 25082: extern _Float64x strtof64x_l (const char *__restrict __nptr, 25082: char **__restrict __endptr, 25082: locale_t __loc) 25082: throw () __attribute__ ((__nonnull__ (1, 3))); 25082: # 360 "/usr/include/stdlib.h" 3 4 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: __attribute__ ((__leaf__)) atoi (const char *__nptr) throw () 25082: { 25082: return (int) strtol (__nptr, (char **) __null, 10); 25082: } 25082: extern __inline __attribute__ ((__gnu_inline__)) long int 25082: __attribute__ ((__leaf__)) atol (const char *__nptr) throw () 25082: { 25082: return strtol (__nptr, (char **) __null, 10); 25082: } 25082: 25082: 25082: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int 25082: __attribute__ ((__leaf__)) atoll (const char *__nptr) throw () 25082: { 25082: return strtoll (__nptr, (char **) __null, 10); 25082: } 25082: # 385 "/usr/include/stdlib.h" 3 4 25082: extern char *l64a (long int __n) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: extern long int a64l (const char *__s) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/sys/types.h" 1 3 4 25082: # 27 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 25082: extern "C" { 25082: 25082: 25082: 25082: 25082: 25082: typedef __u_char u_char; 25082: typedef __u_short u_short; 25082: typedef __u_int u_int; 25082: typedef __u_long u_long; 25082: typedef __quad_t quad_t; 25082: typedef __u_quad_t u_quad_t; 25082: typedef __fsid_t fsid_t; 25082: 25082: 25082: typedef __loff_t loff_t; 25082: 25082: 25082: 25082: 25082: typedef __ino_t ino_t; 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef __ino64_t ino64_t; 25082: 25082: 25082: 25082: 25082: typedef __dev_t dev_t; 25082: 25082: 25082: 25082: 25082: typedef __gid_t gid_t; 25082: 25082: 25082: 25082: 25082: typedef __mode_t mode_t; 25082: 25082: 25082: 25082: 25082: typedef __nlink_t nlink_t; 25082: 25082: 25082: 25082: 25082: typedef __uid_t uid_t; 25082: 25082: 25082: 25082: 25082: 25082: typedef __off_t off_t; 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef __off64_t off64_t; 25082: # 103 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 25082: typedef __id_t id_t; 25082: 25082: 25082: 25082: 25082: typedef __ssize_t ssize_t; 25082: 25082: 25082: 25082: 25082: 25082: typedef __daddr_t daddr_t; 25082: typedef __caddr_t caddr_t; 25082: 25082: 25082: 25082: 25082: 25082: typedef __key_t key_t; 25082: # 134 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 25082: typedef __useconds_t useconds_t; 25082: 25082: 25082: 25082: typedef __suseconds_t suseconds_t; 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 145 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 25082: 25082: 25082: 25082: typedef unsigned long int ulong; 25082: typedef unsigned short int ushort; 25082: typedef unsigned int uint; 25082: # 177 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 25082: typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); 25082: typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); 25082: typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); 25082: typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); 25082: 25082: typedef int register_t __attribute__ ((__mode__ (__word__))); 25082: # 196 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/sys/select.h" 1 3 4 25082: # 30 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/select.h" 1 3 4 25082: # 31 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__sigset_t.h" 1 3 4 25082: 25082: 25082: 25082: 25082: typedef struct 25082: { 25082: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; 25082: } __sigset_t; 25082: # 5 "/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h" 2 3 4 25082: 25082: 25082: typedef __sigset_t sigset_t; 25082: # 34 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 25082: # 49 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 25082: typedef long int __fd_mask; 25082: # 59 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 25082: typedef struct 25082: { 25082: 25082: 25082: 25082: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; 25082: 25082: 25082: 25082: 25082: 25082: } fd_set; 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef __fd_mask fd_mask; 25082: # 91 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 25082: extern "C" { 25082: # 101 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 25082: extern int select (int __nfds, fd_set *__restrict __readfds, 25082: fd_set *__restrict __writefds, 25082: fd_set *__restrict __exceptfds, 25082: struct timeval *__restrict __timeout); 25082: # 113 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 25082: extern int pselect (int __nfds, fd_set *__restrict __readfds, 25082: fd_set *__restrict __writefds, 25082: fd_set *__restrict __exceptfds, 25082: const struct timespec *__restrict __timeout, 25082: const __sigset_t *__restrict __sigmask); 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/select2.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/select2.h" 3 4 25082: extern long int __fdelt_chk (long int __d); 25082: extern long int __fdelt_warn (long int __d) 25082: __attribute__((__warning__ ("bit outside of fd_set selected"))); 25082: # 124 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 25082: 25082: 25082: } 25082: # 197 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: typedef __blksize_t blksize_t; 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef __blkcnt_t blkcnt_t; 25082: 25082: 25082: 25082: typedef __fsblkcnt_t fsblkcnt_t; 25082: 25082: 25082: 25082: typedef __fsfilcnt_t fsfilcnt_t; 25082: # 236 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 25082: typedef __blkcnt64_t blkcnt64_t; 25082: typedef __fsblkcnt64_t fsblkcnt64_t; 25082: typedef __fsfilcnt64_t fsfilcnt64_t; 25082: # 247 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 25082: } 25082: # 395 "/usr/include/stdlib.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int random (void) throw (); 25082: 25082: 25082: extern void srandom (unsigned int __seed) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern char *initstate (unsigned int __seed, char *__statebuf, 25082: size_t __statelen) throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct random_data 25082: { 25082: int32_t *fptr; 25082: int32_t *rptr; 25082: int32_t *state; 25082: int rand_type; 25082: int rand_deg; 25082: int rand_sep; 25082: int32_t *end_ptr; 25082: }; 25082: 25082: extern int random_r (struct random_data *__restrict __buf, 25082: int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: extern int srandom_r (unsigned int __seed, struct random_data *__buf) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, 25082: size_t __statelen, 25082: struct random_data *__restrict __buf) 25082: throw () __attribute__ ((__nonnull__ (2, 4))); 25082: 25082: extern int setstate_r (char *__restrict __statebuf, 25082: struct random_data *__restrict __buf) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: 25082: extern int rand (void) throw (); 25082: 25082: extern void srand (unsigned int __seed) throw (); 25082: 25082: 25082: 25082: extern int rand_r (unsigned int *__seed) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern double drand48 (void) throw (); 25082: extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern long int lrand48 (void) throw (); 25082: extern long int nrand48 (unsigned short int __xsubi[3]) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern long int mrand48 (void) throw (); 25082: extern long int jrand48 (unsigned short int __xsubi[3]) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern void srand48 (long int __seedval) throw (); 25082: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: struct drand48_data 25082: { 25082: unsigned short int __x[3]; 25082: unsigned short int __old_x[3]; 25082: unsigned short int __c; 25082: unsigned short int __init; 25082: __extension__ unsigned long long int __a; 25082: 25082: }; 25082: 25082: 25082: extern int drand48_r (struct drand48_data *__restrict __buffer, 25082: double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: extern int erand48_r (unsigned short int __xsubi[3], 25082: struct drand48_data *__restrict __buffer, 25082: double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int lrand48_r (struct drand48_data *__restrict __buffer, 25082: long int *__restrict __result) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: extern int nrand48_r (unsigned short int __xsubi[3], 25082: struct drand48_data *__restrict __buffer, 25082: long int *__restrict __result) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int mrand48_r (struct drand48_data *__restrict __buffer, 25082: long int *__restrict __result) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: extern int jrand48_r (unsigned short int __xsubi[3], 25082: struct drand48_data *__restrict __buffer, 25082: long int *__restrict __result) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: extern int seed48_r (unsigned short int __seed16v[3], 25082: struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: extern int lcong48_r (unsigned short int __param[7], 25082: struct drand48_data *__buffer) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); 25082: 25082: extern void *calloc (size_t __nmemb, size_t __size) 25082: throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern void *realloc (void *__ptr, size_t __size) 25082: throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 25082: throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern void free (void *__ptr) throw (); 25082: 25082: 25082: # 1 "/usr/include/alloca.h" 1 3 4 25082: # 24 "/usr/include/alloca.h" 3 4 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 25 "/usr/include/alloca.h" 2 3 4 25082: 25082: extern "C" { 25082: 25082: 25082: 25082: 25082: 25082: extern void *alloca (size_t __size) throw (); 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 567 "/usr/include/stdlib.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern void *aligned_alloc (size_t __alignment, size_t __size) 25082: throw () __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern void abort (void) throw () __attribute__ ((__noreturn__)); 25082: 25082: 25082: 25082: extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: extern "C++" int at_quick_exit (void (*__func) (void)) 25082: throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); 25082: # 607 "/usr/include/stdlib.h" 3 4 25082: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: extern void exit (int __status) throw () __attribute__ ((__noreturn__)); 25082: 25082: 25082: 25082: 25082: 25082: extern void quick_exit (int __status) throw () __attribute__ ((__noreturn__)); 25082: 25082: 25082: 25082: 25082: 25082: extern void _Exit (int __status) throw () __attribute__ ((__noreturn__)); 25082: 25082: 25082: 25082: 25082: extern char *getenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern char *secure_getenv (const char *__name) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: extern int setenv (const char *__name, const char *__value, int __replace) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: extern int unsetenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int clearenv (void) throw (); 25082: # 672 "/usr/include/stdlib.h" 3 4 25082: extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))); 25082: # 685 "/usr/include/stdlib.h" 3 4 25082: extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 695 "/usr/include/stdlib.h" 3 4 25082: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 707 "/usr/include/stdlib.h" 3 4 25082: extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 717 "/usr/include/stdlib.h" 3 4 25082: extern int mkstemps64 (char *__template, int __suffixlen) 25082: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 728 "/usr/include/stdlib.h" 3 4 25082: extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 739 "/usr/include/stdlib.h" 3 4 25082: extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 749 "/usr/include/stdlib.h" 3 4 25082: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 759 "/usr/include/stdlib.h" 3 4 25082: extern int mkostemps (char *__template, int __suffixlen, int __flags) 25082: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 771 "/usr/include/stdlib.h" 3 4 25082: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) 25082: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 781 "/usr/include/stdlib.h" 3 4 25082: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern char *canonicalize_file_name (const char *__name) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 797 "/usr/include/stdlib.h" 3 4 25082: extern char *realpath (const char *__restrict __name, 25082: char *__restrict __resolved) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef int (*__compar_fn_t) (const void *, const void *); 25082: 25082: 25082: typedef __compar_fn_t comparison_fn_t; 25082: 25082: 25082: 25082: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); 25082: 25082: 25082: 25082: 25082: extern void *bsearch (const void *__key, const void *__base, 25082: size_t __nmemb, size_t __size, __compar_fn_t __compar) 25082: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/stdlib-bsearch.h" 1 3 4 25082: # 19 "/usr/include/aarch64-linux-gnu/bits/stdlib-bsearch.h" 3 4 25082: extern __inline __attribute__ ((__gnu_inline__)) void * 25082: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, 25082: __compar_fn_t __compar) 25082: { 25082: size_t __l, __u, __idx; 25082: const void *__p; 25082: int __comparison; 25082: 25082: __l = 0; 25082: __u = __nmemb; 25082: while (__l < __u) 25082: { 25082: __idx = (__l + __u) / 2; 25082: __p = (void *) (((const char *) __base) + (__idx * __size)); 25082: __comparison = (*__compar) (__key, __p); 25082: if (__comparison < 0) 25082: __u = __idx; 25082: else if (__comparison > 0) 25082: __l = __idx + 1; 25082: else 25082: return (void *) __p; 25082: } 25082: 25082: return __null; 25082: } 25082: # 823 "/usr/include/stdlib.h" 2 3 4 25082: 25082: 25082: 25082: 25082: extern void qsort (void *__base, size_t __nmemb, size_t __size, 25082: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); 25082: 25082: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, 25082: __compar_d_fn_t __compar, void *__arg) 25082: __attribute__ ((__nonnull__ (1, 4))); 25082: 25082: 25082: 25082: 25082: extern int abs (int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 25082: extern long int labs (long int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: __extension__ extern long long int llabs (long long int __x) 25082: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern div_t div (int __numer, int __denom) 25082: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 25082: extern ldiv_t ldiv (long int __numer, long int __denom) 25082: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: __extension__ extern lldiv_t lldiv (long long int __numer, 25082: long long int __denom) 25082: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 25082: # 869 "/usr/include/stdlib.h" 3 4 25082: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, 25082: int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, 25082: int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern char *gcvt (double __value, int __ndigit, char *__buf) 25082: throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern char *qecvt (long double __value, int __ndigit, 25082: int *__restrict __decpt, int *__restrict __sign) 25082: throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 25082: extern char *qfcvt (long double __value, int __ndigit, 25082: int *__restrict __decpt, int *__restrict __sign) 25082: throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 25082: extern char *qgcvt (long double __value, int __ndigit, char *__buf) 25082: throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, 25082: int *__restrict __sign, char *__restrict __buf, 25082: size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); 25082: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, 25082: int *__restrict __sign, char *__restrict __buf, 25082: size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); 25082: 25082: extern int qecvt_r (long double __value, int __ndigit, 25082: int *__restrict __decpt, int *__restrict __sign, 25082: char *__restrict __buf, size_t __len) 25082: throw () __attribute__ ((__nonnull__ (3, 4, 5))); 25082: extern int qfcvt_r (long double __value, int __ndigit, 25082: int *__restrict __decpt, int *__restrict __sign, 25082: char *__restrict __buf, size_t __len) 25082: throw () __attribute__ ((__nonnull__ (3, 4, 5))); 25082: 25082: 25082: 25082: 25082: 25082: extern int mblen (const char *__s, size_t __n) throw (); 25082: 25082: 25082: extern int mbtowc (wchar_t *__restrict __pwc, 25082: const char *__restrict __s, size_t __n) throw (); 25082: 25082: 25082: extern int wctomb (char *__s, wchar_t __wchar) throw (); 25082: 25082: 25082: 25082: extern size_t mbstowcs (wchar_t *__restrict __pwcs, 25082: const char *__restrict __s, size_t __n) throw (); 25082: 25082: extern size_t wcstombs (char *__restrict __s, 25082: const wchar_t *__restrict __pwcs, size_t __n) 25082: throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int rpmatch (const char *__response) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 954 "/usr/include/stdlib.h" 3 4 25082: extern int getsubopt (char **__restrict __optionp, 25082: char *const *__restrict __tokens, 25082: char **__restrict __valuep) 25082: throw () __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int grantpt (int __fd) throw (); 25082: 25082: 25082: 25082: extern int unlockpt (int __fd) throw (); 25082: 25082: 25082: 25082: 25082: extern char *ptsname (int __fd) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: extern int getpt (void); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int getloadavg (double __loadavg[], int __nelem) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: # 1010 "/usr/include/stdlib.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" 3 4 25082: extern __inline __attribute__ ((__gnu_inline__)) double 25082: __attribute__ ((__leaf__)) atof (const char *__nptr) throw () 25082: { 25082: return strtod (__nptr, (char **) __null); 25082: } 25082: # 1011 "/usr/include/stdlib.h" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/stdlib.h" 1 3 4 25082: # 23 "/usr/include/aarch64-linux-gnu/bits/stdlib.h" 3 4 25082: extern char *__realpath_chk (const char *__restrict __name, 25082: char *__restrict __resolved, 25082: size_t __resolvedlen) throw () __attribute__ ((__warn_unused_result__)); 25082: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) throw () __asm__ ("" "realpath") 25082: 25082: __attribute__ ((__warn_unused_result__)); 25082: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) throw () __asm__ ("" "__realpath_chk") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) 25082: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 25082: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char *__restrict __resolved) throw () 25082: { 25082: if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1) 25082: { 25082: 25082: 25082: 25082: 25082: return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1)); 25082: } 25082: 25082: return __realpath_alias (__name, __resolved); 25082: } 25082: 25082: 25082: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, 25082: size_t __nreal) throw () __attribute__ ((__nonnull__ (2))); 25082: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ptsname_r") 25082: 25082: __attribute__ ((__nonnull__ (2))); 25082: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ptsname_r_chk") 25082: 25082: 25082: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) ptsname_r (int __fd, char *__buf, size_t __buflen) throw () 25082: { 25082: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__buflen)) 25082: return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 25082: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 25082: return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 25082: } 25082: return __ptsname_r_alias (__fd, __buf, __buflen); 25082: } 25082: 25082: 25082: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) 25082: throw () __attribute__ ((__warn_unused_result__)); 25082: extern int __wctomb_alias (char *__s, wchar_t __wchar) throw () __asm__ ("" "wctomb") 25082: __attribute__ ((__warn_unused_result__)); 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int 25082: __attribute__ ((__leaf__)) wctomb (char *__s, wchar_t __wchar) throw () 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) 25082: return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); 25082: return __wctomb_alias (__s, __wchar); 25082: } 25082: 25082: 25082: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, 25082: const char *__restrict __src, 25082: size_t __len, size_t __dstlen) throw (); 25082: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () __asm__ ("" "mbstowcs") 25082: 25082: 25082: ; 25082: extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__mbstowcs_chk") 25082: 25082: 25082: 25082: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 25082: __attribute__ ((__leaf__)) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () 25082: 25082: { 25082: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__len)) 25082: return __mbstowcs_chk (__dst, __src, __len, 25082: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 25082: 25082: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) 25082: return __mbstowcs_chk_warn (__dst, __src, __len, 25082: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 25082: } 25082: return __mbstowcs_alias (__dst, __src, __len); 25082: } 25082: 25082: 25082: extern size_t __wcstombs_chk (char *__restrict __dst, 25082: const wchar_t *__restrict __src, 25082: size_t __len, size_t __dstlen) throw (); 25082: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () __asm__ ("" "wcstombs") 25082: 25082: 25082: ; 25082: extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__wcstombs_chk") 25082: 25082: 25082: 25082: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 25082: __attribute__ ((__leaf__)) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () 25082: 25082: { 25082: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__len)) 25082: return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); 25082: if (__len > __builtin_object_size (__dst, 2 > 1)) 25082: return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); 25082: } 25082: return __wcstombs_alias (__dst, __src, __len); 25082: } 25082: # 1015 "/usr/include/stdlib.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 76 "/usr/include/c++/8/cstdlib" 2 3 25082: 25082: # 1 "/usr/include/c++/8/bits/std_abs.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/std_abs.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/std_abs.h" 3 25082: # 46 "/usr/include/c++/8/bits/std_abs.h" 3 25082: extern "C++" 25082: { 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: using ::abs; 25082: 25082: 25082: inline long 25082: abs(long __i) { return __builtin_labs(__i); } 25082: 25082: 25082: 25082: inline long long 25082: abs(long long __x) { return __builtin_llabs (__x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline constexpr double 25082: abs(double __x) 25082: { return __builtin_fabs(__x); } 25082: 25082: inline constexpr float 25082: abs(float __x) 25082: { return __builtin_fabsf(__x); } 25082: 25082: inline constexpr long double 25082: abs(long double __x) 25082: { return __builtin_fabsl(__x); } 25082: # 106 "/usr/include/c++/8/bits/std_abs.h" 3 25082: 25082: } 25082: } 25082: # 78 "/usr/include/c++/8/cstdlib" 2 3 25082: # 121 "/usr/include/c++/8/cstdlib" 3 25082: extern "C++" 25082: { 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: using ::div_t; 25082: using ::ldiv_t; 25082: 25082: using ::abort; 25082: 25082: using ::aligned_alloc; 25082: 25082: using ::atexit; 25082: 25082: 25082: using ::at_quick_exit; 25082: 25082: 25082: using ::atof; 25082: using ::atoi; 25082: using ::atol; 25082: using ::bsearch; 25082: using ::calloc; 25082: using ::div; 25082: using ::exit; 25082: using ::free; 25082: using ::getenv; 25082: using ::labs; 25082: using ::ldiv; 25082: using ::malloc; 25082: 25082: using ::mblen; 25082: using ::mbstowcs; 25082: using ::mbtowc; 25082: 25082: using ::qsort; 25082: 25082: 25082: using ::quick_exit; 25082: 25082: 25082: using ::rand; 25082: using ::realloc; 25082: using ::srand; 25082: using ::strtod; 25082: using ::strtol; 25082: using ::strtoul; 25082: using ::system; 25082: 25082: using ::wcstombs; 25082: using ::wctomb; 25082: 25082: 25082: 25082: inline ldiv_t 25082: div(long __i, long __j) { return ldiv(__i, __j); } 25082: 25082: 25082: 25082: 25082: } 25082: # 195 "/usr/include/c++/8/cstdlib" 3 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: using ::lldiv_t; 25082: 25082: 25082: 25082: 25082: 25082: using ::_Exit; 25082: 25082: 25082: 25082: using ::llabs; 25082: 25082: inline lldiv_t 25082: div(long long __n, long long __d) 25082: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } 25082: 25082: using ::lldiv; 25082: # 227 "/usr/include/c++/8/cstdlib" 3 25082: using ::atoll; 25082: using ::strtoll; 25082: using ::strtoull; 25082: 25082: using ::strtof; 25082: using ::strtold; 25082: 25082: 25082: } 25082: 25082: namespace std 25082: { 25082: 25082: using ::__gnu_cxx::lldiv_t; 25082: 25082: using ::__gnu_cxx::_Exit; 25082: 25082: using ::__gnu_cxx::llabs; 25082: using ::__gnu_cxx::div; 25082: using ::__gnu_cxx::lldiv; 25082: 25082: using ::__gnu_cxx::atoll; 25082: using ::__gnu_cxx::strtof; 25082: using ::__gnu_cxx::strtoll; 25082: using ::__gnu_cxx::strtoull; 25082: using ::__gnu_cxx::strtold; 25082: } 25082: 25082: 25082: 25082: } 25082: # 42 "/usr/include/c++/8/ext/string_conversions.h" 2 3 25082: # 1 "/usr/include/c++/8/cwchar" 1 3 25082: # 39 "/usr/include/c++/8/cwchar" 3 25082: 25082: # 40 "/usr/include/c++/8/cwchar" 3 25082: # 43 "/usr/include/c++/8/ext/string_conversions.h" 2 3 25082: # 1 "/usr/include/c++/8/cstdio" 1 3 25082: # 39 "/usr/include/c++/8/cstdio" 3 25082: 25082: # 40 "/usr/include/c++/8/cstdio" 3 25082: 25082: 25082: # 1 "/usr/include/stdio.h" 1 3 4 25082: # 27 "/usr/include/stdio.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 25082: # 28 "/usr/include/stdio.h" 2 3 4 25082: 25082: extern "C" { 25082: 25082: 25082: 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 34 "/usr/include/stdio.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stdarg.h" 1 3 4 25082: # 37 "/usr/include/stdio.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 1 3 4 25082: # 10 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 3 4 25082: typedef struct _G_fpos_t 25082: { 25082: __off_t __pos; 25082: __mbstate_t __state; 25082: } __fpos_t; 25082: # 40 "/usr/include/stdio.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 1 3 4 25082: # 10 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 3 4 25082: typedef struct _G_fpos64_t 25082: { 25082: __off64_t __pos; 25082: __mbstate_t __state; 25082: } __fpos64_t; 25082: # 41 "/usr/include/stdio.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 1 3 4 25082: # 35 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 3 4 25082: struct _IO_FILE; 25082: struct _IO_marker; 25082: struct _IO_codecvt; 25082: struct _IO_wide_data; 25082: 25082: 25082: 25082: 25082: typedef void _IO_lock_t; 25082: 25082: 25082: 25082: 25082: 25082: struct _IO_FILE 25082: { 25082: int _flags; 25082: 25082: 25082: char *_IO_read_ptr; 25082: char *_IO_read_end; 25082: char *_IO_read_base; 25082: char *_IO_write_base; 25082: char *_IO_write_ptr; 25082: char *_IO_write_end; 25082: char *_IO_buf_base; 25082: char *_IO_buf_end; 25082: 25082: 25082: char *_IO_save_base; 25082: char *_IO_backup_base; 25082: char *_IO_save_end; 25082: 25082: struct _IO_marker *_markers; 25082: 25082: struct _IO_FILE *_chain; 25082: 25082: int _fileno; 25082: int _flags2; 25082: __off_t _old_offset; 25082: 25082: 25082: unsigned short _cur_column; 25082: signed char _vtable_offset; 25082: char _shortbuf[1]; 25082: 25082: _IO_lock_t *_lock; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: __off64_t _offset; 25082: 25082: struct _IO_codecvt *_codecvt; 25082: struct _IO_wide_data *_wide_data; 25082: struct _IO_FILE *_freeres_list; 25082: void *_freeres_buf; 25082: size_t __pad5; 25082: int _mode; 25082: 25082: char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; 25082: }; 25082: # 44 "/usr/include/stdio.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h" 1 3 4 25082: # 27 "/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h" 3 4 25082: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, 25082: size_t __nbytes); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, 25082: size_t __nbytes); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); 25082: 25082: 25082: typedef int cookie_close_function_t (void *__cookie); 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef struct _IO_cookie_io_functions_t 25082: { 25082: cookie_read_function_t *read; 25082: cookie_write_function_t *write; 25082: cookie_seek_function_t *seek; 25082: cookie_close_function_t *close; 25082: } cookie_io_functions_t; 25082: # 47 "/usr/include/stdio.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: typedef __gnuc_va_list va_list; 25082: # 84 "/usr/include/stdio.h" 3 4 25082: typedef __fpos_t fpos_t; 25082: 25082: 25082: 25082: 25082: typedef __fpos64_t fpos64_t; 25082: # 133 "/usr/include/stdio.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/stdio_lim.h" 1 3 4 25082: # 134 "/usr/include/stdio.h" 2 3 4 25082: 25082: 25082: 25082: extern FILE *stdin; 25082: extern FILE *stdout; 25082: extern FILE *stderr; 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int remove (const char *__filename) throw (); 25082: 25082: extern int rename (const char *__old, const char *__new) throw (); 25082: 25082: 25082: 25082: extern int renameat (int __oldfd, const char *__old, int __newfd, 25082: const char *__new) throw (); 25082: # 164 "/usr/include/stdio.h" 3 4 25082: extern int renameat2 (int __oldfd, const char *__old, int __newfd, 25082: const char *__new, unsigned int __flags) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern FILE *tmpfile (void) __attribute__ ((__warn_unused_result__)); 25082: # 183 "/usr/include/stdio.h" 3 4 25082: extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern char *tmpnam (char *__s) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern char *tmpnam_r (char *__s) throw () __attribute__ ((__warn_unused_result__)); 25082: # 204 "/usr/include/stdio.h" 3 4 25082: extern char *tempnam (const char *__dir, const char *__pfx) 25082: throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int fclose (FILE *__stream); 25082: 25082: 25082: 25082: 25082: extern int fflush (FILE *__stream); 25082: # 227 "/usr/include/stdio.h" 3 4 25082: extern int fflush_unlocked (FILE *__stream); 25082: # 237 "/usr/include/stdio.h" 3 4 25082: extern int fcloseall (void); 25082: # 246 "/usr/include/stdio.h" 3 4 25082: extern FILE *fopen (const char *__restrict __filename, 25082: const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern FILE *freopen (const char *__restrict __filename, 25082: const char *__restrict __modes, 25082: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: # 270 "/usr/include/stdio.h" 3 4 25082: extern FILE *fopen64 (const char *__restrict __filename, 25082: const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); 25082: extern FILE *freopen64 (const char *__restrict __filename, 25082: const char *__restrict __modes, 25082: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern FILE *fdopen (int __fd, const char *__modes) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern FILE *fopencookie (void *__restrict __magic_cookie, 25082: const char *__restrict __modes, 25082: cookie_io_functions_t __io_funcs) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) 25082: throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw (); 25082: 25082: 25082: 25082: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, 25082: int __modes, size_t __n) throw (); 25082: 25082: 25082: 25082: 25082: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, 25082: size_t __size) throw (); 25082: 25082: 25082: extern void setlinebuf (FILE *__stream) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int fprintf (FILE *__restrict __stream, 25082: const char *__restrict __format, ...); 25082: 25082: 25082: 25082: 25082: extern int printf (const char *__restrict __format, ...); 25082: 25082: extern int sprintf (char *__restrict __s, 25082: const char *__restrict __format, ...) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, 25082: __gnuc_va_list __arg); 25082: 25082: 25082: 25082: 25082: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); 25082: 25082: extern int vsprintf (char *__restrict __s, const char *__restrict __format, 25082: __gnuc_va_list __arg) throw (); 25082: 25082: 25082: 25082: extern int snprintf (char *__restrict __s, size_t __maxlen, 25082: const char *__restrict __format, ...) 25082: throw () __attribute__ ((__format__ (__printf__, 3, 4))); 25082: 25082: extern int vsnprintf (char *__restrict __s, size_t __maxlen, 25082: const char *__restrict __format, __gnuc_va_list __arg) 25082: throw () __attribute__ ((__format__ (__printf__, 3, 0))); 25082: 25082: 25082: 25082: 25082: 25082: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, 25082: __gnuc_va_list __arg) 25082: throw () __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 25082: extern int __asprintf (char **__restrict __ptr, 25082: const char *__restrict __fmt, ...) 25082: throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 25082: extern int asprintf (char **__restrict __ptr, 25082: const char *__restrict __fmt, ...) 25082: throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int vdprintf (int __fd, const char *__restrict __fmt, 25082: __gnuc_va_list __arg) 25082: __attribute__ ((__format__ (__printf__, 2, 0))); 25082: extern int dprintf (int __fd, const char *__restrict __fmt, ...) 25082: __attribute__ ((__format__ (__printf__, 2, 3))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int fscanf (FILE *__restrict __stream, 25082: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 25082: 25082: extern int sscanf (const char *__restrict __s, 25082: const char *__restrict __format, ...) throw (); 25082: # 434 "/usr/include/stdio.h" 3 4 25082: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, 25082: __gnuc_va_list __arg) 25082: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) 25082: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: extern int vsscanf (const char *__restrict __s, 25082: const char *__restrict __format, __gnuc_va_list __arg) 25082: throw () __attribute__ ((__format__ (__scanf__, 2, 0))); 25082: # 491 "/usr/include/stdio.h" 3 4 25082: extern int fgetc (FILE *__stream); 25082: extern int getc (FILE *__stream); 25082: 25082: 25082: 25082: 25082: 25082: extern int getchar (void); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int getc_unlocked (FILE *__stream); 25082: extern int getchar_unlocked (void); 25082: # 516 "/usr/include/stdio.h" 3 4 25082: extern int fgetc_unlocked (FILE *__stream); 25082: # 527 "/usr/include/stdio.h" 3 4 25082: extern int fputc (int __c, FILE *__stream); 25082: extern int putc (int __c, FILE *__stream); 25082: 25082: 25082: 25082: 25082: 25082: extern int putchar (int __c); 25082: # 543 "/usr/include/stdio.h" 3 4 25082: extern int fputc_unlocked (int __c, FILE *__stream); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int putc_unlocked (int __c, FILE *__stream); 25082: extern int putchar_unlocked (int __c); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int getw (FILE *__stream); 25082: 25082: 25082: extern int putw (int __w, FILE *__stream); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 25082: __attribute__ ((__warn_unused_result__)); 25082: # 593 "/usr/include/stdio.h" 3 4 25082: extern char *fgets_unlocked (char *__restrict __s, int __n, 25082: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: # 609 "/usr/include/stdio.h" 3 4 25082: extern __ssize_t __getdelim (char **__restrict __lineptr, 25082: size_t *__restrict __n, int __delimiter, 25082: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: extern __ssize_t getdelim (char **__restrict __lineptr, 25082: size_t *__restrict __n, int __delimiter, 25082: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern __ssize_t getline (char **__restrict __lineptr, 25082: size_t *__restrict __n, 25082: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int fputs (const char *__restrict __s, FILE *__restrict __stream); 25082: 25082: 25082: 25082: 25082: 25082: extern int puts (const char *__s); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int ungetc (int __c, FILE *__stream); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern size_t fread (void *__restrict __ptr, size_t __size, 25082: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern size_t fwrite (const void *__restrict __ptr, size_t __size, 25082: size_t __n, FILE *__restrict __s); 25082: # 668 "/usr/include/stdio.h" 3 4 25082: extern int fputs_unlocked (const char *__restrict __s, 25082: FILE *__restrict __stream); 25082: # 679 "/usr/include/stdio.h" 3 4 25082: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, 25082: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, 25082: size_t __n, FILE *__restrict __stream); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int fseek (FILE *__stream, long int __off, int __whence); 25082: 25082: 25082: 25082: 25082: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern void rewind (FILE *__stream); 25082: # 713 "/usr/include/stdio.h" 3 4 25082: extern int fseeko (FILE *__stream, __off_t __off, int __whence); 25082: 25082: 25082: 25082: 25082: extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__)); 25082: # 737 "/usr/include/stdio.h" 3 4 25082: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); 25082: 25082: 25082: 25082: 25082: extern int fsetpos (FILE *__stream, const fpos_t *__pos); 25082: # 756 "/usr/include/stdio.h" 3 4 25082: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); 25082: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)); 25082: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); 25082: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); 25082: 25082: 25082: 25082: extern void clearerr (FILE *__stream) throw (); 25082: 25082: extern int feof (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: extern int ferror (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern void clearerr_unlocked (FILE *__stream) throw (); 25082: extern int feof_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 25082: extern int ferror_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern void perror (const char *__s); 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 1 3 4 25082: # 26 "/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 3 4 25082: extern int sys_nerr; 25082: extern const char *const sys_errlist[]; 25082: 25082: 25082: extern int _sys_nerr; 25082: extern const char *const _sys_errlist[]; 25082: # 788 "/usr/include/stdio.h" 2 3 4 25082: 25082: 25082: 25082: 25082: extern int fileno (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int fileno_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 25082: # 806 "/usr/include/stdio.h" 3 4 25082: extern FILE *popen (const char *__command, const char *__modes) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern int pclose (FILE *__stream); 25082: 25082: 25082: 25082: 25082: 25082: extern char *ctermid (char *__s) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern char *cuserid (char *__s); 25082: 25082: 25082: 25082: 25082: struct obstack; 25082: 25082: 25082: extern int obstack_printf (struct obstack *__restrict __obstack, 25082: const char *__restrict __format, ...) 25082: throw () __attribute__ ((__format__ (__printf__, 2, 3))); 25082: extern int obstack_vprintf (struct obstack *__restrict __obstack, 25082: const char *__restrict __format, 25082: __gnuc_va_list __args) 25082: throw () __attribute__ ((__format__ (__printf__, 2, 0))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern void flockfile (FILE *__stream) throw (); 25082: 25082: 25082: 25082: extern int ftrylockfile (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: extern void funlockfile (FILE *__stream) throw (); 25082: # 864 "/usr/include/stdio.h" 3 4 25082: extern int __uflow (FILE *); 25082: extern int __overflow (FILE *, int); 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/stdio.h" 1 3 4 25082: # 46 "/usr/include/aarch64-linux-gnu/bits/stdio.h" 3 4 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: getchar (void) 25082: { 25082: return getc (stdin); 25082: } 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: fgetc_unlocked (FILE *__fp) 25082: { 25082: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: getc_unlocked (FILE *__fp) 25082: { 25082: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 25082: } 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: getchar_unlocked (void) 25082: { 25082: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); 25082: } 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: putchar (int __c) 25082: { 25082: return putc (__c, stdout); 25082: } 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: fputc_unlocked (int __c, FILE *__stream) 25082: { 25082: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: putc_unlocked (int __c, FILE *__stream) 25082: { 25082: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 25082: } 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: putchar_unlocked (int __c) 25082: { 25082: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t 25082: getline (char **__lineptr, size_t *__n, FILE *__stream) 25082: { 25082: return __getdelim (__lineptr, __n, '\n', __stream); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) throw () 25082: { 25082: return (((__stream)->_flags & 0x0010) != 0); 25082: } 25082: 25082: 25082: extern __inline __attribute__ ((__gnu_inline__)) int 25082: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) throw () 25082: { 25082: return (((__stream)->_flags & 0x0020) != 0); 25082: } 25082: # 871 "/usr/include/stdio.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" 1 3 4 25082: # 26 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" 3 4 25082: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, 25082: const char *__restrict __format, ...) throw (); 25082: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, 25082: const char *__restrict __format, 25082: __gnuc_va_list __ap) throw (); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) throw () 25082: { 25082: return __builtin___sprintf_chk (__s, 2 - 1, 25082: __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) vsprintf (char *__restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 25082: 25082: { 25082: return __builtin___vsprintf_chk (__s, 2 - 1, 25082: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 25082: } 25082: 25082: 25082: 25082: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, 25082: size_t __slen, const char *__restrict __format, 25082: ...) throw (); 25082: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, 25082: size_t __slen, const char *__restrict __format, 25082: __gnuc_va_list __ap) throw (); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) throw () 25082: 25082: { 25082: return __builtin___snprintf_chk (__s, __n, 2 - 1, 25082: __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) vsnprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 25082: 25082: { 25082: return __builtin___vsnprintf_chk (__s, __n, 2 - 1, 25082: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, 25082: const char *__restrict __format, ...); 25082: extern int __printf_chk (int __flag, const char *__restrict __format, ...); 25082: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, 25082: const char *__restrict __format, __gnuc_va_list __ap); 25082: extern int __vprintf_chk (int __flag, const char *__restrict __format, 25082: __gnuc_va_list __ap); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) 25082: { 25082: return __fprintf_chk (__stream, 2 - 1, __fmt, 25082: __builtin_va_arg_pack ()); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: printf (const char *__restrict __fmt, ...) 25082: { 25082: return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: vprintf (const char *__restrict __fmt, __gnuc_va_list __ap) 25082: { 25082: 25082: return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); 25082: 25082: 25082: 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: vfprintf (FILE *__restrict __stream, 25082: const char *__restrict __fmt, __gnuc_va_list __ap) 25082: { 25082: return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); 25082: } 25082: 25082: 25082: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, 25082: ...) __attribute__ ((__format__ (__printf__, 3, 4))); 25082: extern int __vdprintf_chk (int __fd, int __flag, 25082: const char *__restrict __fmt, __gnuc_va_list __arg) 25082: __attribute__ ((__format__ (__printf__, 3, 0))); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: dprintf (int __fd, const char *__restrict __fmt, ...) 25082: { 25082: return __dprintf_chk (__fd, 2 - 1, __fmt, 25082: __builtin_va_arg_pack ()); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) 25082: { 25082: return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); 25082: } 25082: 25082: 25082: 25082: 25082: extern int __asprintf_chk (char **__restrict __ptr, int __flag, 25082: const char *__restrict __fmt, ...) 25082: throw () __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); 25082: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, 25082: const char *__restrict __fmt, __gnuc_va_list __arg) 25082: throw () __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); 25082: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, 25082: int __flag, const char *__restrict __format, 25082: ...) 25082: throw () __attribute__ ((__format__ (__printf__, 3, 4))); 25082: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, 25082: int __flag, 25082: const char *__restrict __format, 25082: __gnuc_va_list __args) 25082: throw () __attribute__ ((__format__ (__printf__, 3, 0))); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw () 25082: { 25082: return __asprintf_chk (__ptr, 2 - 1, __fmt, 25082: __builtin_va_arg_pack ()); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw () 25082: 25082: { 25082: return __asprintf_chk (__ptr, 2 - 1, __fmt, 25082: __builtin_va_arg_pack ()); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) throw () 25082: 25082: { 25082: return __obstack_printf_chk (__obstack, 2 - 1, __fmt, 25082: __builtin_va_arg_pack ()); 25082: } 25082: # 209 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" 3 4 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 25082: 25082: { 25082: return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 25082: 25082: { 25082: return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, 25082: __ap); 25082: } 25082: # 243 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" 3 4 25082: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, 25082: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") 25082: 25082: __attribute__ ((__warn_unused_result__)); 25082: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 25082: fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 25082: { 25082: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__n) || __n <= 0) 25082: return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 25082: 25082: if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) 25082: return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 25082: } 25082: return __fgets_alias (__s, __n, __stream); 25082: } 25082: 25082: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, 25082: size_t __size, size_t __n, 25082: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)); 25082: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") 25082: 25082: 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 25082: fread (void *__restrict __ptr, size_t __size, size_t __n, 25082: FILE *__restrict __stream) 25082: { 25082: if (__builtin_object_size (__ptr, 0) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__size) 25082: || !__builtin_constant_p (__n) 25082: || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) 25082: return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); 25082: 25082: if (__size * __n > __builtin_object_size (__ptr, 0)) 25082: return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); 25082: } 25082: return __fread_alias (__ptr, __size, __n, __stream); 25082: } 25082: 25082: 25082: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, 25082: int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") 25082: 25082: __attribute__ ((__warn_unused_result__)); 25082: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 25082: fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) 25082: { 25082: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__n) || __n <= 0) 25082: return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 25082: 25082: if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) 25082: return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 25082: } 25082: return __fgets_unlocked_alias (__s, __n, __stream); 25082: } 25082: 25082: 25082: 25082: 25082: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, 25082: size_t __size, size_t __n, 25082: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 25082: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)); 25082: 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") 25082: 25082: 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 25082: fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, 25082: FILE *__restrict __stream) 25082: { 25082: if (__builtin_object_size (__ptr, 0) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__size) 25082: || !__builtin_constant_p (__n) 25082: || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) 25082: return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, 25082: __stream); 25082: 25082: if (__size * __n > __builtin_object_size (__ptr, 0)) 25082: return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, 25082: __stream); 25082: } 25082: 25082: 25082: if (__builtin_constant_p (__size) 25082: && __builtin_constant_p (__n) 25082: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) 25082: && __size * __n <= 8) 25082: { 25082: size_t __cnt = __size * __n; 25082: char *__cptr = (char *) __ptr; 25082: if (__cnt == 0) 25082: return 0; 25082: 25082: for (; __cnt > 0; --__cnt) 25082: { 25082: int __c = getc_unlocked (__stream); 25082: if (__c == (-1)) 25082: break; 25082: *__cptr++ = __c; 25082: } 25082: return (__cptr - (char *) __ptr) / __size; 25082: } 25082: 25082: return __fread_unlocked_alias (__ptr, __size, __n, __stream); 25082: } 25082: # 874 "/usr/include/stdio.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 43 "/usr/include/c++/8/cstdio" 2 3 25082: # 96 "/usr/include/c++/8/cstdio" 3 25082: namespace std 25082: { 25082: using ::FILE; 25082: using ::fpos_t; 25082: 25082: using ::clearerr; 25082: using ::fclose; 25082: using ::feof; 25082: using ::ferror; 25082: using ::fflush; 25082: using ::fgetc; 25082: using ::fgetpos; 25082: using ::fgets; 25082: using ::fopen; 25082: using ::fprintf; 25082: using ::fputc; 25082: using ::fputs; 25082: using ::fread; 25082: using ::freopen; 25082: using ::fscanf; 25082: using ::fseek; 25082: using ::fsetpos; 25082: using ::ftell; 25082: using ::fwrite; 25082: using ::getc; 25082: using ::getchar; 25082: 25082: 25082: 25082: 25082: using ::perror; 25082: using ::printf; 25082: using ::putc; 25082: using ::putchar; 25082: using ::puts; 25082: using ::remove; 25082: using ::rename; 25082: using ::rewind; 25082: using ::scanf; 25082: using ::setbuf; 25082: using ::setvbuf; 25082: using ::sprintf; 25082: using ::sscanf; 25082: using ::tmpfile; 25082: 25082: using ::tmpnam; 25082: 25082: using ::ungetc; 25082: using ::vfprintf; 25082: using ::vprintf; 25082: using ::vsprintf; 25082: } 25082: # 157 "/usr/include/c++/8/cstdio" 3 25082: namespace __gnu_cxx 25082: { 25082: # 175 "/usr/include/c++/8/cstdio" 3 25082: using ::snprintf; 25082: using ::vfscanf; 25082: using ::vscanf; 25082: using ::vsnprintf; 25082: using ::vsscanf; 25082: 25082: } 25082: 25082: namespace std 25082: { 25082: using ::__gnu_cxx::snprintf; 25082: using ::__gnu_cxx::vfscanf; 25082: using ::__gnu_cxx::vscanf; 25082: using ::__gnu_cxx::vsnprintf; 25082: using ::__gnu_cxx::vsscanf; 25082: } 25082: # 44 "/usr/include/c++/8/ext/string_conversions.h" 2 3 25082: # 1 "/usr/include/c++/8/cerrno" 1 3 25082: # 39 "/usr/include/c++/8/cerrno" 3 25082: 25082: # 40 "/usr/include/c++/8/cerrno" 3 25082: 25082: 25082: # 1 "/usr/include/errno.h" 1 3 4 25082: # 28 "/usr/include/errno.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/errno.h" 1 3 4 25082: # 26 "/usr/include/aarch64-linux-gnu/bits/errno.h" 3 4 25082: # 1 "/usr/include/linux/errno.h" 1 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/asm/errno.h" 1 3 4 25082: # 1 "/usr/include/asm-generic/errno.h" 1 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 25082: # 6 "/usr/include/asm-generic/errno.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/asm/errno.h" 2 3 4 25082: # 1 "/usr/include/linux/errno.h" 2 3 4 25082: # 27 "/usr/include/aarch64-linux-gnu/bits/errno.h" 2 3 4 25082: # 29 "/usr/include/errno.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: extern "C" { 25082: 25082: 25082: extern int *__errno_location (void) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern char *program_invocation_name; 25082: extern char *program_invocation_short_name; 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/types/error_t.h" 1 3 4 25082: # 22 "/usr/include/aarch64-linux-gnu/bits/types/error_t.h" 3 4 25082: typedef int error_t; 25082: # 49 "/usr/include/errno.h" 2 3 4 25082: 25082: 25082: 25082: } 25082: # 43 "/usr/include/c++/8/cerrno" 2 3 25082: # 45 "/usr/include/c++/8/ext/string_conversions.h" 2 3 25082: 25082: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: _Ret 25082: __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...), 25082: const char* __name, const _CharT* __str, std::size_t* __idx, 25082: _Base... __base) 25082: { 25082: _Ret __ret; 25082: 25082: _CharT* __endptr; 25082: 25082: struct _Save_errno { 25082: _Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; } 25082: ~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; } 25082: int _M_errno; 25082: } const __save_errno; 25082: 25082: struct _Range_chk { 25082: static bool 25082: _S_chk(_TRet, std::false_type) { return false; } 25082: 25082: static bool 25082: _S_chk(_TRet __val, std::true_type) 25082: { 25082: return __val < _TRet(__numeric_traits::__min) 25082: || __val > _TRet(__numeric_traits::__max); 25082: } 25082: }; 25082: 25082: const _TRet __tmp = __convf(__str, &__endptr, __base...); 25082: 25082: if (__endptr == __str) 25082: std::__throw_invalid_argument(__name); 25082: else if ((*__errno_location ()) == 34 25082: || _Range_chk::_S_chk(__tmp, std::is_same<_Ret, int>{})) 25082: std::__throw_out_of_range(__name); 25082: else 25082: __ret = __tmp; 25082: 25082: if (__idx) 25082: *__idx = __endptr - __str; 25082: 25082: return __ret; 25082: } 25082: 25082: 25082: template 25082: _String 25082: __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*, 25082: __builtin_va_list), std::size_t __n, 25082: const _CharT* __fmt, ...) 25082: { 25082: 25082: 25082: _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 25082: * __n)); 25082: 25082: __builtin_va_list __args; 25082: __builtin_va_start(__args, __fmt); 25082: 25082: const int __len = __convf(__s, __n, __fmt, __args); 25082: 25082: __builtin_va_end(__args); 25082: 25082: return _String(__s, __s + __len); 25082: } 25082: 25082: 25082: } 25082: # 6401 "/usr/include/c++/8/bits/basic_string.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: namespace __cxx11 { 25082: 25082: 25082: 25082: inline int 25082: stoi(const string& __str, size_t* __idx = 0, int __base = 10) 25082: { return __gnu_cxx::__stoa(&std::strtol, "stoi", __str.c_str(), 25082: __idx, __base); } 25082: 25082: inline long 25082: stol(const string& __str, size_t* __idx = 0, int __base = 10) 25082: { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(), 25082: __idx, __base); } 25082: 25082: inline unsigned long 25082: stoul(const string& __str, size_t* __idx = 0, int __base = 10) 25082: { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(), 25082: __idx, __base); } 25082: 25082: inline long long 25082: stoll(const string& __str, size_t* __idx = 0, int __base = 10) 25082: { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(), 25082: __idx, __base); } 25082: 25082: inline unsigned long long 25082: stoull(const string& __str, size_t* __idx = 0, int __base = 10) 25082: { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(), 25082: __idx, __base); } 25082: 25082: 25082: inline float 25082: stof(const string& __str, size_t* __idx = 0) 25082: { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); } 25082: 25082: inline double 25082: stod(const string& __str, size_t* __idx = 0) 25082: { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); } 25082: 25082: inline long double 25082: stold(const string& __str, size_t* __idx = 0) 25082: { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline string 25082: to_string(int __val) 25082: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(int), 25082: "%d", __val); } 25082: 25082: inline string 25082: to_string(unsigned __val) 25082: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 25082: 4 * sizeof(unsigned), 25082: "%u", __val); } 25082: 25082: inline string 25082: to_string(long __val) 25082: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 4 * sizeof(long), 25082: "%ld", __val); } 25082: 25082: inline string 25082: to_string(unsigned long __val) 25082: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 25082: 4 * sizeof(unsigned long), 25082: "%lu", __val); } 25082: 25082: inline string 25082: to_string(long long __val) 25082: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 25082: 4 * sizeof(long long), 25082: "%lld", __val); } 25082: 25082: inline string 25082: to_string(unsigned long long __val) 25082: { return __gnu_cxx::__to_xstring(&std::vsnprintf, 25082: 4 * sizeof(unsigned long long), 25082: "%llu", __val); } 25082: 25082: inline string 25082: to_string(float __val) 25082: { 25082: const int __n = 25082: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 25082: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 25082: "%f", __val); 25082: } 25082: 25082: inline string 25082: to_string(double __val) 25082: { 25082: const int __n = 25082: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 25082: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 25082: "%f", __val); 25082: } 25082: 25082: inline string 25082: to_string(long double __val) 25082: { 25082: const int __n = 25082: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 25082: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 25082: "%Lf", __val); 25082: } 25082: 25082: 25082: 25082: inline int 25082: stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) 25082: { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), 25082: __idx, __base); } 25082: 25082: inline long 25082: stol(const wstring& __str, size_t* __idx = 0, int __base = 10) 25082: { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(), 25082: __idx, __base); } 25082: 25082: inline unsigned long 25082: stoul(const wstring& __str, size_t* __idx = 0, int __base = 10) 25082: { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(), 25082: __idx, __base); } 25082: 25082: inline long long 25082: stoll(const wstring& __str, size_t* __idx = 0, int __base = 10) 25082: { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(), 25082: __idx, __base); } 25082: 25082: inline unsigned long long 25082: stoull(const wstring& __str, size_t* __idx = 0, int __base = 10) 25082: { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(), 25082: __idx, __base); } 25082: 25082: 25082: inline float 25082: stof(const wstring& __str, size_t* __idx = 0) 25082: { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); } 25082: 25082: inline double 25082: stod(const wstring& __str, size_t* __idx = 0) 25082: { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); } 25082: 25082: inline long double 25082: stold(const wstring& __str, size_t* __idx = 0) 25082: { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } 25082: 25082: 25082: 25082: inline wstring 25082: to_wstring(int __val) 25082: { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(int), 25082: L"%d", __val); } 25082: 25082: inline wstring 25082: to_wstring(unsigned __val) 25082: { return __gnu_cxx::__to_xstring(&std::vswprintf, 25082: 4 * sizeof(unsigned), 25082: L"%u", __val); } 25082: 25082: inline wstring 25082: to_wstring(long __val) 25082: { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(long), 25082: L"%ld", __val); } 25082: 25082: inline wstring 25082: to_wstring(unsigned long __val) 25082: { return __gnu_cxx::__to_xstring(&std::vswprintf, 25082: 4 * sizeof(unsigned long), 25082: L"%lu", __val); } 25082: 25082: inline wstring 25082: to_wstring(long long __val) 25082: { return __gnu_cxx::__to_xstring(&std::vswprintf, 25082: 4 * sizeof(long long), 25082: L"%lld", __val); } 25082: 25082: inline wstring 25082: to_wstring(unsigned long long __val) 25082: { return __gnu_cxx::__to_xstring(&std::vswprintf, 25082: 4 * sizeof(unsigned long long), 25082: L"%llu", __val); } 25082: 25082: inline wstring 25082: to_wstring(float __val) 25082: { 25082: const int __n = 25082: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 25082: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, 25082: L"%f", __val); 25082: } 25082: 25082: inline wstring 25082: to_wstring(double __val) 25082: { 25082: const int __n = 25082: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 25082: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, 25082: L"%f", __val); 25082: } 25082: 25082: inline wstring 25082: to_wstring(long double __val) 25082: { 25082: const int __n = 25082: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 25082: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, 25082: L"%Lf", __val); 25082: } 25082: 25082: 25082: 25082: } 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: size_t 25082: operator()(const string& __s) const noexcept 25082: { return std::_Hash_impl::hash(__s.data(), __s.length()); } 25082: }; 25082: 25082: template<> 25082: struct __is_fast_hash> : std::false_type 25082: { }; 25082: 25082: 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: size_t 25082: operator()(const wstring& __s) const noexcept 25082: { return std::_Hash_impl::hash(__s.data(), 25082: __s.length() * sizeof(wchar_t)); } 25082: }; 25082: 25082: template<> 25082: struct __is_fast_hash> : std::false_type 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: size_t 25082: operator()(const u16string& __s) const noexcept 25082: { return std::_Hash_impl::hash(__s.data(), 25082: __s.length() * sizeof(char16_t)); } 25082: }; 25082: 25082: template<> 25082: struct __is_fast_hash> : std::false_type 25082: { }; 25082: 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: size_t 25082: operator()(const u32string& __s) const noexcept 25082: { return std::_Hash_impl::hash(__s.data(), 25082: __s.length() * sizeof(char32_t)); } 25082: }; 25082: 25082: template<> 25082: struct __is_fast_hash> : std::false_type 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline namespace literals 25082: { 25082: inline namespace string_literals 25082: { 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wliteral-suffix" 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: inline basic_string 25082: operator""s(const char* __str, size_t __len) 25082: { return basic_string{__str, __len}; } 25082: 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: inline basic_string 25082: operator""s(const wchar_t* __str, size_t __len) 25082: { return basic_string{__str, __len}; } 25082: 25082: 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: inline basic_string 25082: operator""s(const char16_t* __str, size_t __len) 25082: { return basic_string{__str, __len}; } 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: inline basic_string 25082: operator""s(const char32_t* __str, size_t __len) 25082: { return basic_string{__str, __len}; } 25082: 25082: 25082: #pragma GCC diagnostic pop 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: # 53 "/usr/include/c++/8/string" 2 3 25082: # 1 "/usr/include/c++/8/bits/basic_string.tcc" 1 3 25082: # 42 "/usr/include/c++/8/bits/basic_string.tcc" 3 25082: 25082: # 43 "/usr/include/c++/8/bits/basic_string.tcc" 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: template 25082: const typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>::npos; 25082: 25082: template 25082: void 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: swap(basic_string& __s) noexcept 25082: { 25082: if (this == &__s) 25082: return; 25082: 25082: _Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator()); 25082: 25082: if (_M_is_local()) 25082: if (__s._M_is_local()) 25082: { 25082: if (length() && __s.length()) 25082: { 25082: _CharT __tmp_data[_S_local_capacity + 1]; 25082: traits_type::copy(__tmp_data, __s._M_local_buf, 25082: _S_local_capacity + 1); 25082: traits_type::copy(__s._M_local_buf, _M_local_buf, 25082: _S_local_capacity + 1); 25082: traits_type::copy(_M_local_buf, __tmp_data, 25082: _S_local_capacity + 1); 25082: } 25082: else if (__s.length()) 25082: { 25082: traits_type::copy(_M_local_buf, __s._M_local_buf, 25082: _S_local_capacity + 1); 25082: _M_length(__s.length()); 25082: __s._M_set_length(0); 25082: return; 25082: } 25082: else if (length()) 25082: { 25082: traits_type::copy(__s._M_local_buf, _M_local_buf, 25082: _S_local_capacity + 1); 25082: __s._M_length(length()); 25082: _M_set_length(0); 25082: return; 25082: } 25082: } 25082: else 25082: { 25082: const size_type __tmp_capacity = __s._M_allocated_capacity; 25082: traits_type::copy(__s._M_local_buf, _M_local_buf, 25082: _S_local_capacity + 1); 25082: _M_data(__s._M_data()); 25082: __s._M_data(__s._M_local_buf); 25082: _M_capacity(__tmp_capacity); 25082: } 25082: else 25082: { 25082: const size_type __tmp_capacity = _M_allocated_capacity; 25082: if (__s._M_is_local()) 25082: { 25082: traits_type::copy(_M_local_buf, __s._M_local_buf, 25082: _S_local_capacity + 1); 25082: __s._M_data(_M_data()); 25082: _M_data(_M_local_buf); 25082: } 25082: else 25082: { 25082: pointer __tmp_ptr = _M_data(); 25082: _M_data(__s._M_data()); 25082: __s._M_data(__tmp_ptr); 25082: _M_capacity(__s._M_allocated_capacity); 25082: } 25082: __s._M_capacity(__tmp_capacity); 25082: } 25082: 25082: const size_type __tmp_length = length(); 25082: _M_length(__s.length()); 25082: __s._M_length(__tmp_length); 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::pointer 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_create(size_type& __capacity, size_type __old_capacity) 25082: { 25082: 25082: 25082: if (__capacity > max_size()) 25082: std::__throw_length_error(("basic_string::_M_create")); 25082: 25082: 25082: 25082: 25082: if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) 25082: { 25082: __capacity = 2 * __old_capacity; 25082: 25082: if (__capacity > max_size()) 25082: __capacity = max_size(); 25082: } 25082: 25082: 25082: 25082: return _Alloc_traits::allocate(_M_get_allocator(), __capacity + 1); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: template 25082: void 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_construct(_InIterator __beg, _InIterator __end, 25082: std::input_iterator_tag) 25082: { 25082: size_type __len = 0; 25082: size_type __capacity = size_type(_S_local_capacity); 25082: 25082: while (__beg != __end && __len < __capacity) 25082: { 25082: _M_data()[__len++] = *__beg; 25082: ++__beg; 25082: } 25082: 25082: try 25082: { 25082: while (__beg != __end) 25082: { 25082: if (__len == __capacity) 25082: { 25082: 25082: __capacity = __len + 1; 25082: pointer __another = _M_create(__capacity, __len); 25082: this->_S_copy(__another, _M_data(), __len); 25082: _M_dispose(); 25082: _M_data(__another); 25082: _M_capacity(__capacity); 25082: } 25082: _M_data()[__len++] = *__beg; 25082: ++__beg; 25082: } 25082: } 25082: catch(...) 25082: { 25082: _M_dispose(); 25082: throw; 25082: } 25082: 25082: _M_set_length(__len); 25082: } 25082: 25082: template 25082: template 25082: void 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_construct(_InIterator __beg, _InIterator __end, 25082: std::forward_iterator_tag) 25082: { 25082: 25082: if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end) 25082: std::__throw_logic_error(("basic_string::" "_M_construct null not valid") 25082: ); 25082: 25082: size_type __dnew = static_cast(std::distance(__beg, __end)); 25082: 25082: if (__dnew > size_type(_S_local_capacity)) 25082: { 25082: _M_data(_M_create(__dnew, size_type(0))); 25082: _M_capacity(__dnew); 25082: } 25082: 25082: 25082: try 25082: { this->_S_copy_chars(_M_data(), __beg, __end); } 25082: catch(...) 25082: { 25082: _M_dispose(); 25082: throw; 25082: } 25082: 25082: _M_set_length(__dnew); 25082: } 25082: 25082: template 25082: void 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_construct(size_type __n, _CharT __c) 25082: { 25082: if (__n > size_type(_S_local_capacity)) 25082: { 25082: _M_data(_M_create(__n, size_type(0))); 25082: _M_capacity(__n); 25082: } 25082: 25082: if (__n) 25082: this->_S_assign(_M_data(), __n, __c); 25082: 25082: _M_set_length(__n); 25082: } 25082: 25082: template 25082: void 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_assign(const basic_string& __str) 25082: { 25082: if (this != &__str) 25082: { 25082: const size_type __rsize = __str.length(); 25082: const size_type __capacity = capacity(); 25082: 25082: if (__rsize > __capacity) 25082: { 25082: size_type __new_capacity = __rsize; 25082: pointer __tmp = _M_create(__new_capacity, __capacity); 25082: _M_dispose(); 25082: _M_data(__tmp); 25082: _M_capacity(__new_capacity); 25082: } 25082: 25082: if (__rsize) 25082: this->_S_copy(_M_data(), __str._M_data(), __rsize); 25082: 25082: _M_set_length(__rsize); 25082: } 25082: } 25082: 25082: template 25082: void 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: reserve(size_type __res) 25082: { 25082: 25082: if (__res < length()) 25082: __res = length(); 25082: 25082: const size_type __capacity = capacity(); 25082: if (__res != __capacity) 25082: { 25082: if (__res > __capacity 25082: || __res > size_type(_S_local_capacity)) 25082: { 25082: pointer __tmp = _M_create(__res, __capacity); 25082: this->_S_copy(__tmp, _M_data(), length() + 1); 25082: _M_dispose(); 25082: _M_data(__tmp); 25082: _M_capacity(__res); 25082: } 25082: else if (!_M_is_local()) 25082: { 25082: this->_S_copy(_M_local_data(), _M_data(), length() + 1); 25082: _M_destroy(__capacity); 25082: _M_data(_M_local_data()); 25082: } 25082: } 25082: } 25082: 25082: template 25082: void 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 25082: size_type __len2) 25082: { 25082: const size_type __how_much = length() - __pos - __len1; 25082: 25082: size_type __new_capacity = length() + __len2 - __len1; 25082: pointer __r = _M_create(__new_capacity, capacity()); 25082: 25082: if (__pos) 25082: this->_S_copy(__r, _M_data(), __pos); 25082: if (__s && __len2) 25082: this->_S_copy(__r + __pos, __s, __len2); 25082: if (__how_much) 25082: this->_S_copy(__r + __pos + __len2, 25082: _M_data() + __pos + __len1, __how_much); 25082: 25082: _M_dispose(); 25082: _M_data(__r); 25082: _M_capacity(__new_capacity); 25082: } 25082: 25082: template 25082: void 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_erase(size_type __pos, size_type __n) 25082: { 25082: const size_type __how_much = length() - __pos - __n; 25082: 25082: if (__how_much && __n) 25082: this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); 25082: 25082: _M_set_length(length() - __n); 25082: } 25082: 25082: template 25082: void 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: resize(size_type __n, _CharT __c) 25082: { 25082: const size_type __size = this->size(); 25082: if (__size < __n) 25082: this->append(__n - __size, __c); 25082: else if (__n < __size) 25082: this->_M_set_length(__n); 25082: } 25082: 25082: template 25082: basic_string<_CharT, _Traits, _Alloc>& 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_append(const _CharT* __s, size_type __n) 25082: { 25082: const size_type __len = __n + this->size(); 25082: 25082: if (__len <= this->capacity()) 25082: { 25082: if (__n) 25082: this->_S_copy(this->_M_data() + this->size(), __s, __n); 25082: } 25082: else 25082: this->_M_mutate(this->size(), size_type(0), __s, __n); 25082: 25082: this->_M_set_length(__len); 25082: return *this; 25082: } 25082: 25082: template 25082: template 25082: basic_string<_CharT, _Traits, _Alloc>& 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 25082: _InputIterator __k1, _InputIterator __k2, 25082: std::__false_type) 25082: { 25082: const basic_string __s(__k1, __k2); 25082: const size_type __n1 = __i2 - __i1; 25082: return _M_replace(__i1 - begin(), __n1, __s._M_data(), 25082: __s.size()); 25082: } 25082: 25082: template 25082: basic_string<_CharT, _Traits, _Alloc>& 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 25082: _CharT __c) 25082: { 25082: _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); 25082: 25082: const size_type __old_size = this->size(); 25082: const size_type __new_size = __old_size + __n2 - __n1; 25082: 25082: if (__new_size <= this->capacity()) 25082: { 25082: pointer __p = this->_M_data() + __pos1; 25082: 25082: const size_type __how_much = __old_size - __pos1 - __n1; 25082: if (__how_much && __n1 != __n2) 25082: this->_S_move(__p + __n2, __p + __n1, __how_much); 25082: } 25082: else 25082: this->_M_mutate(__pos1, __n1, 0, __n2); 25082: 25082: if (__n2) 25082: this->_S_assign(this->_M_data() + __pos1, __n2, __c); 25082: 25082: this->_M_set_length(__new_size); 25082: return *this; 25082: } 25082: 25082: template 25082: basic_string<_CharT, _Traits, _Alloc>& 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 25082: const size_type __len2) 25082: { 25082: _M_check_length(__len1, __len2, "basic_string::_M_replace"); 25082: 25082: const size_type __old_size = this->size(); 25082: const size_type __new_size = __old_size + __len2 - __len1; 25082: 25082: if (__new_size <= this->capacity()) 25082: { 25082: pointer __p = this->_M_data() + __pos; 25082: 25082: const size_type __how_much = __old_size - __pos - __len1; 25082: if (_M_disjunct(__s)) 25082: { 25082: if (__how_much && __len1 != __len2) 25082: this->_S_move(__p + __len2, __p + __len1, __how_much); 25082: if (__len2) 25082: this->_S_copy(__p, __s, __len2); 25082: } 25082: else 25082: { 25082: 25082: if (__len2 && __len2 <= __len1) 25082: this->_S_move(__p, __s, __len2); 25082: if (__how_much && __len1 != __len2) 25082: this->_S_move(__p + __len2, __p + __len1, __how_much); 25082: if (__len2 > __len1) 25082: { 25082: if (__s + __len2 <= __p + __len1) 25082: this->_S_move(__p, __s, __len2); 25082: else if (__s >= __p + __len1) 25082: this->_S_copy(__p, __s + __len2 - __len1, __len2); 25082: else 25082: { 25082: const size_type __nleft = (__p + __len1) - __s; 25082: this->_S_move(__p, __s, __nleft); 25082: this->_S_copy(__p + __nleft, __p + __len2, 25082: __len2 - __nleft); 25082: } 25082: } 25082: } 25082: } 25082: else 25082: this->_M_mutate(__pos, __len1, __s, __len2); 25082: 25082: this->_M_set_length(__new_size); 25082: return *this; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: copy(_CharT* __s, size_type __n, size_type __pos) const 25082: { 25082: _M_check(__pos, "basic_string::copy"); 25082: __n = _M_limit(__pos, __n); 25082: ; 25082: if (__n) 25082: _S_copy(__s, _M_data() + __pos, __n); 25082: 25082: return __n; 25082: } 25082: # 1155 "/usr/include/c++/8/bits/basic_string.tcc" 3 25082: template 25082: basic_string<_CharT, _Traits, _Alloc> 25082: operator+(const _CharT* __lhs, 25082: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: { 25082: ; 25082: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 25082: typedef typename __string_type::size_type __size_type; 25082: const __size_type __len = _Traits::length(__lhs); 25082: __string_type __str; 25082: __str.reserve(__len + __rhs.size()); 25082: __str.append(__lhs, __len); 25082: __str.append(__rhs); 25082: return __str; 25082: } 25082: 25082: template 25082: basic_string<_CharT, _Traits, _Alloc> 25082: operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) 25082: { 25082: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 25082: typedef typename __string_type::size_type __size_type; 25082: __string_type __str; 25082: const __size_type __len = __rhs.size(); 25082: __str.reserve(__len + 1); 25082: __str.append(__size_type(1), __lhs); 25082: __str.append(__rhs); 25082: return __str; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: find(const _CharT* __s, size_type __pos, size_type __n) const 25082: noexcept 25082: { 25082: ; 25082: const size_type __size = this->size(); 25082: 25082: if (__n == 0) 25082: return __pos <= __size ? __pos : npos; 25082: if (__pos >= __size) 25082: return npos; 25082: 25082: const _CharT __elem0 = __s[0]; 25082: const _CharT* const __data = data(); 25082: const _CharT* __first = __data + __pos; 25082: const _CharT* const __last = __data + __size; 25082: size_type __len = __size - __pos; 25082: 25082: while (__len >= __n) 25082: { 25082: 25082: __first = traits_type::find(__first, __len - __n + 1, __elem0); 25082: if (!__first) 25082: return npos; 25082: 25082: 25082: 25082: if (traits_type::compare(__first, __s, __n) == 0) 25082: return __first - __data; 25082: __len = __last - ++__first; 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: find(_CharT __c, size_type __pos) const noexcept 25082: { 25082: size_type __ret = npos; 25082: const size_type __size = this->size(); 25082: if (__pos < __size) 25082: { 25082: const _CharT* __data = _M_data(); 25082: const size_type __n = __size - __pos; 25082: const _CharT* __p = traits_type::find(__data + __pos, __n, __c); 25082: if (__p) 25082: __ret = __p - __data; 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: rfind(const _CharT* __s, size_type __pos, size_type __n) const 25082: noexcept 25082: { 25082: ; 25082: const size_type __size = this->size(); 25082: if (__n <= __size) 25082: { 25082: __pos = std::min(size_type(__size - __n), __pos); 25082: const _CharT* __data = _M_data(); 25082: do 25082: { 25082: if (traits_type::compare(__data + __pos, __s, __n) == 0) 25082: return __pos; 25082: } 25082: while (__pos-- > 0); 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: rfind(_CharT __c, size_type __pos) const noexcept 25082: { 25082: size_type __size = this->size(); 25082: if (__size) 25082: { 25082: if (--__size > __pos) 25082: __size = __pos; 25082: for (++__size; __size-- > 0; ) 25082: if (traits_type::eq(_M_data()[__size], __c)) 25082: return __size; 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 25082: noexcept 25082: { 25082: ; 25082: for (; __n && __pos < this->size(); ++__pos) 25082: { 25082: const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); 25082: if (__p) 25082: return __pos; 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 25082: noexcept 25082: { 25082: ; 25082: size_type __size = this->size(); 25082: if (__size && __n) 25082: { 25082: if (--__size > __pos) 25082: __size = __pos; 25082: do 25082: { 25082: if (traits_type::find(__s, __n, _M_data()[__size])) 25082: return __size; 25082: } 25082: while (__size-- != 0); 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const 25082: noexcept 25082: { 25082: ; 25082: for (; __pos < this->size(); ++__pos) 25082: if (!traits_type::find(__s, __n, _M_data()[__pos])) 25082: return __pos; 25082: return npos; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: find_first_not_of(_CharT __c, size_type __pos) const noexcept 25082: { 25082: for (; __pos < this->size(); ++__pos) 25082: if (!traits_type::eq(_M_data()[__pos], __c)) 25082: return __pos; 25082: return npos; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const 25082: noexcept 25082: { 25082: ; 25082: size_type __size = this->size(); 25082: if (__size) 25082: { 25082: if (--__size > __pos) 25082: __size = __pos; 25082: do 25082: { 25082: if (!traits_type::find(__s, __n, _M_data()[__size])) 25082: return __size; 25082: } 25082: while (__size--); 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: typename basic_string<_CharT, _Traits, _Alloc>::size_type 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: find_last_not_of(_CharT __c, size_type __pos) const noexcept 25082: { 25082: size_type __size = this->size(); 25082: if (__size) 25082: { 25082: if (--__size > __pos) 25082: __size = __pos; 25082: do 25082: { 25082: if (!traits_type::eq(_M_data()[__size], __c)) 25082: return __size; 25082: } 25082: while (__size--); 25082: } 25082: return npos; 25082: } 25082: 25082: template 25082: int 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: compare(size_type __pos, size_type __n, const basic_string& __str) const 25082: { 25082: _M_check(__pos, "basic_string::compare"); 25082: __n = _M_limit(__pos, __n); 25082: const size_type __osize = __str.size(); 25082: const size_type __len = std::min(__n, __osize); 25082: int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); 25082: if (!__r) 25082: __r = _S_compare(__n, __osize); 25082: return __r; 25082: } 25082: 25082: template 25082: int 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: compare(size_type __pos1, size_type __n1, const basic_string& __str, 25082: size_type __pos2, size_type __n2) const 25082: { 25082: _M_check(__pos1, "basic_string::compare"); 25082: __str._M_check(__pos2, "basic_string::compare"); 25082: __n1 = _M_limit(__pos1, __n1); 25082: __n2 = __str._M_limit(__pos2, __n2); 25082: const size_type __len = std::min(__n1, __n2); 25082: int __r = traits_type::compare(_M_data() + __pos1, 25082: __str.data() + __pos2, __len); 25082: if (!__r) 25082: __r = _S_compare(__n1, __n2); 25082: return __r; 25082: } 25082: 25082: template 25082: int 25082: basic_string<_CharT, _Traits, _Alloc>:: 25082: compare(const _CharT* __s) const noexcept 25082: { 25082: ; 25082: const size_type __size = this->size(); 25082: const size_type __osize = traits_type::length(__s); 25082: const size_type __len = std::min(__size, __osize); 25082: int __r = traits_type::compare(_M_data(), __s, __len); 25082: if (!__r) 25082: __r = _S_compare(__size, __osize); 25082: return __r; 25082: } 25082: 25082: template 25082: int 25082: basic_string <_CharT, _Traits, _Alloc>:: 25082: compare(size_type __pos, size_type __n1, const _CharT* __s) const 25082: { 25082: ; 25082: _M_check(__pos, "basic_string::compare"); 25082: __n1 = _M_limit(__pos, __n1); 25082: const size_type __osize = traits_type::length(__s); 25082: const size_type __len = std::min(__n1, __osize); 25082: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 25082: if (!__r) 25082: __r = _S_compare(__n1, __osize); 25082: return __r; 25082: } 25082: 25082: template 25082: int 25082: basic_string <_CharT, _Traits, _Alloc>:: 25082: compare(size_type __pos, size_type __n1, const _CharT* __s, 25082: size_type __n2) const 25082: { 25082: ; 25082: _M_check(__pos, "basic_string::compare"); 25082: __n1 = _M_limit(__pos, __n1); 25082: const size_type __len = std::min(__n1, __n2); 25082: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 25082: if (!__r) 25082: __r = _S_compare(__n1, __n2); 25082: return __r; 25082: } 25082: 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __in, 25082: basic_string<_CharT, _Traits, _Alloc>& __str) 25082: { 25082: typedef basic_istream<_CharT, _Traits> __istream_type; 25082: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 25082: typedef typename __istream_type::ios_base __ios_base; 25082: typedef typename __istream_type::int_type __int_type; 25082: typedef typename __string_type::size_type __size_type; 25082: typedef ctype<_CharT> __ctype_type; 25082: typedef typename __ctype_type::ctype_base __ctype_base; 25082: 25082: __size_type __extracted = 0; 25082: typename __ios_base::iostate __err = __ios_base::goodbit; 25082: typename __istream_type::sentry __cerb(__in, false); 25082: if (__cerb) 25082: { 25082: try 25082: { 25082: 25082: __str.erase(); 25082: _CharT __buf[128]; 25082: __size_type __len = 0; 25082: const streamsize __w = __in.width(); 25082: const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) 25082: : __str.max_size(); 25082: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 25082: const __int_type __eof = _Traits::eof(); 25082: __int_type __c = __in.rdbuf()->sgetc(); 25082: 25082: while (__extracted < __n 25082: && !_Traits::eq_int_type(__c, __eof) 25082: && !__ct.is(__ctype_base::space, 25082: _Traits::to_char_type(__c))) 25082: { 25082: if (__len == sizeof(__buf) / sizeof(_CharT)) 25082: { 25082: __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); 25082: __len = 0; 25082: } 25082: __buf[__len++] = _Traits::to_char_type(__c); 25082: ++__extracted; 25082: __c = __in.rdbuf()->snextc(); 25082: } 25082: __str.append(__buf, __len); 25082: 25082: if (_Traits::eq_int_type(__c, __eof)) 25082: __err |= __ios_base::eofbit; 25082: __in.width(0); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __in._M_setstate(__ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { 25082: 25082: 25082: 25082: __in._M_setstate(__ios_base::badbit); 25082: } 25082: } 25082: 25082: if (!__extracted) 25082: __err |= __ios_base::failbit; 25082: if (__err) 25082: __in.setstate(__err); 25082: return __in; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: getline(basic_istream<_CharT, _Traits>& __in, 25082: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 25082: { 25082: typedef basic_istream<_CharT, _Traits> __istream_type; 25082: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 25082: typedef typename __istream_type::ios_base __ios_base; 25082: typedef typename __istream_type::int_type __int_type; 25082: typedef typename __string_type::size_type __size_type; 25082: 25082: __size_type __extracted = 0; 25082: const __size_type __n = __str.max_size(); 25082: typename __ios_base::iostate __err = __ios_base::goodbit; 25082: typename __istream_type::sentry __cerb(__in, true); 25082: if (__cerb) 25082: { 25082: try 25082: { 25082: __str.erase(); 25082: const __int_type __idelim = _Traits::to_int_type(__delim); 25082: const __int_type __eof = _Traits::eof(); 25082: __int_type __c = __in.rdbuf()->sgetc(); 25082: 25082: while (__extracted < __n 25082: && !_Traits::eq_int_type(__c, __eof) 25082: && !_Traits::eq_int_type(__c, __idelim)) 25082: { 25082: __str += _Traits::to_char_type(__c); 25082: ++__extracted; 25082: __c = __in.rdbuf()->snextc(); 25082: } 25082: 25082: if (_Traits::eq_int_type(__c, __eof)) 25082: __err |= __ios_base::eofbit; 25082: else if (_Traits::eq_int_type(__c, __idelim)) 25082: { 25082: ++__extracted; 25082: __in.rdbuf()->sbumpc(); 25082: } 25082: else 25082: __err |= __ios_base::failbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __in._M_setstate(__ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { 25082: 25082: 25082: 25082: __in._M_setstate(__ios_base::badbit); 25082: } 25082: } 25082: if (!__extracted) 25082: __err |= __ios_base::failbit; 25082: if (__err) 25082: __in.setstate(__err); 25082: return __in; 25082: } 25082: # 1615 "/usr/include/c++/8/bits/basic_string.tcc" 3 25082: extern template 25082: basic_istream& 25082: operator>>(basic_istream&, string&); 25082: extern template 25082: basic_ostream& 25082: operator<<(basic_ostream&, const string&); 25082: extern template 25082: basic_istream& 25082: getline(basic_istream&, string&, char); 25082: extern template 25082: basic_istream& 25082: getline(basic_istream&, string&); 25082: # 1636 "/usr/include/c++/8/bits/basic_string.tcc" 3 25082: extern template 25082: basic_istream& 25082: operator>>(basic_istream&, wstring&); 25082: extern template 25082: basic_ostream& 25082: operator<<(basic_ostream&, const wstring&); 25082: extern template 25082: basic_istream& 25082: getline(basic_istream&, wstring&, wchar_t); 25082: extern template 25082: basic_istream& 25082: getline(basic_istream&, wstring&); 25082: 25082: 25082: 25082: 25082: } 25082: # 54 "/usr/include/c++/8/string" 2 3 25082: # 40 "/usr/include/c++/8/stdexcept" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: struct __cow_string 25082: { 25082: union { 25082: const char* _M_p; 25082: char _M_bytes[sizeof(const char*)]; 25082: }; 25082: 25082: __cow_string(); 25082: __cow_string(const std::string&); 25082: __cow_string(const char*, size_t); 25082: __cow_string(const __cow_string&) noexcept; 25082: __cow_string& operator=(const __cow_string&) noexcept; 25082: ~__cow_string(); 25082: 25082: __cow_string(__cow_string&&) noexcept; 25082: __cow_string& operator=(__cow_string&&) noexcept; 25082: 25082: }; 25082: 25082: typedef basic_string __sso_string; 25082: # 113 "/usr/include/c++/8/stdexcept" 3 25082: class logic_error : public exception 25082: { 25082: __cow_string _M_msg; 25082: 25082: public: 25082: 25082: explicit 25082: logic_error(const string& __arg) ; 25082: 25082: 25082: explicit 25082: logic_error(const char*) ; 25082: 25082: 25082: 25082: logic_error(const logic_error&) noexcept; 25082: logic_error& operator=(const logic_error&) noexcept; 25082: 25082: 25082: virtual ~logic_error() noexcept; 25082: 25082: 25082: 25082: virtual const char* 25082: what() const noexcept; 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: 25082: 25082: class domain_error : public logic_error 25082: { 25082: public: 25082: explicit domain_error(const string& __arg) ; 25082: 25082: explicit domain_error(const char*) ; 25082: 25082: virtual ~domain_error() noexcept; 25082: }; 25082: 25082: 25082: class invalid_argument : public logic_error 25082: { 25082: public: 25082: explicit invalid_argument(const string& __arg) ; 25082: 25082: explicit invalid_argument(const char*) ; 25082: 25082: virtual ~invalid_argument() noexcept; 25082: }; 25082: 25082: 25082: 25082: class length_error : public logic_error 25082: { 25082: public: 25082: explicit length_error(const string& __arg) ; 25082: 25082: explicit length_error(const char*) ; 25082: 25082: virtual ~length_error() noexcept; 25082: }; 25082: 25082: 25082: 25082: class out_of_range : public logic_error 25082: { 25082: public: 25082: explicit out_of_range(const string& __arg) ; 25082: 25082: explicit out_of_range(const char*) ; 25082: 25082: virtual ~out_of_range() noexcept; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: class runtime_error : public exception 25082: { 25082: __cow_string _M_msg; 25082: 25082: public: 25082: 25082: explicit 25082: runtime_error(const string& __arg) ; 25082: 25082: 25082: explicit 25082: runtime_error(const char*) ; 25082: 25082: 25082: 25082: runtime_error(const runtime_error&) noexcept; 25082: runtime_error& operator=(const runtime_error&) noexcept; 25082: 25082: 25082: virtual ~runtime_error() noexcept; 25082: 25082: 25082: 25082: virtual const char* 25082: what() const noexcept; 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: 25082: class range_error : public runtime_error 25082: { 25082: public: 25082: explicit range_error(const string& __arg) ; 25082: 25082: explicit range_error(const char*) ; 25082: 25082: virtual ~range_error() noexcept; 25082: }; 25082: 25082: 25082: class overflow_error : public runtime_error 25082: { 25082: public: 25082: explicit overflow_error(const string& __arg) ; 25082: 25082: explicit overflow_error(const char*) ; 25082: 25082: virtual ~overflow_error() noexcept; 25082: }; 25082: 25082: 25082: class underflow_error : public runtime_error 25082: { 25082: public: 25082: explicit underflow_error(const string& __arg) ; 25082: 25082: explicit underflow_error(const char*) ; 25082: 25082: virtual ~underflow_error() noexcept; 25082: }; 25082: 25082: 25082: 25082: 25082: } 25082: # 40 "/usr/include/c++/8/array" 2 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: struct __array_traits 25082: { 25082: typedef _Tp _Type[_Nm]; 25082: typedef __is_swappable<_Tp> _Is_swappable; 25082: typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable; 25082: 25082: static constexpr _Tp& 25082: _S_ref(const _Type& __t, std::size_t __n) noexcept 25082: { return const_cast<_Tp&>(__t[__n]); } 25082: 25082: static constexpr _Tp* 25082: _S_ptr(const _Type& __t) noexcept 25082: { return const_cast<_Tp*>(__t); } 25082: }; 25082: 25082: template 25082: struct __array_traits<_Tp, 0> 25082: { 25082: struct _Type { }; 25082: typedef true_type _Is_swappable; 25082: typedef true_type _Is_nothrow_swappable; 25082: 25082: static constexpr _Tp& 25082: _S_ref(const _Type&, std::size_t) noexcept 25082: { return *static_cast<_Tp*>(nullptr); } 25082: 25082: static constexpr _Tp* 25082: _S_ptr(const _Type&) noexcept 25082: { return nullptr; } 25082: }; 25082: # 93 "/usr/include/c++/8/array" 3 25082: template 25082: struct array 25082: { 25082: typedef _Tp value_type; 25082: typedef value_type* pointer; 25082: typedef const value_type* const_pointer; 25082: typedef value_type& reference; 25082: typedef const value_type& const_reference; 25082: typedef value_type* iterator; 25082: typedef const value_type* const_iterator; 25082: typedef std::size_t size_type; 25082: typedef std::ptrdiff_t difference_type; 25082: typedef std::reverse_iterator reverse_iterator; 25082: typedef std::reverse_iterator const_reverse_iterator; 25082: 25082: 25082: typedef std::__array_traits<_Tp, _Nm> _AT_Type; 25082: typename _AT_Type::_Type _M_elems; 25082: 25082: 25082: 25082: 25082: void 25082: fill(const value_type& __u) 25082: { std::fill_n(begin(), size(), __u); } 25082: 25082: void 25082: swap(array& __other) 25082: noexcept(_AT_Type::_Is_nothrow_swappable::value) 25082: { std::swap_ranges(begin(), end(), __other.begin()); } 25082: 25082: 25082: constexpr iterator 25082: begin() noexcept 25082: { return iterator(data()); } 25082: 25082: constexpr const_iterator 25082: begin() const noexcept 25082: { return const_iterator(data()); } 25082: 25082: constexpr iterator 25082: end() noexcept 25082: { return iterator(data() + _Nm); } 25082: 25082: constexpr const_iterator 25082: end() const noexcept 25082: { return const_iterator(data() + _Nm); } 25082: 25082: constexpr reverse_iterator 25082: rbegin() noexcept 25082: { return reverse_iterator(end()); } 25082: 25082: constexpr const_reverse_iterator 25082: rbegin() const noexcept 25082: { return const_reverse_iterator(end()); } 25082: 25082: constexpr reverse_iterator 25082: rend() noexcept 25082: { return reverse_iterator(begin()); } 25082: 25082: constexpr const_reverse_iterator 25082: rend() const noexcept 25082: { return const_reverse_iterator(begin()); } 25082: 25082: constexpr const_iterator 25082: cbegin() const noexcept 25082: { return const_iterator(data()); } 25082: 25082: constexpr const_iterator 25082: cend() const noexcept 25082: { return const_iterator(data() + _Nm); } 25082: 25082: constexpr const_reverse_iterator 25082: crbegin() const noexcept 25082: { return const_reverse_iterator(end()); } 25082: 25082: constexpr const_reverse_iterator 25082: crend() const noexcept 25082: { return const_reverse_iterator(begin()); } 25082: 25082: 25082: constexpr size_type 25082: size() const noexcept { return _Nm; } 25082: 25082: constexpr size_type 25082: max_size() const noexcept { return _Nm; } 25082: 25082: constexpr bool 25082: empty() const noexcept { return size() == 0; } 25082: 25082: 25082: constexpr reference 25082: operator[](size_type __n) noexcept 25082: { return _AT_Type::_S_ref(_M_elems, __n); } 25082: 25082: constexpr const_reference 25082: operator[](size_type __n) const noexcept 25082: { return _AT_Type::_S_ref(_M_elems, __n); } 25082: 25082: constexpr reference 25082: at(size_type __n) 25082: { 25082: if (__n >= _Nm) 25082: std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") 25082: , 25082: __n, _Nm); 25082: return _AT_Type::_S_ref(_M_elems, __n); 25082: } 25082: 25082: constexpr const_reference 25082: at(size_type __n) const 25082: { 25082: 25082: 25082: return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) 25082: : (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") 25082: , 25082: __n, _Nm), 25082: _AT_Type::_S_ref(_M_elems, 0)); 25082: } 25082: 25082: constexpr reference 25082: front() noexcept 25082: { return *begin(); } 25082: 25082: constexpr const_reference 25082: front() const noexcept 25082: { return _AT_Type::_S_ref(_M_elems, 0); } 25082: 25082: constexpr reference 25082: back() noexcept 25082: { return _Nm ? *(end() - 1) : *end(); } 25082: 25082: constexpr const_reference 25082: back() const noexcept 25082: { 25082: return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) 25082: : _AT_Type::_S_ref(_M_elems, 0); 25082: } 25082: 25082: constexpr pointer 25082: data() noexcept 25082: { return _AT_Type::_S_ptr(_M_elems); } 25082: 25082: constexpr const_pointer 25082: data() const noexcept 25082: { return _AT_Type::_S_ptr(_M_elems); } 25082: }; 25082: 25082: 25082: template 25082: array(_Tp, _Up...) 25082: -> array && ...), _Tp>, 25082: 1 + sizeof...(_Up)>; 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 25082: { return std::equal(__one.begin(), __one.end(), __two.begin()); } 25082: 25082: template 25082: inline bool 25082: operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 25082: { return !(__one == __two); } 25082: 25082: template 25082: inline bool 25082: operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) 25082: { 25082: return std::lexicographical_compare(__a.begin(), __a.end(), 25082: __b.begin(), __b.end()); 25082: } 25082: 25082: template 25082: inline bool 25082: operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 25082: { return __two < __one; } 25082: 25082: template 25082: inline bool 25082: operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 25082: { return !(__one > __two); } 25082: 25082: template 25082: inline bool 25082: operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 25082: { return !(__one < __two); } 25082: 25082: 25082: template 25082: inline 25082: 25082: 25082: typename enable_if< 25082: std::__array_traits<_Tp, _Nm>::_Is_swappable::value 25082: >::type 25082: 25082: 25082: 25082: swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) 25082: noexcept(noexcept(__one.swap(__two))) 25082: { __one.swap(__two); } 25082: 25082: 25082: template 25082: typename enable_if< 25082: !std::__array_traits<_Tp, _Nm>::_Is_swappable::value>::type 25082: swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; 25082: 25082: 25082: template 25082: constexpr _Tp& 25082: get(array<_Tp, _Nm>& __arr) noexcept 25082: { 25082: static_assert(_Int < _Nm, "array index is within bounds"); 25082: return std::__array_traits<_Tp, _Nm>:: 25082: _S_ref(__arr._M_elems, _Int); 25082: } 25082: 25082: template 25082: constexpr _Tp&& 25082: get(array<_Tp, _Nm>&& __arr) noexcept 25082: { 25082: static_assert(_Int < _Nm, "array index is within bounds"); 25082: return std::move(std::get<_Int>(__arr)); 25082: } 25082: 25082: template 25082: constexpr const _Tp& 25082: get(const array<_Tp, _Nm>& __arr) noexcept 25082: { 25082: static_assert(_Int < _Nm, "array index is within bounds"); 25082: return std::__array_traits<_Tp, _Nm>:: 25082: _S_ref(__arr._M_elems, _Int); 25082: } 25082: 25082: template 25082: constexpr const _Tp&& 25082: get(const array<_Tp, _Nm>&& __arr) noexcept 25082: { 25082: static_assert(_Int < _Nm, "array index is within bounds"); 25082: return std::move(std::get<_Int>(__arr)); 25082: } 25082: 25082: 25082: } 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct tuple_size; 25082: 25082: 25082: template 25082: struct tuple_size> 25082: : public integral_constant { }; 25082: 25082: 25082: template 25082: struct tuple_element; 25082: 25082: 25082: template 25082: struct tuple_element<_Int, std::array<_Tp, _Nm>> 25082: { 25082: static_assert(_Int < _Nm, "index is out of bounds"); 25082: typedef _Tp type; 25082: }; 25082: 25082: template 25082: struct __is_tuple_like_impl> : true_type 25082: { }; 25082: 25082: 25082: } 25082: # 40 "/usr/include/c++/8/tuple" 2 3 25082: 25082: # 1 "/usr/include/c++/8/bits/invoke.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/invoke.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/invoke.h" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 52 "/usr/include/c++/8/bits/invoke.h" 3 25082: template::type> 25082: constexpr _Up&& 25082: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept 25082: { return static_cast<_Up&&>(__t); } 25082: 25082: template 25082: constexpr _Res 25082: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) 25082: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } 25082: 25082: template 25082: constexpr _Res 25082: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, 25082: _Args&&... __args) 25082: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } 25082: 25082: template 25082: constexpr _Res 25082: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, 25082: _Args&&... __args) 25082: { 25082: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); 25082: } 25082: 25082: template 25082: constexpr _Res 25082: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) 25082: { return __invfwd<_Tp>(__t).*__f; } 25082: 25082: template 25082: constexpr _Res 25082: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) 25082: { return (*std::forward<_Tp>(__t)).*__f; } 25082: 25082: 25082: template 25082: constexpr typename __invoke_result<_Callable, _Args...>::type 25082: __invoke(_Callable&& __fn, _Args&&... __args) 25082: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) 25082: { 25082: using __result = __invoke_result<_Callable, _Args...>; 25082: using __type = typename __result::type; 25082: using __tag = typename __result::__invoke_type; 25082: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: 25082: } 25082: # 42 "/usr/include/c++/8/tuple" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class tuple; 25082: 25082: template 25082: struct __is_empty_non_tuple : is_empty<_Tp> { }; 25082: 25082: 25082: template 25082: struct __is_empty_non_tuple> : false_type { }; 25082: 25082: 25082: template 25082: using __empty_not_final 25082: = typename conditional<__is_final(_Tp), false_type, 25082: __is_empty_non_tuple<_Tp>>::type; 25082: 25082: template::value> 25082: struct _Head_base; 25082: 25082: template 25082: struct _Head_base<_Idx, _Head, true> 25082: : public _Head 25082: { 25082: constexpr _Head_base() 25082: : _Head() { } 25082: 25082: constexpr _Head_base(const _Head& __h) 25082: : _Head(__h) { } 25082: 25082: constexpr _Head_base(const _Head_base&) = default; 25082: constexpr _Head_base(_Head_base&&) = default; 25082: 25082: template 25082: constexpr _Head_base(_UHead&& __h) 25082: : _Head(std::forward<_UHead>(__h)) { } 25082: 25082: _Head_base(allocator_arg_t, __uses_alloc0) 25082: : _Head() { } 25082: 25082: template 25082: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 25082: : _Head(allocator_arg, *__a._M_a) { } 25082: 25082: template 25082: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 25082: : _Head(*__a._M_a) { } 25082: 25082: template 25082: _Head_base(__uses_alloc0, _UHead&& __uhead) 25082: : _Head(std::forward<_UHead>(__uhead)) { } 25082: 25082: template 25082: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 25082: : _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { } 25082: 25082: template 25082: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 25082: : _Head(std::forward<_UHead>(__uhead), *__a._M_a) { } 25082: 25082: static constexpr _Head& 25082: _M_head(_Head_base& __b) noexcept { return __b; } 25082: 25082: static constexpr const _Head& 25082: _M_head(const _Head_base& __b) noexcept { return __b; } 25082: }; 25082: 25082: template 25082: struct _Head_base<_Idx, _Head, false> 25082: { 25082: constexpr _Head_base() 25082: : _M_head_impl() { } 25082: 25082: constexpr _Head_base(const _Head& __h) 25082: : _M_head_impl(__h) { } 25082: 25082: constexpr _Head_base(const _Head_base&) = default; 25082: constexpr _Head_base(_Head_base&&) = default; 25082: 25082: template 25082: constexpr _Head_base(_UHead&& __h) 25082: : _M_head_impl(std::forward<_UHead>(__h)) { } 25082: 25082: _Head_base(allocator_arg_t, __uses_alloc0) 25082: : _M_head_impl() { } 25082: 25082: template 25082: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 25082: : _M_head_impl(allocator_arg, *__a._M_a) { } 25082: 25082: template 25082: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 25082: : _M_head_impl(*__a._M_a) { } 25082: 25082: template 25082: _Head_base(__uses_alloc0, _UHead&& __uhead) 25082: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 25082: 25082: template 25082: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 25082: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 25082: { } 25082: 25082: template 25082: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 25082: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 25082: 25082: static constexpr _Head& 25082: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 25082: 25082: static constexpr const _Head& 25082: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 25082: 25082: _Head _M_head_impl; 25082: }; 25082: # 176 "/usr/include/c++/8/tuple" 3 25082: template 25082: struct _Tuple_impl; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Tuple_impl<_Idx, _Head, _Tail...> 25082: : public _Tuple_impl<_Idx + 1, _Tail...>, 25082: private _Head_base<_Idx, _Head> 25082: { 25082: template friend class _Tuple_impl; 25082: 25082: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; 25082: typedef _Head_base<_Idx, _Head> _Base; 25082: 25082: static constexpr _Head& 25082: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 25082: 25082: static constexpr const _Head& 25082: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 25082: 25082: static constexpr _Inherited& 25082: _M_tail(_Tuple_impl& __t) noexcept { return __t; } 25082: 25082: static constexpr const _Inherited& 25082: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } 25082: 25082: constexpr _Tuple_impl() 25082: : _Inherited(), _Base() { } 25082: 25082: explicit 25082: constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail) 25082: : _Inherited(__tail...), _Base(__head) { } 25082: 25082: template::type> 25082: explicit 25082: constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail) 25082: : _Inherited(std::forward<_UTail>(__tail)...), 25082: _Base(std::forward<_UHead>(__head)) { } 25082: 25082: constexpr _Tuple_impl(const _Tuple_impl&) = default; 25082: 25082: constexpr 25082: _Tuple_impl(_Tuple_impl&& __in) 25082: noexcept(__and_, 25082: is_nothrow_move_constructible<_Inherited>>::value) 25082: : _Inherited(std::move(_M_tail(__in))), 25082: _Base(std::forward<_Head>(_M_head(__in))) { } 25082: 25082: template 25082: constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) 25082: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 25082: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } 25082: 25082: template 25082: constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 25082: : _Inherited(std::move 25082: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 25082: _Base(std::forward<_UHead> 25082: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 25082: : _Inherited(__tag, __a), 25082: _Base(__tag, __use_alloc<_Head>(__a)) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: const _Head& __head, const _Tail&... __tail) 25082: : _Inherited(__tag, __a, __tail...), 25082: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } 25082: 25082: template::type> 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: _UHead&& __head, _UTail&&... __tail) 25082: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), 25082: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 25082: std::forward<_UHead>(__head)) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: const _Tuple_impl& __in) 25082: : _Inherited(__tag, __a, _M_tail(__in)), 25082: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: _Tuple_impl&& __in) 25082: : _Inherited(__tag, __a, std::move(_M_tail(__in))), 25082: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 25082: std::forward<_Head>(_M_head(__in))) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: const _Tuple_impl<_Idx, _UElements...>& __in) 25082: : _Inherited(__tag, __a, 25082: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 25082: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 25082: _Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 25082: : _Inherited(__tag, __a, std::move 25082: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 25082: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 25082: std::forward<_UHead> 25082: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } 25082: 25082: _Tuple_impl& 25082: operator=(const _Tuple_impl& __in) 25082: { 25082: _M_head(*this) = _M_head(__in); 25082: _M_tail(*this) = _M_tail(__in); 25082: return *this; 25082: } 25082: 25082: _Tuple_impl& 25082: operator=(_Tuple_impl&& __in) 25082: noexcept(__and_, 25082: is_nothrow_move_assignable<_Inherited>>::value) 25082: { 25082: _M_head(*this) = std::forward<_Head>(_M_head(__in)); 25082: _M_tail(*this) = std::move(_M_tail(__in)); 25082: return *this; 25082: } 25082: 25082: template 25082: _Tuple_impl& 25082: operator=(const _Tuple_impl<_Idx, _UElements...>& __in) 25082: { 25082: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); 25082: _M_tail(*this) = _Tuple_impl<_Idx, _UElements...>::_M_tail(__in); 25082: return *this; 25082: } 25082: 25082: template 25082: _Tuple_impl& 25082: operator=(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 25082: { 25082: _M_head(*this) = std::forward<_UHead> 25082: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); 25082: _M_tail(*this) = std::move 25082: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)); 25082: return *this; 25082: } 25082: 25082: protected: 25082: void 25082: _M_swap(_Tuple_impl& __in) 25082: noexcept(__is_nothrow_swappable<_Head>::value 25082: && noexcept(_M_tail(__in)._M_swap(_M_tail(__in)))) 25082: { 25082: using std::swap; 25082: swap(_M_head(*this), _M_head(__in)); 25082: _Inherited::_M_swap(_M_tail(__in)); 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct _Tuple_impl<_Idx, _Head> 25082: : private _Head_base<_Idx, _Head> 25082: { 25082: template friend class _Tuple_impl; 25082: 25082: typedef _Head_base<_Idx, _Head> _Base; 25082: 25082: static constexpr _Head& 25082: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 25082: 25082: static constexpr const _Head& 25082: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 25082: 25082: constexpr _Tuple_impl() 25082: : _Base() { } 25082: 25082: explicit 25082: constexpr _Tuple_impl(const _Head& __head) 25082: : _Base(__head) { } 25082: 25082: template 25082: explicit 25082: constexpr _Tuple_impl(_UHead&& __head) 25082: : _Base(std::forward<_UHead>(__head)) { } 25082: 25082: constexpr _Tuple_impl(const _Tuple_impl&) = default; 25082: 25082: constexpr 25082: _Tuple_impl(_Tuple_impl&& __in) 25082: noexcept(is_nothrow_move_constructible<_Head>::value) 25082: : _Base(std::forward<_Head>(_M_head(__in))) { } 25082: 25082: template 25082: constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) 25082: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } 25082: 25082: template 25082: constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) 25082: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 25082: { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 25082: : _Base(__tag, __use_alloc<_Head>(__a)) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: const _Head& __head) 25082: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: _UHead&& __head) 25082: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 25082: std::forward<_UHead>(__head)) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: const _Tuple_impl& __in) 25082: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: _Tuple_impl&& __in) 25082: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 25082: std::forward<_Head>(_M_head(__in))) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: const _Tuple_impl<_Idx, _UHead>& __in) 25082: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 25082: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } 25082: 25082: template 25082: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 25082: _Tuple_impl<_Idx, _UHead>&& __in) 25082: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 25082: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 25082: { } 25082: 25082: _Tuple_impl& 25082: operator=(const _Tuple_impl& __in) 25082: { 25082: _M_head(*this) = _M_head(__in); 25082: return *this; 25082: } 25082: 25082: _Tuple_impl& 25082: operator=(_Tuple_impl&& __in) 25082: noexcept(is_nothrow_move_assignable<_Head>::value) 25082: { 25082: _M_head(*this) = std::forward<_Head>(_M_head(__in)); 25082: return *this; 25082: } 25082: 25082: template 25082: _Tuple_impl& 25082: operator=(const _Tuple_impl<_Idx, _UHead>& __in) 25082: { 25082: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); 25082: return *this; 25082: } 25082: 25082: template 25082: _Tuple_impl& 25082: operator=(_Tuple_impl<_Idx, _UHead>&& __in) 25082: { 25082: _M_head(*this) 25082: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); 25082: return *this; 25082: } 25082: 25082: protected: 25082: void 25082: _M_swap(_Tuple_impl& __in) 25082: noexcept(__is_nothrow_swappable<_Head>::value) 25082: { 25082: using std::swap; 25082: swap(_M_head(*this), _M_head(__in)); 25082: } 25082: }; 25082: 25082: 25082: 25082: template 25082: struct _TC 25082: { 25082: template 25082: static constexpr bool _ConstructibleTuple() 25082: { 25082: return __and_...>::value; 25082: } 25082: 25082: template 25082: static constexpr bool _ImplicitlyConvertibleTuple() 25082: { 25082: return __and_...>::value; 25082: } 25082: 25082: template 25082: static constexpr bool _MoveConstructibleTuple() 25082: { 25082: return __and_...>::value; 25082: } 25082: 25082: template 25082: static constexpr bool _ImplicitlyMoveConvertibleTuple() 25082: { 25082: return __and_...>::value; 25082: } 25082: 25082: template 25082: static constexpr bool _NonNestedTuple() 25082: { 25082: return __and_<__not_, 25082: typename remove_cv< 25082: typename remove_reference<_SrcTuple>::type 25082: >::type>>, 25082: __not_>, 25082: __not_> 25082: >::value; 25082: } 25082: template 25082: static constexpr bool _NotSameTuple() 25082: { 25082: return __not_, 25082: typename remove_const< 25082: typename remove_reference<_UElements...>::type 25082: >::type>>::value; 25082: } 25082: }; 25082: 25082: template 25082: struct _TC 25082: { 25082: template 25082: static constexpr bool _ConstructibleTuple() 25082: { 25082: return false; 25082: } 25082: 25082: template 25082: static constexpr bool _ImplicitlyConvertibleTuple() 25082: { 25082: return false; 25082: } 25082: 25082: template 25082: static constexpr bool _MoveConstructibleTuple() 25082: { 25082: return false; 25082: } 25082: 25082: template 25082: static constexpr bool _ImplicitlyMoveConvertibleTuple() 25082: { 25082: return false; 25082: } 25082: 25082: template 25082: static constexpr bool _NonNestedTuple() 25082: { 25082: return true; 25082: } 25082: template 25082: static constexpr bool _NotSameTuple() 25082: { 25082: return true; 25082: } 25082: }; 25082: 25082: 25082: template 25082: class tuple : public _Tuple_impl<0, _Elements...> 25082: { 25082: typedef _Tuple_impl<0, _Elements...> _Inherited; 25082: 25082: 25082: 25082: template 25082: struct _TC2 25082: { 25082: static constexpr bool _DefaultConstructibleTuple() 25082: { 25082: return __and_...>::value; 25082: } 25082: static constexpr bool _ImplicitlyDefaultConstructibleTuple() 25082: { 25082: return __and_<__is_implicitly_default_constructible<_Elements>...> 25082: ::value; 25082: } 25082: }; 25082: 25082: public: 25082: template:: 25082: _ImplicitlyDefaultConstructibleTuple(), 25082: bool>::type = true> 25082: constexpr tuple() 25082: : _Inherited() { } 25082: 25082: template:: 25082: _DefaultConstructibleTuple() 25082: && 25082: !_TC2<_Dummy>:: 25082: _ImplicitlyDefaultConstructibleTuple(), 25082: bool>::type = false> 25082: explicit constexpr tuple() 25082: : _Inherited() { } 25082: 25082: 25082: 25082: template using _TCC = 25082: _TC::value, 25082: _Elements...>; 25082: 25082: template::template 25082: _ConstructibleTuple<_Elements...>() 25082: && _TCC<_Dummy>::template 25082: _ImplicitlyConvertibleTuple<_Elements...>() 25082: && (sizeof...(_Elements) >= 1), 25082: bool>::type=true> 25082: constexpr tuple(const _Elements&... __elements) 25082: : _Inherited(__elements...) { } 25082: 25082: template::template 25082: _ConstructibleTuple<_Elements...>() 25082: && !_TCC<_Dummy>::template 25082: _ImplicitlyConvertibleTuple<_Elements...>() 25082: && (sizeof...(_Elements) >= 1), 25082: bool>::type=false> 25082: explicit constexpr tuple(const _Elements&... __elements) 25082: : _Inherited(__elements...) { } 25082: 25082: 25082: 25082: template using _TMC = 25082: _TC<(sizeof...(_Elements) == sizeof...(_UElements)) 25082: && (_TC<(sizeof...(_UElements)==1), _Elements...>:: 25082: template _NotSameTuple<_UElements...>()), 25082: _Elements...>; 25082: 25082: 25082: 25082: template using _TMCT = 25082: _TC<(sizeof...(_Elements) == sizeof...(_UElements)) 25082: && !is_same, 25082: tuple<_UElements...>>::value, 25082: _Elements...>; 25082: 25082: template::template 25082: _MoveConstructibleTuple<_UElements...>() 25082: && _TMC<_UElements...>::template 25082: _ImplicitlyMoveConvertibleTuple<_UElements...>() 25082: && (sizeof...(_Elements) >= 1), 25082: bool>::type=true> 25082: constexpr tuple(_UElements&&... __elements) 25082: : _Inherited(std::forward<_UElements>(__elements)...) { } 25082: 25082: template::template 25082: _MoveConstructibleTuple<_UElements...>() 25082: && !_TMC<_UElements...>::template 25082: _ImplicitlyMoveConvertibleTuple<_UElements...>() 25082: && (sizeof...(_Elements) >= 1), 25082: bool>::type=false> 25082: explicit constexpr tuple(_UElements&&... __elements) 25082: : _Inherited(std::forward<_UElements>(__elements)...) { } 25082: 25082: constexpr tuple(const tuple&) = default; 25082: 25082: constexpr tuple(tuple&&) = default; 25082: 25082: 25082: 25082: template using _TNTC = 25082: _TC::value && sizeof...(_Elements) == 1, 25082: _Elements...>; 25082: 25082: template::template 25082: _ConstructibleTuple<_UElements...>() 25082: && _TMCT<_UElements...>::template 25082: _ImplicitlyConvertibleTuple<_UElements...>() 25082: && _TNTC<_Dummy>::template 25082: _NonNestedTuple&>(), 25082: bool>::type=true> 25082: constexpr tuple(const tuple<_UElements...>& __in) 25082: : _Inherited(static_cast&>(__in)) 25082: { } 25082: 25082: template::template 25082: _ConstructibleTuple<_UElements...>() 25082: && !_TMCT<_UElements...>::template 25082: _ImplicitlyConvertibleTuple<_UElements...>() 25082: && _TNTC<_Dummy>::template 25082: _NonNestedTuple&>(), 25082: bool>::type=false> 25082: explicit constexpr tuple(const tuple<_UElements...>& __in) 25082: : _Inherited(static_cast&>(__in)) 25082: { } 25082: 25082: template::template 25082: _MoveConstructibleTuple<_UElements...>() 25082: && _TMCT<_UElements...>::template 25082: _ImplicitlyMoveConvertibleTuple<_UElements...>() 25082: && _TNTC<_Dummy>::template 25082: _NonNestedTuple&&>(), 25082: bool>::type=true> 25082: constexpr tuple(tuple<_UElements...>&& __in) 25082: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } 25082: 25082: template::template 25082: _MoveConstructibleTuple<_UElements...>() 25082: && !_TMCT<_UElements...>::template 25082: _ImplicitlyMoveConvertibleTuple<_UElements...>() 25082: && _TNTC<_Dummy>::template 25082: _NonNestedTuple&&>(), 25082: bool>::type=false> 25082: explicit constexpr tuple(tuple<_UElements...>&& __in) 25082: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } 25082: 25082: 25082: 25082: template 25082: tuple(allocator_arg_t __tag, const _Alloc& __a) 25082: : _Inherited(__tag, __a) { } 25082: 25082: template::template 25082: _ConstructibleTuple<_Elements...>() 25082: && _TCC<_Dummy>::template 25082: _ImplicitlyConvertibleTuple<_Elements...>(), 25082: bool>::type=true> 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: const _Elements&... __elements) 25082: : _Inherited(__tag, __a, __elements...) { } 25082: 25082: template::template 25082: _ConstructibleTuple<_Elements...>() 25082: && !_TCC<_Dummy>::template 25082: _ImplicitlyConvertibleTuple<_Elements...>(), 25082: bool>::type=false> 25082: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: const _Elements&... __elements) 25082: : _Inherited(__tag, __a, __elements...) { } 25082: 25082: template::template 25082: _MoveConstructibleTuple<_UElements...>() 25082: && _TMC<_UElements...>::template 25082: _ImplicitlyMoveConvertibleTuple<_UElements...>(), 25082: bool>::type=true> 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: _UElements&&... __elements) 25082: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 25082: { } 25082: 25082: template::template 25082: _MoveConstructibleTuple<_UElements...>() 25082: && !_TMC<_UElements...>::template 25082: _ImplicitlyMoveConvertibleTuple<_UElements...>(), 25082: bool>::type=false> 25082: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: _UElements&&... __elements) 25082: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 25082: { } 25082: 25082: template 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 25082: : _Inherited(__tag, __a, static_cast(__in)) { } 25082: 25082: template 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 25082: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 25082: 25082: template::template 25082: _ConstructibleTuple<_UElements...>() 25082: && _TMCT<_UElements...>::template 25082: _ImplicitlyConvertibleTuple<_UElements...>() 25082: && _TNTC<_Dummy>::template 25082: _NonNestedTuple&&>(), 25082: bool>::type=true> 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: const tuple<_UElements...>& __in) 25082: : _Inherited(__tag, __a, 25082: static_cast&>(__in)) 25082: { } 25082: 25082: template::template 25082: _ConstructibleTuple<_UElements...>() 25082: && !_TMCT<_UElements...>::template 25082: _ImplicitlyConvertibleTuple<_UElements...>() 25082: && _TNTC<_Dummy>::template 25082: _NonNestedTuple&&>(), 25082: bool>::type=false> 25082: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: const tuple<_UElements...>& __in) 25082: : _Inherited(__tag, __a, 25082: static_cast&>(__in)) 25082: { } 25082: 25082: template::template 25082: _MoveConstructibleTuple<_UElements...>() 25082: && _TMCT<_UElements...>::template 25082: _ImplicitlyMoveConvertibleTuple<_UElements...>() 25082: && _TNTC<_Dummy>::template 25082: _NonNestedTuple&&>(), 25082: bool>::type=true> 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: tuple<_UElements...>&& __in) 25082: : _Inherited(__tag, __a, 25082: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 25082: { } 25082: 25082: template::template 25082: _MoveConstructibleTuple<_UElements...>() 25082: && !_TMCT<_UElements...>::template 25082: _ImplicitlyMoveConvertibleTuple<_UElements...>() 25082: && _TNTC<_Dummy>::template 25082: _NonNestedTuple&&>(), 25082: bool>::type=false> 25082: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: tuple<_UElements...>&& __in) 25082: : _Inherited(__tag, __a, 25082: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 25082: { } 25082: 25082: tuple& 25082: operator=(const tuple& __in) 25082: { 25082: static_cast<_Inherited&>(*this) = __in; 25082: return *this; 25082: } 25082: 25082: tuple& 25082: operator=(tuple&& __in) 25082: noexcept(is_nothrow_move_assignable<_Inherited>::value) 25082: { 25082: static_cast<_Inherited&>(*this) = std::move(__in); 25082: return *this; 25082: } 25082: 25082: template 25082: typename 25082: enable_if::type 25082: operator=(const tuple<_UElements...>& __in) 25082: { 25082: static_cast<_Inherited&>(*this) = __in; 25082: return *this; 25082: } 25082: 25082: template 25082: typename 25082: enable_if::type 25082: operator=(tuple<_UElements...>&& __in) 25082: { 25082: static_cast<_Inherited&>(*this) = std::move(__in); 25082: return *this; 25082: } 25082: 25082: void 25082: swap(tuple& __in) 25082: noexcept(noexcept(__in._M_swap(__in))) 25082: { _Inherited::_M_swap(__in); } 25082: }; 25082: 25082: 25082: template 25082: tuple(_UTypes...) -> tuple<_UTypes...>; 25082: template 25082: tuple(pair<_T1, _T2>) -> tuple<_T1, _T2>; 25082: template 25082: tuple(allocator_arg_t, _Alloc, _UTypes...) -> tuple<_UTypes...>; 25082: template 25082: tuple(allocator_arg_t, _Alloc, pair<_T1, _T2>) -> tuple<_T1, _T2>; 25082: template 25082: tuple(allocator_arg_t, _Alloc, tuple<_UTypes...>) -> tuple<_UTypes...>; 25082: 25082: 25082: 25082: template<> 25082: class tuple<> 25082: { 25082: public: 25082: void swap(tuple&) noexcept { } 25082: 25082: 25082: tuple() = default; 25082: 25082: template 25082: tuple(allocator_arg_t, const _Alloc&) { } 25082: template 25082: tuple(allocator_arg_t, const _Alloc&, const tuple&) { } 25082: }; 25082: 25082: 25082: 25082: template 25082: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> 25082: { 25082: typedef _Tuple_impl<0, _T1, _T2> _Inherited; 25082: 25082: public: 25082: template , 25082: __is_implicitly_default_constructible<_U2>> 25082: ::value, bool>::type = true> 25082: 25082: constexpr tuple() 25082: : _Inherited() { } 25082: 25082: template , 25082: is_default_constructible<_U2>, 25082: __not_< 25082: __and_<__is_implicitly_default_constructible<_U1>, 25082: __is_implicitly_default_constructible<_U2>>>> 25082: ::value, bool>::type = false> 25082: 25082: explicit constexpr tuple() 25082: : _Inherited() { } 25082: 25082: 25082: 25082: template using _TCC = 25082: _TC::value, _T1, _T2>; 25082: 25082: template::template 25082: _ConstructibleTuple<_T1, _T2>() 25082: && _TCC<_Dummy>::template 25082: _ImplicitlyConvertibleTuple<_T1, _T2>(), 25082: bool>::type = true> 25082: constexpr tuple(const _T1& __a1, const _T2& __a2) 25082: : _Inherited(__a1, __a2) { } 25082: 25082: template::template 25082: _ConstructibleTuple<_T1, _T2>() 25082: && !_TCC<_Dummy>::template 25082: _ImplicitlyConvertibleTuple<_T1, _T2>(), 25082: bool>::type = false> 25082: explicit constexpr tuple(const _T1& __a1, const _T2& __a2) 25082: : _Inherited(__a1, __a2) { } 25082: 25082: 25082: 25082: using _TMC = _TC; 25082: 25082: template() 25082: && _TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>() 25082: && !is_same::type, 25082: allocator_arg_t>::value, 25082: bool>::type = true> 25082: constexpr tuple(_U1&& __a1, _U2&& __a2) 25082: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } 25082: 25082: template() 25082: && !_TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>() 25082: && !is_same::type, 25082: allocator_arg_t>::value, 25082: bool>::type = false> 25082: explicit constexpr tuple(_U1&& __a1, _U2&& __a2) 25082: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } 25082: 25082: constexpr tuple(const tuple&) = default; 25082: 25082: constexpr tuple(tuple&&) = default; 25082: 25082: template() 25082: && _TMC::template 25082: _ImplicitlyConvertibleTuple<_U1, _U2>(), 25082: bool>::type = true> 25082: constexpr tuple(const tuple<_U1, _U2>& __in) 25082: : _Inherited(static_cast&>(__in)) { } 25082: 25082: template() 25082: && !_TMC::template 25082: _ImplicitlyConvertibleTuple<_U1, _U2>(), 25082: bool>::type = false> 25082: explicit constexpr tuple(const tuple<_U1, _U2>& __in) 25082: : _Inherited(static_cast&>(__in)) { } 25082: 25082: template() 25082: && _TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 25082: bool>::type = true> 25082: constexpr tuple(tuple<_U1, _U2>&& __in) 25082: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } 25082: 25082: template() 25082: && !_TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 25082: bool>::type = false> 25082: explicit constexpr tuple(tuple<_U1, _U2>&& __in) 25082: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } 25082: 25082: template() 25082: && _TMC::template 25082: _ImplicitlyConvertibleTuple<_U1, _U2>(), 25082: bool>::type = true> 25082: constexpr tuple(const pair<_U1, _U2>& __in) 25082: : _Inherited(__in.first, __in.second) { } 25082: 25082: template() 25082: && !_TMC::template 25082: _ImplicitlyConvertibleTuple<_U1, _U2>(), 25082: bool>::type = false> 25082: explicit constexpr tuple(const pair<_U1, _U2>& __in) 25082: : _Inherited(__in.first, __in.second) { } 25082: 25082: template() 25082: && _TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 25082: bool>::type = true> 25082: constexpr tuple(pair<_U1, _U2>&& __in) 25082: : _Inherited(std::forward<_U1>(__in.first), 25082: std::forward<_U2>(__in.second)) { } 25082: 25082: template() 25082: && !_TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 25082: bool>::type = false> 25082: explicit constexpr tuple(pair<_U1, _U2>&& __in) 25082: : _Inherited(std::forward<_U1>(__in.first), 25082: std::forward<_U2>(__in.second)) { } 25082: 25082: 25082: 25082: template 25082: tuple(allocator_arg_t __tag, const _Alloc& __a) 25082: : _Inherited(__tag, __a) { } 25082: 25082: template::template 25082: _ConstructibleTuple<_T1, _T2>() 25082: && _TCC<_Dummy>::template 25082: _ImplicitlyConvertibleTuple<_T1, _T2>(), 25082: bool>::type=true> 25082: 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: const _T1& __a1, const _T2& __a2) 25082: : _Inherited(__tag, __a, __a1, __a2) { } 25082: 25082: template::template 25082: _ConstructibleTuple<_T1, _T2>() 25082: && !_TCC<_Dummy>::template 25082: _ImplicitlyConvertibleTuple<_T1, _T2>(), 25082: bool>::type=false> 25082: 25082: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: const _T1& __a1, const _T2& __a2) 25082: : _Inherited(__tag, __a, __a1, __a2) { } 25082: 25082: template() 25082: && _TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 25082: bool>::type = true> 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) 25082: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 25082: std::forward<_U2>(__a2)) { } 25082: 25082: template() 25082: && !_TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 25082: bool>::type = false> 25082: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: _U1&& __a1, _U2&& __a2) 25082: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 25082: std::forward<_U2>(__a2)) { } 25082: 25082: template 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 25082: : _Inherited(__tag, __a, static_cast(__in)) { } 25082: 25082: template 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 25082: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 25082: 25082: template() 25082: && _TMC::template 25082: _ImplicitlyConvertibleTuple<_U1, _U2>(), 25082: bool>::type = true> 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: const tuple<_U1, _U2>& __in) 25082: : _Inherited(__tag, __a, 25082: static_cast&>(__in)) 25082: { } 25082: 25082: template() 25082: && !_TMC::template 25082: _ImplicitlyConvertibleTuple<_U1, _U2>(), 25082: bool>::type = false> 25082: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: const tuple<_U1, _U2>& __in) 25082: : _Inherited(__tag, __a, 25082: static_cast&>(__in)) 25082: { } 25082: 25082: template() 25082: && _TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 25082: bool>::type = true> 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 25082: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 25082: { } 25082: 25082: template() 25082: && !_TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 25082: bool>::type = false> 25082: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: tuple<_U1, _U2>&& __in) 25082: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 25082: { } 25082: 25082: template() 25082: && _TMC::template 25082: _ImplicitlyConvertibleTuple<_U1, _U2>(), 25082: bool>::type = true> 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: const pair<_U1, _U2>& __in) 25082: : _Inherited(__tag, __a, __in.first, __in.second) { } 25082: 25082: template() 25082: && !_TMC::template 25082: _ImplicitlyConvertibleTuple<_U1, _U2>(), 25082: bool>::type = false> 25082: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: const pair<_U1, _U2>& __in) 25082: : _Inherited(__tag, __a, __in.first, __in.second) { } 25082: 25082: template() 25082: && _TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 25082: bool>::type = true> 25082: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 25082: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 25082: std::forward<_U2>(__in.second)) { } 25082: 25082: template() 25082: && !_TMC::template 25082: _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), 25082: bool>::type = false> 25082: explicit tuple(allocator_arg_t __tag, const _Alloc& __a, 25082: pair<_U1, _U2>&& __in) 25082: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 25082: std::forward<_U2>(__in.second)) { } 25082: 25082: tuple& 25082: operator=(const tuple& __in) 25082: { 25082: static_cast<_Inherited&>(*this) = __in; 25082: return *this; 25082: } 25082: 25082: tuple& 25082: operator=(tuple&& __in) 25082: noexcept(is_nothrow_move_assignable<_Inherited>::value) 25082: { 25082: static_cast<_Inherited&>(*this) = std::move(__in); 25082: return *this; 25082: } 25082: 25082: template 25082: tuple& 25082: operator=(const tuple<_U1, _U2>& __in) 25082: { 25082: static_cast<_Inherited&>(*this) = __in; 25082: return *this; 25082: } 25082: 25082: template 25082: tuple& 25082: operator=(tuple<_U1, _U2>&& __in) 25082: { 25082: static_cast<_Inherited&>(*this) = std::move(__in); 25082: return *this; 25082: } 25082: 25082: template 25082: tuple& 25082: operator=(const pair<_U1, _U2>& __in) 25082: { 25082: this->_M_head(*this) = __in.first; 25082: this->_M_tail(*this)._M_head(*this) = __in.second; 25082: return *this; 25082: } 25082: 25082: template 25082: tuple& 25082: operator=(pair<_U1, _U2>&& __in) 25082: { 25082: this->_M_head(*this) = std::forward<_U1>(__in.first); 25082: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); 25082: return *this; 25082: } 25082: 25082: void 25082: swap(tuple& __in) 25082: noexcept(noexcept(__in._M_swap(__in))) 25082: { _Inherited::_M_swap(__in); } 25082: }; 25082: 25082: 25082: 25082: template 25082: struct tuple_size> 25082: : public integral_constant { }; 25082: 25082: 25082: template 25082: inline constexpr size_t tuple_size_v = tuple_size<_Tp>::value; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct tuple_element<__i, tuple<_Head, _Tail...> > 25082: : tuple_element<__i - 1, tuple<_Tail...> > { }; 25082: 25082: 25082: 25082: 25082: template 25082: struct tuple_element<0, tuple<_Head, _Tail...> > 25082: { 25082: typedef _Head type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct tuple_element<__i, tuple<>> 25082: { 25082: static_assert(__i < tuple_size>::value, 25082: "tuple index is in range"); 25082: }; 25082: 25082: template 25082: constexpr _Head& 25082: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 25082: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 25082: 25082: template 25082: constexpr const _Head& 25082: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 25082: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 25082: 25082: 25082: template 25082: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 25082: get(tuple<_Elements...>& __t) noexcept 25082: { return std::__get_helper<__i>(__t); } 25082: 25082: 25082: template 25082: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 25082: get(const tuple<_Elements...>& __t) noexcept 25082: { return std::__get_helper<__i>(__t); } 25082: 25082: 25082: template 25082: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 25082: get(tuple<_Elements...>&& __t) noexcept 25082: { 25082: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 25082: return std::forward<__element_type&&>(std::get<__i>(__t)); 25082: } 25082: 25082: 25082: template 25082: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 25082: get(const tuple<_Elements...>&& __t) noexcept 25082: { 25082: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 25082: return std::forward(std::get<__i>(__t)); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr _Head& 25082: __get_helper2(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 25082: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 25082: 25082: template 25082: constexpr const _Head& 25082: __get_helper2(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 25082: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 25082: 25082: 25082: template 25082: constexpr _Tp& 25082: get(tuple<_Types...>& __t) noexcept 25082: { return std::__get_helper2<_Tp>(__t); } 25082: 25082: 25082: template 25082: constexpr _Tp&& 25082: get(tuple<_Types...>&& __t) noexcept 25082: { return std::forward<_Tp&&>(std::__get_helper2<_Tp>(__t)); } 25082: 25082: 25082: template 25082: constexpr const _Tp& 25082: get(const tuple<_Types...>& __t) noexcept 25082: { return std::__get_helper2<_Tp>(__t); } 25082: 25082: 25082: 25082: template 25082: constexpr const _Tp&& 25082: get(const tuple<_Types...>&& __t) noexcept 25082: { return std::forward(std::__get_helper2<_Tp>(__t)); } 25082: 25082: 25082: 25082: template 25082: struct __tuple_compare 25082: { 25082: static constexpr bool 25082: __eq(const _Tp& __t, const _Up& __u) 25082: { 25082: return bool(std::get<__i>(__t) == std::get<__i>(__u)) 25082: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); 25082: } 25082: 25082: static constexpr bool 25082: __less(const _Tp& __t, const _Up& __u) 25082: { 25082: return bool(std::get<__i>(__t) < std::get<__i>(__u)) 25082: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) 25082: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); 25082: } 25082: }; 25082: 25082: template 25082: struct __tuple_compare<_Tp, _Up, __size, __size> 25082: { 25082: static constexpr bool 25082: __eq(const _Tp&, const _Up&) { return true; } 25082: 25082: static constexpr bool 25082: __less(const _Tp&, const _Up&) { return false; } 25082: }; 25082: 25082: template 25082: constexpr bool 25082: operator==(const tuple<_TElements...>& __t, 25082: const tuple<_UElements...>& __u) 25082: { 25082: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 25082: "tuple objects can only be compared if they have equal sizes."); 25082: using __compare = __tuple_compare, 25082: tuple<_UElements...>, 25082: 0, sizeof...(_TElements)>; 25082: return __compare::__eq(__t, __u); 25082: } 25082: 25082: template 25082: constexpr bool 25082: operator<(const tuple<_TElements...>& __t, 25082: const tuple<_UElements...>& __u) 25082: { 25082: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 25082: "tuple objects can only be compared if they have equal sizes."); 25082: using __compare = __tuple_compare, 25082: tuple<_UElements...>, 25082: 0, sizeof...(_TElements)>; 25082: return __compare::__less(__t, __u); 25082: } 25082: 25082: template 25082: constexpr bool 25082: operator!=(const tuple<_TElements...>& __t, 25082: const tuple<_UElements...>& __u) 25082: { return !(__t == __u); } 25082: 25082: template 25082: constexpr bool 25082: operator>(const tuple<_TElements...>& __t, 25082: const tuple<_UElements...>& __u) 25082: { return __u < __t; } 25082: 25082: template 25082: constexpr bool 25082: operator<=(const tuple<_TElements...>& __t, 25082: const tuple<_UElements...>& __u) 25082: { return !(__u < __t); } 25082: 25082: template 25082: constexpr bool 25082: operator>=(const tuple<_TElements...>& __t, 25082: const tuple<_UElements...>& __u) 25082: { return !(__t < __u); } 25082: 25082: 25082: template 25082: constexpr tuple::__type...> 25082: make_tuple(_Elements&&... __args) 25082: { 25082: typedef tuple::__type...> 25082: __result_type; 25082: return __result_type(std::forward<_Elements>(__args)...); 25082: } 25082: 25082: 25082: 25082: template 25082: constexpr tuple<_Elements&&...> 25082: forward_as_tuple(_Elements&&... __args) noexcept 25082: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } 25082: 25082: template 25082: struct __make_tuple_impl; 25082: 25082: template 25082: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> 25082: : __make_tuple_impl<_Idx + 1, 25082: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, 25082: _Tuple, _Nm> 25082: { }; 25082: 25082: template 25082: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> 25082: { 25082: typedef tuple<_Tp...> __type; 25082: }; 25082: 25082: template 25082: struct __do_make_tuple 25082: : __make_tuple_impl<0, tuple<>, _Tuple, std::tuple_size<_Tuple>::value> 25082: { }; 25082: 25082: 25082: template 25082: struct __make_tuple 25082: : public __do_make_tuple::type>::type> 25082: { }; 25082: 25082: 25082: template 25082: struct __combine_tuples; 25082: 25082: template<> 25082: struct __combine_tuples<> 25082: { 25082: typedef tuple<> __type; 25082: }; 25082: 25082: template 25082: struct __combine_tuples> 25082: { 25082: typedef tuple<_Ts...> __type; 25082: }; 25082: 25082: template 25082: struct __combine_tuples, tuple<_T2s...>, _Rem...> 25082: { 25082: typedef typename __combine_tuples, 25082: _Rem...>::__type __type; 25082: }; 25082: 25082: 25082: template 25082: struct __tuple_cat_result 25082: { 25082: typedef typename __combine_tuples 25082: ::__type...>::__type __type; 25082: }; 25082: 25082: 25082: 25082: template 25082: struct __make_1st_indices; 25082: 25082: template<> 25082: struct __make_1st_indices<> 25082: { 25082: typedef std::_Index_tuple<> __type; 25082: }; 25082: 25082: template 25082: struct __make_1st_indices<_Tp, _Tpls...> 25082: { 25082: typedef typename std::_Build_index_tuple::type>::value>::__type __type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct __tuple_concater; 25082: 25082: template 25082: struct __tuple_concater<_Ret, std::_Index_tuple<_Is...>, _Tp, _Tpls...> 25082: { 25082: template 25082: static constexpr _Ret 25082: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) 25082: { 25082: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 25082: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; 25082: return __next::_S_do(std::forward<_Tpls>(__tps)..., 25082: std::forward<_Us>(__us)..., 25082: std::get<_Is>(std::forward<_Tp>(__tp))...); 25082: } 25082: }; 25082: 25082: template 25082: struct __tuple_concater<_Ret, std::_Index_tuple<>> 25082: { 25082: template 25082: static constexpr _Ret 25082: _S_do(_Us&&... __us) 25082: { 25082: return _Ret(std::forward<_Us>(__us)...); 25082: } 25082: }; 25082: 25082: 25082: template...>::value>::type> 25082: constexpr auto 25082: tuple_cat(_Tpls&&... __tpls) 25082: -> typename __tuple_cat_result<_Tpls...>::__type 25082: { 25082: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; 25082: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 25082: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; 25082: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: constexpr tuple<_Elements&...> 25082: tie(_Elements&... __args) noexcept 25082: { return tuple<_Elements&...>(__args...); } 25082: 25082: 25082: template 25082: inline 25082: 25082: 25082: typename enable_if<__and_<__is_swappable<_Elements>...>::value 25082: >::type 25082: 25082: 25082: 25082: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: 25082: template 25082: typename enable_if...>::value>::type 25082: swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete; 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct _Swallow_assign 25082: { 25082: template 25082: constexpr const _Swallow_assign& 25082: operator=(const _Tp&) const 25082: { return *this; } 25082: }; 25082: 25082: 25082: 25082: inline constexpr _Swallow_assign ignore{}; 25082: 25082: 25082: template 25082: struct uses_allocator, _Alloc> : true_type { }; 25082: 25082: 25082: template 25082: template 25082: inline 25082: pair<_T1, _T2>:: 25082: pair(piecewise_construct_t, 25082: tuple<_Args1...> __first, tuple<_Args2...> __second) 25082: : pair(__first, __second, 25082: typename _Build_index_tuple::__type(), 25082: typename _Build_index_tuple::__type()) 25082: { } 25082: 25082: template 25082: template 25082: inline 25082: pair<_T1, _T2>:: 25082: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, 25082: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) 25082: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), 25082: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) 25082: { } 25082: 25082: 25082: 25082: 25082: template 25082: constexpr decltype(auto) 25082: __apply_impl(_Fn&& __f, _Tuple&& __t, index_sequence<_Idx...>) 25082: { 25082: return std::__invoke(std::forward<_Fn>(__f), 25082: std::get<_Idx>(std::forward<_Tuple>(__t))...); 25082: } 25082: 25082: template 25082: constexpr decltype(auto) 25082: apply(_Fn&& __f, _Tuple&& __t) 25082: { 25082: using _Indices = make_index_sequence>>; 25082: return std::__apply_impl(std::forward<_Fn>(__f), 25082: std::forward<_Tuple>(__t), 25082: _Indices{}); 25082: } 25082: 25082: 25082: 25082: template 25082: constexpr _Tp 25082: __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>) 25082: { return _Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...); } 25082: 25082: template 25082: constexpr _Tp 25082: make_from_tuple(_Tuple&& __t) 25082: { 25082: return __make_from_tuple_impl<_Tp>( 25082: std::forward<_Tuple>(__t), 25082: make_index_sequence>>{}); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 38 "/usr/include/c++/8/bits/unique_ptr.h" 2 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 25082: template class auto_ptr; 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: 25082: template 25082: struct default_delete 25082: { 25082: 25082: constexpr default_delete() noexcept = default; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template::value>::type> 25082: default_delete(const default_delete<_Up>&) noexcept { } 25082: 25082: 25082: void 25082: operator()(_Tp* __ptr) const 25082: { 25082: static_assert(!is_void<_Tp>::value, 25082: "can't delete pointer to incomplete type"); 25082: static_assert(sizeof(_Tp)>0, 25082: "can't delete pointer to incomplete type"); 25082: delete __ptr; 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct default_delete<_Tp[]> 25082: { 25082: public: 25082: 25082: constexpr default_delete() noexcept = default; 25082: # 104 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: template::value>::type> 25082: default_delete(const default_delete<_Up[]>&) noexcept { } 25082: 25082: 25082: template 25082: typename enable_if::value>::type 25082: operator()(_Up* __ptr) const 25082: { 25082: static_assert(sizeof(_Tp)>0, 25082: "can't delete pointer to incomplete type"); 25082: delete [] __ptr; 25082: } 25082: }; 25082: 25082: template 25082: class __uniq_ptr_impl 25082: { 25082: template 25082: struct _Ptr 25082: { 25082: using type = _Up*; 25082: }; 25082: 25082: template 25082: struct 25082: _Ptr<_Up, _Ep, __void_t::type::pointer>> 25082: { 25082: using type = typename remove_reference<_Ep>::type::pointer; 25082: }; 25082: 25082: public: 25082: using _DeleterConstraint = enable_if< 25082: __and_<__not_>, 25082: is_default_constructible<_Dp>>::value>; 25082: 25082: using pointer = typename _Ptr<_Tp, _Dp>::type; 25082: 25082: __uniq_ptr_impl() = default; 25082: __uniq_ptr_impl(pointer __p) : _M_t() { _M_ptr() = __p; } 25082: 25082: template 25082: __uniq_ptr_impl(pointer __p, _Del&& __d) 25082: : _M_t(__p, std::forward<_Del>(__d)) { } 25082: 25082: pointer& _M_ptr() { return std::get<0>(_M_t); } 25082: pointer _M_ptr() const { return std::get<0>(_M_t); } 25082: _Dp& _M_deleter() { return std::get<1>(_M_t); } 25082: const _Dp& _M_deleter() const { return std::get<1>(_M_t); } 25082: 25082: private: 25082: tuple _M_t; 25082: }; 25082: 25082: 25082: template > 25082: class unique_ptr 25082: { 25082: template 25082: using _DeleterConstraint = 25082: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 25082: 25082: __uniq_ptr_impl<_Tp, _Dp> _M_t; 25082: 25082: public: 25082: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 25082: using element_type = _Tp; 25082: using deleter_type = _Dp; 25082: 25082: 25082: 25082: template 25082: using __safe_conversion_up = __and_< 25082: is_convertible::pointer, pointer>, 25082: __not_>, 25082: __or_<__and_, 25082: is_same>, 25082: __and_<__not_>, 25082: is_convertible<_Ep, deleter_type>> 25082: > 25082: >; 25082: 25082: 25082: 25082: 25082: template > 25082: constexpr unique_ptr() noexcept 25082: : _M_t() 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template > 25082: explicit 25082: unique_ptr(pointer __p) noexcept 25082: : _M_t(__p) 25082: { } 25082: # 215 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: unique_ptr(pointer __p, 25082: typename conditional::value, 25082: deleter_type, const deleter_type&>::type __d) noexcept 25082: : _M_t(__p, __d) { } 25082: # 227 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: unique_ptr(pointer __p, 25082: typename remove_reference::type&& __d) noexcept 25082: : _M_t(std::move(__p), std::move(__d)) 25082: { static_assert(!std::is_reference::value, 25082: "rvalue deleter bound to reference"); } 25082: 25082: 25082: template > 25082: constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } 25082: 25082: 25082: 25082: 25082: unique_ptr(unique_ptr&& __u) noexcept 25082: : _M_t(__u.release(), std::forward(__u.get_deleter())) { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template, 25082: typename conditional::value, 25082: is_same<_Ep, _Dp>, 25082: is_convertible<_Ep, _Dp>>::type>> 25082: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 25082: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) 25082: { } 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 25082: 25082: template, is_same<_Dp, default_delete<_Tp>>>> 25082: unique_ptr(auto_ptr<_Up>&& __u) noexcept; 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: 25082: ~unique_ptr() noexcept 25082: { 25082: auto& __ptr = _M_t._M_ptr(); 25082: if (__ptr != nullptr) 25082: get_deleter()(__ptr); 25082: __ptr = pointer(); 25082: } 25082: # 286 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: unique_ptr& 25082: operator=(unique_ptr&& __u) noexcept 25082: { 25082: reset(__u.release()); 25082: get_deleter() = std::forward(__u.get_deleter()); 25082: return *this; 25082: } 25082: # 301 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: template 25082: typename enable_if< __and_< 25082: __safe_conversion_up<_Up, _Ep>, 25082: is_assignable 25082: >::value, 25082: unique_ptr&>::type 25082: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept 25082: { 25082: reset(__u.release()); 25082: get_deleter() = std::forward<_Ep>(__u.get_deleter()); 25082: return *this; 25082: } 25082: 25082: 25082: unique_ptr& 25082: operator=(nullptr_t) noexcept 25082: { 25082: reset(); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: typename add_lvalue_reference::type 25082: operator*() const 25082: { 25082: ; 25082: return *get(); 25082: } 25082: 25082: 25082: pointer 25082: operator->() const noexcept 25082: { 25082: ; 25082: return get(); 25082: } 25082: 25082: 25082: pointer 25082: get() const noexcept 25082: { return _M_t._M_ptr(); } 25082: 25082: 25082: deleter_type& 25082: get_deleter() noexcept 25082: { return _M_t._M_deleter(); } 25082: 25082: 25082: const deleter_type& 25082: get_deleter() const noexcept 25082: { return _M_t._M_deleter(); } 25082: 25082: 25082: explicit operator bool() const noexcept 25082: { return get() == pointer() ? false : true; } 25082: 25082: 25082: 25082: 25082: pointer 25082: release() noexcept 25082: { 25082: pointer __p = get(); 25082: _M_t._M_ptr() = pointer(); 25082: return __p; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: reset(pointer __p = pointer()) noexcept 25082: { 25082: using std::swap; 25082: swap(_M_t._M_ptr(), __p); 25082: if (__p != pointer()) 25082: get_deleter()(__p); 25082: } 25082: 25082: 25082: void 25082: swap(unique_ptr& __u) noexcept 25082: { 25082: using std::swap; 25082: swap(_M_t, __u._M_t); 25082: } 25082: 25082: 25082: unique_ptr(const unique_ptr&) = delete; 25082: unique_ptr& operator=(const unique_ptr&) = delete; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class unique_ptr<_Tp[], _Dp> 25082: { 25082: template 25082: using _DeleterConstraint = 25082: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 25082: 25082: __uniq_ptr_impl<_Tp, _Dp> _M_t; 25082: 25082: template 25082: using __remove_cv = typename remove_cv<_Up>::type; 25082: 25082: 25082: template 25082: using __is_derived_Tp 25082: = __and_< is_base_of<_Tp, _Up>, 25082: __not_, __remove_cv<_Up>>> >; 25082: 25082: public: 25082: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 25082: using element_type = _Tp; 25082: using deleter_type = _Dp; 25082: 25082: 25082: 25082: template, 25082: typename _Up_element_type = typename _Up_up::element_type> 25082: using __safe_conversion_up = __and_< 25082: is_array<_Up>, 25082: is_same, 25082: is_same, 25082: is_convertible<_Up_element_type(*)[], element_type(*)[]>, 25082: __or_<__and_, is_same>, 25082: __and_<__not_>, 25082: is_convertible<_Ep, deleter_type>>> 25082: >; 25082: 25082: 25082: template 25082: using __safe_conversion_raw = __and_< 25082: __or_<__or_, 25082: is_same<_Up, nullptr_t>>, 25082: __and_, 25082: is_same, 25082: is_convertible< 25082: typename remove_pointer<_Up>::type(*)[], 25082: element_type(*)[]> 25082: > 25082: > 25082: >; 25082: 25082: 25082: 25082: 25082: template > 25082: constexpr unique_ptr() noexcept 25082: : _M_t() 25082: { } 25082: # 470 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: template, 25082: typename = typename enable_if< 25082: __safe_conversion_raw<_Up>::value, bool>::type> 25082: explicit 25082: unique_ptr(_Up __p) noexcept 25082: : _M_t(__p) 25082: { } 25082: # 488 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: template::value, bool>::type> 25082: unique_ptr(_Up __p, 25082: typename conditional::value, 25082: deleter_type, const deleter_type&>::type __d) noexcept 25082: : _M_t(__p, __d) { } 25082: # 504 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: template::value, bool>::type> 25082: unique_ptr(_Up __p, typename 25082: remove_reference::type&& __d) noexcept 25082: : _M_t(std::move(__p), std::move(__d)) 25082: { static_assert(!is_reference::value, 25082: "rvalue deleter bound to reference"); } 25082: 25082: 25082: unique_ptr(unique_ptr&& __u) noexcept 25082: : _M_t(__u.release(), std::forward(__u.get_deleter())) { } 25082: 25082: 25082: template > 25082: constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } 25082: 25082: template>> 25082: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 25082: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) 25082: { } 25082: 25082: 25082: ~unique_ptr() 25082: { 25082: auto& __ptr = _M_t._M_ptr(); 25082: if (__ptr != nullptr) 25082: get_deleter()(__ptr); 25082: __ptr = pointer(); 25082: } 25082: # 545 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: unique_ptr& 25082: operator=(unique_ptr&& __u) noexcept 25082: { 25082: reset(__u.release()); 25082: get_deleter() = std::forward(__u.get_deleter()); 25082: return *this; 25082: } 25082: # 560 "/usr/include/c++/8/bits/unique_ptr.h" 3 25082: template 25082: typename 25082: enable_if<__and_<__safe_conversion_up<_Up, _Ep>, 25082: is_assignable 25082: >::value, 25082: unique_ptr&>::type 25082: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept 25082: { 25082: reset(__u.release()); 25082: get_deleter() = std::forward<_Ep>(__u.get_deleter()); 25082: return *this; 25082: } 25082: 25082: 25082: unique_ptr& 25082: operator=(nullptr_t) noexcept 25082: { 25082: reset(); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: typename std::add_lvalue_reference::type 25082: operator[](size_t __i) const 25082: { 25082: ; 25082: return get()[__i]; 25082: } 25082: 25082: 25082: pointer 25082: get() const noexcept 25082: { return _M_t._M_ptr(); } 25082: 25082: 25082: deleter_type& 25082: get_deleter() noexcept 25082: { return _M_t._M_deleter(); } 25082: 25082: 25082: const deleter_type& 25082: get_deleter() const noexcept 25082: { return _M_t._M_deleter(); } 25082: 25082: 25082: explicit operator bool() const noexcept 25082: { return get() == pointer() ? false : true; } 25082: 25082: 25082: 25082: 25082: pointer 25082: release() noexcept 25082: { 25082: pointer __p = get(); 25082: _M_t._M_ptr() = pointer(); 25082: return __p; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template , 25082: __and_, 25082: is_pointer<_Up>, 25082: is_convertible< 25082: typename remove_pointer<_Up>::type(*)[], 25082: element_type(*)[] 25082: > 25082: > 25082: > 25082: >> 25082: void 25082: reset(_Up __p) noexcept 25082: { 25082: pointer __ptr = __p; 25082: using std::swap; 25082: swap(_M_t._M_ptr(), __ptr); 25082: if (__ptr != nullptr) 25082: get_deleter()(__ptr); 25082: } 25082: 25082: void reset(nullptr_t = nullptr) noexcept 25082: { 25082: reset(pointer()); 25082: } 25082: 25082: 25082: void 25082: swap(unique_ptr& __u) noexcept 25082: { 25082: using std::swap; 25082: swap(_M_t, __u._M_t); 25082: } 25082: 25082: 25082: unique_ptr(const unique_ptr&) = delete; 25082: unique_ptr& operator=(const unique_ptr&) = delete; 25082: }; 25082: 25082: template 25082: inline 25082: 25082: 25082: typename enable_if<__is_swappable<_Dp>::value>::type 25082: 25082: 25082: 25082: swap(unique_ptr<_Tp, _Dp>& __x, 25082: unique_ptr<_Tp, _Dp>& __y) noexcept 25082: { __x.swap(__y); } 25082: 25082: 25082: template 25082: typename enable_if::value>::type 25082: swap(unique_ptr<_Tp, _Dp>&, 25082: unique_ptr<_Tp, _Dp>&) = delete; 25082: 25082: 25082: template 25082: inline bool 25082: operator==(const unique_ptr<_Tp, _Dp>& __x, 25082: const unique_ptr<_Up, _Ep>& __y) 25082: { return __x.get() == __y.get(); } 25082: 25082: template 25082: inline bool 25082: operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept 25082: { return !__x; } 25082: 25082: template 25082: inline bool 25082: operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept 25082: { return !__x; } 25082: 25082: template 25082: inline bool 25082: operator!=(const unique_ptr<_Tp, _Dp>& __x, 25082: const unique_ptr<_Up, _Ep>& __y) 25082: { return __x.get() != __y.get(); } 25082: 25082: template 25082: inline bool 25082: operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept 25082: { return (bool)__x; } 25082: 25082: template 25082: inline bool 25082: operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept 25082: { return (bool)__x; } 25082: 25082: template 25082: inline bool 25082: operator<(const unique_ptr<_Tp, _Dp>& __x, 25082: const unique_ptr<_Up, _Ep>& __y) 25082: { 25082: typedef typename 25082: std::common_type::pointer, 25082: typename unique_ptr<_Up, _Ep>::pointer>::type _CT; 25082: return std::less<_CT>()(__x.get(), __y.get()); 25082: } 25082: 25082: template 25082: inline bool 25082: operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 25082: { return std::less::pointer>()(__x.get(), 25082: nullptr); } 25082: 25082: template 25082: inline bool 25082: operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 25082: { return std::less::pointer>()(nullptr, 25082: __x.get()); } 25082: 25082: template 25082: inline bool 25082: operator<=(const unique_ptr<_Tp, _Dp>& __x, 25082: const unique_ptr<_Up, _Ep>& __y) 25082: { return !(__y < __x); } 25082: 25082: template 25082: inline bool 25082: operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 25082: { return !(nullptr < __x); } 25082: 25082: template 25082: inline bool 25082: operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 25082: { return !(__x < nullptr); } 25082: 25082: template 25082: inline bool 25082: operator>(const unique_ptr<_Tp, _Dp>& __x, 25082: const unique_ptr<_Up, _Ep>& __y) 25082: { return (__y < __x); } 25082: 25082: template 25082: inline bool 25082: operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 25082: { return std::less::pointer>()(nullptr, 25082: __x.get()); } 25082: 25082: template 25082: inline bool 25082: operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 25082: { return std::less::pointer>()(__x.get(), 25082: nullptr); } 25082: 25082: template 25082: inline bool 25082: operator>=(const unique_ptr<_Tp, _Dp>& __x, 25082: const unique_ptr<_Up, _Ep>& __y) 25082: { return !(__x < __y); } 25082: 25082: template 25082: inline bool 25082: operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 25082: { return !(__x < nullptr); } 25082: 25082: template 25082: inline bool 25082: operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 25082: { return !(nullptr < __x); } 25082: 25082: 25082: template 25082: struct hash> 25082: : public __hash_base>, 25082: private __poison_hash::pointer> 25082: { 25082: size_t 25082: operator()(const unique_ptr<_Tp, _Dp>& __u) const noexcept 25082: { 25082: typedef unique_ptr<_Tp, _Dp> _UP; 25082: return std::hash()(__u.get()); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _MakeUniq 25082: { typedef unique_ptr<_Tp> __single_object; }; 25082: 25082: template 25082: struct _MakeUniq<_Tp[]> 25082: { typedef unique_ptr<_Tp[]> __array; }; 25082: 25082: template 25082: struct _MakeUniq<_Tp[_Bound]> 25082: { struct __invalid_type { }; }; 25082: 25082: 25082: template 25082: inline typename _MakeUniq<_Tp>::__single_object 25082: make_unique(_Args&&... __args) 25082: { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); } 25082: 25082: 25082: template 25082: inline typename _MakeUniq<_Tp>::__array 25082: make_unique(size_t __num) 25082: { return unique_ptr<_Tp>(new remove_extent_t<_Tp>[__num]()); } 25082: 25082: 25082: template 25082: inline typename _MakeUniq<_Tp>::__invalid_type 25082: make_unique(_Args&&...) = delete; 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 81 "/usr/include/c++/8/memory" 2 3 25082: # 1 "/usr/include/c++/8/bits/shared_ptr.h" 1 3 25082: # 52 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: # 1 "/usr/include/c++/8/bits/shared_ptr_base.h" 1 3 25082: # 53 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 25082: # 1 "/usr/include/c++/8/bits/allocated_ptr.h" 1 3 25082: # 40 "/usr/include/c++/8/bits/allocated_ptr.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: struct __allocated_ptr 25082: { 25082: using pointer = typename allocator_traits<_Alloc>::pointer; 25082: using value_type = typename allocator_traits<_Alloc>::value_type; 25082: 25082: 25082: __allocated_ptr(_Alloc& __a, pointer __ptr) noexcept 25082: : _M_alloc(std::__addressof(__a)), _M_ptr(__ptr) 25082: { } 25082: 25082: 25082: template>> 25082: __allocated_ptr(_Alloc& __a, _Ptr __ptr) 25082: : _M_alloc(std::__addressof(__a)), 25082: _M_ptr(pointer_traits::pointer_to(*__ptr)) 25082: { } 25082: 25082: 25082: __allocated_ptr(__allocated_ptr&& __gd) noexcept 25082: : _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr) 25082: { __gd._M_ptr = nullptr; } 25082: 25082: 25082: ~__allocated_ptr() 25082: { 25082: if (_M_ptr != nullptr) 25082: std::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1); 25082: } 25082: 25082: 25082: __allocated_ptr& 25082: operator=(std::nullptr_t) noexcept 25082: { 25082: _M_ptr = nullptr; 25082: return *this; 25082: } 25082: 25082: 25082: value_type* get() { return std::__to_address(_M_ptr); } 25082: 25082: private: 25082: _Alloc* _M_alloc; 25082: pointer _M_ptr; 25082: }; 25082: 25082: 25082: template 25082: __allocated_ptr<_Alloc> 25082: __allocate_guarded(_Alloc& __a) 25082: { 25082: return { __a, std::allocator_traits<_Alloc>::allocate(__a, 1) }; 25082: } 25082: 25082: 25082: } 25082: # 54 "/usr/include/c++/8/bits/shared_ptr_base.h" 2 3 25082: # 1 "/usr/include/c++/8/bits/refwrap.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/refwrap.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/refwrap.h" 3 25082: # 43 "/usr/include/c++/8/bits/refwrap.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Maybe_unary_or_binary_function { }; 25082: 25082: 25082: template 25082: struct _Maybe_unary_or_binary_function<_Res, _T1> 25082: : std::unary_function<_T1, _Res> { }; 25082: 25082: 25082: template 25082: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> 25082: : std::binary_function<_T1, _T2, _Res> { }; 25082: 25082: template 25082: struct _Mem_fn_traits; 25082: 25082: template 25082: struct _Mem_fn_traits_base 25082: { 25082: using __result_type = _Res; 25082: using __maybe_type 25082: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; 25082: using __arity = integral_constant; 25082: }; 25082: # 97 "/usr/include/c++/8/bits/refwrap.h" 3 25082: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 25082: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 25082: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 25082: 25082: 25082: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 25082: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) & noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) & noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const & noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const & noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile & noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile & noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile & noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile & noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 25082: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) && noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) && noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const && noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const && noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile && noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile && noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile && noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile && noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template> 25082: struct _Maybe_get_result_type 25082: { }; 25082: 25082: template 25082: struct _Maybe_get_result_type<_Functor, 25082: __void_t> 25082: { typedef typename _Functor::result_type result_type; }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Weak_result_type_impl 25082: : _Maybe_get_result_type<_Functor> 25082: { }; 25082: 25082: 25082: template 25082: struct _Weak_result_type_impl<_Res(_ArgTypes...) noexcept (_NE)> 25082: { typedef _Res result_type; }; 25082: 25082: 25082: template 25082: struct _Weak_result_type_impl<_Res(_ArgTypes......) noexcept (_NE)> 25082: { typedef _Res result_type; }; 25082: 25082: 25082: template 25082: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) noexcept (_NE)> 25082: { typedef _Res result_type; }; 25082: 25082: 25082: template 25082: struct 25082: _Weak_result_type_impl<_Res(*)(_ArgTypes......) noexcept (_NE)> 25082: { typedef _Res result_type; }; 25082: 25082: 25082: template::value> 25082: struct _Weak_result_type_memfun 25082: : _Weak_result_type_impl<_Functor> 25082: { }; 25082: 25082: 25082: template 25082: struct _Weak_result_type_memfun<_MemFunPtr, true> 25082: { 25082: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 25082: }; 25082: 25082: 25082: template 25082: struct _Weak_result_type_memfun<_Func _Class::*, false> 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Weak_result_type 25082: : _Weak_result_type_memfun::type> 25082: { }; 25082: 25082: 25082: template> 25082: struct _Refwrap_base_arg1 25082: { }; 25082: 25082: 25082: template 25082: struct _Refwrap_base_arg1<_Tp, 25082: __void_t> 25082: { 25082: typedef typename _Tp::argument_type argument_type; 25082: }; 25082: 25082: 25082: template> 25082: struct _Refwrap_base_arg2 25082: { }; 25082: 25082: 25082: template 25082: struct _Refwrap_base_arg2<_Tp, 25082: __void_t> 25082: { 25082: typedef typename _Tp::first_argument_type first_argument_type; 25082: typedef typename _Tp::second_argument_type second_argument_type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Reference_wrapper_base 25082: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> 25082: { }; 25082: 25082: 25082: template 25082: struct _Reference_wrapper_base<_Res(_T1) noexcept (_NE)> 25082: : unary_function<_T1, _Res> 25082: { }; 25082: 25082: template 25082: struct _Reference_wrapper_base<_Res(_T1) const> 25082: : unary_function<_T1, _Res> 25082: { }; 25082: 25082: template 25082: struct _Reference_wrapper_base<_Res(_T1) volatile> 25082: : unary_function<_T1, _Res> 25082: { }; 25082: 25082: template 25082: struct _Reference_wrapper_base<_Res(_T1) const volatile> 25082: : unary_function<_T1, _Res> 25082: { }; 25082: 25082: 25082: template 25082: struct _Reference_wrapper_base<_Res(_T1, _T2) noexcept (_NE)> 25082: : binary_function<_T1, _T2, _Res> 25082: { }; 25082: 25082: template 25082: struct _Reference_wrapper_base<_Res(_T1, _T2) const> 25082: : binary_function<_T1, _T2, _Res> 25082: { }; 25082: 25082: template 25082: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> 25082: : binary_function<_T1, _T2, _Res> 25082: { }; 25082: 25082: template 25082: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> 25082: : binary_function<_T1, _T2, _Res> 25082: { }; 25082: 25082: 25082: template 25082: struct _Reference_wrapper_base<_Res(*)(_T1) noexcept (_NE)> 25082: : unary_function<_T1, _Res> 25082: { }; 25082: 25082: 25082: template 25082: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) noexcept (_NE)> 25082: : binary_function<_T1, _T2, _Res> 25082: { }; 25082: 25082: template::value> 25082: struct _Reference_wrapper_base_memfun 25082: : _Reference_wrapper_base<_Tp> 25082: { }; 25082: 25082: template 25082: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> 25082: : _Mem_fn_traits<_MemFunPtr>::__maybe_type 25082: { 25082: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class reference_wrapper 25082: : public _Reference_wrapper_base_memfun::type> 25082: { 25082: _Tp* _M_data; 25082: 25082: public: 25082: typedef _Tp type; 25082: 25082: reference_wrapper(_Tp& __indata) noexcept 25082: : _M_data(std::__addressof(__indata)) 25082: { } 25082: 25082: reference_wrapper(_Tp&&) = delete; 25082: 25082: reference_wrapper(const reference_wrapper&) = default; 25082: 25082: reference_wrapper& 25082: operator=(const reference_wrapper&) = default; 25082: 25082: operator _Tp&() const noexcept 25082: { return this->get(); } 25082: 25082: _Tp& 25082: get() const noexcept 25082: { return *_M_data; } 25082: 25082: template 25082: typename result_of<_Tp&(_Args&&...)>::type 25082: operator()(_Args&&... __args) const 25082: { 25082: return std::__invoke(get(), std::forward<_Args>(__args)...); 25082: } 25082: }; 25082: 25082: 25082: 25082: template 25082: inline reference_wrapper<_Tp> 25082: ref(_Tp& __t) noexcept 25082: { return reference_wrapper<_Tp>(__t); } 25082: 25082: 25082: template 25082: inline reference_wrapper 25082: cref(const _Tp& __t) noexcept 25082: { return reference_wrapper(__t); } 25082: 25082: template 25082: void ref(const _Tp&&) = delete; 25082: 25082: template 25082: void cref(const _Tp&&) = delete; 25082: 25082: 25082: template 25082: inline reference_wrapper<_Tp> 25082: ref(reference_wrapper<_Tp> __t) noexcept 25082: { return __t; } 25082: 25082: 25082: template 25082: inline reference_wrapper 25082: cref(reference_wrapper<_Tp> __t) noexcept 25082: { return { __t.get() }; } 25082: 25082: 25082: 25082: 25082: } 25082: # 55 "/usr/include/c++/8/bits/shared_ptr_base.h" 2 3 25082: 25082: # 1 "/usr/include/c++/8/ext/aligned_buffer.h" 1 3 25082: # 32 "/usr/include/c++/8/ext/aligned_buffer.h" 3 25082: 25082: # 33 "/usr/include/c++/8/ext/aligned_buffer.h" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace __gnu_cxx 25082: { 25082: 25082: 25082: 25082: 25082: template 25082: struct __aligned_membuf 25082: { 25082: 25082: 25082: 25082: 25082: 25082: struct _Tp2 { _Tp _M_t; }; 25082: 25082: alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)]; 25082: 25082: __aligned_membuf() = default; 25082: 25082: 25082: __aligned_membuf(std::nullptr_t) { } 25082: 25082: void* 25082: _M_addr() noexcept 25082: { return static_cast(&_M_storage); } 25082: 25082: const void* 25082: _M_addr() const noexcept 25082: { return static_cast(&_M_storage); } 25082: 25082: _Tp* 25082: _M_ptr() noexcept 25082: { return static_cast<_Tp*>(_M_addr()); } 25082: 25082: const _Tp* 25082: _M_ptr() const noexcept 25082: { return static_cast(_M_addr()); } 25082: }; 25082: # 89 "/usr/include/c++/8/ext/aligned_buffer.h" 3 25082: template 25082: struct __aligned_buffer 25082: : std::aligned_storage 25082: { 25082: typename 25082: std::aligned_storage::type _M_storage; 25082: 25082: __aligned_buffer() = default; 25082: 25082: 25082: __aligned_buffer(std::nullptr_t) { } 25082: 25082: void* 25082: _M_addr() noexcept 25082: { 25082: return static_cast(&_M_storage); 25082: } 25082: 25082: const void* 25082: _M_addr() const noexcept 25082: { 25082: return static_cast(&_M_storage); 25082: } 25082: 25082: _Tp* 25082: _M_ptr() noexcept 25082: { return static_cast<_Tp*>(_M_addr()); } 25082: 25082: const _Tp* 25082: _M_ptr() const noexcept 25082: { return static_cast(_M_addr()); } 25082: }; 25082: 25082: 25082: } 25082: # 57 "/usr/include/c++/8/bits/shared_ptr_base.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 25082: template class auto_ptr; 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: 25082: 25082: 25082: 25082: class bad_weak_ptr : public std::exception 25082: { 25082: public: 25082: virtual char const* what() const noexcept; 25082: 25082: virtual ~bad_weak_ptr() noexcept; 25082: }; 25082: 25082: 25082: inline void 25082: __throw_bad_weak_ptr() 25082: { (throw (bad_weak_ptr())); } 25082: 25082: using __gnu_cxx::_Lock_policy; 25082: using __gnu_cxx::__default_lock_policy; 25082: using __gnu_cxx::_S_single; 25082: using __gnu_cxx::_S_mutex; 25082: using __gnu_cxx::_S_atomic; 25082: 25082: 25082: template<_Lock_policy _Lp> 25082: class _Mutex_base 25082: { 25082: protected: 25082: 25082: enum { _S_need_barriers = 0 }; 25082: }; 25082: 25082: template<> 25082: class _Mutex_base<_S_mutex> 25082: : public __gnu_cxx::__mutex 25082: { 25082: protected: 25082: 25082: 25082: 25082: enum { _S_need_barriers = 1 }; 25082: }; 25082: 25082: template<_Lock_policy _Lp = __default_lock_policy> 25082: class _Sp_counted_base 25082: : public _Mutex_base<_Lp> 25082: { 25082: public: 25082: _Sp_counted_base() noexcept 25082: : _M_use_count(1), _M_weak_count(1) { } 25082: 25082: virtual 25082: ~_Sp_counted_base() noexcept 25082: { } 25082: 25082: 25082: 25082: virtual void 25082: _M_dispose() noexcept = 0; 25082: 25082: 25082: virtual void 25082: _M_destroy() noexcept 25082: { delete this; } 25082: 25082: virtual void* 25082: _M_get_deleter(const std::type_info&) noexcept = 0; 25082: 25082: void 25082: _M_add_ref_copy() 25082: { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } 25082: 25082: void 25082: _M_add_ref_lock(); 25082: 25082: bool 25082: _M_add_ref_lock_nothrow(); 25082: 25082: void 25082: _M_release() noexcept 25082: { 25082: 25082: ; 25082: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) 25082: { 25082: ; 25082: _M_dispose(); 25082: 25082: 25082: 25082: 25082: if (_Mutex_base<_Lp>::_S_need_barriers) 25082: { 25082: __atomic_thread_fence (4); 25082: } 25082: 25082: 25082: ; 25082: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, 25082: -1) == 1) 25082: { 25082: ; 25082: _M_destroy(); 25082: } 25082: } 25082: } 25082: 25082: void 25082: _M_weak_add_ref() noexcept 25082: { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } 25082: 25082: void 25082: _M_weak_release() noexcept 25082: { 25082: 25082: ; 25082: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) 25082: { 25082: ; 25082: if (_Mutex_base<_Lp>::_S_need_barriers) 25082: { 25082: 25082: 25082: __atomic_thread_fence (4); 25082: } 25082: _M_destroy(); 25082: } 25082: } 25082: 25082: long 25082: _M_get_use_count() const noexcept 25082: { 25082: 25082: 25082: return __atomic_load_n(&_M_use_count, 0); 25082: } 25082: 25082: private: 25082: _Sp_counted_base(_Sp_counted_base const&) = delete; 25082: _Sp_counted_base& operator=(_Sp_counted_base const&) = delete; 25082: 25082: _Atomic_word _M_use_count; 25082: _Atomic_word _M_weak_count; 25082: }; 25082: 25082: template<> 25082: inline void 25082: _Sp_counted_base<_S_single>:: 25082: _M_add_ref_lock() 25082: { 25082: if (_M_use_count == 0) 25082: __throw_bad_weak_ptr(); 25082: ++_M_use_count; 25082: } 25082: 25082: template<> 25082: inline void 25082: _Sp_counted_base<_S_mutex>:: 25082: _M_add_ref_lock() 25082: { 25082: __gnu_cxx::__scoped_lock sentry(*this); 25082: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) 25082: { 25082: _M_use_count = 0; 25082: __throw_bad_weak_ptr(); 25082: } 25082: } 25082: 25082: template<> 25082: inline void 25082: _Sp_counted_base<_S_atomic>:: 25082: _M_add_ref_lock() 25082: { 25082: 25082: _Atomic_word __count = _M_get_use_count(); 25082: do 25082: { 25082: if (__count == 0) 25082: __throw_bad_weak_ptr(); 25082: 25082: 25082: } 25082: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, 25082: true, 4, 25082: 0)); 25082: } 25082: 25082: template<> 25082: inline bool 25082: _Sp_counted_base<_S_single>:: 25082: _M_add_ref_lock_nothrow() 25082: { 25082: if (_M_use_count == 0) 25082: return false; 25082: ++_M_use_count; 25082: return true; 25082: } 25082: 25082: template<> 25082: inline bool 25082: _Sp_counted_base<_S_mutex>:: 25082: _M_add_ref_lock_nothrow() 25082: { 25082: __gnu_cxx::__scoped_lock sentry(*this); 25082: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) 25082: { 25082: _M_use_count = 0; 25082: return false; 25082: } 25082: return true; 25082: } 25082: 25082: template<> 25082: inline bool 25082: _Sp_counted_base<_S_atomic>:: 25082: _M_add_ref_lock_nothrow() 25082: { 25082: 25082: _Atomic_word __count = _M_get_use_count(); 25082: do 25082: { 25082: if (__count == 0) 25082: return false; 25082: 25082: 25082: } 25082: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, 25082: true, 4, 25082: 0)); 25082: return true; 25082: } 25082: 25082: template<> 25082: inline void 25082: _Sp_counted_base<_S_single>::_M_add_ref_copy() 25082: { ++_M_use_count; } 25082: 25082: template<> 25082: inline void 25082: _Sp_counted_base<_S_single>::_M_release() noexcept 25082: { 25082: if (--_M_use_count == 0) 25082: { 25082: _M_dispose(); 25082: if (--_M_weak_count == 0) 25082: _M_destroy(); 25082: } 25082: } 25082: 25082: template<> 25082: inline void 25082: _Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept 25082: { ++_M_weak_count; } 25082: 25082: template<> 25082: inline void 25082: _Sp_counted_base<_S_single>::_M_weak_release() noexcept 25082: { 25082: if (--_M_weak_count == 0) 25082: _M_destroy(); 25082: } 25082: 25082: template<> 25082: inline long 25082: _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept 25082: { return _M_use_count; } 25082: 25082: 25082: 25082: template 25082: class __shared_ptr; 25082: 25082: template 25082: class __weak_ptr; 25082: 25082: template 25082: class __enable_shared_from_this; 25082: 25082: template 25082: class shared_ptr; 25082: 25082: template 25082: class weak_ptr; 25082: 25082: template 25082: struct owner_less; 25082: 25082: template 25082: class enable_shared_from_this; 25082: 25082: template<_Lock_policy _Lp = __default_lock_policy> 25082: class __weak_count; 25082: 25082: template<_Lock_policy _Lp = __default_lock_policy> 25082: class __shared_count; 25082: 25082: 25082: 25082: template 25082: class _Sp_counted_ptr final : public _Sp_counted_base<_Lp> 25082: { 25082: public: 25082: explicit 25082: _Sp_counted_ptr(_Ptr __p) noexcept 25082: : _M_ptr(__p) { } 25082: 25082: virtual void 25082: _M_dispose() noexcept 25082: { delete _M_ptr; } 25082: 25082: virtual void 25082: _M_destroy() noexcept 25082: { delete this; } 25082: 25082: virtual void* 25082: _M_get_deleter(const std::type_info&) noexcept 25082: { return nullptr; } 25082: 25082: _Sp_counted_ptr(const _Sp_counted_ptr&) = delete; 25082: _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete; 25082: 25082: private: 25082: _Ptr _M_ptr; 25082: }; 25082: 25082: template<> 25082: inline void 25082: _Sp_counted_ptr::_M_dispose() noexcept { } 25082: 25082: template<> 25082: inline void 25082: _Sp_counted_ptr::_M_dispose() noexcept { } 25082: 25082: template<> 25082: inline void 25082: _Sp_counted_ptr::_M_dispose() noexcept { } 25082: 25082: template 25082: struct _Sp_ebo_helper; 25082: 25082: 25082: template 25082: struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp 25082: { 25082: explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { } 25082: explicit _Sp_ebo_helper(_Tp&& __tp) : _Tp(std::move(__tp)) { } 25082: 25082: static _Tp& 25082: _S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); } 25082: }; 25082: 25082: 25082: template 25082: struct _Sp_ebo_helper<_Nm, _Tp, false> 25082: { 25082: explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { } 25082: explicit _Sp_ebo_helper(_Tp&& __tp) : _M_tp(std::move(__tp)) { } 25082: 25082: static _Tp& 25082: _S_get(_Sp_ebo_helper& __eboh) 25082: { return __eboh._M_tp; } 25082: 25082: private: 25082: _Tp _M_tp; 25082: }; 25082: 25082: 25082: template 25082: class _Sp_counted_deleter final : public _Sp_counted_base<_Lp> 25082: { 25082: class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc> 25082: { 25082: typedef _Sp_ebo_helper<0, _Deleter> _Del_base; 25082: typedef _Sp_ebo_helper<1, _Alloc> _Alloc_base; 25082: 25082: public: 25082: _Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept 25082: : _M_ptr(__p), _Del_base(std::move(__d)), _Alloc_base(__a) 25082: { } 25082: 25082: _Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); } 25082: _Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); } 25082: 25082: _Ptr _M_ptr; 25082: }; 25082: 25082: public: 25082: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>; 25082: 25082: 25082: _Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept 25082: : _M_impl(__p, std::move(__d), _Alloc()) { } 25082: 25082: 25082: _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept 25082: : _M_impl(__p, std::move(__d), __a) { } 25082: 25082: ~_Sp_counted_deleter() noexcept { } 25082: 25082: virtual void 25082: _M_dispose() noexcept 25082: { _M_impl._M_del()(_M_impl._M_ptr); } 25082: 25082: virtual void 25082: _M_destroy() noexcept 25082: { 25082: __allocator_type __a(_M_impl._M_alloc()); 25082: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; 25082: this->~_Sp_counted_deleter(); 25082: } 25082: 25082: virtual void* 25082: _M_get_deleter(const std::type_info& __ti) noexcept 25082: { 25082: 25082: 25082: 25082: return __ti == typeid(_Deleter) 25082: ? std::__addressof(_M_impl._M_del()) 25082: : nullptr; 25082: 25082: 25082: 25082: } 25082: 25082: private: 25082: _Impl _M_impl; 25082: }; 25082: 25082: 25082: 25082: struct _Sp_make_shared_tag 25082: { 25082: private: 25082: template 25082: friend class _Sp_counted_ptr_inplace; 25082: 25082: static const type_info& 25082: _S_ti() noexcept __attribute__ ((__visibility__ ("default"))) 25082: { 25082: alignas(type_info) static constexpr char __tag[sizeof(type_info)] = { }; 25082: return reinterpret_cast(__tag); 25082: } 25082: }; 25082: 25082: template 25082: struct _Sp_alloc_shared_tag 25082: { 25082: const _Alloc& _M_a; 25082: }; 25082: 25082: template 25082: class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp> 25082: { 25082: class _Impl : _Sp_ebo_helper<0, _Alloc> 25082: { 25082: typedef _Sp_ebo_helper<0, _Alloc> _A_base; 25082: 25082: public: 25082: explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { } 25082: 25082: _Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); } 25082: 25082: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; 25082: }; 25082: 25082: public: 25082: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>; 25082: 25082: template 25082: _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) 25082: : _M_impl(__a) 25082: { 25082: 25082: 25082: allocator_traits<_Alloc>::construct(__a, _M_ptr(), 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: ~_Sp_counted_ptr_inplace() noexcept { } 25082: 25082: virtual void 25082: _M_dispose() noexcept 25082: { 25082: allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr()); 25082: } 25082: 25082: 25082: virtual void 25082: _M_destroy() noexcept 25082: { 25082: __allocator_type __a(_M_impl._M_alloc()); 25082: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; 25082: this->~_Sp_counted_ptr_inplace(); 25082: } 25082: 25082: private: 25082: friend class __shared_count<_Lp>; 25082: 25082: 25082: 25082: virtual void* 25082: _M_get_deleter(const std::type_info& __ti) noexcept override 25082: { 25082: 25082: 25082: if (&__ti == &_Sp_make_shared_tag::_S_ti()) 25082: return const_cast::type*>(_M_ptr()); 25082: 25082: 25082: 25082: else if (__ti == typeid(_Sp_make_shared_tag)) 25082: return const_cast::type*>(_M_ptr()); 25082: 25082: 25082: 25082: 25082: 25082: 25082: return nullptr; 25082: } 25082: 25082: _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); } 25082: 25082: _Impl _M_impl; 25082: }; 25082: 25082: 25082: struct __sp_array_delete 25082: { 25082: template 25082: void operator()(_Yp* __p) const { delete[] __p; } 25082: }; 25082: 25082: template<_Lock_policy _Lp> 25082: class __shared_count 25082: { 25082: template 25082: struct __not_alloc_shared_tag { using type = void; }; 25082: 25082: template 25082: struct __not_alloc_shared_tag<_Sp_alloc_shared_tag<_Tp>> { }; 25082: 25082: public: 25082: constexpr __shared_count() noexcept : _M_pi(0) 25082: { } 25082: 25082: template 25082: explicit 25082: __shared_count(_Ptr __p) : _M_pi(0) 25082: { 25082: try 25082: { 25082: _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p); 25082: } 25082: catch(...) 25082: { 25082: delete __p; 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: __shared_count(_Ptr __p, false_type) 25082: : __shared_count(__p) 25082: { } 25082: 25082: template 25082: __shared_count(_Ptr __p, true_type) 25082: : __shared_count(__p, __sp_array_delete{}, allocator()) 25082: { } 25082: 25082: template::type> 25082: __shared_count(_Ptr __p, _Deleter __d) 25082: : __shared_count(__p, std::move(__d), allocator()) 25082: { } 25082: 25082: template::type> 25082: __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0) 25082: { 25082: typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type; 25082: try 25082: { 25082: typename _Sp_cd_type::__allocator_type __a2(__a); 25082: auto __guard = std::__allocate_guarded(__a2); 25082: _Sp_cd_type* __mem = __guard.get(); 25082: ::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a)); 25082: _M_pi = __mem; 25082: __guard = nullptr; 25082: } 25082: catch(...) 25082: { 25082: __d(__p); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: __shared_count(_Tp*& __p, _Sp_alloc_shared_tag<_Alloc> __a, 25082: _Args&&... __args) 25082: { 25082: typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type; 25082: typename _Sp_cp_type::__allocator_type __a2(__a._M_a); 25082: auto __guard = std::__allocate_guarded(__a2); 25082: _Sp_cp_type* __mem = __guard.get(); 25082: auto __pi = ::new (__mem) 25082: _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...); 25082: __guard = nullptr; 25082: _M_pi = __pi; 25082: __p = __pi->_M_ptr(); 25082: } 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 25082: 25082: template 25082: explicit 25082: __shared_count(std::auto_ptr<_Tp>&& __r); 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: 25082: template 25082: explicit 25082: __shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0) 25082: { 25082: 25082: 25082: if (__r.get() == nullptr) 25082: return; 25082: 25082: using _Ptr = typename unique_ptr<_Tp, _Del>::pointer; 25082: using _Del2 = typename conditional::value, 25082: reference_wrapper::type>, 25082: _Del>::type; 25082: using _Sp_cd_type 25082: = _Sp_counted_deleter<_Ptr, _Del2, allocator, _Lp>; 25082: using _Alloc = allocator<_Sp_cd_type>; 25082: using _Alloc_traits = allocator_traits<_Alloc>; 25082: _Alloc __a; 25082: _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1); 25082: _Alloc_traits::construct(__a, __mem, __r.release(), 25082: __r.get_deleter()); 25082: _M_pi = __mem; 25082: } 25082: 25082: 25082: explicit __shared_count(const __weak_count<_Lp>& __r); 25082: 25082: 25082: explicit __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t); 25082: 25082: ~__shared_count() noexcept 25082: { 25082: if (_M_pi != nullptr) 25082: _M_pi->_M_release(); 25082: } 25082: 25082: __shared_count(const __shared_count& __r) noexcept 25082: : _M_pi(__r._M_pi) 25082: { 25082: if (_M_pi != 0) 25082: _M_pi->_M_add_ref_copy(); 25082: } 25082: 25082: __shared_count& 25082: operator=(const __shared_count& __r) noexcept 25082: { 25082: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 25082: if (__tmp != _M_pi) 25082: { 25082: if (__tmp != 0) 25082: __tmp->_M_add_ref_copy(); 25082: if (_M_pi != 0) 25082: _M_pi->_M_release(); 25082: _M_pi = __tmp; 25082: } 25082: return *this; 25082: } 25082: 25082: void 25082: _M_swap(__shared_count& __r) noexcept 25082: { 25082: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 25082: __r._M_pi = _M_pi; 25082: _M_pi = __tmp; 25082: } 25082: 25082: long 25082: _M_get_use_count() const noexcept 25082: { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } 25082: 25082: bool 25082: _M_unique() const noexcept 25082: { return this->_M_get_use_count() == 1; } 25082: 25082: void* 25082: _M_get_deleter(const std::type_info& __ti) const noexcept 25082: { return _M_pi ? _M_pi->_M_get_deleter(__ti) : nullptr; } 25082: 25082: bool 25082: _M_less(const __shared_count& __rhs) const noexcept 25082: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 25082: 25082: bool 25082: _M_less(const __weak_count<_Lp>& __rhs) const noexcept 25082: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 25082: 25082: 25082: friend inline bool 25082: operator==(const __shared_count& __a, const __shared_count& __b) noexcept 25082: { return __a._M_pi == __b._M_pi; } 25082: 25082: private: 25082: friend class __weak_count<_Lp>; 25082: 25082: _Sp_counted_base<_Lp>* _M_pi; 25082: }; 25082: 25082: 25082: template<_Lock_policy _Lp> 25082: class __weak_count 25082: { 25082: public: 25082: constexpr __weak_count() noexcept : _M_pi(nullptr) 25082: { } 25082: 25082: __weak_count(const __shared_count<_Lp>& __r) noexcept 25082: : _M_pi(__r._M_pi) 25082: { 25082: if (_M_pi != nullptr) 25082: _M_pi->_M_weak_add_ref(); 25082: } 25082: 25082: __weak_count(const __weak_count& __r) noexcept 25082: : _M_pi(__r._M_pi) 25082: { 25082: if (_M_pi != nullptr) 25082: _M_pi->_M_weak_add_ref(); 25082: } 25082: 25082: __weak_count(__weak_count&& __r) noexcept 25082: : _M_pi(__r._M_pi) 25082: { __r._M_pi = nullptr; } 25082: 25082: ~__weak_count() noexcept 25082: { 25082: if (_M_pi != nullptr) 25082: _M_pi->_M_weak_release(); 25082: } 25082: 25082: __weak_count& 25082: operator=(const __shared_count<_Lp>& __r) noexcept 25082: { 25082: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 25082: if (__tmp != nullptr) 25082: __tmp->_M_weak_add_ref(); 25082: if (_M_pi != nullptr) 25082: _M_pi->_M_weak_release(); 25082: _M_pi = __tmp; 25082: return *this; 25082: } 25082: 25082: __weak_count& 25082: operator=(const __weak_count& __r) noexcept 25082: { 25082: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 25082: if (__tmp != nullptr) 25082: __tmp->_M_weak_add_ref(); 25082: if (_M_pi != nullptr) 25082: _M_pi->_M_weak_release(); 25082: _M_pi = __tmp; 25082: return *this; 25082: } 25082: 25082: __weak_count& 25082: operator=(__weak_count&& __r) noexcept 25082: { 25082: if (_M_pi != nullptr) 25082: _M_pi->_M_weak_release(); 25082: _M_pi = __r._M_pi; 25082: __r._M_pi = nullptr; 25082: return *this; 25082: } 25082: 25082: void 25082: _M_swap(__weak_count& __r) noexcept 25082: { 25082: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 25082: __r._M_pi = _M_pi; 25082: _M_pi = __tmp; 25082: } 25082: 25082: long 25082: _M_get_use_count() const noexcept 25082: { return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; } 25082: 25082: bool 25082: _M_less(const __weak_count& __rhs) const noexcept 25082: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 25082: 25082: bool 25082: _M_less(const __shared_count<_Lp>& __rhs) const noexcept 25082: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 25082: 25082: 25082: friend inline bool 25082: operator==(const __weak_count& __a, const __weak_count& __b) noexcept 25082: { return __a._M_pi == __b._M_pi; } 25082: 25082: private: 25082: friend class __shared_count<_Lp>; 25082: 25082: _Sp_counted_base<_Lp>* _M_pi; 25082: }; 25082: 25082: 25082: template<_Lock_policy _Lp> 25082: inline 25082: __shared_count<_Lp>::__shared_count(const __weak_count<_Lp>& __r) 25082: : _M_pi(__r._M_pi) 25082: { 25082: if (_M_pi != nullptr) 25082: _M_pi->_M_add_ref_lock(); 25082: else 25082: __throw_bad_weak_ptr(); 25082: } 25082: 25082: 25082: template<_Lock_policy _Lp> 25082: inline 25082: __shared_count<_Lp>:: 25082: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) 25082: : _M_pi(__r._M_pi) 25082: { 25082: if (_M_pi != nullptr) 25082: if (!_M_pi->_M_add_ref_lock_nothrow()) 25082: _M_pi = nullptr; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __sp_compatible_with 25082: : false_type 25082: { }; 25082: 25082: template 25082: struct __sp_compatible_with<_Yp*, _Tp*> 25082: : is_convertible<_Yp*, _Tp*>::type 25082: { }; 25082: 25082: template 25082: struct __sp_compatible_with<_Up(*)[_Nm], _Up(*)[]> 25082: : true_type 25082: { }; 25082: 25082: template 25082: struct __sp_compatible_with<_Up(*)[_Nm], const _Up(*)[]> 25082: : true_type 25082: { }; 25082: 25082: template 25082: struct __sp_compatible_with<_Up(*)[_Nm], volatile _Up(*)[]> 25082: : true_type 25082: { }; 25082: 25082: template 25082: struct __sp_compatible_with<_Up(*)[_Nm], const volatile _Up(*)[]> 25082: : true_type 25082: { }; 25082: 25082: 25082: template 25082: struct __sp_is_constructible_arrN 25082: : false_type 25082: { }; 25082: 25082: template 25082: struct __sp_is_constructible_arrN<_Up, _Nm, _Yp, __void_t<_Yp[_Nm]>> 25082: : is_convertible<_Yp(*)[_Nm], _Up(*)[_Nm]>::type 25082: { }; 25082: 25082: 25082: template 25082: struct __sp_is_constructible_arr 25082: : false_type 25082: { }; 25082: 25082: template 25082: struct __sp_is_constructible_arr<_Up, _Yp, __void_t<_Yp[]>> 25082: : is_convertible<_Yp(*)[], _Up(*)[]>::type 25082: { }; 25082: 25082: 25082: template 25082: struct __sp_is_constructible; 25082: 25082: 25082: template 25082: struct __sp_is_constructible<_Up[_Nm], _Yp> 25082: : __sp_is_constructible_arrN<_Up, _Nm, _Yp>::type 25082: { }; 25082: 25082: 25082: template 25082: struct __sp_is_constructible<_Up[], _Yp> 25082: : __sp_is_constructible_arr<_Up, _Yp>::type 25082: { }; 25082: 25082: 25082: template 25082: struct __sp_is_constructible 25082: : is_convertible<_Yp*, _Tp*>::type 25082: { }; 25082: 25082: 25082: 25082: template::value, bool = is_void<_Tp>::value> 25082: class __shared_ptr_access 25082: { 25082: public: 25082: using element_type = _Tp; 25082: 25082: element_type& 25082: operator*() const noexcept 25082: { 25082: ; 25082: return *_M_get(); 25082: } 25082: 25082: element_type* 25082: operator->() const noexcept 25082: { 25082: ; 25082: return _M_get(); 25082: } 25082: 25082: private: 25082: element_type* 25082: _M_get() const noexcept 25082: { return static_cast*>(this)->get(); } 25082: }; 25082: 25082: 25082: template 25082: class __shared_ptr_access<_Tp, _Lp, false, true> 25082: { 25082: public: 25082: using element_type = _Tp; 25082: 25082: element_type* 25082: operator->() const noexcept 25082: { 25082: auto __ptr = static_cast*>(this)->get(); 25082: ; 25082: return __ptr; 25082: } 25082: }; 25082: 25082: 25082: template 25082: class __shared_ptr_access<_Tp, _Lp, true, false> 25082: { 25082: public: 25082: using element_type = typename remove_extent<_Tp>::type; 25082: # 1063 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 25082: element_type& 25082: operator[](ptrdiff_t __i) const 25082: { 25082: ; 25082: ; 25082: return _M_get()[__i]; 25082: } 25082: 25082: private: 25082: element_type* 25082: _M_get() const noexcept 25082: { return static_cast*>(this)->get(); } 25082: }; 25082: 25082: template 25082: class __shared_ptr 25082: : public __shared_ptr_access<_Tp, _Lp> 25082: { 25082: public: 25082: using element_type = typename remove_extent<_Tp>::type; 25082: 25082: private: 25082: 25082: template 25082: using _SafeConv 25082: = typename enable_if<__sp_is_constructible<_Tp, _Yp>::value>::type; 25082: 25082: 25082: template 25082: using _Compatible = typename 25082: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; 25082: 25082: 25082: template 25082: using _Assignable = _Compatible<_Yp, __shared_ptr&>; 25082: 25082: 25082: template::pointer> 25082: using _UniqCompatible = typename enable_if<__and_< 25082: __sp_compatible_with<_Yp*, _Tp*>, is_convertible<_Ptr, element_type*> 25082: >::value, _Res>::type; 25082: 25082: 25082: template 25082: using _UniqAssignable = _UniqCompatible<_Yp, _Del, __shared_ptr&>; 25082: 25082: public: 25082: 25082: 25082: using weak_type = __weak_ptr<_Tp, _Lp>; 25082: 25082: 25082: constexpr __shared_ptr() noexcept 25082: : _M_ptr(0), _M_refcount() 25082: { } 25082: 25082: template> 25082: explicit 25082: __shared_ptr(_Yp* __p) 25082: : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type()) 25082: { 25082: static_assert( !is_void<_Yp>::value, "incomplete type" ); 25082: static_assert( sizeof(_Yp) > 0, "incomplete type" ); 25082: _M_enable_shared_from_this_with(__p); 25082: } 25082: 25082: template> 25082: __shared_ptr(_Yp* __p, _Deleter __d) 25082: : _M_ptr(__p), _M_refcount(__p, std::move(__d)) 25082: { 25082: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, 25082: "deleter expression d(p) is well-formed"); 25082: _M_enable_shared_from_this_with(__p); 25082: } 25082: 25082: template> 25082: __shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 25082: : _M_ptr(__p), _M_refcount(__p, std::move(__d), std::move(__a)) 25082: { 25082: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, 25082: "deleter expression d(p) is well-formed"); 25082: _M_enable_shared_from_this_with(__p); 25082: } 25082: 25082: template 25082: __shared_ptr(nullptr_t __p, _Deleter __d) 25082: : _M_ptr(0), _M_refcount(__p, std::move(__d)) 25082: { } 25082: 25082: template 25082: __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 25082: : _M_ptr(0), _M_refcount(__p, std::move(__d), std::move(__a)) 25082: { } 25082: 25082: template 25082: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r, 25082: element_type* __p) noexcept 25082: : _M_ptr(__p), _M_refcount(__r._M_refcount) 25082: { } 25082: 25082: __shared_ptr(const __shared_ptr&) noexcept = default; 25082: __shared_ptr& operator=(const __shared_ptr&) noexcept = default; 25082: ~__shared_ptr() = default; 25082: 25082: template> 25082: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept 25082: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) 25082: { } 25082: 25082: __shared_ptr(__shared_ptr&& __r) noexcept 25082: : _M_ptr(__r._M_ptr), _M_refcount() 25082: { 25082: _M_refcount._M_swap(__r._M_refcount); 25082: __r._M_ptr = 0; 25082: } 25082: 25082: template> 25082: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r) noexcept 25082: : _M_ptr(__r._M_ptr), _M_refcount() 25082: { 25082: _M_refcount._M_swap(__r._M_refcount); 25082: __r._M_ptr = 0; 25082: } 25082: 25082: template> 25082: explicit __shared_ptr(const __weak_ptr<_Yp, _Lp>& __r) 25082: : _M_refcount(__r._M_refcount) 25082: { 25082: 25082: 25082: _M_ptr = __r._M_ptr; 25082: } 25082: 25082: 25082: template> 25082: __shared_ptr(unique_ptr<_Yp, _Del>&& __r) 25082: : _M_ptr(__r.get()), _M_refcount() 25082: { 25082: auto __raw = __to_address(__r.get()); 25082: _M_refcount = __shared_count<_Lp>(std::move(__r)); 25082: _M_enable_shared_from_this_with(__raw); 25082: } 25082: # 1228 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 25082: 25082: template> 25082: __shared_ptr(auto_ptr<_Yp>&& __r); 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { } 25082: 25082: template 25082: _Assignable<_Yp> 25082: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept 25082: { 25082: _M_ptr = __r._M_ptr; 25082: _M_refcount = __r._M_refcount; 25082: return *this; 25082: } 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 25082: template 25082: _Assignable<_Yp> 25082: operator=(auto_ptr<_Yp>&& __r) 25082: { 25082: __shared_ptr(std::move(__r)).swap(*this); 25082: return *this; 25082: } 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: __shared_ptr& 25082: operator=(__shared_ptr&& __r) noexcept 25082: { 25082: __shared_ptr(std::move(__r)).swap(*this); 25082: return *this; 25082: } 25082: 25082: template 25082: _Assignable<_Yp> 25082: operator=(__shared_ptr<_Yp, _Lp>&& __r) noexcept 25082: { 25082: __shared_ptr(std::move(__r)).swap(*this); 25082: return *this; 25082: } 25082: 25082: template 25082: _UniqAssignable<_Yp, _Del> 25082: operator=(unique_ptr<_Yp, _Del>&& __r) 25082: { 25082: __shared_ptr(std::move(__r)).swap(*this); 25082: return *this; 25082: } 25082: 25082: void 25082: reset() noexcept 25082: { __shared_ptr().swap(*this); } 25082: 25082: template 25082: _SafeConv<_Yp> 25082: reset(_Yp* __p) 25082: { 25082: 25082: ; 25082: __shared_ptr(__p).swap(*this); 25082: } 25082: 25082: template 25082: _SafeConv<_Yp> 25082: reset(_Yp* __p, _Deleter __d) 25082: { __shared_ptr(__p, std::move(__d)).swap(*this); } 25082: 25082: template 25082: _SafeConv<_Yp> 25082: reset(_Yp* __p, _Deleter __d, _Alloc __a) 25082: { __shared_ptr(__p, std::move(__d), std::move(__a)).swap(*this); } 25082: 25082: element_type* 25082: get() const noexcept 25082: { return _M_ptr; } 25082: 25082: explicit operator bool() const 25082: { return _M_ptr == 0 ? false : true; } 25082: 25082: bool 25082: unique() const noexcept 25082: { return _M_refcount._M_unique(); } 25082: 25082: long 25082: use_count() const noexcept 25082: { return _M_refcount._M_get_use_count(); } 25082: 25082: void 25082: swap(__shared_ptr<_Tp, _Lp>& __other) noexcept 25082: { 25082: std::swap(_M_ptr, __other._M_ptr); 25082: _M_refcount._M_swap(__other._M_refcount); 25082: } 25082: 25082: template 25082: bool 25082: owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const noexcept 25082: { return _M_refcount._M_less(__rhs._M_refcount); } 25082: 25082: template 25082: bool 25082: owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept 25082: { return _M_refcount._M_less(__rhs._M_refcount); } 25082: 25082: protected: 25082: 25082: template 25082: __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) 25082: : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...) 25082: { _M_enable_shared_from_this_with(_M_ptr); } 25082: 25082: template 25082: friend __shared_ptr<_Tp1, _Lp1> 25082: __allocate_shared(const _Alloc& __a, _Args&&... __args); 25082: 25082: 25082: 25082: __shared_ptr(const __weak_ptr<_Tp, _Lp>& __r, std::nothrow_t) 25082: : _M_refcount(__r._M_refcount, std::nothrow) 25082: { 25082: _M_ptr = _M_refcount._M_get_use_count() ? __r._M_ptr : nullptr; 25082: } 25082: 25082: friend class __weak_ptr<_Tp, _Lp>; 25082: 25082: private: 25082: 25082: template 25082: using __esft_base_t = decltype(__enable_shared_from_this_base( 25082: std::declval&>(), 25082: std::declval<_Yp*>())); 25082: 25082: 25082: template 25082: struct __has_esft_base 25082: : false_type { }; 25082: 25082: template 25082: struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> 25082: : __not_> { }; 25082: 25082: template::type> 25082: typename enable_if<__has_esft_base<_Yp2>::value>::type 25082: _M_enable_shared_from_this_with(_Yp* __p) noexcept 25082: { 25082: if (auto __base = __enable_shared_from_this_base(_M_refcount, __p)) 25082: __base->_M_weak_assign(const_cast<_Yp2*>(__p), _M_refcount); 25082: } 25082: 25082: template::type> 25082: typename enable_if::value>::type 25082: _M_enable_shared_from_this_with(_Yp*) noexcept 25082: { } 25082: 25082: void* 25082: _M_get_deleter(const std::type_info& __ti) const noexcept 25082: { return _M_refcount._M_get_deleter(__ti); } 25082: 25082: template friend class __shared_ptr; 25082: template friend class __weak_ptr; 25082: 25082: template 25082: friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept; 25082: 25082: template 25082: friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept; 25082: 25082: element_type* _M_ptr; 25082: __shared_count<_Lp> _M_refcount; 25082: }; 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator==(const __shared_ptr<_Tp1, _Lp>& __a, 25082: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 25082: { return __a.get() == __b.get(); } 25082: 25082: template 25082: inline bool 25082: operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 25082: { return !__a; } 25082: 25082: template 25082: inline bool 25082: operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 25082: { return !__a; } 25082: 25082: template 25082: inline bool 25082: operator!=(const __shared_ptr<_Tp1, _Lp>& __a, 25082: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 25082: { return __a.get() != __b.get(); } 25082: 25082: template 25082: inline bool 25082: operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 25082: { return (bool)__a; } 25082: 25082: template 25082: inline bool 25082: operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 25082: { return (bool)__a; } 25082: 25082: template 25082: inline bool 25082: operator<(const __shared_ptr<_Tp, _Lp>& __a, 25082: const __shared_ptr<_Up, _Lp>& __b) noexcept 25082: { 25082: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 25082: using _Up_elt = typename __shared_ptr<_Up, _Lp>::element_type; 25082: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; 25082: return less<_Vp>()(__a.get(), __b.get()); 25082: } 25082: 25082: template 25082: inline bool 25082: operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 25082: { 25082: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 25082: return less<_Tp_elt*>()(__a.get(), nullptr); 25082: } 25082: 25082: template 25082: inline bool 25082: operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 25082: { 25082: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 25082: return less<_Tp_elt*>()(nullptr, __a.get()); 25082: } 25082: 25082: template 25082: inline bool 25082: operator<=(const __shared_ptr<_Tp1, _Lp>& __a, 25082: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 25082: { return !(__b < __a); } 25082: 25082: template 25082: inline bool 25082: operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 25082: { return !(nullptr < __a); } 25082: 25082: template 25082: inline bool 25082: operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 25082: { return !(__a < nullptr); } 25082: 25082: template 25082: inline bool 25082: operator>(const __shared_ptr<_Tp1, _Lp>& __a, 25082: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 25082: { return (__b < __a); } 25082: 25082: template 25082: inline bool 25082: operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 25082: { return nullptr < __a; } 25082: 25082: template 25082: inline bool 25082: operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 25082: { return __a < nullptr; } 25082: 25082: template 25082: inline bool 25082: operator>=(const __shared_ptr<_Tp1, _Lp>& __a, 25082: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 25082: { return !(__a < __b); } 25082: 25082: template 25082: inline bool 25082: operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 25082: { return !(__a < nullptr); } 25082: 25082: template 25082: inline bool 25082: operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 25082: { return !(nullptr < __a); } 25082: 25082: template 25082: struct _Sp_less : public binary_function<_Sp, _Sp, bool> 25082: { 25082: bool 25082: operator()(const _Sp& __lhs, const _Sp& __rhs) const noexcept 25082: { 25082: typedef typename _Sp::element_type element_type; 25082: return std::less()(__lhs.get(), __rhs.get()); 25082: } 25082: }; 25082: 25082: template 25082: struct less<__shared_ptr<_Tp, _Lp>> 25082: : public _Sp_less<__shared_ptr<_Tp, _Lp>> 25082: { }; 25082: 25082: 25082: template 25082: inline void 25082: swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept 25082: { __a.swap(__b); } 25082: # 1544 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 25082: template 25082: inline __shared_ptr<_Tp, _Lp> 25082: static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 25082: { 25082: using _Sp = __shared_ptr<_Tp, _Lp>; 25082: return _Sp(__r, static_cast(__r.get())); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline __shared_ptr<_Tp, _Lp> 25082: const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 25082: { 25082: using _Sp = __shared_ptr<_Tp, _Lp>; 25082: return _Sp(__r, const_cast(__r.get())); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline __shared_ptr<_Tp, _Lp> 25082: dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 25082: { 25082: using _Sp = __shared_ptr<_Tp, _Lp>; 25082: if (auto* __p = dynamic_cast(__r.get())) 25082: return _Sp(__r, __p); 25082: return _Sp(); 25082: } 25082: 25082: 25082: template 25082: inline __shared_ptr<_Tp, _Lp> 25082: reinterpret_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 25082: { 25082: using _Sp = __shared_ptr<_Tp, _Lp>; 25082: return _Sp(__r, reinterpret_cast(__r.get())); 25082: } 25082: 25082: 25082: template 25082: class __weak_ptr 25082: { 25082: template 25082: using _Compatible = typename 25082: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; 25082: 25082: 25082: template 25082: using _Assignable = _Compatible<_Yp, __weak_ptr&>; 25082: 25082: public: 25082: using element_type = typename remove_extent<_Tp>::type; 25082: 25082: constexpr __weak_ptr() noexcept 25082: : _M_ptr(nullptr), _M_refcount() 25082: { } 25082: 25082: __weak_ptr(const __weak_ptr&) noexcept = default; 25082: 25082: ~__weak_ptr() = default; 25082: # 1626 "/usr/include/c++/8/bits/shared_ptr_base.h" 3 25082: template> 25082: __weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept 25082: : _M_refcount(__r._M_refcount) 25082: { _M_ptr = __r.lock().get(); } 25082: 25082: template> 25082: __weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept 25082: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) 25082: { } 25082: 25082: __weak_ptr(__weak_ptr&& __r) noexcept 25082: : _M_ptr(__r._M_ptr), _M_refcount(std::move(__r._M_refcount)) 25082: { __r._M_ptr = nullptr; } 25082: 25082: template> 25082: __weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept 25082: : _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount)) 25082: { __r._M_ptr = nullptr; } 25082: 25082: __weak_ptr& 25082: operator=(const __weak_ptr& __r) noexcept = default; 25082: 25082: template 25082: _Assignable<_Yp> 25082: operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept 25082: { 25082: _M_ptr = __r.lock().get(); 25082: _M_refcount = __r._M_refcount; 25082: return *this; 25082: } 25082: 25082: template 25082: _Assignable<_Yp> 25082: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept 25082: { 25082: _M_ptr = __r._M_ptr; 25082: _M_refcount = __r._M_refcount; 25082: return *this; 25082: } 25082: 25082: __weak_ptr& 25082: operator=(__weak_ptr&& __r) noexcept 25082: { 25082: _M_ptr = __r._M_ptr; 25082: _M_refcount = std::move(__r._M_refcount); 25082: __r._M_ptr = nullptr; 25082: return *this; 25082: } 25082: 25082: template 25082: _Assignable<_Yp> 25082: operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept 25082: { 25082: _M_ptr = __r.lock().get(); 25082: _M_refcount = std::move(__r._M_refcount); 25082: __r._M_ptr = nullptr; 25082: return *this; 25082: } 25082: 25082: __shared_ptr<_Tp, _Lp> 25082: lock() const noexcept 25082: { return __shared_ptr(*this, std::nothrow); } 25082: 25082: long 25082: use_count() const noexcept 25082: { return _M_refcount._M_get_use_count(); } 25082: 25082: bool 25082: expired() const noexcept 25082: { return _M_refcount._M_get_use_count() == 0; } 25082: 25082: template 25082: bool 25082: owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const noexcept 25082: { return _M_refcount._M_less(__rhs._M_refcount); } 25082: 25082: template 25082: bool 25082: owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const noexcept 25082: { return _M_refcount._M_less(__rhs._M_refcount); } 25082: 25082: void 25082: reset() noexcept 25082: { __weak_ptr().swap(*this); } 25082: 25082: void 25082: swap(__weak_ptr& __s) noexcept 25082: { 25082: std::swap(_M_ptr, __s._M_ptr); 25082: _M_refcount._M_swap(__s._M_refcount); 25082: } 25082: 25082: private: 25082: 25082: void 25082: _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept 25082: { 25082: if (use_count() == 0) 25082: { 25082: _M_ptr = __ptr; 25082: _M_refcount = __refcount; 25082: } 25082: } 25082: 25082: template friend class __shared_ptr; 25082: template friend class __weak_ptr; 25082: friend class __enable_shared_from_this<_Tp, _Lp>; 25082: friend class enable_shared_from_this<_Tp>; 25082: 25082: element_type* _M_ptr; 25082: __weak_count<_Lp> _M_refcount; 25082: }; 25082: 25082: 25082: template 25082: inline void 25082: swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept 25082: { __a.swap(__b); } 25082: 25082: template 25082: struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool> 25082: { 25082: bool 25082: operator()(const _Tp& __lhs, const _Tp& __rhs) const noexcept 25082: { return __lhs.owner_before(__rhs); } 25082: 25082: bool 25082: operator()(const _Tp& __lhs, const _Tp1& __rhs) const noexcept 25082: { return __lhs.owner_before(__rhs); } 25082: 25082: bool 25082: operator()(const _Tp1& __lhs, const _Tp& __rhs) const noexcept 25082: { return __lhs.owner_before(__rhs); } 25082: }; 25082: 25082: template<> 25082: struct _Sp_owner_less 25082: { 25082: template 25082: auto 25082: operator()(const _Tp& __lhs, const _Up& __rhs) const noexcept 25082: -> decltype(__lhs.owner_before(__rhs)) 25082: { return __lhs.owner_before(__rhs); } 25082: 25082: using is_transparent = void; 25082: }; 25082: 25082: template 25082: struct owner_less<__shared_ptr<_Tp, _Lp>> 25082: : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>> 25082: { }; 25082: 25082: template 25082: struct owner_less<__weak_ptr<_Tp, _Lp>> 25082: : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>> 25082: { }; 25082: 25082: 25082: template 25082: class __enable_shared_from_this 25082: { 25082: protected: 25082: constexpr __enable_shared_from_this() noexcept { } 25082: 25082: __enable_shared_from_this(const __enable_shared_from_this&) noexcept { } 25082: 25082: __enable_shared_from_this& 25082: operator=(const __enable_shared_from_this&) noexcept 25082: { return *this; } 25082: 25082: ~__enable_shared_from_this() { } 25082: 25082: public: 25082: __shared_ptr<_Tp, _Lp> 25082: shared_from_this() 25082: { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } 25082: 25082: __shared_ptr 25082: shared_from_this() const 25082: { return __shared_ptr(this->_M_weak_this); } 25082: 25082: 25082: __weak_ptr<_Tp, _Lp> 25082: weak_from_this() noexcept 25082: { return this->_M_weak_this; } 25082: 25082: __weak_ptr 25082: weak_from_this() const noexcept 25082: { return this->_M_weak_this; } 25082: 25082: 25082: private: 25082: template 25082: void 25082: _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept 25082: { _M_weak_this._M_assign(__p, __n); } 25082: 25082: friend const __enable_shared_from_this* 25082: __enable_shared_from_this_base(const __shared_count<_Lp>&, 25082: const __enable_shared_from_this* __p) 25082: { return __p; } 25082: 25082: template 25082: friend class __shared_ptr; 25082: 25082: mutable __weak_ptr<_Tp, _Lp> _M_weak_this; 25082: }; 25082: 25082: template 25082: inline __shared_ptr<_Tp, _Lp> 25082: __allocate_shared(const _Alloc& __a, _Args&&... __args) 25082: { 25082: return __shared_ptr<_Tp, _Lp>(_Sp_alloc_shared_tag<_Alloc>{__a}, 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: template 25082: inline __shared_ptr<_Tp, _Lp> 25082: __make_shared(_Args&&... __args) 25082: { 25082: typedef typename std::remove_const<_Tp>::type _Tp_nc; 25082: return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(), 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: 25082: template 25082: struct hash<__shared_ptr<_Tp, _Lp>> 25082: : public __hash_base> 25082: { 25082: size_t 25082: operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept 25082: { 25082: return hash::element_type*>()( 25082: __s.get()); 25082: } 25082: }; 25082: 25082: 25082: } 25082: # 53 "/usr/include/c++/8/bits/shared_ptr.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline std::basic_ostream<_Ch, _Tr>& 25082: operator<<(std::basic_ostream<_Ch, _Tr>& __os, 25082: const __shared_ptr<_Tp, _Lp>& __p) 25082: { 25082: __os << __p.get(); 25082: return __os; 25082: } 25082: 25082: template 25082: inline _Del* 25082: get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept 25082: { 25082: 25082: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); 25082: 25082: 25082: 25082: } 25082: 25082: 25082: template 25082: inline _Del* 25082: get_deleter(const shared_ptr<_Tp>& __p) noexcept 25082: { 25082: 25082: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class shared_ptr : public __shared_ptr<_Tp> 25082: { 25082: template 25082: using _Constructible = typename enable_if< 25082: is_constructible<__shared_ptr<_Tp>, _Args...>::value 25082: >::type; 25082: 25082: template 25082: using _Assignable = typename enable_if< 25082: is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr& 25082: >::type; 25082: 25082: public: 25082: 25082: using element_type = typename __shared_ptr<_Tp>::element_type; 25082: 25082: 25082: 25082: using weak_type = weak_ptr<_Tp>; 25082: 25082: 25082: 25082: 25082: 25082: constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } 25082: 25082: shared_ptr(const shared_ptr&) noexcept = default; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template> 25082: explicit 25082: shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } 25082: # 154 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: template> 25082: shared_ptr(_Yp* __p, _Deleter __d) 25082: : __shared_ptr<_Tp>(__p, std::move(__d)) { } 25082: # 172 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: template 25082: shared_ptr(nullptr_t __p, _Deleter __d) 25082: : __shared_ptr<_Tp>(__p, std::move(__d)) { } 25082: # 191 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: template> 25082: shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 25082: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } 25082: # 211 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: template 25082: shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 25082: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } 25082: # 233 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: template 25082: shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept 25082: : __shared_ptr<_Tp>(__r, __p) { } 25082: # 244 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: template&>> 25082: shared_ptr(const shared_ptr<_Yp>& __r) noexcept 25082: : __shared_ptr<_Tp>(__r) { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: shared_ptr(shared_ptr&& __r) noexcept 25082: : __shared_ptr<_Tp>(std::move(__r)) { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template>> 25082: shared_ptr(shared_ptr<_Yp>&& __r) noexcept 25082: : __shared_ptr<_Tp>(std::move(__r)) { } 25082: # 274 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: template&>> 25082: explicit shared_ptr(const weak_ptr<_Yp>& __r) 25082: : __shared_ptr<_Tp>(__r) { } 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 25082: template>> 25082: shared_ptr(auto_ptr<_Yp>&& __r); 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: 25082: 25082: template>> 25082: shared_ptr(unique_ptr<_Yp, _Del>&& __r) 25082: : __shared_ptr<_Tp>(std::move(__r)) { } 25082: # 307 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } 25082: 25082: shared_ptr& operator=(const shared_ptr&) noexcept = default; 25082: 25082: template 25082: _Assignable&> 25082: operator=(const shared_ptr<_Yp>& __r) noexcept 25082: { 25082: this->__shared_ptr<_Tp>::operator=(__r); 25082: return *this; 25082: } 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 25082: template 25082: _Assignable> 25082: operator=(auto_ptr<_Yp>&& __r) 25082: { 25082: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 25082: return *this; 25082: } 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: shared_ptr& 25082: operator=(shared_ptr&& __r) noexcept 25082: { 25082: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 25082: return *this; 25082: } 25082: 25082: template 25082: _Assignable> 25082: operator=(shared_ptr<_Yp>&& __r) noexcept 25082: { 25082: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 25082: return *this; 25082: } 25082: 25082: template 25082: _Assignable> 25082: operator=(unique_ptr<_Yp, _Del>&& __r) 25082: { 25082: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 25082: return *this; 25082: } 25082: 25082: private: 25082: 25082: template 25082: shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) 25082: : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...) 25082: { } 25082: 25082: template 25082: friend shared_ptr<_Yp> 25082: allocate_shared(const _Alloc& __a, _Args&&... __args); 25082: 25082: 25082: shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) 25082: : __shared_ptr<_Tp>(__r, std::nothrow) { } 25082: 25082: friend class weak_ptr<_Tp>; 25082: }; 25082: 25082: 25082: template 25082: shared_ptr(weak_ptr<_Tp>) -> shared_ptr<_Tp>; 25082: template 25082: shared_ptr(unique_ptr<_Tp, _Del>) -> shared_ptr<_Tp>; 25082: 25082: 25082: 25082: template 25082: inline bool 25082: operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 25082: { return __a.get() == __b.get(); } 25082: 25082: template 25082: inline bool 25082: operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 25082: { return !__a; } 25082: 25082: template 25082: inline bool 25082: operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 25082: { return !__a; } 25082: 25082: template 25082: inline bool 25082: operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 25082: { return __a.get() != __b.get(); } 25082: 25082: template 25082: inline bool 25082: operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 25082: { return (bool)__a; } 25082: 25082: template 25082: inline bool 25082: operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 25082: { return (bool)__a; } 25082: 25082: template 25082: inline bool 25082: operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 25082: { 25082: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 25082: using _Up_elt = typename shared_ptr<_Up>::element_type; 25082: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; 25082: return less<_Vp>()(__a.get(), __b.get()); 25082: } 25082: 25082: template 25082: inline bool 25082: operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 25082: { 25082: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 25082: return less<_Tp_elt*>()(__a.get(), nullptr); 25082: } 25082: 25082: template 25082: inline bool 25082: operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 25082: { 25082: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 25082: return less<_Tp_elt*>()(nullptr, __a.get()); 25082: } 25082: 25082: template 25082: inline bool 25082: operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 25082: { return !(__b < __a); } 25082: 25082: template 25082: inline bool 25082: operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 25082: { return !(nullptr < __a); } 25082: 25082: template 25082: inline bool 25082: operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 25082: { return !(__a < nullptr); } 25082: 25082: template 25082: inline bool 25082: operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 25082: { return (__b < __a); } 25082: 25082: template 25082: inline bool 25082: operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 25082: { return nullptr < __a; } 25082: 25082: template 25082: inline bool 25082: operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 25082: { return __a < nullptr; } 25082: 25082: template 25082: inline bool 25082: operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 25082: { return !(__a < __b); } 25082: 25082: template 25082: inline bool 25082: operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 25082: { return !(__a < nullptr); } 25082: 25082: template 25082: inline bool 25082: operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 25082: { return !(nullptr < __a); } 25082: 25082: template 25082: struct less> : public _Sp_less> 25082: { }; 25082: 25082: 25082: template 25082: inline void 25082: swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept 25082: { __a.swap(__b); } 25082: 25082: 25082: template 25082: inline shared_ptr<_Tp> 25082: static_pointer_cast(const shared_ptr<_Up>& __r) noexcept 25082: { 25082: using _Sp = shared_ptr<_Tp>; 25082: return _Sp(__r, static_cast(__r.get())); 25082: } 25082: 25082: template 25082: inline shared_ptr<_Tp> 25082: const_pointer_cast(const shared_ptr<_Up>& __r) noexcept 25082: { 25082: using _Sp = shared_ptr<_Tp>; 25082: return _Sp(__r, const_cast(__r.get())); 25082: } 25082: 25082: template 25082: inline shared_ptr<_Tp> 25082: dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept 25082: { 25082: using _Sp = shared_ptr<_Tp>; 25082: if (auto* __p = dynamic_cast(__r.get())) 25082: return _Sp(__r, __p); 25082: return _Sp(); 25082: } 25082: 25082: 25082: template 25082: inline shared_ptr<_Tp> 25082: reinterpret_pointer_cast(const shared_ptr<_Up>& __r) noexcept 25082: { 25082: using _Sp = shared_ptr<_Tp>; 25082: return _Sp(__r, reinterpret_cast(__r.get())); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class weak_ptr : public __weak_ptr<_Tp> 25082: { 25082: template 25082: using _Constructible = typename enable_if< 25082: is_constructible<__weak_ptr<_Tp>, _Arg>::value 25082: >::type; 25082: 25082: template 25082: using _Assignable = typename enable_if< 25082: is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr& 25082: >::type; 25082: 25082: public: 25082: constexpr weak_ptr() noexcept = default; 25082: 25082: template&>> 25082: weak_ptr(const shared_ptr<_Yp>& __r) noexcept 25082: : __weak_ptr<_Tp>(__r) { } 25082: 25082: weak_ptr(const weak_ptr&) noexcept = default; 25082: 25082: template&>> 25082: weak_ptr(const weak_ptr<_Yp>& __r) noexcept 25082: : __weak_ptr<_Tp>(__r) { } 25082: 25082: weak_ptr(weak_ptr&&) noexcept = default; 25082: 25082: template>> 25082: weak_ptr(weak_ptr<_Yp>&& __r) noexcept 25082: : __weak_ptr<_Tp>(std::move(__r)) { } 25082: 25082: weak_ptr& 25082: operator=(const weak_ptr& __r) noexcept = default; 25082: 25082: template 25082: _Assignable&> 25082: operator=(const weak_ptr<_Yp>& __r) noexcept 25082: { 25082: this->__weak_ptr<_Tp>::operator=(__r); 25082: return *this; 25082: } 25082: 25082: template 25082: _Assignable&> 25082: operator=(const shared_ptr<_Yp>& __r) noexcept 25082: { 25082: this->__weak_ptr<_Tp>::operator=(__r); 25082: return *this; 25082: } 25082: 25082: weak_ptr& 25082: operator=(weak_ptr&& __r) noexcept = default; 25082: 25082: template 25082: _Assignable> 25082: operator=(weak_ptr<_Yp>&& __r) noexcept 25082: { 25082: this->__weak_ptr<_Tp>::operator=(std::move(__r)); 25082: return *this; 25082: } 25082: 25082: shared_ptr<_Tp> 25082: lock() const noexcept 25082: { return shared_ptr<_Tp>(*this, std::nothrow); } 25082: }; 25082: 25082: 25082: template 25082: weak_ptr(shared_ptr<_Tp>) -> weak_ptr<_Tp>; 25082: 25082: 25082: 25082: template 25082: inline void 25082: swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept 25082: { __a.swap(__b); } 25082: 25082: 25082: 25082: template 25082: struct owner_less; 25082: 25082: 25082: template<> 25082: struct owner_less : _Sp_owner_less 25082: { }; 25082: 25082: 25082: template 25082: struct owner_less> 25082: : public _Sp_owner_less, weak_ptr<_Tp>> 25082: { }; 25082: 25082: 25082: template 25082: struct owner_less> 25082: : public _Sp_owner_less, shared_ptr<_Tp>> 25082: { }; 25082: 25082: 25082: 25082: 25082: template 25082: class enable_shared_from_this 25082: { 25082: protected: 25082: constexpr enable_shared_from_this() noexcept { } 25082: 25082: enable_shared_from_this(const enable_shared_from_this&) noexcept { } 25082: 25082: enable_shared_from_this& 25082: operator=(const enable_shared_from_this&) noexcept 25082: { return *this; } 25082: 25082: ~enable_shared_from_this() { } 25082: 25082: public: 25082: shared_ptr<_Tp> 25082: shared_from_this() 25082: { return shared_ptr<_Tp>(this->_M_weak_this); } 25082: 25082: shared_ptr 25082: shared_from_this() const 25082: { return shared_ptr(this->_M_weak_this); } 25082: 25082: 25082: 25082: weak_ptr<_Tp> 25082: weak_from_this() noexcept 25082: { return this->_M_weak_this; } 25082: 25082: weak_ptr 25082: weak_from_this() const noexcept 25082: { return this->_M_weak_this; } 25082: 25082: 25082: private: 25082: template 25082: void 25082: _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept 25082: { _M_weak_this._M_assign(__p, __n); } 25082: 25082: 25082: friend const enable_shared_from_this* 25082: __enable_shared_from_this_base(const __shared_count<>&, 25082: const enable_shared_from_this* __p) 25082: { return __p; } 25082: 25082: template 25082: friend class __shared_ptr; 25082: 25082: mutable weak_ptr<_Tp> _M_weak_this; 25082: }; 25082: # 701 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: template 25082: inline shared_ptr<_Tp> 25082: allocate_shared(const _Alloc& __a, _Args&&... __args) 25082: { 25082: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, 25082: std::forward<_Args>(__args)...); 25082: } 25082: # 716 "/usr/include/c++/8/bits/shared_ptr.h" 3 25082: template 25082: inline shared_ptr<_Tp> 25082: make_shared(_Args&&... __args) 25082: { 25082: typedef typename std::remove_cv<_Tp>::type _Tp_nc; 25082: return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(), 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: 25082: template 25082: struct hash> 25082: : public __hash_base> 25082: { 25082: size_t 25082: operator()(const shared_ptr<_Tp>& __s) const noexcept 25082: { 25082: return std::hash::element_type*>()(__s.get()); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: } 25082: # 82 "/usr/include/c++/8/memory" 2 3 25082: # 1 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 25082: # 1 "/usr/include/c++/8/bits/atomic_base.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/atomic_base.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/atomic_base.h" 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/atomic_lockfree_defines.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/atomic_lockfree_defines.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/atomic_lockfree_defines.h" 3 25082: # 38 "/usr/include/c++/8/bits/atomic_base.h" 2 3 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 55 "/usr/include/c++/8/bits/atomic_base.h" 3 25082: typedef enum memory_order 25082: { 25082: memory_order_relaxed, 25082: memory_order_consume, 25082: memory_order_acquire, 25082: memory_order_release, 25082: memory_order_acq_rel, 25082: memory_order_seq_cst 25082: } memory_order; 25082: 25082: enum __memory_order_modifier 25082: { 25082: __memory_order_mask = 0x0ffff, 25082: __memory_order_modifier_mask = 0xffff0000, 25082: __memory_order_hle_acquire = 0x10000, 25082: __memory_order_hle_release = 0x20000 25082: }; 25082: 25082: constexpr memory_order 25082: operator|(memory_order __m, __memory_order_modifier __mod) 25082: { 25082: return memory_order(__m | int(__mod)); 25082: } 25082: 25082: constexpr memory_order 25082: operator&(memory_order __m, __memory_order_modifier __mod) 25082: { 25082: return memory_order(__m & int(__mod)); 25082: } 25082: 25082: 25082: constexpr memory_order 25082: __cmpexch_failure_order2(memory_order __m) noexcept 25082: { 25082: return __m == memory_order_acq_rel ? memory_order_acquire 25082: : __m == memory_order_release ? memory_order_relaxed : __m; 25082: } 25082: 25082: constexpr memory_order 25082: __cmpexch_failure_order(memory_order __m) noexcept 25082: { 25082: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) 25082: | (__m & __memory_order_modifier_mask)); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) void 25082: atomic_thread_fence(memory_order __m) noexcept 25082: { __atomic_thread_fence(__m); } 25082: 25082: inline __attribute__((__always_inline__)) void 25082: atomic_signal_fence(memory_order __m) noexcept 25082: { __atomic_signal_fence(__m); } 25082: 25082: 25082: template 25082: inline _Tp 25082: kill_dependency(_Tp __y) noexcept 25082: { 25082: _Tp __ret(__y); 25082: return __ret; 25082: } 25082: 25082: 25082: 25082: template 25082: struct __atomic_base; 25082: 25082: 25082: 25082: 25082: template 25082: struct atomic; 25082: 25082: template 25082: struct atomic<_Tp*>; 25082: 25082: 25082: 25082: typedef bool __atomic_flag_data_type; 25082: # 148 "/usr/include/c++/8/bits/atomic_base.h" 3 25082: extern "C" { 25082: 25082: struct __atomic_flag_base 25082: { 25082: __atomic_flag_data_type _M_i; 25082: }; 25082: 25082: } 25082: 25082: 25082: 25082: 25082: struct atomic_flag : public __atomic_flag_base 25082: { 25082: atomic_flag() noexcept = default; 25082: ~atomic_flag() noexcept = default; 25082: atomic_flag(const atomic_flag&) = delete; 25082: atomic_flag& operator=(const atomic_flag&) = delete; 25082: atomic_flag& operator=(const atomic_flag&) volatile = delete; 25082: 25082: 25082: constexpr atomic_flag(bool __i) noexcept 25082: : __atomic_flag_base{ _S_init(__i) } 25082: { } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: test_and_set(memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: return __atomic_test_and_set (&_M_i, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: return __atomic_test_and_set (&_M_i, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) void 25082: clear(memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: memory_order __b = __m & __memory_order_mask; 25082: ; 25082: ; 25082: ; 25082: 25082: __atomic_clear (&_M_i, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) void 25082: clear(memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: memory_order __b = __m & __memory_order_mask; 25082: ; 25082: ; 25082: ; 25082: 25082: __atomic_clear (&_M_i, __m); 25082: } 25082: 25082: private: 25082: static constexpr __atomic_flag_data_type 25082: _S_init(bool __i) 25082: { return __i ? 1 : 0; } 25082: }; 25082: # 237 "/usr/include/c++/8/bits/atomic_base.h" 3 25082: template 25082: struct __atomic_base 25082: { 25082: private: 25082: typedef _ITp __int_type; 25082: 25082: static constexpr int _S_alignment = 25082: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); 25082: 25082: alignas(_S_alignment) __int_type _M_i; 25082: 25082: public: 25082: __atomic_base() noexcept = default; 25082: ~__atomic_base() noexcept = default; 25082: __atomic_base(const __atomic_base&) = delete; 25082: __atomic_base& operator=(const __atomic_base&) = delete; 25082: __atomic_base& operator=(const __atomic_base&) volatile = delete; 25082: 25082: 25082: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } 25082: 25082: operator __int_type() const noexcept 25082: { return load(); } 25082: 25082: operator __int_type() const volatile noexcept 25082: { return load(); } 25082: 25082: __int_type 25082: operator=(__int_type __i) noexcept 25082: { 25082: store(__i); 25082: return __i; 25082: } 25082: 25082: __int_type 25082: operator=(__int_type __i) volatile noexcept 25082: { 25082: store(__i); 25082: return __i; 25082: } 25082: 25082: __int_type 25082: operator++(int) noexcept 25082: { return fetch_add(1); } 25082: 25082: __int_type 25082: operator++(int) volatile noexcept 25082: { return fetch_add(1); } 25082: 25082: __int_type 25082: operator--(int) noexcept 25082: { return fetch_sub(1); } 25082: 25082: __int_type 25082: operator--(int) volatile noexcept 25082: { return fetch_sub(1); } 25082: 25082: __int_type 25082: operator++() noexcept 25082: { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator++() volatile noexcept 25082: { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator--() noexcept 25082: { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator--() volatile noexcept 25082: { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator+=(__int_type __i) noexcept 25082: { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator+=(__int_type __i) volatile noexcept 25082: { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator-=(__int_type __i) noexcept 25082: { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator-=(__int_type __i) volatile noexcept 25082: { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator&=(__int_type __i) noexcept 25082: { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator&=(__int_type __i) volatile noexcept 25082: { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator|=(__int_type __i) noexcept 25082: { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator|=(__int_type __i) volatile noexcept 25082: { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator^=(__int_type __i) noexcept 25082: { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } 25082: 25082: __int_type 25082: operator^=(__int_type __i) volatile noexcept 25082: { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } 25082: 25082: bool 25082: is_lock_free() const noexcept 25082: { 25082: 25082: return __atomic_is_lock_free(sizeof(_M_i), 25082: reinterpret_cast(-__alignof(_M_i))); 25082: } 25082: 25082: bool 25082: is_lock_free() const volatile noexcept 25082: { 25082: 25082: return __atomic_is_lock_free(sizeof(_M_i), 25082: reinterpret_cast(-__alignof(_M_i))); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) void 25082: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: memory_order __b = __m & __memory_order_mask; 25082: ; 25082: ; 25082: ; 25082: 25082: __atomic_store_n(&_M_i, __i, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) void 25082: store(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: memory_order __b = __m & __memory_order_mask; 25082: ; 25082: ; 25082: ; 25082: 25082: __atomic_store_n(&_M_i, __i, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: load(memory_order __m = memory_order_seq_cst) const noexcept 25082: { 25082: memory_order __b = __m & __memory_order_mask; 25082: ; 25082: ; 25082: 25082: return __atomic_load_n(&_M_i, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 25082: { 25082: memory_order __b = __m & __memory_order_mask; 25082: ; 25082: ; 25082: 25082: return __atomic_load_n(&_M_i, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: exchange(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: return __atomic_exchange_n(&_M_i, __i, __m); 25082: } 25082: 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: exchange(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: return __atomic_exchange_n(&_M_i, __i, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: compare_exchange_weak(__int_type& __i1, __int_type __i2, 25082: memory_order __m1, memory_order __m2) noexcept 25082: { 25082: memory_order __b2 = __m2 & __memory_order_mask; 25082: memory_order __b1 = __m1 & __memory_order_mask; 25082: ; 25082: ; 25082: ; 25082: 25082: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: compare_exchange_weak(__int_type& __i1, __int_type __i2, 25082: memory_order __m1, 25082: memory_order __m2) volatile noexcept 25082: { 25082: memory_order __b2 = __m2 & __memory_order_mask; 25082: memory_order __b1 = __m1 & __memory_order_mask; 25082: ; 25082: ; 25082: ; 25082: 25082: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: compare_exchange_weak(__int_type& __i1, __int_type __i2, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: return compare_exchange_weak(__i1, __i2, __m, 25082: __cmpexch_failure_order(__m)); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: compare_exchange_weak(__int_type& __i1, __int_type __i2, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: return compare_exchange_weak(__i1, __i2, __m, 25082: __cmpexch_failure_order(__m)); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: compare_exchange_strong(__int_type& __i1, __int_type __i2, 25082: memory_order __m1, memory_order __m2) noexcept 25082: { 25082: memory_order __b2 = __m2 & __memory_order_mask; 25082: memory_order __b1 = __m1 & __memory_order_mask; 25082: ; 25082: ; 25082: ; 25082: 25082: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: compare_exchange_strong(__int_type& __i1, __int_type __i2, 25082: memory_order __m1, 25082: memory_order __m2) volatile noexcept 25082: { 25082: memory_order __b2 = __m2 & __memory_order_mask; 25082: memory_order __b1 = __m1 & __memory_order_mask; 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: compare_exchange_strong(__int_type& __i1, __int_type __i2, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: return compare_exchange_strong(__i1, __i2, __m, 25082: __cmpexch_failure_order(__m)); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: compare_exchange_strong(__int_type& __i1, __int_type __i2, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: return compare_exchange_strong(__i1, __i2, __m, 25082: __cmpexch_failure_order(__m)); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: fetch_add(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return __atomic_fetch_add(&_M_i, __i, __m); } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: fetch_add(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return __atomic_fetch_add(&_M_i, __i, __m); } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: fetch_sub(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return __atomic_fetch_sub(&_M_i, __i, __m); } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: fetch_sub(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return __atomic_fetch_sub(&_M_i, __i, __m); } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: fetch_and(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return __atomic_fetch_and(&_M_i, __i, __m); } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: fetch_and(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return __atomic_fetch_and(&_M_i, __i, __m); } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: fetch_or(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return __atomic_fetch_or(&_M_i, __i, __m); } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: fetch_or(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return __atomic_fetch_or(&_M_i, __i, __m); } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: fetch_xor(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return __atomic_fetch_xor(&_M_i, __i, __m); } 25082: 25082: inline __attribute__((__always_inline__)) __int_type 25082: fetch_xor(__int_type __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return __atomic_fetch_xor(&_M_i, __i, __m); } 25082: }; 25082: 25082: 25082: 25082: template 25082: struct __atomic_base<_PTp*> 25082: { 25082: private: 25082: typedef _PTp* __pointer_type; 25082: 25082: __pointer_type _M_p; 25082: 25082: 25082: constexpr ptrdiff_t 25082: _M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); } 25082: 25082: constexpr ptrdiff_t 25082: _M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); } 25082: 25082: public: 25082: __atomic_base() noexcept = default; 25082: ~__atomic_base() noexcept = default; 25082: __atomic_base(const __atomic_base&) = delete; 25082: __atomic_base& operator=(const __atomic_base&) = delete; 25082: __atomic_base& operator=(const __atomic_base&) volatile = delete; 25082: 25082: 25082: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } 25082: 25082: operator __pointer_type() const noexcept 25082: { return load(); } 25082: 25082: operator __pointer_type() const volatile noexcept 25082: { return load(); } 25082: 25082: __pointer_type 25082: operator=(__pointer_type __p) noexcept 25082: { 25082: store(__p); 25082: return __p; 25082: } 25082: 25082: __pointer_type 25082: operator=(__pointer_type __p) volatile noexcept 25082: { 25082: store(__p); 25082: return __p; 25082: } 25082: 25082: __pointer_type 25082: operator++(int) noexcept 25082: { return fetch_add(1); } 25082: 25082: __pointer_type 25082: operator++(int) volatile noexcept 25082: { return fetch_add(1); } 25082: 25082: __pointer_type 25082: operator--(int) noexcept 25082: { return fetch_sub(1); } 25082: 25082: __pointer_type 25082: operator--(int) volatile noexcept 25082: { return fetch_sub(1); } 25082: 25082: __pointer_type 25082: operator++() noexcept 25082: { return __atomic_add_fetch(&_M_p, _M_type_size(1), 25082: memory_order_seq_cst); } 25082: 25082: __pointer_type 25082: operator++() volatile noexcept 25082: { return __atomic_add_fetch(&_M_p, _M_type_size(1), 25082: memory_order_seq_cst); } 25082: 25082: __pointer_type 25082: operator--() noexcept 25082: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), 25082: memory_order_seq_cst); } 25082: 25082: __pointer_type 25082: operator--() volatile noexcept 25082: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), 25082: memory_order_seq_cst); } 25082: 25082: __pointer_type 25082: operator+=(ptrdiff_t __d) noexcept 25082: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), 25082: memory_order_seq_cst); } 25082: 25082: __pointer_type 25082: operator+=(ptrdiff_t __d) volatile noexcept 25082: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), 25082: memory_order_seq_cst); } 25082: 25082: __pointer_type 25082: operator-=(ptrdiff_t __d) noexcept 25082: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), 25082: memory_order_seq_cst); } 25082: 25082: __pointer_type 25082: operator-=(ptrdiff_t __d) volatile noexcept 25082: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), 25082: memory_order_seq_cst); } 25082: 25082: bool 25082: is_lock_free() const noexcept 25082: { 25082: 25082: return __atomic_is_lock_free(sizeof(_M_p), 25082: reinterpret_cast(-__alignof(_M_p))); 25082: } 25082: 25082: bool 25082: is_lock_free() const volatile noexcept 25082: { 25082: 25082: return __atomic_is_lock_free(sizeof(_M_p), 25082: reinterpret_cast(-__alignof(_M_p))); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) void 25082: store(__pointer_type __p, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: memory_order __b = __m & __memory_order_mask; 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: __atomic_store_n(&_M_p, __p, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) void 25082: store(__pointer_type __p, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: memory_order __b = __m & __memory_order_mask; 25082: ; 25082: ; 25082: ; 25082: 25082: __atomic_store_n(&_M_p, __p, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) __pointer_type 25082: load(memory_order __m = memory_order_seq_cst) const noexcept 25082: { 25082: memory_order __b = __m & __memory_order_mask; 25082: ; 25082: ; 25082: 25082: return __atomic_load_n(&_M_p, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) __pointer_type 25082: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 25082: { 25082: memory_order __b = __m & __memory_order_mask; 25082: ; 25082: ; 25082: 25082: return __atomic_load_n(&_M_p, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) __pointer_type 25082: exchange(__pointer_type __p, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: return __atomic_exchange_n(&_M_p, __p, __m); 25082: } 25082: 25082: 25082: inline __attribute__((__always_inline__)) __pointer_type 25082: exchange(__pointer_type __p, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: return __atomic_exchange_n(&_M_p, __p, __m); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 25082: memory_order __m1, 25082: memory_order __m2) noexcept 25082: { 25082: memory_order __b2 = __m2 & __memory_order_mask; 25082: memory_order __b1 = __m1 & __memory_order_mask; 25082: ; 25082: ; 25082: ; 25082: 25082: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) bool 25082: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 25082: memory_order __m1, 25082: memory_order __m2) volatile noexcept 25082: { 25082: memory_order __b2 = __m2 & __memory_order_mask; 25082: memory_order __b1 = __m1 & __memory_order_mask; 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); 25082: } 25082: 25082: inline __attribute__((__always_inline__)) __pointer_type 25082: fetch_add(ptrdiff_t __d, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); } 25082: 25082: inline __attribute__((__always_inline__)) __pointer_type 25082: fetch_add(ptrdiff_t __d, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); } 25082: 25082: inline __attribute__((__always_inline__)) __pointer_type 25082: fetch_sub(ptrdiff_t __d, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); } 25082: 25082: inline __attribute__((__always_inline__)) __pointer_type 25082: fetch_sub(ptrdiff_t __d, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); } 25082: }; 25082: 25082: 25082: 25082: 25082: } 25082: # 34 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct _Sp_locker 25082: { 25082: _Sp_locker(const _Sp_locker&) = delete; 25082: _Sp_locker& operator=(const _Sp_locker&) = delete; 25082: 25082: 25082: explicit 25082: _Sp_locker(const void*) noexcept; 25082: _Sp_locker(const void*, const void*) noexcept; 25082: ~_Sp_locker(); 25082: 25082: private: 25082: unsigned char _M_key1; 25082: unsigned char _M_key2; 25082: 25082: 25082: 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: atomic_is_lock_free(const __shared_ptr<_Tp, _Lp>* __p) 25082: { 25082: 25082: return __gthread_active_p() == 0; 25082: 25082: 25082: 25082: } 25082: 25082: template 25082: inline bool 25082: atomic_is_lock_free(const shared_ptr<_Tp>* __p) 25082: { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); } 25082: # 96 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 25082: template 25082: inline shared_ptr<_Tp> 25082: atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) 25082: { 25082: _Sp_locker __lock{__p}; 25082: return *__p; 25082: } 25082: 25082: template 25082: inline shared_ptr<_Tp> 25082: atomic_load(const shared_ptr<_Tp>* __p) 25082: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } 25082: 25082: template 25082: inline __shared_ptr<_Tp, _Lp> 25082: atomic_load_explicit(const __shared_ptr<_Tp, _Lp>* __p, memory_order) 25082: { 25082: _Sp_locker __lock{__p}; 25082: return *__p; 25082: } 25082: 25082: template 25082: inline __shared_ptr<_Tp, _Lp> 25082: atomic_load(const __shared_ptr<_Tp, _Lp>* __p) 25082: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } 25082: # 132 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 25082: template 25082: inline void 25082: atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, 25082: memory_order) 25082: { 25082: _Sp_locker __lock{__p}; 25082: __p->swap(__r); 25082: } 25082: 25082: template 25082: inline void 25082: atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) 25082: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } 25082: 25082: template 25082: inline void 25082: atomic_store_explicit(__shared_ptr<_Tp, _Lp>* __p, 25082: __shared_ptr<_Tp, _Lp> __r, 25082: memory_order) 25082: { 25082: _Sp_locker __lock{__p}; 25082: __p->swap(__r); 25082: } 25082: 25082: template 25082: inline void 25082: atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) 25082: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } 25082: # 169 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 25082: template 25082: inline shared_ptr<_Tp> 25082: atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, 25082: memory_order) 25082: { 25082: _Sp_locker __lock{__p}; 25082: __p->swap(__r); 25082: return __r; 25082: } 25082: 25082: template 25082: inline shared_ptr<_Tp> 25082: atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) 25082: { 25082: return std::atomic_exchange_explicit(__p, std::move(__r), 25082: memory_order_seq_cst); 25082: } 25082: 25082: template 25082: inline __shared_ptr<_Tp, _Lp> 25082: atomic_exchange_explicit(__shared_ptr<_Tp, _Lp>* __p, 25082: __shared_ptr<_Tp, _Lp> __r, 25082: memory_order) 25082: { 25082: _Sp_locker __lock{__p}; 25082: __p->swap(__r); 25082: return __r; 25082: } 25082: 25082: template 25082: inline __shared_ptr<_Tp, _Lp> 25082: atomic_exchange(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) 25082: { 25082: return std::atomic_exchange_explicit(__p, std::move(__r), 25082: memory_order_seq_cst); 25082: } 25082: # 218 "/usr/include/c++/8/bits/shared_ptr_atomic.h" 3 25082: template 25082: bool 25082: atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, 25082: shared_ptr<_Tp>* __v, 25082: shared_ptr<_Tp> __w, 25082: memory_order, 25082: memory_order) 25082: { 25082: shared_ptr<_Tp> __x; 25082: _Sp_locker __lock{__p, __v}; 25082: owner_less> __less; 25082: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) 25082: { 25082: __x = std::move(*__p); 25082: *__p = std::move(__w); 25082: return true; 25082: } 25082: __x = std::move(*__v); 25082: *__v = *__p; 25082: return false; 25082: } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, 25082: shared_ptr<_Tp> __w) 25082: { 25082: return std::atomic_compare_exchange_strong_explicit(__p, __v, 25082: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 25082: } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, 25082: shared_ptr<_Tp>* __v, 25082: shared_ptr<_Tp> __w, 25082: memory_order __success, 25082: memory_order __failure) 25082: { 25082: return std::atomic_compare_exchange_strong_explicit(__p, __v, 25082: std::move(__w), __success, __failure); 25082: } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, 25082: shared_ptr<_Tp> __w) 25082: { 25082: return std::atomic_compare_exchange_weak_explicit(__p, __v, 25082: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 25082: } 25082: 25082: template 25082: bool 25082: atomic_compare_exchange_strong_explicit(__shared_ptr<_Tp, _Lp>* __p, 25082: __shared_ptr<_Tp, _Lp>* __v, 25082: __shared_ptr<_Tp, _Lp> __w, 25082: memory_order, 25082: memory_order) 25082: { 25082: __shared_ptr<_Tp, _Lp> __x; 25082: _Sp_locker __lock{__p, __v}; 25082: owner_less<__shared_ptr<_Tp, _Lp>> __less; 25082: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) 25082: { 25082: __x = std::move(*__p); 25082: *__p = std::move(__w); 25082: return true; 25082: } 25082: __x = std::move(*__v); 25082: *__v = *__p; 25082: return false; 25082: } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_strong(__shared_ptr<_Tp, _Lp>* __p, 25082: __shared_ptr<_Tp, _Lp>* __v, 25082: __shared_ptr<_Tp, _Lp> __w) 25082: { 25082: return std::atomic_compare_exchange_strong_explicit(__p, __v, 25082: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 25082: } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_weak_explicit(__shared_ptr<_Tp, _Lp>* __p, 25082: __shared_ptr<_Tp, _Lp>* __v, 25082: __shared_ptr<_Tp, _Lp> __w, 25082: memory_order __success, 25082: memory_order __failure) 25082: { 25082: return std::atomic_compare_exchange_strong_explicit(__p, __v, 25082: std::move(__w), __success, __failure); 25082: } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_weak(__shared_ptr<_Tp, _Lp>* __p, 25082: __shared_ptr<_Tp, _Lp>* __v, 25082: __shared_ptr<_Tp, _Lp> __w) 25082: { 25082: return std::atomic_compare_exchange_weak_explicit(__p, __v, 25082: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 83 "/usr/include/c++/8/memory" 2 3 25082: 25082: # 1 "/usr/include/c++/8/backward/auto_ptr.h" 1 3 25082: # 36 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 47 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: template 25082: struct auto_ptr_ref 25082: { 25082: _Tp1* _M_ptr; 25082: 25082: explicit 25082: auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } 25082: } __attribute__ ((__deprecated__)); 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 25082: # 88 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: template 25082: class auto_ptr 25082: { 25082: private: 25082: _Tp* _M_ptr; 25082: 25082: public: 25082: 25082: typedef _Tp element_type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } 25082: # 114 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } 25082: # 126 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: template 25082: auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } 25082: # 137 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: auto_ptr& 25082: operator=(auto_ptr& __a) throw() 25082: { 25082: reset(__a.release()); 25082: return *this; 25082: } 25082: # 154 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: template 25082: auto_ptr& 25082: operator=(auto_ptr<_Tp1>& __a) throw() 25082: { 25082: reset(__a.release()); 25082: return *this; 25082: } 25082: # 172 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: ~auto_ptr() { delete _M_ptr; } 25082: # 182 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: element_type& 25082: operator*() const throw() 25082: { 25082: ; 25082: return *_M_ptr; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: element_type* 25082: operator->() const throw() 25082: { 25082: ; 25082: return _M_ptr; 25082: } 25082: # 212 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: element_type* 25082: get() const throw() { return _M_ptr; } 25082: # 226 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: element_type* 25082: release() throw() 25082: { 25082: element_type* __tmp = _M_ptr; 25082: _M_ptr = 0; 25082: return __tmp; 25082: } 25082: # 241 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: void 25082: reset(element_type* __p = 0) throw() 25082: { 25082: if (__p != _M_ptr) 25082: { 25082: delete _M_ptr; 25082: _M_ptr = __p; 25082: } 25082: } 25082: # 266 "/usr/include/c++/8/backward/auto_ptr.h" 3 25082: auto_ptr(auto_ptr_ref __ref) throw() 25082: : _M_ptr(__ref._M_ptr) { } 25082: 25082: auto_ptr& 25082: operator=(auto_ptr_ref __ref) throw() 25082: { 25082: if (__ref._M_ptr != this->get()) 25082: { 25082: delete _M_ptr; 25082: _M_ptr = __ref._M_ptr; 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: operator auto_ptr_ref<_Tp1>() throw() 25082: { return auto_ptr_ref<_Tp1>(this->release()); } 25082: 25082: template 25082: operator auto_ptr<_Tp1>() throw() 25082: { return auto_ptr<_Tp1>(this->release()); } 25082: } __attribute__ ((__deprecated__)); 25082: 25082: 25082: 25082: template<> 25082: class auto_ptr 25082: { 25082: public: 25082: typedef void element_type; 25082: } __attribute__ ((__deprecated__)); 25082: 25082: 25082: template<_Lock_policy _Lp> 25082: template 25082: inline 25082: __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r) 25082: : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) 25082: { __r.release(); } 25082: 25082: template 25082: template 25082: inline 25082: __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r) 25082: : _M_ptr(__r.get()), _M_refcount() 25082: { 25082: 25082: static_assert( sizeof(_Tp1) > 0, "incomplete type" ); 25082: _Tp1* __tmp = __r.get(); 25082: _M_refcount = __shared_count<_Lp>(std::move(__r)); 25082: _M_enable_shared_from_this_with(__tmp); 25082: } 25082: 25082: template 25082: template 25082: inline 25082: shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r) 25082: : __shared_ptr<_Tp>(std::move(__r)) { } 25082: 25082: template 25082: template 25082: inline 25082: unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept 25082: : _M_t(__u.release(), deleter_type()) { } 25082: 25082: 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: } 25082: # 85 "/usr/include/c++/8/memory" 2 3 25082: # 93 "/usr/include/c++/8/memory" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 113 "/usr/include/c++/8/memory" 3 25082: inline void* 25082: align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept 25082: { 25082: const auto __intptr = reinterpret_cast(__ptr); 25082: const auto __aligned = (__intptr - 1u + __align) & -__align; 25082: const auto __diff = __aligned - __intptr; 25082: if ((__size + __diff) > __space) 25082: return nullptr; 25082: else 25082: { 25082: __space -= __diff; 25082: return __ptr = reinterpret_cast(__aligned); 25082: } 25082: } 25082: 25082: 25082: 25082: enum class pointer_safety { relaxed, preferred, strict }; 25082: 25082: inline void 25082: declare_reachable(void*) { } 25082: 25082: template 25082: inline _Tp* 25082: undeclare_reachable(_Tp* __p) { return __p; } 25082: 25082: inline void 25082: declare_no_pointers(char*, size_t) { } 25082: 25082: inline void 25082: undeclare_no_pointers(char*, size_t) { } 25082: 25082: inline pointer_safety 25082: get_pointer_safety() noexcept { return pointer_safety::relaxed; } 25082: 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/obj-aarch64-linux-gnu/dbms/src/Common/config.h" 1 3 4 25082: 25082: # 6 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Names.h" 1 3 4 25082: 25082: 25082: # 1 "/usr/include/c++/8/vector" 1 3 4 25082: # 58 "/usr/include/c++/8/vector" 3 4 25082: 25082: # 59 "/usr/include/c++/8/vector" 3 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/stl_vector.h" 1 3 25082: # 74 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: template 25082: struct _Vector_base 25082: { 25082: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 25082: rebind<_Tp>::other _Tp_alloc_type; 25082: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer 25082: pointer; 25082: 25082: struct _Vector_impl 25082: : public _Tp_alloc_type 25082: { 25082: pointer _M_start; 25082: pointer _M_finish; 25082: pointer _M_end_of_storage; 25082: 25082: _Vector_impl() 25082: : _Tp_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage() 25082: { } 25082: 25082: _Vector_impl(_Tp_alloc_type const& __a) noexcept 25082: : _Tp_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage() 25082: { } 25082: 25082: 25082: _Vector_impl(_Tp_alloc_type&& __a) noexcept 25082: : _Tp_alloc_type(std::move(__a)), 25082: _M_start(), _M_finish(), _M_end_of_storage() 25082: { } 25082: 25082: 25082: void _M_swap_data(_Vector_impl& __x) noexcept 25082: { 25082: std::swap(_M_start, __x._M_start); 25082: std::swap(_M_finish, __x._M_finish); 25082: std::swap(_M_end_of_storage, __x._M_end_of_storage); 25082: } 25082: # 231 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: }; 25082: 25082: public: 25082: typedef _Alloc allocator_type; 25082: 25082: _Tp_alloc_type& 25082: _M_get_Tp_allocator() noexcept 25082: { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } 25082: 25082: const _Tp_alloc_type& 25082: _M_get_Tp_allocator() const noexcept 25082: { return *static_cast(&this->_M_impl); } 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return allocator_type(_M_get_Tp_allocator()); } 25082: 25082: _Vector_base() 25082: : _M_impl() { } 25082: 25082: _Vector_base(const allocator_type& __a) noexcept 25082: : _M_impl(__a) { } 25082: 25082: _Vector_base(size_t __n) 25082: : _M_impl() 25082: { _M_create_storage(__n); } 25082: 25082: _Vector_base(size_t __n, const allocator_type& __a) 25082: : _M_impl(__a) 25082: { _M_create_storage(__n); } 25082: 25082: 25082: _Vector_base(_Tp_alloc_type&& __a) noexcept 25082: : _M_impl(std::move(__a)) { } 25082: 25082: _Vector_base(_Vector_base&& __x) noexcept 25082: : _M_impl(std::move(__x._M_get_Tp_allocator())) 25082: { this->_M_impl._M_swap_data(__x._M_impl); } 25082: 25082: _Vector_base(_Vector_base&& __x, const allocator_type& __a) 25082: : _M_impl(__a) 25082: { 25082: if (__x.get_allocator() == __a) 25082: this->_M_impl._M_swap_data(__x._M_impl); 25082: else 25082: { 25082: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; 25082: _M_create_storage(__n); 25082: } 25082: } 25082: 25082: 25082: ~_Vector_base() noexcept 25082: { 25082: _M_deallocate(_M_impl._M_start, 25082: _M_impl._M_end_of_storage - _M_impl._M_start); 25082: } 25082: 25082: public: 25082: _Vector_impl _M_impl; 25082: 25082: pointer 25082: _M_allocate(size_t __n) 25082: { 25082: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 25082: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); 25082: } 25082: 25082: void 25082: _M_deallocate(pointer __p, size_t __n) 25082: { 25082: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 25082: if (__p) 25082: _Tr::deallocate(_M_impl, __p, __n); 25082: } 25082: 25082: private: 25082: void 25082: _M_create_storage(size_t __n) 25082: { 25082: this->_M_impl._M_start = this->_M_allocate(__n); 25082: this->_M_impl._M_finish = this->_M_impl._M_start; 25082: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 25082: } 25082: }; 25082: # 338 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: template > 25082: class vector : protected _Vector_base<_Tp, _Alloc> 25082: { 25082: # 351 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: static_assert(is_same::type, _Tp>::value, 25082: "std::vector must have a non-const, non-volatile value_type"); 25082: 25082: static_assert(is_same::value, 25082: "std::vector must have the same value_type as its allocator"); 25082: 25082: 25082: 25082: typedef _Vector_base<_Tp, _Alloc> _Base; 25082: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; 25082: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; 25082: 25082: public: 25082: typedef _Tp value_type; 25082: typedef typename _Base::pointer pointer; 25082: typedef typename _Alloc_traits::const_pointer const_pointer; 25082: typedef typename _Alloc_traits::reference reference; 25082: typedef typename _Alloc_traits::const_reference const_reference; 25082: typedef __gnu_cxx::__normal_iterator iterator; 25082: typedef __gnu_cxx::__normal_iterator 25082: const_iterator; 25082: typedef std::reverse_iterator const_reverse_iterator; 25082: typedef std::reverse_iterator reverse_iterator; 25082: typedef size_t size_type; 25082: typedef ptrdiff_t difference_type; 25082: typedef _Alloc allocator_type; 25082: 25082: protected: 25082: using _Base::_M_allocate; 25082: using _Base::_M_deallocate; 25082: using _Base::_M_impl; 25082: using _Base::_M_get_Tp_allocator; 25082: 25082: public: 25082: 25082: 25082: 25082: 25082: 25082: 25082: vector() 25082: 25082: noexcept(is_nothrow_default_constructible<_Alloc>::value) 25082: 25082: : _Base() { } 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: vector(const allocator_type& __a) noexcept 25082: : _Base(__a) { } 25082: # 414 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: explicit 25082: vector(size_type __n, const allocator_type& __a = allocator_type()) 25082: : _Base(__n, __a) 25082: { _M_default_initialize(__n); } 25082: # 427 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: vector(size_type __n, const value_type& __value, 25082: const allocator_type& __a = allocator_type()) 25082: : _Base(__n, __a) 25082: { _M_fill_initialize(__n, __value); } 25082: # 458 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: vector(const vector& __x) 25082: : _Base(__x.size(), 25082: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) 25082: { 25082: this->_M_impl._M_finish = 25082: std::__uninitialized_copy_a(__x.begin(), __x.end(), 25082: this->_M_impl._M_start, 25082: _M_get_Tp_allocator()); 25082: } 25082: # 476 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: vector(vector&& __x) noexcept 25082: : _Base(std::move(__x)) { } 25082: 25082: 25082: vector(const vector& __x, const allocator_type& __a) 25082: : _Base(__x.size(), __a) 25082: { 25082: this->_M_impl._M_finish = 25082: std::__uninitialized_copy_a(__x.begin(), __x.end(), 25082: this->_M_impl._M_start, 25082: _M_get_Tp_allocator()); 25082: } 25082: 25082: 25082: vector(vector&& __rv, const allocator_type& __m) 25082: noexcept(_Alloc_traits::_S_always_equal()) 25082: : _Base(std::move(__rv), __m) 25082: { 25082: if (__rv.get_allocator() != __m) 25082: { 25082: this->_M_impl._M_finish = 25082: std::__uninitialized_move_a(__rv.begin(), __rv.end(), 25082: this->_M_impl._M_start, 25082: _M_get_Tp_allocator()); 25082: __rv.clear(); 25082: } 25082: } 25082: # 515 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: vector(initializer_list __l, 25082: const allocator_type& __a = allocator_type()) 25082: : _Base(__a) 25082: { 25082: _M_range_initialize(__l.begin(), __l.end(), 25082: random_access_iterator_tag()); 25082: } 25082: # 541 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: template> 25082: vector(_InputIterator __first, _InputIterator __last, 25082: const allocator_type& __a = allocator_type()) 25082: : _Base(__a) 25082: { _M_initialize_dispatch(__first, __last, __false_type()); } 25082: # 565 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: ~vector() noexcept 25082: { 25082: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: ; 25082: } 25082: # 581 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: vector& 25082: operator=(const vector& __x); 25082: # 595 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: vector& 25082: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) 25082: { 25082: constexpr bool __move_storage = 25082: _Alloc_traits::_S_propagate_on_move_assign() 25082: || _Alloc_traits::_S_always_equal(); 25082: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); 25082: return *this; 25082: } 25082: # 616 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: vector& 25082: operator=(initializer_list __l) 25082: { 25082: this->_M_assign_aux(__l.begin(), __l.end(), 25082: random_access_iterator_tag()); 25082: return *this; 25082: } 25082: # 635 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: void 25082: assign(size_type __n, const value_type& __val) 25082: { _M_fill_assign(__n, __val); } 25082: # 652 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: template> 25082: void 25082: assign(_InputIterator __first, _InputIterator __last) 25082: { _M_assign_dispatch(__first, __last, __false_type()); } 25082: # 680 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: void 25082: assign(initializer_list __l) 25082: { 25082: this->_M_assign_aux(__l.begin(), __l.end(), 25082: random_access_iterator_tag()); 25082: } 25082: 25082: 25082: 25082: using _Base::get_allocator; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: begin() noexcept 25082: { return iterator(this->_M_impl._M_start); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return const_iterator(this->_M_impl._M_start); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() noexcept 25082: { return iterator(this->_M_impl._M_finish); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return const_iterator(this->_M_impl._M_finish); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rbegin() noexcept 25082: { return reverse_iterator(end()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: rbegin() const noexcept 25082: { return const_reverse_iterator(end()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rend() noexcept 25082: { return reverse_iterator(begin()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: rend() const noexcept 25082: { return const_reverse_iterator(begin()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return const_iterator(this->_M_impl._M_start); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return const_iterator(this->_M_impl._M_finish); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: crbegin() const noexcept 25082: { return const_reverse_iterator(end()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: crend() const noexcept 25082: { return const_reverse_iterator(begin()); } 25082: 25082: 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _Alloc_traits::max_size(_M_get_Tp_allocator()); } 25082: # 823 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: void 25082: resize(size_type __new_size) 25082: { 25082: if (__new_size > size()) 25082: _M_default_append(__new_size - size()); 25082: else if (__new_size < size()) 25082: _M_erase_at_end(this->_M_impl._M_start + __new_size); 25082: } 25082: # 843 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: void 25082: resize(size_type __new_size, const value_type& __x) 25082: { 25082: if (__new_size > size()) 25082: _M_fill_insert(end(), __new_size - size(), __x); 25082: else if (__new_size < size()) 25082: _M_erase_at_end(this->_M_impl._M_start + __new_size); 25082: } 25082: # 875 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: void 25082: shrink_to_fit() 25082: { _M_shrink_to_fit(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: capacity() const noexcept 25082: { return size_type(this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_start); } 25082: 25082: 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return begin() == end(); } 25082: # 914 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: void 25082: reserve(size_type __n); 25082: # 929 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: reference 25082: operator[](size_type __n) noexcept 25082: { 25082: ; 25082: return *(this->_M_impl._M_start + __n); 25082: } 25082: # 947 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: const_reference 25082: operator[](size_type __n) const noexcept 25082: { 25082: ; 25082: return *(this->_M_impl._M_start + __n); 25082: } 25082: 25082: protected: 25082: 25082: void 25082: _M_range_check(size_type __n) const 25082: { 25082: if (__n >= this->size()) 25082: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 25082: 25082: , 25082: __n, this->size()); 25082: } 25082: 25082: public: 25082: # 978 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: reference 25082: at(size_type __n) 25082: { 25082: _M_range_check(__n); 25082: return (*this)[__n]; 25082: } 25082: # 996 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: const_reference 25082: at(size_type __n) const 25082: { 25082: _M_range_check(__n); 25082: return (*this)[__n]; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: reference 25082: front() noexcept 25082: { 25082: ; 25082: return *begin(); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: const_reference 25082: front() const noexcept 25082: { 25082: ; 25082: return *begin(); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: reference 25082: back() noexcept 25082: { 25082: ; 25082: return *(end() - 1); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: const_reference 25082: back() const noexcept 25082: { 25082: ; 25082: return *(end() - 1); 25082: } 25082: # 1054 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: _Tp* 25082: data() noexcept 25082: { return _M_data_ptr(this->_M_impl._M_start); } 25082: 25082: const _Tp* 25082: data() const noexcept 25082: { return _M_data_ptr(this->_M_impl._M_start); } 25082: # 1073 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: void 25082: push_back(const value_type& __x) 25082: { 25082: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 25082: { 25082: ; 25082: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 25082: __x); 25082: ++this->_M_impl._M_finish; 25082: ; 25082: } 25082: else 25082: _M_realloc_insert(end(), __x); 25082: } 25082: 25082: 25082: void 25082: push_back(value_type&& __x) 25082: { emplace_back(std::move(__x)); } 25082: 25082: template 25082: 25082: reference 25082: 25082: 25082: 25082: emplace_back(_Args&&... __args); 25082: # 1111 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: void 25082: pop_back() noexcept 25082: { 25082: ; 25082: --this->_M_impl._M_finish; 25082: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 25082: ; 25082: } 25082: # 1133 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: template 25082: iterator 25082: emplace(const_iterator __position, _Args&&... __args) 25082: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); } 25082: # 1149 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: iterator 25082: insert(const_iterator __position, const value_type& __x); 25082: # 1179 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: iterator 25082: insert(const_iterator __position, value_type&& __x) 25082: { return _M_insert_rval(__position, std::move(__x)); } 25082: # 1196 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: iterator 25082: insert(const_iterator __position, initializer_list __l) 25082: { 25082: auto __offset = __position - cbegin(); 25082: _M_range_insert(begin() + __offset, __l.begin(), __l.end(), 25082: std::random_access_iterator_tag()); 25082: return begin() + __offset; 25082: } 25082: # 1221 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: iterator 25082: insert(const_iterator __position, size_type __n, const value_type& __x) 25082: { 25082: difference_type __offset = __position - cbegin(); 25082: _M_fill_insert(begin() + __offset, __n, __x); 25082: return begin() + __offset; 25082: } 25082: # 1263 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: template> 25082: iterator 25082: insert(const_iterator __position, _InputIterator __first, 25082: _InputIterator __last) 25082: { 25082: difference_type __offset = __position - cbegin(); 25082: _M_insert_dispatch(begin() + __offset, 25082: __first, __last, __false_type()); 25082: return begin() + __offset; 25082: } 25082: # 1315 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: iterator 25082: 25082: erase(const_iterator __position) 25082: { return _M_erase(begin() + (__position - cbegin())); } 25082: # 1342 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: iterator 25082: 25082: erase(const_iterator __first, const_iterator __last) 25082: { 25082: const auto __beg = begin(); 25082: const auto __cbeg = cbegin(); 25082: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); 25082: } 25082: # 1366 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: void 25082: swap(vector& __x) noexcept 25082: { 25082: 25082: 25082: ; 25082: 25082: this->_M_impl._M_swap_data(__x._M_impl); 25082: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), 25082: __x._M_get_Tp_allocator()); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: clear() noexcept 25082: { _M_erase_at_end(this->_M_impl._M_start); } 25082: 25082: protected: 25082: 25082: 25082: 25082: 25082: template 25082: pointer 25082: _M_allocate_and_copy(size_type __n, 25082: _ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: pointer __result = this->_M_allocate(__n); 25082: try 25082: { 25082: std::__uninitialized_copy_a(__first, __last, __result, 25082: _M_get_Tp_allocator()); 25082: return __result; 25082: } 25082: catch(...) 25082: { 25082: _M_deallocate(__result, __n); 25082: throw; 25082: } 25082: } 25082: # 1419 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: template 25082: void 25082: _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type) 25082: { 25082: this->_M_impl._M_start = _M_allocate(static_cast(__n)); 25082: this->_M_impl._M_end_of_storage = 25082: this->_M_impl._M_start + static_cast(__n); 25082: _M_fill_initialize(static_cast(__n), __value); 25082: } 25082: 25082: 25082: template 25082: void 25082: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, 25082: __false_type) 25082: { 25082: typedef typename std::iterator_traits<_InputIterator>:: 25082: iterator_category _IterCategory; 25082: _M_range_initialize(__first, __last, _IterCategory()); 25082: } 25082: 25082: 25082: template 25082: void 25082: _M_range_initialize(_InputIterator __first, _InputIterator __last, 25082: std::input_iterator_tag) 25082: { 25082: try { 25082: for (; __first != __last; ++__first) 25082: 25082: emplace_back(*__first); 25082: 25082: 25082: 25082: } catch(...) { 25082: clear(); 25082: throw; 25082: } 25082: } 25082: 25082: 25082: template 25082: void 25082: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, 25082: std::forward_iterator_tag) 25082: { 25082: const size_type __n = std::distance(__first, __last); 25082: this->_M_impl._M_start = this->_M_allocate(__n); 25082: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 25082: this->_M_impl._M_finish = 25082: std::__uninitialized_copy_a(__first, __last, 25082: this->_M_impl._M_start, 25082: _M_get_Tp_allocator()); 25082: } 25082: 25082: 25082: 25082: void 25082: _M_fill_initialize(size_type __n, const value_type& __value) 25082: { 25082: this->_M_impl._M_finish = 25082: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, 25082: _M_get_Tp_allocator()); 25082: } 25082: 25082: 25082: 25082: void 25082: _M_default_initialize(size_type __n) 25082: { 25082: this->_M_impl._M_finish = 25082: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, 25082: _M_get_Tp_allocator()); 25082: } 25082: # 1502 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: template 25082: void 25082: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) 25082: { _M_fill_assign(__n, __val); } 25082: 25082: 25082: template 25082: void 25082: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, 25082: __false_type) 25082: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 25082: 25082: 25082: template 25082: void 25082: _M_assign_aux(_InputIterator __first, _InputIterator __last, 25082: std::input_iterator_tag); 25082: 25082: 25082: template 25082: void 25082: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 25082: std::forward_iterator_tag); 25082: 25082: 25082: 25082: void 25082: _M_fill_assign(size_type __n, const value_type& __val); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, 25082: __true_type) 25082: { _M_fill_insert(__pos, __n, __val); } 25082: 25082: 25082: template 25082: void 25082: _M_insert_dispatch(iterator __pos, _InputIterator __first, 25082: _InputIterator __last, __false_type) 25082: { 25082: _M_range_insert(__pos, __first, __last, 25082: std::__iterator_category(__first)); 25082: } 25082: 25082: 25082: template 25082: void 25082: _M_range_insert(iterator __pos, _InputIterator __first, 25082: _InputIterator __last, std::input_iterator_tag); 25082: 25082: 25082: template 25082: void 25082: _M_range_insert(iterator __pos, _ForwardIterator __first, 25082: _ForwardIterator __last, std::forward_iterator_tag); 25082: 25082: 25082: 25082: void 25082: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); 25082: 25082: 25082: 25082: void 25082: _M_default_append(size_type __n); 25082: 25082: bool 25082: _M_shrink_to_fit(); 25082: # 1589 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: struct _Temporary_value 25082: { 25082: template 25082: explicit 25082: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec) 25082: { 25082: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(), 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: ~_Temporary_value() 25082: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } 25082: 25082: value_type& 25082: _M_val() { return *reinterpret_cast<_Tp*>(&__buf); } 25082: 25082: private: 25082: pointer 25082: _M_ptr() { return pointer_traits::pointer_to(_M_val()); } 25082: 25082: vector* _M_this; 25082: typename aligned_storage::type __buf; 25082: }; 25082: 25082: 25082: 25082: template 25082: void 25082: _M_insert_aux(iterator __position, _Arg&& __arg); 25082: 25082: template 25082: void 25082: _M_realloc_insert(iterator __position, _Args&&... __args); 25082: 25082: 25082: iterator 25082: _M_insert_rval(const_iterator __position, value_type&& __v); 25082: 25082: 25082: template 25082: iterator 25082: _M_emplace_aux(const_iterator __position, _Args&&... __args); 25082: 25082: 25082: iterator 25082: _M_emplace_aux(const_iterator __position, value_type&& __v) 25082: { return _M_insert_rval(__position, std::move(__v)); } 25082: 25082: 25082: 25082: size_type 25082: _M_check_len(size_type __n, const char* __s) const 25082: { 25082: if (max_size() - size() < __n) 25082: __throw_length_error((__s)); 25082: 25082: const size_type __len = size() + std::max(size(), __n); 25082: return (__len < size() || __len > max_size()) ? max_size() : __len; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: void 25082: _M_erase_at_end(pointer __pos) noexcept 25082: { 25082: if (size_type __n = this->_M_impl._M_finish - __pos) 25082: { 25082: std::_Destroy(__pos, this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: this->_M_impl._M_finish = __pos; 25082: ; 25082: } 25082: } 25082: 25082: iterator 25082: _M_erase(iterator __position); 25082: 25082: iterator 25082: _M_erase(iterator __first, iterator __last); 25082: 25082: 25082: private: 25082: 25082: 25082: 25082: void 25082: _M_move_assign(vector&& __x, std::true_type) noexcept 25082: { 25082: vector __tmp(get_allocator()); 25082: this->_M_impl._M_swap_data(__tmp._M_impl); 25082: this->_M_impl._M_swap_data(__x._M_impl); 25082: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); 25082: } 25082: 25082: 25082: 25082: void 25082: _M_move_assign(vector&& __x, std::false_type) 25082: { 25082: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) 25082: _M_move_assign(std::move(__x), std::true_type()); 25082: else 25082: { 25082: 25082: 25082: this->assign(std::__make_move_if_noexcept_iterator(__x.begin()), 25082: std::__make_move_if_noexcept_iterator(__x.end())); 25082: __x.clear(); 25082: } 25082: } 25082: 25082: 25082: template 25082: _Up* 25082: _M_data_ptr(_Up* __ptr) const noexcept 25082: { return __ptr; } 25082: 25082: 25082: template 25082: typename std::pointer_traits<_Ptr>::element_type* 25082: _M_data_ptr(_Ptr __ptr) const 25082: { return empty() ? nullptr : std::__to_address(__ptr); } 25082: # 1729 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: }; 25082: 25082: 25082: template::value_type, 25082: typename _Allocator = allocator<_ValT>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: vector(_InputIterator, _InputIterator, _Allocator = _Allocator()) 25082: -> vector<_ValT, _Allocator>; 25082: # 1751 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: template 25082: inline bool 25082: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 25082: { return (__x.size() == __y.size() 25082: && std::equal(__x.begin(), __x.end(), __y.begin())); } 25082: # 1768 "/usr/include/c++/8/bits/stl_vector.h" 3 25082: template 25082: inline bool 25082: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 25082: { return std::lexicographical_compare(__x.begin(), __x.end(), 25082: __y.begin(), __y.end()); } 25082: 25082: 25082: template 25082: inline bool 25082: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 25082: { return __y < __x; } 25082: 25082: 25082: template 25082: inline bool 25082: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 25082: { return !(__y < __x); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 25082: { return !(__x < __y); } 25082: 25082: 25082: template 25082: inline void 25082: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: 25082: 25082: } 25082: # 65 "/usr/include/c++/8/vector" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_bvector.h" 1 3 25082: # 64 "/usr/include/c++/8/bits/stl_bvector.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: typedef unsigned long _Bit_type; 25082: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; 25082: 25082: struct _Bit_reference 25082: { 25082: _Bit_type * _M_p; 25082: _Bit_type _M_mask; 25082: 25082: _Bit_reference(_Bit_type * __x, _Bit_type __y) 25082: : _M_p(__x), _M_mask(__y) { } 25082: 25082: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { } 25082: 25082: operator bool() const noexcept 25082: { return !!(*_M_p & _M_mask); } 25082: 25082: _Bit_reference& 25082: operator=(bool __x) noexcept 25082: { 25082: if (__x) 25082: *_M_p |= _M_mask; 25082: else 25082: *_M_p &= ~_M_mask; 25082: return *this; 25082: } 25082: 25082: _Bit_reference& 25082: operator=(const _Bit_reference& __x) noexcept 25082: { return *this = bool(__x); } 25082: 25082: bool 25082: operator==(const _Bit_reference& __x) const 25082: { return bool(*this) == bool(__x); } 25082: 25082: bool 25082: operator<(const _Bit_reference& __x) const 25082: { return !bool(*this) && bool(__x); } 25082: 25082: void 25082: flip() noexcept 25082: { *_M_p ^= _M_mask; } 25082: }; 25082: 25082: 25082: inline void 25082: swap(_Bit_reference __x, _Bit_reference __y) noexcept 25082: { 25082: bool __tmp = __x; 25082: __x = __y; 25082: __y = __tmp; 25082: } 25082: 25082: inline void 25082: swap(_Bit_reference __x, bool& __y) noexcept 25082: { 25082: bool __tmp = __x; 25082: __x = __y; 25082: __y = __tmp; 25082: } 25082: 25082: inline void 25082: swap(bool& __x, _Bit_reference __y) noexcept 25082: { 25082: bool __tmp = __x; 25082: __x = __y; 25082: __y = __tmp; 25082: } 25082: 25082: 25082: struct _Bit_iterator_base 25082: : public std::iterator 25082: { 25082: _Bit_type * _M_p; 25082: unsigned int _M_offset; 25082: 25082: _Bit_iterator_base(_Bit_type * __x, unsigned int __y) 25082: : _M_p(__x), _M_offset(__y) { } 25082: 25082: void 25082: _M_bump_up() 25082: { 25082: if (_M_offset++ == int(_S_word_bit) - 1) 25082: { 25082: _M_offset = 0; 25082: ++_M_p; 25082: } 25082: } 25082: 25082: void 25082: _M_bump_down() 25082: { 25082: if (_M_offset-- == 0) 25082: { 25082: _M_offset = int(_S_word_bit) - 1; 25082: --_M_p; 25082: } 25082: } 25082: 25082: void 25082: _M_incr(ptrdiff_t __i) 25082: { 25082: difference_type __n = __i + _M_offset; 25082: _M_p += __n / int(_S_word_bit); 25082: __n = __n % int(_S_word_bit); 25082: if (__n < 0) 25082: { 25082: __n += int(_S_word_bit); 25082: --_M_p; 25082: } 25082: _M_offset = static_cast(__n); 25082: } 25082: 25082: bool 25082: operator==(const _Bit_iterator_base& __i) const 25082: { return _M_p == __i._M_p && _M_offset == __i._M_offset; } 25082: 25082: bool 25082: operator<(const _Bit_iterator_base& __i) const 25082: { 25082: return _M_p < __i._M_p 25082: || (_M_p == __i._M_p && _M_offset < __i._M_offset); 25082: } 25082: 25082: bool 25082: operator!=(const _Bit_iterator_base& __i) const 25082: { return !(*this == __i); } 25082: 25082: bool 25082: operator>(const _Bit_iterator_base& __i) const 25082: { return __i < *this; } 25082: 25082: bool 25082: operator<=(const _Bit_iterator_base& __i) const 25082: { return !(__i < *this); } 25082: 25082: bool 25082: operator>=(const _Bit_iterator_base& __i) const 25082: { return !(*this < __i); } 25082: }; 25082: 25082: inline ptrdiff_t 25082: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 25082: { 25082: return (int(_S_word_bit) * (__x._M_p - __y._M_p) 25082: + __x._M_offset - __y._M_offset); 25082: } 25082: 25082: struct _Bit_iterator : public _Bit_iterator_base 25082: { 25082: typedef _Bit_reference reference; 25082: typedef _Bit_reference* pointer; 25082: typedef _Bit_iterator iterator; 25082: 25082: _Bit_iterator() : _Bit_iterator_base(0, 0) { } 25082: 25082: _Bit_iterator(_Bit_type * __x, unsigned int __y) 25082: : _Bit_iterator_base(__x, __y) { } 25082: 25082: iterator 25082: _M_const_cast() const 25082: { return *this; } 25082: 25082: reference 25082: operator*() const 25082: { return reference(_M_p, 1UL << _M_offset); } 25082: 25082: iterator& 25082: operator++() 25082: { 25082: _M_bump_up(); 25082: return *this; 25082: } 25082: 25082: iterator 25082: operator++(int) 25082: { 25082: iterator __tmp = *this; 25082: _M_bump_up(); 25082: return __tmp; 25082: } 25082: 25082: iterator& 25082: operator--() 25082: { 25082: _M_bump_down(); 25082: return *this; 25082: } 25082: 25082: iterator 25082: operator--(int) 25082: { 25082: iterator __tmp = *this; 25082: _M_bump_down(); 25082: return __tmp; 25082: } 25082: 25082: iterator& 25082: operator+=(difference_type __i) 25082: { 25082: _M_incr(__i); 25082: return *this; 25082: } 25082: 25082: iterator& 25082: operator-=(difference_type __i) 25082: { 25082: *this += -__i; 25082: return *this; 25082: } 25082: 25082: iterator 25082: operator+(difference_type __i) const 25082: { 25082: iterator __tmp = *this; 25082: return __tmp += __i; 25082: } 25082: 25082: iterator 25082: operator-(difference_type __i) const 25082: { 25082: iterator __tmp = *this; 25082: return __tmp -= __i; 25082: } 25082: 25082: reference 25082: operator[](difference_type __i) const 25082: { return *(*this + __i); } 25082: }; 25082: 25082: inline _Bit_iterator 25082: operator+(ptrdiff_t __n, const _Bit_iterator& __x) 25082: { return __x + __n; } 25082: 25082: struct _Bit_const_iterator : public _Bit_iterator_base 25082: { 25082: typedef bool reference; 25082: typedef bool const_reference; 25082: typedef const bool* pointer; 25082: typedef _Bit_const_iterator const_iterator; 25082: 25082: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } 25082: 25082: _Bit_const_iterator(_Bit_type * __x, unsigned int __y) 25082: : _Bit_iterator_base(__x, __y) { } 25082: 25082: _Bit_const_iterator(const _Bit_iterator& __x) 25082: : _Bit_iterator_base(__x._M_p, __x._M_offset) { } 25082: 25082: _Bit_iterator 25082: _M_const_cast() const 25082: { return _Bit_iterator(_M_p, _M_offset); } 25082: 25082: const_reference 25082: operator*() const 25082: { return _Bit_reference(_M_p, 1UL << _M_offset); } 25082: 25082: const_iterator& 25082: operator++() 25082: { 25082: _M_bump_up(); 25082: return *this; 25082: } 25082: 25082: const_iterator 25082: operator++(int) 25082: { 25082: const_iterator __tmp = *this; 25082: _M_bump_up(); 25082: return __tmp; 25082: } 25082: 25082: const_iterator& 25082: operator--() 25082: { 25082: _M_bump_down(); 25082: return *this; 25082: } 25082: 25082: const_iterator 25082: operator--(int) 25082: { 25082: const_iterator __tmp = *this; 25082: _M_bump_down(); 25082: return __tmp; 25082: } 25082: 25082: const_iterator& 25082: operator+=(difference_type __i) 25082: { 25082: _M_incr(__i); 25082: return *this; 25082: } 25082: 25082: const_iterator& 25082: operator-=(difference_type __i) 25082: { 25082: *this += -__i; 25082: return *this; 25082: } 25082: 25082: const_iterator 25082: operator+(difference_type __i) const 25082: { 25082: const_iterator __tmp = *this; 25082: return __tmp += __i; 25082: } 25082: 25082: const_iterator 25082: operator-(difference_type __i) const 25082: { 25082: const_iterator __tmp = *this; 25082: return __tmp -= __i; 25082: } 25082: 25082: const_reference 25082: operator[](difference_type __i) const 25082: { return *(*this + __i); } 25082: }; 25082: 25082: inline _Bit_const_iterator 25082: operator+(ptrdiff_t __n, const _Bit_const_iterator& __x) 25082: { return __x + __n; } 25082: 25082: inline void 25082: __fill_bvector(_Bit_type * __v, 25082: unsigned int __first, unsigned int __last, bool __x) 25082: { 25082: const _Bit_type __fmask = ~0ul << __first; 25082: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); 25082: const _Bit_type __mask = __fmask & __lmask; 25082: 25082: if (__x) 25082: *__v |= __mask; 25082: else 25082: *__v &= ~__mask; 25082: } 25082: 25082: inline void 25082: fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x) 25082: { 25082: if (__first._M_p != __last._M_p) 25082: { 25082: _Bit_type* __first_p = __first._M_p; 25082: if (__first._M_offset != 0) 25082: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); 25082: 25082: __builtin_memset(__first_p, __x ? ~0 : 0, 25082: (__last._M_p - __first_p) * sizeof(_Bit_type)); 25082: 25082: if (__last._M_offset != 0) 25082: __fill_bvector(__last._M_p, 0, __last._M_offset, __x); 25082: } 25082: else if (__first._M_offset != __last._M_offset) 25082: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); 25082: } 25082: 25082: template 25082: struct _Bvector_base 25082: { 25082: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 25082: rebind<_Bit_type>::other _Bit_alloc_type; 25082: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> 25082: _Bit_alloc_traits; 25082: typedef typename _Bit_alloc_traits::pointer _Bit_pointer; 25082: 25082: struct _Bvector_impl_data 25082: { 25082: _Bit_iterator _M_start; 25082: _Bit_iterator _M_finish; 25082: _Bit_pointer _M_end_of_storage; 25082: 25082: _Bvector_impl_data() noexcept 25082: : _M_start(), _M_finish(), _M_end_of_storage() 25082: { } 25082: 25082: 25082: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept 25082: : _M_start(__x._M_start), _M_finish(__x._M_finish) 25082: , _M_end_of_storage(__x._M_end_of_storage) 25082: { __x._M_reset(); } 25082: 25082: void 25082: _M_move_data(_Bvector_impl_data&& __x) noexcept 25082: { 25082: this->_M_start = __x._M_start; 25082: this->_M_finish = __x._M_finish; 25082: this->_M_end_of_storage = __x._M_end_of_storage; 25082: __x._M_reset(); 25082: } 25082: 25082: 25082: void 25082: _M_reset() noexcept 25082: { 25082: _M_start = _M_finish = _Bit_iterator(); 25082: _M_end_of_storage = _Bit_pointer(); 25082: } 25082: }; 25082: 25082: struct _Bvector_impl 25082: : public _Bit_alloc_type, public _Bvector_impl_data 25082: { 25082: public: 25082: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value) 25082: 25082: : _Bit_alloc_type() 25082: { } 25082: 25082: _Bvector_impl(const _Bit_alloc_type& __a) noexcept 25082: : _Bit_alloc_type(__a) 25082: { } 25082: 25082: 25082: _Bvector_impl(_Bvector_impl&&) = default; 25082: 25082: 25082: _Bit_type* 25082: _M_end_addr() const noexcept 25082: { 25082: if (this->_M_end_of_storage) 25082: return std::__addressof(this->_M_end_of_storage[-1]) + 1; 25082: return 0; 25082: } 25082: }; 25082: 25082: public: 25082: typedef _Alloc allocator_type; 25082: 25082: _Bit_alloc_type& 25082: _M_get_Bit_allocator() noexcept 25082: { return this->_M_impl; } 25082: 25082: const _Bit_alloc_type& 25082: _M_get_Bit_allocator() const noexcept 25082: { return this->_M_impl; } 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return allocator_type(_M_get_Bit_allocator()); } 25082: 25082: 25082: _Bvector_base() = default; 25082: 25082: 25082: 25082: 25082: _Bvector_base(const allocator_type& __a) 25082: : _M_impl(__a) { } 25082: 25082: 25082: _Bvector_base(_Bvector_base&&) = default; 25082: 25082: 25082: ~_Bvector_base() 25082: { this->_M_deallocate(); } 25082: 25082: protected: 25082: _Bvector_impl _M_impl; 25082: 25082: _Bit_pointer 25082: _M_allocate(size_t __n) 25082: { return _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); } 25082: 25082: void 25082: _M_deallocate() 25082: { 25082: if (_M_impl._M_start._M_p) 25082: { 25082: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; 25082: _Bit_alloc_traits::deallocate(_M_impl, 25082: _M_impl._M_end_of_storage - __n, 25082: __n); 25082: _M_impl._M_reset(); 25082: } 25082: } 25082: 25082: 25082: void 25082: _M_move_data(_Bvector_base&& __x) noexcept 25082: { _M_impl._M_move_data(std::move(__x._M_impl)); } 25082: 25082: 25082: static size_t 25082: _S_nword(size_t __n) 25082: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } 25082: }; 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: # 587 "/usr/include/c++/8/bits/stl_bvector.h" 3 25082: template 25082: class vector : protected _Bvector_base<_Alloc> 25082: { 25082: typedef _Bvector_base<_Alloc> _Base; 25082: typedef typename _Base::_Bit_pointer _Bit_pointer; 25082: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; 25082: 25082: 25082: friend struct std::hash; 25082: 25082: 25082: public: 25082: typedef bool value_type; 25082: typedef size_t size_type; 25082: typedef ptrdiff_t difference_type; 25082: typedef _Bit_reference reference; 25082: typedef bool const_reference; 25082: typedef _Bit_reference* pointer; 25082: typedef const bool* const_pointer; 25082: typedef _Bit_iterator iterator; 25082: typedef _Bit_const_iterator const_iterator; 25082: typedef std::reverse_iterator const_reverse_iterator; 25082: typedef std::reverse_iterator reverse_iterator; 25082: typedef _Alloc allocator_type; 25082: 25082: allocator_type 25082: get_allocator() const 25082: { return _Base::get_allocator(); } 25082: 25082: protected: 25082: using _Base::_M_allocate; 25082: using _Base::_M_deallocate; 25082: using _Base::_S_nword; 25082: using _Base::_M_get_Bit_allocator; 25082: 25082: public: 25082: 25082: vector() = default; 25082: 25082: 25082: 25082: 25082: explicit 25082: vector(const allocator_type& __a) 25082: : _Base(__a) { } 25082: 25082: 25082: explicit 25082: vector(size_type __n, const allocator_type& __a = allocator_type()) 25082: : vector(__n, false, __a) 25082: { } 25082: 25082: vector(size_type __n, const bool& __value, 25082: const allocator_type& __a = allocator_type()) 25082: 25082: 25082: 25082: 25082: 25082: : _Base(__a) 25082: { 25082: _M_initialize(__n); 25082: _M_initialize_value(__value); 25082: } 25082: 25082: vector(const vector& __x) 25082: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) 25082: { 25082: _M_initialize(__x.size()); 25082: _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start); 25082: } 25082: 25082: 25082: vector(vector&&) = default; 25082: 25082: vector(vector&& __x, const allocator_type& __a) 25082: noexcept(_Bit_alloc_traits::_S_always_equal()) 25082: : _Base(__a) 25082: { 25082: if (__x.get_allocator() == __a) 25082: this->_M_move_data(std::move(__x)); 25082: else 25082: { 25082: _M_initialize(__x.size()); 25082: _M_copy_aligned(__x.begin(), __x.end(), begin()); 25082: __x.clear(); 25082: } 25082: } 25082: 25082: vector(const vector& __x, const allocator_type& __a) 25082: : _Base(__a) 25082: { 25082: _M_initialize(__x.size()); 25082: _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start); 25082: } 25082: 25082: vector(initializer_list __l, 25082: const allocator_type& __a = allocator_type()) 25082: : _Base(__a) 25082: { 25082: _M_initialize_range(__l.begin(), __l.end(), 25082: random_access_iterator_tag()); 25082: } 25082: 25082: 25082: 25082: template> 25082: vector(_InputIterator __first, _InputIterator __last, 25082: const allocator_type& __a = allocator_type()) 25082: : _Base(__a) 25082: { _M_initialize_dispatch(__first, __last, __false_type()); } 25082: # 710 "/usr/include/c++/8/bits/stl_bvector.h" 3 25082: ~vector() noexcept { } 25082: 25082: vector& 25082: operator=(const vector& __x) 25082: { 25082: if (&__x == this) 25082: return *this; 25082: 25082: if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) 25082: { 25082: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) 25082: { 25082: this->_M_deallocate(); 25082: std::__alloc_on_copy(_M_get_Bit_allocator(), 25082: __x._M_get_Bit_allocator()); 25082: _M_initialize(__x.size()); 25082: } 25082: else 25082: std::__alloc_on_copy(_M_get_Bit_allocator(), 25082: __x._M_get_Bit_allocator()); 25082: } 25082: 25082: if (__x.size() > capacity()) 25082: { 25082: this->_M_deallocate(); 25082: _M_initialize(__x.size()); 25082: } 25082: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 25082: begin()); 25082: return *this; 25082: } 25082: 25082: 25082: vector& 25082: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) 25082: { 25082: if (_Bit_alloc_traits::_S_propagate_on_move_assign() 25082: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) 25082: { 25082: this->_M_deallocate(); 25082: this->_M_move_data(std::move(__x)); 25082: std::__alloc_on_move(_M_get_Bit_allocator(), 25082: __x._M_get_Bit_allocator()); 25082: } 25082: else 25082: { 25082: if (__x.size() > capacity()) 25082: { 25082: this->_M_deallocate(); 25082: _M_initialize(__x.size()); 25082: } 25082: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 25082: begin()); 25082: __x.clear(); 25082: } 25082: return *this; 25082: } 25082: 25082: vector& 25082: operator=(initializer_list __l) 25082: { 25082: this->assign (__l.begin(), __l.end()); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: assign(size_type __n, const bool& __x) 25082: { _M_fill_assign(__n, __x); } 25082: 25082: 25082: template> 25082: void 25082: assign(_InputIterator __first, _InputIterator __last) 25082: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 25082: # 801 "/usr/include/c++/8/bits/stl_bvector.h" 3 25082: void 25082: assign(initializer_list __l) 25082: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } 25082: 25082: 25082: iterator 25082: begin() noexcept 25082: { return this->_M_impl._M_start; } 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return this->_M_impl._M_start; } 25082: 25082: iterator 25082: end() noexcept 25082: { return this->_M_impl._M_finish; } 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return this->_M_impl._M_finish; } 25082: 25082: reverse_iterator 25082: rbegin() noexcept 25082: { return reverse_iterator(end()); } 25082: 25082: const_reverse_iterator 25082: rbegin() const noexcept 25082: { return const_reverse_iterator(end()); } 25082: 25082: reverse_iterator 25082: rend() noexcept 25082: { return reverse_iterator(begin()); } 25082: 25082: const_reverse_iterator 25082: rend() const noexcept 25082: { return const_reverse_iterator(begin()); } 25082: 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return this->_M_impl._M_start; } 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return this->_M_impl._M_finish; } 25082: 25082: const_reverse_iterator 25082: crbegin() const noexcept 25082: { return const_reverse_iterator(end()); } 25082: 25082: const_reverse_iterator 25082: crend() const noexcept 25082: { return const_reverse_iterator(begin()); } 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return size_type(end() - begin()); } 25082: 25082: size_type 25082: max_size() const noexcept 25082: { 25082: const size_type __isize = 25082: __gnu_cxx::__numeric_traits::__max 25082: - int(_S_word_bit) + 1; 25082: const size_type __asize 25082: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); 25082: return (__asize <= __isize / int(_S_word_bit) 25082: ? __asize * int(_S_word_bit) : __isize); 25082: } 25082: 25082: size_type 25082: capacity() const noexcept 25082: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) 25082: - begin()); } 25082: 25082: bool 25082: empty() const noexcept 25082: { return begin() == end(); } 25082: 25082: reference 25082: operator[](size_type __n) 25082: { 25082: return *iterator(this->_M_impl._M_start._M_p 25082: + __n / int(_S_word_bit), __n % int(_S_word_bit)); 25082: } 25082: 25082: const_reference 25082: operator[](size_type __n) const 25082: { 25082: return *const_iterator(this->_M_impl._M_start._M_p 25082: + __n / int(_S_word_bit), __n % int(_S_word_bit)); 25082: } 25082: 25082: protected: 25082: void 25082: _M_range_check(size_type __n) const 25082: { 25082: if (__n >= this->size()) 25082: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 25082: 25082: , 25082: __n, this->size()); 25082: } 25082: 25082: public: 25082: reference 25082: at(size_type __n) 25082: { _M_range_check(__n); return (*this)[__n]; } 25082: 25082: const_reference 25082: at(size_type __n) const 25082: { _M_range_check(__n); return (*this)[__n]; } 25082: 25082: void 25082: reserve(size_type __n) 25082: { 25082: if (__n > max_size()) 25082: __throw_length_error(("vector::reserve")); 25082: if (capacity() < __n) 25082: _M_reallocate(__n); 25082: } 25082: 25082: reference 25082: front() 25082: { return *begin(); } 25082: 25082: const_reference 25082: front() const 25082: { return *begin(); } 25082: 25082: reference 25082: back() 25082: { return *(end() - 1); } 25082: 25082: const_reference 25082: back() const 25082: { return *(end() - 1); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: data() noexcept { } 25082: 25082: void 25082: push_back(bool __x) 25082: { 25082: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 25082: *this->_M_impl._M_finish++ = __x; 25082: else 25082: _M_insert_aux(end(), __x); 25082: } 25082: 25082: void 25082: swap(vector& __x) noexcept 25082: { 25082: std::swap(this->_M_impl._M_start, __x._M_impl._M_start); 25082: std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish); 25082: std::swap(this->_M_impl._M_end_of_storage, 25082: __x._M_impl._M_end_of_storage); 25082: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), 25082: __x._M_get_Bit_allocator()); 25082: } 25082: 25082: 25082: static void 25082: swap(reference __x, reference __y) noexcept 25082: { 25082: bool __tmp = __x; 25082: __x = __y; 25082: __y = __tmp; 25082: } 25082: 25082: iterator 25082: 25082: insert(const_iterator __position, const bool& __x = bool()) 25082: 25082: 25082: 25082: { 25082: const difference_type __n = __position - begin(); 25082: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() 25082: && __position == end()) 25082: *this->_M_impl._M_finish++ = __x; 25082: else 25082: _M_insert_aux(__position._M_const_cast(), __x); 25082: return begin() + __n; 25082: } 25082: 25082: 25082: template> 25082: iterator 25082: insert(const_iterator __position, 25082: _InputIterator __first, _InputIterator __last) 25082: { 25082: difference_type __offset = __position - cbegin(); 25082: _M_insert_dispatch(__position._M_const_cast(), 25082: __first, __last, __false_type()); 25082: return begin() + __offset; 25082: } 25082: # 1017 "/usr/include/c++/8/bits/stl_bvector.h" 3 25082: iterator 25082: insert(const_iterator __position, size_type __n, const bool& __x) 25082: { 25082: difference_type __offset = __position - cbegin(); 25082: _M_fill_insert(__position._M_const_cast(), __n, __x); 25082: return begin() + __offset; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: insert(const_iterator __p, initializer_list __l) 25082: { return this->insert(__p, __l.begin(), __l.end()); } 25082: 25082: 25082: void 25082: pop_back() 25082: { --this->_M_impl._M_finish; } 25082: 25082: iterator 25082: 25082: erase(const_iterator __position) 25082: 25082: 25082: 25082: { return _M_erase(__position._M_const_cast()); } 25082: 25082: iterator 25082: 25082: erase(const_iterator __first, const_iterator __last) 25082: 25082: 25082: 25082: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } 25082: 25082: void 25082: resize(size_type __new_size, bool __x = bool()) 25082: { 25082: if (__new_size < size()) 25082: _M_erase_at_end(begin() + difference_type(__new_size)); 25082: else 25082: insert(end(), __new_size - size(), __x); 25082: } 25082: 25082: 25082: void 25082: shrink_to_fit() 25082: { _M_shrink_to_fit(); } 25082: 25082: 25082: void 25082: flip() noexcept 25082: { 25082: _Bit_type * const __end = this->_M_impl._M_end_addr(); 25082: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) 25082: *__p = ~*__p; 25082: } 25082: 25082: void 25082: clear() noexcept 25082: { _M_erase_at_end(begin()); } 25082: 25082: 25082: template 25082: 25082: reference 25082: 25082: 25082: 25082: emplace_back(_Args&&... __args) 25082: { 25082: push_back(bool(__args...)); 25082: 25082: return back(); 25082: 25082: } 25082: 25082: template 25082: iterator 25082: emplace(const_iterator __pos, _Args&&... __args) 25082: { return insert(__pos, bool(__args...)); } 25082: 25082: 25082: protected: 25082: 25082: iterator 25082: _M_copy_aligned(const_iterator __first, const_iterator __last, 25082: iterator __result) 25082: { 25082: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); 25082: return std::copy(const_iterator(__last._M_p, 0), __last, 25082: iterator(__q, 0)); 25082: } 25082: 25082: void 25082: _M_initialize(size_type __n) 25082: { 25082: if (__n) 25082: { 25082: _Bit_pointer __q = this->_M_allocate(__n); 25082: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 25082: this->_M_impl._M_start = iterator(std::__addressof(*__q), 0); 25082: } 25082: else 25082: { 25082: this->_M_impl._M_end_of_storage = _Bit_pointer(); 25082: this->_M_impl._M_start = iterator(0, 0); 25082: } 25082: this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n); 25082: 25082: } 25082: 25082: void 25082: _M_initialize_value(bool __x) 25082: { 25082: if (_Bit_type* __p = this->_M_impl._M_start._M_p) 25082: __builtin_memset(__p, __x ? ~0 : 0, 25082: (this->_M_impl._M_end_addr() - __p) 25082: * sizeof(_Bit_type)); 25082: } 25082: 25082: void 25082: _M_reallocate(size_type __n); 25082: 25082: 25082: bool 25082: _M_shrink_to_fit(); 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) 25082: { 25082: _M_initialize(static_cast(__n)); 25082: _M_initialize_value(__x); 25082: } 25082: 25082: template 25082: void 25082: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, 25082: __false_type) 25082: { _M_initialize_range(__first, __last, 25082: std::__iterator_category(__first)); } 25082: 25082: template 25082: void 25082: _M_initialize_range(_InputIterator __first, _InputIterator __last, 25082: std::input_iterator_tag) 25082: { 25082: for (; __first != __last; ++__first) 25082: push_back(*__first); 25082: } 25082: 25082: template 25082: void 25082: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, 25082: std::forward_iterator_tag) 25082: { 25082: const size_type __n = std::distance(__first, __last); 25082: _M_initialize(__n); 25082: std::copy(__first, __last, this->_M_impl._M_start); 25082: } 25082: # 1203 "/usr/include/c++/8/bits/stl_bvector.h" 3 25082: void 25082: _M_fill_assign(size_t __n, bool __x) 25082: { 25082: if (__n > size()) 25082: { 25082: _M_initialize_value(__x); 25082: insert(end(), __n - size(), __x); 25082: } 25082: else 25082: { 25082: _M_erase_at_end(begin() + __n); 25082: _M_initialize_value(__x); 25082: } 25082: } 25082: 25082: template 25082: void 25082: _M_assign_aux(_InputIterator __first, _InputIterator __last, 25082: std::input_iterator_tag) 25082: { 25082: iterator __cur = begin(); 25082: for (; __first != __last && __cur != end(); ++__cur, ++__first) 25082: *__cur = *__first; 25082: if (__first == __last) 25082: _M_erase_at_end(__cur); 25082: else 25082: insert(end(), __first, __last); 25082: } 25082: 25082: template 25082: void 25082: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 25082: std::forward_iterator_tag) 25082: { 25082: const size_type __len = std::distance(__first, __last); 25082: if (__len < size()) 25082: _M_erase_at_end(std::copy(__first, __last, begin())); 25082: else 25082: { 25082: _ForwardIterator __mid = __first; 25082: std::advance(__mid, size()); 25082: std::copy(__first, __mid, begin()); 25082: insert(end(), __mid, __last); 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, 25082: __true_type) 25082: { _M_fill_insert(__pos, __n, __x); } 25082: 25082: template 25082: void 25082: _M_insert_dispatch(iterator __pos, 25082: _InputIterator __first, _InputIterator __last, 25082: __false_type) 25082: { _M_insert_range(__pos, __first, __last, 25082: std::__iterator_category(__first)); } 25082: 25082: void 25082: _M_fill_insert(iterator __position, size_type __n, bool __x); 25082: 25082: template 25082: void 25082: _M_insert_range(iterator __pos, _InputIterator __first, 25082: _InputIterator __last, std::input_iterator_tag) 25082: { 25082: for (; __first != __last; ++__first) 25082: { 25082: __pos = insert(__pos, *__first); 25082: ++__pos; 25082: } 25082: } 25082: 25082: template 25082: void 25082: _M_insert_range(iterator __position, _ForwardIterator __first, 25082: _ForwardIterator __last, std::forward_iterator_tag); 25082: 25082: void 25082: _M_insert_aux(iterator __position, bool __x); 25082: 25082: size_type 25082: _M_check_len(size_type __n, const char* __s) const 25082: { 25082: if (max_size() - size() < __n) 25082: __throw_length_error((__s)); 25082: 25082: const size_type __len = size() + std::max(size(), __n); 25082: return (__len < size() || __len > max_size()) ? max_size() : __len; 25082: } 25082: 25082: void 25082: _M_erase_at_end(iterator __pos) 25082: { this->_M_impl._M_finish = __pos; } 25082: 25082: iterator 25082: _M_erase(iterator __pos); 25082: 25082: iterator 25082: _M_erase(iterator __first, iterator __last); 25082: }; 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: template 25082: struct hash> 25082: : public __hash_base> 25082: { 25082: size_t 25082: operator()(const std::vector&) const noexcept; 25082: }; 25082: 25082: 25082: } 25082: # 66 "/usr/include/c++/8/vector" 2 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/vector.tcc" 1 3 25082: # 59 "/usr/include/c++/8/bits/vector.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: void 25082: vector<_Tp, _Alloc>:: 25082: reserve(size_type __n) 25082: { 25082: if (__n > this->max_size()) 25082: __throw_length_error(("vector::reserve")); 25082: if (this->capacity() < __n) 25082: { 25082: const size_type __old_size = size(); 25082: pointer __tmp = _M_allocate_and_copy(__n, 25082: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), 25082: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); 25082: ; 25082: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: _M_deallocate(this->_M_impl._M_start, 25082: this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_start); 25082: this->_M_impl._M_start = __tmp; 25082: this->_M_impl._M_finish = __tmp + __old_size; 25082: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 25082: } 25082: } 25082: 25082: 25082: template 25082: template 25082: 25082: typename vector<_Tp, _Alloc>::reference 25082: 25082: 25082: 25082: vector<_Tp, _Alloc>:: 25082: emplace_back(_Args&&... __args) 25082: { 25082: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 25082: { 25082: ; 25082: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 25082: std::forward<_Args>(__args)...); 25082: ++this->_M_impl._M_finish; 25082: ; 25082: } 25082: else 25082: _M_realloc_insert(end(), std::forward<_Args>(__args)...); 25082: 25082: return back(); 25082: 25082: } 25082: 25082: 25082: template 25082: typename vector<_Tp, _Alloc>::iterator 25082: vector<_Tp, _Alloc>:: 25082: 25082: insert(const_iterator __position, const value_type& __x) 25082: 25082: 25082: 25082: { 25082: const size_type __n = __position - begin(); 25082: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 25082: if (__position == end()) 25082: { 25082: ; 25082: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 25082: __x); 25082: ++this->_M_impl._M_finish; 25082: ; 25082: } 25082: else 25082: { 25082: 25082: const auto __pos = begin() + (__position - cbegin()); 25082: 25082: 25082: _Temporary_value __x_copy(this, __x); 25082: _M_insert_aux(__pos, std::move(__x_copy._M_val())); 25082: 25082: 25082: 25082: } 25082: else 25082: 25082: _M_realloc_insert(begin() + (__position - cbegin()), __x); 25082: 25082: 25082: 25082: 25082: return iterator(this->_M_impl._M_start + __n); 25082: } 25082: 25082: template 25082: typename vector<_Tp, _Alloc>::iterator 25082: vector<_Tp, _Alloc>:: 25082: _M_erase(iterator __position) 25082: { 25082: if (__position + 1 != end()) 25082: std::move(__position + 1, end(), __position); 25082: --this->_M_impl._M_finish; 25082: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 25082: ; 25082: return __position; 25082: } 25082: 25082: template 25082: typename vector<_Tp, _Alloc>::iterator 25082: vector<_Tp, _Alloc>:: 25082: _M_erase(iterator __first, iterator __last) 25082: { 25082: if (__first != __last) 25082: { 25082: if (__last != end()) 25082: std::move(__last, end(), __first); 25082: _M_erase_at_end(__first.base() + (end() - __last)); 25082: } 25082: return __first; 25082: } 25082: 25082: template 25082: vector<_Tp, _Alloc>& 25082: vector<_Tp, _Alloc>:: 25082: operator=(const vector<_Tp, _Alloc>& __x) 25082: { 25082: if (&__x != this) 25082: { 25082: ; 25082: 25082: if (_Alloc_traits::_S_propagate_on_copy_assign()) 25082: { 25082: if (!_Alloc_traits::_S_always_equal() 25082: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) 25082: { 25082: 25082: this->clear(); 25082: _M_deallocate(this->_M_impl._M_start, 25082: this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_start); 25082: this->_M_impl._M_start = nullptr; 25082: this->_M_impl._M_finish = nullptr; 25082: this->_M_impl._M_end_of_storage = nullptr; 25082: } 25082: std::__alloc_on_copy(_M_get_Tp_allocator(), 25082: __x._M_get_Tp_allocator()); 25082: } 25082: 25082: const size_type __xlen = __x.size(); 25082: if (__xlen > capacity()) 25082: { 25082: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), 25082: __x.end()); 25082: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: _M_deallocate(this->_M_impl._M_start, 25082: this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_start); 25082: this->_M_impl._M_start = __tmp; 25082: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; 25082: } 25082: else if (size() >= __xlen) 25082: { 25082: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), 25082: end(), _M_get_Tp_allocator()); 25082: } 25082: else 25082: { 25082: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), 25082: this->_M_impl._M_start); 25082: std::__uninitialized_copy_a(__x._M_impl._M_start + size(), 25082: __x._M_impl._M_finish, 25082: this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: } 25082: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: void 25082: vector<_Tp, _Alloc>:: 25082: _M_fill_assign(size_t __n, const value_type& __val) 25082: { 25082: if (__n > capacity()) 25082: { 25082: vector __tmp(__n, __val, _M_get_Tp_allocator()); 25082: __tmp._M_impl._M_swap_data(this->_M_impl); 25082: } 25082: else if (__n > size()) 25082: { 25082: std::fill(begin(), end(), __val); 25082: const size_type __add = __n - size(); 25082: ; 25082: this->_M_impl._M_finish = 25082: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 25082: __add, __val, _M_get_Tp_allocator()); 25082: ; 25082: } 25082: else 25082: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); 25082: } 25082: 25082: template 25082: template 25082: void 25082: vector<_Tp, _Alloc>:: 25082: _M_assign_aux(_InputIterator __first, _InputIterator __last, 25082: std::input_iterator_tag) 25082: { 25082: pointer __cur(this->_M_impl._M_start); 25082: for (; __first != __last && __cur != this->_M_impl._M_finish; 25082: ++__cur, ++__first) 25082: *__cur = *__first; 25082: if (__first == __last) 25082: _M_erase_at_end(__cur); 25082: else 25082: _M_range_insert(end(), __first, __last, 25082: std::__iterator_category(__first)); 25082: } 25082: 25082: template 25082: template 25082: void 25082: vector<_Tp, _Alloc>:: 25082: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 25082: std::forward_iterator_tag) 25082: { 25082: const size_type __len = std::distance(__first, __last); 25082: 25082: if (__len > capacity()) 25082: { 25082: pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); 25082: ; 25082: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: _M_deallocate(this->_M_impl._M_start, 25082: this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_start); 25082: this->_M_impl._M_start = __tmp; 25082: this->_M_impl._M_finish = this->_M_impl._M_start + __len; 25082: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; 25082: } 25082: else if (size() >= __len) 25082: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); 25082: else 25082: { 25082: _ForwardIterator __mid = __first; 25082: std::advance(__mid, size()); 25082: std::copy(__first, __mid, this->_M_impl._M_start); 25082: const size_type __attribute__((__unused__)) __n = __len - size(); 25082: ; 25082: this->_M_impl._M_finish = 25082: std::__uninitialized_copy_a(__mid, __last, 25082: this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: ; 25082: } 25082: } 25082: 25082: 25082: template 25082: auto 25082: vector<_Tp, _Alloc>:: 25082: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator 25082: { 25082: const auto __n = __position - cbegin(); 25082: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 25082: if (__position == cend()) 25082: { 25082: ; 25082: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 25082: std::move(__v)); 25082: ++this->_M_impl._M_finish; 25082: ; 25082: } 25082: else 25082: _M_insert_aux(begin() + __n, std::move(__v)); 25082: else 25082: _M_realloc_insert(begin() + __n, std::move(__v)); 25082: 25082: return iterator(this->_M_impl._M_start + __n); 25082: } 25082: 25082: template 25082: template 25082: auto 25082: vector<_Tp, _Alloc>:: 25082: _M_emplace_aux(const_iterator __position, _Args&&... __args) 25082: -> iterator 25082: { 25082: const auto __n = __position - cbegin(); 25082: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 25082: if (__position == cend()) 25082: { 25082: ; 25082: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 25082: std::forward<_Args>(__args)...); 25082: ++this->_M_impl._M_finish; 25082: ; 25082: } 25082: else 25082: { 25082: 25082: 25082: 25082: _Temporary_value __tmp(this, std::forward<_Args>(__args)...); 25082: _M_insert_aux(begin() + __n, std::move(__tmp._M_val())); 25082: } 25082: else 25082: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...); 25082: 25082: return iterator(this->_M_impl._M_start + __n); 25082: } 25082: 25082: template 25082: template 25082: void 25082: vector<_Tp, _Alloc>:: 25082: _M_insert_aux(iterator __position, _Arg&& __arg) 25082: 25082: 25082: 25082: 25082: 25082: 25082: { 25082: ; 25082: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 25082: std::move(*(this->_M_impl._M_finish - 1))); 25082: ++this->_M_impl._M_finish; 25082: ; 25082: 25082: 25082: 25082: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) 25082: 25082: ; 25082: 25082: 25082: 25082: *__position = std::forward<_Arg>(__arg); 25082: 25082: } 25082: 25082: 25082: template 25082: template 25082: void 25082: vector<_Tp, _Alloc>:: 25082: _M_realloc_insert(iterator __position, _Args&&... __args) 25082: 25082: 25082: 25082: 25082: 25082: 25082: { 25082: const size_type __len = 25082: _M_check_len(size_type(1), "vector::_M_realloc_insert"); 25082: pointer __old_start = this->_M_impl._M_start; 25082: pointer __old_finish = this->_M_impl._M_finish; 25082: const size_type __elems_before = __position - begin(); 25082: pointer __new_start(this->_M_allocate(__len)); 25082: pointer __new_finish(__new_start); 25082: try 25082: { 25082: 25082: 25082: 25082: 25082: 25082: _Alloc_traits::construct(this->_M_impl, 25082: __new_start + __elems_before, 25082: 25082: std::forward<_Args>(__args)...); 25082: 25082: 25082: 25082: __new_finish = pointer(); 25082: 25082: __new_finish 25082: = std::__uninitialized_move_if_noexcept_a 25082: (__old_start, __position.base(), 25082: __new_start, _M_get_Tp_allocator()); 25082: 25082: ++__new_finish; 25082: 25082: __new_finish 25082: = std::__uninitialized_move_if_noexcept_a 25082: (__position.base(), __old_finish, 25082: __new_finish, _M_get_Tp_allocator()); 25082: } 25082: catch(...) 25082: { 25082: if (!__new_finish) 25082: _Alloc_traits::destroy(this->_M_impl, 25082: __new_start + __elems_before); 25082: else 25082: std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); 25082: _M_deallocate(__new_start, __len); 25082: throw; 25082: } 25082: ; 25082: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); 25082: _M_deallocate(__old_start, 25082: this->_M_impl._M_end_of_storage - __old_start); 25082: this->_M_impl._M_start = __new_start; 25082: this->_M_impl._M_finish = __new_finish; 25082: this->_M_impl._M_end_of_storage = __new_start + __len; 25082: } 25082: 25082: template 25082: void 25082: vector<_Tp, _Alloc>:: 25082: _M_fill_insert(iterator __position, size_type __n, const value_type& __x) 25082: { 25082: if (__n != 0) 25082: { 25082: if (size_type(this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_finish) >= __n) 25082: { 25082: 25082: 25082: 25082: _Temporary_value __tmp(this, __x); 25082: value_type& __x_copy = __tmp._M_val(); 25082: 25082: const size_type __elems_after = end() - __position; 25082: pointer __old_finish(this->_M_impl._M_finish); 25082: if (__elems_after > __n) 25082: { 25082: ; 25082: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 25082: this->_M_impl._M_finish, 25082: this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: this->_M_impl._M_finish += __n; 25082: ; 25082: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 25082: ; 25082: std::fill(__position.base(), __position.base() + __n, 25082: __x_copy); 25082: } 25082: else 25082: { 25082: ; 25082: this->_M_impl._M_finish = 25082: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 25082: __n - __elems_after, 25082: __x_copy, 25082: _M_get_Tp_allocator()); 25082: ; 25082: std::__uninitialized_move_a(__position.base(), __old_finish, 25082: this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: this->_M_impl._M_finish += __elems_after; 25082: ; 25082: std::fill(__position.base(), __old_finish, __x_copy); 25082: } 25082: } 25082: else 25082: { 25082: const size_type __len = 25082: _M_check_len(__n, "vector::_M_fill_insert"); 25082: const size_type __elems_before = __position - begin(); 25082: pointer __new_start(this->_M_allocate(__len)); 25082: pointer __new_finish(__new_start); 25082: try 25082: { 25082: 25082: std::__uninitialized_fill_n_a(__new_start + __elems_before, 25082: __n, __x, 25082: _M_get_Tp_allocator()); 25082: __new_finish = pointer(); 25082: 25082: __new_finish 25082: = std::__uninitialized_move_if_noexcept_a 25082: (this->_M_impl._M_start, __position.base(), 25082: __new_start, _M_get_Tp_allocator()); 25082: 25082: __new_finish += __n; 25082: 25082: __new_finish 25082: = std::__uninitialized_move_if_noexcept_a 25082: (__position.base(), this->_M_impl._M_finish, 25082: __new_finish, _M_get_Tp_allocator()); 25082: } 25082: catch(...) 25082: { 25082: if (!__new_finish) 25082: std::_Destroy(__new_start + __elems_before, 25082: __new_start + __elems_before + __n, 25082: _M_get_Tp_allocator()); 25082: else 25082: std::_Destroy(__new_start, __new_finish, 25082: _M_get_Tp_allocator()); 25082: _M_deallocate(__new_start, __len); 25082: throw; 25082: } 25082: ; 25082: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: _M_deallocate(this->_M_impl._M_start, 25082: this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_start); 25082: this->_M_impl._M_start = __new_start; 25082: this->_M_impl._M_finish = __new_finish; 25082: this->_M_impl._M_end_of_storage = __new_start + __len; 25082: } 25082: } 25082: } 25082: 25082: 25082: template 25082: void 25082: vector<_Tp, _Alloc>:: 25082: _M_default_append(size_type __n) 25082: { 25082: if (__n != 0) 25082: { 25082: const size_type __size = size(); 25082: size_type __navail = size_type(this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_finish); 25082: 25082: if (__size > max_size() || __navail > max_size() - __size) 25082: __builtin_unreachable(); 25082: 25082: if (__navail >= __n) 25082: { 25082: ; 25082: this->_M_impl._M_finish = 25082: std::__uninitialized_default_n_a(this->_M_impl._M_finish, 25082: __n, _M_get_Tp_allocator()); 25082: ; 25082: } 25082: else 25082: { 25082: const size_type __len = 25082: _M_check_len(__n, "vector::_M_default_append"); 25082: pointer __new_start(this->_M_allocate(__len)); 25082: pointer __destroy_from = pointer(); 25082: try 25082: { 25082: std::__uninitialized_default_n_a(__new_start + __size, 25082: __n, _M_get_Tp_allocator()); 25082: __destroy_from = __new_start + __size; 25082: std::__uninitialized_move_if_noexcept_a( 25082: this->_M_impl._M_start, this->_M_impl._M_finish, 25082: __new_start, _M_get_Tp_allocator()); 25082: } 25082: catch(...) 25082: { 25082: if (__destroy_from) 25082: std::_Destroy(__destroy_from, __destroy_from + __n, 25082: _M_get_Tp_allocator()); 25082: _M_deallocate(__new_start, __len); 25082: throw; 25082: } 25082: ; 25082: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: _M_deallocate(this->_M_impl._M_start, 25082: this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_start); 25082: this->_M_impl._M_start = __new_start; 25082: this->_M_impl._M_finish = __new_start + __size + __n; 25082: this->_M_impl._M_end_of_storage = __new_start + __len; 25082: } 25082: } 25082: } 25082: 25082: template 25082: bool 25082: vector<_Tp, _Alloc>:: 25082: _M_shrink_to_fit() 25082: { 25082: if (capacity() == size()) 25082: return false; 25082: ; 25082: return std::__shrink_to_fit_aux::_S_do_it(*this); 25082: } 25082: 25082: 25082: template 25082: template 25082: void 25082: vector<_Tp, _Alloc>:: 25082: _M_range_insert(iterator __pos, _InputIterator __first, 25082: _InputIterator __last, std::input_iterator_tag) 25082: { 25082: if (__pos == end()) 25082: { 25082: for (; __first != __last; ++__first) 25082: insert(end(), *__first); 25082: } 25082: else if (__first != __last) 25082: { 25082: vector __tmp(__first, __last, _M_get_Tp_allocator()); 25082: insert(__pos, 25082: std::make_move_iterator(__tmp.begin()), 25082: std::make_move_iterator(__tmp.end())); 25082: } 25082: } 25082: 25082: template 25082: template 25082: void 25082: vector<_Tp, _Alloc>:: 25082: _M_range_insert(iterator __position, _ForwardIterator __first, 25082: _ForwardIterator __last, std::forward_iterator_tag) 25082: { 25082: if (__first != __last) 25082: { 25082: const size_type __n = std::distance(__first, __last); 25082: if (size_type(this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_finish) >= __n) 25082: { 25082: const size_type __elems_after = end() - __position; 25082: pointer __old_finish(this->_M_impl._M_finish); 25082: if (__elems_after > __n) 25082: { 25082: ; 25082: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 25082: this->_M_impl._M_finish, 25082: this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: this->_M_impl._M_finish += __n; 25082: ; 25082: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 25082: ; 25082: std::copy(__first, __last, __position); 25082: } 25082: else 25082: { 25082: _ForwardIterator __mid = __first; 25082: std::advance(__mid, __elems_after); 25082: ; 25082: std::__uninitialized_copy_a(__mid, __last, 25082: this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: this->_M_impl._M_finish += __n - __elems_after; 25082: ; 25082: std::__uninitialized_move_a(__position.base(), 25082: __old_finish, 25082: this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: this->_M_impl._M_finish += __elems_after; 25082: ; 25082: std::copy(__first, __mid, __position); 25082: } 25082: } 25082: else 25082: { 25082: const size_type __len = 25082: _M_check_len(__n, "vector::_M_range_insert"); 25082: pointer __new_start(this->_M_allocate(__len)); 25082: pointer __new_finish(__new_start); 25082: try 25082: { 25082: __new_finish 25082: = std::__uninitialized_move_if_noexcept_a 25082: (this->_M_impl._M_start, __position.base(), 25082: __new_start, _M_get_Tp_allocator()); 25082: __new_finish 25082: = std::__uninitialized_copy_a(__first, __last, 25082: __new_finish, 25082: _M_get_Tp_allocator()); 25082: __new_finish 25082: = std::__uninitialized_move_if_noexcept_a 25082: (__position.base(), this->_M_impl._M_finish, 25082: __new_finish, _M_get_Tp_allocator()); 25082: } 25082: catch(...) 25082: { 25082: std::_Destroy(__new_start, __new_finish, 25082: _M_get_Tp_allocator()); 25082: _M_deallocate(__new_start, __len); 25082: throw; 25082: } 25082: ; 25082: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 25082: _M_get_Tp_allocator()); 25082: _M_deallocate(this->_M_impl._M_start, 25082: this->_M_impl._M_end_of_storage 25082: - this->_M_impl._M_start); 25082: this->_M_impl._M_start = __new_start; 25082: this->_M_impl._M_finish = __new_finish; 25082: this->_M_impl._M_end_of_storage = __new_start + __len; 25082: } 25082: } 25082: } 25082: 25082: 25082: 25082: template 25082: void 25082: vector:: 25082: _M_reallocate(size_type __n) 25082: { 25082: _Bit_pointer __q = this->_M_allocate(__n); 25082: iterator __start(std::__addressof(*__q), 0); 25082: iterator __finish(_M_copy_aligned(begin(), end(), __start)); 25082: this->_M_deallocate(); 25082: this->_M_impl._M_start = __start; 25082: this->_M_impl._M_finish = __finish; 25082: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 25082: } 25082: 25082: template 25082: void 25082: vector:: 25082: _M_fill_insert(iterator __position, size_type __n, bool __x) 25082: { 25082: if (__n == 0) 25082: return; 25082: if (capacity() - size() >= __n) 25082: { 25082: std::copy_backward(__position, end(), 25082: this->_M_impl._M_finish + difference_type(__n)); 25082: std::fill(__position, __position + difference_type(__n), __x); 25082: this->_M_impl._M_finish += difference_type(__n); 25082: } 25082: else 25082: { 25082: const size_type __len = 25082: _M_check_len(__n, "vector::_M_fill_insert"); 25082: _Bit_pointer __q = this->_M_allocate(__len); 25082: iterator __start(std::__addressof(*__q), 0); 25082: iterator __i = _M_copy_aligned(begin(), __position, __start); 25082: std::fill(__i, __i + difference_type(__n), __x); 25082: iterator __finish = std::copy(__position, end(), 25082: __i + difference_type(__n)); 25082: this->_M_deallocate(); 25082: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 25082: this->_M_impl._M_start = __start; 25082: this->_M_impl._M_finish = __finish; 25082: } 25082: } 25082: 25082: template 25082: template 25082: void 25082: vector:: 25082: _M_insert_range(iterator __position, _ForwardIterator __first, 25082: _ForwardIterator __last, std::forward_iterator_tag) 25082: { 25082: if (__first != __last) 25082: { 25082: size_type __n = std::distance(__first, __last); 25082: if (capacity() - size() >= __n) 25082: { 25082: std::copy_backward(__position, end(), 25082: this->_M_impl._M_finish 25082: + difference_type(__n)); 25082: std::copy(__first, __last, __position); 25082: this->_M_impl._M_finish += difference_type(__n); 25082: } 25082: else 25082: { 25082: const size_type __len = 25082: _M_check_len(__n, "vector::_M_insert_range"); 25082: _Bit_pointer __q = this->_M_allocate(__len); 25082: iterator __start(std::__addressof(*__q), 0); 25082: iterator __i = _M_copy_aligned(begin(), __position, __start); 25082: __i = std::copy(__first, __last, __i); 25082: iterator __finish = std::copy(__position, end(), __i); 25082: this->_M_deallocate(); 25082: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 25082: this->_M_impl._M_start = __start; 25082: this->_M_impl._M_finish = __finish; 25082: } 25082: } 25082: } 25082: 25082: template 25082: void 25082: vector:: 25082: _M_insert_aux(iterator __position, bool __x) 25082: { 25082: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 25082: { 25082: std::copy_backward(__position, this->_M_impl._M_finish, 25082: this->_M_impl._M_finish + 1); 25082: *__position = __x; 25082: ++this->_M_impl._M_finish; 25082: } 25082: else 25082: { 25082: const size_type __len = 25082: _M_check_len(size_type(1), "vector::_M_insert_aux"); 25082: _Bit_pointer __q = this->_M_allocate(__len); 25082: iterator __start(std::__addressof(*__q), 0); 25082: iterator __i = _M_copy_aligned(begin(), __position, __start); 25082: *__i++ = __x; 25082: iterator __finish = std::copy(__position, end(), __i); 25082: this->_M_deallocate(); 25082: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 25082: this->_M_impl._M_start = __start; 25082: this->_M_impl._M_finish = __finish; 25082: } 25082: } 25082: 25082: template 25082: typename vector::iterator 25082: vector:: 25082: _M_erase(iterator __position) 25082: { 25082: if (__position + 1 != end()) 25082: std::copy(__position + 1, end(), __position); 25082: --this->_M_impl._M_finish; 25082: return __position; 25082: } 25082: 25082: template 25082: typename vector::iterator 25082: vector:: 25082: _M_erase(iterator __first, iterator __last) 25082: { 25082: if (__first != __last) 25082: _M_erase_at_end(std::copy(__last, end(), __first)); 25082: return __first; 25082: } 25082: 25082: 25082: template 25082: bool 25082: vector:: 25082: _M_shrink_to_fit() 25082: { 25082: if (capacity() - size() < int(_S_word_bit)) 25082: return false; 25082: try 25082: { 25082: _M_reallocate(size()); 25082: return true; 25082: } 25082: catch(...) 25082: { return false; } 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: size_t 25082: hash>:: 25082: operator()(const std::vector& __b) const noexcept 25082: { 25082: size_t __hash = 0; 25082: using std::_S_word_bit; 25082: using std::_Bit_type; 25082: 25082: const size_t __words = __b.size() / _S_word_bit; 25082: if (__words) 25082: { 25082: const size_t __clength = __words * sizeof(_Bit_type); 25082: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); 25082: } 25082: 25082: const size_t __extrabits = __b.size() % _S_word_bit; 25082: if (__extrabits) 25082: { 25082: _Bit_type __hiword = *__b._M_impl._M_finish._M_p; 25082: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); 25082: 25082: const size_t __clength 25082: = (__extrabits + 8 - 1) / 8; 25082: if (__words) 25082: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); 25082: else 25082: __hash = std::_Hash_impl::hash(&__hiword, __clength); 25082: } 25082: 25082: return __hash; 25082: } 25082: 25082: 25082: } 25082: # 70 "/usr/include/c++/8/vector" 2 3 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Names.h" 2 3 4 25082: 25082: # 1 "/usr/include/c++/8/set" 1 3 4 25082: # 58 "/usr/include/c++/8/set" 3 4 25082: 25082: # 59 "/usr/include/c++/8/set" 3 25082: 25082: # 1 "/usr/include/c++/8/bits/stl_tree.h" 1 3 25082: # 61 "/usr/include/c++/8/bits/stl_tree.h" 3 25082: 25082: # 62 "/usr/include/c++/8/bits/stl_tree.h" 3 25082: # 72 "/usr/include/c++/8/bits/stl_tree.h" 3 25082: # 1 "/usr/include/c++/8/bits/node_handle.h" 1 3 25082: # 34 "/usr/include/c++/8/bits/node_handle.h" 3 25082: 25082: # 35 "/usr/include/c++/8/bits/node_handle.h" 3 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/optional" 1 3 25082: # 32 "/usr/include/c++/8/optional" 3 25082: 25082: # 33 "/usr/include/c++/8/optional" 3 25082: # 43 "/usr/include/c++/8/optional" 3 25082: # 1 "/usr/include/c++/8/bits/enable_special_members.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/enable_special_members.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/enable_special_members.h" 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: struct _Enable_default_constructor_tag 25082: { 25082: explicit constexpr _Enable_default_constructor_tag() = default; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Enable_default_constructor 25082: { 25082: constexpr _Enable_default_constructor() noexcept = default; 25082: constexpr _Enable_default_constructor(_Enable_default_constructor const&) 25082: noexcept = default; 25082: constexpr _Enable_default_constructor(_Enable_default_constructor&&) 25082: noexcept = default; 25082: _Enable_default_constructor& 25082: operator=(_Enable_default_constructor const&) noexcept = default; 25082: _Enable_default_constructor& 25082: operator=(_Enable_default_constructor&&) noexcept = default; 25082: 25082: 25082: constexpr explicit 25082: _Enable_default_constructor(_Enable_default_constructor_tag) { } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Enable_destructor { }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Enable_copy_move { }; 25082: # 93 "/usr/include/c++/8/bits/enable_special_members.h" 3 25082: template 25082: struct _Enable_special_members 25082: : private _Enable_default_constructor<_Default, _Tag>, 25082: private _Enable_destructor<_Destructor, _Tag>, 25082: private _Enable_copy_move<_Copy, _CopyAssignment, 25082: _Move, _MoveAssignment, 25082: _Tag> 25082: { }; 25082: 25082: 25082: 25082: template 25082: struct _Enable_default_constructor 25082: { 25082: constexpr _Enable_default_constructor() noexcept = delete; 25082: constexpr _Enable_default_constructor(_Enable_default_constructor const&) 25082: noexcept = default; 25082: constexpr _Enable_default_constructor(_Enable_default_constructor&&) 25082: noexcept = default; 25082: _Enable_default_constructor& 25082: operator=(_Enable_default_constructor const&) noexcept = default; 25082: _Enable_default_constructor& 25082: operator=(_Enable_default_constructor&&) noexcept = default; 25082: 25082: 25082: constexpr explicit 25082: _Enable_default_constructor(_Enable_default_constructor_tag) { } 25082: }; 25082: 25082: template 25082: struct _Enable_destructor 25082: { ~_Enable_destructor() noexcept = delete; }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = default; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = default; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = default; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = default; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = default; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = default; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = default; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = delete; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = delete; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = delete; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = delete; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = delete; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = default; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = delete; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = delete; 25082: }; 25082: 25082: template 25082: struct _Enable_copy_move 25082: { 25082: constexpr _Enable_copy_move() noexcept = default; 25082: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 25082: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move const&) noexcept = delete; 25082: _Enable_copy_move& 25082: operator=(_Enable_copy_move&&) noexcept = delete; 25082: }; 25082: 25082: 25082: } 25082: # 44 "/usr/include/c++/8/optional" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 56 "/usr/include/c++/8/optional" 3 25082: template 25082: class optional; 25082: 25082: 25082: struct nullopt_t 25082: { 25082: 25082: 25082: 25082: 25082: 25082: enum class _Construct { _Token }; 25082: 25082: 25082: explicit constexpr nullopt_t(_Construct) { } 25082: }; 25082: 25082: 25082: inline constexpr nullopt_t nullopt { nullopt_t::_Construct::_Token }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: class bad_optional_access : public exception 25082: { 25082: public: 25082: bad_optional_access() { } 25082: 25082: virtual const char* what() const noexcept override 25082: { return "bad optional access"; } 25082: 25082: virtual ~bad_optional_access() noexcept = default; 25082: }; 25082: 25082: void 25082: __throw_bad_optional_access() 25082: __attribute__((__noreturn__)); 25082: 25082: 25082: inline void 25082: __throw_bad_optional_access() 25082: { (throw (bad_optional_access())); } 25082: 25082: 25082: 25082: template , 25082: bool = 25082: is_trivially_copy_assignable_v<_Tp> 25082: && is_trivially_copy_constructible_v<_Tp>, 25082: bool = 25082: is_trivially_move_assignable_v<_Tp> 25082: && is_trivially_move_constructible_v<_Tp>> 25082: struct _Optional_payload 25082: { 25082: constexpr _Optional_payload() noexcept : _M_empty() { } 25082: 25082: template 25082: constexpr 25082: _Optional_payload(in_place_t, _Args&&... __args) 25082: : _M_payload(std::forward<_Args>(__args)...), _M_engaged(true) { } 25082: 25082: template 25082: constexpr 25082: _Optional_payload(std::initializer_list<_Up> __il, 25082: _Args&&... __args) 25082: : _M_payload(__il, std::forward<_Args>(__args)...), 25082: _M_engaged(true) 25082: { } 25082: 25082: constexpr 25082: _Optional_payload(bool __engaged, const _Optional_payload& __other) 25082: : _Optional_payload(__other) 25082: { } 25082: 25082: constexpr 25082: _Optional_payload(bool __engaged, _Optional_payload&& __other) 25082: : _Optional_payload(std::move(__other)) 25082: { } 25082: 25082: constexpr 25082: _Optional_payload(const _Optional_payload& __other) 25082: { 25082: if (__other._M_engaged) 25082: this->_M_construct(__other._M_payload); 25082: } 25082: 25082: constexpr 25082: _Optional_payload(_Optional_payload&& __other) 25082: { 25082: if (__other._M_engaged) 25082: this->_M_construct(std::move(__other._M_payload)); 25082: } 25082: 25082: constexpr 25082: _Optional_payload& 25082: operator=(const _Optional_payload& __other) 25082: { 25082: if (this->_M_engaged && __other._M_engaged) 25082: this->_M_get() = __other._M_get(); 25082: else 25082: { 25082: if (__other._M_engaged) 25082: this->_M_construct(__other._M_get()); 25082: else 25082: this->_M_reset(); 25082: } 25082: return *this; 25082: } 25082: 25082: constexpr 25082: _Optional_payload& 25082: operator=(_Optional_payload&& __other) 25082: noexcept(__and_, 25082: is_nothrow_move_assignable<_Tp>>()) 25082: { 25082: if (this->_M_engaged && __other._M_engaged) 25082: this->_M_get() = std::move(__other._M_get()); 25082: else 25082: { 25082: if (__other._M_engaged) 25082: this->_M_construct(std::move(__other._M_get())); 25082: else 25082: this->_M_reset(); 25082: } 25082: return *this; 25082: } 25082: 25082: using _Stored_type = remove_const_t<_Tp>; 25082: 25082: struct _Empty_byte { }; 25082: 25082: union { 25082: _Empty_byte _M_empty; 25082: _Stored_type _M_payload; 25082: }; 25082: bool _M_engaged = false; 25082: 25082: ~_Optional_payload() 25082: { 25082: if (_M_engaged) 25082: _M_payload.~_Stored_type(); 25082: } 25082: 25082: template 25082: void 25082: _M_construct(_Args&&... __args) 25082: noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) 25082: { 25082: ::new ((void *) std::__addressof(this->_M_payload)) 25082: _Stored_type(std::forward<_Args>(__args)...); 25082: this->_M_engaged = true; 25082: } 25082: 25082: 25082: constexpr _Tp& 25082: _M_get() noexcept 25082: { return this->_M_payload; } 25082: 25082: constexpr const _Tp& 25082: _M_get() const noexcept 25082: { return this->_M_payload; } 25082: 25082: 25082: constexpr 25082: void 25082: _M_reset() noexcept 25082: { 25082: if (this->_M_engaged) 25082: { 25082: this->_M_engaged = false; 25082: this->_M_payload.~_Stored_type(); 25082: } 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct _Optional_payload<_Tp, true, true, true> 25082: { 25082: constexpr _Optional_payload() noexcept 25082: : _M_empty(), _M_engaged(false) { } 25082: 25082: template 25082: constexpr 25082: _Optional_payload(in_place_t, _Args&&... __args) 25082: : _M_payload(std::forward<_Args>(__args)...), _M_engaged(true) 25082: { } 25082: 25082: template 25082: constexpr 25082: _Optional_payload(std::initializer_list<_Up> __il, 25082: _Args&&... __args) 25082: : _M_payload(__il, std::forward<_Args>(__args)...), 25082: _M_engaged(true) 25082: { } 25082: 25082: constexpr 25082: _Optional_payload(bool __engaged, const _Optional_payload& __other) 25082: : _M_engaged(__engaged) 25082: { 25082: if (__engaged) 25082: _M_construct(__other._M_get()); 25082: } 25082: 25082: constexpr 25082: _Optional_payload(bool __engaged, _Optional_payload&& __other) 25082: : _M_engaged(__engaged) 25082: { 25082: if (__engaged) 25082: _M_construct(std::move(__other._M_get())); 25082: } 25082: 25082: using _Stored_type = remove_const_t<_Tp>; 25082: 25082: struct _Empty_byte { }; 25082: 25082: union { 25082: _Empty_byte _M_empty; 25082: _Stored_type _M_payload; 25082: }; 25082: bool _M_engaged; 25082: 25082: 25082: constexpr _Tp& 25082: _M_get() noexcept 25082: { return this->_M_payload; } 25082: 25082: constexpr const _Tp& 25082: _M_get() const noexcept 25082: { return this->_M_payload; } 25082: }; 25082: 25082: 25082: template 25082: struct _Optional_payload<_Tp, true, false, true> 25082: { 25082: constexpr _Optional_payload() noexcept 25082: : _M_empty(), _M_engaged(false) { } 25082: 25082: template 25082: constexpr 25082: _Optional_payload(in_place_t, _Args&&... __args) 25082: : _M_payload(std::forward<_Args>(__args)...), _M_engaged(true) 25082: { } 25082: 25082: template 25082: constexpr 25082: _Optional_payload(std::initializer_list<_Up> __il, 25082: _Args&&... __args) 25082: : _M_payload(__il, std::forward<_Args>(__args)...), 25082: _M_engaged(true) 25082: { } 25082: 25082: constexpr 25082: _Optional_payload(bool __engaged, const _Optional_payload& __other) 25082: : _M_engaged(__engaged) 25082: { 25082: if (__engaged) 25082: _M_construct(__other._M_get()); 25082: } 25082: 25082: constexpr 25082: _Optional_payload(bool __engaged, _Optional_payload&& __other) 25082: : _M_engaged(__engaged) 25082: { 25082: if (__engaged) 25082: _M_construct(std::move(__other._M_get())); 25082: } 25082: 25082: _Optional_payload(const _Optional_payload&) = default; 25082: _Optional_payload(_Optional_payload&&) = default; 25082: 25082: constexpr 25082: _Optional_payload& 25082: operator=(const _Optional_payload& __other) 25082: { 25082: if (this->_M_engaged && __other._M_engaged) 25082: this->_M_get() = __other._M_get(); 25082: else 25082: { 25082: if (__other._M_engaged) 25082: this->_M_construct(__other._M_get()); 25082: else 25082: this->_M_reset(); 25082: } 25082: return *this; 25082: } 25082: 25082: _Optional_payload& 25082: operator=(_Optional_payload&& __other) = default; 25082: 25082: using _Stored_type = remove_const_t<_Tp>; 25082: 25082: struct _Empty_byte { }; 25082: 25082: union { 25082: _Empty_byte _M_empty; 25082: _Stored_type _M_payload; 25082: }; 25082: bool _M_engaged; 25082: 25082: template 25082: void 25082: _M_construct(_Args&&... __args) 25082: noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) 25082: { 25082: ::new ((void *) std::__addressof(this->_M_payload)) 25082: _Stored_type(std::forward<_Args>(__args)...); 25082: this->_M_engaged = true; 25082: } 25082: 25082: 25082: constexpr _Tp& 25082: _M_get() noexcept 25082: { return this->_M_payload; } 25082: 25082: constexpr const _Tp& 25082: _M_get() const noexcept 25082: { return this->_M_payload; } 25082: 25082: 25082: constexpr 25082: void 25082: _M_reset() noexcept 25082: { 25082: if (this->_M_engaged) 25082: { 25082: this->_M_engaged = false; 25082: this->_M_payload.~_Stored_type(); 25082: } 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct _Optional_payload<_Tp, true, true, false> 25082: { 25082: constexpr _Optional_payload() noexcept 25082: : _M_empty(), _M_engaged(false) { } 25082: 25082: template 25082: constexpr 25082: _Optional_payload(in_place_t, _Args&&... __args) 25082: : _M_payload(std::forward<_Args>(__args)...), 25082: _M_engaged(true) 25082: { } 25082: 25082: template 25082: constexpr 25082: _Optional_payload(std::initializer_list<_Up> __il, 25082: _Args&&... __args) 25082: : _M_payload(__il, std::forward<_Args>(__args)...), 25082: _M_engaged(true) 25082: { } 25082: 25082: constexpr 25082: _Optional_payload(bool __engaged, const _Optional_payload& __other) 25082: : _M_engaged(__engaged) 25082: { 25082: if (__engaged) 25082: _M_construct(__other._M_get()); 25082: } 25082: 25082: constexpr 25082: _Optional_payload(bool __engaged, _Optional_payload&& __other) 25082: : _M_engaged(__engaged) 25082: { 25082: if (__engaged) 25082: _M_construct(std::move(__other._M_get())); 25082: } 25082: 25082: _Optional_payload(const _Optional_payload&) = default; 25082: _Optional_payload(_Optional_payload&&) = default; 25082: 25082: _Optional_payload& 25082: operator=(const _Optional_payload& __other) = default; 25082: 25082: constexpr 25082: _Optional_payload& 25082: operator=(_Optional_payload&& __other) 25082: noexcept(__and_, 25082: is_nothrow_move_assignable<_Tp>>()) 25082: { 25082: if (this->_M_engaged && __other._M_engaged) 25082: this->_M_get() = std::move(__other._M_get()); 25082: else 25082: { 25082: if (__other._M_engaged) 25082: this->_M_construct(std::move(__other._M_get())); 25082: else 25082: this->_M_reset(); 25082: } 25082: return *this; 25082: } 25082: 25082: using _Stored_type = remove_const_t<_Tp>; 25082: 25082: struct _Empty_byte { }; 25082: 25082: union { 25082: _Empty_byte _M_empty; 25082: _Stored_type _M_payload; 25082: }; 25082: bool _M_engaged; 25082: 25082: template 25082: void 25082: _M_construct(_Args&&... __args) 25082: noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) 25082: { 25082: ::new ((void *) std::__addressof(this->_M_payload)) 25082: _Stored_type(std::forward<_Args>(__args)...); 25082: this->_M_engaged = true; 25082: } 25082: 25082: 25082: constexpr _Tp& 25082: _M_get() noexcept 25082: { return this->_M_payload; } 25082: 25082: constexpr const _Tp& 25082: _M_get() const noexcept 25082: { return this->_M_payload; } 25082: 25082: 25082: constexpr 25082: void 25082: _M_reset() noexcept 25082: { 25082: if (this->_M_engaged) 25082: { 25082: this->_M_engaged = false; 25082: this->_M_payload.~_Stored_type(); 25082: } 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct _Optional_payload<_Tp, true, false, false> 25082: { 25082: constexpr _Optional_payload() noexcept 25082: : _M_empty(), _M_engaged(false) {} 25082: 25082: template 25082: constexpr 25082: _Optional_payload(in_place_t, _Args&&... __args) 25082: : _M_payload(std::forward<_Args>(__args)...), 25082: _M_engaged(true) 25082: { } 25082: 25082: template 25082: constexpr 25082: _Optional_payload(std::initializer_list<_Up> __il, 25082: _Args&&... __args) 25082: : _M_payload(__il, std::forward<_Args>(__args)...), 25082: _M_engaged(true) 25082: { } 25082: 25082: constexpr 25082: _Optional_payload(bool __engaged, const _Optional_payload& __other) 25082: : _M_engaged(__engaged) 25082: { 25082: if (__engaged) 25082: _M_construct(__other._M_get()); 25082: } 25082: 25082: constexpr 25082: _Optional_payload(bool __engaged, _Optional_payload&& __other) 25082: : _M_engaged(__engaged) 25082: { 25082: if (__engaged) 25082: _M_construct(std::move(__other._M_get())); 25082: } 25082: 25082: _Optional_payload(const _Optional_payload&) = default; 25082: _Optional_payload(_Optional_payload&&) = default; 25082: 25082: constexpr 25082: _Optional_payload& 25082: operator=(const _Optional_payload& __other) 25082: { 25082: if (this->_M_engaged && __other._M_engaged) 25082: this->_M_get() = __other._M_get(); 25082: else 25082: { 25082: if (__other._M_engaged) 25082: this->_M_construct(__other._M_get()); 25082: else 25082: this->_M_reset(); 25082: } 25082: return *this; 25082: } 25082: 25082: constexpr 25082: _Optional_payload& 25082: operator=(_Optional_payload&& __other) 25082: noexcept(__and_, 25082: is_nothrow_move_assignable<_Tp>>()) 25082: { 25082: if (this->_M_engaged && __other._M_engaged) 25082: this->_M_get() = std::move(__other._M_get()); 25082: else 25082: { 25082: if (__other._M_engaged) 25082: this->_M_construct(std::move(__other._M_get())); 25082: else 25082: this->_M_reset(); 25082: } 25082: return *this; 25082: } 25082: 25082: using _Stored_type = remove_const_t<_Tp>; 25082: 25082: struct _Empty_byte { }; 25082: 25082: union { 25082: _Empty_byte _M_empty; 25082: _Stored_type _M_payload; 25082: }; 25082: bool _M_engaged; 25082: 25082: template 25082: void 25082: _M_construct(_Args&&... __args) 25082: noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) 25082: { 25082: ::new ((void *) std::__addressof(this->_M_payload)) 25082: _Stored_type(std::forward<_Args>(__args)...); 25082: this->_M_engaged = true; 25082: } 25082: 25082: 25082: constexpr _Tp& 25082: _M_get() noexcept 25082: { return this->_M_payload; } 25082: 25082: constexpr const _Tp& 25082: _M_get() const noexcept 25082: { return this->_M_payload; } 25082: 25082: 25082: constexpr 25082: void 25082: _M_reset() noexcept 25082: { 25082: if (this->_M_engaged) 25082: { 25082: this->_M_engaged = false; 25082: this->_M_payload.~_Stored_type(); 25082: } 25082: } 25082: }; 25082: 25082: template 25082: class _Optional_base_impl 25082: { 25082: protected: 25082: using _Stored_type = remove_const_t<_Tp>; 25082: 25082: 25082: 25082: template 25082: void 25082: _M_construct(_Args&&... __args) 25082: noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) 25082: { 25082: ::new 25082: (std::__addressof(static_cast<_Dp*>(this)->_M_payload._M_payload)) 25082: _Stored_type(std::forward<_Args>(__args)...); 25082: static_cast<_Dp*>(this)->_M_payload._M_engaged = true; 25082: } 25082: 25082: void 25082: _M_destruct() noexcept 25082: { 25082: static_cast<_Dp*>(this)->_M_payload._M_engaged = false; 25082: static_cast<_Dp*>(this)->_M_payload._M_payload.~_Stored_type(); 25082: } 25082: 25082: 25082: constexpr 25082: void 25082: _M_reset() noexcept 25082: { 25082: if (static_cast<_Dp*>(this)->_M_payload._M_engaged) 25082: static_cast<_Dp*>(this)->_M_destruct(); 25082: } 25082: }; 25082: # 658 "/usr/include/c++/8/optional" 3 25082: template, 25082: bool = is_trivially_move_constructible_v<_Tp>> 25082: class _Optional_base 25082: 25082: : protected _Optional_base_impl<_Tp, _Optional_base<_Tp>> 25082: { 25082: friend class _Optional_base_impl<_Tp, _Optional_base<_Tp>>; 25082: 25082: public: 25082: 25082: constexpr _Optional_base() = default; 25082: 25082: 25082: template, bool> = false> 25082: constexpr explicit _Optional_base(in_place_t, _Args&&... __args) 25082: : _M_payload(in_place, 25082: std::forward<_Args>(__args)...) { } 25082: 25082: template&, 25082: _Args&&...>, bool> = false> 25082: constexpr explicit _Optional_base(in_place_t, 25082: initializer_list<_Up> __il, 25082: _Args&&... __args) 25082: : _M_payload(in_place, 25082: __il, std::forward<_Args>(__args)...) 25082: { } 25082: 25082: 25082: constexpr _Optional_base(const _Optional_base& __other) 25082: : _M_payload(__other._M_payload._M_engaged, 25082: __other._M_payload) 25082: { } 25082: 25082: constexpr _Optional_base(_Optional_base&& __other) 25082: noexcept(is_nothrow_move_constructible<_Tp>()) 25082: : _M_payload(__other._M_payload._M_engaged, 25082: std::move(__other._M_payload)) 25082: { } 25082: 25082: 25082: _Optional_base& operator=(const _Optional_base&) = default; 25082: _Optional_base& operator=(_Optional_base&&) = default; 25082: 25082: protected: 25082: 25082: constexpr bool _M_is_engaged() const noexcept 25082: { return this->_M_payload._M_engaged; } 25082: 25082: 25082: constexpr _Tp& 25082: _M_get() noexcept 25082: { 25082: ; 25082: return this->_M_payload._M_payload; 25082: } 25082: 25082: constexpr const _Tp& 25082: _M_get() const noexcept 25082: { 25082: ; 25082: return this->_M_payload._M_payload; 25082: } 25082: 25082: private: 25082: _Optional_payload<_Tp> _M_payload; 25082: }; 25082: 25082: template 25082: class _Optional_base<_Tp, false, true> 25082: : protected _Optional_base_impl<_Tp, _Optional_base<_Tp>> 25082: { 25082: friend class _Optional_base_impl<_Tp, _Optional_base<_Tp>>; 25082: public: 25082: 25082: 25082: constexpr _Optional_base() = default; 25082: 25082: 25082: template, bool> = false> 25082: constexpr explicit _Optional_base(in_place_t, _Args&&... __args) 25082: : _M_payload(in_place, 25082: std::forward<_Args>(__args)...) { } 25082: 25082: template&, 25082: _Args&&...>, bool> = false> 25082: constexpr explicit _Optional_base(in_place_t, 25082: initializer_list<_Up> __il, 25082: _Args&&... __args) 25082: : _M_payload(in_place, 25082: __il, std::forward<_Args>(__args)...) 25082: { } 25082: 25082: 25082: constexpr _Optional_base(const _Optional_base& __other) 25082: : _M_payload(__other._M_payload._M_engaged, 25082: __other._M_payload) 25082: { } 25082: 25082: constexpr _Optional_base(_Optional_base&& __other) = default; 25082: 25082: 25082: _Optional_base& operator=(const _Optional_base&) = default; 25082: _Optional_base& operator=(_Optional_base&&) = default; 25082: 25082: protected: 25082: 25082: constexpr bool _M_is_engaged() const noexcept 25082: { return this->_M_payload._M_engaged; } 25082: 25082: 25082: constexpr _Tp& 25082: _M_get() noexcept 25082: { 25082: ; 25082: return this->_M_payload._M_payload; 25082: } 25082: 25082: constexpr const _Tp& 25082: _M_get() const noexcept 25082: { 25082: ; 25082: return this->_M_payload._M_payload; 25082: } 25082: 25082: private: 25082: _Optional_payload<_Tp> _M_payload; 25082: }; 25082: 25082: template 25082: class _Optional_base<_Tp, true, false> 25082: : protected _Optional_base_impl<_Tp, _Optional_base<_Tp>> 25082: { 25082: friend class _Optional_base_impl<_Tp, _Optional_base<_Tp>>; 25082: public: 25082: 25082: 25082: constexpr _Optional_base() = default; 25082: 25082: 25082: template, bool> = false> 25082: constexpr explicit _Optional_base(in_place_t, _Args&&... __args) 25082: : _M_payload(in_place, 25082: std::forward<_Args>(__args)...) { } 25082: 25082: template&, 25082: _Args&&...>, bool> = false> 25082: constexpr explicit _Optional_base(in_place_t, 25082: initializer_list<_Up> __il, 25082: _Args&&... __args) 25082: : _M_payload(in_place, 25082: __il, std::forward<_Args>(__args)...) 25082: { } 25082: 25082: 25082: constexpr _Optional_base(const _Optional_base& __other) = default; 25082: 25082: constexpr _Optional_base(_Optional_base&& __other) 25082: noexcept(is_nothrow_move_constructible<_Tp>()) 25082: : _M_payload(__other._M_payload._M_engaged, 25082: std::move(__other._M_payload)) 25082: { } 25082: 25082: 25082: _Optional_base& operator=(const _Optional_base&) = default; 25082: _Optional_base& operator=(_Optional_base&&) = default; 25082: 25082: protected: 25082: 25082: constexpr bool _M_is_engaged() const noexcept 25082: { return this->_M_payload._M_engaged; } 25082: 25082: 25082: constexpr _Tp& 25082: _M_get() noexcept 25082: { 25082: ; 25082: return this->_M_payload._M_payload; 25082: } 25082: 25082: constexpr const _Tp& 25082: _M_get() const noexcept 25082: { 25082: ; 25082: return this->_M_payload._M_payload; 25082: } 25082: 25082: private: 25082: _Optional_payload<_Tp> _M_payload; 25082: }; 25082: 25082: template 25082: class _Optional_base<_Tp, true, true> 25082: : protected _Optional_base_impl<_Tp, _Optional_base<_Tp>> 25082: { 25082: friend class _Optional_base_impl<_Tp, _Optional_base<_Tp>>; 25082: public: 25082: 25082: 25082: constexpr _Optional_base() = default; 25082: 25082: 25082: template, bool> = false> 25082: constexpr explicit _Optional_base(in_place_t, _Args&&... __args) 25082: : _M_payload(in_place, 25082: std::forward<_Args>(__args)...) { } 25082: 25082: template&, 25082: _Args&&...>, bool> = false> 25082: constexpr explicit _Optional_base(in_place_t, 25082: initializer_list<_Up> __il, 25082: _Args&&... __args) 25082: : _M_payload(in_place, 25082: __il, std::forward<_Args>(__args)...) 25082: { } 25082: 25082: 25082: constexpr _Optional_base(const _Optional_base& __other) = default; 25082: constexpr _Optional_base(_Optional_base&& __other) = default; 25082: 25082: 25082: _Optional_base& operator=(const _Optional_base&) = default; 25082: _Optional_base& operator=(_Optional_base&&) = default; 25082: 25082: protected: 25082: 25082: constexpr bool _M_is_engaged() const noexcept 25082: { return this->_M_payload._M_engaged; } 25082: 25082: 25082: constexpr _Tp& 25082: _M_get() noexcept 25082: { 25082: ; 25082: return this->_M_payload._M_payload; 25082: } 25082: 25082: constexpr const _Tp& 25082: _M_get() const noexcept 25082: { 25082: ; 25082: return this->_M_payload._M_payload; 25082: } 25082: 25082: private: 25082: _Optional_payload<_Tp> _M_payload; 25082: }; 25082: 25082: template 25082: class optional; 25082: 25082: template 25082: using __converts_from_optional = 25082: __or_&>, 25082: is_constructible<_Tp, optional<_Up>&>, 25082: is_constructible<_Tp, const optional<_Up>&&>, 25082: is_constructible<_Tp, optional<_Up>&&>, 25082: is_convertible&, _Tp>, 25082: is_convertible&, _Tp>, 25082: is_convertible&&, _Tp>, 25082: is_convertible&&, _Tp>>; 25082: 25082: template 25082: using __assigns_from_optional = 25082: __or_&>, 25082: is_assignable<_Tp&, optional<_Up>&>, 25082: is_assignable<_Tp&, const optional<_Up>&&>, 25082: is_assignable<_Tp&, optional<_Up>&&>>; 25082: 25082: 25082: 25082: 25082: template 25082: class optional 25082: : private _Optional_base<_Tp>, 25082: private _Enable_copy_move< 25082: 25082: is_copy_constructible<_Tp>::value, 25082: 25082: __and_, is_copy_assignable<_Tp>>::value, 25082: 25082: is_move_constructible<_Tp>::value, 25082: 25082: __and_, is_move_assignable<_Tp>>::value, 25082: 25082: optional<_Tp>> 25082: { 25082: static_assert(!is_same_v, nullopt_t>); 25082: static_assert(!is_same_v, in_place_t>); 25082: static_assert(!is_reference_v<_Tp>); 25082: 25082: private: 25082: using _Base = _Optional_base<_Tp>; 25082: 25082: public: 25082: using value_type = _Tp; 25082: 25082: constexpr optional() = default; 25082: 25082: constexpr optional(nullopt_t) noexcept { } 25082: 25082: 25082: template , decay_t<_Up>>>, 25082: __not_>>, 25082: is_constructible<_Tp, _Up&&>, 25082: is_convertible<_Up&&, _Tp> 25082: >::value, bool> = true> 25082: constexpr optional(_Up&& __t) 25082: : _Base(std::in_place, std::forward<_Up>(__t)) { } 25082: 25082: template , decay_t<_Up>>>, 25082: __not_>>, 25082: is_constructible<_Tp, _Up&&>, 25082: __not_> 25082: >::value, bool> = false> 25082: explicit constexpr optional(_Up&& __t) 25082: : _Base(std::in_place, std::forward<_Up>(__t)) { } 25082: 25082: template >, 25082: is_constructible<_Tp, const _Up&>, 25082: is_convertible, 25082: __not_<__converts_from_optional<_Tp, _Up>> 25082: >::value, bool> = true> 25082: constexpr optional(const optional<_Up>& __t) 25082: { 25082: if (__t) 25082: emplace(*__t); 25082: } 25082: 25082: template >, 25082: is_constructible<_Tp, const _Up&>, 25082: __not_>, 25082: __not_<__converts_from_optional<_Tp, _Up>> 25082: >::value, bool> = false> 25082: explicit constexpr optional(const optional<_Up>& __t) 25082: { 25082: if (__t) 25082: emplace(*__t); 25082: } 25082: 25082: template >, 25082: is_constructible<_Tp, _Up&&>, 25082: is_convertible<_Up&&, _Tp>, 25082: __not_<__converts_from_optional<_Tp, _Up>> 25082: >::value, bool> = true> 25082: constexpr optional(optional<_Up>&& __t) 25082: { 25082: if (__t) 25082: emplace(std::move(*__t)); 25082: } 25082: 25082: template >, 25082: is_constructible<_Tp, _Up&&>, 25082: __not_>, 25082: __not_<__converts_from_optional<_Tp, _Up>> 25082: >::value, bool> = false> 25082: explicit constexpr optional(optional<_Up>&& __t) 25082: { 25082: if (__t) 25082: emplace(std::move(*__t)); 25082: } 25082: 25082: template, bool> = false> 25082: explicit constexpr optional(in_place_t, _Args&&... __args) 25082: : _Base(std::in_place, std::forward<_Args>(__args)...) { } 25082: 25082: template&, 25082: _Args&&...>, bool> = false> 25082: explicit constexpr optional(in_place_t, 25082: initializer_list<_Up> __il, 25082: _Args&&... __args) 25082: : _Base(std::in_place, __il, std::forward<_Args>(__args)...) { } 25082: 25082: 25082: optional& 25082: operator=(nullopt_t) noexcept 25082: { 25082: this->_M_reset(); 25082: return *this; 25082: } 25082: 25082: template 25082: enable_if_t<__and_< 25082: __not_, decay_t<_Up>>>, 25082: is_constructible<_Tp, _Up>, 25082: __not_<__and_, 25082: is_same<_Tp, decay_t<_Up>>>>, 25082: is_assignable<_Tp&, _Up>>::value, 25082: optional&> 25082: operator=(_Up&& __u) 25082: { 25082: if (this->_M_is_engaged()) 25082: this->_M_get() = std::forward<_Up>(__u); 25082: else 25082: this->_M_construct(std::forward<_Up>(__u)); 25082: 25082: return *this; 25082: } 25082: 25082: template 25082: enable_if_t<__and_< 25082: __not_>, 25082: is_constructible<_Tp, const _Up&>, 25082: is_assignable<_Tp&, _Up>, 25082: __not_<__converts_from_optional<_Tp, _Up>>, 25082: __not_<__assigns_from_optional<_Tp, _Up>> 25082: >::value, 25082: optional&> 25082: operator=(const optional<_Up>& __u) 25082: { 25082: if (__u) 25082: { 25082: if (this->_M_is_engaged()) 25082: this->_M_get() = *__u; 25082: else 25082: this->_M_construct(*__u); 25082: } 25082: else 25082: { 25082: this->_M_reset(); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: enable_if_t<__and_< 25082: __not_>, 25082: is_constructible<_Tp, _Up>, 25082: is_assignable<_Tp&, _Up>, 25082: __not_<__converts_from_optional<_Tp, _Up>>, 25082: __not_<__assigns_from_optional<_Tp, _Up>> 25082: >::value, 25082: optional&> 25082: operator=(optional<_Up>&& __u) 25082: { 25082: if (__u) 25082: { 25082: if (this->_M_is_engaged()) 25082: this->_M_get() = std::move(*__u); 25082: else 25082: this->_M_construct(std::move(*__u)); 25082: } 25082: else 25082: { 25082: this->_M_reset(); 25082: } 25082: 25082: return *this; 25082: } 25082: 25082: template 25082: enable_if_t::value, _Tp&> 25082: emplace(_Args&&... __args) 25082: { 25082: this->_M_reset(); 25082: this->_M_construct(std::forward<_Args>(__args)...); 25082: return this->_M_get(); 25082: } 25082: 25082: template 25082: enable_if_t&, 25082: _Args&&...>::value, _Tp&> 25082: emplace(initializer_list<_Up> __il, _Args&&... __args) 25082: { 25082: this->_M_reset(); 25082: this->_M_construct(__il, std::forward<_Args>(__args)...); 25082: return this->_M_get(); 25082: } 25082: 25082: 25082: 25082: 25082: void 25082: swap(optional& __other) 25082: noexcept(is_nothrow_move_constructible<_Tp>() 25082: && is_nothrow_swappable_v<_Tp>) 25082: { 25082: using std::swap; 25082: 25082: if (this->_M_is_engaged() && __other._M_is_engaged()) 25082: swap(this->_M_get(), __other._M_get()); 25082: else if (this->_M_is_engaged()) 25082: { 25082: __other._M_construct(std::move(this->_M_get())); 25082: this->_M_destruct(); 25082: } 25082: else if (__other._M_is_engaged()) 25082: { 25082: this->_M_construct(std::move(__other._M_get())); 25082: __other._M_destruct(); 25082: } 25082: } 25082: 25082: 25082: constexpr const _Tp* 25082: operator->() const 25082: { return std::__addressof(this->_M_get()); } 25082: 25082: constexpr 25082: _Tp* 25082: operator->() 25082: { return std::__addressof(this->_M_get()); } 25082: 25082: constexpr const _Tp& 25082: operator*() const& 25082: { return this->_M_get(); } 25082: 25082: constexpr _Tp& 25082: operator*()& 25082: { return this->_M_get(); } 25082: 25082: constexpr _Tp&& 25082: operator*()&& 25082: { return std::move(this->_M_get()); } 25082: 25082: constexpr const _Tp&& 25082: operator*() const&& 25082: { return std::move(this->_M_get()); } 25082: 25082: constexpr explicit operator bool() const noexcept 25082: { return this->_M_is_engaged(); } 25082: 25082: constexpr bool has_value() const noexcept 25082: { return this->_M_is_engaged(); } 25082: 25082: constexpr const _Tp& 25082: value() const& 25082: { 25082: return this->_M_is_engaged() 25082: ? this->_M_get() 25082: : (__throw_bad_optional_access(), 25082: this->_M_get()); 25082: } 25082: 25082: constexpr _Tp& 25082: value()& 25082: { 25082: return this->_M_is_engaged() 25082: ? this->_M_get() 25082: : (__throw_bad_optional_access(), 25082: this->_M_get()); 25082: } 25082: 25082: constexpr _Tp&& 25082: value()&& 25082: { 25082: return this->_M_is_engaged() 25082: ? std::move(this->_M_get()) 25082: : (__throw_bad_optional_access(), 25082: std::move(this->_M_get())); 25082: } 25082: 25082: constexpr const _Tp&& 25082: value() const&& 25082: { 25082: return this->_M_is_engaged() 25082: ? std::move(this->_M_get()) 25082: : (__throw_bad_optional_access(), 25082: std::move(this->_M_get())); 25082: } 25082: 25082: template 25082: constexpr _Tp 25082: value_or(_Up&& __u) const& 25082: { 25082: static_assert(is_copy_constructible_v<_Tp>); 25082: static_assert(is_convertible_v<_Up&&, _Tp>); 25082: 25082: return this->_M_is_engaged() 25082: ? this->_M_get() 25082: : static_cast<_Tp>(std::forward<_Up>(__u)); 25082: } 25082: 25082: template 25082: _Tp 25082: value_or(_Up&& __u) && 25082: { 25082: static_assert(is_move_constructible_v<_Tp>); 25082: static_assert(is_convertible_v<_Up&&, _Tp>); 25082: 25082: return this->_M_is_engaged() 25082: ? std::move(this->_M_get()) 25082: : static_cast<_Tp>(std::forward<_Up>(__u)); 25082: } 25082: void reset() noexcept { this->_M_reset(); } 25082: }; 25082: 25082: template 25082: using __optional_relop_t = 25082: enable_if_t::value, bool>; 25082: 25082: 25082: template 25082: constexpr auto 25082: operator==(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) 25082: -> __optional_relop_t() == declval<_Up>())> 25082: { 25082: return static_cast(__lhs) == static_cast(__rhs) 25082: && (!__lhs || *__lhs == *__rhs); 25082: } 25082: 25082: template 25082: constexpr auto 25082: operator!=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) 25082: -> __optional_relop_t() != declval<_Up>())> 25082: { 25082: return static_cast(__lhs) != static_cast(__rhs) 25082: || (static_cast(__lhs) && *__lhs != *__rhs); 25082: } 25082: 25082: template 25082: constexpr auto 25082: operator<(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) 25082: -> __optional_relop_t() < declval<_Up>())> 25082: { 25082: return static_cast(__rhs) && (!__lhs || *__lhs < *__rhs); 25082: } 25082: 25082: template 25082: constexpr auto 25082: operator>(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) 25082: -> __optional_relop_t() > declval<_Up>())> 25082: { 25082: return static_cast(__lhs) && (!__rhs || *__lhs > *__rhs); 25082: } 25082: 25082: template 25082: constexpr auto 25082: operator<=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) 25082: -> __optional_relop_t() <= declval<_Up>())> 25082: { 25082: return !__lhs || (static_cast(__rhs) && *__lhs <= *__rhs); 25082: } 25082: 25082: template 25082: constexpr auto 25082: operator>=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) 25082: -> __optional_relop_t() >= declval<_Up>())> 25082: { 25082: return !__rhs || (static_cast(__lhs) && *__lhs >= *__rhs); 25082: } 25082: 25082: 25082: template 25082: constexpr bool 25082: operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept 25082: { return !__lhs; } 25082: 25082: template 25082: constexpr bool 25082: operator==(nullopt_t, const optional<_Tp>& __rhs) noexcept 25082: { return !__rhs; } 25082: 25082: template 25082: constexpr bool 25082: operator!=(const optional<_Tp>& __lhs, nullopt_t) noexcept 25082: { return static_cast(__lhs); } 25082: 25082: template 25082: constexpr bool 25082: operator!=(nullopt_t, const optional<_Tp>& __rhs) noexcept 25082: { return static_cast(__rhs); } 25082: 25082: template 25082: constexpr bool 25082: operator<(const optional<_Tp>& , nullopt_t) noexcept 25082: { return false; } 25082: 25082: template 25082: constexpr bool 25082: operator<(nullopt_t, const optional<_Tp>& __rhs) noexcept 25082: { return static_cast(__rhs); } 25082: 25082: template 25082: constexpr bool 25082: operator>(const optional<_Tp>& __lhs, nullopt_t) noexcept 25082: { return static_cast(__lhs); } 25082: 25082: template 25082: constexpr bool 25082: operator>(nullopt_t, const optional<_Tp>& ) noexcept 25082: { return false; } 25082: 25082: template 25082: constexpr bool 25082: operator<=(const optional<_Tp>& __lhs, nullopt_t) noexcept 25082: { return !__lhs; } 25082: 25082: template 25082: constexpr bool 25082: operator<=(nullopt_t, const optional<_Tp>& ) noexcept 25082: { return true; } 25082: 25082: template 25082: constexpr bool 25082: operator>=(const optional<_Tp>& , nullopt_t) noexcept 25082: { return true; } 25082: 25082: template 25082: constexpr bool 25082: operator>=(nullopt_t, const optional<_Tp>& __rhs) noexcept 25082: { return !__rhs; } 25082: 25082: 25082: template 25082: constexpr auto 25082: operator==(const optional<_Tp>& __lhs, const _Up& __rhs) 25082: -> __optional_relop_t() == declval<_Up>())> 25082: { return __lhs && *__lhs == __rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator==(const _Up& __lhs, const optional<_Tp>& __rhs) 25082: -> __optional_relop_t() == declval<_Tp>())> 25082: { return __rhs && __lhs == *__rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator!=(const optional<_Tp>& __lhs, const _Up& __rhs) 25082: -> __optional_relop_t() != declval<_Up>())> 25082: { return !__lhs || *__lhs != __rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator!=(const _Up& __lhs, const optional<_Tp>& __rhs) 25082: -> __optional_relop_t() != declval<_Tp>())> 25082: { return !__rhs || __lhs != *__rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator<(const optional<_Tp>& __lhs, const _Up& __rhs) 25082: -> __optional_relop_t() < declval<_Up>())> 25082: { return !__lhs || *__lhs < __rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator<(const _Up& __lhs, const optional<_Tp>& __rhs) 25082: -> __optional_relop_t() < declval<_Tp>())> 25082: { return __rhs && __lhs < *__rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator>(const optional<_Tp>& __lhs, const _Up& __rhs) 25082: -> __optional_relop_t() > declval<_Up>())> 25082: { return __lhs && *__lhs > __rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator>(const _Up& __lhs, const optional<_Tp>& __rhs) 25082: -> __optional_relop_t() > declval<_Tp>())> 25082: { return !__rhs || __lhs > *__rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator<=(const optional<_Tp>& __lhs, const _Up& __rhs) 25082: -> __optional_relop_t() <= declval<_Up>())> 25082: { return !__lhs || *__lhs <= __rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator<=(const _Up& __lhs, const optional<_Tp>& __rhs) 25082: -> __optional_relop_t() <= declval<_Tp>())> 25082: { return __rhs && __lhs <= *__rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator>=(const optional<_Tp>& __lhs, const _Up& __rhs) 25082: -> __optional_relop_t() >= declval<_Up>())> 25082: { return __lhs && *__lhs >= __rhs; } 25082: 25082: template 25082: constexpr auto 25082: operator>=(const _Up& __lhs, const optional<_Tp>& __rhs) 25082: -> __optional_relop_t() >= declval<_Tp>())> 25082: { return !__rhs || __lhs >= *__rhs; } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline enable_if_t && is_swappable_v<_Tp>> 25082: swap(optional<_Tp>& __lhs, optional<_Tp>& __rhs) 25082: noexcept(noexcept(__lhs.swap(__rhs))) 25082: { __lhs.swap(__rhs); } 25082: 25082: template 25082: enable_if_t && is_swappable_v<_Tp>)> 25082: swap(optional<_Tp>&, optional<_Tp>&) = delete; 25082: 25082: template 25082: constexpr optional> 25082: make_optional(_Tp&& __t) 25082: { return optional> { std::forward<_Tp>(__t) }; } 25082: 25082: template 25082: constexpr optional<_Tp> 25082: make_optional(_Args&&... __args) 25082: { return optional<_Tp> { in_place, std::forward<_Args>(__args)... }; } 25082: 25082: template 25082: constexpr optional<_Tp> 25082: make_optional(initializer_list<_Up> __il, _Args&&... __args) 25082: { return optional<_Tp> { in_place, __il, std::forward<_Args>(__args)... }; } 25082: 25082: 25082: 25082: template, 25082: bool = __poison_hash<_Up>::__enable_hash_call> 25082: struct __optional_hash_call_base 25082: { 25082: size_t 25082: operator()(const optional<_Tp>& __t) const 25082: noexcept(noexcept(hash<_Up>{}(*__t))) 25082: { 25082: 25082: 25082: constexpr size_t __magic_disengaged_hash = static_cast(-3333); 25082: return __t ? hash<_Up>{}(*__t) : __magic_disengaged_hash; 25082: } 25082: }; 25082: 25082: template 25082: struct __optional_hash_call_base<_Tp, _Up, false> {}; 25082: 25082: template 25082: struct hash> 25082: : private __poison_hash>, 25082: public __optional_hash_call_base<_Tp> 25082: { 25082: using result_type [[__deprecated__]] = size_t; 25082: using argument_type [[__deprecated__]] = optional<_Tp>; 25082: }; 25082: 25082: template 25082: struct __is_fast_hash>> : __is_fast_hash> 25082: { }; 25082: 25082: 25082: 25082: 25082: template optional(_Tp) -> optional<_Tp>; 25082: 25082: 25082: 25082: } 25082: # 40 "/usr/include/c++/8/bits/node_handle.h" 2 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: class _Node_handle_common 25082: { 25082: using _AllocTraits = allocator_traits<_NodeAlloc>; 25082: 25082: public: 25082: using allocator_type = __alloc_rebind<_NodeAlloc, _Val>; 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { 25082: ; 25082: return allocator_type(*_M_alloc); 25082: } 25082: 25082: explicit operator bool() const noexcept { return _M_ptr != nullptr; } 25082: 25082: [[nodiscard]] bool empty() const noexcept { return _M_ptr == nullptr; } 25082: 25082: protected: 25082: constexpr _Node_handle_common() noexcept : _M_ptr(), _M_alloc() {} 25082: 25082: ~_Node_handle_common() { _M_destroy(); } 25082: 25082: _Node_handle_common(_Node_handle_common&& __nh) noexcept 25082: : _M_ptr(__nh._M_ptr), _M_alloc(std::move(__nh._M_alloc)) 25082: { 25082: __nh._M_ptr = nullptr; 25082: __nh._M_alloc = nullopt; 25082: } 25082: 25082: _Node_handle_common& 25082: operator=(_Node_handle_common&& __nh) noexcept 25082: { 25082: _M_destroy(); 25082: _M_ptr = __nh._M_ptr; 25082: if constexpr (is_move_assignable_v<_NodeAlloc>) 25082: { 25082: if (_AllocTraits::propagate_on_container_move_assignment::value 25082: || !this->_M_alloc) 25082: this->_M_alloc = std::move(__nh._M_alloc); 25082: else 25082: { 25082: ; 25082: } 25082: } 25082: else 25082: { 25082: ; 25082: } 25082: __nh._M_ptr = nullptr; 25082: __nh._M_alloc = nullopt; 25082: return *this; 25082: } 25082: 25082: _Node_handle_common(typename _AllocTraits::pointer __ptr, 25082: const _NodeAlloc& __alloc) 25082: : _M_ptr(__ptr), _M_alloc(__alloc) { } 25082: 25082: void 25082: _M_swap(_Node_handle_common& __nh) noexcept 25082: { 25082: using std::swap; 25082: swap(_M_ptr, __nh._M_ptr); 25082: if (_AllocTraits::propagate_on_container_swap::value 25082: || !_M_alloc || !__nh._M_alloc) 25082: _M_alloc.swap(__nh._M_alloc); 25082: else 25082: { 25082: ; 25082: } 25082: } 25082: 25082: private: 25082: void 25082: _M_destroy() noexcept 25082: { 25082: if (_M_ptr != nullptr) 25082: { 25082: allocator_type __alloc(*_M_alloc); 25082: allocator_traits::destroy(__alloc, 25082: _M_ptr->_M_valptr()); 25082: _AllocTraits::deallocate(*_M_alloc, _M_ptr, 1); 25082: } 25082: } 25082: 25082: protected: 25082: typename _AllocTraits::pointer _M_ptr; 25082: private: 25082: optional<_NodeAlloc> _M_alloc; 25082: 25082: template 25082: friend class _Rb_tree; 25082: }; 25082: 25082: 25082: template 25082: class _Node_handle : public _Node_handle_common<_Value, _NodeAlloc> 25082: { 25082: public: 25082: constexpr _Node_handle() noexcept = default; 25082: ~_Node_handle() = default; 25082: _Node_handle(_Node_handle&&) noexcept = default; 25082: 25082: _Node_handle& 25082: operator=(_Node_handle&&) noexcept = default; 25082: 25082: using key_type = _Key; 25082: using mapped_type = typename _Value::second_type; 25082: 25082: key_type& 25082: key() const noexcept 25082: { 25082: ; 25082: return *_M_pkey; 25082: } 25082: 25082: mapped_type& 25082: mapped() const noexcept 25082: { 25082: ; 25082: return *_M_pmapped; 25082: } 25082: 25082: void 25082: swap(_Node_handle& __nh) noexcept 25082: { 25082: this->_M_swap(__nh); 25082: using std::swap; 25082: swap(_M_pkey, __nh._M_pkey); 25082: swap(_M_pmapped, __nh._M_pmapped); 25082: } 25082: 25082: friend void 25082: swap(_Node_handle& __x, _Node_handle& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: private: 25082: using _AllocTraits = allocator_traits<_NodeAlloc>; 25082: 25082: _Node_handle(typename _AllocTraits::pointer __ptr, 25082: const _NodeAlloc& __alloc) 25082: : _Node_handle_common<_Value, _NodeAlloc>(__ptr, __alloc) 25082: { 25082: if (__ptr) 25082: { 25082: auto& __key = const_cast<_Key&>(__ptr->_M_valptr()->first); 25082: _M_pkey = _S_pointer_to(__key); 25082: _M_pmapped = _S_pointer_to(__ptr->_M_valptr()->second); 25082: } 25082: else 25082: { 25082: _M_pkey = nullptr; 25082: _M_pmapped = nullptr; 25082: } 25082: } 25082: 25082: template 25082: using __pointer 25082: = __ptr_rebind>; 25082: 25082: __pointer<_Key> _M_pkey = nullptr; 25082: __pointer _M_pmapped = nullptr; 25082: 25082: template 25082: __pointer<_Tp> 25082: _S_pointer_to(_Tp& __obj) 25082: { return pointer_traits<__pointer<_Tp>>::pointer_to(__obj); } 25082: 25082: const key_type& 25082: _M_key() const noexcept { return key(); } 25082: 25082: template 25082: friend class _Rb_tree; 25082: 25082: template 25082: friend class _Hashtable; 25082: }; 25082: 25082: 25082: template 25082: class _Node_handle<_Value, _Value, _NodeAlloc> 25082: : public _Node_handle_common<_Value, _NodeAlloc> 25082: { 25082: public: 25082: constexpr _Node_handle() noexcept = default; 25082: ~_Node_handle() = default; 25082: _Node_handle(_Node_handle&&) noexcept = default; 25082: 25082: _Node_handle& 25082: operator=(_Node_handle&&) noexcept = default; 25082: 25082: using value_type = _Value; 25082: 25082: value_type& 25082: value() const noexcept 25082: { 25082: ; 25082: return *this->_M_ptr->_M_valptr(); 25082: } 25082: 25082: void 25082: swap(_Node_handle& __nh) noexcept 25082: { this->_M_swap(__nh); } 25082: 25082: friend void 25082: swap(_Node_handle& __x, _Node_handle& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: private: 25082: using _AllocTraits = allocator_traits<_NodeAlloc>; 25082: 25082: _Node_handle(typename _AllocTraits::pointer __ptr, 25082: const _NodeAlloc& __alloc) 25082: : _Node_handle_common<_Value, _NodeAlloc>(__ptr, __alloc) { } 25082: 25082: const value_type& 25082: _M_key() const noexcept { return value(); } 25082: 25082: template 25082: friend class _Rb_tree; 25082: 25082: template 25082: friend class _Hashtable; 25082: }; 25082: 25082: 25082: template 25082: struct _Node_insert_return 25082: { 25082: _Iterator position = _Iterator(); 25082: bool inserted = false; 25082: _NodeHandle node; 25082: }; 25082: 25082: 25082: } 25082: # 73 "/usr/include/c++/8/bits/stl_tree.h" 2 3 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 99 "/usr/include/c++/8/bits/stl_tree.h" 3 25082: enum _Rb_tree_color { _S_red = false, _S_black = true }; 25082: 25082: struct _Rb_tree_node_base 25082: { 25082: typedef _Rb_tree_node_base* _Base_ptr; 25082: typedef const _Rb_tree_node_base* _Const_Base_ptr; 25082: 25082: _Rb_tree_color _M_color; 25082: _Base_ptr _M_parent; 25082: _Base_ptr _M_left; 25082: _Base_ptr _M_right; 25082: 25082: static _Base_ptr 25082: _S_minimum(_Base_ptr __x) noexcept 25082: { 25082: while (__x->_M_left != 0) __x = __x->_M_left; 25082: return __x; 25082: } 25082: 25082: static _Const_Base_ptr 25082: _S_minimum(_Const_Base_ptr __x) noexcept 25082: { 25082: while (__x->_M_left != 0) __x = __x->_M_left; 25082: return __x; 25082: } 25082: 25082: static _Base_ptr 25082: _S_maximum(_Base_ptr __x) noexcept 25082: { 25082: while (__x->_M_right != 0) __x = __x->_M_right; 25082: return __x; 25082: } 25082: 25082: static _Const_Base_ptr 25082: _S_maximum(_Const_Base_ptr __x) noexcept 25082: { 25082: while (__x->_M_right != 0) __x = __x->_M_right; 25082: return __x; 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct _Rb_tree_key_compare 25082: { 25082: _Key_compare _M_key_compare; 25082: 25082: _Rb_tree_key_compare() 25082: noexcept(is_nothrow_default_constructible<_Key_compare>::value) 25082: 25082: : _M_key_compare() 25082: { } 25082: 25082: _Rb_tree_key_compare(const _Key_compare& __comp) 25082: : _M_key_compare(__comp) 25082: { } 25082: 25082: 25082: 25082: _Rb_tree_key_compare(const _Rb_tree_key_compare&) = default; 25082: 25082: _Rb_tree_key_compare(_Rb_tree_key_compare&& __x) 25082: noexcept(is_nothrow_copy_constructible<_Key_compare>::value) 25082: : _M_key_compare(__x._M_key_compare) 25082: { } 25082: 25082: }; 25082: 25082: 25082: struct _Rb_tree_header 25082: { 25082: _Rb_tree_node_base _M_header; 25082: size_t _M_node_count; 25082: 25082: _Rb_tree_header() noexcept 25082: { 25082: _M_header._M_color = _S_red; 25082: _M_reset(); 25082: } 25082: 25082: 25082: _Rb_tree_header(_Rb_tree_header&& __x) noexcept 25082: { 25082: if (__x._M_header._M_parent != nullptr) 25082: _M_move_data(__x); 25082: else 25082: { 25082: _M_header._M_color = _S_red; 25082: _M_reset(); 25082: } 25082: } 25082: 25082: 25082: void 25082: _M_move_data(_Rb_tree_header& __from) 25082: { 25082: _M_header._M_color = __from._M_header._M_color; 25082: _M_header._M_parent = __from._M_header._M_parent; 25082: _M_header._M_left = __from._M_header._M_left; 25082: _M_header._M_right = __from._M_header._M_right; 25082: _M_header._M_parent->_M_parent = &_M_header; 25082: _M_node_count = __from._M_node_count; 25082: 25082: __from._M_reset(); 25082: } 25082: 25082: void 25082: _M_reset() 25082: { 25082: _M_header._M_parent = 0; 25082: _M_header._M_left = &_M_header; 25082: _M_header._M_right = &_M_header; 25082: _M_node_count = 0; 25082: } 25082: }; 25082: 25082: template 25082: struct _Rb_tree_node : public _Rb_tree_node_base 25082: { 25082: typedef _Rb_tree_node<_Val>* _Link_type; 25082: # 231 "/usr/include/c++/8/bits/stl_tree.h" 3 25082: __gnu_cxx::__aligned_membuf<_Val> _M_storage; 25082: 25082: _Val* 25082: _M_valptr() 25082: { return _M_storage._M_ptr(); } 25082: 25082: const _Val* 25082: _M_valptr() const 25082: { return _M_storage._M_ptr(); } 25082: 25082: }; 25082: 25082: __attribute__ ((__pure__)) _Rb_tree_node_base* 25082: _Rb_tree_increment(_Rb_tree_node_base* __x) throw (); 25082: 25082: __attribute__ ((__pure__)) const _Rb_tree_node_base* 25082: _Rb_tree_increment(const _Rb_tree_node_base* __x) throw (); 25082: 25082: __attribute__ ((__pure__)) _Rb_tree_node_base* 25082: _Rb_tree_decrement(_Rb_tree_node_base* __x) throw (); 25082: 25082: __attribute__ ((__pure__)) const _Rb_tree_node_base* 25082: _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw (); 25082: 25082: template 25082: struct _Rb_tree_iterator 25082: { 25082: typedef _Tp value_type; 25082: typedef _Tp& reference; 25082: typedef _Tp* pointer; 25082: 25082: typedef bidirectional_iterator_tag iterator_category; 25082: typedef ptrdiff_t difference_type; 25082: 25082: typedef _Rb_tree_iterator<_Tp> _Self; 25082: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; 25082: typedef _Rb_tree_node<_Tp>* _Link_type; 25082: 25082: _Rb_tree_iterator() noexcept 25082: : _M_node() { } 25082: 25082: explicit 25082: _Rb_tree_iterator(_Base_ptr __x) noexcept 25082: : _M_node(__x) { } 25082: 25082: reference 25082: operator*() const noexcept 25082: { return *static_cast<_Link_type>(_M_node)->_M_valptr(); } 25082: 25082: pointer 25082: operator->() const noexcept 25082: { return static_cast<_Link_type> (_M_node)->_M_valptr(); } 25082: 25082: _Self& 25082: operator++() noexcept 25082: { 25082: _M_node = _Rb_tree_increment(_M_node); 25082: return *this; 25082: } 25082: 25082: _Self 25082: operator++(int) noexcept 25082: { 25082: _Self __tmp = *this; 25082: _M_node = _Rb_tree_increment(_M_node); 25082: return __tmp; 25082: } 25082: 25082: _Self& 25082: operator--() noexcept 25082: { 25082: _M_node = _Rb_tree_decrement(_M_node); 25082: return *this; 25082: } 25082: 25082: _Self 25082: operator--(int) noexcept 25082: { 25082: _Self __tmp = *this; 25082: _M_node = _Rb_tree_decrement(_M_node); 25082: return __tmp; 25082: } 25082: 25082: bool 25082: operator==(const _Self& __x) const noexcept 25082: { return _M_node == __x._M_node; } 25082: 25082: bool 25082: operator!=(const _Self& __x) const noexcept 25082: { return _M_node != __x._M_node; } 25082: 25082: _Base_ptr _M_node; 25082: }; 25082: 25082: template 25082: struct _Rb_tree_const_iterator 25082: { 25082: typedef _Tp value_type; 25082: typedef const _Tp& reference; 25082: typedef const _Tp* pointer; 25082: 25082: typedef _Rb_tree_iterator<_Tp> iterator; 25082: 25082: typedef bidirectional_iterator_tag iterator_category; 25082: typedef ptrdiff_t difference_type; 25082: 25082: typedef _Rb_tree_const_iterator<_Tp> _Self; 25082: typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr; 25082: typedef const _Rb_tree_node<_Tp>* _Link_type; 25082: 25082: _Rb_tree_const_iterator() noexcept 25082: : _M_node() { } 25082: 25082: explicit 25082: _Rb_tree_const_iterator(_Base_ptr __x) noexcept 25082: : _M_node(__x) { } 25082: 25082: _Rb_tree_const_iterator(const iterator& __it) noexcept 25082: : _M_node(__it._M_node) { } 25082: 25082: iterator 25082: _M_const_cast() const noexcept 25082: { return iterator(const_cast(_M_node)); } 25082: 25082: reference 25082: operator*() const noexcept 25082: { return *static_cast<_Link_type>(_M_node)->_M_valptr(); } 25082: 25082: pointer 25082: operator->() const noexcept 25082: { return static_cast<_Link_type>(_M_node)->_M_valptr(); } 25082: 25082: _Self& 25082: operator++() noexcept 25082: { 25082: _M_node = _Rb_tree_increment(_M_node); 25082: return *this; 25082: } 25082: 25082: _Self 25082: operator++(int) noexcept 25082: { 25082: _Self __tmp = *this; 25082: _M_node = _Rb_tree_increment(_M_node); 25082: return __tmp; 25082: } 25082: 25082: _Self& 25082: operator--() noexcept 25082: { 25082: _M_node = _Rb_tree_decrement(_M_node); 25082: return *this; 25082: } 25082: 25082: _Self 25082: operator--(int) noexcept 25082: { 25082: _Self __tmp = *this; 25082: _M_node = _Rb_tree_decrement(_M_node); 25082: return __tmp; 25082: } 25082: 25082: bool 25082: operator==(const _Self& __x) const noexcept 25082: { return _M_node == __x._M_node; } 25082: 25082: bool 25082: operator!=(const _Self& __x) const noexcept 25082: { return _M_node != __x._M_node; } 25082: 25082: _Base_ptr _M_node; 25082: }; 25082: 25082: template 25082: inline bool 25082: operator==(const _Rb_tree_iterator<_Val>& __x, 25082: const _Rb_tree_const_iterator<_Val>& __y) noexcept 25082: { return __x._M_node == __y._M_node; } 25082: 25082: template 25082: inline bool 25082: operator!=(const _Rb_tree_iterator<_Val>& __x, 25082: const _Rb_tree_const_iterator<_Val>& __y) noexcept 25082: { return __x._M_node != __y._M_node; } 25082: 25082: void 25082: _Rb_tree_insert_and_rebalance(const bool __insert_left, 25082: _Rb_tree_node_base* __x, 25082: _Rb_tree_node_base* __p, 25082: _Rb_tree_node_base& __header) throw (); 25082: 25082: _Rb_tree_node_base* 25082: _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, 25082: _Rb_tree_node_base& __header) throw (); 25082: 25082: 25082: template> 25082: struct __has_is_transparent 25082: { }; 25082: 25082: template 25082: struct __has_is_transparent<_Cmp, _SfinaeType, 25082: __void_t> 25082: { typedef void type; }; 25082: 25082: 25082: 25082: template 25082: struct _Rb_tree_merge_helper { }; 25082: 25082: 25082: template > 25082: class _Rb_tree 25082: { 25082: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 25082: rebind<_Rb_tree_node<_Val> >::other _Node_allocator; 25082: 25082: typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits; 25082: 25082: 25082: static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{}, 25082: "comparison object must be invocable with two arguments of key type"); 25082: 25082: 25082: 25082: static_assert(is_invocable_v, 25082: "comparison object must be invocable as const"); 25082: 25082: 25082: 25082: protected: 25082: typedef _Rb_tree_node_base* _Base_ptr; 25082: typedef const _Rb_tree_node_base* _Const_Base_ptr; 25082: typedef _Rb_tree_node<_Val>* _Link_type; 25082: typedef const _Rb_tree_node<_Val>* _Const_Link_type; 25082: 25082: private: 25082: 25082: 25082: struct _Reuse_or_alloc_node 25082: { 25082: _Reuse_or_alloc_node(_Rb_tree& __t) 25082: : _M_root(__t._M_root()), _M_nodes(__t._M_rightmost()), _M_t(__t) 25082: { 25082: if (_M_root) 25082: { 25082: _M_root->_M_parent = 0; 25082: 25082: if (_M_nodes->_M_left) 25082: _M_nodes = _M_nodes->_M_left; 25082: } 25082: else 25082: _M_nodes = 0; 25082: } 25082: 25082: 25082: _Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete; 25082: 25082: 25082: ~_Reuse_or_alloc_node() 25082: { _M_t._M_erase(static_cast<_Link_type>(_M_root)); } 25082: 25082: template 25082: _Link_type 25082: 25082: 25082: 25082: operator()(_Arg&& __arg) 25082: 25082: { 25082: _Link_type __node = static_cast<_Link_type>(_M_extract()); 25082: if (__node) 25082: { 25082: _M_t._M_destroy_node(__node); 25082: _M_t._M_construct_node(__node, std::forward<_Arg>(__arg)); 25082: return __node; 25082: } 25082: 25082: return _M_t._M_create_node(std::forward<_Arg>(__arg)); 25082: } 25082: 25082: private: 25082: _Base_ptr 25082: _M_extract() 25082: { 25082: if (!_M_nodes) 25082: return _M_nodes; 25082: 25082: _Base_ptr __node = _M_nodes; 25082: _M_nodes = _M_nodes->_M_parent; 25082: if (_M_nodes) 25082: { 25082: if (_M_nodes->_M_right == __node) 25082: { 25082: _M_nodes->_M_right = 0; 25082: 25082: if (_M_nodes->_M_left) 25082: { 25082: _M_nodes = _M_nodes->_M_left; 25082: 25082: while (_M_nodes->_M_right) 25082: _M_nodes = _M_nodes->_M_right; 25082: 25082: if (_M_nodes->_M_left) 25082: _M_nodes = _M_nodes->_M_left; 25082: } 25082: } 25082: else 25082: _M_nodes->_M_left = 0; 25082: } 25082: else 25082: _M_root = 0; 25082: 25082: return __node; 25082: } 25082: 25082: _Base_ptr _M_root; 25082: _Base_ptr _M_nodes; 25082: _Rb_tree& _M_t; 25082: }; 25082: 25082: 25082: 25082: struct _Alloc_node 25082: { 25082: _Alloc_node(_Rb_tree& __t) 25082: : _M_t(__t) { } 25082: 25082: template 25082: _Link_type 25082: 25082: 25082: 25082: operator()(_Arg&& __arg) const 25082: 25082: { return _M_t._M_create_node(std::forward<_Arg>(__arg)); } 25082: 25082: private: 25082: _Rb_tree& _M_t; 25082: }; 25082: 25082: public: 25082: typedef _Key key_type; 25082: typedef _Val value_type; 25082: typedef value_type* pointer; 25082: typedef const value_type* const_pointer; 25082: typedef value_type& reference; 25082: typedef const value_type& const_reference; 25082: typedef size_t size_type; 25082: typedef ptrdiff_t difference_type; 25082: typedef _Alloc allocator_type; 25082: 25082: _Node_allocator& 25082: _M_get_Node_allocator() noexcept 25082: { return this->_M_impl; } 25082: 25082: const _Node_allocator& 25082: _M_get_Node_allocator() const noexcept 25082: { return this->_M_impl; } 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return allocator_type(_M_get_Node_allocator()); } 25082: 25082: protected: 25082: _Link_type 25082: _M_get_node() 25082: { return _Alloc_traits::allocate(_M_get_Node_allocator(), 1); } 25082: 25082: void 25082: _M_put_node(_Link_type __p) noexcept 25082: { _Alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); } 25082: # 630 "/usr/include/c++/8/bits/stl_tree.h" 3 25082: template 25082: void 25082: _M_construct_node(_Link_type __node, _Args&&... __args) 25082: { 25082: try 25082: { 25082: ::new(__node) _Rb_tree_node<_Val>; 25082: _Alloc_traits::construct(_M_get_Node_allocator(), 25082: __node->_M_valptr(), 25082: std::forward<_Args>(__args)...); 25082: } 25082: catch(...) 25082: { 25082: __node->~_Rb_tree_node<_Val>(); 25082: _M_put_node(__node); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: _Link_type 25082: _M_create_node(_Args&&... __args) 25082: { 25082: _Link_type __tmp = _M_get_node(); 25082: _M_construct_node(__tmp, std::forward<_Args>(__args)...); 25082: return __tmp; 25082: } 25082: 25082: void 25082: _M_destroy_node(_Link_type __p) noexcept 25082: { 25082: _Alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr()); 25082: __p->~_Rb_tree_node<_Val>(); 25082: } 25082: 25082: 25082: void 25082: _M_drop_node(_Link_type __p) noexcept 25082: { 25082: _M_destroy_node(__p); 25082: _M_put_node(__p); 25082: } 25082: 25082: template 25082: _Link_type 25082: _M_clone_node(_Const_Link_type __x, _NodeGen& __node_gen) 25082: { 25082: _Link_type __tmp = __node_gen(*__x->_M_valptr()); 25082: __tmp->_M_color = __x->_M_color; 25082: __tmp->_M_left = 0; 25082: __tmp->_M_right = 0; 25082: return __tmp; 25082: } 25082: 25082: protected: 25082: 25082: 25082: 25082: 25082: template 25082: 25082: struct _Rb_tree_impl 25082: : public _Node_allocator 25082: , public _Rb_tree_key_compare<_Key_compare> 25082: , public _Rb_tree_header 25082: { 25082: typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare; 25082: 25082: _Rb_tree_impl() 25082: noexcept(is_nothrow_default_constructible<_Node_allocator>::value && is_nothrow_default_constructible<_Base_key_compare>::value) 25082: 25082: 25082: : _Node_allocator() 25082: { } 25082: 25082: _Rb_tree_impl(const _Rb_tree_impl& __x) 25082: : _Node_allocator(_Alloc_traits::_S_select_on_copy(__x)) 25082: , _Base_key_compare(__x._M_key_compare) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: _Rb_tree_impl(_Rb_tree_impl&&) = default; 25082: 25082: _Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a) 25082: : _Node_allocator(std::move(__a)), _Base_key_compare(__comp) 25082: { } 25082: 25082: }; 25082: 25082: _Rb_tree_impl<_Compare> _M_impl; 25082: 25082: protected: 25082: _Base_ptr& 25082: _M_root() noexcept 25082: { return this->_M_impl._M_header._M_parent; } 25082: 25082: _Const_Base_ptr 25082: _M_root() const noexcept 25082: { return this->_M_impl._M_header._M_parent; } 25082: 25082: _Base_ptr& 25082: _M_leftmost() noexcept 25082: { return this->_M_impl._M_header._M_left; } 25082: 25082: _Const_Base_ptr 25082: _M_leftmost() const noexcept 25082: { return this->_M_impl._M_header._M_left; } 25082: 25082: _Base_ptr& 25082: _M_rightmost() noexcept 25082: { return this->_M_impl._M_header._M_right; } 25082: 25082: _Const_Base_ptr 25082: _M_rightmost() const noexcept 25082: { return this->_M_impl._M_header._M_right; } 25082: 25082: _Link_type 25082: _M_begin() noexcept 25082: { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); } 25082: 25082: _Const_Link_type 25082: _M_begin() const noexcept 25082: { 25082: return static_cast<_Const_Link_type> 25082: (this->_M_impl._M_header._M_parent); 25082: } 25082: 25082: _Base_ptr 25082: _M_end() noexcept 25082: { return &this->_M_impl._M_header; } 25082: 25082: _Const_Base_ptr 25082: _M_end() const noexcept 25082: { return &this->_M_impl._M_header; } 25082: 25082: static const_reference 25082: _S_value(_Const_Link_type __x) 25082: { return *__x->_M_valptr(); } 25082: 25082: static const _Key& 25082: _S_key(_Const_Link_type __x) 25082: { return _KeyOfValue()(_S_value(__x)); } 25082: 25082: static _Link_type 25082: _S_left(_Base_ptr __x) noexcept 25082: { return static_cast<_Link_type>(__x->_M_left); } 25082: 25082: static _Const_Link_type 25082: _S_left(_Const_Base_ptr __x) noexcept 25082: { return static_cast<_Const_Link_type>(__x->_M_left); } 25082: 25082: static _Link_type 25082: _S_right(_Base_ptr __x) noexcept 25082: { return static_cast<_Link_type>(__x->_M_right); } 25082: 25082: static _Const_Link_type 25082: _S_right(_Const_Base_ptr __x) noexcept 25082: { return static_cast<_Const_Link_type>(__x->_M_right); } 25082: 25082: static const_reference 25082: _S_value(_Const_Base_ptr __x) 25082: { return *static_cast<_Const_Link_type>(__x)->_M_valptr(); } 25082: 25082: static const _Key& 25082: _S_key(_Const_Base_ptr __x) 25082: { return _KeyOfValue()(_S_value(__x)); } 25082: 25082: static _Base_ptr 25082: _S_minimum(_Base_ptr __x) noexcept 25082: { return _Rb_tree_node_base::_S_minimum(__x); } 25082: 25082: static _Const_Base_ptr 25082: _S_minimum(_Const_Base_ptr __x) noexcept 25082: { return _Rb_tree_node_base::_S_minimum(__x); } 25082: 25082: static _Base_ptr 25082: _S_maximum(_Base_ptr __x) noexcept 25082: { return _Rb_tree_node_base::_S_maximum(__x); } 25082: 25082: static _Const_Base_ptr 25082: _S_maximum(_Const_Base_ptr __x) noexcept 25082: { return _Rb_tree_node_base::_S_maximum(__x); } 25082: 25082: public: 25082: typedef _Rb_tree_iterator iterator; 25082: typedef _Rb_tree_const_iterator const_iterator; 25082: 25082: typedef std::reverse_iterator reverse_iterator; 25082: typedef std::reverse_iterator const_reverse_iterator; 25082: 25082: 25082: using node_type = _Node_handle<_Key, _Val, _Node_allocator>; 25082: using insert_return_type = _Node_insert_return< 25082: conditional_t, const_iterator, iterator>, 25082: node_type>; 25082: 25082: 25082: pair<_Base_ptr, _Base_ptr> 25082: _M_get_insert_unique_pos(const key_type& __k); 25082: 25082: pair<_Base_ptr, _Base_ptr> 25082: _M_get_insert_equal_pos(const key_type& __k); 25082: 25082: pair<_Base_ptr, _Base_ptr> 25082: _M_get_insert_hint_unique_pos(const_iterator __pos, 25082: const key_type& __k); 25082: 25082: pair<_Base_ptr, _Base_ptr> 25082: _M_get_insert_hint_equal_pos(const_iterator __pos, 25082: const key_type& __k); 25082: 25082: private: 25082: 25082: template 25082: iterator 25082: _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&); 25082: 25082: iterator 25082: _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Link_type __z); 25082: 25082: template 25082: iterator 25082: _M_insert_lower(_Base_ptr __y, _Arg&& __v); 25082: 25082: template 25082: iterator 25082: _M_insert_equal_lower(_Arg&& __x); 25082: 25082: iterator 25082: _M_insert_lower_node(_Base_ptr __p, _Link_type __z); 25082: 25082: iterator 25082: _M_insert_equal_lower_node(_Link_type __z); 25082: # 883 "/usr/include/c++/8/bits/stl_tree.h" 3 25082: template 25082: _Link_type 25082: _M_copy(_Const_Link_type __x, _Base_ptr __p, _NodeGen&); 25082: 25082: template 25082: _Link_type 25082: _M_copy(const _Rb_tree& __x, _NodeGen& __gen) 25082: { 25082: _Link_type __root = _M_copy(__x._M_begin(), _M_end(), __gen); 25082: _M_leftmost() = _S_minimum(__root); 25082: _M_rightmost() = _S_maximum(__root); 25082: _M_impl._M_node_count = __x._M_impl._M_node_count; 25082: return __root; 25082: } 25082: 25082: _Link_type 25082: _M_copy(const _Rb_tree& __x) 25082: { 25082: _Alloc_node __an(*this); 25082: return _M_copy(__x, __an); 25082: } 25082: 25082: void 25082: _M_erase(_Link_type __x); 25082: 25082: iterator 25082: _M_lower_bound(_Link_type __x, _Base_ptr __y, 25082: const _Key& __k); 25082: 25082: const_iterator 25082: _M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y, 25082: const _Key& __k) const; 25082: 25082: iterator 25082: _M_upper_bound(_Link_type __x, _Base_ptr __y, 25082: const _Key& __k); 25082: 25082: const_iterator 25082: _M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __y, 25082: const _Key& __k) const; 25082: 25082: public: 25082: 25082: 25082: 25082: 25082: _Rb_tree() = default; 25082: 25082: 25082: _Rb_tree(const _Compare& __comp, 25082: const allocator_type& __a = allocator_type()) 25082: : _M_impl(__comp, _Node_allocator(__a)) { } 25082: 25082: _Rb_tree(const _Rb_tree& __x) 25082: : _M_impl(__x._M_impl) 25082: { 25082: if (__x._M_root() != 0) 25082: _M_root() = _M_copy(__x); 25082: } 25082: 25082: 25082: _Rb_tree(const allocator_type& __a) 25082: : _M_impl(_Compare(), _Node_allocator(__a)) 25082: { } 25082: 25082: _Rb_tree(const _Rb_tree& __x, const allocator_type& __a) 25082: : _M_impl(__x._M_impl._M_key_compare, _Node_allocator(__a)) 25082: { 25082: if (__x._M_root() != nullptr) 25082: _M_root() = _M_copy(__x); 25082: } 25082: 25082: _Rb_tree(_Rb_tree&&) = default; 25082: 25082: _Rb_tree(_Rb_tree&& __x, const allocator_type& __a) 25082: : _Rb_tree(std::move(__x), _Node_allocator(__a)) 25082: { } 25082: 25082: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a); 25082: 25082: 25082: ~_Rb_tree() noexcept 25082: { _M_erase(_M_begin()); } 25082: 25082: _Rb_tree& 25082: operator=(const _Rb_tree& __x); 25082: 25082: 25082: _Compare 25082: key_comp() const 25082: { return _M_impl._M_key_compare; } 25082: 25082: iterator 25082: begin() noexcept 25082: { return iterator(this->_M_impl._M_header._M_left); } 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return const_iterator(this->_M_impl._M_header._M_left); } 25082: 25082: iterator 25082: end() noexcept 25082: { return iterator(&this->_M_impl._M_header); } 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return const_iterator(&this->_M_impl._M_header); } 25082: 25082: reverse_iterator 25082: rbegin() noexcept 25082: { return reverse_iterator(end()); } 25082: 25082: const_reverse_iterator 25082: rbegin() const noexcept 25082: { return const_reverse_iterator(end()); } 25082: 25082: reverse_iterator 25082: rend() noexcept 25082: { return reverse_iterator(begin()); } 25082: 25082: const_reverse_iterator 25082: rend() const noexcept 25082: { return const_reverse_iterator(begin()); } 25082: 25082: bool 25082: empty() const noexcept 25082: { return _M_impl._M_node_count == 0; } 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_impl._M_node_count; } 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _Alloc_traits::max_size(_M_get_Node_allocator()); } 25082: 25082: void 25082: swap(_Rb_tree& __t) 25082: noexcept(__is_nothrow_swappable<_Compare>::value); 25082: 25082: 25082: 25082: template 25082: pair 25082: _M_insert_unique(_Arg&& __x); 25082: 25082: template 25082: iterator 25082: _M_insert_equal(_Arg&& __x); 25082: 25082: template 25082: iterator 25082: _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&); 25082: 25082: template 25082: iterator 25082: _M_insert_unique_(const_iterator __pos, _Arg&& __x) 25082: { 25082: _Alloc_node __an(*this); 25082: return _M_insert_unique_(__pos, std::forward<_Arg>(__x), __an); 25082: } 25082: 25082: template 25082: iterator 25082: _M_insert_equal_(const_iterator __pos, _Arg&& __x, _NodeGen&); 25082: 25082: template 25082: iterator 25082: _M_insert_equal_(const_iterator __pos, _Arg&& __x) 25082: { 25082: _Alloc_node __an(*this); 25082: return _M_insert_equal_(__pos, std::forward<_Arg>(__x), __an); 25082: } 25082: 25082: template 25082: pair 25082: _M_emplace_unique(_Args&&... __args); 25082: 25082: template 25082: iterator 25082: _M_emplace_equal(_Args&&... __args); 25082: 25082: template 25082: iterator 25082: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args); 25082: 25082: template 25082: iterator 25082: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args); 25082: # 1103 "/usr/include/c++/8/bits/stl_tree.h" 3 25082: template 25082: void 25082: _M_insert_unique(_InputIterator __first, _InputIterator __last); 25082: 25082: template 25082: void 25082: _M_insert_equal(_InputIterator __first, _InputIterator __last); 25082: 25082: private: 25082: void 25082: _M_erase_aux(const_iterator __position); 25082: 25082: void 25082: _M_erase_aux(const_iterator __first, const_iterator __last); 25082: 25082: public: 25082: 25082: 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iterator 25082: erase(const_iterator __position) 25082: { 25082: ; 25082: const_iterator __result = __position; 25082: ++__result; 25082: _M_erase_aux(__position); 25082: return __result._M_const_cast(); 25082: } 25082: 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iterator 25082: erase(iterator __position) 25082: { 25082: ; 25082: iterator __result = __position; 25082: ++__result; 25082: _M_erase_aux(__position); 25082: return __result; 25082: } 25082: # 1159 "/usr/include/c++/8/bits/stl_tree.h" 3 25082: size_type 25082: erase(const key_type& __x); 25082: 25082: 25082: 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iterator 25082: erase(const_iterator __first, const_iterator __last) 25082: { 25082: _M_erase_aux(__first, __last); 25082: return __last._M_const_cast(); 25082: } 25082: # 1181 "/usr/include/c++/8/bits/stl_tree.h" 3 25082: void 25082: erase(const key_type* __first, const key_type* __last); 25082: 25082: void 25082: clear() noexcept 25082: { 25082: _M_erase(_M_begin()); 25082: _M_impl._M_reset(); 25082: } 25082: 25082: 25082: iterator 25082: find(const key_type& __k); 25082: 25082: const_iterator 25082: find(const key_type& __k) const; 25082: 25082: size_type 25082: count(const key_type& __k) const; 25082: 25082: iterator 25082: lower_bound(const key_type& __k) 25082: { return _M_lower_bound(_M_begin(), _M_end(), __k); } 25082: 25082: const_iterator 25082: lower_bound(const key_type& __k) const 25082: { return _M_lower_bound(_M_begin(), _M_end(), __k); } 25082: 25082: iterator 25082: upper_bound(const key_type& __k) 25082: { return _M_upper_bound(_M_begin(), _M_end(), __k); } 25082: 25082: const_iterator 25082: upper_bound(const key_type& __k) const 25082: { return _M_upper_bound(_M_begin(), _M_end(), __k); } 25082: 25082: pair 25082: equal_range(const key_type& __k); 25082: 25082: pair 25082: equal_range(const key_type& __k) const; 25082: 25082: 25082: template::type> 25082: iterator 25082: _M_find_tr(const _Kt& __k) 25082: { 25082: const _Rb_tree* __const_this = this; 25082: return __const_this->_M_find_tr(__k)._M_const_cast(); 25082: } 25082: 25082: template::type> 25082: const_iterator 25082: _M_find_tr(const _Kt& __k) const 25082: { 25082: auto __j = _M_lower_bound_tr(__k); 25082: if (__j != end() && _M_impl._M_key_compare(__k, _S_key(__j._M_node))) 25082: __j = end(); 25082: return __j; 25082: } 25082: 25082: template::type> 25082: size_type 25082: _M_count_tr(const _Kt& __k) const 25082: { 25082: auto __p = _M_equal_range_tr(__k); 25082: return std::distance(__p.first, __p.second); 25082: } 25082: 25082: template::type> 25082: iterator 25082: _M_lower_bound_tr(const _Kt& __k) 25082: { 25082: const _Rb_tree* __const_this = this; 25082: return __const_this->_M_lower_bound_tr(__k)._M_const_cast(); 25082: } 25082: 25082: template::type> 25082: const_iterator 25082: _M_lower_bound_tr(const _Kt& __k) const 25082: { 25082: auto __x = _M_begin(); 25082: auto __y = _M_end(); 25082: while (__x != 0) 25082: if (!_M_impl._M_key_compare(_S_key(__x), __k)) 25082: { 25082: __y = __x; 25082: __x = _S_left(__x); 25082: } 25082: else 25082: __x = _S_right(__x); 25082: return const_iterator(__y); 25082: } 25082: 25082: template::type> 25082: iterator 25082: _M_upper_bound_tr(const _Kt& __k) 25082: { 25082: const _Rb_tree* __const_this = this; 25082: return __const_this->_M_upper_bound_tr(__k)._M_const_cast(); 25082: } 25082: 25082: template::type> 25082: const_iterator 25082: _M_upper_bound_tr(const _Kt& __k) const 25082: { 25082: auto __x = _M_begin(); 25082: auto __y = _M_end(); 25082: while (__x != 0) 25082: if (_M_impl._M_key_compare(__k, _S_key(__x))) 25082: { 25082: __y = __x; 25082: __x = _S_left(__x); 25082: } 25082: else 25082: __x = _S_right(__x); 25082: return const_iterator(__y); 25082: } 25082: 25082: template::type> 25082: pair 25082: _M_equal_range_tr(const _Kt& __k) 25082: { 25082: const _Rb_tree* __const_this = this; 25082: auto __ret = __const_this->_M_equal_range_tr(__k); 25082: return { __ret.first._M_const_cast(), __ret.second._M_const_cast() }; 25082: } 25082: 25082: template::type> 25082: pair 25082: _M_equal_range_tr(const _Kt& __k) const 25082: { 25082: auto __low = _M_lower_bound_tr(__k); 25082: auto __high = __low; 25082: auto& __cmp = _M_impl._M_key_compare; 25082: while (__high != end() && !__cmp(__k, _S_key(__high._M_node))) 25082: ++__high; 25082: return { __low, __high }; 25082: } 25082: 25082: 25082: 25082: bool 25082: __rb_verify() const; 25082: 25082: 25082: _Rb_tree& 25082: operator=(_Rb_tree&&) 25082: noexcept(_Alloc_traits::_S_nothrow_move() 25082: && is_nothrow_move_assignable<_Compare>::value); 25082: 25082: template 25082: void 25082: _M_assign_unique(_Iterator, _Iterator); 25082: 25082: template 25082: void 25082: _M_assign_equal(_Iterator, _Iterator); 25082: 25082: private: 25082: 25082: void 25082: _M_move_data(_Rb_tree& __x, std::true_type) 25082: { _M_impl._M_move_data(__x._M_impl); } 25082: 25082: 25082: 25082: void 25082: _M_move_data(_Rb_tree&, std::false_type); 25082: 25082: 25082: void 25082: _M_move_assign(_Rb_tree&, std::true_type); 25082: 25082: 25082: 25082: void 25082: _M_move_assign(_Rb_tree&, std::false_type); 25082: 25082: 25082: 25082: public: 25082: 25082: insert_return_type 25082: _M_reinsert_node_unique(node_type&& __nh) 25082: { 25082: insert_return_type __ret; 25082: if (__nh.empty()) 25082: __ret.position = end(); 25082: else 25082: { 25082: ; 25082: 25082: auto __res = _M_get_insert_unique_pos(__nh._M_key()); 25082: if (__res.second) 25082: { 25082: __ret.position 25082: = _M_insert_node(__res.first, __res.second, __nh._M_ptr); 25082: __nh._M_ptr = nullptr; 25082: __ret.inserted = true; 25082: } 25082: else 25082: { 25082: __ret.node = std::move(__nh); 25082: __ret.position = iterator(__res.first); 25082: __ret.inserted = false; 25082: } 25082: } 25082: return __ret; 25082: } 25082: 25082: 25082: iterator 25082: _M_reinsert_node_equal(node_type&& __nh) 25082: { 25082: iterator __ret; 25082: if (__nh.empty()) 25082: __ret = end(); 25082: else 25082: { 25082: ; 25082: auto __res = _M_get_insert_equal_pos(__nh._M_key()); 25082: if (__res.second) 25082: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr); 25082: else 25082: __ret = _M_insert_equal_lower_node(__nh._M_ptr); 25082: __nh._M_ptr = nullptr; 25082: } 25082: return __ret; 25082: } 25082: 25082: 25082: iterator 25082: _M_reinsert_node_hint_unique(const_iterator __hint, node_type&& __nh) 25082: { 25082: iterator __ret; 25082: if (__nh.empty()) 25082: __ret = end(); 25082: else 25082: { 25082: ; 25082: auto __res = _M_get_insert_hint_unique_pos(__hint, __nh._M_key()); 25082: if (__res.second) 25082: { 25082: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr); 25082: __nh._M_ptr = nullptr; 25082: } 25082: else 25082: __ret = iterator(__res.first); 25082: } 25082: return __ret; 25082: } 25082: 25082: 25082: iterator 25082: _M_reinsert_node_hint_equal(const_iterator __hint, node_type&& __nh) 25082: { 25082: iterator __ret; 25082: if (__nh.empty()) 25082: __ret = end(); 25082: else 25082: { 25082: ; 25082: auto __res = _M_get_insert_hint_equal_pos(__hint, __nh._M_key()); 25082: if (__res.second) 25082: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr); 25082: else 25082: __ret = _M_insert_equal_lower_node(__nh._M_ptr); 25082: __nh._M_ptr = nullptr; 25082: } 25082: return __ret; 25082: } 25082: 25082: 25082: node_type 25082: extract(const_iterator __pos) 25082: { 25082: auto __ptr = _Rb_tree_rebalance_for_erase( 25082: __pos._M_const_cast()._M_node, _M_impl._M_header); 25082: --_M_impl._M_node_count; 25082: return { static_cast<_Link_type>(__ptr), _M_get_Node_allocator() }; 25082: } 25082: 25082: 25082: node_type 25082: extract(const key_type& __k) 25082: { 25082: node_type __nh; 25082: auto __pos = find(__k); 25082: if (__pos != end()) 25082: __nh = extract(const_iterator(__pos)); 25082: return __nh; 25082: } 25082: 25082: template 25082: using _Compatible_tree 25082: = _Rb_tree<_Key, _Val, _KeyOfValue, _Compare2, _Alloc>; 25082: 25082: template 25082: friend class _Rb_tree_merge_helper; 25082: 25082: 25082: template 25082: void 25082: _M_merge_unique(_Compatible_tree<_Compare2>& __src) noexcept 25082: { 25082: using _Merge_helper = _Rb_tree_merge_helper<_Rb_tree, _Compare2>; 25082: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) 25082: { 25082: auto __pos = __i++; 25082: auto __res = _M_get_insert_unique_pos(_KeyOfValue()(*__pos)); 25082: if (__res.second) 25082: { 25082: auto& __src_impl = _Merge_helper::_S_get_impl(__src); 25082: auto __ptr = _Rb_tree_rebalance_for_erase( 25082: __pos._M_node, __src_impl._M_header); 25082: --__src_impl._M_node_count; 25082: _M_insert_node(__res.first, __res.second, 25082: static_cast<_Link_type>(__ptr)); 25082: } 25082: } 25082: } 25082: 25082: 25082: template 25082: void 25082: _M_merge_equal(_Compatible_tree<_Compare2>& __src) noexcept 25082: { 25082: using _Merge_helper = _Rb_tree_merge_helper<_Rb_tree, _Compare2>; 25082: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) 25082: { 25082: auto __pos = __i++; 25082: auto __res = _M_get_insert_equal_pos(_KeyOfValue()(*__pos)); 25082: if (__res.second) 25082: { 25082: auto& __src_impl = _Merge_helper::_S_get_impl(__src); 25082: auto __ptr = _Rb_tree_rebalance_for_erase( 25082: __pos._M_node, __src_impl._M_header); 25082: --__src_impl._M_node_count; 25082: _M_insert_node(__res.first, __res.second, 25082: static_cast<_Link_type>(__ptr)); 25082: } 25082: } 25082: } 25082: 25082: }; 25082: 25082: template 25082: inline bool 25082: operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, 25082: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) 25082: { 25082: return __x.size() == __y.size() 25082: && std::equal(__x.begin(), __x.end(), __y.begin()); 25082: } 25082: 25082: template 25082: inline bool 25082: operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, 25082: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) 25082: { 25082: return std::lexicographical_compare(__x.begin(), __x.end(), 25082: __y.begin(), __y.end()); 25082: } 25082: 25082: template 25082: inline bool 25082: operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, 25082: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: template 25082: inline bool 25082: operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, 25082: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) 25082: { return __y < __x; } 25082: 25082: template 25082: inline bool 25082: operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, 25082: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) 25082: { return !(__y < __x); } 25082: 25082: template 25082: inline bool 25082: operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, 25082: const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) 25082: { return !(__x < __y); } 25082: 25082: template 25082: inline void 25082: swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) 25082: { __x.swap(__y); } 25082: 25082: 25082: template 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a) 25082: : _M_impl(__x._M_impl._M_key_compare, std::move(__a)) 25082: { 25082: using __eq = typename _Alloc_traits::is_always_equal; 25082: if (__x._M_root() != nullptr) 25082: _M_move_data(__x, __eq()); 25082: } 25082: 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_move_data(_Rb_tree& __x, std::false_type) 25082: { 25082: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) 25082: _M_move_data(__x, std::true_type()); 25082: else 25082: { 25082: _Alloc_node __an(*this); 25082: auto __lbd = 25082: [&__an](const value_type& __cval) 25082: { 25082: auto& __val = const_cast(__cval); 25082: return __an(std::move_if_noexcept(__val)); 25082: }; 25082: _M_root() = _M_copy(__x, __lbd); 25082: } 25082: } 25082: 25082: template 25082: inline void 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_move_assign(_Rb_tree& __x, true_type) 25082: { 25082: clear(); 25082: if (__x._M_root() != nullptr) 25082: _M_move_data(__x, std::true_type()); 25082: std::__alloc_on_move(_M_get_Node_allocator(), 25082: __x._M_get_Node_allocator()); 25082: } 25082: 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_move_assign(_Rb_tree& __x, false_type) 25082: { 25082: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) 25082: return _M_move_assign(__x, true_type{}); 25082: 25082: 25082: 25082: _Reuse_or_alloc_node __roan(*this); 25082: _M_impl._M_reset(); 25082: if (__x._M_root() != nullptr) 25082: { 25082: auto __lbd = 25082: [&__roan](const value_type& __cval) 25082: { 25082: auto& __val = const_cast(__cval); 25082: return __roan(std::move_if_noexcept(__val)); 25082: }; 25082: _M_root() = _M_copy(__x, __lbd); 25082: __x.clear(); 25082: } 25082: } 25082: 25082: template 25082: inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: operator=(_Rb_tree&& __x) 25082: noexcept(_Alloc_traits::_S_nothrow_move() 25082: && is_nothrow_move_assignable<_Compare>::value) 25082: { 25082: _M_impl._M_key_compare = std::move(__x._M_impl._M_key_compare); 25082: _M_move_assign(__x, __bool_constant<_Alloc_traits::_S_nothrow_move()>()); 25082: return *this; 25082: } 25082: 25082: template 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_assign_unique(_Iterator __first, _Iterator __last) 25082: { 25082: _Reuse_or_alloc_node __roan(*this); 25082: _M_impl._M_reset(); 25082: for (; __first != __last; ++__first) 25082: _M_insert_unique_(end(), *__first, __roan); 25082: } 25082: 25082: template 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_assign_equal(_Iterator __first, _Iterator __last) 25082: { 25082: _Reuse_or_alloc_node __roan(*this); 25082: _M_impl._M_reset(); 25082: for (; __first != __last; ++__first) 25082: _M_insert_equal_(end(), *__first, __roan); 25082: } 25082: 25082: 25082: template 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: operator=(const _Rb_tree& __x) 25082: { 25082: if (this != &__x) 25082: { 25082: 25082: 25082: if (_Alloc_traits::_S_propagate_on_copy_assign()) 25082: { 25082: auto& __this_alloc = this->_M_get_Node_allocator(); 25082: auto& __that_alloc = __x._M_get_Node_allocator(); 25082: if (!_Alloc_traits::_S_always_equal() 25082: && __this_alloc != __that_alloc) 25082: { 25082: 25082: 25082: clear(); 25082: std::__alloc_on_copy(__this_alloc, __that_alloc); 25082: } 25082: } 25082: 25082: 25082: _Reuse_or_alloc_node __roan(*this); 25082: _M_impl._M_reset(); 25082: _M_impl._M_key_compare = __x._M_impl._M_key_compare; 25082: if (__x._M_root() != 0) 25082: _M_root() = _M_copy(__x, __roan); 25082: } 25082: 25082: return *this; 25082: } 25082: 25082: template 25082: 25082: template 25082: 25082: 25082: 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_insert_(_Base_ptr __x, _Base_ptr __p, 25082: 25082: _Arg&& __v, 25082: 25082: 25082: 25082: _NodeGen& __node_gen) 25082: { 25082: bool __insert_left = (__x != 0 || __p == _M_end() 25082: || _M_impl._M_key_compare(_KeyOfValue()(__v), 25082: _S_key(__p))); 25082: 25082: _Link_type __z = __node_gen(std::forward<_Arg>(__v)); 25082: 25082: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, 25082: this->_M_impl._M_header); 25082: ++_M_impl._M_node_count; 25082: return iterator(__z); 25082: } 25082: 25082: template 25082: 25082: template 25082: 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: 25082: _M_insert_lower(_Base_ptr __p, _Arg&& __v) 25082: 25082: 25082: 25082: { 25082: bool __insert_left = (__p == _M_end() 25082: || !_M_impl._M_key_compare(_S_key(__p), 25082: _KeyOfValue()(__v))); 25082: 25082: _Link_type __z = _M_create_node(std::forward<_Arg>(__v)); 25082: 25082: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, 25082: this->_M_impl._M_header); 25082: ++_M_impl._M_node_count; 25082: return iterator(__z); 25082: } 25082: 25082: template 25082: 25082: template 25082: 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: 25082: _M_insert_equal_lower(_Arg&& __v) 25082: 25082: 25082: 25082: { 25082: _Link_type __x = _M_begin(); 25082: _Base_ptr __y = _M_end(); 25082: while (__x != 0) 25082: { 25082: __y = __x; 25082: __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? 25082: _S_left(__x) : _S_right(__x); 25082: } 25082: return _M_insert_lower(__y, std::forward<_Arg>(__v)); 25082: } 25082: 25082: template 25082: template 25082: typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type 25082: _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: 25082: _M_copy(_Const_Link_type __x, _Base_ptr __p, _NodeGen& __node_gen) 25082: { 25082: 25082: _Link_type __top = _M_clone_node(__x, __node_gen); 25082: __top->_M_parent = __p; 25082: 25082: try 25082: { 25082: if (__x->_M_right) 25082: __top->_M_right = _M_copy(_S_right(__x), __top, __node_gen); 25082: __p = __top; 25082: __x = _S_left(__x); 25082: 25082: while (__x != 0) 25082: { 25082: _Link_type __y = _M_clone_node(__x, __node_gen); 25082: __p->_M_left = __y; 25082: __y->_M_parent = __p; 25082: if (__x->_M_right) 25082: __y->_M_right = _M_copy(_S_right(__x), __y, __node_gen); 25082: __p = __y; 25082: __x = _S_left(__x); 25082: } 25082: } 25082: catch(...) 25082: { 25082: _M_erase(__top); 25082: throw; 25082: } 25082: return __top; 25082: } 25082: 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_erase(_Link_type __x) 25082: { 25082: 25082: while (__x != 0) 25082: { 25082: _M_erase(_S_right(__x)); 25082: _Link_type __y = _S_left(__x); 25082: _M_drop_node(__x); 25082: __x = __y; 25082: } 25082: } 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_lower_bound(_Link_type __x, _Base_ptr __y, 25082: const _Key& __k) 25082: { 25082: while (__x != 0) 25082: if (!_M_impl._M_key_compare(_S_key(__x), __k)) 25082: __y = __x, __x = _S_left(__x); 25082: else 25082: __x = _S_right(__x); 25082: return iterator(__y); 25082: } 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::const_iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y, 25082: const _Key& __k) const 25082: { 25082: while (__x != 0) 25082: if (!_M_impl._M_key_compare(_S_key(__x), __k)) 25082: __y = __x, __x = _S_left(__x); 25082: else 25082: __x = _S_right(__x); 25082: return const_iterator(__y); 25082: } 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_upper_bound(_Link_type __x, _Base_ptr __y, 25082: const _Key& __k) 25082: { 25082: while (__x != 0) 25082: if (_M_impl._M_key_compare(__k, _S_key(__x))) 25082: __y = __x, __x = _S_left(__x); 25082: else 25082: __x = _S_right(__x); 25082: return iterator(__y); 25082: } 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::const_iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __y, 25082: const _Key& __k) const 25082: { 25082: while (__x != 0) 25082: if (_M_impl._M_key_compare(__k, _S_key(__x))) 25082: __y = __x, __x = _S_left(__x); 25082: else 25082: __x = _S_right(__x); 25082: return const_iterator(__y); 25082: } 25082: 25082: template 25082: pair::iterator, 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::iterator> 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: equal_range(const _Key& __k) 25082: { 25082: _Link_type __x = _M_begin(); 25082: _Base_ptr __y = _M_end(); 25082: while (__x != 0) 25082: { 25082: if (_M_impl._M_key_compare(_S_key(__x), __k)) 25082: __x = _S_right(__x); 25082: else if (_M_impl._M_key_compare(__k, _S_key(__x))) 25082: __y = __x, __x = _S_left(__x); 25082: else 25082: { 25082: _Link_type __xu(__x); 25082: _Base_ptr __yu(__y); 25082: __y = __x, __x = _S_left(__x); 25082: __xu = _S_right(__xu); 25082: return pair(_M_lower_bound(__x, __y, __k), 25082: _M_upper_bound(__xu, __yu, __k)); 25082: } 25082: } 25082: return pair(iterator(__y), 25082: iterator(__y)); 25082: } 25082: 25082: template 25082: pair::const_iterator, 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::const_iterator> 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: equal_range(const _Key& __k) const 25082: { 25082: _Const_Link_type __x = _M_begin(); 25082: _Const_Base_ptr __y = _M_end(); 25082: while (__x != 0) 25082: { 25082: if (_M_impl._M_key_compare(_S_key(__x), __k)) 25082: __x = _S_right(__x); 25082: else if (_M_impl._M_key_compare(__k, _S_key(__x))) 25082: __y = __x, __x = _S_left(__x); 25082: else 25082: { 25082: _Const_Link_type __xu(__x); 25082: _Const_Base_ptr __yu(__y); 25082: __y = __x, __x = _S_left(__x); 25082: __xu = _S_right(__xu); 25082: return pair(_M_lower_bound(__x, __y, __k), 25082: _M_upper_bound(__xu, __yu, __k)); 25082: } 25082: } 25082: return pair(const_iterator(__y), 25082: const_iterator(__y)); 25082: } 25082: 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: swap(_Rb_tree& __t) 25082: noexcept(__is_nothrow_swappable<_Compare>::value) 25082: { 25082: if (_M_root() == 0) 25082: { 25082: if (__t._M_root() != 0) 25082: _M_impl._M_move_data(__t._M_impl); 25082: } 25082: else if (__t._M_root() == 0) 25082: __t._M_impl._M_move_data(_M_impl); 25082: else 25082: { 25082: std::swap(_M_root(),__t._M_root()); 25082: std::swap(_M_leftmost(),__t._M_leftmost()); 25082: std::swap(_M_rightmost(),__t._M_rightmost()); 25082: 25082: _M_root()->_M_parent = _M_end(); 25082: __t._M_root()->_M_parent = __t._M_end(); 25082: std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); 25082: } 25082: 25082: std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare); 25082: 25082: _Alloc_traits::_S_on_swap(_M_get_Node_allocator(), 25082: __t._M_get_Node_allocator()); 25082: } 25082: 25082: template 25082: pair::_Base_ptr, 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::_Base_ptr> 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_get_insert_unique_pos(const key_type& __k) 25082: { 25082: typedef pair<_Base_ptr, _Base_ptr> _Res; 25082: _Link_type __x = _M_begin(); 25082: _Base_ptr __y = _M_end(); 25082: bool __comp = true; 25082: while (__x != 0) 25082: { 25082: __y = __x; 25082: __comp = _M_impl._M_key_compare(__k, _S_key(__x)); 25082: __x = __comp ? _S_left(__x) : _S_right(__x); 25082: } 25082: iterator __j = iterator(__y); 25082: if (__comp) 25082: { 25082: if (__j == begin()) 25082: return _Res(__x, __y); 25082: else 25082: --__j; 25082: } 25082: if (_M_impl._M_key_compare(_S_key(__j._M_node), __k)) 25082: return _Res(__x, __y); 25082: return _Res(__j._M_node, 0); 25082: } 25082: 25082: template 25082: pair::_Base_ptr, 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::_Base_ptr> 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_get_insert_equal_pos(const key_type& __k) 25082: { 25082: typedef pair<_Base_ptr, _Base_ptr> _Res; 25082: _Link_type __x = _M_begin(); 25082: _Base_ptr __y = _M_end(); 25082: while (__x != 0) 25082: { 25082: __y = __x; 25082: __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? 25082: _S_left(__x) : _S_right(__x); 25082: } 25082: return _Res(__x, __y); 25082: } 25082: 25082: template 25082: 25082: template 25082: 25082: pair::iterator, bool> 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: 25082: _M_insert_unique(_Arg&& __v) 25082: 25082: 25082: 25082: { 25082: typedef pair _Res; 25082: pair<_Base_ptr, _Base_ptr> __res 25082: = _M_get_insert_unique_pos(_KeyOfValue()(__v)); 25082: 25082: if (__res.second) 25082: { 25082: _Alloc_node __an(*this); 25082: return _Res(_M_insert_(__res.first, __res.second, 25082: std::forward<_Arg>(__v), __an), 25082: true); 25082: } 25082: 25082: return _Res(iterator(__res.first), false); 25082: } 25082: 25082: template 25082: 25082: template 25082: 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: 25082: _M_insert_equal(_Arg&& __v) 25082: 25082: 25082: 25082: { 25082: pair<_Base_ptr, _Base_ptr> __res 25082: = _M_get_insert_equal_pos(_KeyOfValue()(__v)); 25082: _Alloc_node __an(*this); 25082: return _M_insert_(__res.first, __res.second, 25082: std::forward<_Arg>(__v), __an); 25082: } 25082: 25082: template 25082: pair::_Base_ptr, 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::_Base_ptr> 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_get_insert_hint_unique_pos(const_iterator __position, 25082: const key_type& __k) 25082: { 25082: iterator __pos = __position._M_const_cast(); 25082: typedef pair<_Base_ptr, _Base_ptr> _Res; 25082: 25082: 25082: if (__pos._M_node == _M_end()) 25082: { 25082: if (size() > 0 25082: && _M_impl._M_key_compare(_S_key(_M_rightmost()), __k)) 25082: return _Res(0, _M_rightmost()); 25082: else 25082: return _M_get_insert_unique_pos(__k); 25082: } 25082: else if (_M_impl._M_key_compare(__k, _S_key(__pos._M_node))) 25082: { 25082: 25082: iterator __before = __pos; 25082: if (__pos._M_node == _M_leftmost()) 25082: return _Res(_M_leftmost(), _M_leftmost()); 25082: else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), __k)) 25082: { 25082: if (_S_right(__before._M_node) == 0) 25082: return _Res(0, __before._M_node); 25082: else 25082: return _Res(__pos._M_node, __pos._M_node); 25082: } 25082: else 25082: return _M_get_insert_unique_pos(__k); 25082: } 25082: else if (_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) 25082: { 25082: 25082: iterator __after = __pos; 25082: if (__pos._M_node == _M_rightmost()) 25082: return _Res(0, _M_rightmost()); 25082: else if (_M_impl._M_key_compare(__k, _S_key((++__after)._M_node))) 25082: { 25082: if (_S_right(__pos._M_node) == 0) 25082: return _Res(0, __pos._M_node); 25082: else 25082: return _Res(__after._M_node, __after._M_node); 25082: } 25082: else 25082: return _M_get_insert_unique_pos(__k); 25082: } 25082: else 25082: 25082: return _Res(__pos._M_node, 0); 25082: } 25082: 25082: template 25082: 25082: template 25082: 25082: 25082: 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_insert_unique_(const_iterator __position, 25082: 25082: _Arg&& __v, 25082: 25082: 25082: 25082: _NodeGen& __node_gen) 25082: { 25082: pair<_Base_ptr, _Base_ptr> __res 25082: = _M_get_insert_hint_unique_pos(__position, _KeyOfValue()(__v)); 25082: 25082: if (__res.second) 25082: return _M_insert_(__res.first, __res.second, 25082: std::forward<_Arg>(__v), 25082: __node_gen); 25082: return iterator(__res.first); 25082: } 25082: 25082: template 25082: pair::_Base_ptr, 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::_Base_ptr> 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k) 25082: { 25082: iterator __pos = __position._M_const_cast(); 25082: typedef pair<_Base_ptr, _Base_ptr> _Res; 25082: 25082: 25082: if (__pos._M_node == _M_end()) 25082: { 25082: if (size() > 0 25082: && !_M_impl._M_key_compare(__k, _S_key(_M_rightmost()))) 25082: return _Res(0, _M_rightmost()); 25082: else 25082: return _M_get_insert_equal_pos(__k); 25082: } 25082: else if (!_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) 25082: { 25082: 25082: iterator __before = __pos; 25082: if (__pos._M_node == _M_leftmost()) 25082: return _Res(_M_leftmost(), _M_leftmost()); 25082: else if (!_M_impl._M_key_compare(__k, _S_key((--__before)._M_node))) 25082: { 25082: if (_S_right(__before._M_node) == 0) 25082: return _Res(0, __before._M_node); 25082: else 25082: return _Res(__pos._M_node, __pos._M_node); 25082: } 25082: else 25082: return _M_get_insert_equal_pos(__k); 25082: } 25082: else 25082: { 25082: 25082: iterator __after = __pos; 25082: if (__pos._M_node == _M_rightmost()) 25082: return _Res(0, _M_rightmost()); 25082: else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node), __k)) 25082: { 25082: if (_S_right(__pos._M_node) == 0) 25082: return _Res(0, __pos._M_node); 25082: else 25082: return _Res(__after._M_node, __after._M_node); 25082: } 25082: else 25082: return _Res(0, 0); 25082: } 25082: } 25082: 25082: template 25082: 25082: template 25082: 25082: 25082: 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_insert_equal_(const_iterator __position, 25082: 25082: _Arg&& __v, 25082: 25082: 25082: 25082: _NodeGen& __node_gen) 25082: { 25082: pair<_Base_ptr, _Base_ptr> __res 25082: = _M_get_insert_hint_equal_pos(__position, _KeyOfValue()(__v)); 25082: 25082: if (__res.second) 25082: return _M_insert_(__res.first, __res.second, 25082: std::forward<_Arg>(__v), 25082: __node_gen); 25082: 25082: return _M_insert_equal_lower(std::forward<_Arg>(__v)); 25082: } 25082: 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_insert_node(_Base_ptr __x, _Base_ptr __p, _Link_type __z) 25082: { 25082: bool __insert_left = (__x != 0 || __p == _M_end() 25082: || _M_impl._M_key_compare(_S_key(__z), 25082: _S_key(__p))); 25082: 25082: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, 25082: this->_M_impl._M_header); 25082: ++_M_impl._M_node_count; 25082: return iterator(__z); 25082: } 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_insert_lower_node(_Base_ptr __p, _Link_type __z) 25082: { 25082: bool __insert_left = (__p == _M_end() 25082: || !_M_impl._M_key_compare(_S_key(__p), 25082: _S_key(__z))); 25082: 25082: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, 25082: this->_M_impl._M_header); 25082: ++_M_impl._M_node_count; 25082: return iterator(__z); 25082: } 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_insert_equal_lower_node(_Link_type __z) 25082: { 25082: _Link_type __x = _M_begin(); 25082: _Base_ptr __y = _M_end(); 25082: while (__x != 0) 25082: { 25082: __y = __x; 25082: __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ? 25082: _S_left(__x) : _S_right(__x); 25082: } 25082: return _M_insert_lower_node(__y, __z); 25082: } 25082: 25082: template 25082: template 25082: pair::iterator, bool> 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_emplace_unique(_Args&&... __args) 25082: { 25082: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); 25082: 25082: try 25082: { 25082: typedef pair _Res; 25082: auto __res = _M_get_insert_unique_pos(_S_key(__z)); 25082: if (__res.second) 25082: return _Res(_M_insert_node(__res.first, __res.second, __z), true); 25082: 25082: _M_drop_node(__z); 25082: return _Res(iterator(__res.first), false); 25082: } 25082: catch(...) 25082: { 25082: _M_drop_node(__z); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_emplace_equal(_Args&&... __args) 25082: { 25082: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); 25082: 25082: try 25082: { 25082: auto __res = _M_get_insert_equal_pos(_S_key(__z)); 25082: return _M_insert_node(__res.first, __res.second, __z); 25082: } 25082: catch(...) 25082: { 25082: _M_drop_node(__z); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args) 25082: { 25082: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); 25082: 25082: try 25082: { 25082: auto __res = _M_get_insert_hint_unique_pos(__pos, _S_key(__z)); 25082: 25082: if (__res.second) 25082: return _M_insert_node(__res.first, __res.second, __z); 25082: 25082: _M_drop_node(__z); 25082: return iterator(__res.first); 25082: } 25082: catch(...) 25082: { 25082: _M_drop_node(__z); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args) 25082: { 25082: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...); 25082: 25082: try 25082: { 25082: auto __res = _M_get_insert_hint_equal_pos(__pos, _S_key(__z)); 25082: 25082: if (__res.second) 25082: return _M_insert_node(__res.first, __res.second, __z); 25082: 25082: return _M_insert_equal_lower_node(__z); 25082: } 25082: catch(...) 25082: { 25082: _M_drop_node(__z); 25082: throw; 25082: } 25082: } 25082: 25082: 25082: template 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: 25082: _M_insert_unique(_II __first, _II __last) 25082: { 25082: _Alloc_node __an(*this); 25082: for (; __first != __last; ++__first) 25082: _M_insert_unique_(end(), *__first, __an); 25082: } 25082: 25082: template 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: 25082: _M_insert_equal(_II __first, _II __last) 25082: { 25082: _Alloc_node __an(*this); 25082: for (; __first != __last; ++__first) 25082: _M_insert_equal_(end(), *__first, __an); 25082: } 25082: 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_erase_aux(const_iterator __position) 25082: { 25082: _Link_type __y = 25082: static_cast<_Link_type>(_Rb_tree_rebalance_for_erase 25082: (const_cast<_Base_ptr>(__position._M_node), 25082: this->_M_impl._M_header)); 25082: _M_drop_node(__y); 25082: --_M_impl._M_node_count; 25082: } 25082: 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: _M_erase_aux(const_iterator __first, const_iterator __last) 25082: { 25082: if (__first == begin() && __last == end()) 25082: clear(); 25082: else 25082: while (__first != __last) 25082: _M_erase_aux(__first++); 25082: } 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: erase(const _Key& __x) 25082: { 25082: pair __p = equal_range(__x); 25082: const size_type __old_size = size(); 25082: _M_erase_aux(__p.first, __p.second); 25082: return __old_size - size(); 25082: } 25082: 25082: template 25082: void 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: erase(const _Key* __first, const _Key* __last) 25082: { 25082: while (__first != __last) 25082: erase(*__first++); 25082: } 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: find(const _Key& __k) 25082: { 25082: iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); 25082: return (__j == end() 25082: || _M_impl._M_key_compare(__k, 25082: _S_key(__j._M_node))) ? end() : __j; 25082: } 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, 25082: _Compare, _Alloc>::const_iterator 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: find(const _Key& __k) const 25082: { 25082: const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); 25082: return (__j == end() 25082: || _M_impl._M_key_compare(__k, 25082: _S_key(__j._M_node))) ? end() : __j; 25082: } 25082: 25082: template 25082: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type 25082: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 25082: count(const _Key& __k) const 25082: { 25082: pair __p = equal_range(__k); 25082: const size_type __n = std::distance(__p.first, __p.second); 25082: return __n; 25082: } 25082: 25082: __attribute__ ((__pure__)) unsigned int 25082: _Rb_tree_black_count(const _Rb_tree_node_base* __node, 25082: const _Rb_tree_node_base* __root) throw (); 25082: 25082: template 25082: bool 25082: _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const 25082: { 25082: if (_M_impl._M_node_count == 0 || begin() == end()) 25082: return _M_impl._M_node_count == 0 && begin() == end() 25082: && this->_M_impl._M_header._M_left == _M_end() 25082: && this->_M_impl._M_header._M_right == _M_end(); 25082: 25082: unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root()); 25082: for (const_iterator __it = begin(); __it != end(); ++__it) 25082: { 25082: _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node); 25082: _Const_Link_type __L = _S_left(__x); 25082: _Const_Link_type __R = _S_right(__x); 25082: 25082: if (__x->_M_color == _S_red) 25082: if ((__L && __L->_M_color == _S_red) 25082: || (__R && __R->_M_color == _S_red)) 25082: return false; 25082: 25082: if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L))) 25082: return false; 25082: if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x))) 25082: return false; 25082: 25082: if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len) 25082: return false; 25082: } 25082: 25082: if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root())) 25082: return false; 25082: if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root())) 25082: return false; 25082: return true; 25082: } 25082: 25082: 25082: 25082: template 25082: struct _Rb_tree_merge_helper<_Rb_tree<_Key, _Val, _Sel, _Cmp1, _Alloc>, 25082: _Cmp2> 25082: { 25082: private: 25082: friend class _Rb_tree<_Key, _Val, _Sel, _Cmp1, _Alloc>; 25082: 25082: static auto& 25082: _S_get_impl(_Rb_tree<_Key, _Val, _Sel, _Cmp2, _Alloc>& __tree) 25082: { return __tree._M_impl; } 25082: }; 25082: 25082: 25082: 25082: } 25082: # 61 "/usr/include/c++/8/set" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_set.h" 1 3 25082: # 64 "/usr/include/c++/8/bits/stl_set.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: class multiset; 25082: # 92 "/usr/include/c++/8/bits/stl_set.h" 3 25082: template, 25082: typename _Alloc = std::allocator<_Key> > 25082: class set 25082: { 25082: # 108 "/usr/include/c++/8/bits/stl_set.h" 3 25082: static_assert(is_same::type, _Key>::value, 25082: "std::set must have a non-const, non-volatile value_type"); 25082: 25082: static_assert(is_same::value, 25082: "std::set must have the same value_type as its allocator"); 25082: 25082: 25082: 25082: public: 25082: 25082: 25082: 25082: typedef _Key key_type; 25082: typedef _Key value_type; 25082: typedef _Compare key_compare; 25082: typedef _Compare value_compare; 25082: typedef _Alloc allocator_type; 25082: 25082: 25082: private: 25082: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 25082: rebind<_Key>::other _Key_alloc_type; 25082: 25082: typedef _Rb_tree, 25082: key_compare, _Key_alloc_type> _Rep_type; 25082: _Rep_type _M_t; 25082: 25082: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; 25082: 25082: public: 25082: 25082: 25082: typedef typename _Alloc_traits::pointer pointer; 25082: typedef typename _Alloc_traits::const_pointer const_pointer; 25082: typedef typename _Alloc_traits::reference reference; 25082: typedef typename _Alloc_traits::const_reference const_reference; 25082: 25082: 25082: 25082: typedef typename _Rep_type::const_iterator iterator; 25082: typedef typename _Rep_type::const_iterator const_iterator; 25082: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; 25082: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 25082: typedef typename _Rep_type::size_type size_type; 25082: typedef typename _Rep_type::difference_type difference_type; 25082: 25082: 25082: 25082: using node_type = typename _Rep_type::node_type; 25082: using insert_return_type = typename _Rep_type::insert_return_type; 25082: # 167 "/usr/include/c++/8/bits/stl_set.h" 3 25082: set() = default; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: set(const _Compare& __comp, 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Key_alloc_type(__a)) { } 25082: # 190 "/usr/include/c++/8/bits/stl_set.h" 3 25082: template 25082: set(_InputIterator __first, _InputIterator __last) 25082: : _M_t() 25082: { _M_t._M_insert_unique(__first, __last); } 25082: # 207 "/usr/include/c++/8/bits/stl_set.h" 3 25082: template 25082: set(_InputIterator __first, _InputIterator __last, 25082: const _Compare& __comp, 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Key_alloc_type(__a)) 25082: { _M_t._M_insert_unique(__first, __last); } 25082: # 223 "/usr/include/c++/8/bits/stl_set.h" 3 25082: set(const set&) = default; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: set(set&&) = default; 25082: # 243 "/usr/include/c++/8/bits/stl_set.h" 3 25082: set(initializer_list __l, 25082: const _Compare& __comp = _Compare(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Key_alloc_type(__a)) 25082: { _M_t._M_insert_unique(__l.begin(), __l.end()); } 25082: 25082: 25082: explicit 25082: set(const allocator_type& __a) 25082: : _M_t(_Compare(), _Key_alloc_type(__a)) { } 25082: 25082: 25082: set(const set& __x, const allocator_type& __a) 25082: : _M_t(__x._M_t, _Key_alloc_type(__a)) { } 25082: 25082: 25082: set(set&& __x, const allocator_type& __a) 25082: noexcept(is_nothrow_copy_constructible<_Compare>::value 25082: && _Alloc_traits::_S_always_equal()) 25082: : _M_t(std::move(__x._M_t), _Key_alloc_type(__a)) { } 25082: 25082: 25082: set(initializer_list __l, const allocator_type& __a) 25082: : _M_t(_Compare(), _Key_alloc_type(__a)) 25082: { _M_t._M_insert_unique(__l.begin(), __l.end()); } 25082: 25082: 25082: template 25082: set(_InputIterator __first, _InputIterator __last, 25082: const allocator_type& __a) 25082: : _M_t(_Compare(), _Key_alloc_type(__a)) 25082: { _M_t._M_insert_unique(__first, __last); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: ~set() = default; 25082: # 297 "/usr/include/c++/8/bits/stl_set.h" 3 25082: set& 25082: operator=(const set&) = default; 25082: 25082: 25082: set& 25082: operator=(set&&) = default; 25082: # 315 "/usr/include/c++/8/bits/stl_set.h" 3 25082: set& 25082: operator=(initializer_list __l) 25082: { 25082: _M_t._M_assign_unique(__l.begin(), __l.end()); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: key_compare 25082: key_comp() const 25082: { return _M_t.key_comp(); } 25082: 25082: value_compare 25082: value_comp() const 25082: { return _M_t.key_comp(); } 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return allocator_type(_M_t.get_allocator()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: begin() const noexcept 25082: { return _M_t.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() const noexcept 25082: { return _M_t.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rbegin() const noexcept 25082: { return _M_t.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rend() const noexcept 25082: { return _M_t.rend(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: cbegin() const noexcept 25082: { return _M_t.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: cend() const noexcept 25082: { return _M_t.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: crbegin() const noexcept 25082: { return _M_t.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: crend() const noexcept 25082: { return _M_t.rend(); } 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return _M_t.empty(); } 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_t.size(); } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _M_t.max_size(); } 25082: # 440 "/usr/include/c++/8/bits/stl_set.h" 3 25082: void 25082: swap(set& __x) 25082: noexcept(__is_nothrow_swappable<_Compare>::value) 25082: { _M_t.swap(__x._M_t); } 25082: # 460 "/usr/include/c++/8/bits/stl_set.h" 3 25082: template 25082: std::pair 25082: emplace(_Args&&... __args) 25082: { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } 25082: # 486 "/usr/include/c++/8/bits/stl_set.h" 3 25082: template 25082: iterator 25082: emplace_hint(const_iterator __pos, _Args&&... __args) 25082: { 25082: return _M_t._M_emplace_hint_unique(__pos, 25082: std::forward<_Args>(__args)...); 25082: } 25082: # 508 "/usr/include/c++/8/bits/stl_set.h" 3 25082: std::pair 25082: insert(const value_type& __x) 25082: { 25082: std::pair __p = 25082: _M_t._M_insert_unique(__x); 25082: return std::pair(__p.first, __p.second); 25082: } 25082: 25082: 25082: std::pair 25082: insert(value_type&& __x) 25082: { 25082: std::pair __p = 25082: _M_t._M_insert_unique(std::move(__x)); 25082: return std::pair(__p.first, __p.second); 25082: } 25082: # 545 "/usr/include/c++/8/bits/stl_set.h" 3 25082: iterator 25082: insert(const_iterator __position, const value_type& __x) 25082: { return _M_t._M_insert_unique_(__position, __x); } 25082: 25082: 25082: iterator 25082: insert(const_iterator __position, value_type&& __x) 25082: { return _M_t._M_insert_unique_(__position, std::move(__x)); } 25082: # 564 "/usr/include/c++/8/bits/stl_set.h" 3 25082: template 25082: void 25082: insert(_InputIterator __first, _InputIterator __last) 25082: { _M_t._M_insert_unique(__first, __last); } 25082: # 577 "/usr/include/c++/8/bits/stl_set.h" 3 25082: void 25082: insert(initializer_list __l) 25082: { this->insert(__l.begin(), __l.end()); } 25082: 25082: 25082: 25082: 25082: node_type 25082: extract(const_iterator __pos) 25082: { 25082: ; 25082: return _M_t.extract(__pos); 25082: } 25082: 25082: 25082: node_type 25082: extract(const key_type& __x) 25082: { return _M_t.extract(__x); } 25082: 25082: 25082: insert_return_type 25082: insert(node_type&& __nh) 25082: { return _M_t._M_reinsert_node_unique(std::move(__nh)); } 25082: 25082: 25082: iterator 25082: insert(const_iterator __hint, node_type&& __nh) 25082: { return _M_t._M_reinsert_node_hint_unique(__hint, std::move(__nh)); } 25082: 25082: template 25082: friend class std::_Rb_tree_merge_helper; 25082: 25082: template 25082: void 25082: merge(set<_Key, _Compare1, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Rb_tree_merge_helper; 25082: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(set<_Key, _Compare1, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: template 25082: void 25082: merge(multiset<_Key, _Compare1, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Rb_tree_merge_helper; 25082: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(multiset<_Key, _Compare1, _Alloc>&& __source) 25082: { merge(__source); } 25082: # 652 "/usr/include/c++/8/bits/stl_set.h" 3 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iterator 25082: erase(const_iterator __position) 25082: { return _M_t.erase(__position); } 25082: # 683 "/usr/include/c++/8/bits/stl_set.h" 3 25082: size_type 25082: erase(const key_type& __x) 25082: { return _M_t.erase(__x); } 25082: # 704 "/usr/include/c++/8/bits/stl_set.h" 3 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iterator 25082: erase(const_iterator __first, const_iterator __last) 25082: { return _M_t.erase(__first, __last); } 25082: # 732 "/usr/include/c++/8/bits/stl_set.h" 3 25082: void 25082: clear() noexcept 25082: { _M_t.clear(); } 25082: # 747 "/usr/include/c++/8/bits/stl_set.h" 3 25082: size_type 25082: count(const key_type& __x) const 25082: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } 25082: 25082: 25082: template 25082: auto 25082: count(const _Kt& __x) const 25082: -> decltype(_M_t._M_count_tr(__x)) 25082: { return _M_t._M_count_tr(__x); } 25082: # 774 "/usr/include/c++/8/bits/stl_set.h" 3 25082: iterator 25082: find(const key_type& __x) 25082: { return _M_t.find(__x); } 25082: 25082: const_iterator 25082: find(const key_type& __x) const 25082: { return _M_t.find(__x); } 25082: 25082: 25082: template 25082: auto 25082: find(const _Kt& __x) 25082: -> decltype(iterator{_M_t._M_find_tr(__x)}) 25082: { return iterator{_M_t._M_find_tr(__x)}; } 25082: 25082: template 25082: auto 25082: find(const _Kt& __x) const 25082: -> decltype(const_iterator{_M_t._M_find_tr(__x)}) 25082: { return const_iterator{_M_t._M_find_tr(__x)}; } 25082: # 809 "/usr/include/c++/8/bits/stl_set.h" 3 25082: iterator 25082: lower_bound(const key_type& __x) 25082: { return _M_t.lower_bound(__x); } 25082: 25082: const_iterator 25082: lower_bound(const key_type& __x) const 25082: { return _M_t.lower_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: lower_bound(const _Kt& __x) 25082: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) 25082: { return iterator(_M_t._M_lower_bound_tr(__x)); } 25082: 25082: template 25082: auto 25082: lower_bound(const _Kt& __x) const 25082: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) 25082: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } 25082: # 839 "/usr/include/c++/8/bits/stl_set.h" 3 25082: iterator 25082: upper_bound(const key_type& __x) 25082: { return _M_t.upper_bound(__x); } 25082: 25082: const_iterator 25082: upper_bound(const key_type& __x) const 25082: { return _M_t.upper_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: upper_bound(const _Kt& __x) 25082: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 25082: { return iterator(_M_t._M_upper_bound_tr(__x)); } 25082: 25082: template 25082: auto 25082: upper_bound(const _Kt& __x) const 25082: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 25082: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } 25082: # 878 "/usr/include/c++/8/bits/stl_set.h" 3 25082: std::pair 25082: equal_range(const key_type& __x) 25082: { return _M_t.equal_range(__x); } 25082: 25082: std::pair 25082: equal_range(const key_type& __x) const 25082: { return _M_t.equal_range(__x); } 25082: 25082: 25082: template 25082: auto 25082: equal_range(const _Kt& __x) 25082: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 25082: { return pair(_M_t._M_equal_range_tr(__x)); } 25082: 25082: template 25082: auto 25082: equal_range(const _Kt& __x) const 25082: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 25082: { return pair(_M_t._M_equal_range_tr(__x)); } 25082: 25082: 25082: 25082: template 25082: friend bool 25082: operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); 25082: 25082: template 25082: friend bool 25082: operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); 25082: }; 25082: 25082: 25082: 25082: template::value_type>, 25082: typename _Allocator = 25082: allocator::value_type>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: set(_InputIterator, _InputIterator, 25082: _Compare = _Compare(), _Allocator = _Allocator()) 25082: -> set::value_type, 25082: _Compare, _Allocator>; 25082: 25082: template, 25082: typename _Allocator = allocator<_Key>, 25082: typename = _RequireAllocator<_Allocator>> 25082: set(initializer_list<_Key>, 25082: _Compare = _Compare(), _Allocator = _Allocator()) 25082: -> set<_Key, _Compare, _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: set(_InputIterator, _InputIterator, _Allocator) 25082: -> set::value_type, 25082: less::value_type>, 25082: _Allocator>; 25082: 25082: template> 25082: set(initializer_list<_Key>, _Allocator) 25082: -> set<_Key, less<_Key>, _Allocator>; 25082: # 956 "/usr/include/c++/8/bits/stl_set.h" 3 25082: template 25082: inline bool 25082: operator==(const set<_Key, _Compare, _Alloc>& __x, 25082: const set<_Key, _Compare, _Alloc>& __y) 25082: { return __x._M_t == __y._M_t; } 25082: # 973 "/usr/include/c++/8/bits/stl_set.h" 3 25082: template 25082: inline bool 25082: operator<(const set<_Key, _Compare, _Alloc>& __x, 25082: const set<_Key, _Compare, _Alloc>& __y) 25082: { return __x._M_t < __y._M_t; } 25082: 25082: 25082: template 25082: inline bool 25082: operator!=(const set<_Key, _Compare, _Alloc>& __x, 25082: const set<_Key, _Compare, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>(const set<_Key, _Compare, _Alloc>& __x, 25082: const set<_Key, _Compare, _Alloc>& __y) 25082: { return __y < __x; } 25082: 25082: 25082: template 25082: inline bool 25082: operator<=(const set<_Key, _Compare, _Alloc>& __x, 25082: const set<_Key, _Compare, _Alloc>& __y) 25082: { return !(__y < __x); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>=(const set<_Key, _Compare, _Alloc>& __x, 25082: const set<_Key, _Compare, _Alloc>& __y) 25082: { return !(__x < __y); } 25082: 25082: 25082: template 25082: inline void 25082: swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct 25082: _Rb_tree_merge_helper, _Cmp2> 25082: { 25082: private: 25082: friend class std::set<_Val, _Cmp1, _Alloc>; 25082: 25082: static auto& 25082: _S_get_tree(std::set<_Val, _Cmp2, _Alloc>& __set) 25082: { return __set._M_t; } 25082: 25082: static auto& 25082: _S_get_tree(std::multiset<_Val, _Cmp2, _Alloc>& __set) 25082: { return __set._M_t; } 25082: }; 25082: 25082: 25082: 25082: } 25082: # 62 "/usr/include/c++/8/set" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_multiset.h" 1 3 25082: # 64 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: class set; 25082: # 94 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: template , 25082: typename _Alloc = std::allocator<_Key> > 25082: class multiset 25082: { 25082: # 110 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: static_assert(is_same::type, _Key>::value, 25082: "std::multiset must have a non-const, non-volatile value_type"); 25082: 25082: static_assert(is_same::value, 25082: "std::multiset must have the same value_type as its allocator"); 25082: 25082: 25082: 25082: public: 25082: 25082: typedef _Key key_type; 25082: typedef _Key value_type; 25082: typedef _Compare key_compare; 25082: typedef _Compare value_compare; 25082: typedef _Alloc allocator_type; 25082: 25082: private: 25082: 25082: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 25082: rebind<_Key>::other _Key_alloc_type; 25082: 25082: typedef _Rb_tree, 25082: key_compare, _Key_alloc_type> _Rep_type; 25082: 25082: _Rep_type _M_t; 25082: 25082: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; 25082: 25082: public: 25082: typedef typename _Alloc_traits::pointer pointer; 25082: typedef typename _Alloc_traits::const_pointer const_pointer; 25082: typedef typename _Alloc_traits::reference reference; 25082: typedef typename _Alloc_traits::const_reference const_reference; 25082: 25082: 25082: 25082: typedef typename _Rep_type::const_iterator iterator; 25082: typedef typename _Rep_type::const_iterator const_iterator; 25082: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; 25082: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 25082: typedef typename _Rep_type::size_type size_type; 25082: typedef typename _Rep_type::difference_type difference_type; 25082: 25082: 25082: using node_type = typename _Rep_type::node_type; 25082: # 164 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: multiset() = default; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: multiset(const _Compare& __comp, 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Key_alloc_type(__a)) { } 25082: # 186 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: template 25082: multiset(_InputIterator __first, _InputIterator __last) 25082: : _M_t() 25082: { _M_t._M_insert_equal(__first, __last); } 25082: # 202 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: template 25082: multiset(_InputIterator __first, _InputIterator __last, 25082: const _Compare& __comp, 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Key_alloc_type(__a)) 25082: { _M_t._M_insert_equal(__first, __last); } 25082: # 218 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: multiset(const multiset&) = default; 25082: # 227 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: multiset(multiset&&) = default; 25082: # 239 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: multiset(initializer_list __l, 25082: const _Compare& __comp = _Compare(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Key_alloc_type(__a)) 25082: { _M_t._M_insert_equal(__l.begin(), __l.end()); } 25082: 25082: 25082: explicit 25082: multiset(const allocator_type& __a) 25082: : _M_t(_Compare(), _Key_alloc_type(__a)) { } 25082: 25082: 25082: multiset(const multiset& __m, const allocator_type& __a) 25082: : _M_t(__m._M_t, _Key_alloc_type(__a)) { } 25082: 25082: 25082: multiset(multiset&& __m, const allocator_type& __a) 25082: noexcept(is_nothrow_copy_constructible<_Compare>::value 25082: && _Alloc_traits::_S_always_equal()) 25082: : _M_t(std::move(__m._M_t), _Key_alloc_type(__a)) { } 25082: 25082: 25082: multiset(initializer_list __l, const allocator_type& __a) 25082: : _M_t(_Compare(), _Key_alloc_type(__a)) 25082: { _M_t._M_insert_equal(__l.begin(), __l.end()); } 25082: 25082: 25082: template 25082: multiset(_InputIterator __first, _InputIterator __last, 25082: const allocator_type& __a) 25082: : _M_t(_Compare(), _Key_alloc_type(__a)) 25082: { _M_t._M_insert_equal(__first, __last); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: ~multiset() = default; 25082: # 293 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: multiset& 25082: operator=(const multiset&) = default; 25082: 25082: 25082: multiset& 25082: operator=(multiset&&) = default; 25082: # 311 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: multiset& 25082: operator=(initializer_list __l) 25082: { 25082: _M_t._M_assign_equal(__l.begin(), __l.end()); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: key_compare 25082: key_comp() const 25082: { return _M_t.key_comp(); } 25082: 25082: value_compare 25082: value_comp() const 25082: { return _M_t.key_comp(); } 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return allocator_type(_M_t.get_allocator()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: begin() const noexcept 25082: { return _M_t.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() const noexcept 25082: { return _M_t.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rbegin() const noexcept 25082: { return _M_t.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rend() const noexcept 25082: { return _M_t.rend(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: cbegin() const noexcept 25082: { return _M_t.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: cend() const noexcept 25082: { return _M_t.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: crbegin() const noexcept 25082: { return _M_t.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: crend() const noexcept 25082: { return _M_t.rend(); } 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return _M_t.empty(); } 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_t.size(); } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _M_t.max_size(); } 25082: # 436 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: void 25082: swap(multiset& __x) 25082: noexcept(__is_nothrow_swappable<_Compare>::value) 25082: { _M_t.swap(__x._M_t); } 25082: # 455 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: template 25082: iterator 25082: emplace(_Args&&... __args) 25082: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } 25082: # 481 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: template 25082: iterator 25082: emplace_hint(const_iterator __pos, _Args&&... __args) 25082: { 25082: return _M_t._M_emplace_hint_equal(__pos, 25082: std::forward<_Args>(__args)...); 25082: } 25082: # 501 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: iterator 25082: insert(const value_type& __x) 25082: { return _M_t._M_insert_equal(__x); } 25082: 25082: 25082: iterator 25082: insert(value_type&& __x) 25082: { return _M_t._M_insert_equal(std::move(__x)); } 25082: # 531 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: iterator 25082: insert(const_iterator __position, const value_type& __x) 25082: { return _M_t._M_insert_equal_(__position, __x); } 25082: 25082: 25082: iterator 25082: insert(const_iterator __position, value_type&& __x) 25082: { return _M_t._M_insert_equal_(__position, std::move(__x)); } 25082: # 549 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: template 25082: void 25082: insert(_InputIterator __first, _InputIterator __last) 25082: { _M_t._M_insert_equal(__first, __last); } 25082: # 562 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: void 25082: insert(initializer_list __l) 25082: { this->insert(__l.begin(), __l.end()); } 25082: 25082: 25082: 25082: 25082: node_type 25082: extract(const_iterator __pos) 25082: { 25082: ; 25082: return _M_t.extract(__pos); 25082: } 25082: 25082: 25082: node_type 25082: extract(const key_type& __x) 25082: { return _M_t.extract(__x); } 25082: 25082: 25082: iterator 25082: insert(node_type&& __nh) 25082: { return _M_t._M_reinsert_node_equal(std::move(__nh)); } 25082: 25082: 25082: iterator 25082: insert(const_iterator __hint, node_type&& __nh) 25082: { return _M_t._M_reinsert_node_hint_equal(__hint, std::move(__nh)); } 25082: 25082: template 25082: friend class std::_Rb_tree_merge_helper; 25082: 25082: template 25082: void 25082: merge(multiset<_Key, _Compare1, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Rb_tree_merge_helper; 25082: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(multiset<_Key, _Compare1, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: template 25082: void 25082: merge(set<_Key, _Compare1, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Rb_tree_merge_helper; 25082: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(set<_Key, _Compare1, _Alloc>&& __source) 25082: { merge(__source); } 25082: # 637 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iterator 25082: erase(const_iterator __position) 25082: { return _M_t.erase(__position); } 25082: # 668 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: size_type 25082: erase(const key_type& __x) 25082: { return _M_t.erase(__x); } 25082: # 689 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iterator 25082: erase(const_iterator __first, const_iterator __last) 25082: { return _M_t.erase(__first, __last); } 25082: # 717 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: void 25082: clear() noexcept 25082: { _M_t.clear(); } 25082: # 729 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: size_type 25082: count(const key_type& __x) const 25082: { return _M_t.count(__x); } 25082: 25082: 25082: template 25082: auto 25082: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) 25082: { return _M_t._M_count_tr(__x); } 25082: # 755 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: iterator 25082: find(const key_type& __x) 25082: { return _M_t.find(__x); } 25082: 25082: const_iterator 25082: find(const key_type& __x) const 25082: { return _M_t.find(__x); } 25082: 25082: 25082: template 25082: auto 25082: find(const _Kt& __x) 25082: -> decltype(iterator{_M_t._M_find_tr(__x)}) 25082: { return iterator{_M_t._M_find_tr(__x)}; } 25082: 25082: template 25082: auto 25082: find(const _Kt& __x) const 25082: -> decltype(const_iterator{_M_t._M_find_tr(__x)}) 25082: { return const_iterator{_M_t._M_find_tr(__x)}; } 25082: # 790 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: iterator 25082: lower_bound(const key_type& __x) 25082: { return _M_t.lower_bound(__x); } 25082: 25082: const_iterator 25082: lower_bound(const key_type& __x) const 25082: { return _M_t.lower_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: lower_bound(const _Kt& __x) 25082: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) 25082: { return iterator(_M_t._M_lower_bound_tr(__x)); } 25082: 25082: template 25082: auto 25082: lower_bound(const _Kt& __x) const 25082: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) 25082: { return iterator(_M_t._M_lower_bound_tr(__x)); } 25082: # 820 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: iterator 25082: upper_bound(const key_type& __x) 25082: { return _M_t.upper_bound(__x); } 25082: 25082: const_iterator 25082: upper_bound(const key_type& __x) const 25082: { return _M_t.upper_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: upper_bound(const _Kt& __x) 25082: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 25082: { return iterator(_M_t._M_upper_bound_tr(__x)); } 25082: 25082: template 25082: auto 25082: upper_bound(const _Kt& __x) const 25082: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 25082: { return iterator(_M_t._M_upper_bound_tr(__x)); } 25082: # 859 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: std::pair 25082: equal_range(const key_type& __x) 25082: { return _M_t.equal_range(__x); } 25082: 25082: std::pair 25082: equal_range(const key_type& __x) const 25082: { return _M_t.equal_range(__x); } 25082: 25082: 25082: template 25082: auto 25082: equal_range(const _Kt& __x) 25082: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 25082: { return pair(_M_t._M_equal_range_tr(__x)); } 25082: 25082: template 25082: auto 25082: equal_range(const _Kt& __x) const 25082: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 25082: { return pair(_M_t._M_equal_range_tr(__x)); } 25082: 25082: 25082: 25082: template 25082: friend bool 25082: operator==(const multiset<_K1, _C1, _A1>&, 25082: const multiset<_K1, _C1, _A1>&); 25082: 25082: template 25082: friend bool 25082: operator< (const multiset<_K1, _C1, _A1>&, 25082: const multiset<_K1, _C1, _A1>&); 25082: }; 25082: 25082: 25082: 25082: template::value_type>, 25082: typename _Allocator = 25082: allocator::value_type>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: multiset(_InputIterator, _InputIterator, 25082: _Compare = _Compare(), _Allocator = _Allocator()) 25082: -> multiset::value_type, 25082: _Compare, _Allocator>; 25082: 25082: template, 25082: typename _Allocator = allocator<_Key>, 25082: typename = _RequireAllocator<_Allocator>> 25082: multiset(initializer_list<_Key>, 25082: _Compare = _Compare(), _Allocator = _Allocator()) 25082: -> multiset<_Key, _Compare, _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: multiset(_InputIterator, _InputIterator, _Allocator) 25082: -> multiset::value_type, 25082: less::value_type>, 25082: _Allocator>; 25082: 25082: template> 25082: multiset(initializer_list<_Key>, _Allocator) 25082: -> multiset<_Key, less<_Key>, _Allocator>; 25082: # 941 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: template 25082: inline bool 25082: operator==(const multiset<_Key, _Compare, _Alloc>& __x, 25082: const multiset<_Key, _Compare, _Alloc>& __y) 25082: { return __x._M_t == __y._M_t; } 25082: # 958 "/usr/include/c++/8/bits/stl_multiset.h" 3 25082: template 25082: inline bool 25082: operator<(const multiset<_Key, _Compare, _Alloc>& __x, 25082: const multiset<_Key, _Compare, _Alloc>& __y) 25082: { return __x._M_t < __y._M_t; } 25082: 25082: 25082: template 25082: inline bool 25082: operator!=(const multiset<_Key, _Compare, _Alloc>& __x, 25082: const multiset<_Key, _Compare, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>(const multiset<_Key,_Compare,_Alloc>& __x, 25082: const multiset<_Key,_Compare,_Alloc>& __y) 25082: { return __y < __x; } 25082: 25082: 25082: template 25082: inline bool 25082: operator<=(const multiset<_Key, _Compare, _Alloc>& __x, 25082: const multiset<_Key, _Compare, _Alloc>& __y) 25082: { return !(__y < __x); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>=(const multiset<_Key, _Compare, _Alloc>& __x, 25082: const multiset<_Key, _Compare, _Alloc>& __y) 25082: { return !(__x < __y); } 25082: 25082: 25082: template 25082: inline void 25082: swap(multiset<_Key, _Compare, _Alloc>& __x, 25082: multiset<_Key, _Compare, _Alloc>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct 25082: _Rb_tree_merge_helper, 25082: _Cmp2> 25082: { 25082: private: 25082: friend class std::multiset<_Val, _Cmp1, _Alloc>; 25082: 25082: static auto& 25082: _S_get_tree(std::set<_Val, _Cmp2, _Alloc>& __set) 25082: { return __set._M_t; } 25082: 25082: static auto& 25082: _S_get_tree(std::multiset<_Val, _Cmp2, _Alloc>& __set) 25082: { return __set._M_t; } 25082: }; 25082: 25082: 25082: 25082: 25082: } 25082: # 63 "/usr/include/c++/8/set" 2 3 25082: # 6 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Names.h" 2 3 4 25082: # 1 "/usr/include/c++/8/unordered_set" 1 3 4 25082: # 32 "/usr/include/c++/8/unordered_set" 3 4 25082: 25082: # 33 "/usr/include/c++/8/unordered_set" 3 25082: # 46 "/usr/include/c++/8/unordered_set" 3 25082: # 1 "/usr/include/c++/8/bits/hashtable.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/hashtable.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/hashtable.h" 3 25082: 25082: # 1 "/usr/include/c++/8/bits/hashtable_policy.h" 1 3 25082: # 38 "/usr/include/c++/8/bits/hashtable_policy.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: class _Hashtable; 25082: 25082: namespace __detail 25082: { 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hashtable_base; 25082: 25082: 25082: 25082: template 25082: inline typename std::iterator_traits<_Iterator>::difference_type 25082: __distance_fw(_Iterator __first, _Iterator __last, 25082: std::input_iterator_tag) 25082: { return __first != __last ? 1 : 0; } 25082: 25082: template 25082: inline typename std::iterator_traits<_Iterator>::difference_type 25082: __distance_fw(_Iterator __first, _Iterator __last, 25082: std::forward_iterator_tag) 25082: { return std::distance(__first, __last); } 25082: 25082: template 25082: inline typename std::iterator_traits<_Iterator>::difference_type 25082: __distance_fw(_Iterator __first, _Iterator __last) 25082: { return __distance_fw(__first, __last, 25082: std::__iterator_category(__first)); } 25082: 25082: struct _Identity 25082: { 25082: template 25082: _Tp&& 25082: operator()(_Tp&& __x) const 25082: { return std::forward<_Tp>(__x); } 25082: }; 25082: 25082: struct _Select1st 25082: { 25082: template 25082: auto 25082: operator()(_Tp&& __x) const 25082: -> decltype(std::get<0>(std::forward<_Tp>(__x))) 25082: { return std::get<0>(std::forward<_Tp>(__x)); } 25082: }; 25082: 25082: template 25082: struct _Hashtable_alloc; 25082: 25082: 25082: 25082: template 25082: struct _ReuseOrAllocNode 25082: { 25082: private: 25082: using __node_alloc_type = _NodeAlloc; 25082: using __hashtable_alloc = _Hashtable_alloc<__node_alloc_type>; 25082: using __node_alloc_traits = 25082: typename __hashtable_alloc::__node_alloc_traits; 25082: using __node_type = typename __hashtable_alloc::__node_type; 25082: 25082: public: 25082: _ReuseOrAllocNode(__node_type* __nodes, __hashtable_alloc& __h) 25082: : _M_nodes(__nodes), _M_h(__h) { } 25082: _ReuseOrAllocNode(const _ReuseOrAllocNode&) = delete; 25082: 25082: ~_ReuseOrAllocNode() 25082: { _M_h._M_deallocate_nodes(_M_nodes); } 25082: 25082: template 25082: __node_type* 25082: operator()(_Arg&& __arg) const 25082: { 25082: if (_M_nodes) 25082: { 25082: __node_type* __node = _M_nodes; 25082: _M_nodes = _M_nodes->_M_next(); 25082: __node->_M_nxt = nullptr; 25082: auto& __a = _M_h._M_node_allocator(); 25082: __node_alloc_traits::destroy(__a, __node->_M_valptr()); 25082: try 25082: { 25082: __node_alloc_traits::construct(__a, __node->_M_valptr(), 25082: std::forward<_Arg>(__arg)); 25082: } 25082: catch(...) 25082: { 25082: __node->~__node_type(); 25082: __node_alloc_traits::deallocate(__a, __node, 1); 25082: throw; 25082: } 25082: return __node; 25082: } 25082: return _M_h._M_allocate_node(std::forward<_Arg>(__arg)); 25082: } 25082: 25082: private: 25082: mutable __node_type* _M_nodes; 25082: __hashtable_alloc& _M_h; 25082: }; 25082: 25082: 25082: 25082: template 25082: struct _AllocNode 25082: { 25082: private: 25082: using __hashtable_alloc = _Hashtable_alloc<_NodeAlloc>; 25082: using __node_type = typename __hashtable_alloc::__node_type; 25082: 25082: public: 25082: _AllocNode(__hashtable_alloc& __h) 25082: : _M_h(__h) { } 25082: 25082: template 25082: __node_type* 25082: operator()(_Arg&& __arg) const 25082: { return _M_h._M_allocate_node(std::forward<_Arg>(__arg)); } 25082: 25082: private: 25082: __hashtable_alloc& _M_h; 25082: }; 25082: # 199 "/usr/include/c++/8/bits/hashtable_policy.h" 3 25082: template 25082: struct _Hashtable_traits 25082: { 25082: using __hash_cached = __bool_constant<_Cache_hash_code>; 25082: using __constant_iterators = __bool_constant<_Constant_iterators>; 25082: using __unique_keys = __bool_constant<_Unique_keys>; 25082: }; 25082: # 215 "/usr/include/c++/8/bits/hashtable_policy.h" 3 25082: struct _Hash_node_base 25082: { 25082: _Hash_node_base* _M_nxt; 25082: 25082: _Hash_node_base() noexcept : _M_nxt() { } 25082: 25082: _Hash_node_base(_Hash_node_base* __next) noexcept : _M_nxt(__next) { } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hash_node_value_base : _Hash_node_base 25082: { 25082: typedef _Value value_type; 25082: 25082: __gnu_cxx::__aligned_buffer<_Value> _M_storage; 25082: 25082: _Value* 25082: _M_valptr() noexcept 25082: { return _M_storage._M_ptr(); } 25082: 25082: const _Value* 25082: _M_valptr() const noexcept 25082: { return _M_storage._M_ptr(); } 25082: 25082: _Value& 25082: _M_v() noexcept 25082: { return *_M_valptr(); } 25082: 25082: const _Value& 25082: _M_v() const noexcept 25082: { return *_M_valptr(); } 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hash_node; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hash_node<_Value, true> : _Hash_node_value_base<_Value> 25082: { 25082: std::size_t _M_hash_code; 25082: 25082: _Hash_node* 25082: _M_next() const noexcept 25082: { return static_cast<_Hash_node*>(this->_M_nxt); } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hash_node<_Value, false> : _Hash_node_value_base<_Value> 25082: { 25082: _Hash_node* 25082: _M_next() const noexcept 25082: { return static_cast<_Hash_node*>(this->_M_nxt); } 25082: }; 25082: 25082: 25082: template 25082: struct _Node_iterator_base 25082: { 25082: using __node_type = _Hash_node<_Value, _Cache_hash_code>; 25082: 25082: __node_type* _M_cur; 25082: 25082: _Node_iterator_base(__node_type* __p) noexcept 25082: : _M_cur(__p) { } 25082: 25082: void 25082: _M_incr() noexcept 25082: { _M_cur = _M_cur->_M_next(); } 25082: }; 25082: 25082: template 25082: inline bool 25082: operator==(const _Node_iterator_base<_Value, _Cache_hash_code>& __x, 25082: const _Node_iterator_base<_Value, _Cache_hash_code >& __y) 25082: noexcept 25082: { return __x._M_cur == __y._M_cur; } 25082: 25082: template 25082: inline bool 25082: operator!=(const _Node_iterator_base<_Value, _Cache_hash_code>& __x, 25082: const _Node_iterator_base<_Value, _Cache_hash_code>& __y) 25082: noexcept 25082: { return __x._M_cur != __y._M_cur; } 25082: 25082: 25082: template 25082: struct _Node_iterator 25082: : public _Node_iterator_base<_Value, __cache> 25082: { 25082: private: 25082: using __base_type = _Node_iterator_base<_Value, __cache>; 25082: using __node_type = typename __base_type::__node_type; 25082: 25082: public: 25082: typedef _Value value_type; 25082: typedef std::ptrdiff_t difference_type; 25082: typedef std::forward_iterator_tag iterator_category; 25082: 25082: using pointer = typename std::conditional<__constant_iterators, 25082: const _Value*, _Value*>::type; 25082: 25082: using reference = typename std::conditional<__constant_iterators, 25082: const _Value&, _Value&>::type; 25082: 25082: _Node_iterator() noexcept 25082: : __base_type(0) { } 25082: 25082: explicit 25082: _Node_iterator(__node_type* __p) noexcept 25082: : __base_type(__p) { } 25082: 25082: reference 25082: operator*() const noexcept 25082: { return this->_M_cur->_M_v(); } 25082: 25082: pointer 25082: operator->() const noexcept 25082: { return this->_M_cur->_M_valptr(); } 25082: 25082: _Node_iterator& 25082: operator++() noexcept 25082: { 25082: this->_M_incr(); 25082: return *this; 25082: } 25082: 25082: _Node_iterator 25082: operator++(int) noexcept 25082: { 25082: _Node_iterator __tmp(*this); 25082: this->_M_incr(); 25082: return __tmp; 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct _Node_const_iterator 25082: : public _Node_iterator_base<_Value, __cache> 25082: { 25082: private: 25082: using __base_type = _Node_iterator_base<_Value, __cache>; 25082: using __node_type = typename __base_type::__node_type; 25082: 25082: public: 25082: typedef _Value value_type; 25082: typedef std::ptrdiff_t difference_type; 25082: typedef std::forward_iterator_tag iterator_category; 25082: 25082: typedef const _Value* pointer; 25082: typedef const _Value& reference; 25082: 25082: _Node_const_iterator() noexcept 25082: : __base_type(0) { } 25082: 25082: explicit 25082: _Node_const_iterator(__node_type* __p) noexcept 25082: : __base_type(__p) { } 25082: 25082: _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators, 25082: __cache>& __x) noexcept 25082: : __base_type(__x._M_cur) { } 25082: 25082: reference 25082: operator*() const noexcept 25082: { return this->_M_cur->_M_v(); } 25082: 25082: pointer 25082: operator->() const noexcept 25082: { return this->_M_cur->_M_valptr(); } 25082: 25082: _Node_const_iterator& 25082: operator++() noexcept 25082: { 25082: this->_M_incr(); 25082: return *this; 25082: } 25082: 25082: _Node_const_iterator 25082: operator++(int) noexcept 25082: { 25082: _Node_const_iterator __tmp(*this); 25082: this->_M_incr(); 25082: return __tmp; 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct _Mod_range_hashing 25082: { 25082: typedef std::size_t first_argument_type; 25082: typedef std::size_t second_argument_type; 25082: typedef std::size_t result_type; 25082: 25082: result_type 25082: operator()(first_argument_type __num, 25082: second_argument_type __den) const noexcept 25082: { return __num % __den; } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct _Default_ranged_hash { }; 25082: 25082: 25082: 25082: struct _Prime_rehash_policy 25082: { 25082: using __has_load_factor = std::true_type; 25082: 25082: _Prime_rehash_policy(float __z = 1.0) noexcept 25082: : _M_max_load_factor(__z), _M_next_resize(0) { } 25082: 25082: float 25082: max_load_factor() const noexcept 25082: { return _M_max_load_factor; } 25082: 25082: 25082: std::size_t 25082: _M_next_bkt(std::size_t __n) const; 25082: 25082: 25082: std::size_t 25082: _M_bkt_for_elements(std::size_t __n) const 25082: { return __builtin_ceil(__n / (long double)_M_max_load_factor); } 25082: 25082: 25082: 25082: 25082: 25082: std::pair 25082: _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, 25082: std::size_t __n_ins) const; 25082: 25082: typedef std::size_t _State; 25082: 25082: _State 25082: _M_state() const 25082: { return _M_next_resize; } 25082: 25082: void 25082: _M_reset() noexcept 25082: { _M_next_resize = 0; } 25082: 25082: void 25082: _M_reset(_State __state) 25082: { _M_next_resize = __state; } 25082: 25082: static const std::size_t _S_growth_factor = 2; 25082: 25082: float _M_max_load_factor; 25082: mutable std::size_t _M_next_resize; 25082: }; 25082: 25082: 25082: struct _Mask_range_hashing 25082: { 25082: typedef std::size_t first_argument_type; 25082: typedef std::size_t second_argument_type; 25082: typedef std::size_t result_type; 25082: 25082: result_type 25082: operator()(first_argument_type __num, 25082: second_argument_type __den) const noexcept 25082: { return __num & (__den - 1); } 25082: }; 25082: 25082: 25082: constexpr 25082: inline std::size_t 25082: __clp2(std::size_t __n) noexcept 25082: { 25082: 25082: std::uint_fast64_t __x = __n; 25082: 25082: 25082: 25082: 25082: __x = __x - 1; 25082: __x = __x | (__x >> 1); 25082: __x = __x | (__x >> 2); 25082: __x = __x | (__x >> 4); 25082: __x = __x | (__x >> 8); 25082: __x = __x | (__x >>16); 25082: 25082: __x = __x | (__x >>32); 25082: 25082: return __x + 1; 25082: } 25082: 25082: 25082: 25082: struct _Power2_rehash_policy 25082: { 25082: using __has_load_factor = std::true_type; 25082: 25082: _Power2_rehash_policy(float __z = 1.0) noexcept 25082: : _M_max_load_factor(__z), _M_next_resize(0) { } 25082: 25082: float 25082: max_load_factor() const noexcept 25082: { return _M_max_load_factor; } 25082: 25082: 25082: 25082: std::size_t 25082: _M_next_bkt(std::size_t __n) noexcept 25082: { 25082: const auto __max_width = std::min(sizeof(size_t), 8); 25082: const auto __max_bkt = size_t(1) << (__max_width * 8 - 1); 25082: std::size_t __res = __clp2(__n); 25082: 25082: if (__res == __n) 25082: __res <<= 1; 25082: 25082: if (__res == 0) 25082: __res = __max_bkt; 25082: 25082: if (__res == __max_bkt) 25082: 25082: 25082: 25082: _M_next_resize = std::size_t(-1); 25082: else 25082: _M_next_resize 25082: = __builtin_ceil(__res * (long double)_M_max_load_factor); 25082: 25082: return __res; 25082: } 25082: 25082: 25082: std::size_t 25082: _M_bkt_for_elements(std::size_t __n) const noexcept 25082: { return __builtin_ceil(__n / (long double)_M_max_load_factor); } 25082: 25082: 25082: 25082: 25082: 25082: std::pair 25082: _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, 25082: std::size_t __n_ins) noexcept 25082: { 25082: if (__n_elt + __n_ins >= _M_next_resize) 25082: { 25082: long double __min_bkts = (__n_elt + __n_ins) 25082: / (long double)_M_max_load_factor; 25082: if (__min_bkts >= __n_bkt) 25082: return std::make_pair(true, 25082: _M_next_bkt(std::max(__builtin_floor(__min_bkts) + 1, 25082: __n_bkt * _S_growth_factor))); 25082: 25082: _M_next_resize 25082: = __builtin_floor(__n_bkt * (long double)_M_max_load_factor); 25082: return std::make_pair(false, 0); 25082: } 25082: else 25082: return std::make_pair(false, 0); 25082: } 25082: 25082: typedef std::size_t _State; 25082: 25082: _State 25082: _M_state() const noexcept 25082: { return _M_next_resize; } 25082: 25082: void 25082: _M_reset() noexcept 25082: { _M_next_resize = 0; } 25082: 25082: void 25082: _M_reset(_State __state) noexcept 25082: { _M_next_resize = __state; } 25082: 25082: static const std::size_t _S_growth_factor = 2; 25082: 25082: float _M_max_load_factor; 25082: std::size_t _M_next_resize; 25082: }; 25082: # 638 "/usr/include/c++/8/bits/hashtable_policy.h" 3 25082: template 25082: struct _Map_base { }; 25082: 25082: 25082: template 25082: struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, false> 25082: { 25082: using mapped_type = typename std::tuple_element<1, _Pair>::type; 25082: }; 25082: 25082: 25082: template 25082: struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, true> 25082: { 25082: private: 25082: using __hashtable_base = __detail::_Hashtable_base<_Key, _Pair, 25082: _Select1st, 25082: _Equal, _H1, _H2, _Hash, 25082: _Traits>; 25082: 25082: using __hashtable = _Hashtable<_Key, _Pair, _Alloc, 25082: _Select1st, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>; 25082: 25082: using __hash_code = typename __hashtable_base::__hash_code; 25082: using __node_type = typename __hashtable_base::__node_type; 25082: 25082: public: 25082: using key_type = typename __hashtable_base::key_type; 25082: using iterator = typename __hashtable_base::iterator; 25082: using mapped_type = typename std::tuple_element<1, _Pair>::type; 25082: 25082: mapped_type& 25082: operator[](const key_type& __k); 25082: 25082: mapped_type& 25082: operator[](key_type&& __k); 25082: 25082: 25082: 25082: mapped_type& 25082: at(const key_type& __k); 25082: 25082: const mapped_type& 25082: at(const key_type& __k) const; 25082: }; 25082: 25082: template 25082: auto 25082: _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: 25082: operator[](const key_type& __k) 25082: -> mapped_type& 25082: { 25082: __hashtable* __h = static_cast<__hashtable*>(this); 25082: __hash_code __code = __h->_M_hash_code(__k); 25082: std::size_t __n = __h->_M_bucket_index(__k, __code); 25082: __node_type* __p = __h->_M_find_node(__n, __k, __code); 25082: 25082: if (!__p) 25082: { 25082: __p = __h->_M_allocate_node(std::piecewise_construct, 25082: std::tuple(__k), 25082: std::tuple<>()); 25082: return __h->_M_insert_unique_node(__n, __code, __p)->second; 25082: } 25082: 25082: return __p->_M_v().second; 25082: } 25082: 25082: template 25082: auto 25082: _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: 25082: operator[](key_type&& __k) 25082: -> mapped_type& 25082: { 25082: __hashtable* __h = static_cast<__hashtable*>(this); 25082: __hash_code __code = __h->_M_hash_code(__k); 25082: std::size_t __n = __h->_M_bucket_index(__k, __code); 25082: __node_type* __p = __h->_M_find_node(__n, __k, __code); 25082: 25082: if (!__p) 25082: { 25082: __p = __h->_M_allocate_node(std::piecewise_construct, 25082: std::forward_as_tuple(std::move(__k)), 25082: std::tuple<>()); 25082: return __h->_M_insert_unique_node(__n, __code, __p)->second; 25082: } 25082: 25082: return __p->_M_v().second; 25082: } 25082: 25082: template 25082: auto 25082: _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: 25082: at(const key_type& __k) 25082: -> mapped_type& 25082: { 25082: __hashtable* __h = static_cast<__hashtable*>(this); 25082: __hash_code __code = __h->_M_hash_code(__k); 25082: std::size_t __n = __h->_M_bucket_index(__k, __code); 25082: __node_type* __p = __h->_M_find_node(__n, __k, __code); 25082: 25082: if (!__p) 25082: __throw_out_of_range(("_Map_base::at")); 25082: return __p->_M_v().second; 25082: } 25082: 25082: template 25082: auto 25082: _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: 25082: at(const key_type& __k) const 25082: -> const mapped_type& 25082: { 25082: const __hashtable* __h = static_cast(this); 25082: __hash_code __code = __h->_M_hash_code(__k); 25082: std::size_t __n = __h->_M_bucket_index(__k, __code); 25082: __node_type* __p = __h->_M_find_node(__n, __k, __code); 25082: 25082: if (!__p) 25082: __throw_out_of_range(("_Map_base::at")); 25082: return __p->_M_v().second; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Insert_base 25082: { 25082: protected: 25082: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, 25082: _Equal, _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits>; 25082: 25082: using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey, 25082: _Equal, _H1, _H2, _Hash, 25082: _Traits>; 25082: 25082: using value_type = typename __hashtable_base::value_type; 25082: using iterator = typename __hashtable_base::iterator; 25082: using const_iterator = typename __hashtable_base::const_iterator; 25082: using size_type = typename __hashtable_base::size_type; 25082: 25082: using __unique_keys = typename __hashtable_base::__unique_keys; 25082: using __ireturn_type = typename __hashtable_base::__ireturn_type; 25082: using __node_type = _Hash_node<_Value, _Traits::__hash_cached::value>; 25082: using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; 25082: using __node_gen_type = _AllocNode<__node_alloc_type>; 25082: 25082: __hashtable& 25082: _M_conjure_hashtable() 25082: { return *(static_cast<__hashtable*>(this)); } 25082: 25082: template 25082: void 25082: _M_insert_range(_InputIterator __first, _InputIterator __last, 25082: const _NodeGetter&, true_type); 25082: 25082: template 25082: void 25082: _M_insert_range(_InputIterator __first, _InputIterator __last, 25082: const _NodeGetter&, false_type); 25082: 25082: public: 25082: __ireturn_type 25082: insert(const value_type& __v) 25082: { 25082: __hashtable& __h = _M_conjure_hashtable(); 25082: __node_gen_type __node_gen(__h); 25082: return __h._M_insert(__v, __node_gen, __unique_keys()); 25082: } 25082: 25082: iterator 25082: insert(const_iterator __hint, const value_type& __v) 25082: { 25082: __hashtable& __h = _M_conjure_hashtable(); 25082: __node_gen_type __node_gen(__h); 25082: return __h._M_insert(__hint, __v, __node_gen, __unique_keys()); 25082: } 25082: 25082: void 25082: insert(initializer_list __l) 25082: { this->insert(__l.begin(), __l.end()); } 25082: 25082: template 25082: void 25082: insert(_InputIterator __first, _InputIterator __last) 25082: { 25082: __hashtable& __h = _M_conjure_hashtable(); 25082: __node_gen_type __node_gen(__h); 25082: return _M_insert_range(__first, __last, __node_gen, __unique_keys()); 25082: } 25082: }; 25082: 25082: template 25082: template 25082: void 25082: _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits>:: 25082: _M_insert_range(_InputIterator __first, _InputIterator __last, 25082: const _NodeGetter& __node_gen, true_type) 25082: { 25082: size_type __n_elt = __detail::__distance_fw(__first, __last); 25082: if (__n_elt == 0) 25082: return; 25082: 25082: __hashtable& __h = _M_conjure_hashtable(); 25082: for (; __first != __last; ++__first) 25082: { 25082: if (__h._M_insert(*__first, __node_gen, __unique_keys(), 25082: __n_elt).second) 25082: __n_elt = 1; 25082: else if (__n_elt != 1) 25082: --__n_elt; 25082: } 25082: } 25082: 25082: template 25082: template 25082: void 25082: _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits>:: 25082: _M_insert_range(_InputIterator __first, _InputIterator __last, 25082: const _NodeGetter& __node_gen, false_type) 25082: { 25082: using __rehash_type = typename __hashtable::__rehash_type; 25082: using __rehash_state = typename __hashtable::__rehash_state; 25082: using pair_type = std::pair; 25082: 25082: size_type __n_elt = __detail::__distance_fw(__first, __last); 25082: if (__n_elt == 0) 25082: return; 25082: 25082: __hashtable& __h = _M_conjure_hashtable(); 25082: __rehash_type& __rehash = __h._M_rehash_policy; 25082: const __rehash_state& __saved_state = __rehash._M_state(); 25082: pair_type __do_rehash = __rehash._M_need_rehash(__h._M_bucket_count, 25082: __h._M_element_count, 25082: __n_elt); 25082: 25082: if (__do_rehash.first) 25082: __h._M_rehash(__do_rehash.second, __saved_state); 25082: 25082: for (; __first != __last; ++__first) 25082: __h._M_insert(*__first, __node_gen, __unique_keys()); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Insert; 25082: 25082: 25082: template 25082: struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits, true> 25082: : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits> 25082: { 25082: using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, 25082: _Equal, _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits>; 25082: 25082: using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey, 25082: _Equal, _H1, _H2, _Hash, 25082: _Traits>; 25082: 25082: using value_type = typename __base_type::value_type; 25082: using iterator = typename __base_type::iterator; 25082: using const_iterator = typename __base_type::const_iterator; 25082: 25082: using __unique_keys = typename __base_type::__unique_keys; 25082: using __ireturn_type = typename __hashtable_base::__ireturn_type; 25082: using __hashtable = typename __base_type::__hashtable; 25082: using __node_gen_type = typename __base_type::__node_gen_type; 25082: 25082: using __base_type::insert; 25082: 25082: __ireturn_type 25082: insert(value_type&& __v) 25082: { 25082: __hashtable& __h = this->_M_conjure_hashtable(); 25082: __node_gen_type __node_gen(__h); 25082: return __h._M_insert(std::move(__v), __node_gen, __unique_keys()); 25082: } 25082: 25082: iterator 25082: insert(const_iterator __hint, value_type&& __v) 25082: { 25082: __hashtable& __h = this->_M_conjure_hashtable(); 25082: __node_gen_type __node_gen(__h); 25082: return __h._M_insert(__hint, std::move(__v), __node_gen, 25082: __unique_keys()); 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits, false> 25082: : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits> 25082: { 25082: using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, 25082: _Equal, _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits>; 25082: using value_type = typename __base_type::value_type; 25082: using iterator = typename __base_type::iterator; 25082: using const_iterator = typename __base_type::const_iterator; 25082: 25082: using __unique_keys = typename __base_type::__unique_keys; 25082: using __hashtable = typename __base_type::__hashtable; 25082: using __ireturn_type = typename __base_type::__ireturn_type; 25082: 25082: using __base_type::insert; 25082: 25082: template 25082: using __is_cons = std::is_constructible; 25082: 25082: template 25082: using _IFcons = std::enable_if<__is_cons<_Pair>::value>; 25082: 25082: template 25082: using _IFconsp = typename _IFcons<_Pair>::type; 25082: 25082: template> 25082: __ireturn_type 25082: insert(_Pair&& __v) 25082: { 25082: __hashtable& __h = this->_M_conjure_hashtable(); 25082: return __h._M_emplace(__unique_keys(), std::forward<_Pair>(__v)); 25082: } 25082: 25082: template> 25082: iterator 25082: insert(const_iterator __hint, _Pair&& __v) 25082: { 25082: __hashtable& __h = this->_M_conjure_hashtable(); 25082: return __h._M_emplace(__hint, __unique_keys(), 25082: std::forward<_Pair>(__v)); 25082: } 25082: }; 25082: 25082: template 25082: using __has_load_factor = typename _Policy::__has_load_factor; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template> 25082: struct _Rehash_base; 25082: 25082: 25082: template 25082: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, 25082: std::false_type> 25082: { 25082: }; 25082: 25082: 25082: template 25082: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, 25082: std::true_type> 25082: { 25082: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, 25082: _Equal, _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits>; 25082: 25082: float 25082: max_load_factor() const noexcept 25082: { 25082: const __hashtable* __this = static_cast(this); 25082: return __this->__rehash_policy().max_load_factor(); 25082: } 25082: 25082: void 25082: max_load_factor(float __z) 25082: { 25082: __hashtable* __this = static_cast<__hashtable*>(this); 25082: __this->__rehash_policy(_RehashPolicy(__z)); 25082: } 25082: 25082: void 25082: reserve(std::size_t __n) 25082: { 25082: __hashtable* __this = static_cast<__hashtable*>(this); 25082: __this->rehash(__builtin_ceil(__n / max_load_factor())); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hashtable_ebo_helper; 25082: 25082: 25082: template 25082: struct _Hashtable_ebo_helper<_Nm, _Tp, true> 25082: : private _Tp 25082: { 25082: _Hashtable_ebo_helper() = default; 25082: 25082: template 25082: _Hashtable_ebo_helper(_OtherTp&& __tp) 25082: : _Tp(std::forward<_OtherTp>(__tp)) 25082: { } 25082: 25082: static const _Tp& 25082: _S_cget(const _Hashtable_ebo_helper& __eboh) 25082: { return static_cast(__eboh); } 25082: 25082: static _Tp& 25082: _S_get(_Hashtable_ebo_helper& __eboh) 25082: { return static_cast<_Tp&>(__eboh); } 25082: }; 25082: 25082: 25082: template 25082: struct _Hashtable_ebo_helper<_Nm, _Tp, false> 25082: { 25082: _Hashtable_ebo_helper() = default; 25082: 25082: template 25082: _Hashtable_ebo_helper(_OtherTp&& __tp) 25082: : _M_tp(std::forward<_OtherTp>(__tp)) 25082: { } 25082: 25082: static const _Tp& 25082: _S_cget(const _Hashtable_ebo_helper& __eboh) 25082: { return __eboh._M_tp; } 25082: 25082: static _Tp& 25082: _S_get(_Hashtable_ebo_helper& __eboh) 25082: { return __eboh._M_tp; } 25082: 25082: private: 25082: _Tp _M_tp; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Local_iterator_base; 25082: # 1176 "/usr/include/c++/8/bits/hashtable_policy.h" 3 25082: template 25082: struct _Hash_code_base; 25082: 25082: 25082: 25082: template 25082: struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false> 25082: : private _Hashtable_ebo_helper<0, _ExtractKey>, 25082: private _Hashtable_ebo_helper<1, _Hash> 25082: { 25082: private: 25082: using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; 25082: using __ebo_hash = _Hashtable_ebo_helper<1, _Hash>; 25082: 25082: protected: 25082: typedef void* __hash_code; 25082: typedef _Hash_node<_Value, false> __node_type; 25082: 25082: 25082: 25082: _Hash_code_base() = default; 25082: 25082: _Hash_code_base(const _ExtractKey& __ex, const _H1&, const _H2&, 25082: const _Hash& __h) 25082: : __ebo_extract_key(__ex), __ebo_hash(__h) { } 25082: 25082: __hash_code 25082: _M_hash_code(const _Key& __key) const 25082: { return 0; } 25082: 25082: std::size_t 25082: _M_bucket_index(const _Key& __k, __hash_code, std::size_t __n) const 25082: { return _M_ranged_hash()(__k, __n); } 25082: 25082: std::size_t 25082: _M_bucket_index(const __node_type* __p, std::size_t __n) const 25082: noexcept( noexcept(declval()(declval(), 25082: (std::size_t)0)) ) 25082: { return _M_ranged_hash()(_M_extract()(__p->_M_v()), __n); } 25082: 25082: void 25082: _M_store_code(__node_type*, __hash_code) const 25082: { } 25082: 25082: void 25082: _M_copy_code(__node_type*, const __node_type*) const 25082: { } 25082: 25082: void 25082: _M_swap(_Hash_code_base& __x) 25082: { 25082: std::swap(_M_extract(), __x._M_extract()); 25082: std::swap(_M_ranged_hash(), __x._M_ranged_hash()); 25082: } 25082: 25082: const _ExtractKey& 25082: _M_extract() const { return __ebo_extract_key::_S_cget(*this); } 25082: 25082: _ExtractKey& 25082: _M_extract() { return __ebo_extract_key::_S_get(*this); } 25082: 25082: const _Hash& 25082: _M_ranged_hash() const { return __ebo_hash::_S_cget(*this); } 25082: 25082: _Hash& 25082: _M_ranged_hash() { return __ebo_hash::_S_get(*this); } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, true>; 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, 25082: _Default_ranged_hash, false> 25082: : private _Hashtable_ebo_helper<0, _ExtractKey>, 25082: private _Hashtable_ebo_helper<1, _H1>, 25082: private _Hashtable_ebo_helper<2, _H2> 25082: { 25082: private: 25082: using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; 25082: using __ebo_h1 = _Hashtable_ebo_helper<1, _H1>; 25082: using __ebo_h2 = _Hashtable_ebo_helper<2, _H2>; 25082: 25082: 25082: friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, _H1, _H2, 25082: _Default_ranged_hash, false>; 25082: 25082: public: 25082: typedef _H1 hasher; 25082: 25082: hasher 25082: hash_function() const 25082: { return _M_h1(); } 25082: 25082: protected: 25082: typedef std::size_t __hash_code; 25082: typedef _Hash_node<_Value, false> __node_type; 25082: 25082: 25082: 25082: _Hash_code_base() = default; 25082: 25082: _Hash_code_base(const _ExtractKey& __ex, 25082: const _H1& __h1, const _H2& __h2, 25082: const _Default_ranged_hash&) 25082: : __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { } 25082: 25082: __hash_code 25082: _M_hash_code(const _Key& __k) const 25082: { return _M_h1()(__k); } 25082: 25082: std::size_t 25082: _M_bucket_index(const _Key&, __hash_code __c, std::size_t __n) const 25082: { return _M_h2()(__c, __n); } 25082: 25082: std::size_t 25082: _M_bucket_index(const __node_type* __p, std::size_t __n) const 25082: noexcept( noexcept(declval()(declval())) 25082: && noexcept(declval()((__hash_code)0, 25082: (std::size_t)0)) ) 25082: { return _M_h2()(_M_h1()(_M_extract()(__p->_M_v())), __n); } 25082: 25082: void 25082: _M_store_code(__node_type*, __hash_code) const 25082: { } 25082: 25082: void 25082: _M_copy_code(__node_type*, const __node_type*) const 25082: { } 25082: 25082: void 25082: _M_swap(_Hash_code_base& __x) 25082: { 25082: std::swap(_M_extract(), __x._M_extract()); 25082: std::swap(_M_h1(), __x._M_h1()); 25082: std::swap(_M_h2(), __x._M_h2()); 25082: } 25082: 25082: const _ExtractKey& 25082: _M_extract() const { return __ebo_extract_key::_S_cget(*this); } 25082: 25082: _ExtractKey& 25082: _M_extract() { return __ebo_extract_key::_S_get(*this); } 25082: 25082: const _H1& 25082: _M_h1() const { return __ebo_h1::_S_cget(*this); } 25082: 25082: _H1& 25082: _M_h1() { return __ebo_h1::_S_get(*this); } 25082: 25082: const _H2& 25082: _M_h2() const { return __ebo_h2::_S_cget(*this); } 25082: 25082: _H2& 25082: _M_h2() { return __ebo_h2::_S_get(*this); } 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, 25082: _Default_ranged_hash, true> 25082: : private _Hashtable_ebo_helper<0, _ExtractKey>, 25082: private _Hashtable_ebo_helper<1, _H1>, 25082: private _Hashtable_ebo_helper<2, _H2> 25082: { 25082: private: 25082: 25082: friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, _H1, _H2, 25082: _Default_ranged_hash, true>; 25082: 25082: using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; 25082: using __ebo_h1 = _Hashtable_ebo_helper<1, _H1>; 25082: using __ebo_h2 = _Hashtable_ebo_helper<2, _H2>; 25082: 25082: public: 25082: typedef _H1 hasher; 25082: 25082: hasher 25082: hash_function() const 25082: { return _M_h1(); } 25082: 25082: protected: 25082: typedef std::size_t __hash_code; 25082: typedef _Hash_node<_Value, true> __node_type; 25082: 25082: 25082: _Hash_code_base() = default; 25082: _Hash_code_base(const _ExtractKey& __ex, 25082: const _H1& __h1, const _H2& __h2, 25082: const _Default_ranged_hash&) 25082: : __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { } 25082: 25082: __hash_code 25082: _M_hash_code(const _Key& __k) const 25082: { return _M_h1()(__k); } 25082: 25082: std::size_t 25082: _M_bucket_index(const _Key&, __hash_code __c, 25082: std::size_t __n) const 25082: { return _M_h2()(__c, __n); } 25082: 25082: std::size_t 25082: _M_bucket_index(const __node_type* __p, std::size_t __n) const 25082: noexcept( noexcept(declval()((__hash_code)0, 25082: (std::size_t)0)) ) 25082: { return _M_h2()(__p->_M_hash_code, __n); } 25082: 25082: void 25082: _M_store_code(__node_type* __n, __hash_code __c) const 25082: { __n->_M_hash_code = __c; } 25082: 25082: void 25082: _M_copy_code(__node_type* __to, const __node_type* __from) const 25082: { __to->_M_hash_code = __from->_M_hash_code; } 25082: 25082: void 25082: _M_swap(_Hash_code_base& __x) 25082: { 25082: std::swap(_M_extract(), __x._M_extract()); 25082: std::swap(_M_h1(), __x._M_h1()); 25082: std::swap(_M_h2(), __x._M_h2()); 25082: } 25082: 25082: const _ExtractKey& 25082: _M_extract() const { return __ebo_extract_key::_S_cget(*this); } 25082: 25082: _ExtractKey& 25082: _M_extract() { return __ebo_extract_key::_S_get(*this); } 25082: 25082: const _H1& 25082: _M_h1() const { return __ebo_h1::_S_cget(*this); } 25082: 25082: _H1& 25082: _M_h1() { return __ebo_h1::_S_get(*this); } 25082: 25082: const _H2& 25082: _M_h2() const { return __ebo_h2::_S_cget(*this); } 25082: 25082: _H2& 25082: _M_h2() { return __ebo_h2::_S_get(*this); } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Equal_helper; 25082: 25082: 25082: template 25082: struct _Equal_helper<_Key, _Value, _ExtractKey, _Equal, _HashCodeType, true> 25082: { 25082: static bool 25082: _S_equals(const _Equal& __eq, const _ExtractKey& __extract, 25082: const _Key& __k, _HashCodeType __c, _Hash_node<_Value, true>* __n) 25082: { return __c == __n->_M_hash_code && __eq(__k, __extract(__n->_M_v())); } 25082: }; 25082: 25082: 25082: template 25082: struct _Equal_helper<_Key, _Value, _ExtractKey, _Equal, _HashCodeType, false> 25082: { 25082: static bool 25082: _S_equals(const _Equal& __eq, const _ExtractKey& __extract, 25082: const _Key& __k, _HashCodeType, _Hash_node<_Value, false>* __n) 25082: { return __eq(__k, __extract(__n->_M_v())); } 25082: }; 25082: 25082: 25082: 25082: template 25082: struct _Local_iterator_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, true> 25082: : private _Hashtable_ebo_helper<0, _H2> 25082: { 25082: protected: 25082: using __base_type = _Hashtable_ebo_helper<0, _H2>; 25082: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, true>; 25082: 25082: _Local_iterator_base() = default; 25082: _Local_iterator_base(const __hash_code_base& __base, 25082: _Hash_node<_Value, true>* __p, 25082: std::size_t __bkt, std::size_t __bkt_count) 25082: : __base_type(__base._M_h2()), 25082: _M_cur(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) { } 25082: 25082: void 25082: _M_incr() 25082: { 25082: _M_cur = _M_cur->_M_next(); 25082: if (_M_cur) 25082: { 25082: std::size_t __bkt 25082: = __base_type::_S_get(*this)(_M_cur->_M_hash_code, 25082: _M_bucket_count); 25082: if (__bkt != _M_bucket) 25082: _M_cur = nullptr; 25082: } 25082: } 25082: 25082: _Hash_node<_Value, true>* _M_cur; 25082: std::size_t _M_bucket; 25082: std::size_t _M_bucket_count; 25082: 25082: public: 25082: const void* 25082: _M_curr() const { return _M_cur; } 25082: 25082: std::size_t 25082: _M_get_bucket() const { return _M_bucket; } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template::value> 25082: struct _Hash_code_storage 25082: { 25082: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; 25082: 25082: _Tp* 25082: _M_h() { return _M_storage._M_ptr(); } 25082: 25082: const _Tp* 25082: _M_h() const { return _M_storage._M_ptr(); } 25082: }; 25082: 25082: 25082: template 25082: struct _Hash_code_storage<_Tp, true> 25082: { 25082: static_assert( std::is_empty<_Tp>::value, "Type must be empty" ); 25082: 25082: 25082: 25082: _Tp* 25082: _M_h() { return reinterpret_cast<_Tp*>(this); } 25082: 25082: const _Tp* 25082: _M_h() const { return reinterpret_cast(this); } 25082: }; 25082: 25082: template 25082: using __hash_code_for_local_iter 25082: = _Hash_code_storage<_Hash_code_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, false>>; 25082: 25082: 25082: template 25082: struct _Local_iterator_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, false> 25082: : __hash_code_for_local_iter<_Key, _Value, _ExtractKey, _H1, _H2, _Hash> 25082: { 25082: protected: 25082: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, false>; 25082: 25082: _Local_iterator_base() : _M_bucket_count(-1) { } 25082: 25082: _Local_iterator_base(const __hash_code_base& __base, 25082: _Hash_node<_Value, false>* __p, 25082: std::size_t __bkt, std::size_t __bkt_count) 25082: : _M_cur(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) 25082: { _M_init(__base); } 25082: 25082: ~_Local_iterator_base() 25082: { 25082: if (_M_bucket_count != -1) 25082: _M_destroy(); 25082: } 25082: 25082: _Local_iterator_base(const _Local_iterator_base& __iter) 25082: : _M_cur(__iter._M_cur), _M_bucket(__iter._M_bucket), 25082: _M_bucket_count(__iter._M_bucket_count) 25082: { 25082: if (_M_bucket_count != -1) 25082: _M_init(*__iter._M_h()); 25082: } 25082: 25082: _Local_iterator_base& 25082: operator=(const _Local_iterator_base& __iter) 25082: { 25082: if (_M_bucket_count != -1) 25082: _M_destroy(); 25082: _M_cur = __iter._M_cur; 25082: _M_bucket = __iter._M_bucket; 25082: _M_bucket_count = __iter._M_bucket_count; 25082: if (_M_bucket_count != -1) 25082: _M_init(*__iter._M_h()); 25082: return *this; 25082: } 25082: 25082: void 25082: _M_incr() 25082: { 25082: _M_cur = _M_cur->_M_next(); 25082: if (_M_cur) 25082: { 25082: std::size_t __bkt = this->_M_h()->_M_bucket_index(_M_cur, 25082: _M_bucket_count); 25082: if (__bkt != _M_bucket) 25082: _M_cur = nullptr; 25082: } 25082: } 25082: 25082: _Hash_node<_Value, false>* _M_cur; 25082: std::size_t _M_bucket; 25082: std::size_t _M_bucket_count; 25082: 25082: void 25082: _M_init(const __hash_code_base& __base) 25082: { ::new(this->_M_h()) __hash_code_base(__base); } 25082: 25082: void 25082: _M_destroy() { this->_M_h()->~__hash_code_base(); } 25082: 25082: public: 25082: const void* 25082: _M_curr() const { return _M_cur; } 25082: 25082: std::size_t 25082: _M_get_bucket() const { return _M_bucket; } 25082: }; 25082: 25082: template 25082: inline bool 25082: operator==(const _Local_iterator_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, __cache>& __x, 25082: const _Local_iterator_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, __cache>& __y) 25082: { return __x._M_curr() == __y._M_curr(); } 25082: 25082: template 25082: inline bool 25082: operator!=(const _Local_iterator_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, __cache>& __x, 25082: const _Local_iterator_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, __cache>& __y) 25082: { return __x._M_curr() != __y._M_curr(); } 25082: 25082: 25082: template 25082: struct _Local_iterator 25082: : public _Local_iterator_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, __cache> 25082: { 25082: private: 25082: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, __cache>; 25082: using __hash_code_base = typename __base_type::__hash_code_base; 25082: public: 25082: typedef _Value value_type; 25082: typedef typename std::conditional<__constant_iterators, 25082: const _Value*, _Value*>::type 25082: pointer; 25082: typedef typename std::conditional<__constant_iterators, 25082: const _Value&, _Value&>::type 25082: reference; 25082: typedef std::ptrdiff_t difference_type; 25082: typedef std::forward_iterator_tag iterator_category; 25082: 25082: _Local_iterator() = default; 25082: 25082: _Local_iterator(const __hash_code_base& __base, 25082: _Hash_node<_Value, __cache>* __p, 25082: std::size_t __bkt, std::size_t __bkt_count) 25082: : __base_type(__base, __p, __bkt, __bkt_count) 25082: { } 25082: 25082: reference 25082: operator*() const 25082: { return this->_M_cur->_M_v(); } 25082: 25082: pointer 25082: operator->() const 25082: { return this->_M_cur->_M_valptr(); } 25082: 25082: _Local_iterator& 25082: operator++() 25082: { 25082: this->_M_incr(); 25082: return *this; 25082: } 25082: 25082: _Local_iterator 25082: operator++(int) 25082: { 25082: _Local_iterator __tmp(*this); 25082: this->_M_incr(); 25082: return __tmp; 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct _Local_const_iterator 25082: : public _Local_iterator_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, __cache> 25082: { 25082: private: 25082: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, __cache>; 25082: using __hash_code_base = typename __base_type::__hash_code_base; 25082: 25082: public: 25082: typedef _Value value_type; 25082: typedef const _Value* pointer; 25082: typedef const _Value& reference; 25082: typedef std::ptrdiff_t difference_type; 25082: typedef std::forward_iterator_tag iterator_category; 25082: 25082: _Local_const_iterator() = default; 25082: 25082: _Local_const_iterator(const __hash_code_base& __base, 25082: _Hash_node<_Value, __cache>* __p, 25082: std::size_t __bkt, std::size_t __bkt_count) 25082: : __base_type(__base, __p, __bkt, __bkt_count) 25082: { } 25082: 25082: _Local_const_iterator(const _Local_iterator<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, 25082: __constant_iterators, 25082: __cache>& __x) 25082: : __base_type(__x) 25082: { } 25082: 25082: reference 25082: operator*() const 25082: { return this->_M_cur->_M_v(); } 25082: 25082: pointer 25082: operator->() const 25082: { return this->_M_cur->_M_valptr(); } 25082: 25082: _Local_const_iterator& 25082: operator++() 25082: { 25082: this->_M_incr(); 25082: return *this; 25082: } 25082: 25082: _Local_const_iterator 25082: operator++(int) 25082: { 25082: _Local_const_iterator __tmp(*this); 25082: this->_M_incr(); 25082: return __tmp; 25082: } 25082: }; 25082: # 1769 "/usr/include/c++/8/bits/hashtable_policy.h" 3 25082: template 25082: struct _Hashtable_base 25082: : public _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, 25082: _Traits::__hash_cached::value>, 25082: private _Hashtable_ebo_helper<0, _Equal> 25082: { 25082: public: 25082: typedef _Key key_type; 25082: typedef _Value value_type; 25082: typedef _Equal key_equal; 25082: typedef std::size_t size_type; 25082: typedef std::ptrdiff_t difference_type; 25082: 25082: using __traits_type = _Traits; 25082: using __hash_cached = typename __traits_type::__hash_cached; 25082: using __constant_iterators = typename __traits_type::__constant_iterators; 25082: using __unique_keys = typename __traits_type::__unique_keys; 25082: 25082: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 25082: _H1, _H2, _Hash, 25082: __hash_cached::value>; 25082: 25082: using __hash_code = typename __hash_code_base::__hash_code; 25082: using __node_type = typename __hash_code_base::__node_type; 25082: 25082: using iterator = __detail::_Node_iterator; 25082: 25082: using const_iterator = __detail::_Node_const_iterator; 25082: 25082: using local_iterator = __detail::_Local_iterator; 25082: 25082: using const_local_iterator = __detail::_Local_const_iterator; 25082: 25082: using __ireturn_type = typename std::conditional<__unique_keys::value, 25082: std::pair, 25082: iterator>::type; 25082: private: 25082: using _EqualEBO = _Hashtable_ebo_helper<0, _Equal>; 25082: using _EqualHelper = _Equal_helper<_Key, _Value, _ExtractKey, _Equal, 25082: __hash_code, __hash_cached::value>; 25082: 25082: protected: 25082: _Hashtable_base() = default; 25082: _Hashtable_base(const _ExtractKey& __ex, const _H1& __h1, const _H2& __h2, 25082: const _Hash& __hash, const _Equal& __eq) 25082: : __hash_code_base(__ex, __h1, __h2, __hash), _EqualEBO(__eq) 25082: { } 25082: 25082: bool 25082: _M_equals(const _Key& __k, __hash_code __c, __node_type* __n) const 25082: { 25082: return _EqualHelper::_S_equals(_M_eq(), this->_M_extract(), 25082: __k, __c, __n); 25082: } 25082: 25082: void 25082: _M_swap(_Hashtable_base& __x) 25082: { 25082: __hash_code_base::_M_swap(__x); 25082: std::swap(_M_eq(), __x._M_eq()); 25082: } 25082: 25082: const _Equal& 25082: _M_eq() const { return _EqualEBO::_S_cget(*this); } 25082: 25082: _Equal& 25082: _M_eq() { return _EqualEBO::_S_get(*this); } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct _Equality_base 25082: { 25082: protected: 25082: template 25082: static bool 25082: _S_is_permutation(_Uiterator, _Uiterator, _Uiterator); 25082: }; 25082: 25082: 25082: template 25082: bool 25082: _Equality_base:: 25082: _S_is_permutation(_Uiterator __first1, _Uiterator __last1, 25082: _Uiterator __first2) 25082: { 25082: for (; __first1 != __last1; ++__first1, ++__first2) 25082: if (!(*__first1 == *__first2)) 25082: break; 25082: 25082: if (__first1 == __last1) 25082: return true; 25082: 25082: _Uiterator __last2 = __first2; 25082: std::advance(__last2, std::distance(__first1, __last1)); 25082: 25082: for (_Uiterator __it1 = __first1; __it1 != __last1; ++__it1) 25082: { 25082: _Uiterator __tmp = __first1; 25082: while (__tmp != __it1 && !bool(*__tmp == *__it1)) 25082: ++__tmp; 25082: 25082: 25082: if (__tmp != __it1) 25082: continue; 25082: 25082: std::ptrdiff_t __n2 = 0; 25082: for (__tmp = __first2; __tmp != __last2; ++__tmp) 25082: if (*__tmp == *__it1) 25082: ++__n2; 25082: 25082: if (!__n2) 25082: return false; 25082: 25082: std::ptrdiff_t __n1 = 0; 25082: for (__tmp = __it1; __tmp != __last1; ++__tmp) 25082: if (*__tmp == *__it1) 25082: ++__n1; 25082: 25082: if (__n1 != __n2) 25082: return false; 25082: } 25082: return true; 25082: } 25082: # 1918 "/usr/include/c++/8/bits/hashtable_policy.h" 3 25082: template 25082: struct _Equality; 25082: 25082: 25082: template 25082: struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, true> 25082: { 25082: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>; 25082: 25082: bool 25082: _M_equal(const __hashtable&) const; 25082: }; 25082: 25082: template 25082: bool 25082: _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: 25082: _M_equal(const __hashtable& __other) const 25082: { 25082: const __hashtable* __this = static_cast(this); 25082: 25082: if (__this->size() != __other.size()) 25082: return false; 25082: 25082: for (auto __itx = __this->begin(); __itx != __this->end(); ++__itx) 25082: { 25082: const auto __ity = __other.find(_ExtractKey()(*__itx)); 25082: if (__ity == __other.end() || !bool(*__ity == *__itx)) 25082: return false; 25082: } 25082: return true; 25082: } 25082: 25082: 25082: template 25082: struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, false> 25082: : public _Equality_base 25082: { 25082: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>; 25082: 25082: bool 25082: _M_equal(const __hashtable&) const; 25082: }; 25082: 25082: template 25082: bool 25082: _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits, false>:: 25082: _M_equal(const __hashtable& __other) const 25082: { 25082: const __hashtable* __this = static_cast(this); 25082: 25082: if (__this->size() != __other.size()) 25082: return false; 25082: 25082: for (auto __itx = __this->begin(); __itx != __this->end();) 25082: { 25082: const auto __xrange = __this->equal_range(_ExtractKey()(*__itx)); 25082: const auto __yrange = __other.equal_range(_ExtractKey()(*__itx)); 25082: 25082: if (std::distance(__xrange.first, __xrange.second) 25082: != std::distance(__yrange.first, __yrange.second)) 25082: return false; 25082: 25082: if (!_S_is_permutation(__xrange.first, __xrange.second, 25082: __yrange.first)) 25082: return false; 25082: 25082: __itx = __xrange.second; 25082: } 25082: return true; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hashtable_alloc : private _Hashtable_ebo_helper<0, _NodeAlloc> 25082: { 25082: private: 25082: using __ebo_node_alloc = _Hashtable_ebo_helper<0, _NodeAlloc>; 25082: public: 25082: using __node_type = typename _NodeAlloc::value_type; 25082: using __node_alloc_type = _NodeAlloc; 25082: 25082: using __node_alloc_traits = __gnu_cxx::__alloc_traits<__node_alloc_type>; 25082: 25082: using __value_alloc_traits = typename __node_alloc_traits::template 25082: rebind_traits; 25082: 25082: using __node_base = __detail::_Hash_node_base; 25082: using __bucket_type = __node_base*; 25082: using __bucket_alloc_type = 25082: __alloc_rebind<__node_alloc_type, __bucket_type>; 25082: using __bucket_alloc_traits = std::allocator_traits<__bucket_alloc_type>; 25082: 25082: _Hashtable_alloc() = default; 25082: _Hashtable_alloc(const _Hashtable_alloc&) = default; 25082: _Hashtable_alloc(_Hashtable_alloc&&) = default; 25082: 25082: template 25082: _Hashtable_alloc(_Alloc&& __a) 25082: : __ebo_node_alloc(std::forward<_Alloc>(__a)) 25082: { } 25082: 25082: __node_alloc_type& 25082: _M_node_allocator() 25082: { return __ebo_node_alloc::_S_get(*this); } 25082: 25082: const __node_alloc_type& 25082: _M_node_allocator() const 25082: { return __ebo_node_alloc::_S_cget(*this); } 25082: 25082: template 25082: __node_type* 25082: _M_allocate_node(_Args&&... __args); 25082: 25082: void 25082: _M_deallocate_node(__node_type* __n); 25082: 25082: 25082: void 25082: _M_deallocate_nodes(__node_type* __n); 25082: 25082: __bucket_type* 25082: _M_allocate_buckets(std::size_t __n); 25082: 25082: void 25082: _M_deallocate_buckets(__bucket_type*, std::size_t __n); 25082: }; 25082: 25082: 25082: 25082: template 25082: template 25082: typename _Hashtable_alloc<_NodeAlloc>::__node_type* 25082: _Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&... __args) 25082: { 25082: auto __nptr = __node_alloc_traits::allocate(_M_node_allocator(), 1); 25082: __node_type* __n = std::__to_address(__nptr); 25082: try 25082: { 25082: ::new ((void*)__n) __node_type; 25082: __node_alloc_traits::construct(_M_node_allocator(), 25082: __n->_M_valptr(), 25082: std::forward<_Args>(__args)...); 25082: return __n; 25082: } 25082: catch(...) 25082: { 25082: __node_alloc_traits::deallocate(_M_node_allocator(), __nptr, 1); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: void 25082: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_type* __n) 25082: { 25082: typedef typename __node_alloc_traits::pointer _Ptr; 25082: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__n); 25082: __node_alloc_traits::destroy(_M_node_allocator(), __n->_M_valptr()); 25082: __n->~__node_type(); 25082: __node_alloc_traits::deallocate(_M_node_allocator(), __ptr, 1); 25082: } 25082: 25082: template 25082: void 25082: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_nodes(__node_type* __n) 25082: { 25082: while (__n) 25082: { 25082: __node_type* __tmp = __n; 25082: __n = __n->_M_next(); 25082: _M_deallocate_node(__tmp); 25082: } 25082: } 25082: 25082: template 25082: typename _Hashtable_alloc<_NodeAlloc>::__bucket_type* 25082: _Hashtable_alloc<_NodeAlloc>::_M_allocate_buckets(std::size_t __n) 25082: { 25082: __bucket_alloc_type __alloc(_M_node_allocator()); 25082: 25082: auto __ptr = __bucket_alloc_traits::allocate(__alloc, __n); 25082: __bucket_type* __p = std::__to_address(__ptr); 25082: __builtin_memset(__p, 0, __n * sizeof(__bucket_type)); 25082: return __p; 25082: } 25082: 25082: template 25082: void 25082: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_buckets(__bucket_type* __bkts, 25082: std::size_t __n) 25082: { 25082: typedef typename __bucket_alloc_traits::pointer _Ptr; 25082: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__bkts); 25082: __bucket_alloc_type __alloc(_M_node_allocator()); 25082: __bucket_alloc_traits::deallocate(__alloc, __ptr, __n); 25082: } 25082: 25082: 25082: } 25082: 25082: } 25082: # 36 "/usr/include/c++/8/bits/hashtable.h" 2 3 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: using __cache_default 25082: = __not_<__and_< 25082: __is_fast_hash<_Hash>, 25082: 25082: __is_nothrow_invocable>>; 25082: # 169 "/usr/include/c++/8/bits/hashtable.h" 3 25082: template 25082: class _Hashtable 25082: : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _Traits>, 25082: public __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>, 25082: public __detail::_Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>, 25082: public __detail::_Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>, 25082: public __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>, 25082: private __detail::_Hashtable_alloc< 25082: __alloc_rebind<_Alloc, 25082: __detail::_Hash_node<_Value, 25082: _Traits::__hash_cached::value>>> 25082: { 25082: static_assert(is_same::type, _Value>::value, 25082: "unordered container must have a non-const, non-volatile value_type"); 25082: 25082: static_assert(is_same{}, 25082: "unordered container must have the same value_type as its allocator"); 25082: 25082: static_assert(__is_invocable{}, 25082: "hash function must be invocable with an argument of key type"); 25082: static_assert(__is_invocable{}, 25082: "key equality predicate must be invocable with two arguments of " 25082: "key type"); 25082: 25082: using __traits_type = _Traits; 25082: using __hash_cached = typename __traits_type::__hash_cached; 25082: using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>; 25082: using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; 25082: 25082: using __hashtable_alloc = __detail::_Hashtable_alloc<__node_alloc_type>; 25082: 25082: using __value_alloc_traits = 25082: typename __hashtable_alloc::__value_alloc_traits; 25082: using __node_alloc_traits = 25082: typename __hashtable_alloc::__node_alloc_traits; 25082: using __node_base = typename __hashtable_alloc::__node_base; 25082: using __bucket_type = typename __hashtable_alloc::__bucket_type; 25082: 25082: public: 25082: typedef _Key key_type; 25082: typedef _Value value_type; 25082: typedef _Alloc allocator_type; 25082: typedef _Equal key_equal; 25082: 25082: 25082: 25082: typedef typename __value_alloc_traits::pointer pointer; 25082: typedef typename __value_alloc_traits::const_pointer const_pointer; 25082: typedef value_type& reference; 25082: typedef const value_type& const_reference; 25082: 25082: private: 25082: using __rehash_type = _RehashPolicy; 25082: using __rehash_state = typename __rehash_type::_State; 25082: 25082: using __constant_iterators = typename __traits_type::__constant_iterators; 25082: using __unique_keys = typename __traits_type::__unique_keys; 25082: 25082: using __key_extract = typename std::conditional< 25082: __constant_iterators::value, 25082: __detail::_Identity, 25082: __detail::_Select1st>::type; 25082: 25082: using __hashtable_base = __detail:: 25082: _Hashtable_base<_Key, _Value, _ExtractKey, 25082: _Equal, _H1, _H2, _Hash, _Traits>; 25082: 25082: using __hash_code_base = typename __hashtable_base::__hash_code_base; 25082: using __hash_code = typename __hashtable_base::__hash_code; 25082: using __ireturn_type = typename __hashtable_base::__ireturn_type; 25082: 25082: using __map_base = __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, 25082: _Equal, _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits>; 25082: 25082: using __rehash_base = __detail::_Rehash_base<_Key, _Value, _Alloc, 25082: _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits>; 25082: 25082: using __eq_base = __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, 25082: _Equal, _H1, _H2, _Hash, 25082: _RehashPolicy, _Traits>; 25082: 25082: using __reuse_or_alloc_node_type = 25082: __detail::_ReuseOrAllocNode<__node_alloc_type>; 25082: 25082: 25082: template 25082: using __if_hash_cached = __or_<__not_<__hash_cached>, _Cond>; 25082: 25082: template 25082: using __if_hash_not_cached = __or_<__hash_cached, _Cond>; 25082: 25082: 25082: 25082: 25082: 25082: struct __hash_code_base_access : __hash_code_base 25082: { using __hash_code_base::_M_bucket_index; }; 25082: 25082: 25082: 25082: static_assert(noexcept(declval() 25082: ._M_bucket_index((const __node_type*)nullptr, 25082: (std::size_t)0)), 25082: "Cache the hash code or qualify your functors involved" 25082: " in hash code and bucket index computation with noexcept"); 25082: 25082: 25082: 25082: 25082: 25082: 25082: static_assert(__if_hash_cached>::value, 25082: "Functor used to map hash code to bucket index" 25082: " must be default constructible"); 25082: 25082: template 25082: friend struct __detail::_Map_base; 25082: 25082: template 25082: friend struct __detail::_Insert_base; 25082: 25082: template 25082: friend struct __detail::_Insert; 25082: 25082: public: 25082: using size_type = typename __hashtable_base::size_type; 25082: using difference_type = typename __hashtable_base::difference_type; 25082: 25082: using iterator = typename __hashtable_base::iterator; 25082: using const_iterator = typename __hashtable_base::const_iterator; 25082: 25082: using local_iterator = typename __hashtable_base::local_iterator; 25082: using const_local_iterator = typename __hashtable_base:: 25082: const_local_iterator; 25082: 25082: 25082: using node_type = _Node_handle<_Key, _Value, __node_alloc_type>; 25082: using insert_return_type = _Node_insert_return; 25082: 25082: 25082: private: 25082: __bucket_type* _M_buckets = &_M_single_bucket; 25082: size_type _M_bucket_count = 1; 25082: __node_base _M_before_begin; 25082: size_type _M_element_count = 0; 25082: _RehashPolicy _M_rehash_policy; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: __bucket_type _M_single_bucket = nullptr; 25082: 25082: bool 25082: _M_uses_single_bucket(__bucket_type* __bkts) const 25082: { return __builtin_expect(__bkts == &_M_single_bucket, false); } 25082: 25082: bool 25082: _M_uses_single_bucket() const 25082: { return _M_uses_single_bucket(_M_buckets); } 25082: 25082: __hashtable_alloc& 25082: _M_base_alloc() { return *this; } 25082: 25082: __bucket_type* 25082: _M_allocate_buckets(size_type __n) 25082: { 25082: if (__builtin_expect(__n == 1, false)) 25082: { 25082: _M_single_bucket = nullptr; 25082: return &_M_single_bucket; 25082: } 25082: 25082: return __hashtable_alloc::_M_allocate_buckets(__n); 25082: } 25082: 25082: void 25082: _M_deallocate_buckets(__bucket_type* __bkts, size_type __n) 25082: { 25082: if (_M_uses_single_bucket(__bkts)) 25082: return; 25082: 25082: __hashtable_alloc::_M_deallocate_buckets(__bkts, __n); 25082: } 25082: 25082: void 25082: _M_deallocate_buckets() 25082: { _M_deallocate_buckets(_M_buckets, _M_bucket_count); } 25082: 25082: 25082: 25082: __node_type* 25082: _M_bucket_begin(size_type __bkt) const; 25082: 25082: __node_type* 25082: _M_begin() const 25082: { return static_cast<__node_type*>(_M_before_begin._M_nxt); } 25082: 25082: template 25082: void 25082: _M_assign(const _Hashtable&, const _NodeGenerator&); 25082: 25082: void 25082: _M_move_assign(_Hashtable&&, std::true_type); 25082: 25082: void 25082: _M_move_assign(_Hashtable&&, std::false_type); 25082: 25082: void 25082: _M_reset() noexcept; 25082: 25082: _Hashtable(const _H1& __h1, const _H2& __h2, const _Hash& __h, 25082: const _Equal& __eq, const _ExtractKey& __exk, 25082: const allocator_type& __a) 25082: : __hashtable_base(__exk, __h1, __h2, __h, __eq), 25082: __hashtable_alloc(__node_alloc_type(__a)) 25082: { } 25082: 25082: public: 25082: 25082: _Hashtable() = default; 25082: _Hashtable(size_type __bucket_hint, 25082: const _H1&, const _H2&, const _Hash&, 25082: const _Equal&, const _ExtractKey&, 25082: const allocator_type&); 25082: 25082: template 25082: _Hashtable(_InputIterator __first, _InputIterator __last, 25082: size_type __bucket_hint, 25082: const _H1&, const _H2&, const _Hash&, 25082: const _Equal&, const _ExtractKey&, 25082: const allocator_type&); 25082: 25082: _Hashtable(const _Hashtable&); 25082: 25082: _Hashtable(_Hashtable&&) noexcept; 25082: 25082: _Hashtable(const _Hashtable&, const allocator_type&); 25082: 25082: _Hashtable(_Hashtable&&, const allocator_type&); 25082: 25082: 25082: explicit 25082: _Hashtable(const allocator_type& __a) 25082: : __hashtable_alloc(__node_alloc_type(__a)) 25082: { } 25082: 25082: explicit 25082: _Hashtable(size_type __n, 25082: const _H1& __hf = _H1(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _Hashtable(__n, __hf, _H2(), _Hash(), __eql, 25082: __key_extract(), __a) 25082: { } 25082: 25082: template 25082: _Hashtable(_InputIterator __f, _InputIterator __l, 25082: size_type __n = 0, 25082: const _H1& __hf = _H1(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _Hashtable(__f, __l, __n, __hf, _H2(), _Hash(), __eql, 25082: __key_extract(), __a) 25082: { } 25082: 25082: _Hashtable(initializer_list __l, 25082: size_type __n = 0, 25082: const _H1& __hf = _H1(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _Hashtable(__l.begin(), __l.end(), __n, __hf, _H2(), _Hash(), __eql, 25082: __key_extract(), __a) 25082: { } 25082: 25082: _Hashtable& 25082: operator=(const _Hashtable& __ht); 25082: 25082: _Hashtable& 25082: operator=(_Hashtable&& __ht) 25082: noexcept(__node_alloc_traits::_S_nothrow_move() 25082: && is_nothrow_move_assignable<_H1>::value 25082: && is_nothrow_move_assignable<_Equal>::value) 25082: { 25082: constexpr bool __move_storage = 25082: __node_alloc_traits::_S_propagate_on_move_assign() 25082: || __node_alloc_traits::_S_always_equal(); 25082: _M_move_assign(std::move(__ht), __bool_constant<__move_storage>()); 25082: return *this; 25082: } 25082: 25082: _Hashtable& 25082: operator=(initializer_list __l) 25082: { 25082: __reuse_or_alloc_node_type __roan(_M_begin(), *this); 25082: _M_before_begin._M_nxt = nullptr; 25082: clear(); 25082: this->_M_insert_range(__l.begin(), __l.end(), __roan, __unique_keys()); 25082: return *this; 25082: } 25082: 25082: ~_Hashtable() noexcept; 25082: 25082: void 25082: swap(_Hashtable&) 25082: noexcept(__and_<__is_nothrow_swappable<_H1>, 25082: __is_nothrow_swappable<_Equal>>::value); 25082: 25082: 25082: iterator 25082: begin() noexcept 25082: { return iterator(_M_begin()); } 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return const_iterator(_M_begin()); } 25082: 25082: iterator 25082: end() noexcept 25082: { return iterator(nullptr); } 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return const_iterator(nullptr); } 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return const_iterator(_M_begin()); } 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return const_iterator(nullptr); } 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_element_count; } 25082: 25082: bool 25082: empty() const noexcept 25082: { return size() == 0; } 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return allocator_type(this->_M_node_allocator()); } 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return __node_alloc_traits::max_size(this->_M_node_allocator()); } 25082: 25082: 25082: key_equal 25082: key_eq() const 25082: { return this->_M_eq(); } 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket_count() const noexcept 25082: { return _M_bucket_count; } 25082: 25082: size_type 25082: max_bucket_count() const noexcept 25082: { return max_size(); } 25082: 25082: size_type 25082: bucket_size(size_type __n) const 25082: { return std::distance(begin(__n), end(__n)); } 25082: 25082: size_type 25082: bucket(const key_type& __k) const 25082: { return _M_bucket_index(__k, this->_M_hash_code(__k)); } 25082: 25082: local_iterator 25082: begin(size_type __n) 25082: { 25082: return local_iterator(*this, _M_bucket_begin(__n), 25082: __n, _M_bucket_count); 25082: } 25082: 25082: local_iterator 25082: end(size_type __n) 25082: { return local_iterator(*this, nullptr, __n, _M_bucket_count); } 25082: 25082: const_local_iterator 25082: begin(size_type __n) const 25082: { 25082: return const_local_iterator(*this, _M_bucket_begin(__n), 25082: __n, _M_bucket_count); 25082: } 25082: 25082: const_local_iterator 25082: end(size_type __n) const 25082: { return const_local_iterator(*this, nullptr, __n, _M_bucket_count); } 25082: 25082: 25082: const_local_iterator 25082: cbegin(size_type __n) const 25082: { 25082: return const_local_iterator(*this, _M_bucket_begin(__n), 25082: __n, _M_bucket_count); 25082: } 25082: 25082: const_local_iterator 25082: cend(size_type __n) const 25082: { return const_local_iterator(*this, nullptr, __n, _M_bucket_count); } 25082: 25082: float 25082: load_factor() const noexcept 25082: { 25082: return static_cast(size()) / static_cast(bucket_count()); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const _RehashPolicy& 25082: __rehash_policy() const 25082: { return _M_rehash_policy; } 25082: 25082: void 25082: __rehash_policy(const _RehashPolicy& __pol) 25082: { _M_rehash_policy = __pol; } 25082: 25082: 25082: iterator 25082: find(const key_type& __k); 25082: 25082: const_iterator 25082: find(const key_type& __k) const; 25082: 25082: size_type 25082: count(const key_type& __k) const; 25082: 25082: std::pair 25082: equal_range(const key_type& __k); 25082: 25082: std::pair 25082: equal_range(const key_type& __k) const; 25082: 25082: protected: 25082: 25082: size_type 25082: _M_bucket_index(__node_type* __n) const noexcept 25082: { return __hash_code_base::_M_bucket_index(__n, _M_bucket_count); } 25082: 25082: size_type 25082: _M_bucket_index(const key_type& __k, __hash_code __c) const 25082: { return __hash_code_base::_M_bucket_index(__k, __c, _M_bucket_count); } 25082: 25082: 25082: 25082: __node_base* 25082: _M_find_before_node(size_type, const key_type&, __hash_code) const; 25082: 25082: __node_type* 25082: _M_find_node(size_type __bkt, const key_type& __key, 25082: __hash_code __c) const 25082: { 25082: __node_base* __before_n = _M_find_before_node(__bkt, __key, __c); 25082: if (__before_n) 25082: return static_cast<__node_type*>(__before_n->_M_nxt); 25082: return nullptr; 25082: } 25082: 25082: 25082: void 25082: _M_insert_bucket_begin(size_type, __node_type*); 25082: 25082: 25082: void 25082: _M_remove_bucket_begin(size_type __bkt, __node_type* __next_n, 25082: size_type __next_bkt); 25082: 25082: 25082: __node_base* 25082: _M_get_previous_node(size_type __bkt, __node_base* __n); 25082: 25082: 25082: 25082: 25082: iterator 25082: _M_insert_unique_node(size_type __bkt, __hash_code __code, 25082: __node_type* __n, size_type __n_elt = 1); 25082: 25082: 25082: 25082: iterator 25082: _M_insert_multi_node(__node_type* __hint, 25082: __hash_code __code, __node_type* __n); 25082: 25082: template 25082: std::pair 25082: _M_emplace(std::true_type, _Args&&... __args); 25082: 25082: template 25082: iterator 25082: _M_emplace(std::false_type __uk, _Args&&... __args) 25082: { return _M_emplace(cend(), __uk, std::forward<_Args>(__args)...); } 25082: 25082: 25082: template 25082: iterator 25082: _M_emplace(const_iterator, std::true_type __uk, _Args&&... __args) 25082: { return _M_emplace(__uk, std::forward<_Args>(__args)...).first; } 25082: 25082: template 25082: iterator 25082: _M_emplace(const_iterator, std::false_type, _Args&&... __args); 25082: 25082: template 25082: std::pair 25082: _M_insert(_Arg&&, const _NodeGenerator&, true_type, size_type = 1); 25082: 25082: template 25082: iterator 25082: _M_insert(_Arg&& __arg, const _NodeGenerator& __node_gen, 25082: false_type __uk) 25082: { 25082: return _M_insert(cend(), std::forward<_Arg>(__arg), __node_gen, 25082: __uk); 25082: } 25082: 25082: 25082: template 25082: iterator 25082: _M_insert(const_iterator, _Arg&& __arg, 25082: const _NodeGenerator& __node_gen, true_type __uk) 25082: { 25082: return 25082: _M_insert(std::forward<_Arg>(__arg), __node_gen, __uk).first; 25082: } 25082: 25082: 25082: template 25082: iterator 25082: _M_insert(const_iterator, _Arg&&, 25082: const _NodeGenerator&, false_type); 25082: 25082: size_type 25082: _M_erase(std::true_type, const key_type&); 25082: 25082: size_type 25082: _M_erase(std::false_type, const key_type&); 25082: 25082: iterator 25082: _M_erase(size_type __bkt, __node_base* __prev_n, __node_type* __n); 25082: 25082: public: 25082: 25082: template 25082: __ireturn_type 25082: emplace(_Args&&... __args) 25082: { return _M_emplace(__unique_keys(), std::forward<_Args>(__args)...); } 25082: 25082: template 25082: iterator 25082: emplace_hint(const_iterator __hint, _Args&&... __args) 25082: { 25082: return _M_emplace(__hint, __unique_keys(), 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: 25082: 25082: 25082: iterator 25082: erase(const_iterator); 25082: 25082: 25082: iterator 25082: erase(iterator __it) 25082: { return erase(const_iterator(__it)); } 25082: 25082: size_type 25082: erase(const key_type& __k) 25082: { return _M_erase(__unique_keys(), __k); } 25082: 25082: iterator 25082: erase(const_iterator, const_iterator); 25082: 25082: void 25082: clear() noexcept; 25082: 25082: 25082: void rehash(size_type __n); 25082: 25082: 25082: 25082: 25082: 25082: 25082: insert_return_type 25082: _M_reinsert_node(node_type&& __nh) 25082: { 25082: insert_return_type __ret; 25082: if (__nh.empty()) 25082: __ret.position = end(); 25082: else 25082: { 25082: ; 25082: 25082: const key_type& __k = __nh._M_key(); 25082: __hash_code __code = this->_M_hash_code(__k); 25082: size_type __bkt = _M_bucket_index(__k, __code); 25082: if (__node_type* __n = _M_find_node(__bkt, __k, __code)) 25082: { 25082: __ret.node = std::move(__nh); 25082: __ret.position = iterator(__n); 25082: __ret.inserted = false; 25082: } 25082: else 25082: { 25082: __ret.position 25082: = _M_insert_unique_node(__bkt, __code, __nh._M_ptr); 25082: __nh._M_ptr = nullptr; 25082: __ret.inserted = true; 25082: } 25082: } 25082: return __ret; 25082: } 25082: 25082: 25082: iterator 25082: _M_reinsert_node_multi(const_iterator __hint, node_type&& __nh) 25082: { 25082: iterator __ret; 25082: if (__nh.empty()) 25082: __ret = end(); 25082: else 25082: { 25082: ; 25082: 25082: auto __code = this->_M_hash_code(__nh._M_key()); 25082: auto __node = std::exchange(__nh._M_ptr, nullptr); 25082: 25082: __ret = _M_insert_multi_node(__hint._M_cur, __code, __node); 25082: } 25082: return __ret; 25082: } 25082: 25082: 25082: node_type 25082: extract(const_iterator __pos) 25082: { 25082: __node_type* __n = __pos._M_cur; 25082: size_t __bkt = _M_bucket_index(__n); 25082: 25082: 25082: 25082: 25082: __node_base* __prev_n = _M_get_previous_node(__bkt, __n); 25082: 25082: if (__prev_n == _M_buckets[__bkt]) 25082: _M_remove_bucket_begin(__bkt, __n->_M_next(), 25082: __n->_M_nxt ? _M_bucket_index(__n->_M_next()) : 0); 25082: else if (__n->_M_nxt) 25082: { 25082: size_type __next_bkt = _M_bucket_index(__n->_M_next()); 25082: if (__next_bkt != __bkt) 25082: _M_buckets[__next_bkt] = __prev_n; 25082: } 25082: 25082: __prev_n->_M_nxt = __n->_M_nxt; 25082: __n->_M_nxt = nullptr; 25082: --_M_element_count; 25082: return { __n, this->_M_node_allocator() }; 25082: } 25082: 25082: 25082: node_type 25082: extract(const _Key& __k) 25082: { 25082: node_type __nh; 25082: auto __pos = find(__k); 25082: if (__pos != end()) 25082: __nh = extract(const_iterator(__pos)); 25082: return __nh; 25082: } 25082: 25082: 25082: template 25082: void 25082: _M_merge_unique(_Compatible_Hashtable& __src) noexcept 25082: { 25082: static_assert(is_same_v, "Node types are compatible"); 25082: ; 25082: 25082: auto __n_elt = __src.size(); 25082: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) 25082: { 25082: auto __pos = __i++; 25082: const key_type& __k = this->_M_extract()(__pos._M_cur->_M_v()); 25082: __hash_code __code = this->_M_hash_code(__k); 25082: size_type __bkt = _M_bucket_index(__k, __code); 25082: if (_M_find_node(__bkt, __k, __code) == nullptr) 25082: { 25082: auto __nh = __src.extract(__pos); 25082: _M_insert_unique_node(__bkt, __code, __nh._M_ptr, __n_elt); 25082: __nh._M_ptr = nullptr; 25082: __n_elt = 1; 25082: } 25082: else if (__n_elt != 1) 25082: --__n_elt; 25082: } 25082: } 25082: 25082: 25082: template 25082: void 25082: _M_merge_multi(_Compatible_Hashtable& __src) noexcept 25082: { 25082: static_assert(is_same_v, "Node types are compatible"); 25082: ; 25082: 25082: this->reserve(size() + __src.size()); 25082: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) 25082: _M_reinsert_node_multi(cend(), __src.extract(__i++)); 25082: } 25082: 25082: 25082: private: 25082: 25082: void _M_rehash_aux(size_type __n, std::true_type); 25082: 25082: 25082: void _M_rehash_aux(size_type __n, std::false_type); 25082: 25082: 25082: 25082: void _M_rehash(size_type __n, const __rehash_state& __state); 25082: }; 25082: 25082: 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_bucket_begin(size_type __bkt) const 25082: -> __node_type* 25082: { 25082: __node_base* __n = _M_buckets[__bkt]; 25082: return __n ? static_cast<__node_type*>(__n->_M_nxt) : nullptr; 25082: } 25082: 25082: template 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _Hashtable(size_type __bucket_hint, 25082: const _H1& __h1, const _H2& __h2, const _Hash& __h, 25082: const _Equal& __eq, const _ExtractKey& __exk, 25082: const allocator_type& __a) 25082: : _Hashtable(__h1, __h2, __h, __eq, __exk, __a) 25082: { 25082: auto __bkt = _M_rehash_policy._M_next_bkt(__bucket_hint); 25082: if (__bkt > _M_bucket_count) 25082: { 25082: _M_buckets = _M_allocate_buckets(__bkt); 25082: _M_bucket_count = __bkt; 25082: } 25082: } 25082: 25082: template 25082: template 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _Hashtable(_InputIterator __f, _InputIterator __l, 25082: size_type __bucket_hint, 25082: const _H1& __h1, const _H2& __h2, const _Hash& __h, 25082: const _Equal& __eq, const _ExtractKey& __exk, 25082: const allocator_type& __a) 25082: : _Hashtable(__h1, __h2, __h, __eq, __exk, __a) 25082: { 25082: auto __nb_elems = __detail::__distance_fw(__f, __l); 25082: auto __bkt_count = 25082: _M_rehash_policy._M_next_bkt( 25082: std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems), 25082: __bucket_hint)); 25082: 25082: if (__bkt_count > _M_bucket_count) 25082: { 25082: _M_buckets = _M_allocate_buckets(__bkt_count); 25082: _M_bucket_count = __bkt_count; 25082: } 25082: 25082: for (; __f != __l; ++__f) 25082: this->insert(*__f); 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: operator=(const _Hashtable& __ht) 25082: -> _Hashtable& 25082: { 25082: if (&__ht == this) 25082: return *this; 25082: 25082: if (__node_alloc_traits::_S_propagate_on_copy_assign()) 25082: { 25082: auto& __this_alloc = this->_M_node_allocator(); 25082: auto& __that_alloc = __ht._M_node_allocator(); 25082: if (!__node_alloc_traits::_S_always_equal() 25082: && __this_alloc != __that_alloc) 25082: { 25082: 25082: this->_M_deallocate_nodes(_M_begin()); 25082: _M_before_begin._M_nxt = nullptr; 25082: _M_deallocate_buckets(); 25082: _M_buckets = nullptr; 25082: std::__alloc_on_copy(__this_alloc, __that_alloc); 25082: __hashtable_base::operator=(__ht); 25082: _M_bucket_count = __ht._M_bucket_count; 25082: _M_element_count = __ht._M_element_count; 25082: _M_rehash_policy = __ht._M_rehash_policy; 25082: try 25082: { 25082: _M_assign(__ht, 25082: [this](const __node_type* __n) 25082: { return this->_M_allocate_node(__n->_M_v()); }); 25082: } 25082: catch(...) 25082: { 25082: 25082: 25082: _M_reset(); 25082: throw; 25082: } 25082: return *this; 25082: } 25082: std::__alloc_on_copy(__this_alloc, __that_alloc); 25082: } 25082: 25082: 25082: __bucket_type* __former_buckets = nullptr; 25082: std::size_t __former_bucket_count = _M_bucket_count; 25082: const __rehash_state& __former_state = _M_rehash_policy._M_state(); 25082: 25082: if (_M_bucket_count != __ht._M_bucket_count) 25082: { 25082: __former_buckets = _M_buckets; 25082: _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); 25082: _M_bucket_count = __ht._M_bucket_count; 25082: } 25082: else 25082: __builtin_memset(_M_buckets, 0, 25082: _M_bucket_count * sizeof(__bucket_type)); 25082: 25082: try 25082: { 25082: __hashtable_base::operator=(__ht); 25082: _M_element_count = __ht._M_element_count; 25082: _M_rehash_policy = __ht._M_rehash_policy; 25082: __reuse_or_alloc_node_type __roan(_M_begin(), *this); 25082: _M_before_begin._M_nxt = nullptr; 25082: _M_assign(__ht, 25082: [&__roan](const __node_type* __n) 25082: { return __roan(__n->_M_v()); }); 25082: if (__former_buckets) 25082: _M_deallocate_buckets(__former_buckets, __former_bucket_count); 25082: } 25082: catch(...) 25082: { 25082: if (__former_buckets) 25082: { 25082: 25082: _M_deallocate_buckets(); 25082: _M_rehash_policy._M_reset(__former_state); 25082: _M_buckets = __former_buckets; 25082: _M_bucket_count = __former_bucket_count; 25082: } 25082: __builtin_memset(_M_buckets, 0, 25082: _M_bucket_count * sizeof(__bucket_type)); 25082: throw; 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_assign(const _Hashtable& __ht, const _NodeGenerator& __node_gen) 25082: { 25082: __bucket_type* __buckets = nullptr; 25082: if (!_M_buckets) 25082: _M_buckets = __buckets = _M_allocate_buckets(_M_bucket_count); 25082: 25082: try 25082: { 25082: if (!__ht._M_before_begin._M_nxt) 25082: return; 25082: 25082: 25082: 25082: __node_type* __ht_n = __ht._M_begin(); 25082: __node_type* __this_n = __node_gen(__ht_n); 25082: this->_M_copy_code(__this_n, __ht_n); 25082: _M_before_begin._M_nxt = __this_n; 25082: _M_buckets[_M_bucket_index(__this_n)] = &_M_before_begin; 25082: 25082: 25082: __node_base* __prev_n = __this_n; 25082: for (__ht_n = __ht_n->_M_next(); __ht_n; __ht_n = __ht_n->_M_next()) 25082: { 25082: __this_n = __node_gen(__ht_n); 25082: __prev_n->_M_nxt = __this_n; 25082: this->_M_copy_code(__this_n, __ht_n); 25082: size_type __bkt = _M_bucket_index(__this_n); 25082: if (!_M_buckets[__bkt]) 25082: _M_buckets[__bkt] = __prev_n; 25082: __prev_n = __this_n; 25082: } 25082: } 25082: catch(...) 25082: { 25082: clear(); 25082: if (__buckets) 25082: _M_deallocate_buckets(); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_reset() noexcept 25082: { 25082: _M_rehash_policy._M_reset(); 25082: _M_bucket_count = 1; 25082: _M_single_bucket = nullptr; 25082: _M_buckets = &_M_single_bucket; 25082: _M_before_begin._M_nxt = nullptr; 25082: _M_element_count = 0; 25082: } 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_move_assign(_Hashtable&& __ht, std::true_type) 25082: { 25082: this->_M_deallocate_nodes(_M_begin()); 25082: _M_deallocate_buckets(); 25082: __hashtable_base::operator=(std::move(__ht)); 25082: _M_rehash_policy = __ht._M_rehash_policy; 25082: if (!__ht._M_uses_single_bucket()) 25082: _M_buckets = __ht._M_buckets; 25082: else 25082: { 25082: _M_buckets = &_M_single_bucket; 25082: _M_single_bucket = __ht._M_single_bucket; 25082: } 25082: _M_bucket_count = __ht._M_bucket_count; 25082: _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; 25082: _M_element_count = __ht._M_element_count; 25082: std::__alloc_on_move(this->_M_node_allocator(), __ht._M_node_allocator()); 25082: 25082: 25082: 25082: if (_M_begin()) 25082: _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; 25082: __ht._M_reset(); 25082: } 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_move_assign(_Hashtable&& __ht, std::false_type) 25082: { 25082: if (__ht._M_node_allocator() == this->_M_node_allocator()) 25082: _M_move_assign(std::move(__ht), std::true_type()); 25082: else 25082: { 25082: 25082: __bucket_type* __former_buckets = nullptr; 25082: size_type __former_bucket_count = _M_bucket_count; 25082: const __rehash_state& __former_state = _M_rehash_policy._M_state(); 25082: 25082: if (_M_bucket_count != __ht._M_bucket_count) 25082: { 25082: __former_buckets = _M_buckets; 25082: _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); 25082: _M_bucket_count = __ht._M_bucket_count; 25082: } 25082: else 25082: __builtin_memset(_M_buckets, 0, 25082: _M_bucket_count * sizeof(__bucket_type)); 25082: 25082: try 25082: { 25082: __hashtable_base::operator=(std::move(__ht)); 25082: _M_element_count = __ht._M_element_count; 25082: _M_rehash_policy = __ht._M_rehash_policy; 25082: __reuse_or_alloc_node_type __roan(_M_begin(), *this); 25082: _M_before_begin._M_nxt = nullptr; 25082: _M_assign(__ht, 25082: [&__roan](__node_type* __n) 25082: { return __roan(std::move_if_noexcept(__n->_M_v())); }); 25082: 25082: if (__former_buckets) 25082: _M_deallocate_buckets(__former_buckets, __former_bucket_count); 25082: __ht.clear(); 25082: } 25082: catch(...) 25082: { 25082: if (__former_buckets) 25082: { 25082: _M_deallocate_buckets(); 25082: _M_rehash_policy._M_reset(__former_state); 25082: _M_buckets = __former_buckets; 25082: _M_bucket_count = __former_bucket_count; 25082: } 25082: __builtin_memset(_M_buckets, 0, 25082: _M_bucket_count * sizeof(__bucket_type)); 25082: throw; 25082: } 25082: } 25082: } 25082: 25082: template 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _Hashtable(const _Hashtable& __ht) 25082: : __hashtable_base(__ht), 25082: __map_base(__ht), 25082: __rehash_base(__ht), 25082: __hashtable_alloc( 25082: __node_alloc_traits::_S_select_on_copy(__ht._M_node_allocator())), 25082: _M_buckets(nullptr), 25082: _M_bucket_count(__ht._M_bucket_count), 25082: _M_element_count(__ht._M_element_count), 25082: _M_rehash_policy(__ht._M_rehash_policy) 25082: { 25082: _M_assign(__ht, 25082: [this](const __node_type* __n) 25082: { return this->_M_allocate_node(__n->_M_v()); }); 25082: } 25082: 25082: template 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _Hashtable(_Hashtable&& __ht) noexcept 25082: : __hashtable_base(__ht), 25082: __map_base(__ht), 25082: __rehash_base(__ht), 25082: __hashtable_alloc(std::move(__ht._M_base_alloc())), 25082: _M_buckets(__ht._M_buckets), 25082: _M_bucket_count(__ht._M_bucket_count), 25082: _M_before_begin(__ht._M_before_begin._M_nxt), 25082: _M_element_count(__ht._M_element_count), 25082: _M_rehash_policy(__ht._M_rehash_policy) 25082: { 25082: 25082: if (__ht._M_uses_single_bucket()) 25082: { 25082: _M_buckets = &_M_single_bucket; 25082: _M_single_bucket = __ht._M_single_bucket; 25082: } 25082: 25082: 25082: 25082: if (_M_begin()) 25082: _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; 25082: 25082: __ht._M_reset(); 25082: } 25082: 25082: template 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _Hashtable(const _Hashtable& __ht, const allocator_type& __a) 25082: : __hashtable_base(__ht), 25082: __map_base(__ht), 25082: __rehash_base(__ht), 25082: __hashtable_alloc(__node_alloc_type(__a)), 25082: _M_buckets(), 25082: _M_bucket_count(__ht._M_bucket_count), 25082: _M_element_count(__ht._M_element_count), 25082: _M_rehash_policy(__ht._M_rehash_policy) 25082: { 25082: _M_assign(__ht, 25082: [this](const __node_type* __n) 25082: { return this->_M_allocate_node(__n->_M_v()); }); 25082: } 25082: 25082: template 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _Hashtable(_Hashtable&& __ht, const allocator_type& __a) 25082: : __hashtable_base(__ht), 25082: __map_base(__ht), 25082: __rehash_base(__ht), 25082: __hashtable_alloc(__node_alloc_type(__a)), 25082: _M_buckets(nullptr), 25082: _M_bucket_count(__ht._M_bucket_count), 25082: _M_element_count(__ht._M_element_count), 25082: _M_rehash_policy(__ht._M_rehash_policy) 25082: { 25082: if (__ht._M_node_allocator() == this->_M_node_allocator()) 25082: { 25082: if (__ht._M_uses_single_bucket()) 25082: { 25082: _M_buckets = &_M_single_bucket; 25082: _M_single_bucket = __ht._M_single_bucket; 25082: } 25082: else 25082: _M_buckets = __ht._M_buckets; 25082: 25082: _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; 25082: 25082: 25082: if (_M_begin()) 25082: _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; 25082: __ht._M_reset(); 25082: } 25082: else 25082: { 25082: _M_assign(__ht, 25082: [this](__node_type* __n) 25082: { 25082: return this->_M_allocate_node( 25082: std::move_if_noexcept(__n->_M_v())); 25082: }); 25082: __ht.clear(); 25082: } 25082: } 25082: 25082: template 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: ~_Hashtable() noexcept 25082: { 25082: clear(); 25082: _M_deallocate_buckets(); 25082: } 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: swap(_Hashtable& __x) 25082: noexcept(__and_<__is_nothrow_swappable<_H1>, 25082: __is_nothrow_swappable<_Equal>>::value) 25082: { 25082: 25082: 25082: 25082: this->_M_swap(__x); 25082: 25082: std::__alloc_on_swap(this->_M_node_allocator(), __x._M_node_allocator()); 25082: std::swap(_M_rehash_policy, __x._M_rehash_policy); 25082: 25082: 25082: if (this->_M_uses_single_bucket()) 25082: { 25082: if (!__x._M_uses_single_bucket()) 25082: { 25082: _M_buckets = __x._M_buckets; 25082: __x._M_buckets = &__x._M_single_bucket; 25082: } 25082: } 25082: else if (__x._M_uses_single_bucket()) 25082: { 25082: __x._M_buckets = _M_buckets; 25082: _M_buckets = &_M_single_bucket; 25082: } 25082: else 25082: std::swap(_M_buckets, __x._M_buckets); 25082: 25082: std::swap(_M_bucket_count, __x._M_bucket_count); 25082: std::swap(_M_before_begin._M_nxt, __x._M_before_begin._M_nxt); 25082: std::swap(_M_element_count, __x._M_element_count); 25082: std::swap(_M_single_bucket, __x._M_single_bucket); 25082: 25082: 25082: 25082: if (_M_begin()) 25082: _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; 25082: 25082: if (__x._M_begin()) 25082: __x._M_buckets[__x._M_bucket_index(__x._M_begin())] 25082: = &__x._M_before_begin; 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: find(const key_type& __k) 25082: -> iterator 25082: { 25082: __hash_code __code = this->_M_hash_code(__k); 25082: std::size_t __n = _M_bucket_index(__k, __code); 25082: __node_type* __p = _M_find_node(__n, __k, __code); 25082: return __p ? iterator(__p) : end(); 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: find(const key_type& __k) const 25082: -> const_iterator 25082: { 25082: __hash_code __code = this->_M_hash_code(__k); 25082: std::size_t __n = _M_bucket_index(__k, __code); 25082: __node_type* __p = _M_find_node(__n, __k, __code); 25082: return __p ? const_iterator(__p) : end(); 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: count(const key_type& __k) const 25082: -> size_type 25082: { 25082: __hash_code __code = this->_M_hash_code(__k); 25082: std::size_t __n = _M_bucket_index(__k, __code); 25082: __node_type* __p = _M_bucket_begin(__n); 25082: if (!__p) 25082: return 0; 25082: 25082: std::size_t __result = 0; 25082: for (;; __p = __p->_M_next()) 25082: { 25082: if (this->_M_equals(__k, __code, __p)) 25082: ++__result; 25082: else if (__result) 25082: 25082: 25082: 25082: break; 25082: if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __n) 25082: break; 25082: } 25082: return __result; 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: equal_range(const key_type& __k) 25082: -> pair 25082: { 25082: __hash_code __code = this->_M_hash_code(__k); 25082: std::size_t __n = _M_bucket_index(__k, __code); 25082: __node_type* __p = _M_find_node(__n, __k, __code); 25082: 25082: if (__p) 25082: { 25082: __node_type* __p1 = __p->_M_next(); 25082: while (__p1 && _M_bucket_index(__p1) == __n 25082: && this->_M_equals(__k, __code, __p1)) 25082: __p1 = __p1->_M_next(); 25082: 25082: return std::make_pair(iterator(__p), iterator(__p1)); 25082: } 25082: else 25082: return std::make_pair(end(), end()); 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: equal_range(const key_type& __k) const 25082: -> pair 25082: { 25082: __hash_code __code = this->_M_hash_code(__k); 25082: std::size_t __n = _M_bucket_index(__k, __code); 25082: __node_type* __p = _M_find_node(__n, __k, __code); 25082: 25082: if (__p) 25082: { 25082: __node_type* __p1 = __p->_M_next(); 25082: while (__p1 && _M_bucket_index(__p1) == __n 25082: && this->_M_equals(__k, __code, __p1)) 25082: __p1 = __p1->_M_next(); 25082: 25082: return std::make_pair(const_iterator(__p), const_iterator(__p1)); 25082: } 25082: else 25082: return std::make_pair(end(), end()); 25082: } 25082: 25082: 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_find_before_node(size_type __n, const key_type& __k, 25082: __hash_code __code) const 25082: -> __node_base* 25082: { 25082: __node_base* __prev_p = _M_buckets[__n]; 25082: if (!__prev_p) 25082: return nullptr; 25082: 25082: for (__node_type* __p = static_cast<__node_type*>(__prev_p->_M_nxt);; 25082: __p = __p->_M_next()) 25082: { 25082: if (this->_M_equals(__k, __code, __p)) 25082: return __prev_p; 25082: 25082: if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __n) 25082: break; 25082: __prev_p = __p; 25082: } 25082: return nullptr; 25082: } 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_insert_bucket_begin(size_type __bkt, __node_type* __node) 25082: { 25082: if (_M_buckets[__bkt]) 25082: { 25082: 25082: 25082: __node->_M_nxt = _M_buckets[__bkt]->_M_nxt; 25082: _M_buckets[__bkt]->_M_nxt = __node; 25082: } 25082: else 25082: { 25082: 25082: 25082: 25082: __node->_M_nxt = _M_before_begin._M_nxt; 25082: _M_before_begin._M_nxt = __node; 25082: if (__node->_M_nxt) 25082: 25082: 25082: _M_buckets[_M_bucket_index(__node->_M_next())] = __node; 25082: _M_buckets[__bkt] = &_M_before_begin; 25082: } 25082: } 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_remove_bucket_begin(size_type __bkt, __node_type* __next, 25082: size_type __next_bkt) 25082: { 25082: if (!__next || __next_bkt != __bkt) 25082: { 25082: 25082: 25082: if (__next) 25082: _M_buckets[__next_bkt] = _M_buckets[__bkt]; 25082: 25082: 25082: if (&_M_before_begin == _M_buckets[__bkt]) 25082: _M_before_begin._M_nxt = __next; 25082: _M_buckets[__bkt] = nullptr; 25082: } 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_get_previous_node(size_type __bkt, __node_base* __n) 25082: -> __node_base* 25082: { 25082: __node_base* __prev_n = _M_buckets[__bkt]; 25082: while (__prev_n->_M_nxt != __n) 25082: __prev_n = __prev_n->_M_nxt; 25082: return __prev_n; 25082: } 25082: 25082: template 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_emplace(std::true_type, _Args&&... __args) 25082: -> pair 25082: { 25082: 25082: __node_type* __node = this->_M_allocate_node(std::forward<_Args>(__args)...); 25082: const key_type& __k = this->_M_extract()(__node->_M_v()); 25082: __hash_code __code; 25082: try 25082: { 25082: __code = this->_M_hash_code(__k); 25082: } 25082: catch(...) 25082: { 25082: this->_M_deallocate_node(__node); 25082: throw; 25082: } 25082: 25082: size_type __bkt = _M_bucket_index(__k, __code); 25082: if (__node_type* __p = _M_find_node(__bkt, __k, __code)) 25082: { 25082: 25082: this->_M_deallocate_node(__node); 25082: return std::make_pair(iterator(__p), false); 25082: } 25082: 25082: 25082: return std::make_pair(_M_insert_unique_node(__bkt, __code, __node), 25082: true); 25082: } 25082: 25082: template 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_emplace(const_iterator __hint, std::false_type, _Args&&... __args) 25082: -> iterator 25082: { 25082: 25082: __node_type* __node = 25082: this->_M_allocate_node(std::forward<_Args>(__args)...); 25082: 25082: __hash_code __code; 25082: try 25082: { 25082: __code = this->_M_hash_code(this->_M_extract()(__node->_M_v())); 25082: } 25082: catch(...) 25082: { 25082: this->_M_deallocate_node(__node); 25082: throw; 25082: } 25082: 25082: return _M_insert_multi_node(__hint._M_cur, __code, __node); 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_insert_unique_node(size_type __bkt, __hash_code __code, 25082: __node_type* __node, size_type __n_elt) 25082: -> iterator 25082: { 25082: const __rehash_state& __saved_state = _M_rehash_policy._M_state(); 25082: std::pair __do_rehash 25082: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 25082: __n_elt); 25082: 25082: try 25082: { 25082: if (__do_rehash.first) 25082: { 25082: _M_rehash(__do_rehash.second, __saved_state); 25082: __bkt = _M_bucket_index(this->_M_extract()(__node->_M_v()), __code); 25082: } 25082: 25082: this->_M_store_code(__node, __code); 25082: 25082: 25082: _M_insert_bucket_begin(__bkt, __node); 25082: ++_M_element_count; 25082: return iterator(__node); 25082: } 25082: catch(...) 25082: { 25082: this->_M_deallocate_node(__node); 25082: throw; 25082: } 25082: } 25082: 25082: 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_insert_multi_node(__node_type* __hint, __hash_code __code, 25082: __node_type* __node) 25082: -> iterator 25082: { 25082: const __rehash_state& __saved_state = _M_rehash_policy._M_state(); 25082: std::pair __do_rehash 25082: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); 25082: 25082: try 25082: { 25082: if (__do_rehash.first) 25082: _M_rehash(__do_rehash.second, __saved_state); 25082: 25082: this->_M_store_code(__node, __code); 25082: const key_type& __k = this->_M_extract()(__node->_M_v()); 25082: size_type __bkt = _M_bucket_index(__k, __code); 25082: 25082: 25082: 25082: __node_base* __prev 25082: = __builtin_expect(__hint != nullptr, false) 25082: && this->_M_equals(__k, __code, __hint) 25082: ? __hint 25082: : _M_find_before_node(__bkt, __k, __code); 25082: if (__prev) 25082: { 25082: 25082: __node->_M_nxt = __prev->_M_nxt; 25082: __prev->_M_nxt = __node; 25082: if (__builtin_expect(__prev == __hint, false)) 25082: 25082: 25082: if (__node->_M_nxt 25082: && !this->_M_equals(__k, __code, __node->_M_next())) 25082: { 25082: size_type __next_bkt = _M_bucket_index(__node->_M_next()); 25082: if (__next_bkt != __bkt) 25082: _M_buckets[__next_bkt] = __node; 25082: } 25082: } 25082: else 25082: 25082: 25082: 25082: 25082: _M_insert_bucket_begin(__bkt, __node); 25082: ++_M_element_count; 25082: return iterator(__node); 25082: } 25082: catch(...) 25082: { 25082: this->_M_deallocate_node(__node); 25082: throw; 25082: } 25082: } 25082: 25082: 25082: template 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_insert(_Arg&& __v, const _NodeGenerator& __node_gen, true_type, 25082: size_type __n_elt) 25082: -> pair 25082: { 25082: const key_type& __k = this->_M_extract()(__v); 25082: __hash_code __code = this->_M_hash_code(__k); 25082: size_type __bkt = _M_bucket_index(__k, __code); 25082: 25082: __node_type* __n = _M_find_node(__bkt, __k, __code); 25082: if (__n) 25082: return std::make_pair(iterator(__n), false); 25082: 25082: __n = __node_gen(std::forward<_Arg>(__v)); 25082: return { _M_insert_unique_node(__bkt, __code, __n, __n_elt), true }; 25082: } 25082: 25082: 25082: template 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_insert(const_iterator __hint, _Arg&& __v, 25082: const _NodeGenerator& __node_gen, false_type) 25082: -> iterator 25082: { 25082: 25082: 25082: __hash_code __code = this->_M_hash_code(this->_M_extract()(__v)); 25082: 25082: 25082: __node_type* __node = __node_gen(std::forward<_Arg>(__v)); 25082: 25082: return _M_insert_multi_node(__hint._M_cur, __code, __node); 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: erase(const_iterator __it) 25082: -> iterator 25082: { 25082: __node_type* __n = __it._M_cur; 25082: std::size_t __bkt = _M_bucket_index(__n); 25082: 25082: 25082: 25082: 25082: __node_base* __prev_n = _M_get_previous_node(__bkt, __n); 25082: return _M_erase(__bkt, __prev_n, __n); 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_erase(size_type __bkt, __node_base* __prev_n, __node_type* __n) 25082: -> iterator 25082: { 25082: if (__prev_n == _M_buckets[__bkt]) 25082: _M_remove_bucket_begin(__bkt, __n->_M_next(), 25082: __n->_M_nxt ? _M_bucket_index(__n->_M_next()) : 0); 25082: else if (__n->_M_nxt) 25082: { 25082: size_type __next_bkt = _M_bucket_index(__n->_M_next()); 25082: if (__next_bkt != __bkt) 25082: _M_buckets[__next_bkt] = __prev_n; 25082: } 25082: 25082: __prev_n->_M_nxt = __n->_M_nxt; 25082: iterator __result(__n->_M_next()); 25082: this->_M_deallocate_node(__n); 25082: --_M_element_count; 25082: 25082: return __result; 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_erase(std::true_type, const key_type& __k) 25082: -> size_type 25082: { 25082: __hash_code __code = this->_M_hash_code(__k); 25082: std::size_t __bkt = _M_bucket_index(__k, __code); 25082: 25082: 25082: __node_base* __prev_n = _M_find_before_node(__bkt, __k, __code); 25082: if (!__prev_n) 25082: return 0; 25082: 25082: 25082: __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt); 25082: _M_erase(__bkt, __prev_n, __n); 25082: return 1; 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_erase(std::false_type, const key_type& __k) 25082: -> size_type 25082: { 25082: __hash_code __code = this->_M_hash_code(__k); 25082: std::size_t __bkt = _M_bucket_index(__k, __code); 25082: 25082: 25082: __node_base* __prev_n = _M_find_before_node(__bkt, __k, __code); 25082: if (!__prev_n) 25082: return 0; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt); 25082: __node_type* __n_last = __n; 25082: std::size_t __n_last_bkt = __bkt; 25082: do 25082: { 25082: __n_last = __n_last->_M_next(); 25082: if (!__n_last) 25082: break; 25082: __n_last_bkt = _M_bucket_index(__n_last); 25082: } 25082: while (__n_last_bkt == __bkt && this->_M_equals(__k, __code, __n_last)); 25082: 25082: 25082: size_type __result = 0; 25082: do 25082: { 25082: __node_type* __p = __n->_M_next(); 25082: this->_M_deallocate_node(__n); 25082: __n = __p; 25082: ++__result; 25082: --_M_element_count; 25082: } 25082: while (__n != __n_last); 25082: 25082: if (__prev_n == _M_buckets[__bkt]) 25082: _M_remove_bucket_begin(__bkt, __n_last, __n_last_bkt); 25082: else if (__n_last && __n_last_bkt != __bkt) 25082: _M_buckets[__n_last_bkt] = __prev_n; 25082: __prev_n->_M_nxt = __n_last; 25082: return __result; 25082: } 25082: 25082: template 25082: auto 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: erase(const_iterator __first, const_iterator __last) 25082: -> iterator 25082: { 25082: __node_type* __n = __first._M_cur; 25082: __node_type* __last_n = __last._M_cur; 25082: if (__n == __last_n) 25082: return iterator(__n); 25082: 25082: std::size_t __bkt = _M_bucket_index(__n); 25082: 25082: __node_base* __prev_n = _M_get_previous_node(__bkt, __n); 25082: bool __is_bucket_begin = __n == _M_bucket_begin(__bkt); 25082: std::size_t __n_bkt = __bkt; 25082: for (;;) 25082: { 25082: do 25082: { 25082: __node_type* __tmp = __n; 25082: __n = __n->_M_next(); 25082: this->_M_deallocate_node(__tmp); 25082: --_M_element_count; 25082: if (!__n) 25082: break; 25082: __n_bkt = _M_bucket_index(__n); 25082: } 25082: while (__n != __last_n && __n_bkt == __bkt); 25082: if (__is_bucket_begin) 25082: _M_remove_bucket_begin(__bkt, __n, __n_bkt); 25082: if (__n == __last_n) 25082: break; 25082: __is_bucket_begin = true; 25082: __bkt = __n_bkt; 25082: } 25082: 25082: if (__n && (__n_bkt != __bkt || __is_bucket_begin)) 25082: _M_buckets[__n_bkt] = __prev_n; 25082: __prev_n->_M_nxt = __n; 25082: return iterator(__n); 25082: } 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: clear() noexcept 25082: { 25082: this->_M_deallocate_nodes(_M_begin()); 25082: __builtin_memset(_M_buckets, 0, _M_bucket_count * sizeof(__bucket_type)); 25082: _M_element_count = 0; 25082: _M_before_begin._M_nxt = nullptr; 25082: } 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: rehash(size_type __n) 25082: { 25082: const __rehash_state& __saved_state = _M_rehash_policy._M_state(); 25082: std::size_t __buckets 25082: = std::max(_M_rehash_policy._M_bkt_for_elements(_M_element_count + 1), 25082: __n); 25082: __buckets = _M_rehash_policy._M_next_bkt(__buckets); 25082: 25082: if (__buckets != _M_bucket_count) 25082: _M_rehash(__buckets, __saved_state); 25082: else 25082: 25082: _M_rehash_policy._M_reset(__saved_state); 25082: } 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_rehash(size_type __n, const __rehash_state& __state) 25082: { 25082: try 25082: { 25082: _M_rehash_aux(__n, __unique_keys()); 25082: } 25082: catch(...) 25082: { 25082: 25082: 25082: _M_rehash_policy._M_reset(__state); 25082: throw; 25082: } 25082: } 25082: 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_rehash_aux(size_type __n, std::true_type) 25082: { 25082: __bucket_type* __new_buckets = _M_allocate_buckets(__n); 25082: __node_type* __p = _M_begin(); 25082: _M_before_begin._M_nxt = nullptr; 25082: std::size_t __bbegin_bkt = 0; 25082: while (__p) 25082: { 25082: __node_type* __next = __p->_M_next(); 25082: std::size_t __bkt = __hash_code_base::_M_bucket_index(__p, __n); 25082: if (!__new_buckets[__bkt]) 25082: { 25082: __p->_M_nxt = _M_before_begin._M_nxt; 25082: _M_before_begin._M_nxt = __p; 25082: __new_buckets[__bkt] = &_M_before_begin; 25082: if (__p->_M_nxt) 25082: __new_buckets[__bbegin_bkt] = __p; 25082: __bbegin_bkt = __bkt; 25082: } 25082: else 25082: { 25082: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; 25082: __new_buckets[__bkt]->_M_nxt = __p; 25082: } 25082: __p = __next; 25082: } 25082: 25082: _M_deallocate_buckets(); 25082: _M_bucket_count = __n; 25082: _M_buckets = __new_buckets; 25082: } 25082: 25082: 25082: 25082: template 25082: void 25082: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 25082: _H1, _H2, _Hash, _RehashPolicy, _Traits>:: 25082: _M_rehash_aux(size_type __n, std::false_type) 25082: { 25082: __bucket_type* __new_buckets = _M_allocate_buckets(__n); 25082: 25082: __node_type* __p = _M_begin(); 25082: _M_before_begin._M_nxt = nullptr; 25082: std::size_t __bbegin_bkt = 0; 25082: std::size_t __prev_bkt = 0; 25082: __node_type* __prev_p = nullptr; 25082: bool __check_bucket = false; 25082: 25082: while (__p) 25082: { 25082: __node_type* __next = __p->_M_next(); 25082: std::size_t __bkt = __hash_code_base::_M_bucket_index(__p, __n); 25082: 25082: if (__prev_p && __prev_bkt == __bkt) 25082: { 25082: 25082: 25082: 25082: __p->_M_nxt = __prev_p->_M_nxt; 25082: __prev_p->_M_nxt = __p; 25082: 25082: 25082: 25082: 25082: 25082: 25082: __check_bucket = true; 25082: } 25082: else 25082: { 25082: if (__check_bucket) 25082: { 25082: 25082: 25082: if (__prev_p->_M_nxt) 25082: { 25082: std::size_t __next_bkt 25082: = __hash_code_base::_M_bucket_index(__prev_p->_M_next(), 25082: __n); 25082: if (__next_bkt != __prev_bkt) 25082: __new_buckets[__next_bkt] = __prev_p; 25082: } 25082: __check_bucket = false; 25082: } 25082: 25082: if (!__new_buckets[__bkt]) 25082: { 25082: __p->_M_nxt = _M_before_begin._M_nxt; 25082: _M_before_begin._M_nxt = __p; 25082: __new_buckets[__bkt] = &_M_before_begin; 25082: if (__p->_M_nxt) 25082: __new_buckets[__bbegin_bkt] = __p; 25082: __bbegin_bkt = __bkt; 25082: } 25082: else 25082: { 25082: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; 25082: __new_buckets[__bkt]->_M_nxt = __p; 25082: } 25082: } 25082: __prev_p = __p; 25082: __prev_bkt = __bkt; 25082: __p = __next; 25082: } 25082: 25082: if (__check_bucket && __prev_p->_M_nxt) 25082: { 25082: std::size_t __next_bkt 25082: = __hash_code_base::_M_bucket_index(__prev_p->_M_next(), __n); 25082: if (__next_bkt != __prev_bkt) 25082: __new_buckets[__next_bkt] = __prev_p; 25082: } 25082: 25082: _M_deallocate_buckets(); 25082: _M_bucket_count = __n; 25082: _M_buckets = __new_buckets; 25082: } 25082: 25082: 25082: template class _Hash_merge_helper { }; 25082: 25082: 25082: 25082: } 25082: # 47 "/usr/include/c++/8/unordered_set" 2 3 25082: # 1 "/usr/include/c++/8/bits/unordered_set.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: template 25082: using __uset_traits = __detail::_Hashtable_traits<_Cache, true, true>; 25082: 25082: template, 25082: typename _Pred = std::equal_to<_Value>, 25082: typename _Alloc = std::allocator<_Value>, 25082: typename _Tr = __uset_traits<__cache_default<_Value, _Hash>::value>> 25082: using __uset_hashtable = _Hashtable<_Value, _Value, _Alloc, 25082: __detail::_Identity, _Pred, _Hash, 25082: __detail::_Mod_range_hashing, 25082: __detail::_Default_ranged_hash, 25082: __detail::_Prime_rehash_policy, _Tr>; 25082: 25082: 25082: template 25082: using __umset_traits = __detail::_Hashtable_traits<_Cache, true, false>; 25082: 25082: template, 25082: typename _Pred = std::equal_to<_Value>, 25082: typename _Alloc = std::allocator<_Value>, 25082: typename _Tr = __umset_traits<__cache_default<_Value, _Hash>::value>> 25082: using __umset_hashtable = _Hashtable<_Value, _Value, _Alloc, 25082: __detail::_Identity, 25082: _Pred, _Hash, 25082: __detail::_Mod_range_hashing, 25082: __detail::_Default_ranged_hash, 25082: __detail::_Prime_rehash_policy, _Tr>; 25082: 25082: template 25082: class unordered_multiset; 25082: # 93 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: template, 25082: typename _Pred = equal_to<_Value>, 25082: typename _Alloc = allocator<_Value>> 25082: class unordered_set 25082: { 25082: typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; 25082: _Hashtable _M_h; 25082: 25082: public: 25082: 25082: 25082: 25082: typedef typename _Hashtable::key_type key_type; 25082: typedef typename _Hashtable::value_type value_type; 25082: typedef typename _Hashtable::hasher hasher; 25082: typedef typename _Hashtable::key_equal key_equal; 25082: typedef typename _Hashtable::allocator_type allocator_type; 25082: 25082: 25082: 25082: 25082: typedef typename _Hashtable::pointer pointer; 25082: typedef typename _Hashtable::const_pointer const_pointer; 25082: typedef typename _Hashtable::reference reference; 25082: typedef typename _Hashtable::const_reference const_reference; 25082: typedef typename _Hashtable::iterator iterator; 25082: typedef typename _Hashtable::const_iterator const_iterator; 25082: typedef typename _Hashtable::local_iterator local_iterator; 25082: typedef typename _Hashtable::const_local_iterator const_local_iterator; 25082: typedef typename _Hashtable::size_type size_type; 25082: typedef typename _Hashtable::difference_type difference_type; 25082: 25082: 25082: 25082: using node_type = typename _Hashtable::node_type; 25082: using insert_return_type = typename _Hashtable::insert_return_type; 25082: 25082: 25082: 25082: 25082: 25082: unordered_set() = default; 25082: # 144 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: explicit 25082: unordered_set(size_type __n, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__n, __hf, __eql, __a) 25082: { } 25082: # 165 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: template 25082: unordered_set(_InputIterator __first, _InputIterator __last, 25082: size_type __n = 0, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__first, __last, __n, __hf, __eql, __a) 25082: { } 25082: 25082: 25082: unordered_set(const unordered_set&) = default; 25082: 25082: 25082: unordered_set(unordered_set&&) = default; 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: unordered_set(const allocator_type& __a) 25082: : _M_h(__a) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: unordered_set(const unordered_set& __uset, 25082: const allocator_type& __a) 25082: : _M_h(__uset._M_h, __a) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: unordered_set(unordered_set&& __uset, 25082: const allocator_type& __a) 25082: : _M_h(std::move(__uset._M_h), __a) 25082: { } 25082: # 220 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: unordered_set(initializer_list __l, 25082: size_type __n = 0, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__l, __n, __hf, __eql, __a) 25082: { } 25082: 25082: unordered_set(size_type __n, const allocator_type& __a) 25082: : unordered_set(__n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: unordered_set(size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_set(__n, __hf, key_equal(), __a) 25082: { } 25082: 25082: template 25082: unordered_set(_InputIterator __first, _InputIterator __last, 25082: size_type __n, 25082: const allocator_type& __a) 25082: : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: template 25082: unordered_set(_InputIterator __first, _InputIterator __last, 25082: size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_set(__first, __last, __n, __hf, key_equal(), __a) 25082: { } 25082: 25082: unordered_set(initializer_list __l, 25082: size_type __n, 25082: const allocator_type& __a) 25082: : unordered_set(__l, __n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: unordered_set(initializer_list __l, 25082: size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_set(__l, __n, __hf, key_equal(), __a) 25082: { } 25082: 25082: 25082: unordered_set& 25082: operator=(const unordered_set&) = default; 25082: 25082: 25082: unordered_set& 25082: operator=(unordered_set&&) = default; 25082: # 282 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: unordered_set& 25082: operator=(initializer_list __l) 25082: { 25082: _M_h = __l; 25082: return *this; 25082: } 25082: 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return _M_h.get_allocator(); } 25082: 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return _M_h.empty(); } 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_h.size(); } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _M_h.max_size(); } 25082: # 318 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: begin() noexcept 25082: { return _M_h.begin(); } 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return _M_h.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() noexcept 25082: { return _M_h.end(); } 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return _M_h.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return _M_h.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return _M_h.end(); } 25082: # 374 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: template 25082: std::pair 25082: emplace(_Args&&... __args) 25082: { return _M_h.emplace(std::forward<_Args>(__args)...); } 25082: # 400 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: template 25082: iterator 25082: emplace_hint(const_iterator __pos, _Args&&... __args) 25082: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } 25082: # 419 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: std::pair 25082: insert(const value_type& __x) 25082: { return _M_h.insert(__x); } 25082: 25082: std::pair 25082: insert(value_type&& __x) 25082: { return _M_h.insert(std::move(__x)); } 25082: # 448 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: insert(const_iterator __hint, const value_type& __x) 25082: { return _M_h.insert(__hint, __x); } 25082: 25082: iterator 25082: insert(const_iterator __hint, value_type&& __x) 25082: { return _M_h.insert(__hint, std::move(__x)); } 25082: # 466 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: template 25082: void 25082: insert(_InputIterator __first, _InputIterator __last) 25082: { _M_h.insert(__first, __last); } 25082: # 478 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: void 25082: insert(initializer_list __l) 25082: { _M_h.insert(__l); } 25082: 25082: 25082: 25082: node_type 25082: extract(const_iterator __pos) 25082: { 25082: ; 25082: return _M_h.extract(__pos); 25082: } 25082: 25082: 25082: node_type 25082: extract(const key_type& __key) 25082: { return _M_h.extract(__key); } 25082: 25082: 25082: insert_return_type 25082: insert(node_type&& __nh) 25082: { return _M_h._M_reinsert_node(std::move(__nh)); } 25082: 25082: 25082: iterator 25082: insert(const_iterator, node_type&& __nh) 25082: { return _M_h._M_reinsert_node(std::move(__nh)).position; } 25082: # 521 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: erase(const_iterator __position) 25082: { return _M_h.erase(__position); } 25082: 25082: 25082: iterator 25082: erase(iterator __position) 25082: { return _M_h.erase(__position); } 25082: # 543 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: size_type 25082: erase(const key_type& __x) 25082: { return _M_h.erase(__x); } 25082: # 561 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: erase(const_iterator __first, const_iterator __last) 25082: { return _M_h.erase(__first, __last); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: clear() noexcept 25082: { _M_h.clear(); } 25082: # 584 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: void 25082: swap(unordered_set& __x) 25082: noexcept( noexcept(_M_h.swap(__x._M_h)) ) 25082: { _M_h.swap(__x._M_h); } 25082: 25082: 25082: template 25082: friend class std::_Hash_merge_helper; 25082: 25082: template 25082: void 25082: merge(unordered_set<_Value, _H2, _P2, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Hash_merge_helper; 25082: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(unordered_set<_Value, _H2, _P2, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: template 25082: void 25082: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Hash_merge_helper; 25082: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: hasher 25082: hash_function() const 25082: { return _M_h.hash_function(); } 25082: 25082: 25082: 25082: key_equal 25082: key_eq() const 25082: { return _M_h.key_eq(); } 25082: # 648 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: find(const key_type& __x) 25082: { return _M_h.find(__x); } 25082: 25082: const_iterator 25082: find(const key_type& __x) const 25082: { return _M_h.find(__x); } 25082: # 666 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: size_type 25082: count(const key_type& __x) const 25082: { return _M_h.count(__x); } 25082: # 679 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: std::pair 25082: equal_range(const key_type& __x) 25082: { return _M_h.equal_range(__x); } 25082: 25082: std::pair 25082: equal_range(const key_type& __x) const 25082: { return _M_h.equal_range(__x); } 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket_count() const noexcept 25082: { return _M_h.bucket_count(); } 25082: 25082: 25082: size_type 25082: max_bucket_count() const noexcept 25082: { return _M_h.max_bucket_count(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket_size(size_type __n) const 25082: { return _M_h.bucket_size(__n); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket(const key_type& __key) const 25082: { return _M_h.bucket(__key); } 25082: # 725 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: local_iterator 25082: begin(size_type __n) 25082: { return _M_h.begin(__n); } 25082: 25082: const_local_iterator 25082: begin(size_type __n) const 25082: { return _M_h.begin(__n); } 25082: 25082: const_local_iterator 25082: cbegin(size_type __n) const 25082: { return _M_h.cbegin(__n); } 25082: # 745 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: local_iterator 25082: end(size_type __n) 25082: { return _M_h.end(__n); } 25082: 25082: const_local_iterator 25082: end(size_type __n) const 25082: { return _M_h.end(__n); } 25082: 25082: const_local_iterator 25082: cend(size_type __n) const 25082: { return _M_h.cend(__n); } 25082: 25082: 25082: 25082: 25082: 25082: float 25082: load_factor() const noexcept 25082: { return _M_h.load_factor(); } 25082: 25082: 25082: 25082: float 25082: max_load_factor() const noexcept 25082: { return _M_h.max_load_factor(); } 25082: 25082: 25082: 25082: 25082: 25082: void 25082: max_load_factor(float __z) 25082: { _M_h.max_load_factor(__z); } 25082: # 786 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: void 25082: rehash(size_type __n) 25082: { _M_h.rehash(__n); } 25082: # 797 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: void 25082: reserve(size_type __n) 25082: { _M_h.reserve(__n); } 25082: 25082: template 25082: friend bool 25082: operator==(const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&, 25082: const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&); 25082: }; 25082: 25082: 25082: 25082: template::value_type>, 25082: typename _Pred = 25082: equal_to::value_type>, 25082: typename _Allocator = 25082: allocator::value_type>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_set(_InputIterator, _InputIterator, 25082: unordered_set::size_type = {}, 25082: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) 25082: -> unordered_set::value_type, 25082: _Hash, _Pred, _Allocator>; 25082: 25082: template, 25082: typename _Pred = equal_to<_Tp>, 25082: typename _Allocator = allocator<_Tp>, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_set(initializer_list<_Tp>, 25082: unordered_set::size_type = {}, 25082: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) 25082: -> unordered_set<_Tp, _Hash, _Pred, _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_set(_InputIterator, _InputIterator, 25082: unordered_set::size_type, _Allocator) 25082: -> unordered_set::value_type, 25082: hash< 25082: typename iterator_traits<_InputIterator>::value_type>, 25082: equal_to< 25082: typename iterator_traits<_InputIterator>::value_type>, 25082: _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_set(_InputIterator, _InputIterator, 25082: unordered_set::size_type, 25082: _Hash, _Allocator) 25082: -> unordered_set::value_type, 25082: _Hash, 25082: equal_to< 25082: typename iterator_traits<_InputIterator>::value_type>, 25082: _Allocator>; 25082: 25082: template> 25082: unordered_set(initializer_list<_Tp>, 25082: unordered_set::size_type, _Allocator) 25082: -> unordered_set<_Tp, hash<_Tp>, equal_to<_Tp>, _Allocator>; 25082: 25082: template> 25082: unordered_set(initializer_list<_Tp>, 25082: unordered_set::size_type, _Hash, _Allocator) 25082: -> unordered_set<_Tp, _Hash, equal_to<_Tp>, _Allocator>; 25082: # 891 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: template, 25082: typename _Pred = equal_to<_Value>, 25082: typename _Alloc = allocator<_Value>> 25082: class unordered_multiset 25082: { 25082: typedef __umset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; 25082: _Hashtable _M_h; 25082: 25082: public: 25082: 25082: 25082: 25082: typedef typename _Hashtable::key_type key_type; 25082: typedef typename _Hashtable::value_type value_type; 25082: typedef typename _Hashtable::hasher hasher; 25082: typedef typename _Hashtable::key_equal key_equal; 25082: typedef typename _Hashtable::allocator_type allocator_type; 25082: 25082: 25082: 25082: 25082: typedef typename _Hashtable::pointer pointer; 25082: typedef typename _Hashtable::const_pointer const_pointer; 25082: typedef typename _Hashtable::reference reference; 25082: typedef typename _Hashtable::const_reference const_reference; 25082: typedef typename _Hashtable::iterator iterator; 25082: typedef typename _Hashtable::const_iterator const_iterator; 25082: typedef typename _Hashtable::local_iterator local_iterator; 25082: typedef typename _Hashtable::const_local_iterator const_local_iterator; 25082: typedef typename _Hashtable::size_type size_type; 25082: typedef typename _Hashtable::difference_type difference_type; 25082: 25082: 25082: 25082: using node_type = typename _Hashtable::node_type; 25082: 25082: 25082: 25082: 25082: 25082: unordered_multiset() = default; 25082: # 941 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: explicit 25082: unordered_multiset(size_type __n, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__n, __hf, __eql, __a) 25082: { } 25082: # 962 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: template 25082: unordered_multiset(_InputIterator __first, _InputIterator __last, 25082: size_type __n = 0, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__first, __last, __n, __hf, __eql, __a) 25082: { } 25082: 25082: 25082: unordered_multiset(const unordered_multiset&) = default; 25082: 25082: 25082: unordered_multiset(unordered_multiset&&) = default; 25082: # 988 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: unordered_multiset(initializer_list __l, 25082: size_type __n = 0, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__l, __n, __hf, __eql, __a) 25082: { } 25082: 25082: 25082: unordered_multiset& 25082: operator=(const unordered_multiset&) = default; 25082: 25082: 25082: unordered_multiset& 25082: operator=(unordered_multiset&&) = default; 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: unordered_multiset(const allocator_type& __a) 25082: : _M_h(__a) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: unordered_multiset(const unordered_multiset& __umset, 25082: const allocator_type& __a) 25082: : _M_h(__umset._M_h, __a) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: unordered_multiset(unordered_multiset&& __umset, 25082: const allocator_type& __a) 25082: : _M_h(std::move(__umset._M_h), __a) 25082: { } 25082: 25082: unordered_multiset(size_type __n, const allocator_type& __a) 25082: : unordered_multiset(__n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: unordered_multiset(size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_multiset(__n, __hf, key_equal(), __a) 25082: { } 25082: 25082: template 25082: unordered_multiset(_InputIterator __first, _InputIterator __last, 25082: size_type __n, 25082: const allocator_type& __a) 25082: : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: template 25082: unordered_multiset(_InputIterator __first, _InputIterator __last, 25082: size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) 25082: { } 25082: 25082: unordered_multiset(initializer_list __l, 25082: size_type __n, 25082: const allocator_type& __a) 25082: : unordered_multiset(__l, __n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: unordered_multiset(initializer_list __l, 25082: size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_multiset(__l, __n, __hf, key_equal(), __a) 25082: { } 25082: # 1079 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: unordered_multiset& 25082: operator=(initializer_list __l) 25082: { 25082: _M_h = __l; 25082: return *this; 25082: } 25082: 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return _M_h.get_allocator(); } 25082: 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return _M_h.empty(); } 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_h.size(); } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _M_h.max_size(); } 25082: # 1115 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: begin() noexcept 25082: { return _M_h.begin(); } 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return _M_h.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() noexcept 25082: { return _M_h.end(); } 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return _M_h.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return _M_h.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return _M_h.end(); } 25082: # 1163 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: template 25082: iterator 25082: emplace(_Args&&... __args) 25082: { return _M_h.emplace(std::forward<_Args>(__args)...); } 25082: # 1185 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: template 25082: iterator 25082: emplace_hint(const_iterator __pos, _Args&&... __args) 25082: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } 25082: # 1198 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: insert(const value_type& __x) 25082: { return _M_h.insert(__x); } 25082: 25082: iterator 25082: insert(value_type&& __x) 25082: { return _M_h.insert(std::move(__x)); } 25082: # 1224 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: insert(const_iterator __hint, const value_type& __x) 25082: { return _M_h.insert(__hint, __x); } 25082: 25082: iterator 25082: insert(const_iterator __hint, value_type&& __x) 25082: { return _M_h.insert(__hint, std::move(__x)); } 25082: # 1241 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: template 25082: void 25082: insert(_InputIterator __first, _InputIterator __last) 25082: { _M_h.insert(__first, __last); } 25082: # 1253 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: void 25082: insert(initializer_list __l) 25082: { _M_h.insert(__l); } 25082: 25082: 25082: 25082: node_type 25082: extract(const_iterator __pos) 25082: { 25082: ; 25082: return _M_h.extract(__pos); 25082: } 25082: 25082: 25082: node_type 25082: extract(const key_type& __key) 25082: { return _M_h.extract(__key); } 25082: 25082: 25082: iterator 25082: insert(node_type&& __nh) 25082: { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); } 25082: 25082: 25082: iterator 25082: insert(const_iterator __hint, node_type&& __nh) 25082: { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); } 25082: # 1297 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: erase(const_iterator __position) 25082: { return _M_h.erase(__position); } 25082: 25082: 25082: iterator 25082: erase(iterator __position) 25082: { return _M_h.erase(__position); } 25082: # 1320 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: size_type 25082: erase(const key_type& __x) 25082: { return _M_h.erase(__x); } 25082: # 1340 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: erase(const_iterator __first, const_iterator __last) 25082: { return _M_h.erase(__first, __last); } 25082: # 1351 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: void 25082: clear() noexcept 25082: { _M_h.clear(); } 25082: # 1364 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: void 25082: swap(unordered_multiset& __x) 25082: noexcept( noexcept(_M_h.swap(__x._M_h)) ) 25082: { _M_h.swap(__x._M_h); } 25082: 25082: 25082: template 25082: friend class std::_Hash_merge_helper; 25082: 25082: template 25082: void 25082: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>& __source) 25082: { 25082: using _Merge_helper 25082: = _Hash_merge_helper; 25082: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: template 25082: void 25082: merge(unordered_set<_Value, _H2, _P2, _Alloc>& __source) 25082: { 25082: using _Merge_helper 25082: = _Hash_merge_helper; 25082: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(unordered_set<_Value, _H2, _P2, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: hasher 25082: hash_function() const 25082: { return _M_h.hash_function(); } 25082: 25082: 25082: 25082: key_equal 25082: key_eq() const 25082: { return _M_h.key_eq(); } 25082: # 1430 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: iterator 25082: find(const key_type& __x) 25082: { return _M_h.find(__x); } 25082: 25082: const_iterator 25082: find(const key_type& __x) const 25082: { return _M_h.find(__x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: count(const key_type& __x) const 25082: { return _M_h.count(__x); } 25082: # 1455 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: std::pair 25082: equal_range(const key_type& __x) 25082: { return _M_h.equal_range(__x); } 25082: 25082: std::pair 25082: equal_range(const key_type& __x) const 25082: { return _M_h.equal_range(__x); } 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket_count() const noexcept 25082: { return _M_h.bucket_count(); } 25082: 25082: 25082: size_type 25082: max_bucket_count() const noexcept 25082: { return _M_h.max_bucket_count(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket_size(size_type __n) const 25082: { return _M_h.bucket_size(__n); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket(const key_type& __key) const 25082: { return _M_h.bucket(__key); } 25082: # 1501 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: local_iterator 25082: begin(size_type __n) 25082: { return _M_h.begin(__n); } 25082: 25082: const_local_iterator 25082: begin(size_type __n) const 25082: { return _M_h.begin(__n); } 25082: 25082: const_local_iterator 25082: cbegin(size_type __n) const 25082: { return _M_h.cbegin(__n); } 25082: # 1521 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: local_iterator 25082: end(size_type __n) 25082: { return _M_h.end(__n); } 25082: 25082: const_local_iterator 25082: end(size_type __n) const 25082: { return _M_h.end(__n); } 25082: 25082: const_local_iterator 25082: cend(size_type __n) const 25082: { return _M_h.cend(__n); } 25082: 25082: 25082: 25082: 25082: 25082: float 25082: load_factor() const noexcept 25082: { return _M_h.load_factor(); } 25082: 25082: 25082: 25082: float 25082: max_load_factor() const noexcept 25082: { return _M_h.max_load_factor(); } 25082: 25082: 25082: 25082: 25082: 25082: void 25082: max_load_factor(float __z) 25082: { _M_h.max_load_factor(__z); } 25082: # 1562 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: void 25082: rehash(size_type __n) 25082: { _M_h.rehash(__n); } 25082: # 1573 "/usr/include/c++/8/bits/unordered_set.h" 3 25082: void 25082: reserve(size_type __n) 25082: { _M_h.reserve(__n); } 25082: 25082: template 25082: friend bool 25082: operator==(const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&, 25082: const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&); 25082: }; 25082: 25082: 25082: 25082: 25082: template::value_type>, 25082: typename _Pred = 25082: equal_to::value_type>, 25082: typename _Allocator = 25082: allocator::value_type>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_multiset(_InputIterator, _InputIterator, 25082: unordered_multiset::size_type = {}, 25082: _Hash = _Hash(), _Pred = _Pred(), 25082: _Allocator = _Allocator()) 25082: -> unordered_multiset::value_type, 25082: _Hash, _Pred, _Allocator>; 25082: 25082: template, 25082: typename _Pred = equal_to<_Tp>, 25082: typename _Allocator = allocator<_Tp>, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_multiset(initializer_list<_Tp>, 25082: unordered_multiset::size_type = {}, 25082: _Hash = _Hash(), _Pred = _Pred(), 25082: _Allocator = _Allocator()) 25082: -> unordered_multiset<_Tp, _Hash, _Pred, _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_multiset(_InputIterator, _InputIterator, 25082: unordered_multiset::size_type, _Allocator) 25082: -> unordered_multiset::value_type, 25082: hash::value_type>, 25082: equal_to::value_type>, 25082: _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_multiset(_InputIterator, _InputIterator, 25082: unordered_multiset::size_type, 25082: _Hash, _Allocator) 25082: -> unordered_multiset::value_type, 25082: _Hash, 25082: equal_to< 25082: typename 25082: iterator_traits<_InputIterator>::value_type>, 25082: _Allocator>; 25082: 25082: template> 25082: unordered_multiset(initializer_list<_Tp>, 25082: unordered_multiset::size_type, _Allocator) 25082: -> unordered_multiset<_Tp, hash<_Tp>, equal_to<_Tp>, _Allocator>; 25082: 25082: template> 25082: unordered_multiset(initializer_list<_Tp>, 25082: unordered_multiset::size_type, _Hash, _Allocator) 25082: -> unordered_multiset<_Tp, _Hash, equal_to<_Tp>, _Allocator>; 25082: 25082: 25082: 25082: template 25082: inline void 25082: swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, 25082: unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: template 25082: inline void 25082: swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, 25082: unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: template 25082: inline bool 25082: operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, 25082: const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) 25082: { return __x._M_h._M_equal(__y._M_h); } 25082: 25082: template 25082: inline bool 25082: operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, 25082: const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: template 25082: inline bool 25082: operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, 25082: const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) 25082: { return __x._M_h._M_equal(__y._M_h); } 25082: 25082: template 25082: inline bool 25082: operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, 25082: const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hash_merge_helper< 25082: std::unordered_set<_Val, _Hash1, _Eq1, _Alloc>, _Hash2, _Eq2> 25082: { 25082: private: 25082: template 25082: using unordered_set = std::unordered_set<_Tp...>; 25082: template 25082: using unordered_multiset = std::unordered_multiset<_Tp...>; 25082: 25082: friend unordered_set<_Val, _Hash1, _Eq1, _Alloc>; 25082: 25082: static auto& 25082: _S_get_table(unordered_set<_Val, _Hash2, _Eq2, _Alloc>& __set) 25082: { return __set._M_h; } 25082: 25082: static auto& 25082: _S_get_table(unordered_multiset<_Val, _Hash2, _Eq2, _Alloc>& __set) 25082: { return __set._M_h; } 25082: }; 25082: 25082: 25082: template 25082: struct _Hash_merge_helper< 25082: std::unordered_multiset<_Val, _Hash1, _Eq1, _Alloc>, 25082: _Hash2, _Eq2> 25082: { 25082: private: 25082: template 25082: using unordered_set = std::unordered_set<_Tp...>; 25082: template 25082: using unordered_multiset = std::unordered_multiset<_Tp...>; 25082: 25082: friend unordered_multiset<_Val, _Hash1, _Eq1, _Alloc>; 25082: 25082: static auto& 25082: _S_get_table(unordered_set<_Val, _Hash2, _Eq2, _Alloc>& __set) 25082: { return __set._M_h; } 25082: 25082: static auto& 25082: _S_get_table(unordered_multiset<_Val, _Hash2, _Eq2, _Alloc>& __set) 25082: { return __set._M_h; } 25082: }; 25082: 25082: 25082: 25082: } 25082: # 48 "/usr/include/c++/8/unordered_set" 2 3 25082: # 7 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Names.h" 2 3 4 25082: # 1 "/usr/include/c++/8/unordered_map" 1 3 4 25082: # 32 "/usr/include/c++/8/unordered_map" 3 4 25082: 25082: # 33 "/usr/include/c++/8/unordered_map" 3 25082: # 47 "/usr/include/c++/8/unordered_map" 3 25082: # 1 "/usr/include/c++/8/bits/unordered_map.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: template 25082: using __umap_traits = __detail::_Hashtable_traits<_Cache, false, true>; 25082: 25082: template, 25082: typename _Pred = std::equal_to<_Key>, 25082: typename _Alloc = std::allocator >, 25082: typename _Tr = __umap_traits<__cache_default<_Key, _Hash>::value>> 25082: using __umap_hashtable = _Hashtable<_Key, std::pair, 25082: _Alloc, __detail::_Select1st, 25082: _Pred, _Hash, 25082: __detail::_Mod_range_hashing, 25082: __detail::_Default_ranged_hash, 25082: __detail::_Prime_rehash_policy, _Tr>; 25082: 25082: 25082: template 25082: using __ummap_traits = __detail::_Hashtable_traits<_Cache, false, false>; 25082: 25082: template, 25082: typename _Pred = std::equal_to<_Key>, 25082: typename _Alloc = std::allocator >, 25082: typename _Tr = __ummap_traits<__cache_default<_Key, _Hash>::value>> 25082: using __ummap_hashtable = _Hashtable<_Key, std::pair, 25082: _Alloc, __detail::_Select1st, 25082: _Pred, _Hash, 25082: __detail::_Mod_range_hashing, 25082: __detail::_Default_ranged_hash, 25082: __detail::_Prime_rehash_policy, _Tr>; 25082: 25082: template 25082: class unordered_multimap; 25082: # 98 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template, 25082: typename _Pred = equal_to<_Key>, 25082: typename _Alloc = allocator>> 25082: class unordered_map 25082: { 25082: typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; 25082: _Hashtable _M_h; 25082: 25082: public: 25082: 25082: 25082: 25082: typedef typename _Hashtable::key_type key_type; 25082: typedef typename _Hashtable::value_type value_type; 25082: typedef typename _Hashtable::mapped_type mapped_type; 25082: typedef typename _Hashtable::hasher hasher; 25082: typedef typename _Hashtable::key_equal key_equal; 25082: typedef typename _Hashtable::allocator_type allocator_type; 25082: 25082: 25082: 25082: 25082: typedef typename _Hashtable::pointer pointer; 25082: typedef typename _Hashtable::const_pointer const_pointer; 25082: typedef typename _Hashtable::reference reference; 25082: typedef typename _Hashtable::const_reference const_reference; 25082: typedef typename _Hashtable::iterator iterator; 25082: typedef typename _Hashtable::const_iterator const_iterator; 25082: typedef typename _Hashtable::local_iterator local_iterator; 25082: typedef typename _Hashtable::const_local_iterator const_local_iterator; 25082: typedef typename _Hashtable::size_type size_type; 25082: typedef typename _Hashtable::difference_type difference_type; 25082: 25082: 25082: 25082: using node_type = typename _Hashtable::node_type; 25082: using insert_return_type = typename _Hashtable::insert_return_type; 25082: 25082: 25082: 25082: 25082: 25082: unordered_map() = default; 25082: # 150 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: explicit 25082: unordered_map(size_type __n, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__n, __hf, __eql, __a) 25082: { } 25082: # 171 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: unordered_map(_InputIterator __first, _InputIterator __last, 25082: size_type __n = 0, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__first, __last, __n, __hf, __eql, __a) 25082: { } 25082: 25082: 25082: unordered_map(const unordered_map&) = default; 25082: 25082: 25082: unordered_map(unordered_map&&) = default; 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: unordered_map(const allocator_type& __a) 25082: : _M_h(__a) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: unordered_map(const unordered_map& __umap, 25082: const allocator_type& __a) 25082: : _M_h(__umap._M_h, __a) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: unordered_map(unordered_map&& __umap, 25082: const allocator_type& __a) 25082: : _M_h(std::move(__umap._M_h), __a) 25082: { } 25082: # 226 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: unordered_map(initializer_list __l, 25082: size_type __n = 0, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__l, __n, __hf, __eql, __a) 25082: { } 25082: 25082: unordered_map(size_type __n, const allocator_type& __a) 25082: : unordered_map(__n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: unordered_map(size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_map(__n, __hf, key_equal(), __a) 25082: { } 25082: 25082: template 25082: unordered_map(_InputIterator __first, _InputIterator __last, 25082: size_type __n, 25082: const allocator_type& __a) 25082: : unordered_map(__first, __last, __n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: template 25082: unordered_map(_InputIterator __first, _InputIterator __last, 25082: size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_map(__first, __last, __n, __hf, key_equal(), __a) 25082: { } 25082: 25082: unordered_map(initializer_list __l, 25082: size_type __n, 25082: const allocator_type& __a) 25082: : unordered_map(__l, __n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: unordered_map(initializer_list __l, 25082: size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_map(__l, __n, __hf, key_equal(), __a) 25082: { } 25082: 25082: 25082: unordered_map& 25082: operator=(const unordered_map&) = default; 25082: 25082: 25082: unordered_map& 25082: operator=(unordered_map&&) = default; 25082: # 288 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: unordered_map& 25082: operator=(initializer_list __l) 25082: { 25082: _M_h = __l; 25082: return *this; 25082: } 25082: 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return _M_h.get_allocator(); } 25082: 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return _M_h.empty(); } 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_h.size(); } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _M_h.max_size(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: begin() noexcept 25082: { return _M_h.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return _M_h.begin(); } 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return _M_h.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() noexcept 25082: { return _M_h.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return _M_h.end(); } 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return _M_h.end(); } 25082: # 385 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: std::pair 25082: emplace(_Args&&... __args) 25082: { return _M_h.emplace(std::forward<_Args>(__args)...); } 25082: # 416 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: iterator 25082: emplace_hint(const_iterator __pos, _Args&&... __args) 25082: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } 25082: 25082: 25082: 25082: node_type 25082: extract(const_iterator __pos) 25082: { 25082: ; 25082: return _M_h.extract(__pos); 25082: } 25082: 25082: 25082: node_type 25082: extract(const key_type& __key) 25082: { return _M_h.extract(__key); } 25082: 25082: 25082: insert_return_type 25082: insert(node_type&& __nh) 25082: { return _M_h._M_reinsert_node(std::move(__nh)); } 25082: 25082: 25082: iterator 25082: insert(const_iterator, node_type&& __nh) 25082: { return _M_h._M_reinsert_node(std::move(__nh)).position; } 25082: # 468 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: pair 25082: try_emplace(const key_type& __k, _Args&&... __args) 25082: { 25082: iterator __i = find(__k); 25082: if (__i == end()) 25082: { 25082: __i = emplace(std::piecewise_construct, 25082: std::forward_as_tuple(__k), 25082: std::forward_as_tuple( 25082: std::forward<_Args>(__args)...)) 25082: .first; 25082: return {__i, true}; 25082: } 25082: return {__i, false}; 25082: } 25082: 25082: 25082: template 25082: pair 25082: try_emplace(key_type&& __k, _Args&&... __args) 25082: { 25082: iterator __i = find(__k); 25082: if (__i == end()) 25082: { 25082: __i = emplace(std::piecewise_construct, 25082: std::forward_as_tuple(std::move(__k)), 25082: std::forward_as_tuple( 25082: std::forward<_Args>(__args)...)) 25082: .first; 25082: return {__i, true}; 25082: } 25082: return {__i, false}; 25082: } 25082: # 531 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: iterator 25082: try_emplace(const_iterator __hint, const key_type& __k, 25082: _Args&&... __args) 25082: { 25082: iterator __i = find(__k); 25082: if (__i == end()) 25082: __i = emplace_hint(__hint, std::piecewise_construct, 25082: std::forward_as_tuple(__k), 25082: std::forward_as_tuple( 25082: std::forward<_Args>(__args)...)); 25082: return __i; 25082: } 25082: 25082: 25082: template 25082: iterator 25082: try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) 25082: { 25082: iterator __i = find(__k); 25082: if (__i == end()) 25082: __i = emplace_hint(__hint, std::piecewise_construct, 25082: std::forward_as_tuple(std::move(__k)), 25082: std::forward_as_tuple( 25082: std::forward<_Args>(__args)...)); 25082: return __i; 25082: } 25082: # 578 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: std::pair 25082: insert(const value_type& __x) 25082: { return _M_h.insert(__x); } 25082: 25082: 25082: 25082: std::pair 25082: insert(value_type&& __x) 25082: { return _M_h.insert(std::move(__x)); } 25082: 25082: template 25082: __enable_if_t::value, 25082: pair> 25082: insert(_Pair&& __x) 25082: { return _M_h.emplace(std::forward<_Pair>(__x)); } 25082: # 617 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: iterator 25082: insert(const_iterator __hint, const value_type& __x) 25082: { return _M_h.insert(__hint, __x); } 25082: 25082: 25082: 25082: iterator 25082: insert(const_iterator __hint, value_type&& __x) 25082: { return _M_h.insert(__hint, std::move(__x)); } 25082: 25082: template 25082: __enable_if_t::value, iterator> 25082: insert(const_iterator __hint, _Pair&& __x) 25082: { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } 25082: # 642 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: void 25082: insert(_InputIterator __first, _InputIterator __last) 25082: { _M_h.insert(__first, __last); } 25082: # 654 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: void 25082: insert(initializer_list __l) 25082: { _M_h.insert(__l); } 25082: # 681 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: pair 25082: insert_or_assign(const key_type& __k, _Obj&& __obj) 25082: { 25082: iterator __i = find(__k); 25082: if (__i == end()) 25082: { 25082: __i = emplace(std::piecewise_construct, 25082: std::forward_as_tuple(__k), 25082: std::forward_as_tuple(std::forward<_Obj>(__obj))) 25082: .first; 25082: return {__i, true}; 25082: } 25082: (*__i).second = std::forward<_Obj>(__obj); 25082: return {__i, false}; 25082: } 25082: 25082: 25082: template 25082: pair 25082: insert_or_assign(key_type&& __k, _Obj&& __obj) 25082: { 25082: iterator __i = find(__k); 25082: if (__i == end()) 25082: { 25082: __i = emplace(std::piecewise_construct, 25082: std::forward_as_tuple(std::move(__k)), 25082: std::forward_as_tuple(std::forward<_Obj>(__obj))) 25082: .first; 25082: return {__i, true}; 25082: } 25082: (*__i).second = std::forward<_Obj>(__obj); 25082: return {__i, false}; 25082: } 25082: # 742 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: iterator 25082: insert_or_assign(const_iterator __hint, const key_type& __k, 25082: _Obj&& __obj) 25082: { 25082: iterator __i = find(__k); 25082: if (__i == end()) 25082: { 25082: return emplace_hint(__hint, std::piecewise_construct, 25082: std::forward_as_tuple(__k), 25082: std::forward_as_tuple( 25082: std::forward<_Obj>(__obj))); 25082: } 25082: (*__i).second = std::forward<_Obj>(__obj); 25082: return __i; 25082: } 25082: 25082: 25082: template 25082: iterator 25082: insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) 25082: { 25082: iterator __i = find(__k); 25082: if (__i == end()) 25082: { 25082: return emplace_hint(__hint, std::piecewise_construct, 25082: std::forward_as_tuple(std::move(__k)), 25082: std::forward_as_tuple( 25082: std::forward<_Obj>(__obj))); 25082: } 25082: (*__i).second = std::forward<_Obj>(__obj); 25082: return __i; 25082: } 25082: # 791 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: iterator 25082: erase(const_iterator __position) 25082: { return _M_h.erase(__position); } 25082: 25082: 25082: iterator 25082: erase(iterator __position) 25082: { return _M_h.erase(__position); } 25082: # 813 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: size_type 25082: erase(const key_type& __x) 25082: { return _M_h.erase(__x); } 25082: # 831 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: iterator 25082: erase(const_iterator __first, const_iterator __last) 25082: { return _M_h.erase(__first, __last); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: clear() noexcept 25082: { _M_h.clear(); } 25082: # 855 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: void 25082: swap(unordered_map& __x) 25082: noexcept( noexcept(_M_h.swap(__x._M_h)) ) 25082: { _M_h.swap(__x._M_h); } 25082: 25082: 25082: template 25082: friend class std::_Hash_merge_helper; 25082: 25082: template 25082: void 25082: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Hash_merge_helper; 25082: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: template 25082: void 25082: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Hash_merge_helper; 25082: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: hasher 25082: hash_function() const 25082: { return _M_h.hash_function(); } 25082: 25082: 25082: 25082: key_equal 25082: key_eq() const 25082: { return _M_h.key_eq(); } 25082: # 919 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: iterator 25082: find(const key_type& __x) 25082: { return _M_h.find(__x); } 25082: 25082: const_iterator 25082: find(const key_type& __x) const 25082: { return _M_h.find(__x); } 25082: # 937 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: size_type 25082: count(const key_type& __x) const 25082: { return _M_h.count(__x); } 25082: # 950 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: std::pair 25082: equal_range(const key_type& __x) 25082: { return _M_h.equal_range(__x); } 25082: 25082: std::pair 25082: equal_range(const key_type& __x) const 25082: { return _M_h.equal_range(__x); } 25082: # 972 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: mapped_type& 25082: operator[](const key_type& __k) 25082: { return _M_h[__k]; } 25082: 25082: mapped_type& 25082: operator[](key_type&& __k) 25082: { return _M_h[std::move(__k)]; } 25082: # 989 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: mapped_type& 25082: at(const key_type& __k) 25082: { return _M_h.at(__k); } 25082: 25082: const mapped_type& 25082: at(const key_type& __k) const 25082: { return _M_h.at(__k); } 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket_count() const noexcept 25082: { return _M_h.bucket_count(); } 25082: 25082: 25082: size_type 25082: max_bucket_count() const noexcept 25082: { return _M_h.max_bucket_count(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket_size(size_type __n) const 25082: { return _M_h.bucket_size(__n); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket(const key_type& __key) const 25082: { return _M_h.bucket(__key); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: local_iterator 25082: begin(size_type __n) 25082: { return _M_h.begin(__n); } 25082: # 1045 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: const_local_iterator 25082: begin(size_type __n) const 25082: { return _M_h.begin(__n); } 25082: 25082: const_local_iterator 25082: cbegin(size_type __n) const 25082: { return _M_h.cbegin(__n); } 25082: # 1060 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: local_iterator 25082: end(size_type __n) 25082: { return _M_h.end(__n); } 25082: # 1071 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: const_local_iterator 25082: end(size_type __n) const 25082: { return _M_h.end(__n); } 25082: 25082: const_local_iterator 25082: cend(size_type __n) const 25082: { return _M_h.cend(__n); } 25082: 25082: 25082: 25082: 25082: 25082: float 25082: load_factor() const noexcept 25082: { return _M_h.load_factor(); } 25082: 25082: 25082: 25082: float 25082: max_load_factor() const noexcept 25082: { return _M_h.max_load_factor(); } 25082: 25082: 25082: 25082: 25082: 25082: void 25082: max_load_factor(float __z) 25082: { _M_h.max_load_factor(__z); } 25082: # 1108 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: void 25082: rehash(size_type __n) 25082: { _M_h.rehash(__n); } 25082: # 1119 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: void 25082: reserve(size_type __n) 25082: { _M_h.reserve(__n); } 25082: 25082: template 25082: friend bool 25082: operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, 25082: const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&); 25082: }; 25082: 25082: 25082: 25082: template>, 25082: typename _Pred = equal_to<__iter_key_t<_InputIterator>>, 25082: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_map(_InputIterator, _InputIterator, 25082: typename unordered_map::size_type = {}, 25082: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) 25082: -> unordered_map<__iter_key_t<_InputIterator>, 25082: __iter_val_t<_InputIterator>, 25082: _Hash, _Pred, _Allocator>; 25082: 25082: template, 25082: typename _Pred = equal_to<_Key>, 25082: typename _Allocator = allocator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_map(initializer_list>, 25082: typename unordered_map::size_type = {}, 25082: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) 25082: -> unordered_map<_Key, _Tp, _Hash, _Pred, _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_map(_InputIterator, _InputIterator, 25082: typename unordered_map::size_type, _Allocator) 25082: -> unordered_map<__iter_key_t<_InputIterator>, 25082: __iter_val_t<_InputIterator>, 25082: hash<__iter_key_t<_InputIterator>>, 25082: equal_to<__iter_key_t<_InputIterator>>, 25082: _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_map(_InputIterator, _InputIterator, _Allocator) 25082: -> unordered_map<__iter_key_t<_InputIterator>, 25082: __iter_val_t<_InputIterator>, 25082: hash<__iter_key_t<_InputIterator>>, 25082: equal_to<__iter_key_t<_InputIterator>>, 25082: _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_map(_InputIterator, _InputIterator, 25082: typename unordered_map::size_type, 25082: _Hash, _Allocator) 25082: -> unordered_map<__iter_key_t<_InputIterator>, 25082: __iter_val_t<_InputIterator>, _Hash, 25082: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; 25082: 25082: template> 25082: unordered_map(initializer_list>, 25082: typename unordered_map::size_type, 25082: _Allocator) 25082: -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; 25082: 25082: template> 25082: unordered_map(initializer_list>, _Allocator) 25082: -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; 25082: 25082: template> 25082: unordered_map(initializer_list>, 25082: typename unordered_map::size_type, 25082: _Hash, _Allocator) 25082: -> unordered_map<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>; 25082: # 1229 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template, 25082: typename _Pred = equal_to<_Key>, 25082: typename _Alloc = allocator>> 25082: class unordered_multimap 25082: { 25082: typedef __ummap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; 25082: _Hashtable _M_h; 25082: 25082: public: 25082: 25082: 25082: 25082: typedef typename _Hashtable::key_type key_type; 25082: typedef typename _Hashtable::value_type value_type; 25082: typedef typename _Hashtable::mapped_type mapped_type; 25082: typedef typename _Hashtable::hasher hasher; 25082: typedef typename _Hashtable::key_equal key_equal; 25082: typedef typename _Hashtable::allocator_type allocator_type; 25082: 25082: 25082: 25082: 25082: typedef typename _Hashtable::pointer pointer; 25082: typedef typename _Hashtable::const_pointer const_pointer; 25082: typedef typename _Hashtable::reference reference; 25082: typedef typename _Hashtable::const_reference const_reference; 25082: typedef typename _Hashtable::iterator iterator; 25082: typedef typename _Hashtable::const_iterator const_iterator; 25082: typedef typename _Hashtable::local_iterator local_iterator; 25082: typedef typename _Hashtable::const_local_iterator const_local_iterator; 25082: typedef typename _Hashtable::size_type size_type; 25082: typedef typename _Hashtable::difference_type difference_type; 25082: 25082: 25082: 25082: using node_type = typename _Hashtable::node_type; 25082: 25082: 25082: 25082: 25082: 25082: unordered_multimap() = default; 25082: # 1280 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: explicit 25082: unordered_multimap(size_type __n, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__n, __hf, __eql, __a) 25082: { } 25082: # 1301 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: unordered_multimap(_InputIterator __first, _InputIterator __last, 25082: size_type __n = 0, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__first, __last, __n, __hf, __eql, __a) 25082: { } 25082: 25082: 25082: unordered_multimap(const unordered_multimap&) = default; 25082: 25082: 25082: unordered_multimap(unordered_multimap&&) = default; 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: unordered_multimap(const allocator_type& __a) 25082: : _M_h(__a) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: unordered_multimap(const unordered_multimap& __ummap, 25082: const allocator_type& __a) 25082: : _M_h(__ummap._M_h, __a) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: unordered_multimap(unordered_multimap&& __ummap, 25082: const allocator_type& __a) 25082: : _M_h(std::move(__ummap._M_h), __a) 25082: { } 25082: # 1356 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: unordered_multimap(initializer_list __l, 25082: size_type __n = 0, 25082: const hasher& __hf = hasher(), 25082: const key_equal& __eql = key_equal(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_h(__l, __n, __hf, __eql, __a) 25082: { } 25082: 25082: unordered_multimap(size_type __n, const allocator_type& __a) 25082: : unordered_multimap(__n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: unordered_multimap(size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_multimap(__n, __hf, key_equal(), __a) 25082: { } 25082: 25082: template 25082: unordered_multimap(_InputIterator __first, _InputIterator __last, 25082: size_type __n, 25082: const allocator_type& __a) 25082: : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: template 25082: unordered_multimap(_InputIterator __first, _InputIterator __last, 25082: size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) 25082: { } 25082: 25082: unordered_multimap(initializer_list __l, 25082: size_type __n, 25082: const allocator_type& __a) 25082: : unordered_multimap(__l, __n, hasher(), key_equal(), __a) 25082: { } 25082: 25082: unordered_multimap(initializer_list __l, 25082: size_type __n, const hasher& __hf, 25082: const allocator_type& __a) 25082: : unordered_multimap(__l, __n, __hf, key_equal(), __a) 25082: { } 25082: 25082: 25082: unordered_multimap& 25082: operator=(const unordered_multimap&) = default; 25082: 25082: 25082: unordered_multimap& 25082: operator=(unordered_multimap&&) = default; 25082: # 1418 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: unordered_multimap& 25082: operator=(initializer_list __l) 25082: { 25082: _M_h = __l; 25082: return *this; 25082: } 25082: 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return _M_h.get_allocator(); } 25082: 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return _M_h.empty(); } 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_h.size(); } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _M_h.max_size(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: begin() noexcept 25082: { return _M_h.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return _M_h.begin(); } 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return _M_h.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() noexcept 25082: { return _M_h.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return _M_h.end(); } 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return _M_h.end(); } 25082: # 1510 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: iterator 25082: emplace(_Args&&... __args) 25082: { return _M_h.emplace(std::forward<_Args>(__args)...); } 25082: # 1537 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: iterator 25082: emplace_hint(const_iterator __pos, _Args&&... __args) 25082: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } 25082: # 1552 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: iterator 25082: insert(const value_type& __x) 25082: { return _M_h.insert(__x); } 25082: 25082: iterator 25082: insert(value_type&& __x) 25082: { return _M_h.insert(std::move(__x)); } 25082: 25082: template 25082: __enable_if_t::value, iterator> 25082: insert(_Pair&& __x) 25082: { return _M_h.emplace(std::forward<_Pair>(__x)); } 25082: # 1586 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: iterator 25082: insert(const_iterator __hint, const value_type& __x) 25082: { return _M_h.insert(__hint, __x); } 25082: 25082: 25082: 25082: iterator 25082: insert(const_iterator __hint, value_type&& __x) 25082: { return _M_h.insert(__hint, std::move(__x)); } 25082: 25082: template 25082: __enable_if_t::value, iterator> 25082: insert(const_iterator __hint, _Pair&& __x) 25082: { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } 25082: # 1611 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: template 25082: void 25082: insert(_InputIterator __first, _InputIterator __last) 25082: { _M_h.insert(__first, __last); } 25082: # 1624 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: void 25082: insert(initializer_list __l) 25082: { _M_h.insert(__l); } 25082: 25082: 25082: 25082: node_type 25082: extract(const_iterator __pos) 25082: { 25082: ; 25082: return _M_h.extract(__pos); 25082: } 25082: 25082: 25082: node_type 25082: extract(const key_type& __key) 25082: { return _M_h.extract(__key); } 25082: 25082: 25082: iterator 25082: insert(node_type&& __nh) 25082: { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); } 25082: 25082: 25082: iterator 25082: insert(const_iterator __hint, node_type&& __nh) 25082: { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); } 25082: # 1667 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: iterator 25082: erase(const_iterator __position) 25082: { return _M_h.erase(__position); } 25082: 25082: 25082: iterator 25082: erase(iterator __position) 25082: { return _M_h.erase(__position); } 25082: # 1688 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: size_type 25082: erase(const key_type& __x) 25082: { return _M_h.erase(__x); } 25082: # 1707 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: iterator 25082: erase(const_iterator __first, const_iterator __last) 25082: { return _M_h.erase(__first, __last); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: clear() noexcept 25082: { _M_h.clear(); } 25082: # 1731 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: void 25082: swap(unordered_multimap& __x) 25082: noexcept( noexcept(_M_h.swap(__x._M_h)) ) 25082: { _M_h.swap(__x._M_h); } 25082: 25082: 25082: template 25082: friend class std::_Hash_merge_helper; 25082: 25082: template 25082: void 25082: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source) 25082: { 25082: using _Merge_helper 25082: = _Hash_merge_helper; 25082: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: template 25082: void 25082: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source) 25082: { 25082: using _Merge_helper 25082: = _Hash_merge_helper; 25082: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: hasher 25082: hash_function() const 25082: { return _M_h.hash_function(); } 25082: 25082: 25082: 25082: key_equal 25082: key_eq() const 25082: { return _M_h.key_eq(); } 25082: # 1797 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: iterator 25082: find(const key_type& __x) 25082: { return _M_h.find(__x); } 25082: 25082: const_iterator 25082: find(const key_type& __x) const 25082: { return _M_h.find(__x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: count(const key_type& __x) const 25082: { return _M_h.count(__x); } 25082: # 1822 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: std::pair 25082: equal_range(const key_type& __x) 25082: { return _M_h.equal_range(__x); } 25082: 25082: std::pair 25082: equal_range(const key_type& __x) const 25082: { return _M_h.equal_range(__x); } 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket_count() const noexcept 25082: { return _M_h.bucket_count(); } 25082: 25082: 25082: size_type 25082: max_bucket_count() const noexcept 25082: { return _M_h.max_bucket_count(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket_size(size_type __n) const 25082: { return _M_h.bucket_size(__n); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: size_type 25082: bucket(const key_type& __key) const 25082: { return _M_h.bucket(__key); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: local_iterator 25082: begin(size_type __n) 25082: { return _M_h.begin(__n); } 25082: # 1878 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: const_local_iterator 25082: begin(size_type __n) const 25082: { return _M_h.begin(__n); } 25082: 25082: const_local_iterator 25082: cbegin(size_type __n) const 25082: { return _M_h.cbegin(__n); } 25082: # 1893 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: local_iterator 25082: end(size_type __n) 25082: { return _M_h.end(__n); } 25082: # 1904 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: const_local_iterator 25082: end(size_type __n) const 25082: { return _M_h.end(__n); } 25082: 25082: const_local_iterator 25082: cend(size_type __n) const 25082: { return _M_h.cend(__n); } 25082: 25082: 25082: 25082: 25082: 25082: float 25082: load_factor() const noexcept 25082: { return _M_h.load_factor(); } 25082: 25082: 25082: 25082: float 25082: max_load_factor() const noexcept 25082: { return _M_h.max_load_factor(); } 25082: 25082: 25082: 25082: 25082: 25082: void 25082: max_load_factor(float __z) 25082: { _M_h.max_load_factor(__z); } 25082: # 1941 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: void 25082: rehash(size_type __n) 25082: { _M_h.rehash(__n); } 25082: # 1952 "/usr/include/c++/8/bits/unordered_map.h" 3 25082: void 25082: reserve(size_type __n) 25082: { _M_h.reserve(__n); } 25082: 25082: template 25082: friend bool 25082: operator==(const unordered_multimap<_Key1, _Tp1, 25082: _Hash1, _Pred1, _Alloc1>&, 25082: const unordered_multimap<_Key1, _Tp1, 25082: _Hash1, _Pred1, _Alloc1>&); 25082: }; 25082: 25082: 25082: 25082: template>, 25082: typename _Pred = equal_to<__iter_key_t<_InputIterator>>, 25082: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_multimap(_InputIterator, _InputIterator, 25082: unordered_multimap::size_type = {}, 25082: _Hash = _Hash(), _Pred = _Pred(), 25082: _Allocator = _Allocator()) 25082: -> unordered_multimap<__iter_key_t<_InputIterator>, 25082: __iter_val_t<_InputIterator>, _Hash, _Pred, 25082: _Allocator>; 25082: 25082: template, 25082: typename _Pred = equal_to<_Key>, 25082: typename _Allocator = allocator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_multimap(initializer_list>, 25082: unordered_multimap::size_type = {}, 25082: _Hash = _Hash(), _Pred = _Pred(), 25082: _Allocator = _Allocator()) 25082: -> unordered_multimap<_Key, _Tp, _Hash, _Pred, _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_multimap(_InputIterator, _InputIterator, 25082: unordered_multimap::size_type, _Allocator) 25082: -> unordered_multimap<__iter_key_t<_InputIterator>, 25082: __iter_val_t<_InputIterator>, 25082: hash<__iter_key_t<_InputIterator>>, 25082: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_multimap(_InputIterator, _InputIterator, _Allocator) 25082: -> unordered_multimap<__iter_key_t<_InputIterator>, 25082: __iter_val_t<_InputIterator>, 25082: hash<__iter_key_t<_InputIterator>>, 25082: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: unordered_multimap(_InputIterator, _InputIterator, 25082: unordered_multimap::size_type, _Hash, 25082: _Allocator) 25082: -> unordered_multimap<__iter_key_t<_InputIterator>, 25082: __iter_val_t<_InputIterator>, _Hash, 25082: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; 25082: 25082: template> 25082: unordered_multimap(initializer_list>, 25082: unordered_multimap::size_type, 25082: _Allocator) 25082: -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; 25082: 25082: template> 25082: unordered_multimap(initializer_list>, _Allocator) 25082: -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; 25082: 25082: template> 25082: unordered_multimap(initializer_list>, 25082: unordered_multimap::size_type, 25082: _Hash, _Allocator) 25082: -> unordered_multimap<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>; 25082: 25082: 25082: 25082: template 25082: inline void 25082: swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 25082: unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: template 25082: inline void 25082: swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 25082: unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: template 25082: inline bool 25082: operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 25082: const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 25082: { return __x._M_h._M_equal(__y._M_h); } 25082: 25082: template 25082: inline bool 25082: operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 25082: const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: template 25082: inline bool 25082: operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 25082: const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 25082: { return __x._M_h._M_equal(__y._M_h); } 25082: 25082: template 25082: inline bool 25082: operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 25082: const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _Hash_merge_helper< 25082: std::unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>, 25082: _Hash2, _Eq2> 25082: { 25082: private: 25082: template 25082: using unordered_map = std::unordered_map<_Tp...>; 25082: template 25082: using unordered_multimap = std::unordered_multimap<_Tp...>; 25082: 25082: friend unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>; 25082: 25082: static auto& 25082: _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) 25082: { return __map._M_h; } 25082: 25082: static auto& 25082: _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) 25082: { return __map._M_h; } 25082: }; 25082: 25082: 25082: template 25082: struct _Hash_merge_helper< 25082: std::unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>, 25082: _Hash2, _Eq2> 25082: { 25082: private: 25082: template 25082: using unordered_map = std::unordered_map<_Tp...>; 25082: template 25082: using unordered_multimap = std::unordered_multimap<_Tp...>; 25082: 25082: friend unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>; 25082: 25082: static auto& 25082: _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) 25082: { return __map._M_h; } 25082: 25082: static auto& 25082: _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) 25082: { return __map._M_h; } 25082: }; 25082: 25082: 25082: 25082: } 25082: # 48 "/usr/include/c++/8/unordered_map" 2 3 25082: # 8 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Names.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: using Names = std::vector; 25082: using NameSet = std::unordered_set; 25082: using NameOrderedSet = std::set; 25082: using NameToNameMap = std::unordered_map; 25082: using NameToNameSetMap = std::unordered_map; 25082: 25082: } 25082: # 7 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Field.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/algorithm" 1 3 4 25082: # 58 "/usr/include/c++/8/algorithm" 3 4 25082: 25082: # 59 "/usr/include/c++/8/algorithm" 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/stl_algo.h" 1 3 25082: # 59 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: # 1 "/usr/include/c++/8/cstdlib" 1 3 25082: # 39 "/usr/include/c++/8/cstdlib" 3 25082: 25082: # 40 "/usr/include/c++/8/cstdlib" 3 25082: # 60 "/usr/include/c++/8/bits/stl_algo.h" 2 3 25082: # 1 "/usr/include/c++/8/bits/algorithmfwd.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/algorithmfwd.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/algorithmfwd.h" 3 25082: # 42 "/usr/include/c++/8/bits/algorithmfwd.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 195 "/usr/include/c++/8/bits/algorithmfwd.h" 3 25082: template 25082: bool 25082: all_of(_IIter, _IIter, _Predicate); 25082: 25082: template 25082: bool 25082: any_of(_IIter, _IIter, _Predicate); 25082: 25082: 25082: template 25082: bool 25082: binary_search(_FIter, _FIter, const _Tp&); 25082: 25082: template 25082: bool 25082: binary_search(_FIter, _FIter, const _Tp&, _Compare); 25082: 25082: 25082: template 25082: constexpr 25082: const _Tp& 25082: clamp(const _Tp&, const _Tp&, const _Tp&); 25082: 25082: template 25082: constexpr 25082: const _Tp& 25082: clamp(const _Tp&, const _Tp&, const _Tp&, _Compare); 25082: 25082: 25082: template 25082: _OIter 25082: copy(_IIter, _IIter, _OIter); 25082: 25082: template 25082: _BIter2 25082: copy_backward(_BIter1, _BIter1, _BIter2); 25082: 25082: 25082: template 25082: _OIter 25082: copy_if(_IIter, _IIter, _OIter, _Predicate); 25082: 25082: template 25082: _OIter 25082: copy_n(_IIter, _Size, _OIter); 25082: 25082: 25082: 25082: 25082: 25082: template 25082: pair<_FIter, _FIter> 25082: equal_range(_FIter, _FIter, const _Tp&); 25082: 25082: template 25082: pair<_FIter, _FIter> 25082: equal_range(_FIter, _FIter, const _Tp&, _Compare); 25082: 25082: template 25082: void 25082: fill(_FIter, _FIter, const _Tp&); 25082: 25082: template 25082: _OIter 25082: fill_n(_OIter, _Size, const _Tp&); 25082: 25082: 25082: 25082: template 25082: _FIter1 25082: find_end(_FIter1, _FIter1, _FIter2, _FIter2); 25082: 25082: template 25082: _FIter1 25082: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _IIter 25082: find_if_not(_IIter, _IIter, _Predicate); 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: bool 25082: includes(_IIter1, _IIter1, _IIter2, _IIter2); 25082: 25082: template 25082: bool 25082: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 25082: 25082: template 25082: void 25082: inplace_merge(_BIter, _BIter, _BIter); 25082: 25082: template 25082: void 25082: inplace_merge(_BIter, _BIter, _BIter, _Compare); 25082: 25082: 25082: template 25082: bool 25082: is_heap(_RAIter, _RAIter); 25082: 25082: template 25082: bool 25082: is_heap(_RAIter, _RAIter, _Compare); 25082: 25082: template 25082: _RAIter 25082: is_heap_until(_RAIter, _RAIter); 25082: 25082: template 25082: _RAIter 25082: is_heap_until(_RAIter, _RAIter, _Compare); 25082: 25082: template 25082: bool 25082: is_partitioned(_IIter, _IIter, _Predicate); 25082: 25082: template 25082: bool 25082: is_permutation(_FIter1, _FIter1, _FIter2); 25082: 25082: template 25082: bool 25082: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); 25082: 25082: template 25082: bool 25082: is_sorted(_FIter, _FIter); 25082: 25082: template 25082: bool 25082: is_sorted(_FIter, _FIter, _Compare); 25082: 25082: template 25082: _FIter 25082: is_sorted_until(_FIter, _FIter); 25082: 25082: template 25082: _FIter 25082: is_sorted_until(_FIter, _FIter, _Compare); 25082: 25082: 25082: template 25082: void 25082: iter_swap(_FIter1, _FIter2); 25082: 25082: template 25082: _FIter 25082: lower_bound(_FIter, _FIter, const _Tp&); 25082: 25082: template 25082: _FIter 25082: lower_bound(_FIter, _FIter, const _Tp&, _Compare); 25082: 25082: template 25082: void 25082: make_heap(_RAIter, _RAIter); 25082: 25082: template 25082: void 25082: make_heap(_RAIter, _RAIter, _Compare); 25082: 25082: template 25082: constexpr 25082: const _Tp& 25082: max(const _Tp&, const _Tp&); 25082: 25082: template 25082: constexpr 25082: const _Tp& 25082: max(const _Tp&, const _Tp&, _Compare); 25082: 25082: 25082: 25082: 25082: template 25082: constexpr 25082: const _Tp& 25082: min(const _Tp&, const _Tp&); 25082: 25082: template 25082: constexpr 25082: const _Tp& 25082: min(const _Tp&, const _Tp&, _Compare); 25082: 25082: 25082: 25082: 25082: template 25082: constexpr 25082: pair 25082: minmax(const _Tp&, const _Tp&); 25082: 25082: template 25082: constexpr 25082: pair 25082: minmax(const _Tp&, const _Tp&, _Compare); 25082: 25082: template 25082: constexpr 25082: pair<_FIter, _FIter> 25082: minmax_element(_FIter, _FIter); 25082: 25082: template 25082: constexpr 25082: pair<_FIter, _FIter> 25082: minmax_element(_FIter, _FIter, _Compare); 25082: 25082: template 25082: constexpr 25082: _Tp 25082: min(initializer_list<_Tp>); 25082: 25082: template 25082: constexpr 25082: _Tp 25082: min(initializer_list<_Tp>, _Compare); 25082: 25082: template 25082: constexpr 25082: _Tp 25082: max(initializer_list<_Tp>); 25082: 25082: template 25082: constexpr 25082: _Tp 25082: max(initializer_list<_Tp>, _Compare); 25082: 25082: template 25082: constexpr 25082: pair<_Tp, _Tp> 25082: minmax(initializer_list<_Tp>); 25082: 25082: template 25082: constexpr 25082: pair<_Tp, _Tp> 25082: minmax(initializer_list<_Tp>, _Compare); 25082: 25082: 25082: 25082: 25082: template 25082: bool 25082: next_permutation(_BIter, _BIter); 25082: 25082: template 25082: bool 25082: next_permutation(_BIter, _BIter, _Compare); 25082: 25082: 25082: template 25082: bool 25082: none_of(_IIter, _IIter, _Predicate); 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _RAIter 25082: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); 25082: 25082: template 25082: _RAIter 25082: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); 25082: 25082: 25082: 25082: 25082: template 25082: pair<_OIter1, _OIter2> 25082: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); 25082: 25082: template 25082: _FIter 25082: partition_point(_FIter, _FIter, _Predicate); 25082: 25082: 25082: template 25082: void 25082: pop_heap(_RAIter, _RAIter); 25082: 25082: template 25082: void 25082: pop_heap(_RAIter, _RAIter, _Compare); 25082: 25082: template 25082: bool 25082: prev_permutation(_BIter, _BIter); 25082: 25082: template 25082: bool 25082: prev_permutation(_BIter, _BIter, _Compare); 25082: 25082: template 25082: void 25082: push_heap(_RAIter, _RAIter); 25082: 25082: template 25082: void 25082: push_heap(_RAIter, _RAIter, _Compare); 25082: 25082: 25082: 25082: template 25082: _FIter 25082: remove(_FIter, _FIter, const _Tp&); 25082: 25082: template 25082: _FIter 25082: remove_if(_FIter, _FIter, _Predicate); 25082: 25082: template 25082: _OIter 25082: remove_copy(_IIter, _IIter, _OIter, const _Tp&); 25082: 25082: template 25082: _OIter 25082: remove_copy_if(_IIter, _IIter, _OIter, _Predicate); 25082: 25082: 25082: 25082: template 25082: _OIter 25082: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); 25082: 25082: template 25082: _OIter 25082: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); 25082: 25082: 25082: 25082: template 25082: void 25082: reverse(_BIter, _BIter); 25082: 25082: template 25082: _OIter 25082: reverse_copy(_BIter, _BIter, _OIter); 25082: 25082: inline namespace _V2 25082: { 25082: template 25082: _FIter 25082: rotate(_FIter, _FIter, _FIter); 25082: } 25082: 25082: template 25082: _OIter 25082: rotate_copy(_FIter, _FIter, _FIter, _OIter); 25082: # 565 "/usr/include/c++/8/bits/algorithmfwd.h" 3 25082: template 25082: void 25082: shuffle(_RAIter, _RAIter, _UGenerator&&); 25082: 25082: 25082: template 25082: void 25082: sort_heap(_RAIter, _RAIter); 25082: 25082: template 25082: void 25082: sort_heap(_RAIter, _RAIter, _Compare); 25082: 25082: template 25082: _BIter 25082: stable_partition(_BIter, _BIter, _Predicate); 25082: # 594 "/usr/include/c++/8/bits/algorithmfwd.h" 3 25082: template 25082: _FIter2 25082: swap_ranges(_FIter1, _FIter1, _FIter2); 25082: 25082: 25082: 25082: template 25082: _FIter 25082: unique(_FIter, _FIter); 25082: 25082: template 25082: _FIter 25082: unique(_FIter, _FIter, _BinaryPredicate); 25082: 25082: 25082: 25082: template 25082: _FIter 25082: upper_bound(_FIter, _FIter, const _Tp&); 25082: 25082: template 25082: _FIter 25082: upper_bound(_FIter, _FIter, const _Tp&, _Compare); 25082: 25082: 25082: 25082: template 25082: _FIter 25082: adjacent_find(_FIter, _FIter); 25082: 25082: template 25082: _FIter 25082: adjacent_find(_FIter, _FIter, _BinaryPredicate); 25082: 25082: template 25082: typename iterator_traits<_IIter>::difference_type 25082: count(_IIter, _IIter, const _Tp&); 25082: 25082: template 25082: typename iterator_traits<_IIter>::difference_type 25082: count_if(_IIter, _IIter, _Predicate); 25082: 25082: template 25082: bool 25082: equal(_IIter1, _IIter1, _IIter2); 25082: 25082: template 25082: bool 25082: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 25082: 25082: template 25082: _IIter 25082: find(_IIter, _IIter, const _Tp&); 25082: 25082: template 25082: _FIter1 25082: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); 25082: 25082: template 25082: _FIter1 25082: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 25082: 25082: template 25082: _IIter 25082: find_if(_IIter, _IIter, _Predicate); 25082: 25082: template 25082: _Funct 25082: for_each(_IIter, _IIter, _Funct); 25082: 25082: template 25082: void 25082: generate(_FIter, _FIter, _Generator); 25082: 25082: template 25082: _OIter 25082: generate_n(_OIter, _Size, _Generator); 25082: 25082: template 25082: bool 25082: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); 25082: 25082: template 25082: bool 25082: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 25082: 25082: template 25082: constexpr 25082: _FIter 25082: max_element(_FIter, _FIter); 25082: 25082: template 25082: constexpr 25082: _FIter 25082: max_element(_FIter, _FIter, _Compare); 25082: 25082: template 25082: _OIter 25082: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 25082: 25082: template 25082: _OIter 25082: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 25082: 25082: template 25082: constexpr 25082: _FIter 25082: min_element(_FIter, _FIter); 25082: 25082: template 25082: constexpr 25082: _FIter 25082: min_element(_FIter, _FIter, _Compare); 25082: 25082: template 25082: pair<_IIter1, _IIter2> 25082: mismatch(_IIter1, _IIter1, _IIter2); 25082: 25082: template 25082: pair<_IIter1, _IIter2> 25082: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 25082: 25082: template 25082: void 25082: nth_element(_RAIter, _RAIter, _RAIter); 25082: 25082: template 25082: void 25082: nth_element(_RAIter, _RAIter, _RAIter, _Compare); 25082: 25082: template 25082: void 25082: partial_sort(_RAIter, _RAIter, _RAIter); 25082: 25082: template 25082: void 25082: partial_sort(_RAIter, _RAIter, _RAIter, _Compare); 25082: 25082: template 25082: _BIter 25082: partition(_BIter, _BIter, _Predicate); 25082: 25082: template 25082: void 25082: random_shuffle(_RAIter, _RAIter); 25082: 25082: template 25082: void 25082: random_shuffle(_RAIter, _RAIter, 25082: 25082: _Generator&&); 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: replace(_FIter, _FIter, const _Tp&, const _Tp&); 25082: 25082: template 25082: void 25082: replace_if(_FIter, _FIter, _Predicate, const _Tp&); 25082: 25082: template 25082: _FIter1 25082: search(_FIter1, _FIter1, _FIter2, _FIter2); 25082: 25082: template 25082: _FIter1 25082: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 25082: 25082: template 25082: _FIter 25082: search_n(_FIter, _FIter, _Size, const _Tp&); 25082: 25082: template 25082: _FIter 25082: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); 25082: 25082: template 25082: _OIter 25082: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 25082: 25082: template 25082: _OIter 25082: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 25082: 25082: template 25082: _OIter 25082: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 25082: 25082: template 25082: _OIter 25082: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 25082: 25082: template 25082: _OIter 25082: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 25082: 25082: template 25082: _OIter 25082: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, 25082: _OIter, _Compare); 25082: 25082: template 25082: _OIter 25082: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 25082: 25082: template 25082: _OIter 25082: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 25082: 25082: template 25082: void 25082: sort(_RAIter, _RAIter); 25082: 25082: template 25082: void 25082: sort(_RAIter, _RAIter, _Compare); 25082: 25082: template 25082: void 25082: stable_sort(_RAIter, _RAIter); 25082: 25082: template 25082: void 25082: stable_sort(_RAIter, _RAIter, _Compare); 25082: 25082: template 25082: _OIter 25082: transform(_IIter, _IIter, _OIter, _UnaryOperation); 25082: 25082: template 25082: _OIter 25082: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); 25082: 25082: template 25082: _OIter 25082: unique_copy(_IIter, _IIter, _OIter); 25082: 25082: template 25082: _OIter 25082: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); 25082: 25082: 25082: 25082: } 25082: # 61 "/usr/include/c++/8/bits/stl_algo.h" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_heap.h" 1 3 25082: # 62 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _Distance 25082: __is_heap_until(_RandomAccessIterator __first, _Distance __n, 25082: _Compare& __comp) 25082: { 25082: _Distance __parent = 0; 25082: for (_Distance __child = 1; __child < __n; ++__child) 25082: { 25082: if (__comp(__first + __parent, __first + __child)) 25082: return __child; 25082: if ((__child & 1) == 0) 25082: ++__parent; 25082: } 25082: return __n; 25082: } 25082: 25082: 25082: 25082: template 25082: inline bool 25082: __is_heap(_RandomAccessIterator __first, _Distance __n) 25082: { 25082: __gnu_cxx::__ops::_Iter_less_iter __comp; 25082: return std::__is_heap_until(__first, __n, __comp) == __n; 25082: } 25082: 25082: template 25082: inline bool 25082: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) 25082: { 25082: typedef __decltype(__comp) _Cmp; 25082: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 25082: return std::__is_heap_until(__first, __n, __cmp) == __n; 25082: } 25082: 25082: template 25082: inline bool 25082: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 25082: { return std::__is_heap(__first, std::distance(__first, __last)); } 25082: 25082: template 25082: inline bool 25082: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: return std::__is_heap(__first, std::move(__comp), 25082: std::distance(__first, __last)); 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: __push_heap(_RandomAccessIterator __first, 25082: _Distance __holeIndex, _Distance __topIndex, _Tp __value, 25082: _Compare& __comp) 25082: { 25082: _Distance __parent = (__holeIndex - 1) / 2; 25082: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) 25082: { 25082: *(__first + __holeIndex) = std::move(*(__first + __parent)); 25082: __holeIndex = __parent; 25082: __parent = (__holeIndex - 1) / 2; 25082: } 25082: *(__first + __holeIndex) = std::move(__value); 25082: } 25082: # 152 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline void 25082: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 25082: { 25082: typedef typename iterator_traits<_RandomAccessIterator>::value_type 25082: _ValueType; 25082: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 25082: _DistanceType; 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: __gnu_cxx::__ops::_Iter_less_val __comp; 25082: _ValueType __value = std::move(*(__last - 1)); 25082: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 25082: _DistanceType(0), std::move(__value), __comp); 25082: } 25082: # 187 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline void 25082: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: typedef typename iterator_traits<_RandomAccessIterator>::value_type 25082: _ValueType; 25082: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 25082: _DistanceType; 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 25082: __cmp(std::move(__comp)); 25082: _ValueType __value = std::move(*(__last - 1)); 25082: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 25082: _DistanceType(0), std::move(__value), __cmp); 25082: } 25082: 25082: template 25082: void 25082: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, 25082: _Distance __len, _Tp __value, _Compare __comp) 25082: { 25082: const _Distance __topIndex = __holeIndex; 25082: _Distance __secondChild = __holeIndex; 25082: while (__secondChild < (__len - 1) / 2) 25082: { 25082: __secondChild = 2 * (__secondChild + 1); 25082: if (__comp(__first + __secondChild, 25082: __first + (__secondChild - 1))) 25082: __secondChild--; 25082: *(__first + __holeIndex) = std::move(*(__first + __secondChild)); 25082: __holeIndex = __secondChild; 25082: } 25082: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) 25082: { 25082: __secondChild = 2 * (__secondChild + 1); 25082: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) 25082: ; 25082: __holeIndex = __secondChild - 1; 25082: } 25082: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 25082: __cmp(std::move(__comp)); 25082: std::__push_heap(__first, __holeIndex, __topIndex, 25082: std::move(__value), __cmp); 25082: } 25082: 25082: template 25082: inline void 25082: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _RandomAccessIterator __result, _Compare& __comp) 25082: { 25082: typedef typename iterator_traits<_RandomAccessIterator>::value_type 25082: _ValueType; 25082: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 25082: _DistanceType; 25082: 25082: _ValueType __value = std::move(*__result); 25082: *__result = std::move(*__first); 25082: std::__adjust_heap(__first, _DistanceType(0), 25082: _DistanceType(__last - __first), 25082: std::move(__value), __comp); 25082: } 25082: # 269 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline void 25082: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: if (__last - __first > 1) 25082: { 25082: --__last; 25082: __gnu_cxx::__ops::_Iter_less_iter __comp; 25082: std::__pop_heap(__first, __last, __last, __comp); 25082: } 25082: } 25082: # 302 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline void 25082: pop_heap(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: if (__last - __first > 1) 25082: { 25082: typedef __decltype(__comp) _Cmp; 25082: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 25082: --__last; 25082: std::__pop_heap(__first, __last, __last, __cmp); 25082: } 25082: } 25082: 25082: template 25082: void 25082: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare& __comp) 25082: { 25082: typedef typename iterator_traits<_RandomAccessIterator>::value_type 25082: _ValueType; 25082: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 25082: _DistanceType; 25082: 25082: if (__last - __first < 2) 25082: return; 25082: 25082: const _DistanceType __len = __last - __first; 25082: _DistanceType __parent = (__len - 2) / 2; 25082: while (true) 25082: { 25082: _ValueType __value = std::move(*(__first + __parent)); 25082: std::__adjust_heap(__first, __parent, __len, std::move(__value), 25082: __comp); 25082: if (__parent == 0) 25082: return; 25082: __parent--; 25082: } 25082: } 25082: # 358 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline void 25082: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: __gnu_cxx::__ops::_Iter_less_iter __comp; 25082: std::__make_heap(__first, __last, __comp); 25082: } 25082: # 384 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline void 25082: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: typedef __decltype(__comp) _Cmp; 25082: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 25082: std::__make_heap(__first, __last, __cmp); 25082: } 25082: 25082: template 25082: void 25082: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare& __comp) 25082: { 25082: while (__last - __first > 1) 25082: { 25082: --__last; 25082: std::__pop_heap(__first, __last, __last, __comp); 25082: } 25082: } 25082: # 420 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline void 25082: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: __gnu_cxx::__ops::_Iter_less_iter __comp; 25082: std::__sort_heap(__first, __last, __comp); 25082: } 25082: # 447 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline void 25082: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: typedef __decltype(__comp) _Cmp; 25082: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 25082: std::__sort_heap(__first, __last, __cmp); 25082: } 25082: # 475 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline _RandomAccessIterator 25082: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: __gnu_cxx::__ops::_Iter_less_iter __comp; 25082: return __first + 25082: std::__is_heap_until(__first, std::distance(__first, __last), __comp); 25082: } 25082: # 503 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline _RandomAccessIterator 25082: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: typedef __decltype(__comp) _Cmp; 25082: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 25082: return __first 25082: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); 25082: } 25082: # 527 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline bool 25082: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 25082: { return std::is_heap_until(__first, __last) == __last; } 25082: # 540 "/usr/include/c++/8/bits/stl_heap.h" 3 25082: template 25082: inline bool 25082: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: const auto __dist = std::distance(__first, __last); 25082: typedef __decltype(__comp) _Cmp; 25082: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 25082: return std::__is_heap_until(__first, __dist, __cmp) == __dist; 25082: } 25082: 25082: 25082: 25082: } 25082: # 62 "/usr/include/c++/8/bits/stl_algo.h" 2 3 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/uniform_int_dist.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/uniform_int_dist.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: namespace __detail 25082: { 25082: 25082: template 25082: inline bool 25082: _Power_of_2(_Tp __x) 25082: { 25082: return ((__x - 1) & __x) == 0; 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class uniform_int_distribution 25082: { 25082: static_assert(std::is_integral<_IntType>::value, 25082: "template argument must be an integral type"); 25082: 25082: public: 25082: 25082: typedef _IntType result_type; 25082: 25082: struct param_type 25082: { 25082: typedef uniform_int_distribution<_IntType> distribution_type; 25082: 25082: explicit 25082: param_type(_IntType __a = 0, 25082: _IntType __b = std::numeric_limits<_IntType>::max()) 25082: : _M_a(__a), _M_b(__b) 25082: { 25082: ; 25082: } 25082: 25082: result_type 25082: a() const 25082: { return _M_a; } 25082: 25082: result_type 25082: b() const 25082: { return _M_b; } 25082: 25082: friend bool 25082: operator==(const param_type& __p1, const param_type& __p2) 25082: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 25082: 25082: friend bool 25082: operator!=(const param_type& __p1, const param_type& __p2) 25082: { return !(__p1 == __p2); } 25082: 25082: private: 25082: _IntType _M_a; 25082: _IntType _M_b; 25082: }; 25082: 25082: public: 25082: 25082: 25082: 25082: explicit 25082: uniform_int_distribution(_IntType __a = 0, 25082: _IntType __b = std::numeric_limits<_IntType>::max()) 25082: : _M_param(__a, __b) 25082: { } 25082: 25082: explicit 25082: uniform_int_distribution(const param_type& __p) 25082: : _M_param(__p) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: reset() { } 25082: 25082: result_type 25082: a() const 25082: { return _M_param.a(); } 25082: 25082: result_type 25082: b() const 25082: { return _M_param.b(); } 25082: 25082: 25082: 25082: 25082: param_type 25082: param() const 25082: { return _M_param; } 25082: 25082: 25082: 25082: 25082: 25082: void 25082: param(const param_type& __param) 25082: { _M_param = __param; } 25082: 25082: 25082: 25082: 25082: result_type 25082: min() const 25082: { return this->a(); } 25082: 25082: 25082: 25082: 25082: result_type 25082: max() const 25082: { return this->b(); } 25082: 25082: 25082: 25082: 25082: template 25082: result_type 25082: operator()(_UniformRandomNumberGenerator& __urng) 25082: { return this->operator()(__urng, _M_param); } 25082: 25082: template 25082: result_type 25082: operator()(_UniformRandomNumberGenerator& __urng, 25082: const param_type& __p); 25082: 25082: template 25082: void 25082: __generate(_ForwardIterator __f, _ForwardIterator __t, 25082: _UniformRandomNumberGenerator& __urng) 25082: { this->__generate(__f, __t, __urng, _M_param); } 25082: 25082: template 25082: void 25082: __generate(_ForwardIterator __f, _ForwardIterator __t, 25082: _UniformRandomNumberGenerator& __urng, 25082: const param_type& __p) 25082: { this->__generate_impl(__f, __t, __urng, __p); } 25082: 25082: template 25082: void 25082: __generate(result_type* __f, result_type* __t, 25082: _UniformRandomNumberGenerator& __urng, 25082: const param_type& __p) 25082: { this->__generate_impl(__f, __t, __urng, __p); } 25082: 25082: 25082: 25082: 25082: 25082: friend bool 25082: operator==(const uniform_int_distribution& __d1, 25082: const uniform_int_distribution& __d2) 25082: { return __d1._M_param == __d2._M_param; } 25082: 25082: private: 25082: template 25082: void 25082: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 25082: _UniformRandomNumberGenerator& __urng, 25082: const param_type& __p); 25082: 25082: param_type _M_param; 25082: }; 25082: 25082: template 25082: template 25082: typename uniform_int_distribution<_IntType>::result_type 25082: uniform_int_distribution<_IntType>:: 25082: operator()(_UniformRandomNumberGenerator& __urng, 25082: const param_type& __param) 25082: { 25082: typedef typename _UniformRandomNumberGenerator::result_type 25082: _Gresult_type; 25082: typedef typename std::make_unsigned::type __utype; 25082: typedef typename std::common_type<_Gresult_type, __utype>::type 25082: __uctype; 25082: 25082: const __uctype __urngmin = __urng.min(); 25082: const __uctype __urngmax = __urng.max(); 25082: const __uctype __urngrange = __urngmax - __urngmin; 25082: const __uctype __urange 25082: = __uctype(__param.b()) - __uctype(__param.a()); 25082: 25082: __uctype __ret; 25082: 25082: if (__urngrange > __urange) 25082: { 25082: 25082: const __uctype __uerange = __urange + 1; 25082: const __uctype __scaling = __urngrange / __uerange; 25082: const __uctype __past = __uerange * __scaling; 25082: do 25082: __ret = __uctype(__urng()) - __urngmin; 25082: while (__ret >= __past); 25082: __ret /= __scaling; 25082: } 25082: else if (__urngrange < __urange) 25082: { 25082: # 264 "/usr/include/c++/8/bits/uniform_int_dist.h" 3 25082: __uctype __tmp; 25082: do 25082: { 25082: const __uctype __uerngrange = __urngrange + 1; 25082: __tmp = (__uerngrange * operator() 25082: (__urng, param_type(0, __urange / __uerngrange))); 25082: __ret = __tmp + (__uctype(__urng()) - __urngmin); 25082: } 25082: while (__ret > __urange || __ret < __tmp); 25082: } 25082: else 25082: __ret = __uctype(__urng()) - __urngmin; 25082: 25082: return __ret + __param.a(); 25082: } 25082: 25082: 25082: template 25082: template 25082: void 25082: uniform_int_distribution<_IntType>:: 25082: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 25082: _UniformRandomNumberGenerator& __urng, 25082: const param_type& __param) 25082: { 25082: 25082: typedef typename _UniformRandomNumberGenerator::result_type 25082: _Gresult_type; 25082: typedef typename std::make_unsigned::type __utype; 25082: typedef typename std::common_type<_Gresult_type, __utype>::type 25082: __uctype; 25082: 25082: const __uctype __urngmin = __urng.min(); 25082: const __uctype __urngmax = __urng.max(); 25082: const __uctype __urngrange = __urngmax - __urngmin; 25082: const __uctype __urange 25082: = __uctype(__param.b()) - __uctype(__param.a()); 25082: 25082: __uctype __ret; 25082: 25082: if (__urngrange > __urange) 25082: { 25082: if (__detail::_Power_of_2(__urngrange + 1) 25082: && __detail::_Power_of_2(__urange + 1)) 25082: { 25082: while (__f != __t) 25082: { 25082: __ret = __uctype(__urng()) - __urngmin; 25082: *__f++ = (__ret & __urange) + __param.a(); 25082: } 25082: } 25082: else 25082: { 25082: 25082: const __uctype __uerange = __urange + 1; 25082: const __uctype __scaling = __urngrange / __uerange; 25082: const __uctype __past = __uerange * __scaling; 25082: while (__f != __t) 25082: { 25082: do 25082: __ret = __uctype(__urng()) - __urngmin; 25082: while (__ret >= __past); 25082: *__f++ = __ret / __scaling + __param.a(); 25082: } 25082: } 25082: } 25082: else if (__urngrange < __urange) 25082: { 25082: # 348 "/usr/include/c++/8/bits/uniform_int_dist.h" 3 25082: __uctype __tmp; 25082: while (__f != __t) 25082: { 25082: do 25082: { 25082: const __uctype __uerngrange = __urngrange + 1; 25082: __tmp = (__uerngrange * operator() 25082: (__urng, param_type(0, __urange / __uerngrange))); 25082: __ret = __tmp + (__uctype(__urng()) - __urngmin); 25082: } 25082: while (__ret > __urange || __ret < __tmp); 25082: *__f++ = __ret; 25082: } 25082: } 25082: else 25082: while (__f != __t) 25082: *__f++ = __uctype(__urng()) - __urngmin + __param.a(); 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: # 67 "/usr/include/c++/8/bits/stl_algo.h" 2 3 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: void 25082: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, 25082: _Iterator __c, _Compare __comp) 25082: { 25082: if (__comp(__a, __b)) 25082: { 25082: if (__comp(__b, __c)) 25082: std::iter_swap(__result, __b); 25082: else if (__comp(__a, __c)) 25082: std::iter_swap(__result, __c); 25082: else 25082: std::iter_swap(__result, __a); 25082: } 25082: else if (__comp(__a, __c)) 25082: std::iter_swap(__result, __a); 25082: else if (__comp(__b, __c)) 25082: std::iter_swap(__result, __c); 25082: else 25082: std::iter_swap(__result, __b); 25082: } 25082: 25082: 25082: template 25082: inline _InputIterator 25082: __find_if(_InputIterator __first, _InputIterator __last, 25082: _Predicate __pred, input_iterator_tag) 25082: { 25082: while (__first != __last && !__pred(__first)) 25082: ++__first; 25082: return __first; 25082: } 25082: 25082: 25082: template 25082: _RandomAccessIterator 25082: __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Predicate __pred, random_access_iterator_tag) 25082: { 25082: typename iterator_traits<_RandomAccessIterator>::difference_type 25082: __trip_count = (__last - __first) >> 2; 25082: 25082: for (; __trip_count > 0; --__trip_count) 25082: { 25082: if (__pred(__first)) 25082: return __first; 25082: ++__first; 25082: 25082: if (__pred(__first)) 25082: return __first; 25082: ++__first; 25082: 25082: if (__pred(__first)) 25082: return __first; 25082: ++__first; 25082: 25082: if (__pred(__first)) 25082: return __first; 25082: ++__first; 25082: } 25082: 25082: switch (__last - __first) 25082: { 25082: case 3: 25082: if (__pred(__first)) 25082: return __first; 25082: ++__first; 25082: case 2: 25082: if (__pred(__first)) 25082: return __first; 25082: ++__first; 25082: case 1: 25082: if (__pred(__first)) 25082: return __first; 25082: ++__first; 25082: case 0: 25082: default: 25082: return __last; 25082: } 25082: } 25082: 25082: template 25082: inline _Iterator 25082: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) 25082: { 25082: return __find_if(__first, __last, __pred, 25082: std::__iterator_category(__first)); 25082: } 25082: 25082: 25082: template 25082: inline _InputIterator 25082: __find_if_not(_InputIterator __first, _InputIterator __last, 25082: _Predicate __pred) 25082: { 25082: return std::__find_if(__first, __last, 25082: __gnu_cxx::__ops::__negate(__pred), 25082: std::__iterator_category(__first)); 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: _InputIterator 25082: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) 25082: { 25082: for (; __len; --__len, (void) ++__first) 25082: if (!__pred(__first)) 25082: break; 25082: return __first; 25082: } 25082: # 202 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _ForwardIterator1 25082: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 25082: _BinaryPredicate __predicate) 25082: { 25082: 25082: if (__first1 == __last1 || __first2 == __last2) 25082: return __first1; 25082: 25082: 25082: _ForwardIterator2 __p1(__first2); 25082: if (++__p1 == __last2) 25082: return std::__find_if(__first1, __last1, 25082: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 25082: 25082: 25082: _ForwardIterator2 __p; 25082: _ForwardIterator1 __current = __first1; 25082: 25082: for (;;) 25082: { 25082: __first1 = 25082: std::__find_if(__first1, __last1, 25082: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 25082: 25082: if (__first1 == __last1) 25082: return __last1; 25082: 25082: __p = __p1; 25082: __current = __first1; 25082: if (++__current == __last1) 25082: return __last1; 25082: 25082: while (__predicate(__current, __p)) 25082: { 25082: if (++__p == __last2) 25082: return __first1; 25082: if (++__current == __last1) 25082: return __last1; 25082: } 25082: ++__first1; 25082: } 25082: return __first1; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _ForwardIterator 25082: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, 25082: _Integer __count, _UnaryPredicate __unary_pred, 25082: std::forward_iterator_tag) 25082: { 25082: __first = std::__find_if(__first, __last, __unary_pred); 25082: while (__first != __last) 25082: { 25082: typename iterator_traits<_ForwardIterator>::difference_type 25082: __n = __count; 25082: _ForwardIterator __i = __first; 25082: ++__i; 25082: while (__i != __last && __n != 1 && __unary_pred(__i)) 25082: { 25082: ++__i; 25082: --__n; 25082: } 25082: if (__n == 1) 25082: return __first; 25082: if (__i == __last) 25082: return __last; 25082: __first = std::__find_if(++__i, __last, __unary_pred); 25082: } 25082: return __last; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _RandomAccessIter 25082: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, 25082: _Integer __count, _UnaryPredicate __unary_pred, 25082: std::random_access_iterator_tag) 25082: { 25082: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type 25082: _DistanceType; 25082: 25082: _DistanceType __tailSize = __last - __first; 25082: _DistanceType __remainder = __count; 25082: 25082: while (__remainder <= __tailSize) 25082: { 25082: __first += __remainder; 25082: __tailSize -= __remainder; 25082: 25082: 25082: _RandomAccessIter __backTrack = __first; 25082: while (__unary_pred(--__backTrack)) 25082: { 25082: if (--__remainder == 0) 25082: return (__first - __count); 25082: } 25082: __remainder = __count + 1 - (__first - __backTrack); 25082: } 25082: return __last; 25082: } 25082: 25082: template 25082: _ForwardIterator 25082: __search_n(_ForwardIterator __first, _ForwardIterator __last, 25082: _Integer __count, 25082: _UnaryPredicate __unary_pred) 25082: { 25082: if (__count <= 0) 25082: return __first; 25082: 25082: if (__count == 1) 25082: return std::__find_if(__first, __last, __unary_pred); 25082: 25082: return std::__search_n_aux(__first, __last, __count, __unary_pred, 25082: std::__iterator_category(__first)); 25082: } 25082: 25082: 25082: template 25082: _ForwardIterator1 25082: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 25082: forward_iterator_tag, forward_iterator_tag, 25082: _BinaryPredicate __comp) 25082: { 25082: if (__first2 == __last2) 25082: return __last1; 25082: 25082: _ForwardIterator1 __result = __last1; 25082: while (1) 25082: { 25082: _ForwardIterator1 __new_result 25082: = std::__search(__first1, __last1, __first2, __last2, __comp); 25082: if (__new_result == __last1) 25082: return __result; 25082: else 25082: { 25082: __result = __new_result; 25082: __first1 = __new_result; 25082: ++__first1; 25082: } 25082: } 25082: } 25082: 25082: 25082: template 25082: _BidirectionalIterator1 25082: __find_end(_BidirectionalIterator1 __first1, 25082: _BidirectionalIterator1 __last1, 25082: _BidirectionalIterator2 __first2, 25082: _BidirectionalIterator2 __last2, 25082: bidirectional_iterator_tag, bidirectional_iterator_tag, 25082: _BinaryPredicate __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; 25082: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; 25082: 25082: _RevIterator1 __rlast1(__first1); 25082: _RevIterator2 __rlast2(__first2); 25082: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, 25082: _RevIterator2(__last2), __rlast2, 25082: __comp); 25082: 25082: if (__rresult == __rlast1) 25082: return __last1; 25082: else 25082: { 25082: _BidirectionalIterator1 __result = __rresult.base(); 25082: std::advance(__result, -std::distance(__first2, __last2)); 25082: return __result; 25082: } 25082: } 25082: # 423 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator1 25082: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__find_end(__first1, __last1, __first2, __last2, 25082: std::__iterator_category(__first1), 25082: std::__iterator_category(__first2), 25082: __gnu_cxx::__ops::__iter_equal_to_iter()); 25082: } 25082: # 471 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator1 25082: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 25082: _BinaryPredicate __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__find_end(__first1, __last1, __first2, __last2, 25082: std::__iterator_category(__first1), 25082: std::__iterator_category(__first2), 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: # 506 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 25082: { return __last == std::find_if_not(__first, __last, __pred); } 25082: # 523 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 25082: { return __last == std::find_if(__first, __last, __pred); } 25082: # 541 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 25082: { return !std::none_of(__first, __last, __pred); } 25082: # 556 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _InputIterator 25082: find_if_not(_InputIterator __first, _InputIterator __last, 25082: _Predicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: return std::__find_if_not(__first, __last, 25082: __gnu_cxx::__ops::__pred_iter(__pred)); 25082: } 25082: # 580 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: is_partitioned(_InputIterator __first, _InputIterator __last, 25082: _Predicate __pred) 25082: { 25082: __first = std::find_if_not(__first, __last, __pred); 25082: if (__first == __last) 25082: return true; 25082: ++__first; 25082: return std::none_of(__first, __last, __pred); 25082: } 25082: # 601 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _ForwardIterator 25082: partition_point(_ForwardIterator __first, _ForwardIterator __last, 25082: _Predicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: typedef typename iterator_traits<_ForwardIterator>::difference_type 25082: _DistanceType; 25082: 25082: _DistanceType __len = std::distance(__first, __last); 25082: _DistanceType __half; 25082: _ForwardIterator __middle; 25082: 25082: while (__len > 0) 25082: { 25082: __half = __len >> 1; 25082: __middle = __first; 25082: std::advance(__middle, __half); 25082: if (__pred(*__middle)) 25082: { 25082: __first = __middle; 25082: ++__first; 25082: __len = __len - __half - 1; 25082: } 25082: else 25082: __len = __half; 25082: } 25082: return __first; 25082: } 25082: 25082: 25082: template 25082: _OutputIterator 25082: __remove_copy_if(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result, _Predicate __pred) 25082: { 25082: for (; __first != __last; ++__first) 25082: if (!__pred(__first)) 25082: { 25082: *__result = *__first; 25082: ++__result; 25082: } 25082: return __result; 25082: } 25082: # 668 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: remove_copy(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result, const _Tp& __value) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__remove_copy_if(__first, __last, __result, 25082: __gnu_cxx::__ops::__iter_equals_val(__value)); 25082: } 25082: # 700 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: remove_copy_if(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result, _Predicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__remove_copy_if(__first, __last, __result, 25082: __gnu_cxx::__ops::__pred_iter(__pred)); 25082: } 25082: # 734 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _OutputIterator 25082: copy_if(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result, _Predicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: for (; __first != __last; ++__first) 25082: if (__pred(*__first)) 25082: { 25082: *__result = *__first; 25082: ++__result; 25082: } 25082: return __result; 25082: } 25082: 25082: template 25082: _OutputIterator 25082: __copy_n(_InputIterator __first, _Size __n, 25082: _OutputIterator __result, input_iterator_tag) 25082: { 25082: if (__n > 0) 25082: { 25082: while (true) 25082: { 25082: *__result = *__first; 25082: ++__result; 25082: if (--__n > 0) 25082: ++__first; 25082: else 25082: break; 25082: } 25082: } 25082: return __result; 25082: } 25082: 25082: template 25082: inline _OutputIterator 25082: __copy_n(_RandomAccessIterator __first, _Size __n, 25082: _OutputIterator __result, random_access_iterator_tag) 25082: { return std::copy(__first, __first + __n, __result); } 25082: # 797 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: return std::__copy_n(__first, __n, __result, 25082: std::__iterator_category(__first)); 25082: } 25082: # 825 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: pair<_OutputIterator1, _OutputIterator2> 25082: partition_copy(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator1 __out_true, _OutputIterator2 __out_false, 25082: _Predicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: for (; __first != __last; ++__first) 25082: if (__pred(*__first)) 25082: { 25082: *__out_true = *__first; 25082: ++__out_true; 25082: } 25082: else 25082: { 25082: *__out_false = *__first; 25082: ++__out_false; 25082: } 25082: 25082: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); 25082: } 25082: 25082: 25082: template 25082: _ForwardIterator 25082: __remove_if(_ForwardIterator __first, _ForwardIterator __last, 25082: _Predicate __pred) 25082: { 25082: __first = std::__find_if(__first, __last, __pred); 25082: if (__first == __last) 25082: return __first; 25082: _ForwardIterator __result = __first; 25082: ++__first; 25082: for (; __first != __last; ++__first) 25082: if (!__pred(__first)) 25082: { 25082: *__result = std::move(*__first); 25082: ++__result; 25082: } 25082: return __result; 25082: } 25082: # 894 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: remove(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __value) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__remove_if(__first, __last, 25082: __gnu_cxx::__ops::__iter_equals_val(__value)); 25082: } 25082: # 927 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: remove_if(_ForwardIterator __first, _ForwardIterator __last, 25082: _Predicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__remove_if(__first, __last, 25082: __gnu_cxx::__ops::__pred_iter(__pred)); 25082: } 25082: 25082: template 25082: _ForwardIterator 25082: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 25082: _BinaryPredicate __binary_pred) 25082: { 25082: if (__first == __last) 25082: return __last; 25082: _ForwardIterator __next = __first; 25082: while (++__next != __last) 25082: { 25082: if (__binary_pred(__first, __next)) 25082: return __first; 25082: __first = __next; 25082: } 25082: return __last; 25082: } 25082: 25082: template 25082: _ForwardIterator 25082: __unique(_ForwardIterator __first, _ForwardIterator __last, 25082: _BinaryPredicate __binary_pred) 25082: { 25082: 25082: __first = std::__adjacent_find(__first, __last, __binary_pred); 25082: if (__first == __last) 25082: return __last; 25082: 25082: 25082: _ForwardIterator __dest = __first; 25082: ++__first; 25082: while (++__first != __last) 25082: if (!__binary_pred(__dest, __first)) 25082: *++__dest = std::move(*__first); 25082: return ++__dest; 25082: } 25082: # 993 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: unique(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__unique(__first, __last, 25082: __gnu_cxx::__ops::__iter_equal_to_iter()); 25082: } 25082: # 1023 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: unique(_ForwardIterator __first, _ForwardIterator __last, 25082: _BinaryPredicate __binary_pred) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__unique(__first, __last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _OutputIterator 25082: __unique_copy(_ForwardIterator __first, _ForwardIterator __last, 25082: _OutputIterator __result, _BinaryPredicate __binary_pred, 25082: forward_iterator_tag, output_iterator_tag) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: _ForwardIterator __next = __first; 25082: *__result = *__first; 25082: while (++__next != __last) 25082: if (!__binary_pred(__first, __next)) 25082: { 25082: __first = __next; 25082: *++__result = *__first; 25082: } 25082: return ++__result; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _OutputIterator 25082: __unique_copy(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result, _BinaryPredicate __binary_pred, 25082: input_iterator_tag, output_iterator_tag) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: typename iterator_traits<_InputIterator>::value_type __value = *__first; 25082: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) 25082: __rebound_pred 25082: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); 25082: *__result = __value; 25082: while (++__first != __last) 25082: if (!__rebound_pred(__first, __value)) 25082: { 25082: __value = *__first; 25082: *++__result = __value; 25082: } 25082: return ++__result; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _ForwardIterator 25082: __unique_copy(_InputIterator __first, _InputIterator __last, 25082: _ForwardIterator __result, _BinaryPredicate __binary_pred, 25082: input_iterator_tag, forward_iterator_tag) 25082: { 25082: 25082: 25082: 25082: 25082: *__result = *__first; 25082: while (++__first != __last) 25082: if (!__binary_pred(__result, __first)) 25082: *++__result = *__first; 25082: return ++__result; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, 25082: bidirectional_iterator_tag) 25082: { 25082: while (true) 25082: if (__first == __last || __first == --__last) 25082: return; 25082: else 25082: { 25082: std::iter_swap(__first, __last); 25082: ++__first; 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: random_access_iterator_tag) 25082: { 25082: if (__first == __last) 25082: return; 25082: --__last; 25082: while (__first < __last) 25082: { 25082: std::iter_swap(__first, __last); 25082: ++__first; 25082: --__last; 25082: } 25082: } 25082: # 1178 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) 25082: { 25082: 25082: 25082: 25082: ; 25082: std::__reverse(__first, __last, std::__iterator_category(__first)); 25082: } 25082: # 1205 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _OutputIterator 25082: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, 25082: _OutputIterator __result) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: while (__first != __last) 25082: { 25082: --__last; 25082: *__result = *__last; 25082: ++__result; 25082: } 25082: return __result; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _EuclideanRingElement 25082: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) 25082: { 25082: while (__n != 0) 25082: { 25082: _EuclideanRingElement __t = __m % __n; 25082: __m = __n; 25082: __n = __t; 25082: } 25082: return __m; 25082: } 25082: 25082: inline namespace _V2 25082: { 25082: 25082: 25082: template 25082: _ForwardIterator 25082: __rotate(_ForwardIterator __first, 25082: _ForwardIterator __middle, 25082: _ForwardIterator __last, 25082: forward_iterator_tag) 25082: { 25082: if (__first == __middle) 25082: return __last; 25082: else if (__last == __middle) 25082: return __first; 25082: 25082: _ForwardIterator __first2 = __middle; 25082: do 25082: { 25082: std::iter_swap(__first, __first2); 25082: ++__first; 25082: ++__first2; 25082: if (__first == __middle) 25082: __middle = __first2; 25082: } 25082: while (__first2 != __last); 25082: 25082: _ForwardIterator __ret = __first; 25082: 25082: __first2 = __middle; 25082: 25082: while (__first2 != __last) 25082: { 25082: std::iter_swap(__first, __first2); 25082: ++__first; 25082: ++__first2; 25082: if (__first == __middle) 25082: __middle = __first2; 25082: else if (__first2 == __last) 25082: __first2 = __middle; 25082: } 25082: return __ret; 25082: } 25082: 25082: 25082: template 25082: _BidirectionalIterator 25082: __rotate(_BidirectionalIterator __first, 25082: _BidirectionalIterator __middle, 25082: _BidirectionalIterator __last, 25082: bidirectional_iterator_tag) 25082: { 25082: 25082: 25082: 25082: 25082: if (__first == __middle) 25082: return __last; 25082: else if (__last == __middle) 25082: return __first; 25082: 25082: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 25082: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 25082: 25082: while (__first != __middle && __middle != __last) 25082: { 25082: std::iter_swap(__first, --__last); 25082: ++__first; 25082: } 25082: 25082: if (__first == __middle) 25082: { 25082: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 25082: return __last; 25082: } 25082: else 25082: { 25082: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 25082: return __first; 25082: } 25082: } 25082: 25082: 25082: template 25082: _RandomAccessIterator 25082: __rotate(_RandomAccessIterator __first, 25082: _RandomAccessIterator __middle, 25082: _RandomAccessIterator __last, 25082: random_access_iterator_tag) 25082: { 25082: 25082: 25082: 25082: 25082: if (__first == __middle) 25082: return __last; 25082: else if (__last == __middle) 25082: return __first; 25082: 25082: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 25082: _Distance; 25082: typedef typename iterator_traits<_RandomAccessIterator>::value_type 25082: _ValueType; 25082: 25082: _Distance __n = __last - __first; 25082: _Distance __k = __middle - __first; 25082: 25082: if (__k == __n - __k) 25082: { 25082: std::swap_ranges(__first, __middle, __middle); 25082: return __middle; 25082: } 25082: 25082: _RandomAccessIterator __p = __first; 25082: _RandomAccessIterator __ret = __first + (__last - __middle); 25082: 25082: for (;;) 25082: { 25082: if (__k < __n - __k) 25082: { 25082: if (__is_pod(_ValueType) && __k == 1) 25082: { 25082: _ValueType __t = std::move(*__p); 25082: std::move(__p + 1, __p + __n, __p); 25082: *(__p + __n - 1) = std::move(__t); 25082: return __ret; 25082: } 25082: _RandomAccessIterator __q = __p + __k; 25082: for (_Distance __i = 0; __i < __n - __k; ++ __i) 25082: { 25082: std::iter_swap(__p, __q); 25082: ++__p; 25082: ++__q; 25082: } 25082: __n %= __k; 25082: if (__n == 0) 25082: return __ret; 25082: std::swap(__n, __k); 25082: __k = __n - __k; 25082: } 25082: else 25082: { 25082: __k = __n - __k; 25082: if (__is_pod(_ValueType) && __k == 1) 25082: { 25082: _ValueType __t = std::move(*(__p + __n - 1)); 25082: std::move_backward(__p, __p + __n - 1, __p + __n); 25082: *__p = std::move(__t); 25082: return __ret; 25082: } 25082: _RandomAccessIterator __q = __p + __n; 25082: __p = __q - __k; 25082: for (_Distance __i = 0; __i < __n - __k; ++ __i) 25082: { 25082: --__p; 25082: --__q; 25082: std::iter_swap(__p, __q); 25082: } 25082: __n %= __k; 25082: if (__n == 0) 25082: return __ret; 25082: std::swap(__n, __k); 25082: } 25082: } 25082: } 25082: # 1432 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: rotate(_ForwardIterator __first, _ForwardIterator __middle, 25082: _ForwardIterator __last) 25082: { 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__rotate(__first, __middle, __last, 25082: std::__iterator_category(__first)); 25082: } 25082: 25082: } 25082: # 1469 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, 25082: _ForwardIterator __last, _OutputIterator __result) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::copy(__first, __middle, 25082: std::copy(__middle, __last, __result)); 25082: } 25082: 25082: 25082: template 25082: _ForwardIterator 25082: __partition(_ForwardIterator __first, _ForwardIterator __last, 25082: _Predicate __pred, forward_iterator_tag) 25082: { 25082: if (__first == __last) 25082: return __first; 25082: 25082: while (__pred(*__first)) 25082: if (++__first == __last) 25082: return __first; 25082: 25082: _ForwardIterator __next = __first; 25082: 25082: while (++__next != __last) 25082: if (__pred(*__next)) 25082: { 25082: std::iter_swap(__first, __next); 25082: ++__first; 25082: } 25082: 25082: return __first; 25082: } 25082: 25082: 25082: template 25082: _BidirectionalIterator 25082: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, 25082: _Predicate __pred, bidirectional_iterator_tag) 25082: { 25082: while (true) 25082: { 25082: while (true) 25082: if (__first == __last) 25082: return __first; 25082: else if (__pred(*__first)) 25082: ++__first; 25082: else 25082: break; 25082: --__last; 25082: while (true) 25082: if (__first == __last) 25082: return __first; 25082: else if (!bool(__pred(*__last))) 25082: --__last; 25082: else 25082: break; 25082: std::iter_swap(__first, __last); 25082: ++__first; 25082: } 25082: } 25082: # 1546 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _ForwardIterator 25082: __stable_partition_adaptive(_ForwardIterator __first, 25082: _ForwardIterator __last, 25082: _Predicate __pred, _Distance __len, 25082: _Pointer __buffer, 25082: _Distance __buffer_size) 25082: { 25082: if (__len == 1) 25082: return __first; 25082: 25082: if (__len <= __buffer_size) 25082: { 25082: _ForwardIterator __result1 = __first; 25082: _Pointer __result2 = __buffer; 25082: 25082: 25082: 25082: 25082: *__result2 = std::move(*__first); 25082: ++__result2; 25082: ++__first; 25082: for (; __first != __last; ++__first) 25082: if (__pred(__first)) 25082: { 25082: *__result1 = std::move(*__first); 25082: ++__result1; 25082: } 25082: else 25082: { 25082: *__result2 = std::move(*__first); 25082: ++__result2; 25082: } 25082: 25082: std::move(__buffer, __result2, __result1); 25082: return __result1; 25082: } 25082: 25082: _ForwardIterator __middle = __first; 25082: std::advance(__middle, __len / 2); 25082: _ForwardIterator __left_split = 25082: std::__stable_partition_adaptive(__first, __middle, __pred, 25082: __len / 2, __buffer, 25082: __buffer_size); 25082: 25082: 25082: 25082: _Distance __right_len = __len - __len / 2; 25082: _ForwardIterator __right_split = 25082: std::__find_if_not_n(__middle, __right_len, __pred); 25082: 25082: if (__right_len) 25082: __right_split = 25082: std::__stable_partition_adaptive(__right_split, __last, __pred, 25082: __right_len, 25082: __buffer, __buffer_size); 25082: 25082: std::rotate(__left_split, __middle, __right_split); 25082: std::advance(__left_split, std::distance(__middle, __right_split)); 25082: return __left_split; 25082: } 25082: 25082: template 25082: _ForwardIterator 25082: __stable_partition(_ForwardIterator __first, _ForwardIterator __last, 25082: _Predicate __pred) 25082: { 25082: __first = std::__find_if_not(__first, __last, __pred); 25082: 25082: if (__first == __last) 25082: return __first; 25082: 25082: typedef typename iterator_traits<_ForwardIterator>::value_type 25082: _ValueType; 25082: typedef typename iterator_traits<_ForwardIterator>::difference_type 25082: _DistanceType; 25082: 25082: _Temporary_buffer<_ForwardIterator, _ValueType> __buf(__first, __last); 25082: return 25082: std::__stable_partition_adaptive(__first, __last, __pred, 25082: _DistanceType(__buf.requested_size()), 25082: __buf.begin(), 25082: _DistanceType(__buf.size())); 25082: } 25082: # 1649 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: stable_partition(_ForwardIterator __first, _ForwardIterator __last, 25082: _Predicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__stable_partition(__first, __last, 25082: __gnu_cxx::__ops::__pred_iter(__pred)); 25082: } 25082: 25082: 25082: template 25082: void 25082: __heap_select(_RandomAccessIterator __first, 25082: _RandomAccessIterator __middle, 25082: _RandomAccessIterator __last, _Compare __comp) 25082: { 25082: std::__make_heap(__first, __middle, __comp); 25082: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) 25082: if (__comp(__i, __first)) 25082: std::__pop_heap(__first, __middle, __i, __comp); 25082: } 25082: 25082: 25082: 25082: template 25082: _RandomAccessIterator 25082: __partial_sort_copy(_InputIterator __first, _InputIterator __last, 25082: _RandomAccessIterator __result_first, 25082: _RandomAccessIterator __result_last, 25082: _Compare __comp) 25082: { 25082: typedef typename iterator_traits<_InputIterator>::value_type 25082: _InputValueType; 25082: typedef iterator_traits<_RandomAccessIterator> _RItTraits; 25082: typedef typename _RItTraits::difference_type _DistanceType; 25082: 25082: if (__result_first == __result_last) 25082: return __result_last; 25082: _RandomAccessIterator __result_real_last = __result_first; 25082: while (__first != __last && __result_real_last != __result_last) 25082: { 25082: *__result_real_last = *__first; 25082: ++__result_real_last; 25082: ++__first; 25082: } 25082: 25082: std::__make_heap(__result_first, __result_real_last, __comp); 25082: while (__first != __last) 25082: { 25082: if (__comp(__first, __result_first)) 25082: std::__adjust_heap(__result_first, _DistanceType(0), 25082: _DistanceType(__result_real_last 25082: - __result_first), 25082: _InputValueType(*__first), __comp); 25082: ++__first; 25082: } 25082: std::__sort_heap(__result_first, __result_real_last, __comp); 25082: return __result_real_last; 25082: } 25082: # 1735 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _RandomAccessIterator 25082: partial_sort_copy(_InputIterator __first, _InputIterator __last, 25082: _RandomAccessIterator __result_first, 25082: _RandomAccessIterator __result_last) 25082: { 25082: # 1749 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__partial_sort_copy(__first, __last, 25082: __result_first, __result_last, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 1784 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _RandomAccessIterator 25082: partial_sort_copy(_InputIterator __first, _InputIterator __last, 25082: _RandomAccessIterator __result_first, 25082: _RandomAccessIterator __result_last, 25082: _Compare __comp) 25082: { 25082: # 1800 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__partial_sort_copy(__first, __last, 25082: __result_first, __result_last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: 25082: template 25082: void 25082: __unguarded_linear_insert(_RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: typename iterator_traits<_RandomAccessIterator>::value_type 25082: __val = std::move(*__last); 25082: _RandomAccessIterator __next = __last; 25082: --__next; 25082: while (__comp(__val, __next)) 25082: { 25082: *__last = std::move(*__next); 25082: __last = __next; 25082: --__next; 25082: } 25082: *__last = std::move(__val); 25082: } 25082: 25082: 25082: template 25082: void 25082: __insertion_sort(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, _Compare __comp) 25082: { 25082: if (__first == __last) return; 25082: 25082: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 25082: { 25082: if (__comp(__i, __first)) 25082: { 25082: typename iterator_traits<_RandomAccessIterator>::value_type 25082: __val = std::move(*__i); 25082: std::move_backward(__first, __i, __i + 1); 25082: *__first = std::move(__val); 25082: } 25082: else 25082: std::__unguarded_linear_insert(__i, 25082: __gnu_cxx::__ops::__val_comp_iter(__comp)); 25082: } 25082: } 25082: 25082: 25082: template 25082: inline void 25082: __unguarded_insertion_sort(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, _Compare __comp) 25082: { 25082: for (_RandomAccessIterator __i = __first; __i != __last; ++__i) 25082: std::__unguarded_linear_insert(__i, 25082: __gnu_cxx::__ops::__val_comp_iter(__comp)); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: enum { _S_threshold = 16 }; 25082: 25082: 25082: template 25082: void 25082: __final_insertion_sort(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, _Compare __comp) 25082: { 25082: if (__last - __first > int(_S_threshold)) 25082: { 25082: std::__insertion_sort(__first, __first + int(_S_threshold), __comp); 25082: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, 25082: __comp); 25082: } 25082: else 25082: std::__insertion_sort(__first, __last, __comp); 25082: } 25082: 25082: 25082: template 25082: _RandomAccessIterator 25082: __unguarded_partition(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, 25082: _RandomAccessIterator __pivot, _Compare __comp) 25082: { 25082: while (true) 25082: { 25082: while (__comp(__first, __pivot)) 25082: ++__first; 25082: --__last; 25082: while (__comp(__pivot, __last)) 25082: --__last; 25082: if (!(__first < __last)) 25082: return __first; 25082: std::iter_swap(__first, __last); 25082: ++__first; 25082: } 25082: } 25082: 25082: 25082: template 25082: inline _RandomAccessIterator 25082: __unguarded_partition_pivot(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, _Compare __comp) 25082: { 25082: _RandomAccessIterator __mid = __first + (__last - __first) / 2; 25082: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, 25082: __comp); 25082: return std::__unguarded_partition(__first + 1, __last, __first, __comp); 25082: } 25082: 25082: template 25082: inline void 25082: __partial_sort(_RandomAccessIterator __first, 25082: _RandomAccessIterator __middle, 25082: _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: std::__heap_select(__first, __middle, __last, __comp); 25082: std::__sort_heap(__first, __middle, __comp); 25082: } 25082: 25082: 25082: template 25082: void 25082: __introsort_loop(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, 25082: _Size __depth_limit, _Compare __comp) 25082: { 25082: while (__last - __first > int(_S_threshold)) 25082: { 25082: if (__depth_limit == 0) 25082: { 25082: std::__partial_sort(__first, __last, __last, __comp); 25082: return; 25082: } 25082: --__depth_limit; 25082: _RandomAccessIterator __cut = 25082: std::__unguarded_partition_pivot(__first, __last, __comp); 25082: std::__introsort_loop(__cut, __last, __depth_limit, __comp); 25082: __last = __cut; 25082: } 25082: } 25082: 25082: 25082: 25082: template 25082: inline void 25082: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: if (__first != __last) 25082: { 25082: std::__introsort_loop(__first, __last, 25082: std::__lg(__last - __first) * 2, 25082: __comp); 25082: std::__final_insertion_sort(__first, __last, __comp); 25082: } 25082: } 25082: 25082: template 25082: void 25082: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, 25082: _RandomAccessIterator __last, _Size __depth_limit, 25082: _Compare __comp) 25082: { 25082: while (__last - __first > 3) 25082: { 25082: if (__depth_limit == 0) 25082: { 25082: std::__heap_select(__first, __nth + 1, __last, __comp); 25082: 25082: std::iter_swap(__first, __nth); 25082: return; 25082: } 25082: --__depth_limit; 25082: _RandomAccessIterator __cut = 25082: std::__unguarded_partition_pivot(__first, __last, __comp); 25082: if (__cut <= __nth) 25082: __first = __cut; 25082: else 25082: __last = __cut; 25082: } 25082: std::__insertion_sort(__first, __last, __comp); 25082: } 25082: # 2021 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__lower_bound(__first, __last, __val, 25082: __gnu_cxx::__ops::__iter_comp_val(__comp)); 25082: } 25082: 25082: template 25082: _ForwardIterator 25082: __upper_bound(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val, _Compare __comp) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::difference_type 25082: _DistanceType; 25082: 25082: _DistanceType __len = std::distance(__first, __last); 25082: 25082: while (__len > 0) 25082: { 25082: _DistanceType __half = __len >> 1; 25082: _ForwardIterator __middle = __first; 25082: std::advance(__middle, __half); 25082: if (__comp(__val, __middle)) 25082: __len = __half; 25082: else 25082: { 25082: __first = __middle; 25082: ++__first; 25082: __len = __len - __half - 1; 25082: } 25082: } 25082: return __first; 25082: } 25082: # 2075 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__upper_bound(__first, __last, __val, 25082: __gnu_cxx::__ops::__val_less_iter()); 25082: } 25082: # 2105 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__upper_bound(__first, __last, __val, 25082: __gnu_cxx::__ops::__val_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: pair<_ForwardIterator, _ForwardIterator> 25082: __equal_range(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val, 25082: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) 25082: { 25082: typedef typename iterator_traits<_ForwardIterator>::difference_type 25082: _DistanceType; 25082: 25082: _DistanceType __len = std::distance(__first, __last); 25082: 25082: while (__len > 0) 25082: { 25082: _DistanceType __half = __len >> 1; 25082: _ForwardIterator __middle = __first; 25082: std::advance(__middle, __half); 25082: if (__comp_it_val(__middle, __val)) 25082: { 25082: __first = __middle; 25082: ++__first; 25082: __len = __len - __half - 1; 25082: } 25082: else if (__comp_val_it(__val, __middle)) 25082: __len = __half; 25082: else 25082: { 25082: _ForwardIterator __left 25082: = std::__lower_bound(__first, __middle, __val, __comp_it_val); 25082: std::advance(__first, __len); 25082: _ForwardIterator __right 25082: = std::__upper_bound(++__middle, __first, __val, __comp_val_it); 25082: return pair<_ForwardIterator, _ForwardIterator>(__left, __right); 25082: } 25082: } 25082: return pair<_ForwardIterator, _ForwardIterator>(__first, __first); 25082: } 25082: # 2176 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline pair<_ForwardIterator, _ForwardIterator> 25082: equal_range(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__equal_range(__first, __last, __val, 25082: __gnu_cxx::__ops::__iter_less_val(), 25082: __gnu_cxx::__ops::__val_less_iter()); 25082: } 25082: # 2212 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline pair<_ForwardIterator, _ForwardIterator> 25082: equal_range(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: ; 25082: 25082: return std::__equal_range(__first, __last, __val, 25082: __gnu_cxx::__ops::__iter_comp_val(__comp), 25082: __gnu_cxx::__ops::__val_comp_iter(__comp)); 25082: } 25082: # 2245 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: bool 25082: binary_search(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: _ForwardIterator __i 25082: = std::__lower_bound(__first, __last, __val, 25082: __gnu_cxx::__ops::__iter_less_val()); 25082: return __i != __last && !(__val < *__i); 25082: } 25082: # 2278 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: bool 25082: binary_search(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __val, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: ; 25082: 25082: _ForwardIterator __i 25082: = std::__lower_bound(__first, __last, __val, 25082: __gnu_cxx::__ops::__iter_comp_val(__comp)); 25082: return __i != __last && !bool(__comp(__val, *__i)); 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result, _Compare __comp) 25082: { 25082: while (__first1 != __last1 && __first2 != __last2) 25082: { 25082: if (__comp(__first2, __first1)) 25082: { 25082: *__result = std::move(*__first2); 25082: ++__first2; 25082: } 25082: else 25082: { 25082: *__result = std::move(*__first1); 25082: ++__first1; 25082: } 25082: ++__result; 25082: } 25082: if (__first1 != __last1) 25082: std::move(__first1, __last1, __result); 25082: } 25082: 25082: 25082: template 25082: void 25082: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, 25082: _BidirectionalIterator1 __last1, 25082: _BidirectionalIterator2 __first2, 25082: _BidirectionalIterator2 __last2, 25082: _BidirectionalIterator3 __result, 25082: _Compare __comp) 25082: { 25082: if (__first1 == __last1) 25082: { 25082: std::move_backward(__first2, __last2, __result); 25082: return; 25082: } 25082: else if (__first2 == __last2) 25082: return; 25082: 25082: --__last1; 25082: --__last2; 25082: while (true) 25082: { 25082: if (__comp(__last2, __last1)) 25082: { 25082: *--__result = std::move(*__last1); 25082: if (__first1 == __last1) 25082: { 25082: std::move_backward(__first2, ++__last2, __result); 25082: return; 25082: } 25082: --__last1; 25082: } 25082: else 25082: { 25082: *--__result = std::move(*__last2); 25082: if (__first2 == __last2) 25082: return; 25082: --__last2; 25082: } 25082: } 25082: } 25082: 25082: 25082: template 25082: _BidirectionalIterator1 25082: __rotate_adaptive(_BidirectionalIterator1 __first, 25082: _BidirectionalIterator1 __middle, 25082: _BidirectionalIterator1 __last, 25082: _Distance __len1, _Distance __len2, 25082: _BidirectionalIterator2 __buffer, 25082: _Distance __buffer_size) 25082: { 25082: _BidirectionalIterator2 __buffer_end; 25082: if (__len1 > __len2 && __len2 <= __buffer_size) 25082: { 25082: if (__len2) 25082: { 25082: __buffer_end = std::move(__middle, __last, __buffer); 25082: std::move_backward(__first, __middle, __last); 25082: return std::move(__buffer, __buffer_end, __first); 25082: } 25082: else 25082: return __first; 25082: } 25082: else if (__len1 <= __buffer_size) 25082: { 25082: if (__len1) 25082: { 25082: __buffer_end = std::move(__first, __middle, __buffer); 25082: std::move(__middle, __last, __first); 25082: return std::move_backward(__buffer, __buffer_end, __last); 25082: } 25082: else 25082: return __last; 25082: } 25082: else 25082: { 25082: std::rotate(__first, __middle, __last); 25082: std::advance(__first, std::distance(__middle, __last)); 25082: return __first; 25082: } 25082: } 25082: 25082: 25082: template 25082: void 25082: __merge_adaptive(_BidirectionalIterator __first, 25082: _BidirectionalIterator __middle, 25082: _BidirectionalIterator __last, 25082: _Distance __len1, _Distance __len2, 25082: _Pointer __buffer, _Distance __buffer_size, 25082: _Compare __comp) 25082: { 25082: if (__len1 <= __len2 && __len1 <= __buffer_size) 25082: { 25082: _Pointer __buffer_end = std::move(__first, __middle, __buffer); 25082: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, 25082: __first, __comp); 25082: } 25082: else if (__len2 <= __buffer_size) 25082: { 25082: _Pointer __buffer_end = std::move(__middle, __last, __buffer); 25082: std::__move_merge_adaptive_backward(__first, __middle, __buffer, 25082: __buffer_end, __last, __comp); 25082: } 25082: else 25082: { 25082: _BidirectionalIterator __first_cut = __first; 25082: _BidirectionalIterator __second_cut = __middle; 25082: _Distance __len11 = 0; 25082: _Distance __len22 = 0; 25082: if (__len1 > __len2) 25082: { 25082: __len11 = __len1 / 2; 25082: std::advance(__first_cut, __len11); 25082: __second_cut 25082: = std::__lower_bound(__middle, __last, *__first_cut, 25082: __gnu_cxx::__ops::__iter_comp_val(__comp)); 25082: __len22 = std::distance(__middle, __second_cut); 25082: } 25082: else 25082: { 25082: __len22 = __len2 / 2; 25082: std::advance(__second_cut, __len22); 25082: __first_cut 25082: = std::__upper_bound(__first, __middle, *__second_cut, 25082: __gnu_cxx::__ops::__val_comp_iter(__comp)); 25082: __len11 = std::distance(__first, __first_cut); 25082: } 25082: 25082: _BidirectionalIterator __new_middle 25082: = std::__rotate_adaptive(__first_cut, __middle, __second_cut, 25082: __len1 - __len11, __len22, __buffer, 25082: __buffer_size); 25082: std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, 25082: __len22, __buffer, __buffer_size, __comp); 25082: std::__merge_adaptive(__new_middle, __second_cut, __last, 25082: __len1 - __len11, 25082: __len2 - __len22, __buffer, 25082: __buffer_size, __comp); 25082: } 25082: } 25082: 25082: 25082: template 25082: void 25082: __merge_without_buffer(_BidirectionalIterator __first, 25082: _BidirectionalIterator __middle, 25082: _BidirectionalIterator __last, 25082: _Distance __len1, _Distance __len2, 25082: _Compare __comp) 25082: { 25082: if (__len1 == 0 || __len2 == 0) 25082: return; 25082: 25082: if (__len1 + __len2 == 2) 25082: { 25082: if (__comp(__middle, __first)) 25082: std::iter_swap(__first, __middle); 25082: return; 25082: } 25082: 25082: _BidirectionalIterator __first_cut = __first; 25082: _BidirectionalIterator __second_cut = __middle; 25082: _Distance __len11 = 0; 25082: _Distance __len22 = 0; 25082: if (__len1 > __len2) 25082: { 25082: __len11 = __len1 / 2; 25082: std::advance(__first_cut, __len11); 25082: __second_cut 25082: = std::__lower_bound(__middle, __last, *__first_cut, 25082: __gnu_cxx::__ops::__iter_comp_val(__comp)); 25082: __len22 = std::distance(__middle, __second_cut); 25082: } 25082: else 25082: { 25082: __len22 = __len2 / 2; 25082: std::advance(__second_cut, __len22); 25082: __first_cut 25082: = std::__upper_bound(__first, __middle, *__second_cut, 25082: __gnu_cxx::__ops::__val_comp_iter(__comp)); 25082: __len11 = std::distance(__first, __first_cut); 25082: } 25082: 25082: std::rotate(__first_cut, __middle, __second_cut); 25082: _BidirectionalIterator __new_middle = __first_cut; 25082: std::advance(__new_middle, std::distance(__middle, __second_cut)); 25082: std::__merge_without_buffer(__first, __first_cut, __new_middle, 25082: __len11, __len22, __comp); 25082: std::__merge_without_buffer(__new_middle, __second_cut, __last, 25082: __len1 - __len11, __len2 - __len22, __comp); 25082: } 25082: 25082: template 25082: void 25082: __inplace_merge(_BidirectionalIterator __first, 25082: _BidirectionalIterator __middle, 25082: _BidirectionalIterator __last, 25082: _Compare __comp) 25082: { 25082: typedef typename iterator_traits<_BidirectionalIterator>::value_type 25082: _ValueType; 25082: typedef typename iterator_traits<_BidirectionalIterator>::difference_type 25082: _DistanceType; 25082: 25082: if (__first == __middle || __middle == __last) 25082: return; 25082: 25082: const _DistanceType __len1 = std::distance(__first, __middle); 25082: const _DistanceType __len2 = std::distance(__middle, __last); 25082: 25082: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; 25082: _TmpBuf __buf(__first, __last); 25082: 25082: if (__buf.begin() == 0) 25082: std::__merge_without_buffer 25082: (__first, __middle, __last, __len1, __len2, __comp); 25082: else 25082: std::__merge_adaptive 25082: (__first, __middle, __last, __len1, __len2, __buf.begin(), 25082: _DistanceType(__buf.size()), __comp); 25082: } 25082: # 2572 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: inplace_merge(_BidirectionalIterator __first, 25082: _BidirectionalIterator __middle, 25082: _BidirectionalIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: std::__inplace_merge(__first, __middle, __last, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 2613 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: inplace_merge(_BidirectionalIterator __first, 25082: _BidirectionalIterator __middle, 25082: _BidirectionalIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: std::__inplace_merge(__first, __middle, __last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: 25082: 25082: template 25082: _OutputIterator 25082: __move_merge(_InputIterator __first1, _InputIterator __last1, 25082: _InputIterator __first2, _InputIterator __last2, 25082: _OutputIterator __result, _Compare __comp) 25082: { 25082: while (__first1 != __last1 && __first2 != __last2) 25082: { 25082: if (__comp(__first2, __first1)) 25082: { 25082: *__result = std::move(*__first2); 25082: ++__first2; 25082: } 25082: else 25082: { 25082: *__result = std::move(*__first1); 25082: ++__first1; 25082: } 25082: ++__result; 25082: } 25082: return std::move(__first2, __last2, std::move(__first1, __last1, __result)) 25082: 25082: ; 25082: } 25082: 25082: template 25082: void 25082: __merge_sort_loop(_RandomAccessIterator1 __first, 25082: _RandomAccessIterator1 __last, 25082: _RandomAccessIterator2 __result, _Distance __step_size, 25082: _Compare __comp) 25082: { 25082: const _Distance __two_step = 2 * __step_size; 25082: 25082: while (__last - __first >= __two_step) 25082: { 25082: __result = std::__move_merge(__first, __first + __step_size, 25082: __first + __step_size, 25082: __first + __two_step, 25082: __result, __comp); 25082: __first += __two_step; 25082: } 25082: __step_size = std::min(_Distance(__last - __first), __step_size); 25082: 25082: std::__move_merge(__first, __first + __step_size, 25082: __first + __step_size, __last, __result, __comp); 25082: } 25082: 25082: template 25082: void 25082: __chunk_insertion_sort(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, 25082: _Distance __chunk_size, _Compare __comp) 25082: { 25082: while (__last - __first >= __chunk_size) 25082: { 25082: std::__insertion_sort(__first, __first + __chunk_size, __comp); 25082: __first += __chunk_size; 25082: } 25082: std::__insertion_sort(__first, __last, __comp); 25082: } 25082: 25082: enum { _S_chunk_size = 7 }; 25082: 25082: template 25082: void 25082: __merge_sort_with_buffer(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, 25082: _Pointer __buffer, _Compare __comp) 25082: { 25082: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 25082: _Distance; 25082: 25082: const _Distance __len = __last - __first; 25082: const _Pointer __buffer_last = __buffer + __len; 25082: 25082: _Distance __step_size = _S_chunk_size; 25082: std::__chunk_insertion_sort(__first, __last, __step_size, __comp); 25082: 25082: while (__step_size < __len) 25082: { 25082: std::__merge_sort_loop(__first, __last, __buffer, 25082: __step_size, __comp); 25082: __step_size *= 2; 25082: std::__merge_sort_loop(__buffer, __buffer_last, __first, 25082: __step_size, __comp); 25082: __step_size *= 2; 25082: } 25082: } 25082: 25082: template 25082: void 25082: __stable_sort_adaptive(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, 25082: _Pointer __buffer, _Distance __buffer_size, 25082: _Compare __comp) 25082: { 25082: const _Distance __len = (__last - __first + 1) / 2; 25082: const _RandomAccessIterator __middle = __first + __len; 25082: if (__len > __buffer_size) 25082: { 25082: std::__stable_sort_adaptive(__first, __middle, __buffer, 25082: __buffer_size, __comp); 25082: std::__stable_sort_adaptive(__middle, __last, __buffer, 25082: __buffer_size, __comp); 25082: } 25082: else 25082: { 25082: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); 25082: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); 25082: } 25082: std::__merge_adaptive(__first, __middle, __last, 25082: _Distance(__middle - __first), 25082: _Distance(__last - __middle), 25082: __buffer, __buffer_size, 25082: __comp); 25082: } 25082: 25082: 25082: template 25082: void 25082: __inplace_stable_sort(_RandomAccessIterator __first, 25082: _RandomAccessIterator __last, _Compare __comp) 25082: { 25082: if (__last - __first < 15) 25082: { 25082: std::__insertion_sort(__first, __last, __comp); 25082: return; 25082: } 25082: _RandomAccessIterator __middle = __first + (__last - __first) / 2; 25082: std::__inplace_stable_sort(__first, __middle, __comp); 25082: std::__inplace_stable_sort(__middle, __last, __comp); 25082: std::__merge_without_buffer(__first, __middle, __last, 25082: __middle - __first, 25082: __last - __middle, 25082: __comp); 25082: } 25082: # 2785 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: bool 25082: __includes(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _Compare __comp) 25082: { 25082: while (__first1 != __last1 && __first2 != __last2) 25082: if (__comp(__first2, __first1)) 25082: return false; 25082: else if (__comp(__first1, __first2)) 25082: ++__first1; 25082: else 25082: { 25082: ++__first1; 25082: ++__first2; 25082: } 25082: 25082: return __first2 == __last2; 25082: } 25082: # 2824 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: includes(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__includes(__first1, __last1, __first2, __last2, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 2868 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: includes(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__includes(__first1, __last1, __first2, __last2, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: # 2903 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: bool 25082: __next_permutation(_BidirectionalIterator __first, 25082: _BidirectionalIterator __last, _Compare __comp) 25082: { 25082: if (__first == __last) 25082: return false; 25082: _BidirectionalIterator __i = __first; 25082: ++__i; 25082: if (__i == __last) 25082: return false; 25082: __i = __last; 25082: --__i; 25082: 25082: for(;;) 25082: { 25082: _BidirectionalIterator __ii = __i; 25082: --__i; 25082: if (__comp(__i, __ii)) 25082: { 25082: _BidirectionalIterator __j = __last; 25082: while (!__comp(__i, --__j)) 25082: {} 25082: std::iter_swap(__i, __j); 25082: std::__reverse(__ii, __last, 25082: std::__iterator_category(__first)); 25082: return true; 25082: } 25082: if (__i == __first) 25082: { 25082: std::__reverse(__first, __last, 25082: std::__iterator_category(__first)); 25082: return false; 25082: } 25082: } 25082: } 25082: # 2952 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: next_permutation(_BidirectionalIterator __first, 25082: _BidirectionalIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__next_permutation 25082: (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 2984 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: next_permutation(_BidirectionalIterator __first, 25082: _BidirectionalIterator __last, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__next_permutation 25082: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: bool 25082: __prev_permutation(_BidirectionalIterator __first, 25082: _BidirectionalIterator __last, _Compare __comp) 25082: { 25082: if (__first == __last) 25082: return false; 25082: _BidirectionalIterator __i = __first; 25082: ++__i; 25082: if (__i == __last) 25082: return false; 25082: __i = __last; 25082: --__i; 25082: 25082: for(;;) 25082: { 25082: _BidirectionalIterator __ii = __i; 25082: --__i; 25082: if (__comp(__ii, __i)) 25082: { 25082: _BidirectionalIterator __j = __last; 25082: while (!__comp(--__j, __i)) 25082: {} 25082: std::iter_swap(__i, __j); 25082: std::__reverse(__ii, __last, 25082: std::__iterator_category(__first)); 25082: return true; 25082: } 25082: if (__i == __first) 25082: { 25082: std::__reverse(__first, __last, 25082: std::__iterator_category(__first)); 25082: return false; 25082: } 25082: } 25082: } 25082: # 3052 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: prev_permutation(_BidirectionalIterator __first, 25082: _BidirectionalIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__prev_permutation(__first, __last, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 3084 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: prev_permutation(_BidirectionalIterator __first, 25082: _BidirectionalIterator __last, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__prev_permutation(__first, __last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: _OutputIterator 25082: __replace_copy_if(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result, 25082: _Predicate __pred, const _Tp& __new_value) 25082: { 25082: for (; __first != __last; ++__first, (void)++__result) 25082: if (__pred(__first)) 25082: *__result = __new_value; 25082: else 25082: *__result = *__first; 25082: return __result; 25082: } 25082: # 3134 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: replace_copy(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result, 25082: const _Tp& __old_value, const _Tp& __new_value) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__replace_copy_if(__first, __last, __result, 25082: __gnu_cxx::__ops::__iter_equals_val(__old_value), 25082: __new_value); 25082: } 25082: # 3168 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: replace_copy_if(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result, 25082: _Predicate __pred, const _Tp& __new_value) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__replace_copy_if(__first, __last, __result, 25082: __gnu_cxx::__ops::__pred_iter(__pred), 25082: __new_value); 25082: } 25082: 25082: template 25082: typename iterator_traits<_InputIterator>::difference_type 25082: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 25082: { 25082: typename iterator_traits<_InputIterator>::difference_type __n = 0; 25082: for (; __first != __last; ++__first) 25082: if (__pred(__first)) 25082: ++__n; 25082: return __n; 25082: } 25082: # 3207 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: is_sorted(_ForwardIterator __first, _ForwardIterator __last) 25082: { return std::is_sorted_until(__first, __last) == __last; } 25082: # 3221 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: is_sorted(_ForwardIterator __first, _ForwardIterator __last, 25082: _Compare __comp) 25082: { return std::is_sorted_until(__first, __last, __comp) == __last; } 25082: 25082: template 25082: _ForwardIterator 25082: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 25082: _Compare __comp) 25082: { 25082: if (__first == __last) 25082: return __last; 25082: 25082: _ForwardIterator __next = __first; 25082: for (++__next; __next != __last; __first = __next, (void)++__next) 25082: if (__comp(__next, __first)) 25082: return __next; 25082: return __next; 25082: } 25082: # 3250 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__is_sorted_until(__first, __last, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 3274 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__is_sorted_until(__first, __last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: # 3299 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: constexpr 25082: inline pair 25082: minmax(const _Tp& __a, const _Tp& __b) 25082: { 25082: 25082: 25082: 25082: return __b < __a ? pair(__b, __a) 25082: : pair(__a, __b); 25082: } 25082: # 3320 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: constexpr 25082: inline pair 25082: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) 25082: { 25082: return __comp(__b, __a) ? pair(__b, __a) 25082: : pair(__a, __b); 25082: } 25082: 25082: template 25082: constexpr 25082: pair<_ForwardIterator, _ForwardIterator> 25082: __minmax_element(_ForwardIterator __first, _ForwardIterator __last, 25082: _Compare __comp) 25082: { 25082: _ForwardIterator __next = __first; 25082: if (__first == __last 25082: || ++__next == __last) 25082: return std::make_pair(__first, __first); 25082: 25082: _ForwardIterator __min{}, __max{}; 25082: if (__comp(__next, __first)) 25082: { 25082: __min = __next; 25082: __max = __first; 25082: } 25082: else 25082: { 25082: __min = __first; 25082: __max = __next; 25082: } 25082: 25082: __first = __next; 25082: ++__first; 25082: 25082: while (__first != __last) 25082: { 25082: __next = __first; 25082: if (++__next == __last) 25082: { 25082: if (__comp(__first, __min)) 25082: __min = __first; 25082: else if (!__comp(__first, __max)) 25082: __max = __first; 25082: break; 25082: } 25082: 25082: if (__comp(__next, __first)) 25082: { 25082: if (__comp(__next, __min)) 25082: __min = __next; 25082: if (!__comp(__first, __max)) 25082: __max = __first; 25082: } 25082: else 25082: { 25082: if (__comp(__first, __min)) 25082: __min = __first; 25082: if (!__comp(__next, __max)) 25082: __max = __next; 25082: } 25082: 25082: __first = __next; 25082: ++__first; 25082: } 25082: 25082: return std::make_pair(__min, __max); 25082: } 25082: # 3400 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: constexpr 25082: inline pair<_ForwardIterator, _ForwardIterator> 25082: minmax_element(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__minmax_element(__first, __last, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 3428 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: constexpr 25082: inline pair<_ForwardIterator, _ForwardIterator> 25082: minmax_element(_ForwardIterator __first, _ForwardIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__minmax_element(__first, __last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: 25082: template 25082: constexpr 25082: inline _Tp 25082: min(initializer_list<_Tp> __l) 25082: { return *std::min_element(__l.begin(), __l.end()); } 25082: 25082: template 25082: constexpr 25082: inline _Tp 25082: min(initializer_list<_Tp> __l, _Compare __comp) 25082: { return *std::min_element(__l.begin(), __l.end(), __comp); } 25082: 25082: template 25082: constexpr 25082: inline _Tp 25082: max(initializer_list<_Tp> __l) 25082: { return *std::max_element(__l.begin(), __l.end()); } 25082: 25082: template 25082: constexpr 25082: inline _Tp 25082: max(initializer_list<_Tp> __l, _Compare __comp) 25082: { return *std::max_element(__l.begin(), __l.end(), __comp); } 25082: 25082: template 25082: constexpr 25082: inline pair<_Tp, _Tp> 25082: minmax(initializer_list<_Tp> __l) 25082: { 25082: pair __p = 25082: std::minmax_element(__l.begin(), __l.end()); 25082: return std::make_pair(*__p.first, *__p.second); 25082: } 25082: 25082: template 25082: constexpr 25082: inline pair<_Tp, _Tp> 25082: minmax(initializer_list<_Tp> __l, _Compare __comp) 25082: { 25082: pair __p = 25082: std::minmax_element(__l.begin(), __l.end(), __comp); 25082: return std::make_pair(*__p.first, *__p.second); 25082: } 25082: 25082: template 25082: bool 25082: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _BinaryPredicate __pred) 25082: { 25082: 25082: 25082: for (; __first1 != __last1; ++__first1, (void)++__first2) 25082: if (!__pred(__first1, __first2)) 25082: break; 25082: 25082: if (__first1 == __last1) 25082: return true; 25082: 25082: 25082: 25082: _ForwardIterator2 __last2 = __first2; 25082: std::advance(__last2, std::distance(__first1, __last1)); 25082: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 25082: { 25082: if (__scan != std::__find_if(__first1, __scan, 25082: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 25082: continue; 25082: 25082: auto __matches 25082: = std::__count_if(__first2, __last2, 25082: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 25082: if (0 == __matches || 25082: std::__count_if(__scan, __last1, 25082: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 25082: != __matches) 25082: return false; 25082: } 25082: return true; 25082: } 25082: # 3540 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__is_permutation(__first1, __last1, __first2, 25082: __gnu_cxx::__ops::__iter_equal_to_iter()); 25082: } 25082: # 3571 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _BinaryPredicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__is_permutation(__first1, __last1, __first2, 25082: __gnu_cxx::__ops::__iter_comp_iter(__pred)); 25082: } 25082: 25082: 25082: template 25082: bool 25082: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 25082: _BinaryPredicate __pred) 25082: { 25082: using _Cat1 25082: = typename iterator_traits<_ForwardIterator1>::iterator_category; 25082: using _Cat2 25082: = typename iterator_traits<_ForwardIterator2>::iterator_category; 25082: using _It1_is_RA = is_same<_Cat1, random_access_iterator_tag>; 25082: using _It2_is_RA = is_same<_Cat2, random_access_iterator_tag>; 25082: constexpr bool __ra_iters = _It1_is_RA() && _It2_is_RA(); 25082: if (__ra_iters) 25082: { 25082: auto __d1 = std::distance(__first1, __last1); 25082: auto __d2 = std::distance(__first2, __last2); 25082: if (__d1 != __d2) 25082: return false; 25082: } 25082: 25082: 25082: 25082: for (; __first1 != __last1 && __first2 != __last2; 25082: ++__first1, (void)++__first2) 25082: if (!__pred(__first1, __first2)) 25082: break; 25082: 25082: if (__ra_iters) 25082: { 25082: if (__first1 == __last1) 25082: return true; 25082: } 25082: else 25082: { 25082: auto __d1 = std::distance(__first1, __last1); 25082: auto __d2 = std::distance(__first2, __last2); 25082: if (__d1 == 0 && __d2 == 0) 25082: return true; 25082: if (__d1 != __d2) 25082: return false; 25082: } 25082: 25082: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 25082: { 25082: if (__scan != std::__find_if(__first1, __scan, 25082: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 25082: continue; 25082: 25082: auto __matches = std::__count_if(__first2, __last2, 25082: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 25082: if (0 == __matches 25082: || std::__count_if(__scan, __last1, 25082: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 25082: != __matches) 25082: return false; 25082: } 25082: return true; 25082: } 25082: # 3664 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 25082: { 25082: ; 25082: ; 25082: 25082: return 25082: std::__is_permutation(__first1, __last1, __first2, __last2, 25082: __gnu_cxx::__ops::__iter_equal_to_iter()); 25082: } 25082: # 3691 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline bool 25082: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 25082: _BinaryPredicate __pred) 25082: { 25082: ; 25082: ; 25082: 25082: return std::__is_permutation(__first1, __last1, __first2, __last2, 25082: __gnu_cxx::__ops::__iter_comp_iter(__pred)); 25082: } 25082: # 3717 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: constexpr const _Tp& 25082: clamp(const _Tp& __val, const _Tp& __lo, const _Tp& __hi) 25082: { 25082: ; 25082: return (__val < __lo) ? __lo : (__hi < __val) ? __hi : __val; 25082: } 25082: # 3735 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: constexpr const _Tp& 25082: clamp(const _Tp& __val, const _Tp& __lo, const _Tp& __hi, _Compare __comp) 25082: { 25082: ; 25082: return __comp(__val, __lo) ? __lo : __comp(__hi, __val) ? __hi : __val; 25082: } 25082: # 3767 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: pair<_IntType, _IntType> 25082: __gen_two_uniform_ints(_IntType __b0, _IntType __b1, 25082: _UniformRandomBitGenerator&& __g) 25082: { 25082: _IntType __x 25082: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g); 25082: return std::make_pair(__x / __b1, __x % __b1); 25082: } 25082: # 3789 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: void 25082: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _UniformRandomNumberGenerator&& __g) 25082: { 25082: 25082: 25082: 25082: ; 25082: 25082: if (__first == __last) 25082: return; 25082: 25082: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 25082: _DistanceType; 25082: 25082: typedef typename std::make_unsigned<_DistanceType>::type __ud_type; 25082: typedef typename std::uniform_int_distribution<__ud_type> __distr_type; 25082: typedef typename __distr_type::param_type __p_type; 25082: 25082: typedef typename remove_reference<_UniformRandomNumberGenerator>::type 25082: _Gen; 25082: typedef typename common_type::type 25082: __uc_type; 25082: 25082: const __uc_type __urngrange = __g.max() - __g.min(); 25082: const __uc_type __urange = __uc_type(__last - __first); 25082: 25082: if (__urngrange / __urange >= __urange) 25082: 25082: { 25082: _RandomAccessIterator __i = __first + 1; 25082: 25082: 25082: 25082: 25082: 25082: if ((__urange % 2) == 0) 25082: { 25082: __distr_type __d{0, 1}; 25082: std::iter_swap(__i++, __first + __d(__g)); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: while (__i != __last) 25082: { 25082: const __uc_type __swap_range = __uc_type(__i - __first) + 1; 25082: 25082: const pair<__uc_type, __uc_type> __pospos = 25082: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g); 25082: 25082: std::iter_swap(__i++, __first + __pospos.first); 25082: std::iter_swap(__i++, __first + __pospos.second); 25082: } 25082: 25082: return; 25082: } 25082: 25082: __distr_type __d; 25082: 25082: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 25082: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: # 3874 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _Function 25082: for_each(_InputIterator __first, _InputIterator __last, _Function __f) 25082: { 25082: 25082: 25082: ; 25082: for (; __first != __last; ++__first) 25082: __f(*__first); 25082: return __f; 25082: } 25082: # 3895 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _InputIterator 25082: find(_InputIterator __first, _InputIterator __last, 25082: const _Tp& __val) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: return std::__find_if(__first, __last, 25082: __gnu_cxx::__ops::__iter_equals_val(__val)); 25082: } 25082: # 3919 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _InputIterator 25082: find_if(_InputIterator __first, _InputIterator __last, 25082: _Predicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__find_if(__first, __last, 25082: __gnu_cxx::__ops::__pred_iter(__pred)); 25082: } 25082: # 3950 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _InputIterator 25082: find_first_of(_InputIterator __first1, _InputIterator __last1, 25082: _ForwardIterator __first2, _ForwardIterator __last2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: for (; __first1 != __last1; ++__first1) 25082: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 25082: if (*__first1 == *__iter) 25082: return __first1; 25082: return __last1; 25082: } 25082: # 3990 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _InputIterator 25082: find_first_of(_InputIterator __first1, _InputIterator __last1, 25082: _ForwardIterator __first2, _ForwardIterator __last2, 25082: _BinaryPredicate __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: for (; __first1 != __last1; ++__first1) 25082: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 25082: if (__comp(*__first1, *__iter)) 25082: return __first1; 25082: return __last1; 25082: } 25082: # 4022 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: adjacent_find(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__adjacent_find(__first, __last, 25082: __gnu_cxx::__ops::__iter_equal_to_iter()); 25082: } 25082: # 4047 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 25082: _BinaryPredicate __binary_pred) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__adjacent_find(__first, __last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 25082: } 25082: # 4072 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline typename iterator_traits<_InputIterator>::difference_type 25082: count(_InputIterator __first, _InputIterator __last, const _Tp& __value) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__count_if(__first, __last, 25082: __gnu_cxx::__ops::__iter_equals_val(__value)); 25082: } 25082: # 4095 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline typename iterator_traits<_InputIterator>::difference_type 25082: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__count_if(__first, __last, 25082: __gnu_cxx::__ops::__pred_iter(__pred)); 25082: } 25082: # 4135 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator1 25082: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__search(__first1, __last1, __first2, __last2, 25082: __gnu_cxx::__ops::__iter_equal_to_iter()); 25082: } 25082: # 4174 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator1 25082: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 25082: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 25082: _BinaryPredicate __predicate) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__search(__first1, __last1, __first2, __last2, 25082: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); 25082: } 25082: # 4209 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: search_n(_ForwardIterator __first, _ForwardIterator __last, 25082: _Integer __count, const _Tp& __val) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__search_n(__first, __last, __count, 25082: __gnu_cxx::__ops::__iter_equals_val(__val)); 25082: } 25082: # 4242 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: search_n(_ForwardIterator __first, _ForwardIterator __last, 25082: _Integer __count, const _Tp& __val, 25082: _BinaryPredicate __binary_pred) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__search_n(__first, __last, __count, 25082: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); 25082: } 25082: # 4267 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: search(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Searcher& __searcher) 25082: { return __searcher(__first, __last).first; } 25082: # 4290 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _OutputIterator 25082: transform(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result, _UnaryOperation __unary_op) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: for (; __first != __last; ++__first, (void)++__result) 25082: *__result = __unary_op(*__first); 25082: return __result; 25082: } 25082: # 4327 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _OutputIterator 25082: transform(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _OutputIterator __result, 25082: _BinaryOperation __binary_op) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) 25082: *__result = __binary_op(*__first1, *__first2); 25082: return __result; 25082: } 25082: # 4360 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: void 25082: replace(_ForwardIterator __first, _ForwardIterator __last, 25082: const _Tp& __old_value, const _Tp& __new_value) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: for (; __first != __last; ++__first) 25082: if (*__first == __old_value) 25082: *__first = __new_value; 25082: } 25082: # 4392 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: void 25082: replace_if(_ForwardIterator __first, _ForwardIterator __last, 25082: _Predicate __pred, const _Tp& __new_value) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: for (; __first != __last; ++__first) 25082: if (__pred(*__first)) 25082: *__first = __new_value; 25082: } 25082: # 4424 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: void 25082: generate(_ForwardIterator __first, _ForwardIterator __last, 25082: _Generator __gen) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: for (; __first != __last; ++__first) 25082: *__first = __gen(); 25082: } 25082: # 4455 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: _OutputIterator 25082: generate_n(_OutputIterator __first, _Size __n, _Generator __gen) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: for (__decltype(__n + 0) __niter = __n; 25082: __niter > 0; --__niter, (void) ++__first) 25082: *__first = __gen(); 25082: return __first; 25082: } 25082: # 4491 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: unique_copy(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: if (__first == __last) 25082: return __result; 25082: return std::__unique_copy(__first, __last, __result, 25082: __gnu_cxx::__ops::__iter_equal_to_iter(), 25082: std::__iterator_category(__first), 25082: std::__iterator_category(__result)); 25082: } 25082: # 4531 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: unique_copy(_InputIterator __first, _InputIterator __last, 25082: _OutputIterator __result, 25082: _BinaryPredicate __binary_pred) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: if (__first == __last) 25082: return __result; 25082: return std::__unique_copy(__first, __last, __result, 25082: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), 25082: std::__iterator_category(__first), 25082: std::__iterator_category(__result)); 25082: } 25082: # 4564 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) 25082: { 25082: 25082: 25082: 25082: ; 25082: 25082: if (__first != __last) 25082: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 25082: { 25082: 25082: _RandomAccessIterator __j = __first 25082: + std::rand() % ((__i - __first) + 1); 25082: if (__i != __j) 25082: std::iter_swap(__i, __j); 25082: } 25082: } 25082: # 4599 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: void 25082: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: 25082: _RandomNumberGenerator&& __rand) 25082: 25082: 25082: 25082: { 25082: 25082: 25082: 25082: ; 25082: 25082: if (__first == __last) 25082: return; 25082: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 25082: { 25082: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); 25082: if (__i != __j) 25082: std::iter_swap(__i, __j); 25082: } 25082: } 25082: # 4639 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _ForwardIterator 25082: partition(_ForwardIterator __first, _ForwardIterator __last, 25082: _Predicate __pred) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: return std::__partition(__first, __last, __pred, 25082: std::__iterator_category(__first)); 25082: } 25082: # 4672 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: partial_sort(_RandomAccessIterator __first, 25082: _RandomAccessIterator __middle, 25082: _RandomAccessIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: std::__partial_sort(__first, __middle, __last, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 4710 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: partial_sort(_RandomAccessIterator __first, 25082: _RandomAccessIterator __middle, 25082: _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: std::__partial_sort(__first, __middle, __last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: # 4746 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 25082: _RandomAccessIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: if (__first == __last || __nth == __last) 25082: return; 25082: 25082: std::__introselect(__first, __nth, __last, 25082: std::__lg(__last - __first) * 2, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 4785 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 25082: _RandomAccessIterator __last, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: 25082: if (__first == __last || __nth == __last) 25082: return; 25082: 25082: std::__introselect(__first, __nth, __last, 25082: std::__lg(__last - __first) * 2, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: # 4822 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 4852 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: _OutputIterator 25082: __merge(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result, _Compare __comp) 25082: { 25082: while (__first1 != __last1 && __first2 != __last2) 25082: { 25082: if (__comp(__first2, __first1)) 25082: { 25082: *__result = *__first2; 25082: ++__first2; 25082: } 25082: else 25082: { 25082: *__result = *__first1; 25082: ++__first1; 25082: } 25082: ++__result; 25082: } 25082: return std::copy(__first2, __last2, 25082: std::copy(__first1, __last1, __result)); 25082: } 25082: # 4913 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: merge(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__merge(__first1, __last1, 25082: __first2, __last2, __result, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 4963 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: merge(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__merge(__first1, __last1, 25082: __first2, __last2, __result, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: inline void 25082: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: typedef typename iterator_traits<_RandomAccessIterator>::value_type 25082: _ValueType; 25082: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 25082: _DistanceType; 25082: 25082: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; 25082: _TmpBuf __buf(__first, __last); 25082: 25082: if (__buf.begin() == 0) 25082: std::__inplace_stable_sort(__first, __last, __comp); 25082: else 25082: std::__stable_sort_adaptive(__first, __last, __buf.begin(), 25082: _DistanceType(__buf.size()), __comp); 25082: } 25082: # 5027 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: std::__stable_sort(__first, __last, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 5061 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline void 25082: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: std::__stable_sort(__first, __last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: _OutputIterator 25082: __set_union(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result, _Compare __comp) 25082: { 25082: while (__first1 != __last1 && __first2 != __last2) 25082: { 25082: if (__comp(__first1, __first2)) 25082: { 25082: *__result = *__first1; 25082: ++__first1; 25082: } 25082: else if (__comp(__first2, __first1)) 25082: { 25082: *__result = *__first2; 25082: ++__first2; 25082: } 25082: else 25082: { 25082: *__result = *__first1; 25082: ++__first1; 25082: ++__first2; 25082: } 25082: ++__result; 25082: } 25082: return std::copy(__first2, __last2, 25082: std::copy(__first1, __last1, __result)); 25082: } 25082: # 5130 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__set_union(__first1, __last1, 25082: __first2, __last2, __result, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 5180 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__set_union(__first1, __last1, 25082: __first2, __last2, __result, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: _OutputIterator 25082: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result, _Compare __comp) 25082: { 25082: while (__first1 != __last1 && __first2 != __last2) 25082: if (__comp(__first1, __first2)) 25082: ++__first1; 25082: else if (__comp(__first2, __first1)) 25082: ++__first2; 25082: else 25082: { 25082: *__result = *__first1; 25082: ++__first1; 25082: ++__first2; 25082: ++__result; 25082: } 25082: return __result; 25082: } 25082: # 5251 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__set_intersection(__first1, __last1, 25082: __first2, __last2, __result, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 5300 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__set_intersection(__first1, __last1, 25082: __first2, __last2, __result, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: _OutputIterator 25082: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result, _Compare __comp) 25082: { 25082: while (__first1 != __last1 && __first2 != __last2) 25082: if (__comp(__first1, __first2)) 25082: { 25082: *__result = *__first1; 25082: ++__first1; 25082: ++__result; 25082: } 25082: else if (__comp(__first2, __first1)) 25082: ++__first2; 25082: else 25082: { 25082: ++__first1; 25082: ++__first2; 25082: } 25082: return std::copy(__first1, __last1, __result); 25082: } 25082: # 5373 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__set_difference(__first1, __last1, 25082: __first2, __last2, __result, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 5424 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result, _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__set_difference(__first1, __last1, 25082: __first2, __last2, __result, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: _OutputIterator 25082: __set_symmetric_difference(_InputIterator1 __first1, 25082: _InputIterator1 __last1, 25082: _InputIterator2 __first2, 25082: _InputIterator2 __last2, 25082: _OutputIterator __result, 25082: _Compare __comp) 25082: { 25082: while (__first1 != __last1 && __first2 != __last2) 25082: if (__comp(__first1, __first2)) 25082: { 25082: *__result = *__first1; 25082: ++__first1; 25082: ++__result; 25082: } 25082: else if (__comp(__first2, __first1)) 25082: { 25082: *__result = *__first2; 25082: ++__first2; 25082: ++__result; 25082: } 25082: else 25082: { 25082: ++__first1; 25082: ++__first2; 25082: } 25082: return std::copy(__first2, __last2, 25082: std::copy(__first1, __last1, __result)); 25082: } 25082: # 5503 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__set_symmetric_difference(__first1, __last1, 25082: __first2, __last2, __result, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 5554 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: inline _OutputIterator 25082: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 25082: _InputIterator2 __first2, _InputIterator2 __last2, 25082: _OutputIterator __result, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: ; 25082: ; 25082: 25082: return std::__set_symmetric_difference(__first1, __last1, 25082: __first2, __last2, __result, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: constexpr 25082: _ForwardIterator 25082: __min_element(_ForwardIterator __first, _ForwardIterator __last, 25082: _Compare __comp) 25082: { 25082: if (__first == __last) 25082: return __first; 25082: _ForwardIterator __result = __first; 25082: while (++__first != __last) 25082: if (__comp(__first, __result)) 25082: __result = __first; 25082: return __result; 25082: } 25082: # 5607 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: constexpr 25082: _ForwardIterator 25082: inline min_element(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__min_element(__first, __last, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 5632 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: constexpr 25082: inline _ForwardIterator 25082: min_element(_ForwardIterator __first, _ForwardIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__min_element(__first, __last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: template 25082: constexpr 25082: _ForwardIterator 25082: __max_element(_ForwardIterator __first, _ForwardIterator __last, 25082: _Compare __comp) 25082: { 25082: if (__first == __last) return __first; 25082: _ForwardIterator __result = __first; 25082: while (++__first != __last) 25082: if (__comp(__result, __first)) 25082: __result = __first; 25082: return __result; 25082: } 25082: # 5671 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: constexpr 25082: inline _ForwardIterator 25082: max_element(_ForwardIterator __first, _ForwardIterator __last) 25082: { 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__max_element(__first, __last, 25082: __gnu_cxx::__ops::__iter_less_iter()); 25082: } 25082: # 5696 "/usr/include/c++/8/bits/stl_algo.h" 3 25082: template 25082: constexpr 25082: inline _ForwardIterator 25082: max_element(_ForwardIterator __first, _ForwardIterator __last, 25082: _Compare __comp) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: ; 25082: ; 25082: 25082: return std::__max_element(__first, __last, 25082: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 25082: } 25082: 25082: 25082: 25082: template 25082: _RandomAccessIterator 25082: __sample(_InputIterator __first, _InputIterator __last, input_iterator_tag, 25082: _RandomAccessIterator __out, random_access_iterator_tag, 25082: _Size __n, _UniformRandomBitGenerator&& __g) 25082: { 25082: using __distrib_type = uniform_int_distribution<_Size>; 25082: using __param_type = typename __distrib_type::param_type; 25082: __distrib_type __d{}; 25082: _Size __sample_sz = 0; 25082: while (__first != __last && __sample_sz != __n) 25082: { 25082: __out[__sample_sz++] = *__first; 25082: ++__first; 25082: } 25082: for (auto __pop_sz = __sample_sz; __first != __last; 25082: ++__first, (void) ++__pop_sz) 25082: { 25082: const auto __k = __d(__g, __param_type{0, __pop_sz}); 25082: if (__k < __n) 25082: __out[__k] = *__first; 25082: } 25082: return __out + __sample_sz; 25082: } 25082: 25082: 25082: template 25082: _OutputIterator 25082: __sample(_ForwardIterator __first, _ForwardIterator __last, 25082: forward_iterator_tag, 25082: _OutputIterator __out, _Cat, 25082: _Size __n, _UniformRandomBitGenerator&& __g) 25082: { 25082: using __distrib_type = uniform_int_distribution<_Size>; 25082: using __param_type = typename __distrib_type::param_type; 25082: using _USize = make_unsigned_t<_Size>; 25082: using _Gen = remove_reference_t<_UniformRandomBitGenerator>; 25082: using __uc_type = common_type_t; 25082: 25082: __distrib_type __d{}; 25082: _Size __unsampled_sz = std::distance(__first, __last); 25082: __n = std::min(__n, __unsampled_sz); 25082: 25082: 25082: 25082: 25082: const __uc_type __urngrange = __g.max() - __g.min(); 25082: if (__urngrange / __uc_type(__unsampled_sz) >= __uc_type(__unsampled_sz)) 25082: 25082: 25082: { 25082: while (__n != 0 && __unsampled_sz >= 2) 25082: { 25082: const pair<_Size, _Size> __p = 25082: __gen_two_uniform_ints(__unsampled_sz, __unsampled_sz - 1, __g); 25082: 25082: --__unsampled_sz; 25082: if (__p.first < __n) 25082: { 25082: *__out++ = *__first; 25082: --__n; 25082: } 25082: 25082: ++__first; 25082: 25082: if (__n == 0) break; 25082: 25082: --__unsampled_sz; 25082: if (__p.second < __n) 25082: { 25082: *__out++ = *__first; 25082: --__n; 25082: } 25082: 25082: ++__first; 25082: } 25082: } 25082: 25082: 25082: 25082: for (; __n != 0; ++__first) 25082: if (__d(__g, __param_type{0, --__unsampled_sz}) < __n) 25082: { 25082: *__out++ = *__first; 25082: --__n; 25082: } 25082: return __out; 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: _SampleIterator 25082: sample(_PopulationIterator __first, _PopulationIterator __last, 25082: _SampleIterator __out, _Distance __n, 25082: _UniformRandomBitGenerator&& __g) 25082: { 25082: using __pop_cat = typename 25082: std::iterator_traits<_PopulationIterator>::iterator_category; 25082: using __samp_cat = typename 25082: std::iterator_traits<_SampleIterator>::iterator_category; 25082: 25082: static_assert( 25082: __or_, 25082: is_convertible<__samp_cat, random_access_iterator_tag>>::value, 25082: "output range must use a RandomAccessIterator when input range" 25082: " does not meet the ForwardIterator requirements"); 25082: 25082: static_assert(is_integral<_Distance>::value, 25082: "sample size must be an integer type"); 25082: 25082: typename iterator_traits<_PopulationIterator>::difference_type __d = __n; 25082: return std:: 25082: __sample(__first, __last, __pop_cat{}, __out, __samp_cat{}, __d, 25082: std::forward<_UniformRandomBitGenerator>(__g)); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 63 "/usr/include/c++/8/algorithm" 2 3 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Field.h" 2 3 4 25082: 25082: # 1 "/usr/include/c++/8/functional" 1 3 4 25082: # 46 "/usr/include/c++/8/functional" 3 4 25082: 25082: # 47 "/usr/include/c++/8/functional" 3 25082: # 59 "/usr/include/c++/8/functional" 3 25082: # 1 "/usr/include/c++/8/bits/std_function.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/std_function.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/std_function.h" 3 25082: # 47 "/usr/include/c++/8/bits/std_function.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: class bad_function_call : public std::exception 25082: { 25082: public: 25082: virtual ~bad_function_call() noexcept; 25082: 25082: const char* what() const noexcept; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __is_location_invariant 25082: : is_trivially_copyable<_Tp>::type 25082: { }; 25082: 25082: class _Undefined_class; 25082: 25082: union _Nocopy_types 25082: { 25082: void* _M_object; 25082: const void* _M_const_object; 25082: void (*_M_function_pointer)(); 25082: void (_Undefined_class::*_M_member_pointer)(); 25082: }; 25082: 25082: union [[gnu::may_alias]] _Any_data 25082: { 25082: void* _M_access() { return &_M_pod_data[0]; } 25082: const void* _M_access() const { return &_M_pod_data[0]; } 25082: 25082: template 25082: _Tp& 25082: _M_access() 25082: { return *static_cast<_Tp*>(_M_access()); } 25082: 25082: template 25082: const _Tp& 25082: _M_access() const 25082: { return *static_cast(_M_access()); } 25082: 25082: _Nocopy_types _M_unused; 25082: char _M_pod_data[sizeof(_Nocopy_types)]; 25082: }; 25082: 25082: enum _Manager_operation 25082: { 25082: __get_type_info, 25082: __get_functor_ptr, 25082: __clone_functor, 25082: __destroy_functor 25082: }; 25082: 25082: 25082: 25082: template 25082: struct _Simple_type_wrapper 25082: { 25082: _Simple_type_wrapper(_Tp __value) : __value(__value) { } 25082: 25082: _Tp __value; 25082: }; 25082: 25082: template 25082: struct __is_location_invariant<_Simple_type_wrapper<_Tp> > 25082: : __is_location_invariant<_Tp> 25082: { }; 25082: 25082: template 25082: class function; 25082: 25082: 25082: class _Function_base 25082: { 25082: public: 25082: static const std::size_t _M_max_size = sizeof(_Nocopy_types); 25082: static const std::size_t _M_max_align = __alignof__(_Nocopy_types); 25082: 25082: template 25082: class _Base_manager 25082: { 25082: protected: 25082: static const bool __stored_locally = 25082: (__is_location_invariant<_Functor>::value 25082: && sizeof(_Functor) <= _M_max_size 25082: && __alignof__(_Functor) <= _M_max_align 25082: && (_M_max_align % __alignof__(_Functor) == 0)); 25082: 25082: typedef integral_constant _Local_storage; 25082: 25082: 25082: static _Functor* 25082: _M_get_pointer(const _Any_data& __source) 25082: { 25082: const _Functor* __ptr = 25082: __stored_locally? std::__addressof(__source._M_access<_Functor>()) 25082: : __source._M_access<_Functor*>(); 25082: return const_cast<_Functor*>(__ptr); 25082: } 25082: 25082: 25082: 25082: static void 25082: _M_clone(_Any_data& __dest, const _Any_data& __source, true_type) 25082: { 25082: ::new (__dest._M_access()) _Functor(__source._M_access<_Functor>()); 25082: } 25082: 25082: 25082: 25082: static void 25082: _M_clone(_Any_data& __dest, const _Any_data& __source, false_type) 25082: { 25082: __dest._M_access<_Functor*>() = 25082: new _Functor(*__source._M_access<_Functor*>()); 25082: } 25082: 25082: 25082: 25082: static void 25082: _M_destroy(_Any_data& __victim, true_type) 25082: { 25082: __victim._M_access<_Functor>().~_Functor(); 25082: } 25082: 25082: 25082: static void 25082: _M_destroy(_Any_data& __victim, false_type) 25082: { 25082: delete __victim._M_access<_Functor*>(); 25082: } 25082: 25082: public: 25082: static bool 25082: _M_manager(_Any_data& __dest, const _Any_data& __source, 25082: _Manager_operation __op) 25082: { 25082: switch (__op) 25082: { 25082: 25082: case __get_type_info: 25082: __dest._M_access() = &typeid(_Functor); 25082: break; 25082: 25082: case __get_functor_ptr: 25082: __dest._M_access<_Functor*>() = _M_get_pointer(__source); 25082: break; 25082: 25082: case __clone_functor: 25082: _M_clone(__dest, __source, _Local_storage()); 25082: break; 25082: 25082: case __destroy_functor: 25082: _M_destroy(__dest, _Local_storage()); 25082: break; 25082: } 25082: return false; 25082: } 25082: 25082: static void 25082: _M_init_functor(_Any_data& __functor, _Functor&& __f) 25082: { _M_init_functor(__functor, std::move(__f), _Local_storage()); } 25082: 25082: template 25082: static bool 25082: _M_not_empty_function(const function<_Signature>& __f) 25082: { return static_cast(__f); } 25082: 25082: template 25082: static bool 25082: _M_not_empty_function(_Tp* __fp) 25082: { return __fp != nullptr; } 25082: 25082: template 25082: static bool 25082: _M_not_empty_function(_Tp _Class::* __mp) 25082: { return __mp != nullptr; } 25082: 25082: template 25082: static bool 25082: _M_not_empty_function(const _Tp&) 25082: { return true; } 25082: 25082: private: 25082: static void 25082: _M_init_functor(_Any_data& __functor, _Functor&& __f, true_type) 25082: { ::new (__functor._M_access()) _Functor(std::move(__f)); } 25082: 25082: static void 25082: _M_init_functor(_Any_data& __functor, _Functor&& __f, false_type) 25082: { __functor._M_access<_Functor*>() = new _Functor(std::move(__f)); } 25082: }; 25082: 25082: _Function_base() : _M_manager(nullptr) { } 25082: 25082: ~_Function_base() 25082: { 25082: if (_M_manager) 25082: _M_manager(_M_functor, _M_functor, __destroy_functor); 25082: } 25082: 25082: bool _M_empty() const { return !_M_manager; } 25082: 25082: typedef bool (*_Manager_type)(_Any_data&, const _Any_data&, 25082: _Manager_operation); 25082: 25082: _Any_data _M_functor; 25082: _Manager_type _M_manager; 25082: }; 25082: 25082: template 25082: class _Function_handler; 25082: 25082: template 25082: class _Function_handler<_Res(_ArgTypes...), _Functor> 25082: : public _Function_base::_Base_manager<_Functor> 25082: { 25082: typedef _Function_base::_Base_manager<_Functor> _Base; 25082: 25082: public: 25082: static _Res 25082: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) 25082: { 25082: return (*_Base::_M_get_pointer(__functor))( 25082: std::forward<_ArgTypes>(__args)...); 25082: } 25082: }; 25082: 25082: template 25082: class _Function_handler 25082: : public _Function_base::_Base_manager<_Functor> 25082: { 25082: typedef _Function_base::_Base_manager<_Functor> _Base; 25082: 25082: public: 25082: static void 25082: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) 25082: { 25082: (*_Base::_M_get_pointer(__functor))( 25082: std::forward<_ArgTypes>(__args)...); 25082: } 25082: }; 25082: 25082: template 25082: class _Function_handler<_Res(_ArgTypes...), _Member _Class::*> 25082: : public _Function_handler 25082: { 25082: typedef _Function_handler 25082: _Base; 25082: 25082: public: 25082: static _Res 25082: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) 25082: { 25082: return std::__invoke(_Base::_M_get_pointer(__functor)->__value, 25082: std::forward<_ArgTypes>(__args)...); 25082: } 25082: }; 25082: 25082: template 25082: class _Function_handler 25082: : public _Function_base::_Base_manager< 25082: _Simple_type_wrapper< _Member _Class::* > > 25082: { 25082: typedef _Member _Class::* _Functor; 25082: typedef _Simple_type_wrapper<_Functor> _Wrapper; 25082: typedef _Function_base::_Base_manager<_Wrapper> _Base; 25082: 25082: public: 25082: static bool 25082: _M_manager(_Any_data& __dest, const _Any_data& __source, 25082: _Manager_operation __op) 25082: { 25082: switch (__op) 25082: { 25082: 25082: case __get_type_info: 25082: __dest._M_access() = &typeid(_Functor); 25082: break; 25082: 25082: case __get_functor_ptr: 25082: __dest._M_access<_Functor*>() = 25082: &_Base::_M_get_pointer(__source)->__value; 25082: break; 25082: 25082: default: 25082: _Base::_M_manager(__dest, __source, __op); 25082: } 25082: return false; 25082: } 25082: 25082: static void 25082: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) 25082: { 25082: std::__invoke(_Base::_M_get_pointer(__functor)->__value, 25082: std::forward<_ArgTypes>(__args)...); 25082: } 25082: }; 25082: 25082: template 25082: using __check_func_return_type 25082: = __or_, is_same<_From, _To>, is_convertible<_From, _To>>; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class function<_Res(_ArgTypes...)> 25082: : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, 25082: private _Function_base 25082: { 25082: template::type> 25082: struct _Callable : __check_func_return_type<_Res2, _Res> { }; 25082: 25082: 25082: 25082: template 25082: struct _Callable : false_type { }; 25082: 25082: template 25082: using _Requires = typename enable_if<_Cond::value, _Tp>::type; 25082: 25082: public: 25082: typedef _Res result_type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: function() noexcept 25082: : _Function_base() { } 25082: 25082: 25082: 25082: 25082: 25082: function(nullptr_t) noexcept 25082: : _Function_base() { } 25082: # 413 "/usr/include/c++/8/bits/std_function.h" 3 25082: function(const function& __x); 25082: # 422 "/usr/include/c++/8/bits/std_function.h" 3 25082: function(function&& __x) noexcept : _Function_base() 25082: { 25082: __x.swap(*this); 25082: } 25082: # 443 "/usr/include/c++/8/bits/std_function.h" 3 25082: template>, void>, 25082: typename = _Requires<_Callable<_Functor>, void>> 25082: function(_Functor); 25082: # 460 "/usr/include/c++/8/bits/std_function.h" 3 25082: function& 25082: operator=(const function& __x) 25082: { 25082: function(__x).swap(*this); 25082: return *this; 25082: } 25082: # 478 "/usr/include/c++/8/bits/std_function.h" 3 25082: function& 25082: operator=(function&& __x) noexcept 25082: { 25082: function(std::move(__x)).swap(*this); 25082: return *this; 25082: } 25082: # 492 "/usr/include/c++/8/bits/std_function.h" 3 25082: function& 25082: operator=(nullptr_t) noexcept 25082: { 25082: if (_M_manager) 25082: { 25082: _M_manager(_M_functor, _M_functor, __destroy_functor); 25082: _M_manager = nullptr; 25082: _M_invoker = nullptr; 25082: } 25082: return *this; 25082: } 25082: # 520 "/usr/include/c++/8/bits/std_function.h" 3 25082: template 25082: _Requires<_Callable::type>, function&> 25082: operator=(_Functor&& __f) 25082: { 25082: function(std::forward<_Functor>(__f)).swap(*this); 25082: return *this; 25082: } 25082: 25082: 25082: template 25082: function& 25082: operator=(reference_wrapper<_Functor> __f) noexcept 25082: { 25082: function(__f).swap(*this); 25082: return *this; 25082: } 25082: # 546 "/usr/include/c++/8/bits/std_function.h" 3 25082: void swap(function& __x) noexcept 25082: { 25082: std::swap(_M_functor, __x._M_functor); 25082: std::swap(_M_manager, __x._M_manager); 25082: std::swap(_M_invoker, __x._M_invoker); 25082: } 25082: # 563 "/usr/include/c++/8/bits/std_function.h" 3 25082: explicit operator bool() const noexcept 25082: { return !_M_empty(); } 25082: # 576 "/usr/include/c++/8/bits/std_function.h" 3 25082: _Res operator()(_ArgTypes... __args) const; 25082: # 589 "/usr/include/c++/8/bits/std_function.h" 3 25082: const type_info& target_type() const noexcept; 25082: # 602 "/usr/include/c++/8/bits/std_function.h" 3 25082: template _Functor* target() noexcept; 25082: 25082: template const _Functor* target() const noexcept; 25082: 25082: 25082: 25082: private: 25082: using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...); 25082: _Invoker_type _M_invoker; 25082: }; 25082: 25082: 25082: template 25082: struct __function_guide_helper 25082: { }; 25082: 25082: template 25082: struct __function_guide_helper< 25082: _Res (_Tp::*) (_Args...) noexcept(_Nx) 25082: > 25082: { using type = _Res(_Args...); }; 25082: 25082: template 25082: struct __function_guide_helper< 25082: _Res (_Tp::*) (_Args...) & noexcept(_Nx) 25082: > 25082: { using type = _Res(_Args...); }; 25082: 25082: template 25082: struct __function_guide_helper< 25082: _Res (_Tp::*) (_Args...) const noexcept(_Nx) 25082: > 25082: { using type = _Res(_Args...); }; 25082: 25082: template 25082: struct __function_guide_helper< 25082: _Res (_Tp::*) (_Args...) const & noexcept(_Nx) 25082: > 25082: { using type = _Res(_Args...); }; 25082: 25082: template 25082: function(_Res(*)(_ArgTypes...)) -> function<_Res(_ArgTypes...)>; 25082: 25082: template::type> 25082: function(_Functor) -> function<_Signature>; 25082: 25082: 25082: 25082: template 25082: function<_Res(_ArgTypes...)>:: 25082: function(const function& __x) 25082: : _Function_base() 25082: { 25082: if (static_cast(__x)) 25082: { 25082: __x._M_manager(_M_functor, __x._M_functor, __clone_functor); 25082: _M_invoker = __x._M_invoker; 25082: _M_manager = __x._M_manager; 25082: } 25082: } 25082: 25082: template 25082: template 25082: function<_Res(_ArgTypes...)>:: 25082: function(_Functor __f) 25082: : _Function_base() 25082: { 25082: typedef _Function_handler<_Res(_ArgTypes...), _Functor> _My_handler; 25082: 25082: if (_My_handler::_M_not_empty_function(__f)) 25082: { 25082: _My_handler::_M_init_functor(_M_functor, std::move(__f)); 25082: _M_invoker = &_My_handler::_M_invoke; 25082: _M_manager = &_My_handler::_M_manager; 25082: } 25082: } 25082: 25082: template 25082: _Res 25082: function<_Res(_ArgTypes...)>:: 25082: operator()(_ArgTypes... __args) const 25082: { 25082: if (_M_empty()) 25082: __throw_bad_function_call(); 25082: return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...); 25082: } 25082: 25082: 25082: template 25082: const type_info& 25082: function<_Res(_ArgTypes...)>:: 25082: target_type() const noexcept 25082: { 25082: if (_M_manager) 25082: { 25082: _Any_data __typeinfo_result; 25082: _M_manager(__typeinfo_result, _M_functor, __get_type_info); 25082: return *__typeinfo_result._M_access(); 25082: } 25082: else 25082: return typeid(void); 25082: } 25082: 25082: template 25082: template 25082: _Functor* 25082: function<_Res(_ArgTypes...)>:: 25082: target() noexcept 25082: { 25082: const function* __const_this = this; 25082: const _Functor* __func = __const_this->template target<_Functor>(); 25082: return const_cast<_Functor*>(__func); 25082: } 25082: 25082: template 25082: template 25082: const _Functor* 25082: function<_Res(_ArgTypes...)>:: 25082: target() const noexcept 25082: { 25082: if (typeid(_Functor) == target_type() && _M_manager) 25082: { 25082: _Any_data __ptr; 25082: _M_manager(__ptr, _M_functor, __get_functor_ptr); 25082: return __ptr._M_access(); 25082: } 25082: else 25082: return nullptr; 25082: } 25082: # 743 "/usr/include/c++/8/bits/std_function.h" 3 25082: template 25082: inline bool 25082: operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept 25082: { return !static_cast(__f); } 25082: 25082: 25082: template 25082: inline bool 25082: operator==(nullptr_t, const function<_Res(_Args...)>& __f) noexcept 25082: { return !static_cast(__f); } 25082: # 761 "/usr/include/c++/8/bits/std_function.h" 3 25082: template 25082: inline bool 25082: operator!=(const function<_Res(_Args...)>& __f, nullptr_t) noexcept 25082: { return static_cast(__f); } 25082: 25082: 25082: template 25082: inline bool 25082: operator!=(nullptr_t, const function<_Res(_Args...)>& __f) noexcept 25082: { return static_cast(__f); } 25082: # 782 "/usr/include/c++/8/bits/std_function.h" 3 25082: template 25082: inline void 25082: swap(function<_Res(_Args...)>& __x, function<_Res(_Args...)>& __y) noexcept 25082: { __x.swap(__y); } 25082: 25082: 25082: } 25082: # 60 "/usr/include/c++/8/functional" 2 3 25082: # 68 "/usr/include/c++/8/functional" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline invoke_result_t<_Callable, _Args...> 25082: invoke(_Callable&& __fn, _Args&&... __args) 25082: noexcept(is_nothrow_invocable_v<_Callable, _Args...>) 25082: { 25082: return std::__invoke(std::forward<_Callable>(__fn), 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: 25082: template::value> 25082: class _Mem_fn_base 25082: : public _Mem_fn_traits<_MemFunPtr>::__maybe_type 25082: { 25082: using _Traits = _Mem_fn_traits<_MemFunPtr>; 25082: 25082: using _Arity = typename _Traits::__arity; 25082: using _Varargs = typename _Traits::__vararg; 25082: 25082: template 25082: friend struct _Bind_check_arity; 25082: 25082: _MemFunPtr _M_pmf; 25082: 25082: public: 25082: 25082: using result_type = typename _Traits::__result_type; 25082: 25082: explicit constexpr 25082: _Mem_fn_base(_MemFunPtr __pmf) noexcept : _M_pmf(__pmf) { } 25082: 25082: template 25082: auto 25082: operator()(_Args&&... __args) const 25082: noexcept(noexcept( 25082: std::__invoke(_M_pmf, std::forward<_Args>(__args)...))) 25082: -> decltype(std::__invoke(_M_pmf, std::forward<_Args>(__args)...)) 25082: { return std::__invoke(_M_pmf, std::forward<_Args>(__args)...); } 25082: }; 25082: 25082: 25082: template 25082: class _Mem_fn_base<_MemObjPtr, false> 25082: { 25082: using _Arity = integral_constant; 25082: using _Varargs = false_type; 25082: 25082: template 25082: friend struct _Bind_check_arity; 25082: 25082: _MemObjPtr _M_pm; 25082: 25082: public: 25082: explicit constexpr 25082: _Mem_fn_base(_MemObjPtr __pm) noexcept : _M_pm(__pm) { } 25082: 25082: template 25082: auto 25082: operator()(_Tp&& __obj) const 25082: noexcept(noexcept(std::__invoke(_M_pm, std::forward<_Tp>(__obj)))) 25082: -> decltype(std::__invoke(_M_pm, std::forward<_Tp>(__obj))) 25082: { return std::__invoke(_M_pm, std::forward<_Tp>(__obj)); } 25082: }; 25082: 25082: template 25082: struct _Mem_fn; 25082: 25082: template 25082: struct _Mem_fn<_Res _Class::*> 25082: : _Mem_fn_base<_Res _Class::*> 25082: { 25082: using _Mem_fn_base<_Res _Class::*>::_Mem_fn_base; 25082: }; 25082: # 158 "/usr/include/c++/8/functional" 3 25082: template 25082: inline _Mem_fn<_Tp _Class::*> 25082: mem_fn(_Tp _Class::* __pm) noexcept 25082: { 25082: return _Mem_fn<_Tp _Class::*>(__pm); 25082: } 25082: # 173 "/usr/include/c++/8/functional" 3 25082: template 25082: struct is_bind_expression 25082: : public false_type { }; 25082: # 184 "/usr/include/c++/8/functional" 3 25082: template 25082: struct is_placeholder 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: template inline constexpr bool is_bind_expression_v 25082: = is_bind_expression<_Tp>::value; 25082: template inline constexpr int is_placeholder_v 25082: = is_placeholder<_Tp>::value; 25082: 25082: 25082: 25082: 25082: 25082: template struct _Placeholder { }; 25082: 25082: 25082: 25082: 25082: 25082: namespace placeholders 25082: { 25082: 25082: 25082: 25082: 25082: extern const _Placeholder<1> _1; 25082: extern const _Placeholder<2> _2; 25082: extern const _Placeholder<3> _3; 25082: extern const _Placeholder<4> _4; 25082: extern const _Placeholder<5> _5; 25082: extern const _Placeholder<6> _6; 25082: extern const _Placeholder<7> _7; 25082: extern const _Placeholder<8> _8; 25082: extern const _Placeholder<9> _9; 25082: extern const _Placeholder<10> _10; 25082: extern const _Placeholder<11> _11; 25082: extern const _Placeholder<12> _12; 25082: extern const _Placeholder<13> _13; 25082: extern const _Placeholder<14> _14; 25082: extern const _Placeholder<15> _15; 25082: extern const _Placeholder<16> _16; 25082: extern const _Placeholder<17> _17; 25082: extern const _Placeholder<18> _18; 25082: extern const _Placeholder<19> _19; 25082: extern const _Placeholder<20> _20; 25082: extern const _Placeholder<21> _21; 25082: extern const _Placeholder<22> _22; 25082: extern const _Placeholder<23> _23; 25082: extern const _Placeholder<24> _24; 25082: extern const _Placeholder<25> _25; 25082: extern const _Placeholder<26> _26; 25082: extern const _Placeholder<27> _27; 25082: extern const _Placeholder<28> _28; 25082: extern const _Placeholder<29> _29; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_placeholder<_Placeholder<_Num> > 25082: : public integral_constant 25082: { }; 25082: 25082: template 25082: struct is_placeholder > 25082: : public integral_constant 25082: { }; 25082: 25082: 25082: 25082: template 25082: using _Safe_tuple_element_t 25082: = typename enable_if<(__i < tuple_size<_Tuple>::value), 25082: tuple_element<__i, _Tuple>>::type::type; 25082: # 275 "/usr/include/c++/8/functional" 3 25082: template::value, 25082: bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)> 25082: class _Mu; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class _Mu, false, false> 25082: { 25082: public: 25082: 25082: 25082: 25082: 25082: template 25082: _Tp& 25082: operator()(_CVRef& __arg, _Tuple&) const volatile 25082: { return __arg.get(); } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class _Mu<_Arg, true, false> 25082: { 25082: public: 25082: template 25082: auto 25082: operator()(_CVArg& __arg, 25082: tuple<_Args...>& __tuple) const volatile 25082: -> decltype(__arg(declval<_Args>()...)) 25082: { 25082: 25082: typedef typename _Build_index_tuple::__type 25082: _Indexes; 25082: return this->__call(__arg, __tuple, _Indexes()); 25082: } 25082: 25082: private: 25082: 25082: 25082: template 25082: auto 25082: __call(_CVArg& __arg, tuple<_Args...>& __tuple, 25082: const _Index_tuple<_Indexes...>&) const volatile 25082: -> decltype(__arg(declval<_Args>()...)) 25082: { 25082: return __arg(std::get<_Indexes>(std::move(__tuple))...); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class _Mu<_Arg, false, true> 25082: { 25082: public: 25082: template 25082: _Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&& 25082: operator()(const volatile _Arg&, _Tuple& __tuple) const volatile 25082: { 25082: return 25082: ::std::get<(is_placeholder<_Arg>::value - 1)>(std::move(__tuple)); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class _Mu<_Arg, false, false> 25082: { 25082: public: 25082: template 25082: _CVArg&& 25082: operator()(_CVArg&& __arg, _Tuple&) const volatile 25082: { return std::forward<_CVArg>(__arg); } 25082: }; 25082: 25082: 25082: template 25082: inline auto 25082: __volget(volatile tuple<_Tp...>& __tuple) 25082: -> __tuple_element_t<_Ind, tuple<_Tp...>> volatile& 25082: { return std::get<_Ind>(const_cast&>(__tuple)); } 25082: 25082: 25082: template 25082: inline auto 25082: __volget(const volatile tuple<_Tp...>& __tuple) 25082: -> __tuple_element_t<_Ind, tuple<_Tp...>> const volatile& 25082: { return std::get<_Ind>(const_cast&>(__tuple)); } 25082: 25082: 25082: template 25082: struct _Bind; 25082: 25082: template 25082: class _Bind<_Functor(_Bound_args...)> 25082: : public _Weak_result_type<_Functor> 25082: { 25082: typedef typename _Build_index_tuple::__type 25082: _Bound_indexes; 25082: 25082: _Functor _M_f; 25082: tuple<_Bound_args...> _M_bound_args; 25082: 25082: 25082: template 25082: _Result 25082: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) 25082: { 25082: return std::__invoke(_M_f, 25082: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... 25082: ); 25082: } 25082: 25082: 25082: template 25082: _Result 25082: __call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const 25082: { 25082: return std::__invoke(_M_f, 25082: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... 25082: ); 25082: } 25082: 25082: 25082: template 25082: _Result 25082: __call_v(tuple<_Args...>&& __args, 25082: _Index_tuple<_Indexes...>) volatile 25082: { 25082: return std::__invoke(_M_f, 25082: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... 25082: ); 25082: } 25082: 25082: 25082: template 25082: _Result 25082: __call_c_v(tuple<_Args...>&& __args, 25082: _Index_tuple<_Indexes...>) const volatile 25082: { 25082: return std::__invoke(_M_f, 25082: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... 25082: ); 25082: } 25082: 25082: template 25082: using _Mu_type = decltype( 25082: _Mu::type>()( 25082: std::declval<_BoundArg&>(), std::declval<_CallArgs&>()) ); 25082: 25082: template 25082: using _Res_type_impl 25082: = typename result_of< _Fn&(_Mu_type<_BArgs, _CallArgs>&&...) >::type; 25082: 25082: template 25082: using _Res_type = _Res_type_impl<_Functor, _CallArgs, _Bound_args...>; 25082: 25082: template 25082: using __dependent = typename 25082: enable_if::value+1), _Functor>::type; 25082: 25082: template class __cv_quals> 25082: using _Res_type_cv = _Res_type_impl< 25082: typename __cv_quals<__dependent<_CallArgs>>::type, 25082: _CallArgs, 25082: typename __cv_quals<_Bound_args>::type...>; 25082: 25082: public: 25082: template 25082: explicit _Bind(const _Functor& __f, _Args&&... __args) 25082: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) 25082: { } 25082: 25082: template 25082: explicit _Bind(_Functor&& __f, _Args&&... __args) 25082: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) 25082: { } 25082: 25082: _Bind(const _Bind&) = default; 25082: 25082: _Bind(_Bind&& __b) 25082: : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args)) 25082: { } 25082: 25082: 25082: template>> 25082: _Result 25082: operator()(_Args&&... __args) 25082: { 25082: return this->__call<_Result>( 25082: std::forward_as_tuple(std::forward<_Args>(__args)...), 25082: _Bound_indexes()); 25082: } 25082: 25082: 25082: template, add_const>> 25082: _Result 25082: operator()(_Args&&... __args) const 25082: { 25082: return this->__call_c<_Result>( 25082: std::forward_as_tuple(std::forward<_Args>(__args)...), 25082: _Bound_indexes()); 25082: } 25082: # 505 "/usr/include/c++/8/functional" 3 25082: template, add_volatile>> 25082: [[deprecated("std::bind does not support volatile in C++17")]] 25082: _Result 25082: operator()(_Args&&... __args) volatile 25082: { 25082: return this->__call_v<_Result>( 25082: std::forward_as_tuple(std::forward<_Args>(__args)...), 25082: _Bound_indexes()); 25082: } 25082: 25082: 25082: template, add_cv>> 25082: [[deprecated("std::bind does not support volatile in C++17")]] 25082: _Result 25082: operator()(_Args&&... __args) const volatile 25082: { 25082: return this->__call_c_v<_Result>( 25082: std::forward_as_tuple(std::forward<_Args>(__args)...), 25082: _Bound_indexes()); 25082: } 25082: }; 25082: 25082: 25082: template 25082: struct _Bind_result; 25082: 25082: template 25082: class _Bind_result<_Result, _Functor(_Bound_args...)> 25082: { 25082: typedef typename _Build_index_tuple::__type 25082: _Bound_indexes; 25082: 25082: _Functor _M_f; 25082: tuple<_Bound_args...> _M_bound_args; 25082: 25082: 25082: template 25082: using __enable_if_void 25082: = typename enable_if{}>::type; 25082: 25082: template 25082: using __disable_if_void 25082: = typename enable_if{}, _Result>::type; 25082: 25082: 25082: template 25082: __disable_if_void<_Res> 25082: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) 25082: { 25082: return std::__invoke(_M_f, _Mu<_Bound_args>() 25082: (std::get<_Indexes>(_M_bound_args), __args)...); 25082: } 25082: 25082: 25082: template 25082: __enable_if_void<_Res> 25082: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) 25082: { 25082: std::__invoke(_M_f, _Mu<_Bound_args>() 25082: (std::get<_Indexes>(_M_bound_args), __args)...); 25082: } 25082: 25082: 25082: template 25082: __disable_if_void<_Res> 25082: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const 25082: { 25082: return std::__invoke(_M_f, _Mu<_Bound_args>() 25082: (std::get<_Indexes>(_M_bound_args), __args)...); 25082: } 25082: 25082: 25082: template 25082: __enable_if_void<_Res> 25082: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const 25082: { 25082: std::__invoke(_M_f, _Mu<_Bound_args>() 25082: (std::get<_Indexes>(_M_bound_args), __args)...); 25082: } 25082: 25082: 25082: template 25082: __disable_if_void<_Res> 25082: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile 25082: { 25082: return std::__invoke(_M_f, _Mu<_Bound_args>() 25082: (__volget<_Indexes>(_M_bound_args), __args)...); 25082: } 25082: 25082: 25082: template 25082: __enable_if_void<_Res> 25082: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile 25082: { 25082: std::__invoke(_M_f, _Mu<_Bound_args>() 25082: (__volget<_Indexes>(_M_bound_args), __args)...); 25082: } 25082: 25082: 25082: template 25082: __disable_if_void<_Res> 25082: __call(tuple<_Args...>&& __args, 25082: _Index_tuple<_Indexes...>) const volatile 25082: { 25082: return std::__invoke(_M_f, _Mu<_Bound_args>() 25082: (__volget<_Indexes>(_M_bound_args), __args)...); 25082: } 25082: 25082: 25082: template 25082: __enable_if_void<_Res> 25082: __call(tuple<_Args...>&& __args, 25082: _Index_tuple<_Indexes...>) const volatile 25082: { 25082: std::__invoke(_M_f, _Mu<_Bound_args>() 25082: (__volget<_Indexes>(_M_bound_args), __args)...); 25082: } 25082: 25082: public: 25082: typedef _Result result_type; 25082: 25082: template 25082: explicit _Bind_result(const _Functor& __f, _Args&&... __args) 25082: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) 25082: { } 25082: 25082: template 25082: explicit _Bind_result(_Functor&& __f, _Args&&... __args) 25082: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) 25082: { } 25082: 25082: _Bind_result(const _Bind_result&) = default; 25082: 25082: _Bind_result(_Bind_result&& __b) 25082: : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args)) 25082: { } 25082: 25082: 25082: template 25082: result_type 25082: operator()(_Args&&... __args) 25082: { 25082: return this->__call<_Result>( 25082: std::forward_as_tuple(std::forward<_Args>(__args)...), 25082: _Bound_indexes()); 25082: } 25082: 25082: 25082: template 25082: result_type 25082: operator()(_Args&&... __args) const 25082: { 25082: return this->__call<_Result>( 25082: std::forward_as_tuple(std::forward<_Args>(__args)...), 25082: _Bound_indexes()); 25082: } 25082: 25082: 25082: template 25082: [[deprecated("std::bind does not support volatile in C++17")]] 25082: result_type 25082: operator()(_Args&&... __args) volatile 25082: { 25082: return this->__call<_Result>( 25082: std::forward_as_tuple(std::forward<_Args>(__args)...), 25082: _Bound_indexes()); 25082: } 25082: 25082: 25082: template 25082: [[deprecated("std::bind does not support volatile in C++17")]] 25082: result_type 25082: operator()(_Args&&... __args) const volatile 25082: { 25082: return this->__call<_Result>( 25082: std::forward_as_tuple(std::forward<_Args>(__args)...), 25082: _Bound_indexes()); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_bind_expression<_Bind<_Signature> > 25082: : public true_type { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_bind_expression > 25082: : public true_type { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_bind_expression > 25082: : public true_type { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_bind_expression> 25082: : public true_type { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_bind_expression<_Bind_result<_Result, _Signature>> 25082: : public true_type { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_bind_expression> 25082: : public true_type { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_bind_expression> 25082: : public true_type { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_bind_expression> 25082: : public true_type { }; 25082: 25082: template 25082: struct _Bind_check_arity { }; 25082: 25082: template 25082: struct _Bind_check_arity<_Ret (*)(_Args...), _BoundArgs...> 25082: { 25082: static_assert(sizeof...(_BoundArgs) == sizeof...(_Args), 25082: "Wrong number of arguments for function"); 25082: }; 25082: 25082: template 25082: struct _Bind_check_arity<_Ret (*)(_Args......), _BoundArgs...> 25082: { 25082: static_assert(sizeof...(_BoundArgs) >= sizeof...(_Args), 25082: "Wrong number of arguments for function"); 25082: }; 25082: 25082: template 25082: struct _Bind_check_arity<_Tp _Class::*, _BoundArgs...> 25082: { 25082: using _Arity = typename _Mem_fn<_Tp _Class::*>::_Arity; 25082: using _Varargs = typename _Mem_fn<_Tp _Class::*>::_Varargs; 25082: static_assert(_Varargs::value 25082: ? sizeof...(_BoundArgs) >= _Arity::value + 1 25082: : sizeof...(_BoundArgs) == _Arity::value + 1, 25082: "Wrong number of arguments for pointer-to-member"); 25082: }; 25082: 25082: 25082: 25082: 25082: template::type> 25082: using __is_socketlike = __or_, is_enum<_Tp2>>; 25082: 25082: template 25082: struct _Bind_helper 25082: : _Bind_check_arity::type, _BoundArgs...> 25082: { 25082: typedef typename decay<_Func>::type __func_type; 25082: typedef _Bind<__func_type(typename decay<_BoundArgs>::type...)> type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct _Bind_helper 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline typename 25082: _Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type 25082: bind(_Func&& __f, _BoundArgs&&... __args) 25082: { 25082: typedef _Bind_helper __helper_type; 25082: return typename __helper_type::type(std::forward<_Func>(__f), 25082: std::forward<_BoundArgs>(__args)...); 25082: } 25082: 25082: template 25082: struct _Bindres_helper 25082: : _Bind_check_arity::type, _BoundArgs...> 25082: { 25082: typedef typename decay<_Func>::type __functor_type; 25082: typedef _Bind_result<_Result, 25082: __functor_type(typename decay<_BoundArgs>::type...)> 25082: type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline 25082: typename _Bindres_helper<_Result, _Func, _BoundArgs...>::type 25082: bind(_Func&& __f, _BoundArgs&&... __args) 25082: { 25082: typedef _Bindres_helper<_Result, _Func, _BoundArgs...> __helper_type; 25082: return typename __helper_type::type(std::forward<_Func>(__f), 25082: std::forward<_BoundArgs>(__args)...); 25082: } 25082: 25082: 25082: 25082: template 25082: class _Not_fn 25082: { 25082: template 25082: using __inv_res_t = typename __invoke_result<_Fn2, _Args...>::type; 25082: 25082: template 25082: static decltype(!std::declval<_Tp>()) 25082: _S_not() noexcept(noexcept(!std::declval<_Tp>())); 25082: 25082: public: 25082: template 25082: _Not_fn(_Fn2&& __fn, int) 25082: : _M_fn(std::forward<_Fn2>(__fn)) { } 25082: 25082: _Not_fn(const _Not_fn& __fn) = default; 25082: _Not_fn(_Not_fn&& __fn) = default; 25082: ~_Not_fn() = default; 25082: # 873 "/usr/include/c++/8/functional" 3 25082: template 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)...); } 25082: template 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)...); } 25082: template 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)...); } 25082: template 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)...); } 25082: 25082: 25082: private: 25082: _Fn _M_fn; 25082: }; 25082: 25082: template 25082: struct __is_byte_like : false_type { }; 25082: 25082: template 25082: struct __is_byte_like<_Tp, equal_to<_Tp>> 25082: : __bool_constant::value> { }; 25082: 25082: template 25082: struct __is_byte_like<_Tp, equal_to> 25082: : __bool_constant::value> { }; 25082: 25082: 25082: 25082: enum class byte : unsigned char; 25082: 25082: template<> 25082: struct __is_byte_like> 25082: : true_type { }; 25082: 25082: template<> 25082: struct __is_byte_like> 25082: : true_type { }; 25082: 25082: 25082: 25082: template 25082: inline auto 25082: not_fn(_Fn&& __fn) 25082: noexcept(std::is_nothrow_constructible, _Fn&&>::value) 25082: { 25082: return _Not_fn>{std::forward<_Fn>(__fn), 0}; 25082: } 25082: 25082: 25082: 25082: 25082: template> 25082: class default_searcher 25082: { 25082: public: 25082: default_searcher(_ForwardIterator1 __pat_first, 25082: _ForwardIterator1 __pat_last, 25082: _BinaryPredicate __pred = _BinaryPredicate()) 25082: : _M_m(__pat_first, __pat_last, std::move(__pred)) 25082: { } 25082: 25082: template 25082: pair<_ForwardIterator2, _ForwardIterator2> 25082: operator()(_ForwardIterator2 __first, _ForwardIterator2 __last) const 25082: { 25082: _ForwardIterator2 __first_ret = 25082: std::search(__first, __last, std::get<0>(_M_m), std::get<1>(_M_m), 25082: std::get<2>(_M_m)); 25082: auto __ret = std::make_pair(__first_ret, __first_ret); 25082: if (__ret.first != __last) 25082: std::advance(__ret.second, std::distance(std::get<0>(_M_m), 25082: std::get<1>(_M_m))); 25082: return __ret; 25082: } 25082: 25082: private: 25082: tuple<_ForwardIterator1, _ForwardIterator1, _BinaryPredicate> _M_m; 25082: }; 25082: 25082: template 25082: struct __boyer_moore_map_base 25082: { 25082: template 25082: __boyer_moore_map_base(_RAIter __pat, size_t __patlen, 25082: _Hash&& __hf, _Pred&& __pred) 25082: : _M_bad_char{ __patlen, std::move(__hf), std::move(__pred) } 25082: { 25082: if (__patlen > 0) 25082: for (__diff_type __i = 0; __i < __patlen - 1; ++__i) 25082: _M_bad_char[__pat[__i]] = __patlen - 1 - __i; 25082: } 25082: 25082: using __diff_type = _Tp; 25082: 25082: __diff_type 25082: _M_lookup(_Key __key, __diff_type __not_found) const 25082: { 25082: auto __iter = _M_bad_char.find(__key); 25082: if (__iter == _M_bad_char.end()) 25082: return __not_found; 25082: return __iter->second; 25082: } 25082: 25082: _Pred 25082: _M_pred() const { return _M_bad_char.key_eq(); } 25082: 25082: std::unordered_map<_Key, _Tp, _Hash, _Pred> _M_bad_char; 25082: }; 25082: 25082: template 25082: struct __boyer_moore_array_base 25082: { 25082: template 25082: __boyer_moore_array_base(_RAIter __pat, size_t __patlen, 25082: _Unused&&, _Pred&& __pred) 25082: : _M_bad_char{ std::array<_Tp, _Len>{}, std::move(__pred) } 25082: { 25082: std::get<0>(_M_bad_char).fill(__patlen); 25082: if (__patlen > 0) 25082: for (__diff_type __i = 0; __i < __patlen - 1; ++__i) 25082: { 25082: auto __ch = __pat[__i]; 25082: using _UCh = make_unsigned_t; 25082: auto __uch = static_cast<_UCh>(__ch); 25082: std::get<0>(_M_bad_char)[__uch] = __patlen - 1 - __i; 25082: } 25082: } 25082: 25082: using __diff_type = _Tp; 25082: 25082: template 25082: __diff_type 25082: _M_lookup(_Key __key, __diff_type __not_found) const 25082: { 25082: auto __ukey = static_cast>(__key); 25082: if (__ukey >= _Len) 25082: return __not_found; 25082: return std::get<0>(_M_bad_char)[__ukey]; 25082: } 25082: 25082: const _Pred& 25082: _M_pred() const { return std::get<1>(_M_bad_char); } 25082: 25082: tuple, _Pred> _M_bad_char; 25082: }; 25082: 25082: 25082: 25082: template::value_type, 25082: typename _Diff = typename iterator_traits<_RAIter>::difference_type> 25082: using __boyer_moore_base_t 25082: = conditional_t<__is_byte_like<_Val, _Pred>::value, 25082: __boyer_moore_array_base<_Diff, 256, _Pred>, 25082: __boyer_moore_map_base<_Val, _Diff, _Hash, _Pred>>; 25082: 25082: template::value_type>, 25082: typename _BinaryPredicate = equal_to<>> 25082: class boyer_moore_searcher 25082: : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> 25082: { 25082: using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; 25082: using typename _Base::__diff_type; 25082: 25082: public: 25082: boyer_moore_searcher(_RAIter __pat_first, _RAIter __pat_last, 25082: _Hash __hf = _Hash(), 25082: _BinaryPredicate __pred = _BinaryPredicate()); 25082: 25082: template 25082: pair<_RandomAccessIterator2, _RandomAccessIterator2> 25082: operator()(_RandomAccessIterator2 __first, 25082: _RandomAccessIterator2 __last) const; 25082: 25082: private: 25082: bool 25082: _M_is_prefix(_RAIter __word, __diff_type __len, 25082: __diff_type __pos) 25082: { 25082: const auto& __pred = this->_M_pred(); 25082: __diff_type __suffixlen = __len - __pos; 25082: for (__diff_type __i = 0; __i < __suffixlen; ++__i) 25082: if (!__pred(__word[__i], __word[__pos + __i])) 25082: return false; 25082: return true; 25082: } 25082: 25082: __diff_type 25082: _M_suffix_length(_RAIter __word, __diff_type __len, 25082: __diff_type __pos) 25082: { 25082: const auto& __pred = this->_M_pred(); 25082: __diff_type __i = 0; 25082: while (__pred(__word[__pos - __i], __word[__len - 1 - __i]) 25082: && __i < __pos) 25082: { 25082: ++__i; 25082: } 25082: return __i; 25082: } 25082: 25082: template 25082: __diff_type 25082: _M_bad_char_shift(_Tp __c) const 25082: { return this->_M_lookup(__c, _M_pat_end - _M_pat); } 25082: 25082: _RAIter _M_pat; 25082: _RAIter _M_pat_end; 25082: std::vector<__diff_type> _M_good_suffix; 25082: }; 25082: 25082: template::value_type>, 25082: typename _BinaryPredicate = equal_to<>> 25082: class boyer_moore_horspool_searcher 25082: : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> 25082: { 25082: using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; 25082: using typename _Base::__diff_type; 25082: 25082: public: 25082: boyer_moore_horspool_searcher(_RAIter __pat, 25082: _RAIter __pat_end, 25082: _Hash __hf = _Hash(), 25082: _BinaryPredicate __pred 25082: = _BinaryPredicate()) 25082: : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), 25082: _M_pat(__pat), _M_pat_end(__pat_end) 25082: { } 25082: 25082: template 25082: pair<_RandomAccessIterator2, _RandomAccessIterator2> 25082: operator()(_RandomAccessIterator2 __first, 25082: _RandomAccessIterator2 __last) const 25082: { 25082: const auto& __pred = this->_M_pred(); 25082: auto __patlen = _M_pat_end - _M_pat; 25082: if (__patlen == 0) 25082: return std::make_pair(__first, __first); 25082: auto __len = __last - __first; 25082: while (__len >= __patlen) 25082: { 25082: for (auto __scan = __patlen - 1; 25082: __pred(__first[__scan], _M_pat[__scan]); --__scan) 25082: if (__scan == 0) 25082: return std::make_pair(__first, __first + __patlen); 25082: auto __shift = _M_bad_char_shift(__first[__patlen - 1]); 25082: __len -= __shift; 25082: __first += __shift; 25082: } 25082: return std::make_pair(__last, __last); 25082: } 25082: 25082: private: 25082: template 25082: __diff_type 25082: _M_bad_char_shift(_Tp __c) const 25082: { return this->_M_lookup(__c, _M_pat_end - _M_pat); } 25082: 25082: _RAIter _M_pat; 25082: _RAIter _M_pat_end; 25082: }; 25082: 25082: template 25082: boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: 25082: boyer_moore_searcher(_RAIter __pat, _RAIter __pat_end, 25082: _Hash __hf, _BinaryPredicate __pred) 25082: : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), 25082: _M_pat(__pat), _M_pat_end(__pat_end), _M_good_suffix(__pat_end - __pat) 25082: { 25082: auto __patlen = __pat_end - __pat; 25082: if (__patlen == 0) 25082: return; 25082: __diff_type __last_prefix = __patlen - 1; 25082: for (__diff_type __p = __patlen - 1; __p >= 0; --__p) 25082: { 25082: if (_M_is_prefix(__pat, __patlen, __p + 1)) 25082: __last_prefix = __p + 1; 25082: _M_good_suffix[__p] = __last_prefix + (__patlen - 1 - __p); 25082: } 25082: for (__diff_type __p = 0; __p < __patlen - 1; ++__p) 25082: { 25082: auto __slen = _M_suffix_length(__pat, __patlen, __p); 25082: auto __pos = __patlen - 1 - __slen; 25082: if (!__pred(__pat[__p - __slen], __pat[__pos])) 25082: _M_good_suffix[__pos] = __patlen - 1 - __p + __slen; 25082: } 25082: } 25082: 25082: template 25082: template 25082: pair<_RandomAccessIterator2, _RandomAccessIterator2> 25082: boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: 25082: operator()(_RandomAccessIterator2 __first, 25082: _RandomAccessIterator2 __last) const 25082: { 25082: auto __patlen = _M_pat_end - _M_pat; 25082: if (__patlen == 0) 25082: return std::make_pair(__first, __first); 25082: const auto& __pred = this->_M_pred(); 25082: __diff_type __i = __patlen - 1; 25082: auto __stringlen = __last - __first; 25082: while (__i < __stringlen) 25082: { 25082: __diff_type __j = __patlen - 1; 25082: while (__j >= 0 && __pred(__first[__i], _M_pat[__j])) 25082: { 25082: --__i; 25082: --__j; 25082: } 25082: if (__j < 0) 25082: { 25082: const auto __match = __first + __i + 1; 25082: return std::make_pair(__match, __match + __patlen); 25082: } 25082: __i += std::max(_M_bad_char_shift(__first[__i]), 25082: _M_good_suffix[__j]); 25082: } 25082: return std::make_pair(__last, __last); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 7 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Field.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/Exception.h" 1 3 4 25082: 25082: 25082: # 1 "/usr/include/c++/8/cerrno" 1 3 4 25082: # 39 "/usr/include/c++/8/cerrno" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cerrno" 3 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Common/Exception.h" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/Poco/Exception.h" 1 3 4 25082: # 21 "/usr/include/Poco/Exception.h" 3 4 25082: # 1 "/usr/include/Poco/Foundation.h" 1 3 4 25082: # 26 "/usr/include/Poco/Foundation.h" 3 4 25082: # 1 "/usr/include/Poco/Config.h" 1 3 4 25082: # 27 "/usr/include/Poco/Foundation.h" 2 3 4 25082: # 98 "/usr/include/Poco/Foundation.h" 3 4 25082: # 1 "/usr/include/Poco/Platform.h" 1 3 4 25082: # 99 "/usr/include/Poco/Foundation.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/Poco/Platform_POSIX.h" 1 3 4 25082: # 105 "/usr/include/Poco/Foundation.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/Poco/Alignment.h" 1 3 4 25082: # 35 "/usr/include/Poco/Alignment.h" 3 4 25082: # 1 "/usr/include/c++/8/cstddef" 1 3 4 25082: # 42 "/usr/include/c++/8/cstddef" 3 4 25082: 25082: # 43 "/usr/include/c++/8/cstddef" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 51 "/usr/include/c++/8/cstddef" 2 3 25082: 25082: 25082: namespace std 25082: { 25082: 25082: using ::max_align_t; 25082: } 25082: 25082: 25082: 25082: namespace std 25082: { 25082: 25082: 25082: 25082: enum class byte : unsigned char {}; 25082: 25082: template struct __byte_operand { }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: 25082: template<> struct __byte_operand { using __type = byte; }; 25082: 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: template<> struct __byte_operand { using __type = byte; }; 25082: # 104 "/usr/include/c++/8/cstddef" 3 25082: template 25082: struct __byte_operand 25082: : __byte_operand<_IntegerType> { }; 25082: template 25082: struct __byte_operand 25082: : __byte_operand<_IntegerType> { }; 25082: template 25082: struct __byte_operand 25082: : __byte_operand<_IntegerType> { }; 25082: 25082: template 25082: using __byte_op_t = typename __byte_operand<_IntegerType>::__type; 25082: 25082: template 25082: constexpr __byte_op_t<_IntegerType>& 25082: operator<<=(byte& __b, _IntegerType __shift) noexcept 25082: { return __b = byte(static_cast(__b) << __shift); } 25082: 25082: template 25082: constexpr __byte_op_t<_IntegerType> 25082: operator<<(byte __b, _IntegerType __shift) noexcept 25082: { return byte(static_cast(__b) << __shift); } 25082: 25082: template 25082: constexpr __byte_op_t<_IntegerType>& 25082: operator>>=(byte& __b, _IntegerType __shift) noexcept 25082: { return __b = byte(static_cast(__b) >> __shift); } 25082: 25082: template 25082: constexpr __byte_op_t<_IntegerType> 25082: operator>>(byte __b, _IntegerType __shift) noexcept 25082: { return byte(static_cast(__b) >> __shift); } 25082: 25082: constexpr byte& 25082: operator|=(byte& __l, byte __r) noexcept 25082: { 25082: return __l = 25082: byte(static_cast(__l) | static_cast(__r)); 25082: } 25082: 25082: constexpr byte 25082: operator|(byte __l, byte __r) noexcept 25082: { 25082: return 25082: byte(static_cast(__l) | static_cast(__r)); 25082: } 25082: 25082: constexpr byte& 25082: operator&=(byte& __l, byte __r) noexcept 25082: { 25082: return __l = 25082: byte(static_cast(__l) & static_cast(__r)); 25082: } 25082: 25082: constexpr byte 25082: operator&(byte __l, byte __r) noexcept 25082: { 25082: return 25082: byte(static_cast(__l) & static_cast(__r)); 25082: } 25082: 25082: constexpr byte& 25082: operator^=(byte& __l, byte __r) noexcept 25082: { 25082: return __l = 25082: byte(static_cast(__l) ^ static_cast(__r)); 25082: } 25082: 25082: constexpr byte 25082: operator^(byte __l, byte __r) noexcept 25082: { 25082: return 25082: byte(static_cast(__l) ^ static_cast(__r)); 25082: } 25082: 25082: constexpr byte 25082: operator~(byte __b) noexcept 25082: { return byte(~static_cast(__b)); } 25082: 25082: template 25082: constexpr _IntegerType 25082: to_integer(__byte_op_t<_IntegerType> __b) noexcept 25082: { return _IntegerType(__b); } 25082: 25082: } 25082: # 36 "/usr/include/Poco/Alignment.h" 2 3 4 25082: # 48 "/usr/include/Poco/Alignment.h" 3 4 25082: namespace Poco { 25082: 25082: 25082: template 25082: struct AlignmentCalcImpl 25082: { 25082: char x; 25082: T t; 25082: private: 25082: AlignmentCalcImpl() {} 25082: }; 25082: 25082: 25082: template 25082: struct AlignOf 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: { 25082: enum 25082: { 25082: Alignment = static_cast(sizeof(AlignmentCalcImpl) - sizeof(T)) 25082: }; 25082: 25082: enum { Alignment_GreaterEqual_2Bytes = Alignment >= 2 ? 1 : 0 }; 25082: enum { Alignment_GreaterEqual_4Bytes = Alignment >= 4 ? 1 : 0 }; 25082: enum { Alignment_GreaterEqual_8Bytes = Alignment >= 8 ? 1 : 0 }; 25082: enum { Alignment_GreaterEqual_16Bytes = Alignment >= 16 ? 1 : 0 }; 25082: 25082: enum { Alignment_LessEqual_2Bytes = Alignment <= 2 ? 1 : 0 }; 25082: enum { Alignment_LessEqual_4Bytes = Alignment <= 4 ? 1 : 0 }; 25082: enum { Alignment_LessEqual_8Bytes = Alignment <= 8 ? 1 : 0 }; 25082: enum { Alignment_LessEqual_16Bytes = Alignment <= 16 ? 1 : 0 }; 25082: 25082: }; 25082: 25082: 25082: template 25082: inline unsigned alignOf() 25082: 25082: 25082: 25082: 25082: { 25082: return AlignOf::Alignment; 25082: } 25082: 25082: 25082: template struct AlignedCharArrayImpl; 25082: # 137 "/usr/include/Poco/Alignment.h" 3 4 25082: template <> struct AlignedCharArrayImpl<1> { char aligned __attribute__((aligned(1))); }; 25082: template <> struct AlignedCharArrayImpl<2> { char aligned __attribute__((aligned(2))); }; 25082: template <> struct AlignedCharArrayImpl<4> { char aligned __attribute__((aligned(4))); }; 25082: template <> struct AlignedCharArrayImpl<8> { char aligned __attribute__((aligned(8))); }; 25082: template <> struct AlignedCharArrayImpl<16> { char aligned __attribute__((aligned(16))); }; 25082: template <> struct AlignedCharArrayImpl<32> { char aligned __attribute__((aligned(32))); }; 25082: template <> struct AlignedCharArrayImpl<64> { char aligned __attribute__((aligned(64))); }; 25082: template <> struct AlignedCharArrayImpl<128> { char aligned __attribute__((aligned(128))); }; 25082: template <> struct AlignedCharArrayImpl<512> { char aligned __attribute__((aligned(512))); }; 25082: template <> struct AlignedCharArrayImpl<1024> { char aligned __attribute__((aligned(1024))); }; 25082: template <> struct AlignedCharArrayImpl<2048> { char aligned __attribute__((aligned(2048))); }; 25082: template <> struct AlignedCharArrayImpl<4096> { char aligned __attribute__((aligned(4096))); }; 25082: template <> struct AlignedCharArrayImpl<8192> { char aligned __attribute__((aligned(8192))); }; 25082: # 197 "/usr/include/Poco/Alignment.h" 3 4 25082: template 25082: union AlignedCharArrayUnion 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: { 25082: private: 25082: class AlignerImpl 25082: { 25082: T1 t1; 25082: T2 t2; 25082: T3 t3; 25082: T4 t4; 25082: 25082: AlignerImpl(); 25082: }; 25082: 25082: union SizerImpl 25082: { 25082: char arr1[sizeof(T1)]; 25082: char arr2[sizeof(T2)]; 25082: char arr3[sizeof(T3)]; 25082: char arr4[sizeof(T4)]; 25082: }; 25082: 25082: public: 25082: char buffer[sizeof(SizerImpl)]; 25082: 25082: 25082: 25082: 25082: 25082: private: 25082: Poco::AlignedCharArrayImpl::Alignment> _nonceMember; 25082: 25082: }; 25082: 25082: 25082: 25082: } 25082: # 112 "/usr/include/Poco/Foundation.h" 2 3 4 25082: # 163 "/usr/include/Poco/Foundation.h" 3 4 25082: # 1 "/usr/include/Poco/Bugcheck.h" 1 3 4 25082: # 21 "/usr/include/Poco/Bugcheck.h" 3 4 25082: # 1 "/usr/include/Poco/Foundation.h" 1 3 4 25082: # 22 "/usr/include/Poco/Bugcheck.h" 2 3 4 25082: 25082: # 1 "/usr/include/c++/8/cstdlib" 1 3 4 25082: # 39 "/usr/include/c++/8/cstdlib" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstdlib" 3 25082: # 24 "/usr/include/Poco/Bugcheck.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: namespace Poco { 25082: 25082: 25082: class __attribute__ ((visibility ("default"))) Bugcheck 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: { 25082: public: 25082: static void assertion(const char* cond, const char* file, int line, const char* text = 0); 25082: 25082: 25082: 25082: static void nullPointer(const char* ptr, const char* file, int line); 25082: 25082: 25082: 25082: static void bugcheck(const char* file, int line); 25082: 25082: 25082: 25082: static void bugcheck(const char* msg, const char* file, int line); 25082: 25082: 25082: 25082: static void unexpected(const char* file, int line); 25082: 25082: 25082: 25082: 25082: 25082: static void debugger(const char* file, int line); 25082: 25082: 25082: 25082: static void debugger(const char* msg, const char* file, int line); 25082: 25082: 25082: 25082: protected: 25082: static std::string what(const char* msg, const char* file, int line, const char* text = 0); 25082: }; 25082: 25082: 25082: } 25082: # 175 "/usr/include/Poco/Bugcheck.h" 3 4 25082: template 25082: struct POCO_STATIC_ASSERTION_FAILURE; 25082: 25082: 25082: template <> 25082: struct POCO_STATIC_ASSERTION_FAILURE 25082: { 25082: enum 25082: { 25082: value = 1 25082: }; 25082: }; 25082: 25082: 25082: template 25082: struct poco_static_assert_test 25082: { 25082: }; 25082: # 164 "/usr/include/Poco/Foundation.h" 2 3 4 25082: # 1 "/usr/include/Poco/Types.h" 1 3 4 25082: # 24 "/usr/include/Poco/Types.h" 3 4 25082: namespace Poco { 25082: # 52 "/usr/include/Poco/Types.h" 3 4 25082: typedef signed char Int8; 25082: typedef unsigned char UInt8; 25082: typedef signed short Int16; 25082: typedef unsigned short UInt16; 25082: typedef signed int Int32; 25082: typedef unsigned int UInt32; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef signed long IntPtr; 25082: typedef unsigned long UIntPtr; 25082: 25082: 25082: 25082: typedef signed long Int64; 25082: typedef unsigned long UInt64; 25082: # 198 "/usr/include/Poco/Types.h" 3 4 25082: } 25082: # 165 "/usr/include/Poco/Foundation.h" 2 3 4 25082: # 22 "/usr/include/Poco/Exception.h" 2 3 4 25082: 25082: 25082: 25082: namespace Poco { 25082: 25082: 25082: class __attribute__ ((visibility ("default"))) Exception: public std::exception 25082: 25082: 25082: { 25082: public: 25082: Exception(const std::string& msg, int code = 0); 25082: 25082: 25082: Exception(const std::string& msg, const std::string& arg, int code = 0); 25082: 25082: 25082: Exception(const std::string& msg, const Exception& nested, int code = 0); 25082: 25082: 25082: 25082: Exception(const Exception& exc); 25082: 25082: 25082: ~Exception() throw(); 25082: 25082: 25082: Exception& operator = (const Exception& exc); 25082: 25082: 25082: virtual const char* name() const throw(); 25082: 25082: 25082: virtual const char* className() const throw(); 25082: 25082: 25082: virtual const char* what() const throw(); 25082: 25082: 25082: 25082: 25082: const Exception* nested() const; 25082: 25082: 25082: 25082: const std::string& message() const; 25082: 25082: 25082: int code() const; 25082: 25082: 25082: std::string displayText() const; 25082: 25082: 25082: 25082: virtual Exception* clone() const; 25082: 25082: 25082: 25082: 25082: 25082: virtual void rethrow() const; 25082: 25082: 25082: 25082: 25082: 25082: 25082: protected: 25082: Exception(int code = 0); 25082: 25082: 25082: void message(const std::string& msg); 25082: 25082: 25082: void extendedMessage(const std::string& arg); 25082: 25082: 25082: private: 25082: std::string _msg; 25082: Exception* _pNested; 25082: int _code; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: inline const Exception* Exception::nested() const 25082: { 25082: return _pNested; 25082: } 25082: 25082: 25082: inline const std::string& Exception::message() const 25082: { 25082: return _msg; 25082: } 25082: 25082: 25082: inline void Exception::message(const std::string& msg) 25082: { 25082: _msg = msg; 25082: } 25082: 25082: 25082: inline int Exception::code() const 25082: { 25082: return _code; 25082: } 25082: # 205 "/usr/include/Poco/Exception.h" 3 4 25082: class __attribute__ ((visibility ("default"))) LogicException: public Exception { public: LogicException(int code = 0); LogicException(const std::string& msg, int code = 0); LogicException(const std::string& msg, const std::string& arg, int code = 0); LogicException(const std::string& msg, const Poco::Exception& exc, int code = 0); LogicException(const LogicException& exc); ~LogicException() throw(); LogicException& operator = (const LogicException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) AssertionViolationException: public LogicException { public: AssertionViolationException(int code = 0); AssertionViolationException(const std::string& msg, int code = 0); AssertionViolationException(const std::string& msg, const std::string& arg, int code = 0); AssertionViolationException(const std::string& msg, const Poco::Exception& exc, int code = 0); AssertionViolationException(const AssertionViolationException& exc); ~AssertionViolationException() throw(); AssertionViolationException& operator = (const AssertionViolationException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) NullPointerException: public LogicException { public: NullPointerException(int code = 0); NullPointerException(const std::string& msg, int code = 0); NullPointerException(const std::string& msg, const std::string& arg, int code = 0); NullPointerException(const std::string& msg, const Poco::Exception& exc, int code = 0); NullPointerException(const NullPointerException& exc); ~NullPointerException() throw(); NullPointerException& operator = (const NullPointerException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) NullValueException: public LogicException { public: NullValueException(int code = 0); NullValueException(const std::string& msg, int code = 0); NullValueException(const std::string& msg, const std::string& arg, int code = 0); NullValueException(const std::string& msg, const Poco::Exception& exc, int code = 0); NullValueException(const NullValueException& exc); ~NullValueException() throw(); NullValueException& operator = (const NullValueException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) BugcheckException: public LogicException { public: BugcheckException(int code = 0); BugcheckException(const std::string& msg, int code = 0); BugcheckException(const std::string& msg, const std::string& arg, int code = 0); BugcheckException(const std::string& msg, const Poco::Exception& exc, int code = 0); BugcheckException(const BugcheckException& exc); ~BugcheckException() throw(); BugcheckException& operator = (const BugcheckException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) InvalidArgumentException: public LogicException { public: InvalidArgumentException(int code = 0); InvalidArgumentException(const std::string& msg, int code = 0); InvalidArgumentException(const std::string& msg, const std::string& arg, int code = 0); InvalidArgumentException(const std::string& msg, const Poco::Exception& exc, int code = 0); InvalidArgumentException(const InvalidArgumentException& exc); ~InvalidArgumentException() throw(); InvalidArgumentException& operator = (const InvalidArgumentException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) NotImplementedException: public LogicException { public: NotImplementedException(int code = 0); NotImplementedException(const std::string& msg, int code = 0); NotImplementedException(const std::string& msg, const std::string& arg, int code = 0); NotImplementedException(const std::string& msg, const Poco::Exception& exc, int code = 0); NotImplementedException(const NotImplementedException& exc); ~NotImplementedException() throw(); NotImplementedException& operator = (const NotImplementedException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) RangeException: public LogicException { public: RangeException(int code = 0); RangeException(const std::string& msg, int code = 0); RangeException(const std::string& msg, const std::string& arg, int code = 0); RangeException(const std::string& msg, const Poco::Exception& exc, int code = 0); RangeException(const RangeException& exc); ~RangeException() throw(); RangeException& operator = (const RangeException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) IllegalStateException: public LogicException { public: IllegalStateException(int code = 0); IllegalStateException(const std::string& msg, int code = 0); IllegalStateException(const std::string& msg, const std::string& arg, int code = 0); IllegalStateException(const std::string& msg, const Poco::Exception& exc, int code = 0); IllegalStateException(const IllegalStateException& exc); ~IllegalStateException() throw(); IllegalStateException& operator = (const IllegalStateException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) InvalidAccessException: public LogicException { public: InvalidAccessException(int code = 0); InvalidAccessException(const std::string& msg, int code = 0); InvalidAccessException(const std::string& msg, const std::string& arg, int code = 0); InvalidAccessException(const std::string& msg, const Poco::Exception& exc, int code = 0); InvalidAccessException(const InvalidAccessException& exc); ~InvalidAccessException() throw(); InvalidAccessException& operator = (const InvalidAccessException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) SignalException: public LogicException { public: SignalException(int code = 0); SignalException(const std::string& msg, int code = 0); SignalException(const std::string& msg, const std::string& arg, int code = 0); SignalException(const std::string& msg, const Poco::Exception& exc, int code = 0); SignalException(const SignalException& exc); ~SignalException() throw(); SignalException& operator = (const SignalException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) UnhandledException: public LogicException { public: UnhandledException(int code = 0); UnhandledException(const std::string& msg, int code = 0); UnhandledException(const std::string& msg, const std::string& arg, int code = 0); UnhandledException(const std::string& msg, const Poco::Exception& exc, int code = 0); UnhandledException(const UnhandledException& exc); ~UnhandledException() throw(); UnhandledException& operator = (const UnhandledException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: 25082: class __attribute__ ((visibility ("default"))) RuntimeException: public Exception { public: RuntimeException(int code = 0); RuntimeException(const std::string& msg, int code = 0); RuntimeException(const std::string& msg, const std::string& arg, int code = 0); RuntimeException(const std::string& msg, const Poco::Exception& exc, int code = 0); RuntimeException(const RuntimeException& exc); ~RuntimeException() throw(); RuntimeException& operator = (const RuntimeException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) NotFoundException: public RuntimeException { public: NotFoundException(int code = 0); NotFoundException(const std::string& msg, int code = 0); NotFoundException(const std::string& msg, const std::string& arg, int code = 0); NotFoundException(const std::string& msg, const Poco::Exception& exc, int code = 0); NotFoundException(const NotFoundException& exc); ~NotFoundException() throw(); NotFoundException& operator = (const NotFoundException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) ExistsException: public RuntimeException { public: ExistsException(int code = 0); ExistsException(const std::string& msg, int code = 0); ExistsException(const std::string& msg, const std::string& arg, int code = 0); ExistsException(const std::string& msg, const Poco::Exception& exc, int code = 0); ExistsException(const ExistsException& exc); ~ExistsException() throw(); ExistsException& operator = (const ExistsException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) TimeoutException: public RuntimeException { public: TimeoutException(int code = 0); TimeoutException(const std::string& msg, int code = 0); TimeoutException(const std::string& msg, const std::string& arg, int code = 0); TimeoutException(const std::string& msg, const Poco::Exception& exc, int code = 0); TimeoutException(const TimeoutException& exc); ~TimeoutException() throw(); TimeoutException& operator = (const TimeoutException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) SystemException: public RuntimeException { public: SystemException(int code = 0); SystemException(const std::string& msg, int code = 0); SystemException(const std::string& msg, const std::string& arg, int code = 0); SystemException(const std::string& msg, const Poco::Exception& exc, int code = 0); SystemException(const SystemException& exc); ~SystemException() throw(); SystemException& operator = (const SystemException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) RegularExpressionException: public RuntimeException { public: RegularExpressionException(int code = 0); RegularExpressionException(const std::string& msg, int code = 0); RegularExpressionException(const std::string& msg, const std::string& arg, int code = 0); RegularExpressionException(const std::string& msg, const Poco::Exception& exc, int code = 0); RegularExpressionException(const RegularExpressionException& exc); ~RegularExpressionException() throw(); RegularExpressionException& operator = (const RegularExpressionException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) LibraryLoadException: public RuntimeException { public: LibraryLoadException(int code = 0); LibraryLoadException(const std::string& msg, int code = 0); LibraryLoadException(const std::string& msg, const std::string& arg, int code = 0); LibraryLoadException(const std::string& msg, const Poco::Exception& exc, int code = 0); LibraryLoadException(const LibraryLoadException& exc); ~LibraryLoadException() throw(); LibraryLoadException& operator = (const LibraryLoadException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) LibraryAlreadyLoadedException: public RuntimeException { public: LibraryAlreadyLoadedException(int code = 0); LibraryAlreadyLoadedException(const std::string& msg, int code = 0); LibraryAlreadyLoadedException(const std::string& msg, const std::string& arg, int code = 0); LibraryAlreadyLoadedException(const std::string& msg, const Poco::Exception& exc, int code = 0); LibraryAlreadyLoadedException(const LibraryAlreadyLoadedException& exc); ~LibraryAlreadyLoadedException() throw(); LibraryAlreadyLoadedException& operator = (const LibraryAlreadyLoadedException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) NoThreadAvailableException: public RuntimeException { public: NoThreadAvailableException(int code = 0); NoThreadAvailableException(const std::string& msg, int code = 0); NoThreadAvailableException(const std::string& msg, const std::string& arg, int code = 0); NoThreadAvailableException(const std::string& msg, const Poco::Exception& exc, int code = 0); NoThreadAvailableException(const NoThreadAvailableException& exc); ~NoThreadAvailableException() throw(); NoThreadAvailableException& operator = (const NoThreadAvailableException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) PropertyNotSupportedException: public RuntimeException { public: PropertyNotSupportedException(int code = 0); PropertyNotSupportedException(const std::string& msg, int code = 0); PropertyNotSupportedException(const std::string& msg, const std::string& arg, int code = 0); PropertyNotSupportedException(const std::string& msg, const Poco::Exception& exc, int code = 0); PropertyNotSupportedException(const PropertyNotSupportedException& exc); ~PropertyNotSupportedException() throw(); PropertyNotSupportedException& operator = (const PropertyNotSupportedException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) PoolOverflowException: public RuntimeException { public: PoolOverflowException(int code = 0); PoolOverflowException(const std::string& msg, int code = 0); PoolOverflowException(const std::string& msg, const std::string& arg, int code = 0); PoolOverflowException(const std::string& msg, const Poco::Exception& exc, int code = 0); PoolOverflowException(const PoolOverflowException& exc); ~PoolOverflowException() throw(); PoolOverflowException& operator = (const PoolOverflowException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) NoPermissionException: public RuntimeException { public: NoPermissionException(int code = 0); NoPermissionException(const std::string& msg, int code = 0); NoPermissionException(const std::string& msg, const std::string& arg, int code = 0); NoPermissionException(const std::string& msg, const Poco::Exception& exc, int code = 0); NoPermissionException(const NoPermissionException& exc); ~NoPermissionException() throw(); NoPermissionException& operator = (const NoPermissionException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) OutOfMemoryException: public RuntimeException { public: OutOfMemoryException(int code = 0); OutOfMemoryException(const std::string& msg, int code = 0); OutOfMemoryException(const std::string& msg, const std::string& arg, int code = 0); OutOfMemoryException(const std::string& msg, const Poco::Exception& exc, int code = 0); OutOfMemoryException(const OutOfMemoryException& exc); ~OutOfMemoryException() throw(); OutOfMemoryException& operator = (const OutOfMemoryException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) DataException: public RuntimeException { public: DataException(int code = 0); DataException(const std::string& msg, int code = 0); DataException(const std::string& msg, const std::string& arg, int code = 0); DataException(const std::string& msg, const Poco::Exception& exc, int code = 0); DataException(const DataException& exc); ~DataException() throw(); DataException& operator = (const DataException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: 25082: class __attribute__ ((visibility ("default"))) DataFormatException: public DataException { public: DataFormatException(int code = 0); DataFormatException(const std::string& msg, int code = 0); DataFormatException(const std::string& msg, const std::string& arg, int code = 0); DataFormatException(const std::string& msg, const Poco::Exception& exc, int code = 0); DataFormatException(const DataFormatException& exc); ~DataFormatException() throw(); DataFormatException& operator = (const DataFormatException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) SyntaxException: public DataException { public: SyntaxException(int code = 0); SyntaxException(const std::string& msg, int code = 0); SyntaxException(const std::string& msg, const std::string& arg, int code = 0); SyntaxException(const std::string& msg, const Poco::Exception& exc, int code = 0); SyntaxException(const SyntaxException& exc); ~SyntaxException() throw(); SyntaxException& operator = (const SyntaxException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) CircularReferenceException: public DataException { public: CircularReferenceException(int code = 0); CircularReferenceException(const std::string& msg, int code = 0); CircularReferenceException(const std::string& msg, const std::string& arg, int code = 0); CircularReferenceException(const std::string& msg, const Poco::Exception& exc, int code = 0); CircularReferenceException(const CircularReferenceException& exc); ~CircularReferenceException() throw(); CircularReferenceException& operator = (const CircularReferenceException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) PathSyntaxException: public SyntaxException { public: PathSyntaxException(int code = 0); PathSyntaxException(const std::string& msg, int code = 0); PathSyntaxException(const std::string& msg, const std::string& arg, int code = 0); PathSyntaxException(const std::string& msg, const Poco::Exception& exc, int code = 0); PathSyntaxException(const PathSyntaxException& exc); ~PathSyntaxException() throw(); PathSyntaxException& operator = (const PathSyntaxException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) IOException: public RuntimeException { public: IOException(int code = 0); IOException(const std::string& msg, int code = 0); IOException(const std::string& msg, const std::string& arg, int code = 0); IOException(const std::string& msg, const Poco::Exception& exc, int code = 0); IOException(const IOException& exc); ~IOException() throw(); IOException& operator = (const IOException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) ProtocolException: public IOException { public: ProtocolException(int code = 0); ProtocolException(const std::string& msg, int code = 0); ProtocolException(const std::string& msg, const std::string& arg, int code = 0); ProtocolException(const std::string& msg, const Poco::Exception& exc, int code = 0); ProtocolException(const ProtocolException& exc); ~ProtocolException() throw(); ProtocolException& operator = (const ProtocolException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) FileException: public IOException { public: FileException(int code = 0); FileException(const std::string& msg, int code = 0); FileException(const std::string& msg, const std::string& arg, int code = 0); FileException(const std::string& msg, const Poco::Exception& exc, int code = 0); FileException(const FileException& exc); ~FileException() throw(); FileException& operator = (const FileException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) FileExistsException: public FileException { public: FileExistsException(int code = 0); FileExistsException(const std::string& msg, int code = 0); FileExistsException(const std::string& msg, const std::string& arg, int code = 0); FileExistsException(const std::string& msg, const Poco::Exception& exc, int code = 0); FileExistsException(const FileExistsException& exc); ~FileExistsException() throw(); FileExistsException& operator = (const FileExistsException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) FileNotFoundException: public FileException { public: FileNotFoundException(int code = 0); FileNotFoundException(const std::string& msg, int code = 0); FileNotFoundException(const std::string& msg, const std::string& arg, int code = 0); FileNotFoundException(const std::string& msg, const Poco::Exception& exc, int code = 0); FileNotFoundException(const FileNotFoundException& exc); ~FileNotFoundException() throw(); FileNotFoundException& operator = (const FileNotFoundException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) PathNotFoundException: public FileException { public: PathNotFoundException(int code = 0); PathNotFoundException(const std::string& msg, int code = 0); PathNotFoundException(const std::string& msg, const std::string& arg, int code = 0); PathNotFoundException(const std::string& msg, const Poco::Exception& exc, int code = 0); PathNotFoundException(const PathNotFoundException& exc); ~PathNotFoundException() throw(); PathNotFoundException& operator = (const PathNotFoundException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) FileReadOnlyException: public FileException { public: FileReadOnlyException(int code = 0); FileReadOnlyException(const std::string& msg, int code = 0); FileReadOnlyException(const std::string& msg, const std::string& arg, int code = 0); FileReadOnlyException(const std::string& msg, const Poco::Exception& exc, int code = 0); FileReadOnlyException(const FileReadOnlyException& exc); ~FileReadOnlyException() throw(); FileReadOnlyException& operator = (const FileReadOnlyException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) FileAccessDeniedException: public FileException { public: FileAccessDeniedException(int code = 0); FileAccessDeniedException(const std::string& msg, int code = 0); FileAccessDeniedException(const std::string& msg, const std::string& arg, int code = 0); FileAccessDeniedException(const std::string& msg, const Poco::Exception& exc, int code = 0); FileAccessDeniedException(const FileAccessDeniedException& exc); ~FileAccessDeniedException() throw(); FileAccessDeniedException& operator = (const FileAccessDeniedException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) CreateFileException: public FileException { public: CreateFileException(int code = 0); CreateFileException(const std::string& msg, int code = 0); CreateFileException(const std::string& msg, const std::string& arg, int code = 0); CreateFileException(const std::string& msg, const Poco::Exception& exc, int code = 0); CreateFileException(const CreateFileException& exc); ~CreateFileException() throw(); CreateFileException& operator = (const CreateFileException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) OpenFileException: public FileException { public: OpenFileException(int code = 0); OpenFileException(const std::string& msg, int code = 0); OpenFileException(const std::string& msg, const std::string& arg, int code = 0); OpenFileException(const std::string& msg, const Poco::Exception& exc, int code = 0); OpenFileException(const OpenFileException& exc); ~OpenFileException() throw(); OpenFileException& operator = (const OpenFileException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) WriteFileException: public FileException { public: WriteFileException(int code = 0); WriteFileException(const std::string& msg, int code = 0); WriteFileException(const std::string& msg, const std::string& arg, int code = 0); WriteFileException(const std::string& msg, const Poco::Exception& exc, int code = 0); WriteFileException(const WriteFileException& exc); ~WriteFileException() throw(); WriteFileException& operator = (const WriteFileException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) ReadFileException: public FileException { public: ReadFileException(int code = 0); ReadFileException(const std::string& msg, int code = 0); ReadFileException(const std::string& msg, const std::string& arg, int code = 0); ReadFileException(const std::string& msg, const Poco::Exception& exc, int code = 0); ReadFileException(const ReadFileException& exc); ~ReadFileException() throw(); ReadFileException& operator = (const ReadFileException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) DirectoryNotEmptyException: public FileException { public: DirectoryNotEmptyException(int code = 0); DirectoryNotEmptyException(const std::string& msg, int code = 0); DirectoryNotEmptyException(const std::string& msg, const std::string& arg, int code = 0); DirectoryNotEmptyException(const std::string& msg, const Poco::Exception& exc, int code = 0); DirectoryNotEmptyException(const DirectoryNotEmptyException& exc); ~DirectoryNotEmptyException() throw(); DirectoryNotEmptyException& operator = (const DirectoryNotEmptyException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) UnknownURISchemeException: public RuntimeException { public: UnknownURISchemeException(int code = 0); UnknownURISchemeException(const std::string& msg, int code = 0); UnknownURISchemeException(const std::string& msg, const std::string& arg, int code = 0); UnknownURISchemeException(const std::string& msg, const Poco::Exception& exc, int code = 0); UnknownURISchemeException(const UnknownURISchemeException& exc); ~UnknownURISchemeException() throw(); UnknownURISchemeException& operator = (const UnknownURISchemeException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) TooManyURIRedirectsException: public RuntimeException { public: TooManyURIRedirectsException(int code = 0); TooManyURIRedirectsException(const std::string& msg, int code = 0); TooManyURIRedirectsException(const std::string& msg, const std::string& arg, int code = 0); TooManyURIRedirectsException(const std::string& msg, const Poco::Exception& exc, int code = 0); TooManyURIRedirectsException(const TooManyURIRedirectsException& exc); ~TooManyURIRedirectsException() throw(); TooManyURIRedirectsException& operator = (const TooManyURIRedirectsException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) URISyntaxException: public SyntaxException { public: URISyntaxException(int code = 0); URISyntaxException(const std::string& msg, int code = 0); URISyntaxException(const std::string& msg, const std::string& arg, int code = 0); URISyntaxException(const std::string& msg, const Poco::Exception& exc, int code = 0); URISyntaxException(const URISyntaxException& exc); ~URISyntaxException() throw(); URISyntaxException& operator = (const URISyntaxException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: 25082: class __attribute__ ((visibility ("default"))) ApplicationException: public Exception { public: ApplicationException(int code = 0); ApplicationException(const std::string& msg, int code = 0); ApplicationException(const std::string& msg, const std::string& arg, int code = 0); ApplicationException(const std::string& msg, const Poco::Exception& exc, int code = 0); ApplicationException(const ApplicationException& exc); ~ApplicationException() throw(); ApplicationException& operator = (const ApplicationException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: class __attribute__ ((visibility ("default"))) BadCastException: public RuntimeException { public: BadCastException(int code = 0); BadCastException(const std::string& msg, int code = 0); BadCastException(const std::string& msg, const std::string& arg, int code = 0); BadCastException(const std::string& msg, const Poco::Exception& exc, int code = 0); BadCastException(const BadCastException& exc); ~BadCastException() throw(); BadCastException& operator = (const BadCastException& exc); const char* name() const throw(); const char* className() const throw(); Poco::Exception* clone() const; void rethrow() const; }; 25082: 25082: 25082: } 25082: # 8 "/build/clickhouse-18.16.1+ds/dbms/src/Common/Exception.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/StackTrace.h" 1 3 4 25082: 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Common/StackTrace.h" 3 4 25082: class StackTrace 25082: { 25082: public: 25082: 25082: StackTrace(); 25082: 25082: 25082: std::string toString() const; 25082: 25082: private: 25082: using Frame = void*; 25082: using Frames = std::array; 25082: Frames frames; 25082: size_t frames_size; 25082: 25082: static std::string toStringImpl(const Frames & frames, size_t frames_size); 25082: }; 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Common/Exception.h" 2 3 4 25082: 25082: namespace Poco { class Logger; } 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int POCO_EXCEPTION; 25082: } 25082: 25082: class Exception : public Poco::Exception 25082: { 25082: public: 25082: Exception() {} 25082: Exception(const std::string & msg, int code) : Poco::Exception(msg, code) {} 25082: Exception(const std::string & msg, const Exception & nested_exception, int code) 25082: : Poco::Exception(msg, nested_exception, code), trace(nested_exception.trace) {} 25082: 25082: enum CreateFromPocoTag { CreateFromPoco }; 25082: Exception(CreateFromPocoTag, const Poco::Exception & exc) : Poco::Exception(exc.displayText(), ErrorCodes::POCO_EXCEPTION) {} 25082: 25082: Exception * clone() const override { return new Exception(*this); } 25082: void rethrow() const override { throw *this; } 25082: const char * name() const throw() override { return "DB::Exception"; } 25082: 25082: 25082: void addMessage(const std::string & arg) { extendedMessage(arg); } 25082: 25082: const StackTrace & getStackTrace() const { return trace; } 25082: 25082: private: 25082: StackTrace trace; 25082: 25082: const char * className() const throw() override { return "DB::Exception"; } 25082: }; 25082: 25082: 25082: 25082: class ErrnoException : public Exception 25082: { 25082: public: 25082: ErrnoException(const std::string & msg, int code, int saved_errno_) 25082: : Exception(msg, code), saved_errno(saved_errno_) {} 25082: 25082: ErrnoException * clone() const override { return new ErrnoException(*this); } 25082: void rethrow() const override { throw *this; } 25082: 25082: int getErrno() const { return saved_errno; } 25082: 25082: private: 25082: int saved_errno; 25082: 25082: const char * name() const throw() override { return "DB::ErrnoException"; } 25082: const char * className() const throw() override { return "DB::ErrnoException"; } 25082: }; 25082: 25082: 25082: using Exceptions = std::vector; 25082: 25082: 25082: std::string errnoToString(int code, int the_errno = (*__errno_location ())); 25082: [[noreturn]] void throwFromErrno(const std::string & s, int code, int the_errno = (*__errno_location ())); 25082: 25082: 25082: 25082: 25082: 25082: void tryLogCurrentException(const char * log_name, const std::string & start_of_message = ""); 25082: void tryLogCurrentException(Poco::Logger * logger, const std::string & start_of_message = ""); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: std::string getCurrentExceptionMessage(bool with_stacktrace, bool check_embedded_stacktrace = false); 25082: 25082: 25082: int getCurrentExceptionCode(); 25082: 25082: 25082: 25082: struct ExecutionStatus 25082: { 25082: int code = 0; 25082: std::string message; 25082: 25082: ExecutionStatus() = default; 25082: 25082: explicit ExecutionStatus(int return_code, const std::string & exception_message = "") 25082: : code(return_code), message(exception_message) {} 25082: 25082: static ExecutionStatus fromCurrentException(const std::string & start_of_message = ""); 25082: 25082: std::string serializeText() const; 25082: 25082: void deserializeText(const std::string & data); 25082: 25082: bool tryDeserializeText(const std::string & data); 25082: }; 25082: 25082: 25082: void tryLogException(std::exception_ptr e, const char * log_name, const std::string & start_of_message = ""); 25082: void tryLogException(std::exception_ptr e, Poco::Logger * logger, const std::string & start_of_message = ""); 25082: 25082: std::string getExceptionMessage(const Exception & e, bool with_stacktrace, bool check_embedded_stacktrace = false); 25082: std::string getExceptionMessage(std::exception_ptr e, bool with_stacktrace); 25082: 25082: 25082: void rethrowFirstException(const Exceptions & exceptions); 25082: 25082: 25082: template 25082: std::enable_if_t, T> exception_cast(std::exception_ptr e) 25082: { 25082: try 25082: { 25082: std::rethrow_exception(std::move(e)); 25082: } 25082: catch (std::remove_pointer_t & concrete) 25082: { 25082: return &concrete; 25082: } 25082: catch (...) 25082: { 25082: return nullptr; 25082: } 25082: } 25082: 25082: } 25082: # 9 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Field.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/UInt128.h" 1 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/contrib/cityhash102/include/city.h" 1 3 4 25082: # 46 "/build/clickhouse-18.16.1+ds/contrib/cityhash102/include/city.h" 3 4 25082: # 1 "/usr/include/c++/8/stdlib.h" 1 3 4 25082: # 36 "/usr/include/c++/8/stdlib.h" 3 4 25082: # 1 "/usr/include/c++/8/cstdlib" 1 3 4 25082: # 39 "/usr/include/c++/8/cstdlib" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstdlib" 3 25082: # 37 "/usr/include/c++/8/stdlib.h" 2 3 4 25082: 25082: using std::abort; 25082: using std::atexit; 25082: using std::exit; 25082: 25082: 25082: using std::at_quick_exit; 25082: 25082: 25082: using std::quick_exit; 25082: 25082: 25082: 25082: 25082: using std::div_t; 25082: using std::ldiv_t; 25082: 25082: using std::abs; 25082: using std::atof; 25082: using std::atoi; 25082: using std::atol; 25082: using std::bsearch; 25082: using std::calloc; 25082: using std::div; 25082: using std::free; 25082: using std::getenv; 25082: using std::labs; 25082: using std::ldiv; 25082: using std::malloc; 25082: 25082: using std::mblen; 25082: using std::mbstowcs; 25082: using std::mbtowc; 25082: 25082: using std::qsort; 25082: using std::rand; 25082: using std::realloc; 25082: using std::srand; 25082: using std::strtod; 25082: using std::strtol; 25082: using std::strtoul; 25082: using std::system; 25082: 25082: using std::wcstombs; 25082: using std::wctomb; 25082: # 47 "/build/clickhouse-18.16.1+ds/contrib/cityhash102/include/city.h" 2 3 4 25082: # 58 "/build/clickhouse-18.16.1+ds/contrib/cityhash102/include/city.h" 3 4 25082: namespace CityHash_v1_0_2 25082: { 25082: 25082: typedef uint8_t uint8; 25082: typedef uint32_t uint32; 25082: typedef uint64_t uint64; 25082: typedef std::pair uint128; 25082: 25082: 25082: inline uint64 Uint128Low64(const uint128& x) { return x.first; } 25082: inline uint64 Uint128High64(const uint128& x) { return x.second; } 25082: 25082: 25082: uint64 CityHash64(const char *buf, size_t len); 25082: 25082: 25082: 25082: uint64 CityHash64WithSeed(const char *buf, size_t len, uint64 seed); 25082: 25082: 25082: 25082: uint64 CityHash64WithSeeds(const char *buf, size_t len, 25082: uint64 seed0, uint64 seed1); 25082: 25082: 25082: uint128 CityHash128(const char *s, size_t len); 25082: 25082: 25082: 25082: uint128 CityHash128WithSeed(const char *s, size_t len, uint128 seed); 25082: 25082: 25082: 25082: inline uint64 Hash128to64(const uint128& x) { 25082: 25082: const uint64 kMul = 0x9ddfea08eb382d69ULL; 25082: uint64 a = (Uint128Low64(x) ^ Uint128High64(x)) * kMul; 25082: a ^= (a >> 47); 25082: uint64 b = (Uint128High64(x) ^ a) * kMul; 25082: b ^= (b >> 47); 25082: b *= kMul; 25082: return b; 25082: } 25082: 25082: } 25082: # 6 "/build/clickhouse-18.16.1+ds/dbms/src/Common/UInt128.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Types.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: struct Null {}; 25082: 25082: using UInt8 = uint8_t; 25082: using UInt16 = uint16_t; 25082: using UInt32 = uint32_t; 25082: using UInt64 = uint64_t; 25082: 25082: using Int8 = int8_t; 25082: using Int16 = int16_t; 25082: using Int32 = int32_t; 25082: using Int64 = int64_t; 25082: 25082: using Float32 = float; 25082: using Float64 = double; 25082: 25082: using String = std::string; 25082: 25082: 25082: 25082: 25082: template constexpr bool IsNumber = false; 25082: 25082: template <> constexpr bool IsNumber = true; 25082: template <> constexpr bool IsNumber = true; 25082: template <> constexpr bool IsNumber = true; 25082: template <> constexpr bool IsNumber = true; 25082: template <> constexpr bool IsNumber = true; 25082: template <> constexpr bool IsNumber = true; 25082: template <> constexpr bool IsNumber = true; 25082: template <> constexpr bool IsNumber = true; 25082: template <> constexpr bool IsNumber = true; 25082: template <> constexpr bool IsNumber = true; 25082: 25082: template struct TypeName; 25082: 25082: template <> struct TypeName { static const char * get() { return "UInt8"; } }; 25082: template <> struct TypeName { static const char * get() { return "UInt16"; } }; 25082: template <> struct TypeName { static const char * get() { return "UInt32"; } }; 25082: template <> struct TypeName { static const char * get() { return "UInt64"; } }; 25082: template <> struct TypeName { static const char * get() { return "Int8"; } }; 25082: template <> struct TypeName { static const char * get() { return "Int16"; } }; 25082: template <> struct TypeName { static const char * get() { return "Int32"; } }; 25082: template <> struct TypeName { static const char * get() { return "Int64"; } }; 25082: template <> struct TypeName { static const char * get() { return "Float32"; } }; 25082: template <> struct TypeName { static const char * get() { return "Float64"; } }; 25082: template <> struct TypeName { static const char * get() { return "String"; } }; 25082: 25082: enum class TypeIndex 25082: { 25082: Nothing = 0, 25082: UInt8, 25082: UInt16, 25082: UInt32, 25082: UInt64, 25082: UInt128, 25082: Int8, 25082: Int16, 25082: Int32, 25082: Int64, 25082: Int128, 25082: Float32, 25082: Float64, 25082: Date, 25082: DateTime, 25082: String, 25082: FixedString, 25082: Enum8, 25082: Enum16, 25082: Decimal32, 25082: Decimal64, 25082: Decimal128, 25082: UUID, 25082: Array, 25082: Tuple, 25082: Set, 25082: Interval, 25082: Nullable, 25082: Function, 25082: AggregateFunction, 25082: LowCardinality, 25082: }; 25082: 25082: template struct TypeId; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::UInt8; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::UInt16; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::UInt32; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::UInt64; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::Int8; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::Int16; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::Int32; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::Int64; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::Float32; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::Float64; }; 25082: 25082: 25082: using Strings = std::vector; 25082: 25082: 25082: using Int128 = __int128; 25082: template <> constexpr bool IsNumber = true; 25082: template <> struct TypeName { static const char * get() { return "Int128"; } }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::Int128; }; 25082: 25082: 25082: 25082: template 25082: struct Decimal 25082: { 25082: using NativeType = T; 25082: 25082: Decimal() = default; 25082: Decimal(Decimal &&) = default; 25082: Decimal(const Decimal &) = default; 25082: 25082: Decimal(const T & value_) 25082: : value(value_) 25082: {} 25082: 25082: template 25082: Decimal(const Decimal & x) 25082: : value(x) 25082: {} 25082: 25082: constexpr Decimal & operator = (Decimal &&) = default; 25082: constexpr Decimal & operator = (const Decimal &) = default; 25082: 25082: operator T () const { return value; } 25082: 25082: const Decimal & operator += (const T & x) { value += x; return *this; } 25082: const Decimal & operator -= (const T & x) { value -= x; return *this; } 25082: const Decimal & operator *= (const T & x) { value *= x; return *this; } 25082: const Decimal & operator /= (const T & x) { value /= x; return *this; } 25082: const Decimal & operator %= (const T & x) { value %= x; return *this; } 25082: 25082: T value; 25082: }; 25082: 25082: using Decimal32 = Decimal; 25082: using Decimal64 = Decimal; 25082: using Decimal128 = Decimal; 25082: 25082: template <> struct TypeName { static const char * get() { return "Decimal32"; } }; 25082: template <> struct TypeName { static const char * get() { return "Decimal64"; } }; 25082: template <> struct TypeName { static const char * get() { return "Decimal128"; } }; 25082: 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::Decimal32; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::Decimal64; }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::Decimal128; }; 25082: 25082: template 25082: constexpr bool IsDecimalNumber = false; 25082: template <> constexpr bool IsDecimalNumber = true; 25082: template <> constexpr bool IsDecimalNumber = true; 25082: template <> constexpr bool IsDecimalNumber = true; 25082: 25082: } 25082: # 8 "/build/clickhouse-18.16.1+ds/dbms/src/Common/UInt128.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: struct UInt128 25082: { 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" 25082: 25082: 25082: 25082: UInt64 low; 25082: UInt64 high; 25082: 25082: UInt128() = default; 25082: explicit UInt128(const UInt64 low, const UInt64 high) : low(low), high(high) {} 25082: explicit UInt128(const UInt64 rhs) : low(rhs), high() {} 25082: 25082: auto tuple() const { return std::tie(high, low); } 25082: 25082: bool inline operator== (const UInt128 rhs) const { return tuple() == rhs.tuple(); } 25082: bool inline operator!= (const UInt128 rhs) const { return tuple() != rhs.tuple(); } 25082: bool inline operator< (const UInt128 rhs) const { return tuple() < rhs.tuple(); } 25082: bool inline operator<= (const UInt128 rhs) const { return tuple() <= rhs.tuple(); } 25082: bool inline operator> (const UInt128 rhs) const { return tuple() > rhs.tuple(); } 25082: bool inline operator>= (const UInt128 rhs) const { return tuple() >= rhs.tuple(); } 25082: 25082: template bool inline operator== (const T rhs) const { return *this == UInt128(rhs); } 25082: template bool inline operator!= (const T rhs) const { return *this != UInt128(rhs); } 25082: template bool inline operator>= (const T rhs) const { return *this >= UInt128(rhs); } 25082: template bool inline operator> (const T rhs) const { return *this > UInt128(rhs); } 25082: template bool inline operator<= (const T rhs) const { return *this <= UInt128(rhs); } 25082: template bool inline operator< (const T rhs) const { return *this < UInt128(rhs); } 25082: 25082: template explicit operator T() const { return static_cast(low); } 25082: 25082: 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: UInt128 & operator= (const UInt64 rhs) { low = rhs; high = 0; return *this; } 25082: }; 25082: 25082: template bool inline operator== (T a, const UInt128 b) { return UInt128(a) == b; } 25082: template bool inline operator!= (T a, const UInt128 b) { return UInt128(a) != b; } 25082: template bool inline operator>= (T a, const UInt128 b) { return UInt128(a) >= b; } 25082: template bool inline operator> (T a, const UInt128 b) { return UInt128(a) > b; } 25082: template bool inline operator<= (T a, const UInt128 b) { return UInt128(a) <= b; } 25082: template bool inline operator< (T a, const UInt128 b) { return UInt128(a) < b; } 25082: 25082: template <> constexpr bool IsNumber = true; 25082: template <> struct TypeName { static const char * get() { return "UInt128"; } }; 25082: template <> struct TypeId { static constexpr const TypeIndex value = TypeIndex::UInt128; }; 25082: 25082: struct UInt128Hash 25082: { 25082: size_t operator()(UInt128 x) const 25082: { 25082: return CityHash_v1_0_2::Hash128to64({x.low, x.high}); 25082: } 25082: }; 25082: # 94 "/build/clickhouse-18.16.1+ds/dbms/src/Common/UInt128.h" 3 4 25082: struct UInt128HashCRC32 : public UInt128Hash {}; 25082: 25082: 25082: 25082: struct UInt128TrivialHash 25082: { 25082: size_t operator()(UInt128 x) const { return x.low; } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: struct UInt256 25082: { 25082: 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" 25082: 25082: 25082: UInt64 a; 25082: UInt64 b; 25082: UInt64 c; 25082: UInt64 d; 25082: 25082: bool operator== (const UInt256 rhs) const 25082: { 25082: return a == rhs.a && b == rhs.b && c == rhs.c && d == rhs.d; 25082: # 133 "/build/clickhouse-18.16.1+ds/dbms/src/Common/UInt128.h" 3 4 25082: } 25082: 25082: bool operator!= (const UInt256 rhs) const { return !operator==(rhs); } 25082: 25082: bool operator== (const UInt64 rhs) const { return a == rhs && b == 0 && c == 0 && d == 0; } 25082: bool operator!= (const UInt64 rhs) const { return !operator==(rhs); } 25082: 25082: 25082: #pragma GCC diagnostic pop 25082: 25082: 25082: UInt256 & operator= (const UInt64 rhs) { a = rhs; b = 0; c = 0; d = 0; return *this; } 25082: }; 25082: 25082: struct UInt256Hash 25082: { 25082: size_t operator()(UInt256 x) const 25082: { 25082: 25082: return CityHash_v1_0_2::Hash128to64({CityHash_v1_0_2::Hash128to64({x.a, x.b}), CityHash_v1_0_2::Hash128to64({x.c, x.d})}); 25082: } 25082: }; 25082: # 174 "/build/clickhouse-18.16.1+ds/dbms/src/Common/UInt128.h" 3 4 25082: struct UInt256HashCRC32 : public UInt256Hash {}; 25082: 25082: 25082: } 25082: 25082: 25082: namespace std 25082: { 25082: template <> struct hash 25082: { 25082: size_t operator()(const DB::UInt128 & u) const 25082: { 25082: return CityHash_v1_0_2::Hash128to64({u.low, u.high}); 25082: } 25082: }; 25082: 25082: template <> struct is_signed 25082: { 25082: static constexpr bool value = false; 25082: }; 25082: 25082: template <> struct is_unsigned 25082: { 25082: static constexpr bool value = true; 25082: }; 25082: 25082: template <> struct is_integral 25082: { 25082: static constexpr bool value = true; 25082: }; 25082: 25082: 25082: template <> struct is_arithmetic 25082: { 25082: static constexpr bool value = false; 25082: }; 25082: } 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Field.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Defines.h" 1 3 4 25082: 25082: # 12 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Field.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/UUID.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/strong_typedef.h" 1 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/operators.hpp" 1 3 4 25082: # 98 "/usr/include/boost/operators.hpp" 3 4 25082: # 1 "/usr/include/c++/8/iterator" 1 3 4 25082: # 58 "/usr/include/c++/8/iterator" 3 4 25082: 25082: # 59 "/usr/include/c++/8/iterator" 3 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/ostream" 1 3 25082: # 36 "/usr/include/c++/8/ostream" 3 25082: 25082: # 37 "/usr/include/c++/8/ostream" 3 25082: 25082: # 1 "/usr/include/c++/8/ios" 1 3 25082: # 36 "/usr/include/c++/8/ios" 3 25082: 25082: # 37 "/usr/include/c++/8/ios" 3 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/ios_base.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/ios_base.h" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/ios_base.h" 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/locale_classes.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 62 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: class locale 25082: { 25082: public: 25082: 25082: 25082: typedef int category; 25082: 25082: 25082: class facet; 25082: class id; 25082: class _Impl; 25082: 25082: friend class facet; 25082: friend class _Impl; 25082: 25082: template 25082: friend bool 25082: has_facet(const locale&) throw(); 25082: 25082: template 25082: friend const _Facet& 25082: use_facet(const locale&); 25082: 25082: template 25082: friend struct __use_cache; 25082: # 98 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: static const category none = 0; 25082: static const category ctype = 1L << 0; 25082: static const category numeric = 1L << 1; 25082: static const category collate = 1L << 2; 25082: static const category time = 1L << 3; 25082: static const category monetary = 1L << 4; 25082: static const category messages = 1L << 5; 25082: static const category all = (ctype | numeric | collate | 25082: time | monetary | messages); 25082: # 117 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: locale() throw(); 25082: # 126 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: locale(const locale& __other) throw(); 25082: # 136 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: explicit 25082: locale(const char* __s); 25082: # 151 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: locale(const locale& __base, const char* __s, category __cat); 25082: # 162 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: explicit 25082: locale(const std::string& __s) : locale(__s.c_str()) { } 25082: # 177 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: locale(const locale& __base, const std::string& __s, category __cat) 25082: : locale(__base, __s.c_str(), __cat) { } 25082: # 192 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: locale(const locale& __base, const locale& __add, category __cat); 25082: # 205 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: template 25082: locale(const locale& __other, _Facet* __f); 25082: 25082: 25082: ~locale() throw(); 25082: # 219 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: const locale& 25082: operator=(const locale& __other) throw(); 25082: # 234 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: template 25082: locale 25082: combine(const locale& __other) const; 25082: 25082: 25082: 25082: 25082: 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: string 25082: name() const; 25082: # 254 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: bool 25082: operator==(const locale& __other) const throw(); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: bool 25082: operator!=(const locale& __other) const throw() 25082: { return !(this->operator==(__other)); } 25082: # 282 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: template 25082: bool 25082: operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, 25082: const basic_string<_Char, _Traits, _Alloc>& __s2) const; 25082: # 298 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: static locale 25082: global(const locale& __loc); 25082: 25082: 25082: 25082: 25082: static const locale& 25082: classic(); 25082: 25082: private: 25082: 25082: _Impl* _M_impl; 25082: 25082: 25082: static _Impl* _S_classic; 25082: 25082: 25082: static _Impl* _S_global; 25082: 25082: 25082: 25082: 25082: 25082: static const char* const* const _S_categories; 25082: # 333 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: enum { _S_categories_size = 6 + 6 }; 25082: 25082: 25082: static __gthread_once_t _S_once; 25082: 25082: 25082: explicit 25082: locale(_Impl*) throw(); 25082: 25082: static void 25082: _S_initialize(); 25082: 25082: static void 25082: _S_initialize_once() throw(); 25082: 25082: static category 25082: _S_normalize_category(category); 25082: 25082: void 25082: _M_coalesce(const locale& __base, const locale& __add, category __cat); 25082: 25082: 25082: static const id* const _S_twinned_facets[]; 25082: 25082: }; 25082: # 371 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: class locale::facet 25082: { 25082: private: 25082: friend class locale; 25082: friend class locale::_Impl; 25082: 25082: mutable _Atomic_word _M_refcount; 25082: 25082: 25082: static __c_locale _S_c_locale; 25082: 25082: 25082: static const char _S_c_name[2]; 25082: 25082: 25082: static __gthread_once_t _S_once; 25082: 25082: 25082: static void 25082: _S_initialize_once(); 25082: 25082: protected: 25082: # 402 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: explicit 25082: facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) 25082: { } 25082: 25082: 25082: virtual 25082: ~facet(); 25082: 25082: static void 25082: _S_create_c_locale(__c_locale& __cloc, const char* __s, 25082: __c_locale __old = 0); 25082: 25082: static __c_locale 25082: _S_clone_c_locale(__c_locale& __cloc) throw(); 25082: 25082: static void 25082: _S_destroy_c_locale(__c_locale& __cloc); 25082: 25082: static __c_locale 25082: _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s); 25082: 25082: 25082: 25082: static __c_locale 25082: _S_get_c_locale(); 25082: 25082: __attribute__ ((__const__)) static const char* 25082: _S_get_c_name() throw(); 25082: # 438 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: facet(const facet&) = delete; 25082: 25082: facet& 25082: operator=(const facet&) = delete; 25082: 25082: 25082: private: 25082: void 25082: _M_add_reference() const throw() 25082: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 25082: 25082: void 25082: _M_remove_reference() const throw() 25082: { 25082: 25082: ; 25082: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) 25082: { 25082: ; 25082: try 25082: { delete this; } 25082: catch(...) 25082: { } 25082: } 25082: } 25082: 25082: const facet* _M_sso_shim(const id*) const; 25082: const facet* _M_cow_shim(const id*) const; 25082: 25082: protected: 25082: class __shim; 25082: }; 25082: # 483 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: class locale::id 25082: { 25082: private: 25082: friend class locale; 25082: friend class locale::_Impl; 25082: 25082: template 25082: friend const _Facet& 25082: use_facet(const locale&); 25082: 25082: template 25082: friend bool 25082: has_facet(const locale&) throw(); 25082: 25082: 25082: 25082: 25082: mutable size_t _M_index; 25082: 25082: 25082: static _Atomic_word _S_refcount; 25082: 25082: void 25082: operator=(const id&); 25082: 25082: id(const id&); 25082: 25082: public: 25082: 25082: 25082: 25082: id() { } 25082: 25082: size_t 25082: _M_id() const throw(); 25082: }; 25082: 25082: 25082: 25082: class locale::_Impl 25082: { 25082: public: 25082: 25082: friend class locale; 25082: friend class locale::facet; 25082: 25082: template 25082: friend bool 25082: has_facet(const locale&) throw(); 25082: 25082: template 25082: friend const _Facet& 25082: use_facet(const locale&); 25082: 25082: template 25082: friend struct __use_cache; 25082: 25082: private: 25082: 25082: _Atomic_word _M_refcount; 25082: const facet** _M_facets; 25082: size_t _M_facets_size; 25082: const facet** _M_caches; 25082: char** _M_names; 25082: static const locale::id* const _S_id_ctype[]; 25082: static const locale::id* const _S_id_numeric[]; 25082: static const locale::id* const _S_id_collate[]; 25082: static const locale::id* const _S_id_time[]; 25082: static const locale::id* const _S_id_monetary[]; 25082: static const locale::id* const _S_id_messages[]; 25082: static const locale::id* const* const _S_facet_categories[]; 25082: 25082: void 25082: _M_add_reference() throw() 25082: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 25082: 25082: void 25082: _M_remove_reference() throw() 25082: { 25082: 25082: ; 25082: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) 25082: { 25082: ; 25082: try 25082: { delete this; } 25082: catch(...) 25082: { } 25082: } 25082: } 25082: 25082: _Impl(const _Impl&, size_t); 25082: _Impl(const char*, size_t); 25082: _Impl(size_t) throw(); 25082: 25082: ~_Impl() throw(); 25082: 25082: _Impl(const _Impl&); 25082: 25082: void 25082: operator=(const _Impl&); 25082: 25082: bool 25082: _M_check_same_name() 25082: { 25082: bool __ret = true; 25082: if (_M_names[1]) 25082: 25082: for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) 25082: __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; 25082: return __ret; 25082: } 25082: 25082: void 25082: _M_replace_categories(const _Impl*, category); 25082: 25082: void 25082: _M_replace_category(const _Impl*, const locale::id* const*); 25082: 25082: void 25082: _M_replace_facet(const _Impl*, const locale::id*); 25082: 25082: void 25082: _M_install_facet(const locale::id*, const facet*); 25082: 25082: template 25082: void 25082: _M_init_facet(_Facet* __facet) 25082: { _M_install_facet(&_Facet::id, __facet); } 25082: 25082: template 25082: void 25082: _M_init_facet_unchecked(_Facet* __facet) 25082: { 25082: __facet->_M_add_reference(); 25082: _M_facets[_Facet::id._M_id()] = __facet; 25082: } 25082: 25082: void 25082: _M_install_cache(const facet*, size_t); 25082: 25082: void _M_init_extra(facet**); 25082: void _M_init_extra(void*, void*, const char*, const char*); 25082: }; 25082: # 641 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: template 25082: class __cxx11:: collate : public locale::facet 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef basic_string<_CharT> string_type; 25082: 25082: 25082: protected: 25082: 25082: 25082: __c_locale _M_c_locale_collate; 25082: 25082: public: 25082: 25082: static locale::id id; 25082: # 668 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: explicit 25082: collate(size_t __refs = 0) 25082: : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) 25082: { } 25082: # 682 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: explicit 25082: collate(__c_locale __cloc, size_t __refs = 0) 25082: : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) 25082: { } 25082: # 699 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: int 25082: compare(const _CharT* __lo1, const _CharT* __hi1, 25082: const _CharT* __lo2, const _CharT* __hi2) const 25082: { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } 25082: # 718 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: string_type 25082: transform(const _CharT* __lo, const _CharT* __hi) const 25082: { return this->do_transform(__lo, __hi); } 25082: # 732 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: long 25082: hash(const _CharT* __lo, const _CharT* __hi) const 25082: { return this->do_hash(__lo, __hi); } 25082: 25082: 25082: int 25082: _M_compare(const _CharT*, const _CharT*) const throw(); 25082: 25082: size_t 25082: _M_transform(_CharT*, const _CharT*, size_t) const throw(); 25082: 25082: protected: 25082: 25082: virtual 25082: ~collate() 25082: { _S_destroy_c_locale(_M_c_locale_collate); } 25082: # 761 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: virtual int 25082: do_compare(const _CharT* __lo1, const _CharT* __hi1, 25082: const _CharT* __lo2, const _CharT* __hi2) const; 25082: # 775 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: virtual string_type 25082: do_transform(const _CharT* __lo, const _CharT* __hi) const; 25082: # 788 "/usr/include/c++/8/bits/locale_classes.h" 3 25082: virtual long 25082: do_hash(const _CharT* __lo, const _CharT* __hi) const; 25082: }; 25082: 25082: template 25082: locale::id collate<_CharT>::id; 25082: 25082: 25082: template<> 25082: int 25082: collate::_M_compare(const char*, const char*) const throw(); 25082: 25082: template<> 25082: size_t 25082: collate::_M_transform(char*, const char*, size_t) const throw(); 25082: 25082: 25082: template<> 25082: int 25082: collate::_M_compare(const wchar_t*, const wchar_t*) const throw(); 25082: 25082: template<> 25082: size_t 25082: collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); 25082: 25082: 25082: 25082: template 25082: class __cxx11:: collate_byname : public collate<_CharT> 25082: { 25082: public: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef basic_string<_CharT> string_type; 25082: 25082: 25082: explicit 25082: collate_byname(const char* __s, size_t __refs = 0) 25082: : collate<_CharT>(__refs) 25082: { 25082: if (__builtin_strcmp(__s, "C") != 0 25082: && __builtin_strcmp(__s, "POSIX") != 0) 25082: { 25082: this->_S_destroy_c_locale(this->_M_c_locale_collate); 25082: this->_S_create_c_locale(this->_M_c_locale_collate, __s); 25082: } 25082: } 25082: 25082: 25082: explicit 25082: collate_byname(const string& __s, size_t __refs = 0) 25082: : collate_byname(__s.c_str(), __refs) { } 25082: 25082: 25082: protected: 25082: virtual 25082: ~collate_byname() { } 25082: }; 25082: 25082: 25082: } 25082: 25082: # 1 "/usr/include/c++/8/bits/locale_classes.tcc" 1 3 25082: # 37 "/usr/include/c++/8/bits/locale_classes.tcc" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/locale_classes.tcc" 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: locale:: 25082: locale(const locale& __other, _Facet* __f) 25082: { 25082: _M_impl = new _Impl(*__other._M_impl, 1); 25082: 25082: try 25082: { _M_impl->_M_install_facet(&_Facet::id, __f); } 25082: catch(...) 25082: { 25082: _M_impl->_M_remove_reference(); 25082: throw; 25082: } 25082: delete [] _M_impl->_M_names[0]; 25082: _M_impl->_M_names[0] = 0; 25082: } 25082: 25082: template 25082: locale 25082: locale:: 25082: combine(const locale& __other) const 25082: { 25082: _Impl* __tmp = new _Impl(*_M_impl, 1); 25082: try 25082: { 25082: __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); 25082: } 25082: catch(...) 25082: { 25082: __tmp->_M_remove_reference(); 25082: throw; 25082: } 25082: return locale(__tmp); 25082: } 25082: 25082: template 25082: bool 25082: locale:: 25082: operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, 25082: const basic_string<_CharT, _Traits, _Alloc>& __s2) const 25082: { 25082: typedef std::collate<_CharT> __collate_type; 25082: const __collate_type& __collate = use_facet<__collate_type>(*this); 25082: return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), 25082: __s2.data(), __s2.data() + __s2.length()) < 0); 25082: } 25082: # 102 "/usr/include/c++/8/bits/locale_classes.tcc" 3 25082: template 25082: bool 25082: has_facet(const locale& __loc) throw() 25082: { 25082: const size_t __i = _Facet::id._M_id(); 25082: const locale::facet** __facets = __loc._M_impl->_M_facets; 25082: return (__i < __loc._M_impl->_M_facets_size 25082: 25082: && dynamic_cast(__facets[__i])); 25082: 25082: 25082: 25082: } 25082: # 130 "/usr/include/c++/8/bits/locale_classes.tcc" 3 25082: template 25082: const _Facet& 25082: use_facet(const locale& __loc) 25082: { 25082: const size_t __i = _Facet::id._M_id(); 25082: const locale::facet** __facets = __loc._M_impl->_M_facets; 25082: if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) 25082: __throw_bad_cast(); 25082: 25082: return dynamic_cast(*__facets[__i]); 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: template 25082: int 25082: collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () 25082: { return 0; } 25082: 25082: 25082: template 25082: size_t 25082: collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () 25082: { return 0; } 25082: 25082: template 25082: int 25082: collate<_CharT>:: 25082: do_compare(const _CharT* __lo1, const _CharT* __hi1, 25082: const _CharT* __lo2, const _CharT* __hi2) const 25082: { 25082: 25082: 25082: const string_type __one(__lo1, __hi1); 25082: const string_type __two(__lo2, __hi2); 25082: 25082: const _CharT* __p = __one.c_str(); 25082: const _CharT* __pend = __one.data() + __one.length(); 25082: const _CharT* __q = __two.c_str(); 25082: const _CharT* __qend = __two.data() + __two.length(); 25082: 25082: 25082: 25082: 25082: for (;;) 25082: { 25082: const int __res = _M_compare(__p, __q); 25082: if (__res) 25082: return __res; 25082: 25082: __p += char_traits<_CharT>::length(__p); 25082: __q += char_traits<_CharT>::length(__q); 25082: if (__p == __pend && __q == __qend) 25082: return 0; 25082: else if (__p == __pend) 25082: return -1; 25082: else if (__q == __qend) 25082: return 1; 25082: 25082: __p++; 25082: __q++; 25082: } 25082: } 25082: 25082: template 25082: typename collate<_CharT>::string_type 25082: collate<_CharT>:: 25082: do_transform(const _CharT* __lo, const _CharT* __hi) const 25082: { 25082: string_type __ret; 25082: 25082: 25082: const string_type __str(__lo, __hi); 25082: 25082: const _CharT* __p = __str.c_str(); 25082: const _CharT* __pend = __str.data() + __str.length(); 25082: 25082: size_t __len = (__hi - __lo) * 2; 25082: 25082: _CharT* __c = new _CharT[__len]; 25082: 25082: try 25082: { 25082: 25082: 25082: 25082: for (;;) 25082: { 25082: 25082: size_t __res = _M_transform(__c, __p, __len); 25082: 25082: 25082: if (__res >= __len) 25082: { 25082: __len = __res + 1; 25082: delete [] __c, __c = 0; 25082: __c = new _CharT[__len]; 25082: __res = _M_transform(__c, __p, __len); 25082: } 25082: 25082: __ret.append(__c, __res); 25082: __p += char_traits<_CharT>::length(__p); 25082: if (__p == __pend) 25082: break; 25082: 25082: __p++; 25082: __ret.push_back(_CharT()); 25082: } 25082: } 25082: catch(...) 25082: { 25082: delete [] __c; 25082: throw; 25082: } 25082: 25082: delete [] __c; 25082: 25082: return __ret; 25082: } 25082: 25082: template 25082: long 25082: collate<_CharT>:: 25082: do_hash(const _CharT* __lo, const _CharT* __hi) const 25082: { 25082: unsigned long __val = 0; 25082: for (; __lo < __hi; ++__lo) 25082: __val = 25082: *__lo + ((__val << 7) 25082: | (__val >> (__gnu_cxx::__numeric_traits:: 25082: __digits - 7))); 25082: return static_cast(__val); 25082: } 25082: 25082: 25082: 25082: 25082: extern template class collate; 25082: extern template class collate_byname; 25082: 25082: extern template 25082: const collate& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: 25082: extern template class collate; 25082: extern template class collate_byname; 25082: 25082: extern template 25082: const collate& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: 25082: 25082: 25082: } 25082: # 852 "/usr/include/c++/8/bits/locale_classes.h" 2 3 25082: # 42 "/usr/include/c++/8/bits/ios_base.h" 2 3 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/system_error" 1 3 25082: # 32 "/usr/include/c++/8/system_error" 3 25082: 25082: # 33 "/usr/include/c++/8/system_error" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/error_constants.h" 1 3 25082: # 34 "/usr/include/aarch64-linux-gnu/c++/8/bits/error_constants.h" 3 25082: # 1 "/usr/include/c++/8/cerrno" 1 3 25082: # 39 "/usr/include/c++/8/cerrno" 3 25082: 25082: # 40 "/usr/include/c++/8/cerrno" 3 25082: # 35 "/usr/include/aarch64-linux-gnu/c++/8/bits/error_constants.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: enum class errc 25082: { 25082: address_family_not_supported = 97, 25082: address_in_use = 98, 25082: address_not_available = 99, 25082: already_connected = 106, 25082: argument_list_too_long = 7, 25082: argument_out_of_domain = 33, 25082: bad_address = 14, 25082: bad_file_descriptor = 9, 25082: 25082: 25082: bad_message = 74, 25082: 25082: 25082: broken_pipe = 32, 25082: connection_aborted = 103, 25082: connection_already_in_progress = 114, 25082: connection_refused = 111, 25082: connection_reset = 104, 25082: cross_device_link = 18, 25082: destination_address_required = 89, 25082: device_or_resource_busy = 16, 25082: directory_not_empty = 39, 25082: executable_format_error = 8, 25082: file_exists = 17, 25082: file_too_large = 27, 25082: filename_too_long = 36, 25082: function_not_supported = 38, 25082: host_unreachable = 113, 25082: 25082: 25082: identifier_removed = 43, 25082: 25082: 25082: illegal_byte_sequence = 84, 25082: inappropriate_io_control_operation = 25, 25082: interrupted = 4, 25082: invalid_argument = 22, 25082: invalid_seek = 29, 25082: io_error = 5, 25082: is_a_directory = 21, 25082: message_size = 90, 25082: network_down = 100, 25082: network_reset = 102, 25082: network_unreachable = 101, 25082: no_buffer_space = 105, 25082: no_child_process = 10, 25082: 25082: 25082: no_link = 67, 25082: 25082: 25082: no_lock_available = 37, 25082: 25082: 25082: no_message_available = 61, 25082: 25082: 25082: no_message = 42, 25082: no_protocol_option = 92, 25082: no_space_on_device = 28, 25082: 25082: 25082: no_stream_resources = 63, 25082: 25082: 25082: no_such_device_or_address = 6, 25082: no_such_device = 19, 25082: no_such_file_or_directory = 2, 25082: no_such_process = 3, 25082: not_a_directory = 20, 25082: not_a_socket = 88, 25082: 25082: 25082: not_a_stream = 60, 25082: 25082: 25082: not_connected = 107, 25082: not_enough_memory = 12, 25082: 25082: 25082: not_supported = 95, 25082: 25082: 25082: 25082: operation_canceled = 125, 25082: 25082: 25082: operation_in_progress = 115, 25082: operation_not_permitted = 1, 25082: operation_not_supported = 95, 25082: operation_would_block = 11, 25082: 25082: 25082: owner_dead = 130, 25082: 25082: 25082: permission_denied = 13, 25082: 25082: 25082: protocol_error = 71, 25082: 25082: 25082: protocol_not_supported = 93, 25082: read_only_file_system = 30, 25082: resource_deadlock_would_occur = 35, 25082: resource_unavailable_try_again = 11, 25082: result_out_of_range = 34, 25082: 25082: 25082: state_not_recoverable = 131, 25082: 25082: 25082: 25082: stream_timeout = 62, 25082: 25082: 25082: 25082: text_file_busy = 26, 25082: 25082: 25082: timed_out = 110, 25082: too_many_files_open_in_system = 23, 25082: too_many_files_open = 24, 25082: too_many_links = 31, 25082: too_many_symbolic_link_levels = 40, 25082: 25082: 25082: value_too_large = 75, 25082: 25082: 25082: wrong_protocol_type = 91 25082: }; 25082: 25082: 25082: } 25082: # 40 "/usr/include/c++/8/system_error" 2 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: class error_code; 25082: class error_condition; 25082: class system_error; 25082: 25082: 25082: template 25082: struct is_error_code_enum : public false_type { }; 25082: 25082: 25082: template 25082: struct is_error_condition_enum : public false_type { }; 25082: 25082: template<> 25082: struct is_error_condition_enum 25082: : public true_type { }; 25082: 25082: 25082: template 25082: inline constexpr bool is_error_code_enum_v = 25082: is_error_code_enum<_Tp>::value; 25082: template 25082: inline constexpr bool is_error_condition_enum_v = 25082: is_error_condition_enum<_Tp>::value; 25082: 25082: inline namespace _V2 { 25082: 25082: 25082: class error_category 25082: { 25082: public: 25082: constexpr error_category() noexcept = default; 25082: 25082: virtual ~error_category(); 25082: 25082: error_category(const error_category&) = delete; 25082: error_category& operator=(const error_category&) = delete; 25082: 25082: virtual const char* 25082: name() const noexcept = 0; 25082: 25082: 25082: 25082: 25082: 25082: 25082: private: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: virtual __cow_string 25082: _M_message(int) const; 25082: 25082: public: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: virtual string 25082: message(int) const = 0; 25082: # 110 "/usr/include/c++/8/system_error" 3 25082: public: 25082: virtual error_condition 25082: default_error_condition(int __i) const noexcept; 25082: 25082: virtual bool 25082: equivalent(int __i, const error_condition& __cond) const noexcept; 25082: 25082: virtual bool 25082: equivalent(const error_code& __code, int __i) const noexcept; 25082: 25082: bool 25082: operator<(const error_category& __other) const noexcept 25082: { return less()(this, &__other); } 25082: 25082: bool 25082: operator==(const error_category& __other) const noexcept 25082: { return this == &__other; } 25082: 25082: bool 25082: operator!=(const error_category& __other) const noexcept 25082: { return this != &__other; } 25082: }; 25082: 25082: 25082: __attribute__ ((__const__)) const error_category& system_category() noexcept; 25082: __attribute__ ((__const__)) const error_category& generic_category() noexcept; 25082: 25082: } 25082: 25082: error_code make_error_code(errc) noexcept; 25082: 25082: template 25082: struct hash; 25082: 25082: 25082: 25082: struct error_code 25082: { 25082: error_code() noexcept 25082: : _M_value(0), _M_cat(&system_category()) { } 25082: 25082: error_code(int __v, const error_category& __cat) noexcept 25082: : _M_value(__v), _M_cat(&__cat) { } 25082: 25082: template::value>::type> 25082: error_code(_ErrorCodeEnum __e) noexcept 25082: { *this = make_error_code(__e); } 25082: 25082: void 25082: assign(int __v, const error_category& __cat) noexcept 25082: { 25082: _M_value = __v; 25082: _M_cat = &__cat; 25082: } 25082: 25082: void 25082: clear() noexcept 25082: { assign(0, system_category()); } 25082: 25082: 25082: template 25082: typename enable_if::value, 25082: error_code&>::type 25082: operator=(_ErrorCodeEnum __e) noexcept 25082: { return *this = make_error_code(__e); } 25082: 25082: int 25082: value() const noexcept { return _M_value; } 25082: 25082: const error_category& 25082: category() const noexcept { return *_M_cat; } 25082: 25082: error_condition 25082: default_error_condition() const noexcept; 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: string 25082: message() const 25082: { return category().message(value()); } 25082: 25082: explicit operator bool() const noexcept 25082: { return _M_value != 0; } 25082: 25082: 25082: private: 25082: friend class hash; 25082: 25082: int _M_value; 25082: const error_category* _M_cat; 25082: }; 25082: 25082: 25082: inline error_code 25082: make_error_code(errc __e) noexcept 25082: { return error_code(static_cast(__e), generic_category()); } 25082: 25082: inline bool 25082: operator<(const error_code& __lhs, const error_code& __rhs) noexcept 25082: { 25082: return (__lhs.category() < __rhs.category() 25082: || (__lhs.category() == __rhs.category() 25082: && __lhs.value() < __rhs.value())); 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) 25082: { return (__os << __e.category().name() << ':' << __e.value()); } 25082: 25082: error_condition make_error_condition(errc) noexcept; 25082: 25082: 25082: 25082: struct error_condition 25082: { 25082: error_condition() noexcept 25082: : _M_value(0), _M_cat(&generic_category()) { } 25082: 25082: error_condition(int __v, const error_category& __cat) noexcept 25082: : _M_value(__v), _M_cat(&__cat) { } 25082: 25082: template::value>::type> 25082: error_condition(_ErrorConditionEnum __e) noexcept 25082: { *this = make_error_condition(__e); } 25082: 25082: void 25082: assign(int __v, const error_category& __cat) noexcept 25082: { 25082: _M_value = __v; 25082: _M_cat = &__cat; 25082: } 25082: 25082: 25082: template 25082: typename enable_if::value, error_condition&>::type 25082: operator=(_ErrorConditionEnum __e) noexcept 25082: { return *this = make_error_condition(__e); } 25082: 25082: void 25082: clear() noexcept 25082: { assign(0, generic_category()); } 25082: 25082: 25082: int 25082: value() const noexcept { return _M_value; } 25082: 25082: const error_category& 25082: category() const noexcept { return *_M_cat; } 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: string 25082: message() const 25082: { return category().message(value()); } 25082: 25082: explicit operator bool() const noexcept 25082: { return _M_value != 0; } 25082: 25082: 25082: private: 25082: int _M_value; 25082: const error_category* _M_cat; 25082: }; 25082: 25082: 25082: inline error_condition 25082: make_error_condition(errc __e) noexcept 25082: { return error_condition(static_cast(__e), generic_category()); } 25082: 25082: inline bool 25082: operator<(const error_condition& __lhs, 25082: const error_condition& __rhs) noexcept 25082: { 25082: return (__lhs.category() < __rhs.category() 25082: || (__lhs.category() == __rhs.category() 25082: && __lhs.value() < __rhs.value())); 25082: } 25082: 25082: 25082: inline bool 25082: operator==(const error_code& __lhs, const error_code& __rhs) noexcept 25082: { return (__lhs.category() == __rhs.category() 25082: && __lhs.value() == __rhs.value()); } 25082: 25082: inline bool 25082: operator==(const error_code& __lhs, const error_condition& __rhs) noexcept 25082: { 25082: return (__lhs.category().equivalent(__lhs.value(), __rhs) 25082: || __rhs.category().equivalent(__lhs, __rhs.value())); 25082: } 25082: 25082: inline bool 25082: operator==(const error_condition& __lhs, const error_code& __rhs) noexcept 25082: { 25082: return (__rhs.category().equivalent(__rhs.value(), __lhs) 25082: || __lhs.category().equivalent(__rhs, __lhs.value())); 25082: } 25082: 25082: inline bool 25082: operator==(const error_condition& __lhs, 25082: const error_condition& __rhs) noexcept 25082: { 25082: return (__lhs.category() == __rhs.category() 25082: && __lhs.value() == __rhs.value()); 25082: } 25082: 25082: inline bool 25082: operator!=(const error_code& __lhs, const error_code& __rhs) noexcept 25082: { return !(__lhs == __rhs); } 25082: 25082: inline bool 25082: operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept 25082: { return !(__lhs == __rhs); } 25082: 25082: inline bool 25082: operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept 25082: { return !(__lhs == __rhs); } 25082: 25082: inline bool 25082: operator!=(const error_condition& __lhs, 25082: const error_condition& __rhs) noexcept 25082: { return !(__lhs == __rhs); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: class system_error : public std::runtime_error 25082: { 25082: private: 25082: error_code _M_code; 25082: 25082: public: 25082: system_error(error_code __ec = error_code()) 25082: : runtime_error(__ec.message()), _M_code(__ec) { } 25082: 25082: system_error(error_code __ec, const string& __what) 25082: : runtime_error(__what + ": " + __ec.message()), _M_code(__ec) { } 25082: 25082: system_error(error_code __ec, const char* __what) 25082: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } 25082: 25082: system_error(int __v, const error_category& __ecat, const char* __what) 25082: : system_error(error_code(__v, __ecat), __what) { } 25082: 25082: system_error(int __v, const error_category& __ecat) 25082: : runtime_error(error_code(__v, __ecat).message()), 25082: _M_code(__v, __ecat) { } 25082: 25082: system_error(int __v, const error_category& __ecat, const string& __what) 25082: : runtime_error(__what + ": " + error_code(__v, __ecat).message()), 25082: _M_code(__v, __ecat) { } 25082: 25082: virtual ~system_error() noexcept; 25082: 25082: const error_code& 25082: code() const noexcept { return _M_code; } 25082: }; 25082: 25082: 25082: } 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: size_t 25082: operator()(const error_code& __e) const noexcept 25082: { 25082: const size_t __tmp = std::_Hash_impl::hash(__e._M_value); 25082: return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: struct hash 25082: : public __hash_base 25082: { 25082: size_t 25082: operator()(const error_condition& __e) const noexcept 25082: { 25082: const size_t __tmp = std::_Hash_impl::hash(__e.value()); 25082: return std::_Hash_impl::__hash_combine(__e.category(), __tmp); 25082: } 25082: }; 25082: 25082: 25082: 25082: } 25082: # 47 "/usr/include/c++/8/bits/ios_base.h" 2 3 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: enum _Ios_Fmtflags 25082: { 25082: _S_boolalpha = 1L << 0, 25082: _S_dec = 1L << 1, 25082: _S_fixed = 1L << 2, 25082: _S_hex = 1L << 3, 25082: _S_internal = 1L << 4, 25082: _S_left = 1L << 5, 25082: _S_oct = 1L << 6, 25082: _S_right = 1L << 7, 25082: _S_scientific = 1L << 8, 25082: _S_showbase = 1L << 9, 25082: _S_showpoint = 1L << 10, 25082: _S_showpos = 1L << 11, 25082: _S_skipws = 1L << 12, 25082: _S_unitbuf = 1L << 13, 25082: _S_uppercase = 1L << 14, 25082: _S_adjustfield = _S_left | _S_right | _S_internal, 25082: _S_basefield = _S_dec | _S_oct | _S_hex, 25082: _S_floatfield = _S_scientific | _S_fixed, 25082: _S_ios_fmtflags_end = 1L << 16, 25082: _S_ios_fmtflags_max = 0x7fffffff, 25082: _S_ios_fmtflags_min = ~0x7fffffff 25082: }; 25082: 25082: inline constexpr _Ios_Fmtflags 25082: operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 25082: { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } 25082: 25082: inline constexpr _Ios_Fmtflags 25082: operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 25082: { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } 25082: 25082: inline constexpr _Ios_Fmtflags 25082: operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 25082: { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } 25082: 25082: inline constexpr _Ios_Fmtflags 25082: operator~(_Ios_Fmtflags __a) 25082: { return _Ios_Fmtflags(~static_cast(__a)); } 25082: 25082: inline const _Ios_Fmtflags& 25082: operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 25082: { return __a = __a | __b; } 25082: 25082: inline const _Ios_Fmtflags& 25082: operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 25082: { return __a = __a & __b; } 25082: 25082: inline const _Ios_Fmtflags& 25082: operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 25082: { return __a = __a ^ __b; } 25082: 25082: 25082: enum _Ios_Openmode 25082: { 25082: _S_app = 1L << 0, 25082: _S_ate = 1L << 1, 25082: _S_bin = 1L << 2, 25082: _S_in = 1L << 3, 25082: _S_out = 1L << 4, 25082: _S_trunc = 1L << 5, 25082: _S_ios_openmode_end = 1L << 16, 25082: _S_ios_openmode_max = 0x7fffffff, 25082: _S_ios_openmode_min = ~0x7fffffff 25082: }; 25082: 25082: inline constexpr _Ios_Openmode 25082: operator&(_Ios_Openmode __a, _Ios_Openmode __b) 25082: { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } 25082: 25082: inline constexpr _Ios_Openmode 25082: operator|(_Ios_Openmode __a, _Ios_Openmode __b) 25082: { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } 25082: 25082: inline constexpr _Ios_Openmode 25082: operator^(_Ios_Openmode __a, _Ios_Openmode __b) 25082: { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } 25082: 25082: inline constexpr _Ios_Openmode 25082: operator~(_Ios_Openmode __a) 25082: { return _Ios_Openmode(~static_cast(__a)); } 25082: 25082: inline const _Ios_Openmode& 25082: operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) 25082: { return __a = __a | __b; } 25082: 25082: inline const _Ios_Openmode& 25082: operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) 25082: { return __a = __a & __b; } 25082: 25082: inline const _Ios_Openmode& 25082: operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) 25082: { return __a = __a ^ __b; } 25082: 25082: 25082: enum _Ios_Iostate 25082: { 25082: _S_goodbit = 0, 25082: _S_badbit = 1L << 0, 25082: _S_eofbit = 1L << 1, 25082: _S_failbit = 1L << 2, 25082: _S_ios_iostate_end = 1L << 16, 25082: _S_ios_iostate_max = 0x7fffffff, 25082: _S_ios_iostate_min = ~0x7fffffff 25082: }; 25082: 25082: inline constexpr _Ios_Iostate 25082: operator&(_Ios_Iostate __a, _Ios_Iostate __b) 25082: { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } 25082: 25082: inline constexpr _Ios_Iostate 25082: operator|(_Ios_Iostate __a, _Ios_Iostate __b) 25082: { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } 25082: 25082: inline constexpr _Ios_Iostate 25082: operator^(_Ios_Iostate __a, _Ios_Iostate __b) 25082: { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } 25082: 25082: inline constexpr _Ios_Iostate 25082: operator~(_Ios_Iostate __a) 25082: { return _Ios_Iostate(~static_cast(__a)); } 25082: 25082: inline const _Ios_Iostate& 25082: operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) 25082: { return __a = __a | __b; } 25082: 25082: inline const _Ios_Iostate& 25082: operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) 25082: { return __a = __a & __b; } 25082: 25082: inline const _Ios_Iostate& 25082: operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) 25082: { return __a = __a ^ __b; } 25082: 25082: 25082: enum _Ios_Seekdir 25082: { 25082: _S_beg = 0, 25082: _S_cur = 1, 25082: _S_end = 2, 25082: _S_ios_seekdir_end = 1L << 16 25082: }; 25082: 25082: 25082: 25082: enum class io_errc { stream = 1 }; 25082: 25082: template <> struct is_error_code_enum : public true_type { }; 25082: 25082: const error_category& iostream_category() noexcept; 25082: 25082: inline error_code 25082: make_error_code(io_errc __e) noexcept 25082: { return error_code(static_cast(__e), iostream_category()); } 25082: 25082: inline error_condition 25082: make_error_condition(io_errc __e) noexcept 25082: { return error_condition(static_cast(__e), iostream_category()); } 25082: # 228 "/usr/include/c++/8/bits/ios_base.h" 3 25082: class ios_base 25082: { 25082: # 246 "/usr/include/c++/8/bits/ios_base.h" 3 25082: public: 25082: # 255 "/usr/include/c++/8/bits/ios_base.h" 3 25082: class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error 25082: { 25082: public: 25082: explicit 25082: failure(const string& __str); 25082: 25082: 25082: explicit 25082: failure(const string&, const error_code&); 25082: 25082: explicit 25082: failure(const char*, const error_code& = io_errc::stream); 25082: 25082: 25082: virtual 25082: ~failure() throw(); 25082: 25082: virtual const char* 25082: what() const throw(); 25082: }; 25082: # 323 "/usr/include/c++/8/bits/ios_base.h" 3 25082: typedef _Ios_Fmtflags fmtflags; 25082: 25082: 25082: static const fmtflags boolalpha = _S_boolalpha; 25082: 25082: 25082: static const fmtflags dec = _S_dec; 25082: 25082: 25082: static const fmtflags fixed = _S_fixed; 25082: 25082: 25082: static const fmtflags hex = _S_hex; 25082: 25082: 25082: 25082: 25082: static const fmtflags internal = _S_internal; 25082: 25082: 25082: 25082: static const fmtflags left = _S_left; 25082: 25082: 25082: static const fmtflags oct = _S_oct; 25082: 25082: 25082: 25082: static const fmtflags right = _S_right; 25082: 25082: 25082: static const fmtflags scientific = _S_scientific; 25082: 25082: 25082: 25082: static const fmtflags showbase = _S_showbase; 25082: 25082: 25082: 25082: static const fmtflags showpoint = _S_showpoint; 25082: 25082: 25082: static const fmtflags showpos = _S_showpos; 25082: 25082: 25082: static const fmtflags skipws = _S_skipws; 25082: 25082: 25082: static const fmtflags unitbuf = _S_unitbuf; 25082: 25082: 25082: 25082: static const fmtflags uppercase = _S_uppercase; 25082: 25082: 25082: static const fmtflags adjustfield = _S_adjustfield; 25082: 25082: 25082: static const fmtflags basefield = _S_basefield; 25082: 25082: 25082: static const fmtflags floatfield = _S_floatfield; 25082: # 398 "/usr/include/c++/8/bits/ios_base.h" 3 25082: typedef _Ios_Iostate iostate; 25082: 25082: 25082: 25082: static const iostate badbit = _S_badbit; 25082: 25082: 25082: static const iostate eofbit = _S_eofbit; 25082: 25082: 25082: 25082: 25082: static const iostate failbit = _S_failbit; 25082: 25082: 25082: static const iostate goodbit = _S_goodbit; 25082: # 429 "/usr/include/c++/8/bits/ios_base.h" 3 25082: typedef _Ios_Openmode openmode; 25082: 25082: 25082: static const openmode app = _S_app; 25082: 25082: 25082: static const openmode ate = _S_ate; 25082: 25082: 25082: 25082: 25082: static const openmode binary = _S_bin; 25082: 25082: 25082: static const openmode in = _S_in; 25082: 25082: 25082: static const openmode out = _S_out; 25082: 25082: 25082: static const openmode trunc = _S_trunc; 25082: # 461 "/usr/include/c++/8/bits/ios_base.h" 3 25082: typedef _Ios_Seekdir seekdir; 25082: 25082: 25082: static const seekdir beg = _S_beg; 25082: 25082: 25082: static const seekdir cur = _S_cur; 25082: 25082: 25082: static const seekdir end = _S_end; 25082: # 489 "/usr/include/c++/8/bits/ios_base.h" 3 25082: enum event 25082: { 25082: erase_event, 25082: imbue_event, 25082: copyfmt_event 25082: }; 25082: # 506 "/usr/include/c++/8/bits/ios_base.h" 3 25082: typedef void (*event_callback) (event __e, ios_base& __b, int __i); 25082: # 518 "/usr/include/c++/8/bits/ios_base.h" 3 25082: void 25082: register_callback(event_callback __fn, int __index); 25082: 25082: protected: 25082: streamsize _M_precision; 25082: streamsize _M_width; 25082: fmtflags _M_flags; 25082: iostate _M_exception; 25082: iostate _M_streambuf_state; 25082: 25082: 25082: 25082: struct _Callback_list 25082: { 25082: 25082: _Callback_list* _M_next; 25082: ios_base::event_callback _M_fn; 25082: int _M_index; 25082: _Atomic_word _M_refcount; 25082: 25082: _Callback_list(ios_base::event_callback __fn, int __index, 25082: _Callback_list* __cb) 25082: : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } 25082: 25082: void 25082: _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 25082: 25082: 25082: int 25082: _M_remove_reference() 25082: { 25082: 25082: ; 25082: int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); 25082: if (__res == 0) 25082: { 25082: ; 25082: } 25082: return __res; 25082: } 25082: }; 25082: 25082: _Callback_list* _M_callbacks; 25082: 25082: void 25082: _M_call_callbacks(event __ev) throw(); 25082: 25082: void 25082: _M_dispose_callbacks(void) throw(); 25082: 25082: 25082: struct _Words 25082: { 25082: void* _M_pword; 25082: long _M_iword; 25082: _Words() : _M_pword(0), _M_iword(0) { } 25082: }; 25082: 25082: 25082: _Words _M_word_zero; 25082: 25082: 25082: 25082: enum { _S_local_word_size = 8 }; 25082: _Words _M_local_word[_S_local_word_size]; 25082: 25082: 25082: int _M_word_size; 25082: _Words* _M_word; 25082: 25082: _Words& 25082: _M_grow_words(int __index, bool __iword); 25082: 25082: 25082: locale _M_ios_locale; 25082: 25082: void 25082: _M_init() throw(); 25082: 25082: public: 25082: 25082: 25082: 25082: 25082: 25082: class Init 25082: { 25082: friend class ios_base; 25082: public: 25082: Init(); 25082: ~Init(); 25082: 25082: private: 25082: static _Atomic_word _S_refcount; 25082: static bool _S_synced_with_stdio; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: fmtflags 25082: flags() const 25082: { return _M_flags; } 25082: # 631 "/usr/include/c++/8/bits/ios_base.h" 3 25082: fmtflags 25082: flags(fmtflags __fmtfl) 25082: { 25082: fmtflags __old = _M_flags; 25082: _M_flags = __fmtfl; 25082: return __old; 25082: } 25082: # 647 "/usr/include/c++/8/bits/ios_base.h" 3 25082: fmtflags 25082: setf(fmtflags __fmtfl) 25082: { 25082: fmtflags __old = _M_flags; 25082: _M_flags |= __fmtfl; 25082: return __old; 25082: } 25082: # 664 "/usr/include/c++/8/bits/ios_base.h" 3 25082: fmtflags 25082: setf(fmtflags __fmtfl, fmtflags __mask) 25082: { 25082: fmtflags __old = _M_flags; 25082: _M_flags &= ~__mask; 25082: _M_flags |= (__fmtfl & __mask); 25082: return __old; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: unsetf(fmtflags __mask) 25082: { _M_flags &= ~__mask; } 25082: # 690 "/usr/include/c++/8/bits/ios_base.h" 3 25082: streamsize 25082: precision() const 25082: { return _M_precision; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: streamsize 25082: precision(streamsize __prec) 25082: { 25082: streamsize __old = _M_precision; 25082: _M_precision = __prec; 25082: return __old; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: streamsize 25082: width() const 25082: { return _M_width; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: streamsize 25082: width(streamsize __wide) 25082: { 25082: streamsize __old = _M_width; 25082: _M_width = __wide; 25082: return __old; 25082: } 25082: # 741 "/usr/include/c++/8/bits/ios_base.h" 3 25082: static bool 25082: sync_with_stdio(bool __sync = true); 25082: # 753 "/usr/include/c++/8/bits/ios_base.h" 3 25082: locale 25082: imbue(const locale& __loc) throw(); 25082: # 764 "/usr/include/c++/8/bits/ios_base.h" 3 25082: locale 25082: getloc() const 25082: { return _M_ios_locale; } 25082: # 775 "/usr/include/c++/8/bits/ios_base.h" 3 25082: const locale& 25082: _M_getloc() const 25082: { return _M_ios_locale; } 25082: # 794 "/usr/include/c++/8/bits/ios_base.h" 3 25082: static int 25082: xalloc() throw(); 25082: # 810 "/usr/include/c++/8/bits/ios_base.h" 3 25082: long& 25082: iword(int __ix) 25082: { 25082: _Words& __word = (__ix < _M_word_size) 25082: ? _M_word[__ix] : _M_grow_words(__ix, true); 25082: return __word._M_iword; 25082: } 25082: # 831 "/usr/include/c++/8/bits/ios_base.h" 3 25082: void*& 25082: pword(int __ix) 25082: { 25082: _Words& __word = (__ix < _M_word_size) 25082: ? _M_word[__ix] : _M_grow_words(__ix, false); 25082: return __word._M_pword; 25082: } 25082: # 848 "/usr/include/c++/8/bits/ios_base.h" 3 25082: virtual ~ios_base(); 25082: 25082: protected: 25082: ios_base() throw (); 25082: # 862 "/usr/include/c++/8/bits/ios_base.h" 3 25082: public: 25082: ios_base(const ios_base&) = delete; 25082: 25082: ios_base& 25082: operator=(const ios_base&) = delete; 25082: 25082: protected: 25082: void 25082: _M_move(ios_base&) noexcept; 25082: 25082: void 25082: _M_swap(ios_base& __rhs) noexcept; 25082: 25082: }; 25082: 25082: 25082: 25082: inline ios_base& 25082: boolalpha(ios_base& __base) 25082: { 25082: __base.setf(ios_base::boolalpha); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: noboolalpha(ios_base& __base) 25082: { 25082: __base.unsetf(ios_base::boolalpha); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: showbase(ios_base& __base) 25082: { 25082: __base.setf(ios_base::showbase); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: noshowbase(ios_base& __base) 25082: { 25082: __base.unsetf(ios_base::showbase); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: showpoint(ios_base& __base) 25082: { 25082: __base.setf(ios_base::showpoint); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: noshowpoint(ios_base& __base) 25082: { 25082: __base.unsetf(ios_base::showpoint); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: showpos(ios_base& __base) 25082: { 25082: __base.setf(ios_base::showpos); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: noshowpos(ios_base& __base) 25082: { 25082: __base.unsetf(ios_base::showpos); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: skipws(ios_base& __base) 25082: { 25082: __base.setf(ios_base::skipws); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: noskipws(ios_base& __base) 25082: { 25082: __base.unsetf(ios_base::skipws); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: uppercase(ios_base& __base) 25082: { 25082: __base.setf(ios_base::uppercase); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: nouppercase(ios_base& __base) 25082: { 25082: __base.unsetf(ios_base::uppercase); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: unitbuf(ios_base& __base) 25082: { 25082: __base.setf(ios_base::unitbuf); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: nounitbuf(ios_base& __base) 25082: { 25082: __base.unsetf(ios_base::unitbuf); 25082: return __base; 25082: } 25082: 25082: 25082: 25082: inline ios_base& 25082: internal(ios_base& __base) 25082: { 25082: __base.setf(ios_base::internal, ios_base::adjustfield); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: left(ios_base& __base) 25082: { 25082: __base.setf(ios_base::left, ios_base::adjustfield); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: right(ios_base& __base) 25082: { 25082: __base.setf(ios_base::right, ios_base::adjustfield); 25082: return __base; 25082: } 25082: 25082: 25082: 25082: inline ios_base& 25082: dec(ios_base& __base) 25082: { 25082: __base.setf(ios_base::dec, ios_base::basefield); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: hex(ios_base& __base) 25082: { 25082: __base.setf(ios_base::hex, ios_base::basefield); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: oct(ios_base& __base) 25082: { 25082: __base.setf(ios_base::oct, ios_base::basefield); 25082: return __base; 25082: } 25082: 25082: 25082: 25082: inline ios_base& 25082: fixed(ios_base& __base) 25082: { 25082: __base.setf(ios_base::fixed, ios_base::floatfield); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: scientific(ios_base& __base) 25082: { 25082: __base.setf(ios_base::scientific, ios_base::floatfield); 25082: return __base; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline ios_base& 25082: hexfloat(ios_base& __base) 25082: { 25082: __base.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); 25082: return __base; 25082: } 25082: 25082: 25082: inline ios_base& 25082: defaultfloat(ios_base& __base) 25082: { 25082: __base.unsetf(ios_base::floatfield); 25082: return __base; 25082: } 25082: 25082: 25082: 25082: } 25082: # 43 "/usr/include/c++/8/ios" 2 3 25082: # 1 "/usr/include/c++/8/streambuf" 1 3 25082: # 36 "/usr/include/c++/8/streambuf" 3 25082: 25082: # 37 "/usr/include/c++/8/streambuf" 3 25082: # 45 "/usr/include/c++/8/streambuf" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: template 25082: streamsize 25082: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, 25082: basic_streambuf<_CharT, _Traits>*, bool&); 25082: # 121 "/usr/include/c++/8/streambuf" 3 25082: template 25082: class basic_streambuf 25082: { 25082: public: 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef _Traits traits_type; 25082: typedef typename traits_type::int_type int_type; 25082: typedef typename traits_type::pos_type pos_type; 25082: typedef typename traits_type::off_type off_type; 25082: 25082: 25082: 25082: 25082: typedef basic_streambuf __streambuf_type; 25082: 25082: 25082: friend class basic_ios; 25082: friend class basic_istream; 25082: friend class basic_ostream; 25082: friend class istreambuf_iterator; 25082: friend class ostreambuf_iterator; 25082: 25082: friend streamsize 25082: __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); 25082: 25082: template 25082: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 25082: _CharT2*>::__type 25082: __copy_move_a2(istreambuf_iterator<_CharT2>, 25082: istreambuf_iterator<_CharT2>, _CharT2*); 25082: 25082: template 25082: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 25082: istreambuf_iterator<_CharT2> >::__type 25082: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 25082: const _CharT2&); 25082: 25082: template 25082: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 25082: void>::__type 25082: advance(istreambuf_iterator<_CharT2>&, _Distance); 25082: 25082: template 25082: friend basic_istream<_CharT2, _Traits2>& 25082: operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); 25082: 25082: template 25082: friend basic_istream<_CharT2, _Traits2>& 25082: operator>>(basic_istream<_CharT2, _Traits2>&, 25082: basic_string<_CharT2, _Traits2, _Alloc>&); 25082: 25082: template 25082: friend basic_istream<_CharT2, _Traits2>& 25082: getline(basic_istream<_CharT2, _Traits2>&, 25082: basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); 25082: 25082: protected: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: char_type* _M_in_beg; 25082: char_type* _M_in_cur; 25082: char_type* _M_in_end; 25082: char_type* _M_out_beg; 25082: char_type* _M_out_cur; 25082: char_type* _M_out_end; 25082: 25082: 25082: locale _M_buf_locale; 25082: 25082: public: 25082: 25082: virtual 25082: ~basic_streambuf() 25082: { } 25082: # 215 "/usr/include/c++/8/streambuf" 3 25082: locale 25082: pubimbue(const locale& __loc) 25082: { 25082: locale __tmp(this->getloc()); 25082: this->imbue(__loc); 25082: _M_buf_locale = __loc; 25082: return __tmp; 25082: } 25082: # 232 "/usr/include/c++/8/streambuf" 3 25082: locale 25082: getloc() const 25082: { return _M_buf_locale; } 25082: # 245 "/usr/include/c++/8/streambuf" 3 25082: basic_streambuf* 25082: pubsetbuf(char_type* __s, streamsize __n) 25082: { return this->setbuf(__s, __n); } 25082: # 257 "/usr/include/c++/8/streambuf" 3 25082: pos_type 25082: pubseekoff(off_type __off, ios_base::seekdir __way, 25082: ios_base::openmode __mode = ios_base::in | ios_base::out) 25082: { return this->seekoff(__off, __way, __mode); } 25082: # 269 "/usr/include/c++/8/streambuf" 3 25082: pos_type 25082: pubseekpos(pos_type __sp, 25082: ios_base::openmode __mode = ios_base::in | ios_base::out) 25082: { return this->seekpos(__sp, __mode); } 25082: 25082: 25082: 25082: 25082: int 25082: pubsync() { return this->sync(); } 25082: # 290 "/usr/include/c++/8/streambuf" 3 25082: streamsize 25082: in_avail() 25082: { 25082: const streamsize __ret = this->egptr() - this->gptr(); 25082: return __ret ? __ret : this->showmanyc(); 25082: } 25082: # 304 "/usr/include/c++/8/streambuf" 3 25082: int_type 25082: snextc() 25082: { 25082: int_type __ret = traits_type::eof(); 25082: if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), 25082: __ret), true)) 25082: __ret = this->sgetc(); 25082: return __ret; 25082: } 25082: # 322 "/usr/include/c++/8/streambuf" 3 25082: int_type 25082: sbumpc() 25082: { 25082: int_type __ret; 25082: if (__builtin_expect(this->gptr() < this->egptr(), true)) 25082: { 25082: __ret = traits_type::to_int_type(*this->gptr()); 25082: this->gbump(1); 25082: } 25082: else 25082: __ret = this->uflow(); 25082: return __ret; 25082: } 25082: # 344 "/usr/include/c++/8/streambuf" 3 25082: int_type 25082: sgetc() 25082: { 25082: int_type __ret; 25082: if (__builtin_expect(this->gptr() < this->egptr(), true)) 25082: __ret = traits_type::to_int_type(*this->gptr()); 25082: else 25082: __ret = this->underflow(); 25082: return __ret; 25082: } 25082: # 363 "/usr/include/c++/8/streambuf" 3 25082: streamsize 25082: sgetn(char_type* __s, streamsize __n) 25082: { return this->xsgetn(__s, __n); } 25082: # 378 "/usr/include/c++/8/streambuf" 3 25082: int_type 25082: sputbackc(char_type __c) 25082: { 25082: int_type __ret; 25082: const bool __testpos = this->eback() < this->gptr(); 25082: if (__builtin_expect(!__testpos || 25082: !traits_type::eq(__c, this->gptr()[-1]), false)) 25082: __ret = this->pbackfail(traits_type::to_int_type(__c)); 25082: else 25082: { 25082: this->gbump(-1); 25082: __ret = traits_type::to_int_type(*this->gptr()); 25082: } 25082: return __ret; 25082: } 25082: # 403 "/usr/include/c++/8/streambuf" 3 25082: int_type 25082: sungetc() 25082: { 25082: int_type __ret; 25082: if (__builtin_expect(this->eback() < this->gptr(), true)) 25082: { 25082: this->gbump(-1); 25082: __ret = traits_type::to_int_type(*this->gptr()); 25082: } 25082: else 25082: __ret = this->pbackfail(); 25082: return __ret; 25082: } 25082: # 430 "/usr/include/c++/8/streambuf" 3 25082: int_type 25082: sputc(char_type __c) 25082: { 25082: int_type __ret; 25082: if (__builtin_expect(this->pptr() < this->epptr(), true)) 25082: { 25082: *this->pptr() = __c; 25082: this->pbump(1); 25082: __ret = traits_type::to_int_type(__c); 25082: } 25082: else 25082: __ret = this->overflow(traits_type::to_int_type(__c)); 25082: return __ret; 25082: } 25082: # 456 "/usr/include/c++/8/streambuf" 3 25082: streamsize 25082: sputn(const char_type* __s, streamsize __n) 25082: { return this->xsputn(__s, __n); } 25082: 25082: protected: 25082: # 470 "/usr/include/c++/8/streambuf" 3 25082: basic_streambuf() 25082: : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), 25082: _M_out_beg(0), _M_out_cur(0), _M_out_end(0), 25082: _M_buf_locale(locale()) 25082: { } 25082: # 488 "/usr/include/c++/8/streambuf" 3 25082: char_type* 25082: eback() const { return _M_in_beg; } 25082: 25082: char_type* 25082: gptr() const { return _M_in_cur; } 25082: 25082: char_type* 25082: egptr() const { return _M_in_end; } 25082: # 504 "/usr/include/c++/8/streambuf" 3 25082: void 25082: gbump(int __n) { _M_in_cur += __n; } 25082: # 515 "/usr/include/c++/8/streambuf" 3 25082: void 25082: setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) 25082: { 25082: _M_in_beg = __gbeg; 25082: _M_in_cur = __gnext; 25082: _M_in_end = __gend; 25082: } 25082: # 535 "/usr/include/c++/8/streambuf" 3 25082: char_type* 25082: pbase() const { return _M_out_beg; } 25082: 25082: char_type* 25082: pptr() const { return _M_out_cur; } 25082: 25082: char_type* 25082: epptr() const { return _M_out_end; } 25082: # 551 "/usr/include/c++/8/streambuf" 3 25082: void 25082: pbump(int __n) { _M_out_cur += __n; } 25082: # 561 "/usr/include/c++/8/streambuf" 3 25082: void 25082: setp(char_type* __pbeg, char_type* __pend) 25082: { 25082: _M_out_beg = _M_out_cur = __pbeg; 25082: _M_out_end = __pend; 25082: } 25082: # 582 "/usr/include/c++/8/streambuf" 3 25082: virtual void 25082: imbue(const locale& __loc __attribute__ ((__unused__))) 25082: { } 25082: # 597 "/usr/include/c++/8/streambuf" 3 25082: virtual basic_streambuf* 25082: setbuf(char_type*, streamsize) 25082: { return this; } 25082: # 608 "/usr/include/c++/8/streambuf" 3 25082: virtual pos_type 25082: seekoff(off_type, ios_base::seekdir, 25082: ios_base::openmode = ios_base::in | ios_base::out) 25082: { return pos_type(off_type(-1)); } 25082: # 620 "/usr/include/c++/8/streambuf" 3 25082: virtual pos_type 25082: seekpos(pos_type, 25082: ios_base::openmode = ios_base::in | ios_base::out) 25082: { return pos_type(off_type(-1)); } 25082: # 633 "/usr/include/c++/8/streambuf" 3 25082: virtual int 25082: sync() { return 0; } 25082: # 655 "/usr/include/c++/8/streambuf" 3 25082: virtual streamsize 25082: showmanyc() { return 0; } 25082: # 671 "/usr/include/c++/8/streambuf" 3 25082: virtual streamsize 25082: xsgetn(char_type* __s, streamsize __n); 25082: # 693 "/usr/include/c++/8/streambuf" 3 25082: virtual int_type 25082: underflow() 25082: { return traits_type::eof(); } 25082: # 706 "/usr/include/c++/8/streambuf" 3 25082: virtual int_type 25082: uflow() 25082: { 25082: int_type __ret = traits_type::eof(); 25082: const bool __testeof = traits_type::eq_int_type(this->underflow(), 25082: __ret); 25082: if (!__testeof) 25082: { 25082: __ret = traits_type::to_int_type(*this->gptr()); 25082: this->gbump(1); 25082: } 25082: return __ret; 25082: } 25082: # 730 "/usr/include/c++/8/streambuf" 3 25082: virtual int_type 25082: pbackfail(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) 25082: { return traits_type::eof(); } 25082: # 748 "/usr/include/c++/8/streambuf" 3 25082: virtual streamsize 25082: xsputn(const char_type* __s, streamsize __n); 25082: # 774 "/usr/include/c++/8/streambuf" 3 25082: virtual int_type 25082: overflow(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) 25082: { return traits_type::eof(); } 25082: # 803 "/usr/include/c++/8/streambuf" 3 25082: void 25082: __safe_gbump(streamsize __n) { _M_in_cur += __n; } 25082: 25082: void 25082: __safe_pbump(streamsize __n) { _M_out_cur += __n; } 25082: 25082: 25082: 25082: 25082: protected: 25082: 25082: basic_streambuf(const basic_streambuf&); 25082: 25082: basic_streambuf& 25082: operator=(const basic_streambuf&); 25082: 25082: 25082: void 25082: swap(basic_streambuf& __sb) 25082: { 25082: std::swap(_M_in_beg, __sb._M_in_beg); 25082: std::swap(_M_in_cur, __sb._M_in_cur); 25082: std::swap(_M_in_end, __sb._M_in_end); 25082: std::swap(_M_out_beg, __sb._M_out_beg); 25082: std::swap(_M_out_cur, __sb._M_out_cur); 25082: std::swap(_M_out_end, __sb._M_out_end); 25082: std::swap(_M_buf_locale, __sb._M_buf_locale); 25082: } 25082: 25082: }; 25082: 25082: 25082: template 25082: std::basic_streambuf<_CharT, _Traits>:: 25082: basic_streambuf(const basic_streambuf&) = default; 25082: 25082: template 25082: std::basic_streambuf<_CharT, _Traits>& 25082: std::basic_streambuf<_CharT, _Traits>:: 25082: operator=(const basic_streambuf&) = default; 25082: 25082: 25082: 25082: template<> 25082: streamsize 25082: __copy_streambufs_eof(basic_streambuf* __sbin, 25082: basic_streambuf* __sbout, bool& __ineof); 25082: 25082: template<> 25082: streamsize 25082: __copy_streambufs_eof(basic_streambuf* __sbin, 25082: basic_streambuf* __sbout, bool& __ineof); 25082: 25082: 25082: 25082: 25082: 25082: } 25082: 25082: # 1 "/usr/include/c++/8/bits/streambuf.tcc" 1 3 25082: # 37 "/usr/include/c++/8/bits/streambuf.tcc" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/streambuf.tcc" 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: streamsize 25082: basic_streambuf<_CharT, _Traits>:: 25082: xsgetn(char_type* __s, streamsize __n) 25082: { 25082: streamsize __ret = 0; 25082: while (__ret < __n) 25082: { 25082: const streamsize __buf_len = this->egptr() - this->gptr(); 25082: if (__buf_len) 25082: { 25082: const streamsize __remaining = __n - __ret; 25082: const streamsize __len = std::min(__buf_len, __remaining); 25082: traits_type::copy(__s, this->gptr(), __len); 25082: __ret += __len; 25082: __s += __len; 25082: this->__safe_gbump(__len); 25082: } 25082: 25082: if (__ret < __n) 25082: { 25082: const int_type __c = this->uflow(); 25082: if (!traits_type::eq_int_type(__c, traits_type::eof())) 25082: { 25082: traits_type::assign(*__s++, traits_type::to_char_type(__c)); 25082: ++__ret; 25082: } 25082: else 25082: break; 25082: } 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: streamsize 25082: basic_streambuf<_CharT, _Traits>:: 25082: xsputn(const char_type* __s, streamsize __n) 25082: { 25082: streamsize __ret = 0; 25082: while (__ret < __n) 25082: { 25082: const streamsize __buf_len = this->epptr() - this->pptr(); 25082: if (__buf_len) 25082: { 25082: const streamsize __remaining = __n - __ret; 25082: const streamsize __len = std::min(__buf_len, __remaining); 25082: traits_type::copy(this->pptr(), __s, __len); 25082: __ret += __len; 25082: __s += __len; 25082: this->__safe_pbump(__len); 25082: } 25082: 25082: if (__ret < __n) 25082: { 25082: int_type __c = this->overflow(traits_type::to_int_type(*__s)); 25082: if (!traits_type::eq_int_type(__c, traits_type::eof())) 25082: { 25082: ++__ret; 25082: ++__s; 25082: } 25082: else 25082: break; 25082: } 25082: } 25082: return __ret; 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: streamsize 25082: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, 25082: basic_streambuf<_CharT, _Traits>* __sbout, 25082: bool& __ineof) 25082: { 25082: streamsize __ret = 0; 25082: __ineof = true; 25082: typename _Traits::int_type __c = __sbin->sgetc(); 25082: while (!_Traits::eq_int_type(__c, _Traits::eof())) 25082: { 25082: __c = __sbout->sputc(_Traits::to_char_type(__c)); 25082: if (_Traits::eq_int_type(__c, _Traits::eof())) 25082: { 25082: __ineof = false; 25082: break; 25082: } 25082: ++__ret; 25082: __c = __sbin->snextc(); 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: inline streamsize 25082: __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, 25082: basic_streambuf<_CharT, _Traits>* __sbout) 25082: { 25082: bool __ineof; 25082: return __copy_streambufs_eof(__sbin, __sbout, __ineof); 25082: } 25082: 25082: 25082: 25082: 25082: extern template class basic_streambuf; 25082: extern template 25082: streamsize 25082: __copy_streambufs(basic_streambuf*, 25082: basic_streambuf*); 25082: extern template 25082: streamsize 25082: __copy_streambufs_eof(basic_streambuf*, 25082: basic_streambuf*, bool&); 25082: 25082: 25082: extern template class basic_streambuf; 25082: extern template 25082: streamsize 25082: __copy_streambufs(basic_streambuf*, 25082: basic_streambuf*); 25082: extern template 25082: streamsize 25082: __copy_streambufs_eof(basic_streambuf*, 25082: basic_streambuf*, bool&); 25082: 25082: 25082: 25082: 25082: } 25082: # 863 "/usr/include/c++/8/streambuf" 2 3 25082: # 44 "/usr/include/c++/8/ios" 2 3 25082: # 1 "/usr/include/c++/8/bits/basic_ios.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/locale_facets.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: 25082: # 1 "/usr/include/c++/8/cwctype" 1 3 25082: # 39 "/usr/include/c++/8/cwctype" 3 25082: 25082: # 40 "/usr/include/c++/8/cwctype" 3 25082: # 50 "/usr/include/c++/8/cwctype" 3 25082: # 1 "/usr/include/wctype.h" 1 3 4 25082: # 38 "/usr/include/wctype.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/wctype-wchar.h" 1 3 4 25082: # 38 "/usr/include/aarch64-linux-gnu/bits/wctype-wchar.h" 3 4 25082: typedef unsigned long int wctype_t; 25082: # 56 "/usr/include/aarch64-linux-gnu/bits/wctype-wchar.h" 3 4 25082: enum 25082: { 25082: __ISwupper = 0, 25082: __ISwlower = 1, 25082: __ISwalpha = 2, 25082: __ISwdigit = 3, 25082: __ISwxdigit = 4, 25082: __ISwspace = 5, 25082: __ISwprint = 6, 25082: __ISwgraph = 7, 25082: __ISwblank = 8, 25082: __ISwcntrl = 9, 25082: __ISwpunct = 10, 25082: __ISwalnum = 11, 25082: 25082: _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), 25082: _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), 25082: _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), 25082: _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), 25082: _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), 25082: _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), 25082: _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), 25082: _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), 25082: _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), 25082: _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), 25082: _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), 25082: _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) 25082: }; 25082: 25082: 25082: 25082: extern "C" { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int iswalnum (wint_t __wc) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern int iswalpha (wint_t __wc) throw (); 25082: 25082: 25082: extern int iswcntrl (wint_t __wc) throw (); 25082: 25082: 25082: 25082: extern int iswdigit (wint_t __wc) throw (); 25082: 25082: 25082: 25082: extern int iswgraph (wint_t __wc) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswlower (wint_t __wc) throw (); 25082: 25082: 25082: extern int iswprint (wint_t __wc) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswpunct (wint_t __wc) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswspace (wint_t __wc) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswupper (wint_t __wc) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswxdigit (wint_t __wc) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern int iswblank (wint_t __wc) throw (); 25082: # 155 "/usr/include/aarch64-linux-gnu/bits/wctype-wchar.h" 3 4 25082: extern wctype_t wctype (const char *__property) throw (); 25082: 25082: 25082: 25082: extern int iswctype (wint_t __wc, wctype_t __desc) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern wint_t towlower (wint_t __wc) throw (); 25082: 25082: 25082: extern wint_t towupper (wint_t __wc) throw (); 25082: 25082: } 25082: # 39 "/usr/include/wctype.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: extern "C" { 25082: 25082: 25082: 25082: typedef const __int32_t *wctrans_t; 25082: 25082: 25082: 25082: extern wctrans_t wctrans (const char *__property) throw (); 25082: 25082: 25082: extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int iswalnum_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern int iswalpha_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: extern int iswcntrl_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: extern int iswdigit_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: extern int iswgraph_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswlower_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: extern int iswprint_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswpunct_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswspace_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswupper_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswxdigit_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: 25082: extern int iswblank_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: extern wctype_t wctype_l (const char *__property, locale_t __locale) 25082: throw (); 25082: 25082: 25082: 25082: extern int iswctype_l (wint_t __wc, wctype_t __desc, locale_t __locale) 25082: throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern wint_t towlower_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: extern wint_t towupper_l (wint_t __wc, locale_t __locale) throw (); 25082: 25082: 25082: 25082: extern wctrans_t wctrans_l (const char *__property, locale_t __locale) 25082: throw (); 25082: 25082: 25082: extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, 25082: locale_t __locale) throw (); 25082: 25082: 25082: 25082: } 25082: # 51 "/usr/include/c++/8/cwctype" 2 3 25082: # 80 "/usr/include/c++/8/cwctype" 3 25082: namespace std 25082: { 25082: using ::wctrans_t; 25082: using ::wctype_t; 25082: using ::wint_t; 25082: 25082: using ::iswalnum; 25082: using ::iswalpha; 25082: 25082: using ::iswblank; 25082: 25082: using ::iswcntrl; 25082: using ::iswctype; 25082: using ::iswdigit; 25082: using ::iswgraph; 25082: using ::iswlower; 25082: using ::iswprint; 25082: using ::iswpunct; 25082: using ::iswspace; 25082: using ::iswupper; 25082: using ::iswxdigit; 25082: using ::towctrans; 25082: using ::towlower; 25082: using ::towupper; 25082: using ::wctrans; 25082: using ::wctype; 25082: } 25082: # 40 "/usr/include/c++/8/bits/locale_facets.h" 2 3 25082: # 1 "/usr/include/c++/8/cctype" 1 3 25082: # 39 "/usr/include/c++/8/cctype" 3 25082: 25082: # 40 "/usr/include/c++/8/cctype" 3 25082: # 41 "/usr/include/c++/8/bits/locale_facets.h" 2 3 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/ctype_base.h" 1 3 25082: # 36 "/usr/include/aarch64-linux-gnu/c++/8/bits/ctype_base.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: struct ctype_base 25082: { 25082: 25082: typedef const int* __to_type; 25082: 25082: 25082: 25082: typedef unsigned short mask; 25082: static const mask upper = _ISupper; 25082: static const mask lower = _ISlower; 25082: static const mask alpha = _ISalpha; 25082: static const mask digit = _ISdigit; 25082: static const mask xdigit = _ISxdigit; 25082: static const mask space = _ISspace; 25082: static const mask print = _ISprint; 25082: static const mask graph = _ISalpha | _ISdigit | _ISpunct; 25082: static const mask cntrl = _IScntrl; 25082: static const mask punct = _ISpunct; 25082: static const mask alnum = _ISalpha | _ISdigit; 25082: 25082: static const mask blank = _ISblank; 25082: 25082: }; 25082: 25082: 25082: } 25082: # 42 "/usr/include/c++/8/bits/locale_facets.h" 2 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/streambuf_iterator.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 49 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 25082: template 25082: class istreambuf_iterator 25082: : public iterator 25082: 25082: 25082: 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef _Traits traits_type; 25082: typedef typename _Traits::int_type int_type; 25082: typedef basic_streambuf<_CharT, _Traits> streambuf_type; 25082: typedef basic_istream<_CharT, _Traits> istream_type; 25082: 25082: 25082: template 25082: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 25082: ostreambuf_iterator<_CharT2> >::__type 25082: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 25082: ostreambuf_iterator<_CharT2>); 25082: 25082: template 25082: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 25082: _CharT2*>::__type 25082: __copy_move_a2(istreambuf_iterator<_CharT2>, 25082: istreambuf_iterator<_CharT2>, _CharT2*); 25082: 25082: template 25082: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 25082: istreambuf_iterator<_CharT2> >::__type 25082: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 25082: const _CharT2&); 25082: 25082: template 25082: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 25082: void>::__type 25082: advance(istreambuf_iterator<_CharT2>&, _Distance); 25082: 25082: private: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: mutable streambuf_type* _M_sbuf; 25082: int_type _M_c; 25082: 25082: public: 25082: 25082: constexpr istreambuf_iterator() noexcept 25082: : _M_sbuf(0), _M_c(traits_type::eof()) { } 25082: 25082: 25082: istreambuf_iterator(const istreambuf_iterator&) noexcept = default; 25082: 25082: ~istreambuf_iterator() = default; 25082: 25082: 25082: 25082: istreambuf_iterator(istream_type& __s) noexcept 25082: : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } 25082: 25082: 25082: istreambuf_iterator(streambuf_type* __s) noexcept 25082: : _M_sbuf(__s), _M_c(traits_type::eof()) { } 25082: 25082: 25082: 25082: 25082: char_type 25082: operator*() const 25082: { 25082: int_type __c = _M_get(); 25082: # 139 "/usr/include/c++/8/bits/streambuf_iterator.h" 3 25082: return traits_type::to_char_type(__c); 25082: } 25082: 25082: 25082: istreambuf_iterator& 25082: operator++() 25082: { 25082: 25082: 25082: 25082: ; 25082: 25082: _M_sbuf->sbumpc(); 25082: _M_c = traits_type::eof(); 25082: return *this; 25082: } 25082: 25082: 25082: istreambuf_iterator 25082: operator++(int) 25082: { 25082: 25082: 25082: 25082: ; 25082: 25082: istreambuf_iterator __old = *this; 25082: __old._M_c = _M_sbuf->sbumpc(); 25082: _M_c = traits_type::eof(); 25082: return __old; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: bool 25082: equal(const istreambuf_iterator& __b) const 25082: { return _M_at_eof() == __b._M_at_eof(); } 25082: 25082: private: 25082: int_type 25082: _M_get() const 25082: { 25082: int_type __ret = _M_c; 25082: if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc())) 25082: _M_sbuf = 0; 25082: return __ret; 25082: } 25082: 25082: bool 25082: _M_at_eof() const 25082: { return _S_is_eof(_M_get()); } 25082: 25082: static bool 25082: _S_is_eof(int_type __c) 25082: { 25082: const int_type __eof = traits_type::eof(); 25082: return traits_type::eq_int_type(__c, __eof); 25082: } 25082: }; 25082: 25082: template 25082: inline bool 25082: operator==(const istreambuf_iterator<_CharT, _Traits>& __a, 25082: const istreambuf_iterator<_CharT, _Traits>& __b) 25082: { return __a.equal(__b); } 25082: 25082: template 25082: inline bool 25082: operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, 25082: const istreambuf_iterator<_CharT, _Traits>& __b) 25082: { return !__a.equal(__b); } 25082: 25082: 25082: template 25082: class ostreambuf_iterator 25082: : public iterator 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef _Traits traits_type; 25082: typedef basic_streambuf<_CharT, _Traits> streambuf_type; 25082: typedef basic_ostream<_CharT, _Traits> ostream_type; 25082: 25082: 25082: template 25082: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 25082: ostreambuf_iterator<_CharT2> >::__type 25082: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 25082: ostreambuf_iterator<_CharT2>); 25082: 25082: private: 25082: streambuf_type* _M_sbuf; 25082: bool _M_failed; 25082: 25082: public: 25082: 25082: ostreambuf_iterator(ostream_type& __s) noexcept 25082: : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } 25082: 25082: 25082: ostreambuf_iterator(streambuf_type* __s) noexcept 25082: : _M_sbuf(__s), _M_failed(!_M_sbuf) { } 25082: 25082: 25082: ostreambuf_iterator& 25082: operator=(_CharT __c) 25082: { 25082: if (!_M_failed && 25082: _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) 25082: _M_failed = true; 25082: return *this; 25082: } 25082: 25082: 25082: ostreambuf_iterator& 25082: operator*() 25082: { return *this; } 25082: 25082: 25082: ostreambuf_iterator& 25082: operator++(int) 25082: { return *this; } 25082: 25082: 25082: ostreambuf_iterator& 25082: operator++() 25082: { return *this; } 25082: 25082: 25082: bool 25082: failed() const noexcept 25082: { return _M_failed; } 25082: 25082: ostreambuf_iterator& 25082: _M_put(const _CharT* __ws, streamsize __len) 25082: { 25082: if (__builtin_expect(!_M_failed, true) 25082: && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, 25082: false)) 25082: _M_failed = true; 25082: return *this; 25082: } 25082: }; 25082: 25082: 25082: template 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 25082: ostreambuf_iterator<_CharT> >::__type 25082: copy(istreambuf_iterator<_CharT> __first, 25082: istreambuf_iterator<_CharT> __last, 25082: ostreambuf_iterator<_CharT> __result) 25082: { 25082: if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) 25082: { 25082: bool __ineof; 25082: __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); 25082: if (!__ineof) 25082: __result._M_failed = true; 25082: } 25082: return __result; 25082: } 25082: 25082: template 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 25082: ostreambuf_iterator<_CharT> >::__type 25082: __copy_move_a2(_CharT* __first, _CharT* __last, 25082: ostreambuf_iterator<_CharT> __result) 25082: { 25082: const streamsize __num = __last - __first; 25082: if (__num > 0) 25082: __result._M_put(__first, __num); 25082: return __result; 25082: } 25082: 25082: template 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 25082: ostreambuf_iterator<_CharT> >::__type 25082: __copy_move_a2(const _CharT* __first, const _CharT* __last, 25082: ostreambuf_iterator<_CharT> __result) 25082: { 25082: const streamsize __num = __last - __first; 25082: if (__num > 0) 25082: __result._M_put(__first, __num); 25082: return __result; 25082: } 25082: 25082: template 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 25082: _CharT*>::__type 25082: __copy_move_a2(istreambuf_iterator<_CharT> __first, 25082: istreambuf_iterator<_CharT> __last, _CharT* __result) 25082: { 25082: typedef istreambuf_iterator<_CharT> __is_iterator_type; 25082: typedef typename __is_iterator_type::traits_type traits_type; 25082: typedef typename __is_iterator_type::streambuf_type streambuf_type; 25082: typedef typename traits_type::int_type int_type; 25082: 25082: if (__first._M_sbuf && !__last._M_sbuf) 25082: { 25082: streambuf_type* __sb = __first._M_sbuf; 25082: int_type __c = __sb->sgetc(); 25082: while (!traits_type::eq_int_type(__c, traits_type::eof())) 25082: { 25082: const streamsize __n = __sb->egptr() - __sb->gptr(); 25082: if (__n > 1) 25082: { 25082: traits_type::copy(__result, __sb->gptr(), __n); 25082: __sb->__safe_gbump(__n); 25082: __result += __n; 25082: __c = __sb->underflow(); 25082: } 25082: else 25082: { 25082: *__result++ = traits_type::to_char_type(__c); 25082: __c = __sb->snextc(); 25082: } 25082: } 25082: } 25082: return __result; 25082: } 25082: 25082: template 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 25082: istreambuf_iterator<_CharT> >::__type 25082: find(istreambuf_iterator<_CharT> __first, 25082: istreambuf_iterator<_CharT> __last, const _CharT& __val) 25082: { 25082: typedef istreambuf_iterator<_CharT> __is_iterator_type; 25082: typedef typename __is_iterator_type::traits_type traits_type; 25082: typedef typename __is_iterator_type::streambuf_type streambuf_type; 25082: typedef typename traits_type::int_type int_type; 25082: const int_type __eof = traits_type::eof(); 25082: 25082: if (__first._M_sbuf && !__last._M_sbuf) 25082: { 25082: const int_type __ival = traits_type::to_int_type(__val); 25082: streambuf_type* __sb = __first._M_sbuf; 25082: int_type __c = __sb->sgetc(); 25082: while (!traits_type::eq_int_type(__c, __eof) 25082: && !traits_type::eq_int_type(__c, __ival)) 25082: { 25082: streamsize __n = __sb->egptr() - __sb->gptr(); 25082: if (__n > 1) 25082: { 25082: const _CharT* __p = traits_type::find(__sb->gptr(), 25082: __n, __val); 25082: if (__p) 25082: __n = __p - __sb->gptr(); 25082: __sb->__safe_gbump(__n); 25082: __c = __sb->sgetc(); 25082: } 25082: else 25082: __c = __sb->snextc(); 25082: } 25082: 25082: __first._M_c = __eof; 25082: } 25082: 25082: return __first; 25082: } 25082: 25082: template 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 25082: void>::__type 25082: advance(istreambuf_iterator<_CharT>& __i, _Distance __n) 25082: { 25082: if (__n == 0) 25082: return; 25082: 25082: ; 25082: 25082: 25082: ; 25082: 25082: typedef istreambuf_iterator<_CharT> __is_iterator_type; 25082: typedef typename __is_iterator_type::traits_type traits_type; 25082: typedef typename __is_iterator_type::streambuf_type streambuf_type; 25082: typedef typename traits_type::int_type int_type; 25082: const int_type __eof = traits_type::eof(); 25082: 25082: streambuf_type* __sb = __i._M_sbuf; 25082: while (__n > 0) 25082: { 25082: streamsize __size = __sb->egptr() - __sb->gptr(); 25082: if (__size > __n) 25082: { 25082: __sb->__safe_gbump(__n); 25082: break; 25082: } 25082: 25082: __sb->__safe_gbump(__size); 25082: __n -= __size; 25082: if (traits_type::eq_int_type(__sb->underflow(), __eof)) 25082: { 25082: 25082: 25082: ; 25082: break; 25082: } 25082: } 25082: 25082: __i._M_c = __eof; 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: # 49 "/usr/include/c++/8/bits/locale_facets.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 71 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: template 25082: void 25082: __convert_to_v(const char*, _Tp&, ios_base::iostate&, 25082: const __c_locale&) throw(); 25082: 25082: 25082: template<> 25082: void 25082: __convert_to_v(const char*, float&, ios_base::iostate&, 25082: const __c_locale&) throw(); 25082: 25082: template<> 25082: void 25082: __convert_to_v(const char*, double&, ios_base::iostate&, 25082: const __c_locale&) throw(); 25082: 25082: template<> 25082: void 25082: __convert_to_v(const char*, long double&, ios_base::iostate&, 25082: const __c_locale&) throw(); 25082: 25082: 25082: 25082: template 25082: struct __pad 25082: { 25082: static void 25082: _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, 25082: const _CharT* __olds, streamsize __newlen, streamsize __oldlen); 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _CharT* 25082: __add_grouping(_CharT* __s, _CharT __sep, 25082: const char* __gbeg, size_t __gsize, 25082: const _CharT* __first, const _CharT* __last); 25082: 25082: 25082: 25082: 25082: template 25082: inline 25082: ostreambuf_iterator<_CharT> 25082: __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) 25082: { 25082: __s._M_put(__ws, __len); 25082: return __s; 25082: } 25082: 25082: 25082: template 25082: inline 25082: _OutIter 25082: __write(_OutIter __s, const _CharT* __ws, int __len) 25082: { 25082: for (int __j = 0; __j < __len; __j++, ++__s) 25082: *__s = __ws[__j]; 25082: return __s; 25082: } 25082: # 149 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: template 25082: class __ctype_abstract_base : public locale::facet, public ctype_base 25082: { 25082: public: 25082: 25082: 25082: typedef _CharT char_type; 25082: # 168 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: bool 25082: is(mask __m, char_type __c) const 25082: { return this->do_is(__m, __c); } 25082: # 185 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char_type* 25082: is(const char_type *__lo, const char_type *__hi, mask *__vec) const 25082: { return this->do_is(__lo, __hi, __vec); } 25082: # 201 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char_type* 25082: scan_is(mask __m, const char_type* __lo, const char_type* __hi) const 25082: { return this->do_scan_is(__m, __lo, __hi); } 25082: # 217 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char_type* 25082: scan_not(mask __m, const char_type* __lo, const char_type* __hi) const 25082: { return this->do_scan_not(__m, __lo, __hi); } 25082: # 231 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: char_type 25082: toupper(char_type __c) const 25082: { return this->do_toupper(__c); } 25082: # 246 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char_type* 25082: toupper(char_type *__lo, const char_type* __hi) const 25082: { return this->do_toupper(__lo, __hi); } 25082: # 260 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: char_type 25082: tolower(char_type __c) const 25082: { return this->do_tolower(__c); } 25082: # 275 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char_type* 25082: tolower(char_type* __lo, const char_type* __hi) const 25082: { return this->do_tolower(__lo, __hi); } 25082: # 292 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: char_type 25082: widen(char __c) const 25082: { return this->do_widen(__c); } 25082: # 311 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char* 25082: widen(const char* __lo, const char* __hi, char_type* __to) const 25082: { return this->do_widen(__lo, __hi, __to); } 25082: # 330 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: char 25082: narrow(char_type __c, char __dfault) const 25082: { return this->do_narrow(__c, __dfault); } 25082: # 352 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char_type* 25082: narrow(const char_type* __lo, const char_type* __hi, 25082: char __dfault, char* __to) const 25082: { return this->do_narrow(__lo, __hi, __dfault, __to); } 25082: 25082: protected: 25082: explicit 25082: __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } 25082: 25082: virtual 25082: ~__ctype_abstract_base() { } 25082: # 377 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual bool 25082: do_is(mask __m, char_type __c) const = 0; 25082: # 396 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_is(const char_type* __lo, const char_type* __hi, 25082: mask* __vec) const = 0; 25082: # 415 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_scan_is(mask __m, const char_type* __lo, 25082: const char_type* __hi) const = 0; 25082: # 434 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_scan_not(mask __m, const char_type* __lo, 25082: const char_type* __hi) const = 0; 25082: # 452 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_toupper(char_type __c) const = 0; 25082: # 469 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_toupper(char_type* __lo, const char_type* __hi) const = 0; 25082: # 485 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_tolower(char_type __c) const = 0; 25082: # 502 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_tolower(char_type* __lo, const char_type* __hi) const = 0; 25082: # 521 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_widen(char __c) const = 0; 25082: # 542 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char* 25082: do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; 25082: # 563 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char 25082: do_narrow(char_type __c, char __dfault) const = 0; 25082: # 588 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_narrow(const char_type* __lo, const char_type* __hi, 25082: char __dfault, char* __to) const = 0; 25082: }; 25082: # 611 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: template 25082: class ctype : public __ctype_abstract_base<_CharT> 25082: { 25082: public: 25082: 25082: typedef _CharT char_type; 25082: typedef typename __ctype_abstract_base<_CharT>::mask mask; 25082: 25082: 25082: static locale::id id; 25082: 25082: explicit 25082: ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } 25082: 25082: protected: 25082: virtual 25082: ~ctype(); 25082: 25082: virtual bool 25082: do_is(mask __m, char_type __c) const; 25082: 25082: virtual const char_type* 25082: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; 25082: 25082: virtual const char_type* 25082: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; 25082: 25082: virtual const char_type* 25082: do_scan_not(mask __m, const char_type* __lo, 25082: const char_type* __hi) const; 25082: 25082: virtual char_type 25082: do_toupper(char_type __c) const; 25082: 25082: virtual const char_type* 25082: do_toupper(char_type* __lo, const char_type* __hi) const; 25082: 25082: virtual char_type 25082: do_tolower(char_type __c) const; 25082: 25082: virtual const char_type* 25082: do_tolower(char_type* __lo, const char_type* __hi) const; 25082: 25082: virtual char_type 25082: do_widen(char __c) const; 25082: 25082: virtual const char* 25082: do_widen(const char* __lo, const char* __hi, char_type* __dest) const; 25082: 25082: virtual char 25082: do_narrow(char_type, char __dfault) const; 25082: 25082: virtual const char_type* 25082: do_narrow(const char_type* __lo, const char_type* __hi, 25082: char __dfault, char* __to) const; 25082: }; 25082: 25082: template 25082: locale::id ctype<_CharT>::id; 25082: # 680 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: template<> 25082: class ctype : public locale::facet, public ctype_base 25082: { 25082: public: 25082: 25082: 25082: typedef char char_type; 25082: 25082: protected: 25082: 25082: __c_locale _M_c_locale_ctype; 25082: bool _M_del; 25082: __to_type _M_toupper; 25082: __to_type _M_tolower; 25082: const mask* _M_table; 25082: mutable char _M_widen_ok; 25082: mutable char _M_widen[1 + static_cast(-1)]; 25082: mutable char _M_narrow[1 + static_cast(-1)]; 25082: mutable char _M_narrow_ok; 25082: 25082: 25082: public: 25082: 25082: static locale::id id; 25082: 25082: static const size_t table_size = 1 + static_cast(-1); 25082: # 717 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: explicit 25082: ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); 25082: # 730 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: explicit 25082: ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, 25082: size_t __refs = 0); 25082: # 743 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: inline bool 25082: is(mask __m, char __c) const; 25082: # 758 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: inline const char* 25082: is(const char* __lo, const char* __hi, mask* __vec) const; 25082: # 772 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: inline const char* 25082: scan_is(mask __m, const char* __lo, const char* __hi) const; 25082: # 786 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: inline const char* 25082: scan_not(mask __m, const char* __lo, const char* __hi) const; 25082: # 801 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: char_type 25082: toupper(char_type __c) const 25082: { return this->do_toupper(__c); } 25082: # 818 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char_type* 25082: toupper(char_type *__lo, const char_type* __hi) const 25082: { return this->do_toupper(__lo, __hi); } 25082: # 834 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: char_type 25082: tolower(char_type __c) const 25082: { return this->do_tolower(__c); } 25082: # 851 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char_type* 25082: tolower(char_type* __lo, const char_type* __hi) const 25082: { return this->do_tolower(__lo, __hi); } 25082: # 871 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: char_type 25082: widen(char __c) const 25082: { 25082: if (_M_widen_ok) 25082: return _M_widen[static_cast(__c)]; 25082: this->_M_widen_init(); 25082: return this->do_widen(__c); 25082: } 25082: # 898 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char* 25082: widen(const char* __lo, const char* __hi, char_type* __to) const 25082: { 25082: if (_M_widen_ok == 1) 25082: { 25082: if (__builtin_expect(__hi != __lo, true)) 25082: __builtin_memcpy(__to, __lo, __hi - __lo); 25082: return __hi; 25082: } 25082: if (!_M_widen_ok) 25082: _M_widen_init(); 25082: return this->do_widen(__lo, __hi, __to); 25082: } 25082: # 930 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: char 25082: narrow(char_type __c, char __dfault) const 25082: { 25082: if (_M_narrow[static_cast(__c)]) 25082: return _M_narrow[static_cast(__c)]; 25082: const char __t = do_narrow(__c, __dfault); 25082: if (__t != __dfault) 25082: _M_narrow[static_cast(__c)] = __t; 25082: return __t; 25082: } 25082: # 963 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: const char_type* 25082: narrow(const char_type* __lo, const char_type* __hi, 25082: char __dfault, char* __to) const 25082: { 25082: if (__builtin_expect(_M_narrow_ok == 1, true)) 25082: { 25082: if (__builtin_expect(__hi != __lo, true)) 25082: __builtin_memcpy(__to, __lo, __hi - __lo); 25082: return __hi; 25082: } 25082: if (!_M_narrow_ok) 25082: _M_narrow_init(); 25082: return this->do_narrow(__lo, __hi, __dfault, __to); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: const mask* 25082: table() const throw() 25082: { return _M_table; } 25082: 25082: 25082: static const mask* 25082: classic_table() throw(); 25082: protected: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual 25082: ~ctype(); 25082: # 1013 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_toupper(char_type __c) const; 25082: # 1030 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_toupper(char_type* __lo, const char_type* __hi) const; 25082: # 1046 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_tolower(char_type __c) const; 25082: # 1063 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_tolower(char_type* __lo, const char_type* __hi) const; 25082: # 1083 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_widen(char __c) const 25082: { return __c; } 25082: # 1106 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char* 25082: do_widen(const char* __lo, const char* __hi, char_type* __to) const 25082: { 25082: if (__builtin_expect(__hi != __lo, true)) 25082: __builtin_memcpy(__to, __lo, __hi - __lo); 25082: return __hi; 25082: } 25082: # 1133 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char 25082: do_narrow(char_type __c, char __dfault __attribute__((__unused__))) const 25082: { return __c; } 25082: # 1159 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_narrow(const char_type* __lo, const char_type* __hi, 25082: char __dfault __attribute__((__unused__)), char* __to) const 25082: { 25082: if (__builtin_expect(__hi != __lo, true)) 25082: __builtin_memcpy(__to, __lo, __hi - __lo); 25082: return __hi; 25082: } 25082: 25082: private: 25082: void _M_narrow_init() const; 25082: void _M_widen_init() const; 25082: }; 25082: # 1185 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: template<> 25082: class ctype : public __ctype_abstract_base 25082: { 25082: public: 25082: 25082: 25082: typedef wchar_t char_type; 25082: typedef wctype_t __wmask_type; 25082: 25082: protected: 25082: __c_locale _M_c_locale_ctype; 25082: 25082: 25082: bool _M_narrow_ok; 25082: char _M_narrow[128]; 25082: wint_t _M_widen[1 + static_cast(-1)]; 25082: 25082: 25082: mask _M_bit[16]; 25082: __wmask_type _M_wmask[16]; 25082: 25082: public: 25082: 25082: 25082: static locale::id id; 25082: # 1218 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: explicit 25082: ctype(size_t __refs = 0); 25082: # 1229 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: explicit 25082: ctype(__c_locale __cloc, size_t __refs = 0); 25082: 25082: protected: 25082: __wmask_type 25082: _M_convert_to_wmask(const mask __m) const throw(); 25082: 25082: 25082: virtual 25082: ~ctype(); 25082: # 1253 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual bool 25082: do_is(mask __m, char_type __c) const; 25082: # 1272 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; 25082: # 1290 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; 25082: # 1308 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_scan_not(mask __m, const char_type* __lo, 25082: const char_type* __hi) const; 25082: # 1325 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_toupper(char_type __c) const; 25082: # 1342 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_toupper(char_type* __lo, const char_type* __hi) const; 25082: # 1358 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_tolower(char_type __c) const; 25082: # 1375 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_tolower(char_type* __lo, const char_type* __hi) const; 25082: # 1395 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_widen(char __c) const; 25082: # 1417 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char* 25082: do_widen(const char* __lo, const char* __hi, char_type* __to) const; 25082: # 1440 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char 25082: do_narrow(char_type __c, char __dfault) const; 25082: # 1466 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual const char_type* 25082: do_narrow(const char_type* __lo, const char_type* __hi, 25082: char __dfault, char* __to) const; 25082: 25082: 25082: void 25082: _M_initialize_ctype() throw(); 25082: }; 25082: 25082: 25082: 25082: template 25082: class ctype_byname : public ctype<_CharT> 25082: { 25082: public: 25082: typedef typename ctype<_CharT>::mask mask; 25082: 25082: explicit 25082: ctype_byname(const char* __s, size_t __refs = 0); 25082: 25082: 25082: explicit 25082: ctype_byname(const string& __s, size_t __refs = 0) 25082: : ctype_byname(__s.c_str(), __refs) { } 25082: 25082: 25082: protected: 25082: virtual 25082: ~ctype_byname() { } 25082: }; 25082: 25082: 25082: template<> 25082: class ctype_byname : public ctype 25082: { 25082: public: 25082: explicit 25082: ctype_byname(const char* __s, size_t __refs = 0); 25082: 25082: 25082: explicit 25082: ctype_byname(const string& __s, size_t __refs = 0); 25082: 25082: 25082: protected: 25082: virtual 25082: ~ctype_byname(); 25082: }; 25082: 25082: 25082: template<> 25082: class ctype_byname : public ctype 25082: { 25082: public: 25082: explicit 25082: ctype_byname(const char* __s, size_t __refs = 0); 25082: 25082: 25082: explicit 25082: ctype_byname(const string& __s, size_t __refs = 0); 25082: 25082: 25082: protected: 25082: virtual 25082: ~ctype_byname(); 25082: }; 25082: 25082: 25082: 25082: } 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/ctype_inline.h" 1 3 25082: # 37 "/usr/include/aarch64-linux-gnu/c++/8/bits/ctype_inline.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: bool 25082: ctype:: 25082: is(mask __m, char __c) const 25082: { return _M_table[static_cast(__c)] & __m; } 25082: 25082: const char* 25082: ctype:: 25082: is(const char* __low, const char* __high, mask* __vec) const 25082: { 25082: while (__low < __high) 25082: *__vec++ = _M_table[static_cast(*__low++)]; 25082: return __high; 25082: } 25082: 25082: const char* 25082: ctype:: 25082: scan_is(mask __m, const char* __low, const char* __high) const 25082: { 25082: while (__low < __high 25082: && !(_M_table[static_cast(*__low)] & __m)) 25082: ++__low; 25082: return __low; 25082: } 25082: 25082: const char* 25082: ctype:: 25082: scan_not(mask __m, const char* __low, const char* __high) const 25082: { 25082: while (__low < __high 25082: && (_M_table[static_cast(*__low)] & __m) != 0) 25082: ++__low; 25082: return __low; 25082: } 25082: 25082: 25082: } 25082: # 1539 "/usr/include/c++/8/bits/locale_facets.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: class __num_base 25082: { 25082: public: 25082: 25082: 25082: enum 25082: { 25082: _S_ominus, 25082: _S_oplus, 25082: _S_ox, 25082: _S_oX, 25082: _S_odigits, 25082: _S_odigits_end = _S_odigits + 16, 25082: _S_oudigits = _S_odigits_end, 25082: _S_oudigits_end = _S_oudigits + 16, 25082: _S_oe = _S_odigits + 14, 25082: _S_oE = _S_oudigits + 14, 25082: _S_oend = _S_oudigits_end 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: static const char* _S_atoms_out; 25082: 25082: 25082: 25082: static const char* _S_atoms_in; 25082: 25082: enum 25082: { 25082: _S_iminus, 25082: _S_iplus, 25082: _S_ix, 25082: _S_iX, 25082: _S_izero, 25082: _S_ie = _S_izero + 14, 25082: _S_iE = _S_izero + 20, 25082: _S_iend = 26 25082: }; 25082: 25082: 25082: 25082: static void 25082: _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw(); 25082: }; 25082: 25082: template 25082: struct __numpunct_cache : public locale::facet 25082: { 25082: const char* _M_grouping; 25082: size_t _M_grouping_size; 25082: bool _M_use_grouping; 25082: const _CharT* _M_truename; 25082: size_t _M_truename_size; 25082: const _CharT* _M_falsename; 25082: size_t _M_falsename_size; 25082: _CharT _M_decimal_point; 25082: _CharT _M_thousands_sep; 25082: 25082: 25082: 25082: 25082: 25082: _CharT _M_atoms_out[__num_base::_S_oend]; 25082: 25082: 25082: 25082: 25082: 25082: _CharT _M_atoms_in[__num_base::_S_iend]; 25082: 25082: bool _M_allocated; 25082: 25082: __numpunct_cache(size_t __refs = 0) 25082: : facet(__refs), _M_grouping(0), _M_grouping_size(0), 25082: _M_use_grouping(false), 25082: _M_truename(0), _M_truename_size(0), _M_falsename(0), 25082: _M_falsename_size(0), _M_decimal_point(_CharT()), 25082: _M_thousands_sep(_CharT()), _M_allocated(false) 25082: { } 25082: 25082: ~__numpunct_cache(); 25082: 25082: void 25082: _M_cache(const locale& __loc); 25082: 25082: private: 25082: __numpunct_cache& 25082: operator=(const __numpunct_cache&); 25082: 25082: explicit 25082: __numpunct_cache(const __numpunct_cache&); 25082: }; 25082: 25082: template 25082: __numpunct_cache<_CharT>::~__numpunct_cache() 25082: { 25082: if (_M_allocated) 25082: { 25082: delete [] _M_grouping; 25082: delete [] _M_truename; 25082: delete [] _M_falsename; 25082: } 25082: } 25082: 25082: namespace __cxx11 { 25082: # 1669 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: template 25082: class numpunct : public locale::facet 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef basic_string<_CharT> string_type; 25082: 25082: typedef __numpunct_cache<_CharT> __cache_type; 25082: 25082: protected: 25082: __cache_type* _M_data; 25082: 25082: public: 25082: 25082: static locale::id id; 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: numpunct(size_t __refs = 0) 25082: : facet(__refs), _M_data(0) 25082: { _M_initialize_numpunct(); } 25082: # 1707 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: explicit 25082: numpunct(__cache_type* __cache, size_t __refs = 0) 25082: : facet(__refs), _M_data(__cache) 25082: { _M_initialize_numpunct(); } 25082: # 1721 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: explicit 25082: numpunct(__c_locale __cloc, size_t __refs = 0) 25082: : facet(__refs), _M_data(0) 25082: { _M_initialize_numpunct(__cloc); } 25082: # 1735 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: char_type 25082: decimal_point() const 25082: { return this->do_decimal_point(); } 25082: # 1748 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: char_type 25082: thousands_sep() const 25082: { return this->do_thousands_sep(); } 25082: # 1779 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: string 25082: grouping() const 25082: { return this->do_grouping(); } 25082: # 1792 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: string_type 25082: truename() const 25082: { return this->do_truename(); } 25082: # 1805 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: string_type 25082: falsename() const 25082: { return this->do_falsename(); } 25082: 25082: protected: 25082: 25082: virtual 25082: ~numpunct(); 25082: # 1822 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_decimal_point() const 25082: { return _M_data->_M_decimal_point; } 25082: # 1834 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual char_type 25082: do_thousands_sep() const 25082: { return _M_data->_M_thousands_sep; } 25082: # 1847 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual string 25082: do_grouping() const 25082: { return _M_data->_M_grouping; } 25082: # 1860 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual string_type 25082: do_truename() const 25082: { return _M_data->_M_truename; } 25082: # 1873 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual string_type 25082: do_falsename() const 25082: { return _M_data->_M_falsename; } 25082: 25082: 25082: void 25082: _M_initialize_numpunct(__c_locale __cloc = 0); 25082: }; 25082: 25082: template 25082: locale::id numpunct<_CharT>::id; 25082: 25082: template<> 25082: numpunct::~numpunct(); 25082: 25082: template<> 25082: void 25082: numpunct::_M_initialize_numpunct(__c_locale __cloc); 25082: 25082: 25082: template<> 25082: numpunct::~numpunct(); 25082: 25082: template<> 25082: void 25082: numpunct::_M_initialize_numpunct(__c_locale __cloc); 25082: 25082: 25082: 25082: template 25082: class numpunct_byname : public numpunct<_CharT> 25082: { 25082: public: 25082: typedef _CharT char_type; 25082: typedef basic_string<_CharT> string_type; 25082: 25082: explicit 25082: numpunct_byname(const char* __s, size_t __refs = 0) 25082: : numpunct<_CharT>(__refs) 25082: { 25082: if (__builtin_strcmp(__s, "C") != 0 25082: && __builtin_strcmp(__s, "POSIX") != 0) 25082: { 25082: __c_locale __tmp; 25082: this->_S_create_c_locale(__tmp, __s); 25082: this->_M_initialize_numpunct(__tmp); 25082: this->_S_destroy_c_locale(__tmp); 25082: } 25082: } 25082: 25082: 25082: explicit 25082: numpunct_byname(const string& __s, size_t __refs = 0) 25082: : numpunct_byname(__s.c_str(), __refs) { } 25082: 25082: 25082: protected: 25082: virtual 25082: ~numpunct_byname() { } 25082: }; 25082: 25082: } 25082: 25082: 25082: # 1951 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: template 25082: class num_get : public locale::facet 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef _InIter iter_type; 25082: 25082: 25082: 25082: static locale::id id; 25082: # 1972 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: explicit 25082: num_get(size_t __refs = 0) : facet(__refs) { } 25082: # 1998 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, bool& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: # 2035 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, long& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, unsigned short& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, unsigned int& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, unsigned long& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: 25082: 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, long long& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, unsigned long long& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: # 2095 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, float& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, double& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, long double& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: # 2138 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: iter_type 25082: get(iter_type __in, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, void*& __v) const 25082: { return this->do_get(__in, __end, __io, __err, __v); } 25082: 25082: protected: 25082: 25082: virtual ~num_get() { } 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iter_type 25082: _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, 25082: string&) const; 25082: 25082: template 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iter_type 25082: _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, 25082: _ValueT&) const; 25082: 25082: template 25082: typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type 25082: _M_find(const _CharT2*, size_t __len, _CharT2 __c) const 25082: { 25082: int __ret = -1; 25082: if (__len <= 10) 25082: { 25082: if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) 25082: __ret = __c - _CharT2('0'); 25082: } 25082: else 25082: { 25082: if (__c >= _CharT2('0') && __c <= _CharT2('9')) 25082: __ret = __c - _CharT2('0'); 25082: else if (__c >= _CharT2('a') && __c <= _CharT2('f')) 25082: __ret = 10 + (__c - _CharT2('a')); 25082: else if (__c >= _CharT2('A') && __c <= _CharT2('F')) 25082: __ret = 10 + (__c - _CharT2('A')); 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: typename __gnu_cxx::__enable_if::__value, 25082: int>::__type 25082: _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const 25082: { 25082: int __ret = -1; 25082: const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); 25082: if (__q) 25082: { 25082: __ret = __q - __zero; 25082: if (__ret > 15) 25082: __ret -= 6; 25082: } 25082: return __ret; 25082: } 25082: # 2211 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual iter_type 25082: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; 25082: 25082: virtual iter_type 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, long& __v) const 25082: { return _M_extract_int(__beg, __end, __io, __err, __v); } 25082: 25082: virtual iter_type 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, unsigned short& __v) const 25082: { return _M_extract_int(__beg, __end, __io, __err, __v); } 25082: 25082: virtual iter_type 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, unsigned int& __v) const 25082: { return _M_extract_int(__beg, __end, __io, __err, __v); } 25082: 25082: virtual iter_type 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, unsigned long& __v) const 25082: { return _M_extract_int(__beg, __end, __io, __err, __v); } 25082: 25082: 25082: virtual iter_type 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, long long& __v) const 25082: { return _M_extract_int(__beg, __end, __io, __err, __v); } 25082: 25082: virtual iter_type 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, unsigned long long& __v) const 25082: { return _M_extract_int(__beg, __end, __io, __err, __v); } 25082: 25082: 25082: virtual iter_type 25082: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const; 25082: 25082: virtual iter_type 25082: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, 25082: double&) const; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual iter_type 25082: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, 25082: long double&) const; 25082: 25082: 25082: virtual iter_type 25082: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; 25082: # 2274 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: }; 25082: 25082: template 25082: locale::id num_get<_CharT, _InIter>::id; 25082: # 2292 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: template 25082: class num_put : public locale::facet 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef _OutIter iter_type; 25082: 25082: 25082: 25082: static locale::id id; 25082: # 2313 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: explicit 25082: num_put(size_t __refs = 0) : facet(__refs) { } 25082: # 2331 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: iter_type 25082: put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const 25082: { return this->do_put(__s, __io, __fill, __v); } 25082: # 2373 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: iter_type 25082: put(iter_type __s, ios_base& __io, char_type __fill, long __v) const 25082: { return this->do_put(__s, __io, __fill, __v); } 25082: 25082: iter_type 25082: put(iter_type __s, ios_base& __io, char_type __fill, 25082: unsigned long __v) const 25082: { return this->do_put(__s, __io, __fill, __v); } 25082: 25082: 25082: iter_type 25082: put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const 25082: { return this->do_put(__s, __io, __fill, __v); } 25082: 25082: iter_type 25082: put(iter_type __s, ios_base& __io, char_type __fill, 25082: unsigned long long __v) const 25082: { return this->do_put(__s, __io, __fill, __v); } 25082: # 2436 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: iter_type 25082: put(iter_type __s, ios_base& __io, char_type __fill, double __v) const 25082: { return this->do_put(__s, __io, __fill, __v); } 25082: 25082: iter_type 25082: put(iter_type __s, ios_base& __io, char_type __fill, 25082: long double __v) const 25082: { return this->do_put(__s, __io, __fill, __v); } 25082: # 2461 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: iter_type 25082: put(iter_type __s, ios_base& __io, char_type __fill, 25082: const void* __v) const 25082: { return this->do_put(__s, __io, __fill, __v); } 25082: 25082: protected: 25082: template 25082: iter_type 25082: _M_insert_float(iter_type, ios_base& __io, char_type __fill, 25082: char __mod, _ValueT __v) const; 25082: 25082: void 25082: _M_group_float(const char* __grouping, size_t __grouping_size, 25082: char_type __sep, const char_type* __p, char_type* __new, 25082: char_type* __cs, int& __len) const; 25082: 25082: template 25082: iter_type 25082: _M_insert_int(iter_type, ios_base& __io, char_type __fill, 25082: _ValueT __v) const; 25082: 25082: void 25082: _M_group_int(const char* __grouping, size_t __grouping_size, 25082: char_type __sep, ios_base& __io, char_type* __new, 25082: char_type* __cs, int& __len) const; 25082: 25082: void 25082: _M_pad(char_type __fill, streamsize __w, ios_base& __io, 25082: char_type* __new, const char_type* __cs, int& __len) const; 25082: 25082: 25082: virtual 25082: ~num_put() { } 25082: # 2509 "/usr/include/c++/8/bits/locale_facets.h" 3 25082: virtual iter_type 25082: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const; 25082: 25082: virtual iter_type 25082: do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const 25082: { return _M_insert_int(__s, __io, __fill, __v); } 25082: 25082: virtual iter_type 25082: do_put(iter_type __s, ios_base& __io, char_type __fill, 25082: unsigned long __v) const 25082: { return _M_insert_int(__s, __io, __fill, __v); } 25082: 25082: 25082: virtual iter_type 25082: do_put(iter_type __s, ios_base& __io, char_type __fill, 25082: long long __v) const 25082: { return _M_insert_int(__s, __io, __fill, __v); } 25082: 25082: virtual iter_type 25082: do_put(iter_type __s, ios_base& __io, char_type __fill, 25082: unsigned long long __v) const 25082: { return _M_insert_int(__s, __io, __fill, __v); } 25082: 25082: 25082: virtual iter_type 25082: do_put(iter_type, ios_base&, char_type, double) const; 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual iter_type 25082: do_put(iter_type, ios_base&, char_type, long double) const; 25082: 25082: 25082: virtual iter_type 25082: do_put(iter_type, ios_base&, char_type, const void*) const; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: template 25082: locale::id num_put<_CharT, _OutIter>::id; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline bool 25082: isspace(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::space, __c); } 25082: 25082: 25082: template 25082: inline bool 25082: isprint(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::print, __c); } 25082: 25082: 25082: template 25082: inline bool 25082: iscntrl(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::cntrl, __c); } 25082: 25082: 25082: template 25082: inline bool 25082: isupper(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::upper, __c); } 25082: 25082: 25082: template 25082: inline bool 25082: islower(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::lower, __c); } 25082: 25082: 25082: template 25082: inline bool 25082: isalpha(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::alpha, __c); } 25082: 25082: 25082: template 25082: inline bool 25082: isdigit(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::digit, __c); } 25082: 25082: 25082: template 25082: inline bool 25082: ispunct(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::punct, __c); } 25082: 25082: 25082: template 25082: inline bool 25082: isxdigit(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::xdigit, __c); } 25082: 25082: 25082: template 25082: inline bool 25082: isalnum(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::alnum, __c); } 25082: 25082: 25082: template 25082: inline bool 25082: isgraph(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::graph, __c); } 25082: 25082: 25082: 25082: template 25082: inline bool 25082: isblank(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).is(ctype_base::blank, __c); } 25082: 25082: 25082: 25082: template 25082: inline _CharT 25082: toupper(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).toupper(__c); } 25082: 25082: 25082: template 25082: inline _CharT 25082: tolower(_CharT __c, const locale& __loc) 25082: { return use_facet >(__loc).tolower(__c); } 25082: 25082: 25082: } 25082: 25082: # 1 "/usr/include/c++/8/bits/locale_facets.tcc" 1 3 25082: # 33 "/usr/include/c++/8/bits/locale_facets.tcc" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/locale_facets.tcc" 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: template 25082: struct __use_cache 25082: { 25082: const _Facet* 25082: operator() (const locale& __loc) const; 25082: }; 25082: 25082: 25082: template 25082: struct __use_cache<__numpunct_cache<_CharT> > 25082: { 25082: const __numpunct_cache<_CharT>* 25082: operator() (const locale& __loc) const 25082: { 25082: const size_t __i = numpunct<_CharT>::id._M_id(); 25082: const locale::facet** __caches = __loc._M_impl->_M_caches; 25082: if (!__caches[__i]) 25082: { 25082: __numpunct_cache<_CharT>* __tmp = 0; 25082: try 25082: { 25082: __tmp = new __numpunct_cache<_CharT>; 25082: __tmp->_M_cache(__loc); 25082: } 25082: catch(...) 25082: { 25082: delete __tmp; 25082: throw; 25082: } 25082: __loc._M_impl->_M_install_cache(__tmp, __i); 25082: } 25082: return static_cast*>(__caches[__i]); 25082: } 25082: }; 25082: 25082: template 25082: void 25082: __numpunct_cache<_CharT>::_M_cache(const locale& __loc) 25082: { 25082: const numpunct<_CharT>& __np = use_facet >(__loc); 25082: 25082: char* __grouping = 0; 25082: _CharT* __truename = 0; 25082: _CharT* __falsename = 0; 25082: try 25082: { 25082: const string& __g = __np.grouping(); 25082: _M_grouping_size = __g.size(); 25082: __grouping = new char[_M_grouping_size]; 25082: __g.copy(__grouping, _M_grouping_size); 25082: _M_use_grouping = (_M_grouping_size 25082: && static_cast(__grouping[0]) > 0 25082: && (__grouping[0] 25082: != __gnu_cxx::__numeric_traits::__max)); 25082: 25082: const basic_string<_CharT>& __tn = __np.truename(); 25082: _M_truename_size = __tn.size(); 25082: __truename = new _CharT[_M_truename_size]; 25082: __tn.copy(__truename, _M_truename_size); 25082: 25082: const basic_string<_CharT>& __fn = __np.falsename(); 25082: _M_falsename_size = __fn.size(); 25082: __falsename = new _CharT[_M_falsename_size]; 25082: __fn.copy(__falsename, _M_falsename_size); 25082: 25082: _M_decimal_point = __np.decimal_point(); 25082: _M_thousands_sep = __np.thousands_sep(); 25082: 25082: const ctype<_CharT>& __ct = use_facet >(__loc); 25082: __ct.widen(__num_base::_S_atoms_out, 25082: __num_base::_S_atoms_out 25082: + __num_base::_S_oend, _M_atoms_out); 25082: __ct.widen(__num_base::_S_atoms_in, 25082: __num_base::_S_atoms_in 25082: + __num_base::_S_iend, _M_atoms_in); 25082: 25082: _M_grouping = __grouping; 25082: _M_truename = __truename; 25082: _M_falsename = __falsename; 25082: _M_allocated = true; 25082: } 25082: catch(...) 25082: { 25082: delete [] __grouping; 25082: delete [] __truename; 25082: delete [] __falsename; 25082: throw; 25082: } 25082: } 25082: # 139 "/usr/include/c++/8/bits/locale_facets.tcc" 3 25082: __attribute__ ((__pure__)) bool 25082: __verify_grouping(const char* __grouping, size_t __grouping_size, 25082: const string& __grouping_tmp) throw (); 25082: 25082: 25082: 25082: template 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: _InIter 25082: num_get<_CharT, _InIter>:: 25082: _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, 25082: ios_base::iostate& __err, string& __xtrc) const 25082: { 25082: typedef char_traits<_CharT> __traits_type; 25082: typedef __numpunct_cache<_CharT> __cache_type; 25082: __use_cache<__cache_type> __uc; 25082: const locale& __loc = __io._M_getloc(); 25082: const __cache_type* __lc = __uc(__loc); 25082: const _CharT* __lit = __lc->_M_atoms_in; 25082: char_type __c = char_type(); 25082: 25082: 25082: bool __testeof = __beg == __end; 25082: 25082: 25082: if (!__testeof) 25082: { 25082: __c = *__beg; 25082: const bool __plus = __c == __lit[__num_base::_S_iplus]; 25082: if ((__plus || __c == __lit[__num_base::_S_iminus]) 25082: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 25082: && !(__c == __lc->_M_decimal_point)) 25082: { 25082: __xtrc += __plus ? '+' : '-'; 25082: if (++__beg != __end) 25082: __c = *__beg; 25082: else 25082: __testeof = true; 25082: } 25082: } 25082: 25082: 25082: bool __found_mantissa = false; 25082: int __sep_pos = 0; 25082: while (!__testeof) 25082: { 25082: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 25082: || __c == __lc->_M_decimal_point) 25082: break; 25082: else if (__c == __lit[__num_base::_S_izero]) 25082: { 25082: if (!__found_mantissa) 25082: { 25082: __xtrc += '0'; 25082: __found_mantissa = true; 25082: } 25082: ++__sep_pos; 25082: 25082: if (++__beg != __end) 25082: __c = *__beg; 25082: else 25082: __testeof = true; 25082: } 25082: else 25082: break; 25082: } 25082: 25082: 25082: bool __found_dec = false; 25082: bool __found_sci = false; 25082: string __found_grouping; 25082: if (__lc->_M_use_grouping) 25082: __found_grouping.reserve(32); 25082: const char_type* __lit_zero = __lit + __num_base::_S_izero; 25082: 25082: if (!__lc->_M_allocated) 25082: 25082: while (!__testeof) 25082: { 25082: const int __digit = _M_find(__lit_zero, 10, __c); 25082: if (__digit != -1) 25082: { 25082: __xtrc += '0' + __digit; 25082: __found_mantissa = true; 25082: } 25082: else if (__c == __lc->_M_decimal_point 25082: && !__found_dec && !__found_sci) 25082: { 25082: __xtrc += '.'; 25082: __found_dec = true; 25082: } 25082: else if ((__c == __lit[__num_base::_S_ie] 25082: || __c == __lit[__num_base::_S_iE]) 25082: && !__found_sci && __found_mantissa) 25082: { 25082: 25082: __xtrc += 'e'; 25082: __found_sci = true; 25082: 25082: 25082: if (++__beg != __end) 25082: { 25082: __c = *__beg; 25082: const bool __plus = __c == __lit[__num_base::_S_iplus]; 25082: if (__plus || __c == __lit[__num_base::_S_iminus]) 25082: __xtrc += __plus ? '+' : '-'; 25082: else 25082: continue; 25082: } 25082: else 25082: { 25082: __testeof = true; 25082: break; 25082: } 25082: } 25082: else 25082: break; 25082: 25082: if (++__beg != __end) 25082: __c = *__beg; 25082: else 25082: __testeof = true; 25082: } 25082: else 25082: while (!__testeof) 25082: { 25082: 25082: 25082: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 25082: { 25082: if (!__found_dec && !__found_sci) 25082: { 25082: 25082: 25082: if (__sep_pos) 25082: { 25082: __found_grouping += static_cast(__sep_pos); 25082: __sep_pos = 0; 25082: } 25082: else 25082: { 25082: 25082: 25082: __xtrc.clear(); 25082: break; 25082: } 25082: } 25082: else 25082: break; 25082: } 25082: else if (__c == __lc->_M_decimal_point) 25082: { 25082: if (!__found_dec && !__found_sci) 25082: { 25082: 25082: 25082: 25082: if (__found_grouping.size()) 25082: __found_grouping += static_cast(__sep_pos); 25082: __xtrc += '.'; 25082: __found_dec = true; 25082: } 25082: else 25082: break; 25082: } 25082: else 25082: { 25082: const char_type* __q = 25082: __traits_type::find(__lit_zero, 10, __c); 25082: if (__q) 25082: { 25082: __xtrc += '0' + (__q - __lit_zero); 25082: __found_mantissa = true; 25082: ++__sep_pos; 25082: } 25082: else if ((__c == __lit[__num_base::_S_ie] 25082: || __c == __lit[__num_base::_S_iE]) 25082: && !__found_sci && __found_mantissa) 25082: { 25082: 25082: if (__found_grouping.size() && !__found_dec) 25082: __found_grouping += static_cast(__sep_pos); 25082: __xtrc += 'e'; 25082: __found_sci = true; 25082: 25082: 25082: if (++__beg != __end) 25082: { 25082: __c = *__beg; 25082: const bool __plus = __c == __lit[__num_base::_S_iplus]; 25082: if ((__plus || __c == __lit[__num_base::_S_iminus]) 25082: && !(__lc->_M_use_grouping 25082: && __c == __lc->_M_thousands_sep) 25082: && !(__c == __lc->_M_decimal_point)) 25082: __xtrc += __plus ? '+' : '-'; 25082: else 25082: continue; 25082: } 25082: else 25082: { 25082: __testeof = true; 25082: break; 25082: } 25082: } 25082: else 25082: break; 25082: } 25082: 25082: if (++__beg != __end) 25082: __c = *__beg; 25082: else 25082: __testeof = true; 25082: } 25082: 25082: 25082: 25082: if (__found_grouping.size()) 25082: { 25082: 25082: if (!__found_dec && !__found_sci) 25082: __found_grouping += static_cast(__sep_pos); 25082: 25082: if (!std::__verify_grouping(__lc->_M_grouping, 25082: __lc->_M_grouping_size, 25082: __found_grouping)) 25082: __err = ios_base::failbit; 25082: } 25082: 25082: return __beg; 25082: } 25082: 25082: template 25082: template 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: _InIter 25082: num_get<_CharT, _InIter>:: 25082: _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, 25082: ios_base::iostate& __err, _ValueT& __v) const 25082: { 25082: typedef char_traits<_CharT> __traits_type; 25082: using __gnu_cxx::__add_unsigned; 25082: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; 25082: typedef __numpunct_cache<_CharT> __cache_type; 25082: __use_cache<__cache_type> __uc; 25082: const locale& __loc = __io._M_getloc(); 25082: const __cache_type* __lc = __uc(__loc); 25082: const _CharT* __lit = __lc->_M_atoms_in; 25082: char_type __c = char_type(); 25082: 25082: 25082: const ios_base::fmtflags __basefield = __io.flags() 25082: & ios_base::basefield; 25082: const bool __oct = __basefield == ios_base::oct; 25082: int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); 25082: 25082: 25082: bool __testeof = __beg == __end; 25082: 25082: 25082: bool __negative = false; 25082: if (!__testeof) 25082: { 25082: __c = *__beg; 25082: __negative = __c == __lit[__num_base::_S_iminus]; 25082: if ((__negative || __c == __lit[__num_base::_S_iplus]) 25082: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 25082: && !(__c == __lc->_M_decimal_point)) 25082: { 25082: if (++__beg != __end) 25082: __c = *__beg; 25082: else 25082: __testeof = true; 25082: } 25082: } 25082: 25082: 25082: 25082: bool __found_zero = false; 25082: int __sep_pos = 0; 25082: while (!__testeof) 25082: { 25082: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 25082: || __c == __lc->_M_decimal_point) 25082: break; 25082: else if (__c == __lit[__num_base::_S_izero] 25082: && (!__found_zero || __base == 10)) 25082: { 25082: __found_zero = true; 25082: ++__sep_pos; 25082: if (__basefield == 0) 25082: __base = 8; 25082: if (__base == 8) 25082: __sep_pos = 0; 25082: } 25082: else if (__found_zero 25082: && (__c == __lit[__num_base::_S_ix] 25082: || __c == __lit[__num_base::_S_iX])) 25082: { 25082: if (__basefield == 0) 25082: __base = 16; 25082: if (__base == 16) 25082: { 25082: __found_zero = false; 25082: __sep_pos = 0; 25082: } 25082: else 25082: break; 25082: } 25082: else 25082: break; 25082: 25082: if (++__beg != __end) 25082: { 25082: __c = *__beg; 25082: if (!__found_zero) 25082: break; 25082: } 25082: else 25082: __testeof = true; 25082: } 25082: 25082: 25082: 25082: const size_t __len = (__base == 16 ? __num_base::_S_iend 25082: - __num_base::_S_izero : __base); 25082: 25082: 25082: typedef __gnu_cxx::__numeric_traits<_ValueT> __num_traits; 25082: string __found_grouping; 25082: if (__lc->_M_use_grouping) 25082: __found_grouping.reserve(32); 25082: bool __testfail = false; 25082: bool __testoverflow = false; 25082: const __unsigned_type __max = 25082: (__negative && __num_traits::__is_signed) 25082: ? -static_cast<__unsigned_type>(__num_traits::__min) 25082: : __num_traits::__max; 25082: const __unsigned_type __smax = __max / __base; 25082: __unsigned_type __result = 0; 25082: int __digit = 0; 25082: const char_type* __lit_zero = __lit + __num_base::_S_izero; 25082: 25082: if (!__lc->_M_allocated) 25082: 25082: while (!__testeof) 25082: { 25082: __digit = _M_find(__lit_zero, __len, __c); 25082: if (__digit == -1) 25082: break; 25082: 25082: if (__result > __smax) 25082: __testoverflow = true; 25082: else 25082: { 25082: __result *= __base; 25082: __testoverflow |= __result > __max - __digit; 25082: __result += __digit; 25082: ++__sep_pos; 25082: } 25082: 25082: if (++__beg != __end) 25082: __c = *__beg; 25082: else 25082: __testeof = true; 25082: } 25082: else 25082: while (!__testeof) 25082: { 25082: 25082: 25082: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 25082: { 25082: 25082: 25082: if (__sep_pos) 25082: { 25082: __found_grouping += static_cast(__sep_pos); 25082: __sep_pos = 0; 25082: } 25082: else 25082: { 25082: __testfail = true; 25082: break; 25082: } 25082: } 25082: else if (__c == __lc->_M_decimal_point) 25082: break; 25082: else 25082: { 25082: const char_type* __q = 25082: __traits_type::find(__lit_zero, __len, __c); 25082: if (!__q) 25082: break; 25082: 25082: __digit = __q - __lit_zero; 25082: if (__digit > 15) 25082: __digit -= 6; 25082: if (__result > __smax) 25082: __testoverflow = true; 25082: else 25082: { 25082: __result *= __base; 25082: __testoverflow |= __result > __max - __digit; 25082: __result += __digit; 25082: ++__sep_pos; 25082: } 25082: } 25082: 25082: if (++__beg != __end) 25082: __c = *__beg; 25082: else 25082: __testeof = true; 25082: } 25082: 25082: 25082: 25082: if (__found_grouping.size()) 25082: { 25082: 25082: __found_grouping += static_cast(__sep_pos); 25082: 25082: if (!std::__verify_grouping(__lc->_M_grouping, 25082: __lc->_M_grouping_size, 25082: __found_grouping)) 25082: __err = ios_base::failbit; 25082: } 25082: 25082: 25082: 25082: if ((!__sep_pos && !__found_zero && !__found_grouping.size()) 25082: || __testfail) 25082: { 25082: __v = 0; 25082: __err = ios_base::failbit; 25082: } 25082: else if (__testoverflow) 25082: { 25082: if (__negative && __num_traits::__is_signed) 25082: __v = __num_traits::__min; 25082: else 25082: __v = __num_traits::__max; 25082: __err = ios_base::failbit; 25082: } 25082: else 25082: __v = __negative ? -__result : __result; 25082: 25082: if (__testeof) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: 25082: 25082: 25082: template 25082: _InIter 25082: num_get<_CharT, _InIter>:: 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, bool& __v) const 25082: { 25082: if (!(__io.flags() & ios_base::boolalpha)) 25082: { 25082: 25082: 25082: 25082: long __l = -1; 25082: __beg = _M_extract_int(__beg, __end, __io, __err, __l); 25082: if (__l == 0 || __l == 1) 25082: __v = bool(__l); 25082: else 25082: { 25082: 25082: 25082: __v = true; 25082: __err = ios_base::failbit; 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: } 25082: } 25082: else 25082: { 25082: 25082: typedef __numpunct_cache<_CharT> __cache_type; 25082: __use_cache<__cache_type> __uc; 25082: const locale& __loc = __io._M_getloc(); 25082: const __cache_type* __lc = __uc(__loc); 25082: 25082: bool __testf = true; 25082: bool __testt = true; 25082: bool __donef = __lc->_M_falsename_size == 0; 25082: bool __donet = __lc->_M_truename_size == 0; 25082: bool __testeof = false; 25082: size_t __n = 0; 25082: while (!__donef || !__donet) 25082: { 25082: if (__beg == __end) 25082: { 25082: __testeof = true; 25082: break; 25082: } 25082: 25082: const char_type __c = *__beg; 25082: 25082: if (!__donef) 25082: __testf = __c == __lc->_M_falsename[__n]; 25082: 25082: if (!__testf && __donet) 25082: break; 25082: 25082: if (!__donet) 25082: __testt = __c == __lc->_M_truename[__n]; 25082: 25082: if (!__testt && __donef) 25082: break; 25082: 25082: if (!__testt && !__testf) 25082: break; 25082: 25082: ++__n; 25082: ++__beg; 25082: 25082: __donef = !__testf || __n >= __lc->_M_falsename_size; 25082: __donet = !__testt || __n >= __lc->_M_truename_size; 25082: } 25082: if (__testf && __n == __lc->_M_falsename_size && __n) 25082: { 25082: __v = false; 25082: if (__testt && __n == __lc->_M_truename_size) 25082: __err = ios_base::failbit; 25082: else 25082: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; 25082: } 25082: else if (__testt && __n == __lc->_M_truename_size && __n) 25082: { 25082: __v = true; 25082: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; 25082: } 25082: else 25082: { 25082: 25082: 25082: __v = false; 25082: __err = ios_base::failbit; 25082: if (__testeof) 25082: __err |= ios_base::eofbit; 25082: } 25082: } 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: num_get<_CharT, _InIter>:: 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, float& __v) const 25082: { 25082: string __xtrc; 25082: __xtrc.reserve(32); 25082: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 25082: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: num_get<_CharT, _InIter>:: 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, double& __v) const 25082: { 25082: string __xtrc; 25082: __xtrc.reserve(32); 25082: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 25082: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: # 735 "/usr/include/c++/8/bits/locale_facets.tcc" 3 25082: template 25082: _InIter 25082: num_get<_CharT, _InIter>:: 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, long double& __v) const 25082: { 25082: string __xtrc; 25082: __xtrc.reserve(32); 25082: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 25082: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: num_get<_CharT, _InIter>:: 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, void*& __v) const 25082: { 25082: 25082: typedef ios_base::fmtflags fmtflags; 25082: const fmtflags __fmt = __io.flags(); 25082: __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex); 25082: 25082: typedef __gnu_cxx::__conditional_type<(sizeof(void*) 25082: <= sizeof(unsigned long)), 25082: unsigned long, unsigned long long>::__type _UIntPtrType; 25082: 25082: _UIntPtrType __ul; 25082: __beg = _M_extract_int(__beg, __end, __io, __err, __ul); 25082: 25082: 25082: __io.flags(__fmt); 25082: 25082: __v = reinterpret_cast(__ul); 25082: return __beg; 25082: } 25082: 25082: 25082: 25082: template 25082: void 25082: num_put<_CharT, _OutIter>:: 25082: _M_pad(_CharT __fill, streamsize __w, ios_base& __io, 25082: _CharT* __new, const _CharT* __cs, int& __len) const 25082: { 25082: 25082: 25082: __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, 25082: __cs, __w, __len); 25082: __len = static_cast(__w); 25082: } 25082: 25082: 25082: 25082: template 25082: int 25082: __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, 25082: ios_base::fmtflags __flags, bool __dec) 25082: { 25082: _CharT* __buf = __bufend; 25082: if (__builtin_expect(__dec, true)) 25082: { 25082: 25082: do 25082: { 25082: *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; 25082: __v /= 10; 25082: } 25082: while (__v != 0); 25082: } 25082: else if ((__flags & ios_base::basefield) == ios_base::oct) 25082: { 25082: 25082: do 25082: { 25082: *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; 25082: __v >>= 3; 25082: } 25082: while (__v != 0); 25082: } 25082: else 25082: { 25082: 25082: const bool __uppercase = __flags & ios_base::uppercase; 25082: const int __case_offset = __uppercase ? __num_base::_S_oudigits 25082: : __num_base::_S_odigits; 25082: do 25082: { 25082: *--__buf = __lit[(__v & 0xf) + __case_offset]; 25082: __v >>= 4; 25082: } 25082: while (__v != 0); 25082: } 25082: return __bufend - __buf; 25082: } 25082: 25082: 25082: 25082: template 25082: void 25082: num_put<_CharT, _OutIter>:: 25082: _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, 25082: ios_base&, _CharT* __new, _CharT* __cs, int& __len) const 25082: { 25082: _CharT* __p = std::__add_grouping(__new, __sep, __grouping, 25082: __grouping_size, __cs, __cs + __len); 25082: __len = __p - __new; 25082: } 25082: 25082: template 25082: template 25082: _OutIter 25082: num_put<_CharT, _OutIter>:: 25082: _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, 25082: _ValueT __v) const 25082: { 25082: using __gnu_cxx::__add_unsigned; 25082: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; 25082: typedef __numpunct_cache<_CharT> __cache_type; 25082: __use_cache<__cache_type> __uc; 25082: const locale& __loc = __io._M_getloc(); 25082: const __cache_type* __lc = __uc(__loc); 25082: const _CharT* __lit = __lc->_M_atoms_out; 25082: const ios_base::fmtflags __flags = __io.flags(); 25082: 25082: 25082: const int __ilen = 5 * sizeof(_ValueT); 25082: _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 25082: * __ilen)); 25082: 25082: 25082: 25082: const ios_base::fmtflags __basefield = __flags & ios_base::basefield; 25082: const bool __dec = (__basefield != ios_base::oct 25082: && __basefield != ios_base::hex); 25082: const __unsigned_type __u = ((__v > 0 || !__dec) 25082: ? __unsigned_type(__v) 25082: : -__unsigned_type(__v)); 25082: int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); 25082: __cs += __ilen - __len; 25082: 25082: 25082: if (__lc->_M_use_grouping) 25082: { 25082: 25082: 25082: _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 25082: * (__len + 1) 25082: * 2)); 25082: _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, 25082: __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); 25082: __cs = __cs2 + 2; 25082: } 25082: 25082: 25082: if (__builtin_expect(__dec, true)) 25082: { 25082: 25082: if (__v >= 0) 25082: { 25082: if (bool(__flags & ios_base::showpos) 25082: && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) 25082: *--__cs = __lit[__num_base::_S_oplus], ++__len; 25082: } 25082: else 25082: *--__cs = __lit[__num_base::_S_ominus], ++__len; 25082: } 25082: else if (bool(__flags & ios_base::showbase) && __v) 25082: { 25082: if (__basefield == ios_base::oct) 25082: *--__cs = __lit[__num_base::_S_odigits], ++__len; 25082: else 25082: { 25082: 25082: const bool __uppercase = __flags & ios_base::uppercase; 25082: *--__cs = __lit[__num_base::_S_ox + __uppercase]; 25082: 25082: *--__cs = __lit[__num_base::_S_odigits]; 25082: __len += 2; 25082: } 25082: } 25082: 25082: 25082: const streamsize __w = __io.width(); 25082: if (__w > static_cast(__len)) 25082: { 25082: _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 25082: * __w)); 25082: _M_pad(__fill, __w, __io, __cs3, __cs, __len); 25082: __cs = __cs3; 25082: } 25082: __io.width(0); 25082: 25082: 25082: 25082: return std::__write(__s, __cs, __len); 25082: } 25082: 25082: template 25082: void 25082: num_put<_CharT, _OutIter>:: 25082: _M_group_float(const char* __grouping, size_t __grouping_size, 25082: _CharT __sep, const _CharT* __p, _CharT* __new, 25082: _CharT* __cs, int& __len) const 25082: { 25082: 25082: 25082: 25082: const int __declen = __p ? __p - __cs : __len; 25082: _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, 25082: __grouping_size, 25082: __cs, __cs + __declen); 25082: 25082: 25082: int __newlen = __p2 - __new; 25082: if (__p) 25082: { 25082: char_traits<_CharT>::copy(__p2, __p, __len - __declen); 25082: __newlen += __len - __declen; 25082: } 25082: __len = __newlen; 25082: } 25082: # 971 "/usr/include/c++/8/bits/locale_facets.tcc" 3 25082: template 25082: template 25082: _OutIter 25082: num_put<_CharT, _OutIter>:: 25082: _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, 25082: _ValueT __v) const 25082: { 25082: typedef __numpunct_cache<_CharT> __cache_type; 25082: __use_cache<__cache_type> __uc; 25082: const locale& __loc = __io._M_getloc(); 25082: const __cache_type* __lc = __uc(__loc); 25082: 25082: 25082: const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); 25082: 25082: const int __max_digits = 25082: __gnu_cxx::__numeric_traits<_ValueT>::__digits10; 25082: 25082: 25082: int __len; 25082: 25082: char __fbuf[16]; 25082: __num_base::_S_format_float(__io, __fbuf, __mod); 25082: 25082: 25082: 25082: const bool __use_prec = 25082: (__io.flags() & ios_base::floatfield) != ios_base::floatfield; 25082: 25082: 25082: 25082: int __cs_size = __max_digits * 3; 25082: char* __cs = static_cast(__builtin_alloca(__cs_size)); 25082: if (__use_prec) 25082: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 25082: __fbuf, __prec, __v); 25082: else 25082: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 25082: __fbuf, __v); 25082: 25082: 25082: if (__len >= __cs_size) 25082: { 25082: __cs_size = __len + 1; 25082: __cs = static_cast(__builtin_alloca(__cs_size)); 25082: if (__use_prec) 25082: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 25082: __fbuf, __prec, __v); 25082: else 25082: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 25082: __fbuf, __v); 25082: } 25082: # 1044 "/usr/include/c++/8/bits/locale_facets.tcc" 3 25082: const ctype<_CharT>& __ctype = use_facet >(__loc); 25082: 25082: _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 25082: * __len)); 25082: __ctype.widen(__cs, __cs + __len, __ws); 25082: 25082: 25082: _CharT* __wp = 0; 25082: const char* __p = char_traits::find(__cs, __len, '.'); 25082: if (__p) 25082: { 25082: __wp = __ws + (__p - __cs); 25082: *__wp = __lc->_M_decimal_point; 25082: } 25082: 25082: 25082: 25082: 25082: if (__lc->_M_use_grouping 25082: && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' 25082: && __cs[1] >= '0' && __cs[2] >= '0'))) 25082: { 25082: 25082: 25082: _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 25082: * __len * 2)); 25082: 25082: streamsize __off = 0; 25082: if (__cs[0] == '-' || __cs[0] == '+') 25082: { 25082: __off = 1; 25082: __ws2[0] = __ws[0]; 25082: __len -= 1; 25082: } 25082: 25082: _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, 25082: __lc->_M_thousands_sep, __wp, __ws2 + __off, 25082: __ws + __off, __len); 25082: __len += __off; 25082: 25082: __ws = __ws2; 25082: } 25082: 25082: 25082: const streamsize __w = __io.width(); 25082: if (__w > static_cast(__len)) 25082: { 25082: _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 25082: * __w)); 25082: _M_pad(__fill, __w, __io, __ws3, __ws, __len); 25082: __ws = __ws3; 25082: } 25082: __io.width(0); 25082: 25082: 25082: 25082: return std::__write(__s, __ws, __len); 25082: } 25082: 25082: template 25082: _OutIter 25082: num_put<_CharT, _OutIter>:: 25082: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const 25082: { 25082: const ios_base::fmtflags __flags = __io.flags(); 25082: if ((__flags & ios_base::boolalpha) == 0) 25082: { 25082: const long __l = __v; 25082: __s = _M_insert_int(__s, __io, __fill, __l); 25082: } 25082: else 25082: { 25082: typedef __numpunct_cache<_CharT> __cache_type; 25082: __use_cache<__cache_type> __uc; 25082: const locale& __loc = __io._M_getloc(); 25082: const __cache_type* __lc = __uc(__loc); 25082: 25082: const _CharT* __name = __v ? __lc->_M_truename 25082: : __lc->_M_falsename; 25082: int __len = __v ? __lc->_M_truename_size 25082: : __lc->_M_falsename_size; 25082: 25082: const streamsize __w = __io.width(); 25082: if (__w > static_cast(__len)) 25082: { 25082: const streamsize __plen = __w - __len; 25082: _CharT* __ps 25082: = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 25082: * __plen)); 25082: 25082: char_traits<_CharT>::assign(__ps, __plen, __fill); 25082: __io.width(0); 25082: 25082: if ((__flags & ios_base::adjustfield) == ios_base::left) 25082: { 25082: __s = std::__write(__s, __name, __len); 25082: __s = std::__write(__s, __ps, __plen); 25082: } 25082: else 25082: { 25082: __s = std::__write(__s, __ps, __plen); 25082: __s = std::__write(__s, __name, __len); 25082: } 25082: return __s; 25082: } 25082: __io.width(0); 25082: __s = std::__write(__s, __name, __len); 25082: } 25082: return __s; 25082: } 25082: 25082: template 25082: _OutIter 25082: num_put<_CharT, _OutIter>:: 25082: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const 25082: { return _M_insert_float(__s, __io, __fill, char(), __v); } 25082: # 1169 "/usr/include/c++/8/bits/locale_facets.tcc" 3 25082: template 25082: _OutIter 25082: num_put<_CharT, _OutIter>:: 25082: do_put(iter_type __s, ios_base& __io, char_type __fill, 25082: long double __v) const 25082: { return _M_insert_float(__s, __io, __fill, 'L', __v); } 25082: 25082: template 25082: _OutIter 25082: num_put<_CharT, _OutIter>:: 25082: do_put(iter_type __s, ios_base& __io, char_type __fill, 25082: const void* __v) const 25082: { 25082: const ios_base::fmtflags __flags = __io.flags(); 25082: const ios_base::fmtflags __fmt = ~(ios_base::basefield 25082: | ios_base::uppercase); 25082: __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase)); 25082: 25082: typedef __gnu_cxx::__conditional_type<(sizeof(const void*) 25082: <= sizeof(unsigned long)), 25082: unsigned long, unsigned long long>::__type _UIntPtrType; 25082: 25082: __s = _M_insert_int(__s, __io, __fill, 25082: reinterpret_cast<_UIntPtrType>(__v)); 25082: __io.flags(__flags); 25082: return __s; 25082: } 25082: 25082: 25082: # 1206 "/usr/include/c++/8/bits/locale_facets.tcc" 3 25082: template 25082: void 25082: __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, 25082: _CharT* __news, const _CharT* __olds, 25082: streamsize __newlen, streamsize __oldlen) 25082: { 25082: const size_t __plen = static_cast(__newlen - __oldlen); 25082: const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; 25082: 25082: 25082: if (__adjust == ios_base::left) 25082: { 25082: _Traits::copy(__news, __olds, __oldlen); 25082: _Traits::assign(__news + __oldlen, __plen, __fill); 25082: return; 25082: } 25082: 25082: size_t __mod = 0; 25082: if (__adjust == ios_base::internal) 25082: { 25082: 25082: 25082: 25082: const locale& __loc = __io._M_getloc(); 25082: const ctype<_CharT>& __ctype = use_facet >(__loc); 25082: 25082: if (__ctype.widen('-') == __olds[0] 25082: || __ctype.widen('+') == __olds[0]) 25082: { 25082: __news[0] = __olds[0]; 25082: __mod = 1; 25082: ++__news; 25082: } 25082: else if (__ctype.widen('0') == __olds[0] 25082: && __oldlen > 1 25082: && (__ctype.widen('x') == __olds[1] 25082: || __ctype.widen('X') == __olds[1])) 25082: { 25082: __news[0] = __olds[0]; 25082: __news[1] = __olds[1]; 25082: __mod = 2; 25082: __news += 2; 25082: } 25082: 25082: } 25082: _Traits::assign(__news, __plen, __fill); 25082: _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); 25082: } 25082: 25082: template 25082: _CharT* 25082: __add_grouping(_CharT* __s, _CharT __sep, 25082: const char* __gbeg, size_t __gsize, 25082: const _CharT* __first, const _CharT* __last) 25082: { 25082: size_t __idx = 0; 25082: size_t __ctr = 0; 25082: 25082: while (__last - __first > __gbeg[__idx] 25082: && static_cast(__gbeg[__idx]) > 0 25082: && __gbeg[__idx] != __gnu_cxx::__numeric_traits::__max) 25082: { 25082: __last -= __gbeg[__idx]; 25082: __idx < __gsize - 1 ? ++__idx : ++__ctr; 25082: } 25082: 25082: while (__first != __last) 25082: *__s++ = *__first++; 25082: 25082: while (__ctr--) 25082: { 25082: *__s++ = __sep; 25082: for (char __i = __gbeg[__idx]; __i > 0; --__i) 25082: *__s++ = *__first++; 25082: } 25082: 25082: while (__idx--) 25082: { 25082: *__s++ = __sep; 25082: for (char __i = __gbeg[__idx]; __i > 0; --__i) 25082: *__s++ = *__first++; 25082: } 25082: 25082: return __s; 25082: } 25082: 25082: 25082: 25082: 25082: extern template class __cxx11:: numpunct; 25082: extern template class __cxx11:: numpunct_byname; 25082: extern template class num_get; 25082: extern template class num_put; 25082: extern template class ctype_byname; 25082: 25082: extern template 25082: const ctype& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const numpunct& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const num_put& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const num_get& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: 25082: extern template class __cxx11:: numpunct; 25082: extern template class __cxx11:: numpunct_byname; 25082: extern template class num_get; 25082: extern template class num_put; 25082: extern template class ctype_byname; 25082: 25082: extern template 25082: const ctype& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const numpunct& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const num_put& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const num_get& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: 25082: 25082: 25082: } 25082: # 2656 "/usr/include/c++/8/bits/locale_facets.h" 2 3 25082: # 38 "/usr/include/c++/8/bits/basic_ios.h" 2 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: inline const _Facet& 25082: __check_facet(const _Facet* __f) 25082: { 25082: if (!__f) 25082: __throw_bad_cast(); 25082: return *__f; 25082: } 25082: # 66 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: template 25082: class basic_ios : public ios_base 25082: { 25082: public: 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef typename _Traits::int_type int_type; 25082: typedef typename _Traits::pos_type pos_type; 25082: typedef typename _Traits::off_type off_type; 25082: typedef _Traits traits_type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef ctype<_CharT> __ctype_type; 25082: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > 25082: __num_put_type; 25082: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > 25082: __num_get_type; 25082: 25082: 25082: 25082: protected: 25082: basic_ostream<_CharT, _Traits>* _M_tie; 25082: mutable char_type _M_fill; 25082: mutable bool _M_fill_init; 25082: basic_streambuf<_CharT, _Traits>* _M_streambuf; 25082: 25082: 25082: const __ctype_type* _M_ctype; 25082: 25082: const __num_put_type* _M_num_put; 25082: 25082: const __num_get_type* _M_num_get; 25082: 25082: public: 25082: # 117 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: explicit operator bool() const 25082: { return !this->fail(); } 25082: 25082: 25082: 25082: 25082: 25082: bool 25082: operator!() const 25082: { return this->fail(); } 25082: # 136 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: iostate 25082: rdstate() const 25082: { return _M_streambuf_state; } 25082: # 147 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: void 25082: clear(iostate __state = goodbit); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: setstate(iostate __state) 25082: { this->clear(this->rdstate() | __state); } 25082: 25082: 25082: 25082: 25082: void 25082: _M_setstate(iostate __state) 25082: { 25082: 25082: 25082: _M_streambuf_state |= __state; 25082: if (this->exceptions() & __state) 25082: throw; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: bool 25082: good() const 25082: { return this->rdstate() == 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: bool 25082: eof() const 25082: { return (this->rdstate() & eofbit) != 0; } 25082: # 200 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: bool 25082: fail() const 25082: { return (this->rdstate() & (badbit | failbit)) != 0; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: bool 25082: bad() const 25082: { return (this->rdstate() & badbit) != 0; } 25082: # 221 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: iostate 25082: exceptions() const 25082: { return _M_exception; } 25082: # 256 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: void 25082: exceptions(iostate __except) 25082: { 25082: _M_exception = __except; 25082: this->clear(_M_streambuf_state); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: basic_ios(basic_streambuf<_CharT, _Traits>* __sb) 25082: : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), 25082: _M_ctype(0), _M_num_put(0), _M_num_get(0) 25082: { this->init(__sb); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual 25082: ~basic_ios() { } 25082: # 294 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: basic_ostream<_CharT, _Traits>* 25082: tie() const 25082: { return _M_tie; } 25082: # 306 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: basic_ostream<_CharT, _Traits>* 25082: tie(basic_ostream<_CharT, _Traits>* __tiestr) 25082: { 25082: basic_ostream<_CharT, _Traits>* __old = _M_tie; 25082: _M_tie = __tiestr; 25082: return __old; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_streambuf<_CharT, _Traits>* 25082: rdbuf() const 25082: { return _M_streambuf; } 25082: # 346 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: basic_streambuf<_CharT, _Traits>* 25082: rdbuf(basic_streambuf<_CharT, _Traits>* __sb); 25082: # 360 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: basic_ios& 25082: copyfmt(const basic_ios& __rhs); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: char_type 25082: fill() const 25082: { 25082: if (!_M_fill_init) 25082: { 25082: _M_fill = this->widen(' '); 25082: _M_fill_init = true; 25082: } 25082: return _M_fill; 25082: } 25082: # 389 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: char_type 25082: fill(char_type __ch) 25082: { 25082: char_type __old = this->fill(); 25082: _M_fill = __ch; 25082: return __old; 25082: } 25082: # 409 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: locale 25082: imbue(const locale& __loc); 25082: # 429 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: char 25082: narrow(char_type __c, char __dfault) const 25082: { return __check_facet(_M_ctype).narrow(__c, __dfault); } 25082: # 448 "/usr/include/c++/8/bits/basic_ios.h" 3 25082: char_type 25082: widen(char __c) const 25082: { return __check_facet(_M_ctype).widen(__c); } 25082: 25082: protected: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: basic_ios() 25082: : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), 25082: _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) 25082: { } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: init(basic_streambuf<_CharT, _Traits>* __sb); 25082: 25082: 25082: basic_ios(const basic_ios&) = delete; 25082: basic_ios& operator=(const basic_ios&) = delete; 25082: 25082: void 25082: move(basic_ios& __rhs) 25082: { 25082: ios_base::_M_move(__rhs); 25082: _M_cache_locale(_M_ios_locale); 25082: this->tie(__rhs.tie(nullptr)); 25082: _M_fill = __rhs._M_fill; 25082: _M_fill_init = __rhs._M_fill_init; 25082: _M_streambuf = nullptr; 25082: } 25082: 25082: void 25082: move(basic_ios&& __rhs) 25082: { this->move(__rhs); } 25082: 25082: void 25082: swap(basic_ios& __rhs) noexcept 25082: { 25082: ios_base::_M_swap(__rhs); 25082: _M_cache_locale(_M_ios_locale); 25082: __rhs._M_cache_locale(__rhs._M_ios_locale); 25082: std::swap(_M_tie, __rhs._M_tie); 25082: std::swap(_M_fill, __rhs._M_fill); 25082: std::swap(_M_fill_init, __rhs._M_fill_init); 25082: } 25082: 25082: void 25082: set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb) 25082: { _M_streambuf = __sb; } 25082: 25082: 25082: void 25082: _M_cache_locale(const locale& __loc); 25082: }; 25082: 25082: 25082: } 25082: 25082: # 1 "/usr/include/c++/8/bits/basic_ios.tcc" 1 3 25082: # 33 "/usr/include/c++/8/bits/basic_ios.tcc" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/basic_ios.tcc" 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: void 25082: basic_ios<_CharT, _Traits>::clear(iostate __state) 25082: { 25082: if (this->rdbuf()) 25082: _M_streambuf_state = __state; 25082: else 25082: _M_streambuf_state = __state | badbit; 25082: if (this->exceptions() & this->rdstate()) 25082: __throw_ios_failure(("basic_ios::clear")); 25082: } 25082: 25082: template 25082: basic_streambuf<_CharT, _Traits>* 25082: basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) 25082: { 25082: basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; 25082: _M_streambuf = __sb; 25082: this->clear(); 25082: return __old; 25082: } 25082: 25082: template 25082: basic_ios<_CharT, _Traits>& 25082: basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) 25082: { 25082: 25082: 25082: if (this != &__rhs) 25082: { 25082: 25082: 25082: 25082: 25082: _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? 25082: _M_local_word : new _Words[__rhs._M_word_size]; 25082: 25082: 25082: _Callback_list* __cb = __rhs._M_callbacks; 25082: if (__cb) 25082: __cb->_M_add_reference(); 25082: _M_call_callbacks(erase_event); 25082: if (_M_word != _M_local_word) 25082: { 25082: delete [] _M_word; 25082: _M_word = 0; 25082: } 25082: _M_dispose_callbacks(); 25082: 25082: 25082: _M_callbacks = __cb; 25082: for (int __i = 0; __i < __rhs._M_word_size; ++__i) 25082: __words[__i] = __rhs._M_word[__i]; 25082: _M_word = __words; 25082: _M_word_size = __rhs._M_word_size; 25082: 25082: this->flags(__rhs.flags()); 25082: this->width(__rhs.width()); 25082: this->precision(__rhs.precision()); 25082: this->tie(__rhs.tie()); 25082: this->fill(__rhs.fill()); 25082: _M_ios_locale = __rhs.getloc(); 25082: _M_cache_locale(_M_ios_locale); 25082: 25082: _M_call_callbacks(copyfmt_event); 25082: 25082: 25082: this->exceptions(__rhs.exceptions()); 25082: } 25082: return *this; 25082: } 25082: 25082: 25082: template 25082: locale 25082: basic_ios<_CharT, _Traits>::imbue(const locale& __loc) 25082: { 25082: locale __old(this->getloc()); 25082: ios_base::imbue(__loc); 25082: _M_cache_locale(__loc); 25082: if (this->rdbuf() != 0) 25082: this->rdbuf()->pubimbue(__loc); 25082: return __old; 25082: } 25082: 25082: template 25082: void 25082: basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) 25082: { 25082: 25082: ios_base::_M_init(); 25082: 25082: 25082: _M_cache_locale(_M_ios_locale); 25082: # 146 "/usr/include/c++/8/bits/basic_ios.tcc" 3 25082: _M_fill = _CharT(); 25082: _M_fill_init = false; 25082: 25082: _M_tie = 0; 25082: _M_exception = goodbit; 25082: _M_streambuf = __sb; 25082: _M_streambuf_state = __sb ? goodbit : badbit; 25082: } 25082: 25082: template 25082: void 25082: basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) 25082: { 25082: if (__builtin_expect(has_facet<__ctype_type>(__loc), true)) 25082: _M_ctype = std::__addressof(use_facet<__ctype_type>(__loc)); 25082: else 25082: _M_ctype = 0; 25082: 25082: if (__builtin_expect(has_facet<__num_put_type>(__loc), true)) 25082: _M_num_put = std::__addressof(use_facet<__num_put_type>(__loc)); 25082: else 25082: _M_num_put = 0; 25082: 25082: if (__builtin_expect(has_facet<__num_get_type>(__loc), true)) 25082: _M_num_get = std::__addressof(use_facet<__num_get_type>(__loc)); 25082: else 25082: _M_num_get = 0; 25082: } 25082: 25082: 25082: 25082: 25082: extern template class basic_ios; 25082: 25082: 25082: extern template class basic_ios; 25082: 25082: 25082: 25082: 25082: } 25082: # 517 "/usr/include/c++/8/bits/basic_ios.h" 2 3 25082: # 45 "/usr/include/c++/8/ios" 2 3 25082: # 39 "/usr/include/c++/8/ostream" 2 3 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 57 "/usr/include/c++/8/ostream" 3 25082: template 25082: class basic_ostream : virtual public basic_ios<_CharT, _Traits> 25082: { 25082: public: 25082: 25082: typedef _CharT char_type; 25082: typedef typename _Traits::int_type int_type; 25082: typedef typename _Traits::pos_type pos_type; 25082: typedef typename _Traits::off_type off_type; 25082: typedef _Traits traits_type; 25082: 25082: 25082: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 25082: typedef basic_ios<_CharT, _Traits> __ios_type; 25082: typedef basic_ostream<_CharT, _Traits> __ostream_type; 25082: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > 25082: __num_put_type; 25082: typedef ctype<_CharT> __ctype_type; 25082: # 83 "/usr/include/c++/8/ostream" 3 25082: explicit 25082: basic_ostream(__streambuf_type* __sb) 25082: { this->init(__sb); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual 25082: ~basic_ostream() { } 25082: 25082: 25082: class sentry; 25082: friend class sentry; 25082: # 107 "/usr/include/c++/8/ostream" 3 25082: __ostream_type& 25082: operator<<(__ostream_type& (*__pf)(__ostream_type&)) 25082: { 25082: 25082: 25082: 25082: return __pf(*this); 25082: } 25082: 25082: __ostream_type& 25082: operator<<(__ios_type& (*__pf)(__ios_type&)) 25082: { 25082: 25082: 25082: 25082: __pf(*this); 25082: return *this; 25082: } 25082: 25082: __ostream_type& 25082: operator<<(ios_base& (*__pf) (ios_base&)) 25082: { 25082: 25082: 25082: 25082: __pf(*this); 25082: return *this; 25082: } 25082: # 165 "/usr/include/c++/8/ostream" 3 25082: __ostream_type& 25082: operator<<(long __n) 25082: { return _M_insert(__n); } 25082: 25082: __ostream_type& 25082: operator<<(unsigned long __n) 25082: { return _M_insert(__n); } 25082: 25082: __ostream_type& 25082: operator<<(bool __n) 25082: { return _M_insert(__n); } 25082: 25082: __ostream_type& 25082: operator<<(short __n); 25082: 25082: __ostream_type& 25082: operator<<(unsigned short __n) 25082: { 25082: 25082: 25082: return _M_insert(static_cast(__n)); 25082: } 25082: 25082: __ostream_type& 25082: operator<<(int __n); 25082: 25082: __ostream_type& 25082: operator<<(unsigned int __n) 25082: { 25082: 25082: 25082: return _M_insert(static_cast(__n)); 25082: } 25082: 25082: 25082: __ostream_type& 25082: operator<<(long long __n) 25082: { return _M_insert(__n); } 25082: 25082: __ostream_type& 25082: operator<<(unsigned long long __n) 25082: { return _M_insert(__n); } 25082: # 219 "/usr/include/c++/8/ostream" 3 25082: __ostream_type& 25082: operator<<(double __f) 25082: { return _M_insert(__f); } 25082: 25082: __ostream_type& 25082: operator<<(float __f) 25082: { 25082: 25082: 25082: return _M_insert(static_cast(__f)); 25082: } 25082: 25082: __ostream_type& 25082: operator<<(long double __f) 25082: { return _M_insert(__f); } 25082: # 244 "/usr/include/c++/8/ostream" 3 25082: __ostream_type& 25082: operator<<(const void* __p) 25082: { return _M_insert(__p); } 25082: # 269 "/usr/include/c++/8/ostream" 3 25082: __ostream_type& 25082: operator<<(__streambuf_type* __sb); 25082: # 302 "/usr/include/c++/8/ostream" 3 25082: __ostream_type& 25082: put(char_type __c); 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: _M_write(const char_type* __s, streamsize __n) 25082: { 25082: const streamsize __put = this->rdbuf()->sputn(__s, __n); 25082: if (__put != __n) 25082: this->setstate(ios_base::badbit); 25082: } 25082: # 334 "/usr/include/c++/8/ostream" 3 25082: __ostream_type& 25082: write(const char_type* __s, streamsize __n); 25082: # 347 "/usr/include/c++/8/ostream" 3 25082: __ostream_type& 25082: flush(); 25082: # 357 "/usr/include/c++/8/ostream" 3 25082: pos_type 25082: tellp(); 25082: # 368 "/usr/include/c++/8/ostream" 3 25082: __ostream_type& 25082: seekp(pos_type); 25082: # 380 "/usr/include/c++/8/ostream" 3 25082: __ostream_type& 25082: seekp(off_type, ios_base::seekdir); 25082: 25082: protected: 25082: basic_ostream() 25082: { this->init(0); } 25082: 25082: 25082: 25082: basic_ostream(basic_iostream<_CharT, _Traits>&) { } 25082: 25082: basic_ostream(const basic_ostream&) = delete; 25082: 25082: basic_ostream(basic_ostream&& __rhs) 25082: : __ios_type() 25082: { __ios_type::move(__rhs); } 25082: 25082: 25082: 25082: basic_ostream& operator=(const basic_ostream&) = delete; 25082: 25082: basic_ostream& 25082: operator=(basic_ostream&& __rhs) 25082: { 25082: swap(__rhs); 25082: return *this; 25082: } 25082: 25082: void 25082: swap(basic_ostream& __rhs) 25082: { __ios_type::swap(__rhs); } 25082: 25082: 25082: template 25082: __ostream_type& 25082: _M_insert(_ValueT __v); 25082: }; 25082: # 425 "/usr/include/c++/8/ostream" 3 25082: template 25082: class basic_ostream<_CharT, _Traits>::sentry 25082: { 25082: 25082: bool _M_ok; 25082: basic_ostream<_CharT, _Traits>& _M_os; 25082: 25082: public: 25082: # 444 "/usr/include/c++/8/ostream" 3 25082: explicit 25082: sentry(basic_ostream<_CharT, _Traits>& __os); 25082: # 454 "/usr/include/c++/8/ostream" 3 25082: ~sentry() 25082: { 25082: 25082: if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception()) 25082: { 25082: 25082: if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) 25082: _M_os.setstate(ios_base::badbit); 25082: } 25082: } 25082: # 473 "/usr/include/c++/8/ostream" 3 25082: explicit 25082: 25082: operator bool() const 25082: { return _M_ok; } 25082: }; 25082: # 495 "/usr/include/c++/8/ostream" 3 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) 25082: { return __ostream_insert(__out, &__c, 1); } 25082: 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) 25082: { return (__out << __out.widen(__c)); } 25082: 25082: 25082: template 25082: inline basic_ostream& 25082: operator<<(basic_ostream& __out, char __c) 25082: { return __ostream_insert(__out, &__c, 1); } 25082: 25082: 25082: template 25082: inline basic_ostream& 25082: operator<<(basic_ostream& __out, signed char __c) 25082: { return (__out << static_cast(__c)); } 25082: 25082: template 25082: inline basic_ostream& 25082: operator<<(basic_ostream& __out, unsigned char __c) 25082: { return (__out << static_cast(__c)); } 25082: # 537 "/usr/include/c++/8/ostream" 3 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) 25082: { 25082: if (!__s) 25082: __out.setstate(ios_base::badbit); 25082: else 25082: __ostream_insert(__out, __s, 25082: static_cast(_Traits::length(__s))); 25082: return __out; 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits> & 25082: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); 25082: 25082: 25082: template 25082: inline basic_ostream& 25082: operator<<(basic_ostream& __out, const char* __s) 25082: { 25082: if (!__s) 25082: __out.setstate(ios_base::badbit); 25082: else 25082: __ostream_insert(__out, __s, 25082: static_cast(_Traits::length(__s))); 25082: return __out; 25082: } 25082: 25082: 25082: template 25082: inline basic_ostream& 25082: operator<<(basic_ostream& __out, const signed char* __s) 25082: { return (__out << reinterpret_cast(__s)); } 25082: 25082: template 25082: inline basic_ostream & 25082: operator<<(basic_ostream& __out, const unsigned char* __s) 25082: { return (__out << reinterpret_cast(__s)); } 25082: # 588 "/usr/include/c++/8/ostream" 3 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: endl(basic_ostream<_CharT, _Traits>& __os) 25082: { return flush(__os.put(__os.widen('\n'))); } 25082: # 600 "/usr/include/c++/8/ostream" 3 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: ends(basic_ostream<_CharT, _Traits>& __os) 25082: { return __os.put(_CharT()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: flush(basic_ostream<_CharT, _Traits>& __os) 25082: { return __os.flush(); } 25082: 25082: 25082: template 25082: basic_ostream<_Ch, _Up>& 25082: __is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*); 25082: 25082: template 25082: struct __is_convertible_to_basic_ostream_impl 25082: { 25082: using __ostream_type = void; 25082: }; 25082: 25082: template 25082: using __do_is_convertible_to_basic_ostream_impl = 25082: decltype(__is_convertible_to_basic_ostream_test 25082: (declval::type*>())); 25082: 25082: template 25082: struct __is_convertible_to_basic_ostream_impl 25082: <_Tp, 25082: __void_t<__do_is_convertible_to_basic_ostream_impl<_Tp>>> 25082: { 25082: using __ostream_type = 25082: __do_is_convertible_to_basic_ostream_impl<_Tp>; 25082: }; 25082: 25082: template 25082: struct __is_convertible_to_basic_ostream 25082: : __is_convertible_to_basic_ostream_impl<_Tp> 25082: { 25082: public: 25082: using type = __not_::__ostream_type>>; 25082: constexpr static bool value = type::value; 25082: }; 25082: 25082: template 25082: struct __is_insertable : false_type {}; 25082: 25082: template 25082: struct __is_insertable<_Ostream, _Tp, 25082: __void_t() 25082: << declval())>> 25082: : true_type {}; 25082: 25082: template 25082: using __rvalue_ostream_type = 25082: typename __is_convertible_to_basic_ostream< 25082: _Ostream>::__ostream_type; 25082: # 674 "/usr/include/c++/8/ostream" 3 25082: template 25082: inline 25082: typename enable_if<__and_<__not_>, 25082: __is_convertible_to_basic_ostream<_Ostream>, 25082: __is_insertable< 25082: __rvalue_ostream_type<_Ostream>, 25082: const _Tp&>>::value, 25082: __rvalue_ostream_type<_Ostream>>::type 25082: operator<<(_Ostream&& __os, const _Tp& __x) 25082: { 25082: __rvalue_ostream_type<_Ostream> __ret_os = __os; 25082: __ret_os << __x; 25082: return __ret_os; 25082: } 25082: 25082: 25082: 25082: } 25082: 25082: # 1 "/usr/include/c++/8/bits/ostream.tcc" 1 3 25082: # 37 "/usr/include/c++/8/bits/ostream.tcc" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/ostream.tcc" 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>::sentry:: 25082: sentry(basic_ostream<_CharT, _Traits>& __os) 25082: : _M_ok(false), _M_os(__os) 25082: { 25082: 25082: if (__os.tie() && __os.good()) 25082: __os.tie()->flush(); 25082: 25082: if (__os.good()) 25082: _M_ok = true; 25082: else 25082: __os.setstate(ios_base::failbit); 25082: } 25082: 25082: template 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: basic_ostream<_CharT, _Traits>:: 25082: _M_insert(_ValueT __v) 25082: { 25082: sentry __cerb(*this); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: const __num_put_type& __np = __check_facet(this->_M_num_put); 25082: if (__np.put(*this, *this, this->fill(), __v).failed()) 25082: __err |= ios_base::badbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: basic_ostream<_CharT, _Traits>:: 25082: operator<<(short __n) 25082: { 25082: 25082: 25082: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; 25082: if (__fmt == ios_base::oct || __fmt == ios_base::hex) 25082: return _M_insert(static_cast(static_cast(__n))); 25082: else 25082: return _M_insert(static_cast(__n)); 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: basic_ostream<_CharT, _Traits>:: 25082: operator<<(int __n) 25082: { 25082: 25082: 25082: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; 25082: if (__fmt == ios_base::oct || __fmt == ios_base::hex) 25082: return _M_insert(static_cast(static_cast(__n))); 25082: else 25082: return _M_insert(static_cast(__n)); 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: basic_ostream<_CharT, _Traits>:: 25082: operator<<(__streambuf_type* __sbin) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: sentry __cerb(*this); 25082: if (__cerb && __sbin) 25082: { 25082: try 25082: { 25082: if (!__copy_streambufs(__sbin, this->rdbuf())) 25082: __err |= ios_base::failbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::failbit); } 25082: } 25082: else if (!__sbin) 25082: __err |= ios_base::badbit; 25082: if (__err) 25082: this->setstate(__err); 25082: return *this; 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: basic_ostream<_CharT, _Traits>:: 25082: put(char_type __c) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: sentry __cerb(*this); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: const int_type __put = this->rdbuf()->sputc(__c); 25082: if (traits_type::eq_int_type(__put, traits_type::eof())) 25082: __err |= ios_base::badbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: basic_ostream<_CharT, _Traits>:: 25082: write(const _CharT* __s, streamsize __n) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: sentry __cerb(*this); 25082: if (__cerb) 25082: { 25082: try 25082: { _M_write(__s, __n); } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: basic_ostream<_CharT, _Traits>:: 25082: flush() 25082: { 25082: 25082: 25082: 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: if (this->rdbuf() && this->rdbuf()->pubsync() == -1) 25082: __err |= ios_base::badbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: return *this; 25082: } 25082: 25082: template 25082: typename basic_ostream<_CharT, _Traits>::pos_type 25082: basic_ostream<_CharT, _Traits>:: 25082: tellp() 25082: { 25082: pos_type __ret = pos_type(-1); 25082: try 25082: { 25082: if (!this->fail()) 25082: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: return __ret; 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: basic_ostream<_CharT, _Traits>:: 25082: seekp(pos_type __pos) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: if (!this->fail()) 25082: { 25082: 25082: 25082: const pos_type __p = this->rdbuf()->pubseekpos(__pos, 25082: ios_base::out); 25082: 25082: 25082: if (__p == pos_type(off_type(-1))) 25082: __err |= ios_base::failbit; 25082: } 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: return *this; 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: basic_ostream<_CharT, _Traits>:: 25082: seekp(off_type __off, ios_base::seekdir __dir) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: if (!this->fail()) 25082: { 25082: 25082: 25082: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, 25082: ios_base::out); 25082: 25082: 25082: if (__p == pos_type(off_type(-1))) 25082: __err |= ios_base::failbit; 25082: } 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: return *this; 25082: } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) 25082: { 25082: if (!__s) 25082: __out.setstate(ios_base::badbit); 25082: else 25082: { 25082: 25082: 25082: const size_t __clen = char_traits::length(__s); 25082: try 25082: { 25082: struct __ptr_guard 25082: { 25082: _CharT *__p; 25082: __ptr_guard (_CharT *__ip): __p(__ip) { } 25082: ~__ptr_guard() { delete[] __p; } 25082: _CharT* __get() { return __p; } 25082: } __pg (new _CharT[__clen]); 25082: 25082: _CharT *__ws = __pg.__get(); 25082: for (size_t __i = 0; __i < __clen; ++__i) 25082: __ws[__i] = __out.widen(__s[__i]); 25082: __ostream_insert(__out, __ws, __clen); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __out._M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { __out._M_setstate(ios_base::badbit); } 25082: } 25082: return __out; 25082: } 25082: 25082: 25082: 25082: 25082: extern template class basic_ostream; 25082: extern template ostream& endl(ostream&); 25082: extern template ostream& ends(ostream&); 25082: extern template ostream& flush(ostream&); 25082: extern template ostream& operator<<(ostream&, char); 25082: extern template ostream& operator<<(ostream&, unsigned char); 25082: extern template ostream& operator<<(ostream&, signed char); 25082: extern template ostream& operator<<(ostream&, const char*); 25082: extern template ostream& operator<<(ostream&, const unsigned char*); 25082: extern template ostream& operator<<(ostream&, const signed char*); 25082: 25082: extern template ostream& ostream::_M_insert(long); 25082: extern template ostream& ostream::_M_insert(unsigned long); 25082: extern template ostream& ostream::_M_insert(bool); 25082: 25082: extern template ostream& ostream::_M_insert(long long); 25082: extern template ostream& ostream::_M_insert(unsigned long long); 25082: 25082: extern template ostream& ostream::_M_insert(double); 25082: extern template ostream& ostream::_M_insert(long double); 25082: extern template ostream& ostream::_M_insert(const void*); 25082: 25082: 25082: extern template class basic_ostream; 25082: extern template wostream& endl(wostream&); 25082: extern template wostream& ends(wostream&); 25082: extern template wostream& flush(wostream&); 25082: extern template wostream& operator<<(wostream&, wchar_t); 25082: extern template wostream& operator<<(wostream&, char); 25082: extern template wostream& operator<<(wostream&, const wchar_t*); 25082: extern template wostream& operator<<(wostream&, const char*); 25082: 25082: extern template wostream& wostream::_M_insert(long); 25082: extern template wostream& wostream::_M_insert(unsigned long); 25082: extern template wostream& wostream::_M_insert(bool); 25082: 25082: extern template wostream& wostream::_M_insert(long long); 25082: extern template wostream& wostream::_M_insert(unsigned long long); 25082: 25082: extern template wostream& wostream::_M_insert(double); 25082: extern template wostream& wostream::_M_insert(long double); 25082: extern template wostream& wostream::_M_insert(const void*); 25082: 25082: 25082: 25082: 25082: } 25082: # 694 "/usr/include/c++/8/ostream" 2 3 25082: # 65 "/usr/include/c++/8/iterator" 2 3 25082: # 1 "/usr/include/c++/8/istream" 1 3 25082: # 36 "/usr/include/c++/8/istream" 3 25082: 25082: # 37 "/usr/include/c++/8/istream" 3 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 57 "/usr/include/c++/8/istream" 3 25082: template 25082: class basic_istream : virtual public basic_ios<_CharT, _Traits> 25082: { 25082: public: 25082: 25082: typedef _CharT char_type; 25082: typedef typename _Traits::int_type int_type; 25082: typedef typename _Traits::pos_type pos_type; 25082: typedef typename _Traits::off_type off_type; 25082: typedef _Traits traits_type; 25082: 25082: 25082: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 25082: typedef basic_ios<_CharT, _Traits> __ios_type; 25082: typedef basic_istream<_CharT, _Traits> __istream_type; 25082: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > 25082: __num_get_type; 25082: typedef ctype<_CharT> __ctype_type; 25082: 25082: protected: 25082: 25082: 25082: 25082: 25082: 25082: streamsize _M_gcount; 25082: 25082: public: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: basic_istream(__streambuf_type* __sb) 25082: : _M_gcount(streamsize(0)) 25082: { this->init(__sb); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual 25082: ~basic_istream() 25082: { _M_gcount = streamsize(0); } 25082: 25082: 25082: class sentry; 25082: friend class sentry; 25082: # 119 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: operator>>(__istream_type& (*__pf)(__istream_type&)) 25082: { return __pf(*this); } 25082: 25082: __istream_type& 25082: operator>>(__ios_type& (*__pf)(__ios_type&)) 25082: { 25082: __pf(*this); 25082: return *this; 25082: } 25082: 25082: __istream_type& 25082: operator>>(ios_base& (*__pf)(ios_base&)) 25082: { 25082: __pf(*this); 25082: return *this; 25082: } 25082: # 167 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: operator>>(bool& __n) 25082: { return _M_extract(__n); } 25082: 25082: __istream_type& 25082: operator>>(short& __n); 25082: 25082: __istream_type& 25082: operator>>(unsigned short& __n) 25082: { return _M_extract(__n); } 25082: 25082: __istream_type& 25082: operator>>(int& __n); 25082: 25082: __istream_type& 25082: operator>>(unsigned int& __n) 25082: { return _M_extract(__n); } 25082: 25082: __istream_type& 25082: operator>>(long& __n) 25082: { return _M_extract(__n); } 25082: 25082: __istream_type& 25082: operator>>(unsigned long& __n) 25082: { return _M_extract(__n); } 25082: 25082: 25082: __istream_type& 25082: operator>>(long long& __n) 25082: { return _M_extract(__n); } 25082: 25082: __istream_type& 25082: operator>>(unsigned long long& __n) 25082: { return _M_extract(__n); } 25082: # 213 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: operator>>(float& __f) 25082: { return _M_extract(__f); } 25082: 25082: __istream_type& 25082: operator>>(double& __f) 25082: { return _M_extract(__f); } 25082: 25082: __istream_type& 25082: operator>>(long double& __f) 25082: { return _M_extract(__f); } 25082: # 234 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: operator>>(void*& __p) 25082: { return _M_extract(__p); } 25082: # 258 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: operator>>(__streambuf_type* __sb); 25082: # 268 "/usr/include/c++/8/istream" 3 25082: streamsize 25082: gcount() const 25082: { return _M_gcount; } 25082: # 301 "/usr/include/c++/8/istream" 3 25082: int_type 25082: get(); 25082: # 315 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: get(char_type& __c); 25082: # 342 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: get(char_type* __s, streamsize __n, char_type __delim); 25082: # 353 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: get(char_type* __s, streamsize __n) 25082: { return this->get(__s, __n, this->widen('\n')); } 25082: # 376 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: get(__streambuf_type& __sb, char_type __delim); 25082: # 386 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: get(__streambuf_type& __sb) 25082: { return this->get(__sb, this->widen('\n')); } 25082: # 415 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: getline(char_type* __s, streamsize __n, char_type __delim); 25082: # 426 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: getline(char_type* __s, streamsize __n) 25082: { return this->getline(__s, __n, this->widen('\n')); } 25082: # 450 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: ignore(streamsize __n, int_type __delim); 25082: 25082: __istream_type& 25082: ignore(streamsize __n); 25082: 25082: __istream_type& 25082: ignore(); 25082: # 467 "/usr/include/c++/8/istream" 3 25082: int_type 25082: peek(); 25082: # 485 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: read(char_type* __s, streamsize __n); 25082: # 504 "/usr/include/c++/8/istream" 3 25082: streamsize 25082: readsome(char_type* __s, streamsize __n); 25082: # 521 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: putback(char_type __c); 25082: # 537 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: unget(); 25082: # 555 "/usr/include/c++/8/istream" 3 25082: int 25082: sync(); 25082: # 570 "/usr/include/c++/8/istream" 3 25082: pos_type 25082: tellg(); 25082: # 585 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: seekg(pos_type); 25082: # 601 "/usr/include/c++/8/istream" 3 25082: __istream_type& 25082: seekg(off_type, ios_base::seekdir); 25082: 25082: 25082: protected: 25082: basic_istream() 25082: : _M_gcount(streamsize(0)) 25082: { this->init(0); } 25082: 25082: 25082: basic_istream(const basic_istream&) = delete; 25082: 25082: basic_istream(basic_istream&& __rhs) 25082: : __ios_type(), _M_gcount(__rhs._M_gcount) 25082: { 25082: __ios_type::move(__rhs); 25082: __rhs._M_gcount = 0; 25082: } 25082: 25082: 25082: 25082: basic_istream& operator=(const basic_istream&) = delete; 25082: 25082: basic_istream& 25082: operator=(basic_istream&& __rhs) 25082: { 25082: swap(__rhs); 25082: return *this; 25082: } 25082: 25082: void 25082: swap(basic_istream& __rhs) 25082: { 25082: __ios_type::swap(__rhs); 25082: std::swap(_M_gcount, __rhs._M_gcount); 25082: } 25082: 25082: 25082: template 25082: __istream_type& 25082: _M_extract(_ValueT& __v); 25082: }; 25082: 25082: 25082: template<> 25082: basic_istream& 25082: basic_istream:: 25082: getline(char_type* __s, streamsize __n, char_type __delim); 25082: 25082: template<> 25082: basic_istream& 25082: basic_istream:: 25082: ignore(streamsize __n); 25082: 25082: template<> 25082: basic_istream& 25082: basic_istream:: 25082: ignore(streamsize __n, int_type __delim); 25082: 25082: 25082: template<> 25082: basic_istream& 25082: basic_istream:: 25082: getline(char_type* __s, streamsize __n, char_type __delim); 25082: 25082: template<> 25082: basic_istream& 25082: basic_istream:: 25082: ignore(streamsize __n); 25082: 25082: template<> 25082: basic_istream& 25082: basic_istream:: 25082: ignore(streamsize __n, int_type __delim); 25082: # 685 "/usr/include/c++/8/istream" 3 25082: template 25082: class basic_istream<_CharT, _Traits>::sentry 25082: { 25082: 25082: bool _M_ok; 25082: 25082: public: 25082: 25082: typedef _Traits traits_type; 25082: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 25082: typedef basic_istream<_CharT, _Traits> __istream_type; 25082: typedef typename __istream_type::__ctype_type __ctype_type; 25082: typedef typename _Traits::int_type __int_type; 25082: # 721 "/usr/include/c++/8/istream" 3 25082: explicit 25082: sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); 25082: # 732 "/usr/include/c++/8/istream" 3 25082: explicit 25082: 25082: operator bool() const 25082: { return _M_ok; } 25082: }; 25082: # 750 "/usr/include/c++/8/istream" 3 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); 25082: 25082: template 25082: inline basic_istream& 25082: operator>>(basic_istream& __in, unsigned char& __c) 25082: { return (__in >> reinterpret_cast(__c)); } 25082: 25082: template 25082: inline basic_istream& 25082: operator>>(basic_istream& __in, signed char& __c) 25082: { return (__in >> reinterpret_cast(__c)); } 25082: # 792 "/usr/include/c++/8/istream" 3 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); 25082: 25082: 25082: template<> 25082: basic_istream& 25082: operator>>(basic_istream& __in, char* __s); 25082: 25082: template 25082: inline basic_istream& 25082: operator>>(basic_istream& __in, unsigned char* __s) 25082: { return (__in >> reinterpret_cast(__s)); } 25082: 25082: template 25082: inline basic_istream& 25082: operator>>(basic_istream& __in, signed char* __s) 25082: { return (__in >> reinterpret_cast(__s)); } 25082: # 823 "/usr/include/c++/8/istream" 3 25082: template 25082: class basic_iostream 25082: : public basic_istream<_CharT, _Traits>, 25082: public basic_ostream<_CharT, _Traits> 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef typename _Traits::int_type int_type; 25082: typedef typename _Traits::pos_type pos_type; 25082: typedef typename _Traits::off_type off_type; 25082: typedef _Traits traits_type; 25082: 25082: 25082: typedef basic_istream<_CharT, _Traits> __istream_type; 25082: typedef basic_ostream<_CharT, _Traits> __ostream_type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) 25082: : __istream_type(__sb), __ostream_type(__sb) { } 25082: 25082: 25082: 25082: 25082: virtual 25082: ~basic_iostream() { } 25082: 25082: protected: 25082: basic_iostream() 25082: : __istream_type(), __ostream_type() { } 25082: 25082: 25082: basic_iostream(const basic_iostream&) = delete; 25082: 25082: basic_iostream(basic_iostream&& __rhs) 25082: : __istream_type(std::move(__rhs)), __ostream_type(*this) 25082: { } 25082: 25082: 25082: 25082: basic_iostream& operator=(const basic_iostream&) = delete; 25082: 25082: basic_iostream& 25082: operator=(basic_iostream&& __rhs) 25082: { 25082: swap(__rhs); 25082: return *this; 25082: } 25082: 25082: void 25082: swap(basic_iostream& __rhs) 25082: { __istream_type::swap(__rhs); } 25082: 25082: }; 25082: # 906 "/usr/include/c++/8/istream" 3 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: ws(basic_istream<_CharT, _Traits>& __is); 25082: 25082: 25082: template 25082: basic_istream<_Ch, _Up>& 25082: __is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*); 25082: 25082: template 25082: struct __is_convertible_to_basic_istream_impl 25082: { 25082: using __istream_type = void; 25082: }; 25082: 25082: template 25082: using __do_is_convertible_to_basic_istream_impl = 25082: decltype(__is_convertible_to_basic_istream_test 25082: (declval::type*>())); 25082: 25082: template 25082: struct __is_convertible_to_basic_istream_impl 25082: <_Tp, 25082: __void_t<__do_is_convertible_to_basic_istream_impl<_Tp>>> 25082: { 25082: using __istream_type = 25082: __do_is_convertible_to_basic_istream_impl<_Tp>; 25082: }; 25082: 25082: template 25082: struct __is_convertible_to_basic_istream 25082: : __is_convertible_to_basic_istream_impl<_Tp> 25082: { 25082: public: 25082: using type = __not_::__istream_type>>; 25082: constexpr static bool value = type::value; 25082: }; 25082: 25082: template 25082: struct __is_extractable : false_type {}; 25082: 25082: template 25082: struct __is_extractable<_Istream, _Tp, 25082: __void_t() 25082: >> declval<_Tp>())>> 25082: : true_type {}; 25082: 25082: template 25082: using __rvalue_istream_type = 25082: typename __is_convertible_to_basic_istream< 25082: _Istream>::__istream_type; 25082: # 972 "/usr/include/c++/8/istream" 3 25082: template 25082: inline 25082: typename enable_if<__and_<__not_>, 25082: __is_convertible_to_basic_istream<_Istream>, 25082: __is_extractable< 25082: __rvalue_istream_type<_Istream>, 25082: _Tp&&>>::value, 25082: __rvalue_istream_type<_Istream>>::type 25082: operator>>(_Istream&& __is, _Tp&& __x) 25082: { 25082: __rvalue_istream_type<_Istream> __ret_is = __is; 25082: __ret_is >> std::forward<_Tp>(__x); 25082: return __ret_is; 25082: } 25082: 25082: 25082: 25082: } 25082: 25082: # 1 "/usr/include/c++/8/bits/istream.tcc" 1 3 25082: # 37 "/usr/include/c++/8/bits/istream.tcc" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/istream.tcc" 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: basic_istream<_CharT, _Traits>::sentry:: 25082: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: if (__in.good()) 25082: try 25082: { 25082: if (__in.tie()) 25082: __in.tie()->flush(); 25082: if (!__noskip && bool(__in.flags() & ios_base::skipws)) 25082: { 25082: const __int_type __eof = traits_type::eof(); 25082: __streambuf_type* __sb = __in.rdbuf(); 25082: __int_type __c = __sb->sgetc(); 25082: 25082: const __ctype_type& __ct = __check_facet(__in._M_ctype); 25082: while (!traits_type::eq_int_type(__c, __eof) 25082: && __ct.is(ctype_base::space, 25082: traits_type::to_char_type(__c))) 25082: __c = __sb->snextc(); 25082: 25082: 25082: 25082: 25082: if (traits_type::eq_int_type(__c, __eof)) 25082: __err |= ios_base::eofbit; 25082: } 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __in._M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { __in._M_setstate(ios_base::badbit); } 25082: 25082: if (__in.good() && __err == ios_base::goodbit) 25082: _M_ok = true; 25082: else 25082: { 25082: __err |= ios_base::failbit; 25082: __in.setstate(__err); 25082: } 25082: } 25082: 25082: template 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: _M_extract(_ValueT& __v) 25082: { 25082: sentry __cerb(*this, false); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: const __num_get_type& __ng = __check_facet(this->_M_num_get); 25082: __ng.get(*this, 0, *this, __err, __v); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: operator>>(short& __n) 25082: { 25082: 25082: 25082: sentry __cerb(*this, false); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: long __l; 25082: const __num_get_type& __ng = __check_facet(this->_M_num_get); 25082: __ng.get(*this, 0, *this, __err, __l); 25082: 25082: 25082: 25082: if (__l < __gnu_cxx::__numeric_traits::__min) 25082: { 25082: __err |= ios_base::failbit; 25082: __n = __gnu_cxx::__numeric_traits::__min; 25082: } 25082: else if (__l > __gnu_cxx::__numeric_traits::__max) 25082: { 25082: __err |= ios_base::failbit; 25082: __n = __gnu_cxx::__numeric_traits::__max; 25082: } 25082: else 25082: __n = short(__l); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: operator>>(int& __n) 25082: { 25082: 25082: 25082: sentry __cerb(*this, false); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: long __l; 25082: const __num_get_type& __ng = __check_facet(this->_M_num_get); 25082: __ng.get(*this, 0, *this, __err, __l); 25082: 25082: 25082: 25082: if (__l < __gnu_cxx::__numeric_traits::__min) 25082: { 25082: __err |= ios_base::failbit; 25082: __n = __gnu_cxx::__numeric_traits::__min; 25082: } 25082: else if (__l > __gnu_cxx::__numeric_traits::__max) 25082: { 25082: __err |= ios_base::failbit; 25082: __n = __gnu_cxx::__numeric_traits::__max; 25082: } 25082: else 25082: __n = int(__l); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: operator>>(__streambuf_type* __sbout) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: sentry __cerb(*this, false); 25082: if (__cerb && __sbout) 25082: { 25082: try 25082: { 25082: bool __ineof; 25082: if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) 25082: __err |= ios_base::failbit; 25082: if (__ineof) 25082: __err |= ios_base::eofbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::failbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::failbit); } 25082: } 25082: else if (!__sbout) 25082: __err |= ios_base::failbit; 25082: if (__err) 25082: this->setstate(__err); 25082: return *this; 25082: } 25082: 25082: template 25082: typename basic_istream<_CharT, _Traits>::int_type 25082: basic_istream<_CharT, _Traits>:: 25082: get(void) 25082: { 25082: const int_type __eof = traits_type::eof(); 25082: int_type __c = __eof; 25082: _M_gcount = 0; 25082: ios_base::iostate __err = ios_base::goodbit; 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: try 25082: { 25082: __c = this->rdbuf()->sbumpc(); 25082: 25082: if (!traits_type::eq_int_type(__c, __eof)) 25082: _M_gcount = 1; 25082: else 25082: __err |= ios_base::eofbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: } 25082: if (!_M_gcount) 25082: __err |= ios_base::failbit; 25082: if (__err) 25082: this->setstate(__err); 25082: return __c; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: get(char_type& __c) 25082: { 25082: _M_gcount = 0; 25082: ios_base::iostate __err = ios_base::goodbit; 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: try 25082: { 25082: const int_type __cb = this->rdbuf()->sbumpc(); 25082: 25082: if (!traits_type::eq_int_type(__cb, traits_type::eof())) 25082: { 25082: _M_gcount = 1; 25082: __c = traits_type::to_char_type(__cb); 25082: } 25082: else 25082: __err |= ios_base::eofbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: } 25082: if (!_M_gcount) 25082: __err |= ios_base::failbit; 25082: if (__err) 25082: this->setstate(__err); 25082: return *this; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: get(char_type* __s, streamsize __n, char_type __delim) 25082: { 25082: _M_gcount = 0; 25082: ios_base::iostate __err = ios_base::goodbit; 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: try 25082: { 25082: const int_type __idelim = traits_type::to_int_type(__delim); 25082: const int_type __eof = traits_type::eof(); 25082: __streambuf_type* __sb = this->rdbuf(); 25082: int_type __c = __sb->sgetc(); 25082: 25082: while (_M_gcount + 1 < __n 25082: && !traits_type::eq_int_type(__c, __eof) 25082: && !traits_type::eq_int_type(__c, __idelim)) 25082: { 25082: *__s++ = traits_type::to_char_type(__c); 25082: ++_M_gcount; 25082: __c = __sb->snextc(); 25082: } 25082: if (traits_type::eq_int_type(__c, __eof)) 25082: __err |= ios_base::eofbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: } 25082: 25082: 25082: if (__n > 0) 25082: *__s = char_type(); 25082: if (!_M_gcount) 25082: __err |= ios_base::failbit; 25082: if (__err) 25082: this->setstate(__err); 25082: return *this; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: get(__streambuf_type& __sb, char_type __delim) 25082: { 25082: _M_gcount = 0; 25082: ios_base::iostate __err = ios_base::goodbit; 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: try 25082: { 25082: const int_type __idelim = traits_type::to_int_type(__delim); 25082: const int_type __eof = traits_type::eof(); 25082: __streambuf_type* __this_sb = this->rdbuf(); 25082: int_type __c = __this_sb->sgetc(); 25082: char_type __c2 = traits_type::to_char_type(__c); 25082: 25082: while (!traits_type::eq_int_type(__c, __eof) 25082: && !traits_type::eq_int_type(__c, __idelim) 25082: && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) 25082: { 25082: ++_M_gcount; 25082: __c = __this_sb->snextc(); 25082: __c2 = traits_type::to_char_type(__c); 25082: } 25082: if (traits_type::eq_int_type(__c, __eof)) 25082: __err |= ios_base::eofbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: } 25082: if (!_M_gcount) 25082: __err |= ios_base::failbit; 25082: if (__err) 25082: this->setstate(__err); 25082: return *this; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: getline(char_type* __s, streamsize __n, char_type __delim) 25082: { 25082: _M_gcount = 0; 25082: ios_base::iostate __err = ios_base::goodbit; 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: try 25082: { 25082: const int_type __idelim = traits_type::to_int_type(__delim); 25082: const int_type __eof = traits_type::eof(); 25082: __streambuf_type* __sb = this->rdbuf(); 25082: int_type __c = __sb->sgetc(); 25082: 25082: while (_M_gcount + 1 < __n 25082: && !traits_type::eq_int_type(__c, __eof) 25082: && !traits_type::eq_int_type(__c, __idelim)) 25082: { 25082: *__s++ = traits_type::to_char_type(__c); 25082: __c = __sb->snextc(); 25082: ++_M_gcount; 25082: } 25082: if (traits_type::eq_int_type(__c, __eof)) 25082: __err |= ios_base::eofbit; 25082: else 25082: { 25082: if (traits_type::eq_int_type(__c, __idelim)) 25082: { 25082: __sb->sbumpc(); 25082: ++_M_gcount; 25082: } 25082: else 25082: __err |= ios_base::failbit; 25082: } 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: } 25082: 25082: 25082: if (__n > 0) 25082: *__s = char_type(); 25082: if (!_M_gcount) 25082: __err |= ios_base::failbit; 25082: if (__err) 25082: this->setstate(__err); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: ignore(void) 25082: { 25082: _M_gcount = 0; 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: const int_type __eof = traits_type::eof(); 25082: __streambuf_type* __sb = this->rdbuf(); 25082: 25082: if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) 25082: __err |= ios_base::eofbit; 25082: else 25082: _M_gcount = 1; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: ignore(streamsize __n) 25082: { 25082: _M_gcount = 0; 25082: sentry __cerb(*this, true); 25082: if (__cerb && __n > 0) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: const int_type __eof = traits_type::eof(); 25082: __streambuf_type* __sb = this->rdbuf(); 25082: int_type __c = __sb->sgetc(); 25082: # 521 "/usr/include/c++/8/bits/istream.tcc" 3 25082: bool __large_ignore = false; 25082: while (true) 25082: { 25082: while (_M_gcount < __n 25082: && !traits_type::eq_int_type(__c, __eof)) 25082: { 25082: ++_M_gcount; 25082: __c = __sb->snextc(); 25082: } 25082: if (__n == __gnu_cxx::__numeric_traits::__max 25082: && !traits_type::eq_int_type(__c, __eof)) 25082: { 25082: _M_gcount = 25082: __gnu_cxx::__numeric_traits::__min; 25082: __large_ignore = true; 25082: } 25082: else 25082: break; 25082: } 25082: 25082: if (__large_ignore) 25082: _M_gcount = __gnu_cxx::__numeric_traits::__max; 25082: 25082: if (traits_type::eq_int_type(__c, __eof)) 25082: __err |= ios_base::eofbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: ignore(streamsize __n, int_type __delim) 25082: { 25082: _M_gcount = 0; 25082: sentry __cerb(*this, true); 25082: if (__cerb && __n > 0) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: const int_type __eof = traits_type::eof(); 25082: __streambuf_type* __sb = this->rdbuf(); 25082: int_type __c = __sb->sgetc(); 25082: 25082: 25082: bool __large_ignore = false; 25082: while (true) 25082: { 25082: while (_M_gcount < __n 25082: && !traits_type::eq_int_type(__c, __eof) 25082: && !traits_type::eq_int_type(__c, __delim)) 25082: { 25082: ++_M_gcount; 25082: __c = __sb->snextc(); 25082: } 25082: if (__n == __gnu_cxx::__numeric_traits::__max 25082: && !traits_type::eq_int_type(__c, __eof) 25082: && !traits_type::eq_int_type(__c, __delim)) 25082: { 25082: _M_gcount = 25082: __gnu_cxx::__numeric_traits::__min; 25082: __large_ignore = true; 25082: } 25082: else 25082: break; 25082: } 25082: 25082: if (__large_ignore) 25082: _M_gcount = __gnu_cxx::__numeric_traits::__max; 25082: 25082: if (traits_type::eq_int_type(__c, __eof)) 25082: __err |= ios_base::eofbit; 25082: else if (traits_type::eq_int_type(__c, __delim)) 25082: { 25082: if (_M_gcount 25082: < __gnu_cxx::__numeric_traits::__max) 25082: ++_M_gcount; 25082: __sb->sbumpc(); 25082: } 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: typename basic_istream<_CharT, _Traits>::int_type 25082: basic_istream<_CharT, _Traits>:: 25082: peek(void) 25082: { 25082: int_type __c = traits_type::eof(); 25082: _M_gcount = 0; 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: __c = this->rdbuf()->sgetc(); 25082: if (traits_type::eq_int_type(__c, traits_type::eof())) 25082: __err |= ios_base::eofbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return __c; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: read(char_type* __s, streamsize __n) 25082: { 25082: _M_gcount = 0; 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: _M_gcount = this->rdbuf()->sgetn(__s, __n); 25082: if (_M_gcount != __n) 25082: __err |= (ios_base::eofbit | ios_base::failbit); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: streamsize 25082: basic_istream<_CharT, _Traits>:: 25082: readsome(char_type* __s, streamsize __n) 25082: { 25082: _M_gcount = 0; 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: 25082: const streamsize __num = this->rdbuf()->in_avail(); 25082: if (__num > 0) 25082: _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); 25082: else if (__num == -1) 25082: __err |= ios_base::eofbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return _M_gcount; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: putback(char_type __c) 25082: { 25082: 25082: 25082: _M_gcount = 0; 25082: 25082: this->clear(this->rdstate() & ~ios_base::eofbit); 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: const int_type __eof = traits_type::eof(); 25082: __streambuf_type* __sb = this->rdbuf(); 25082: if (!__sb 25082: || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) 25082: __err |= ios_base::badbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: unget(void) 25082: { 25082: 25082: 25082: _M_gcount = 0; 25082: 25082: this->clear(this->rdstate() & ~ios_base::eofbit); 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: const int_type __eof = traits_type::eof(); 25082: __streambuf_type* __sb = this->rdbuf(); 25082: if (!__sb 25082: || traits_type::eq_int_type(__sb->sungetc(), __eof)) 25082: __err |= ios_base::badbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: int 25082: basic_istream<_CharT, _Traits>:: 25082: sync(void) 25082: { 25082: 25082: 25082: int __ret = -1; 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: __streambuf_type* __sb = this->rdbuf(); 25082: if (__sb) 25082: { 25082: if (__sb->pubsync() == -1) 25082: __err |= ios_base::badbit; 25082: else 25082: __ret = 0; 25082: } 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: typename basic_istream<_CharT, _Traits>::pos_type 25082: basic_istream<_CharT, _Traits>:: 25082: tellg(void) 25082: { 25082: 25082: 25082: pos_type __ret = pos_type(-1); 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: try 25082: { 25082: if (!this->fail()) 25082: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, 25082: ios_base::in); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: seekg(pos_type __pos) 25082: { 25082: 25082: 25082: 25082: this->clear(this->rdstate() & ~ios_base::eofbit); 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: if (!this->fail()) 25082: { 25082: 25082: const pos_type __p = this->rdbuf()->pubseekpos(__pos, 25082: ios_base::in); 25082: 25082: 25082: if (__p == pos_type(off_type(-1))) 25082: __err |= ios_base::failbit; 25082: } 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: basic_istream<_CharT, _Traits>:: 25082: seekg(off_type __off, ios_base::seekdir __dir) 25082: { 25082: 25082: 25082: 25082: this->clear(this->rdstate() & ~ios_base::eofbit); 25082: sentry __cerb(*this, true); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: if (!this->fail()) 25082: { 25082: 25082: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, 25082: ios_base::in); 25082: 25082: 25082: if (__p == pos_type(off_type(-1))) 25082: __err |= ios_base::failbit; 25082: } 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: this->_M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { this->_M_setstate(ios_base::badbit); } 25082: if (__err) 25082: this->setstate(__err); 25082: } 25082: return *this; 25082: } 25082: 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) 25082: { 25082: typedef basic_istream<_CharT, _Traits> __istream_type; 25082: typedef typename __istream_type::int_type __int_type; 25082: 25082: typename __istream_type::sentry __cerb(__in, false); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: const __int_type __cb = __in.rdbuf()->sbumpc(); 25082: if (!_Traits::eq_int_type(__cb, _Traits::eof())) 25082: __c = _Traits::to_char_type(__cb); 25082: else 25082: __err |= (ios_base::eofbit | ios_base::failbit); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __in._M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { __in._M_setstate(ios_base::badbit); } 25082: if (__err) 25082: __in.setstate(__err); 25082: } 25082: return __in; 25082: } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) 25082: { 25082: typedef basic_istream<_CharT, _Traits> __istream_type; 25082: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 25082: typedef typename _Traits::int_type int_type; 25082: typedef _CharT char_type; 25082: typedef ctype<_CharT> __ctype_type; 25082: 25082: streamsize __extracted = 0; 25082: ios_base::iostate __err = ios_base::goodbit; 25082: typename __istream_type::sentry __cerb(__in, false); 25082: if (__cerb) 25082: { 25082: try 25082: { 25082: 25082: streamsize __num = __in.width(); 25082: if (__num <= 0) 25082: __num = __gnu_cxx::__numeric_traits::__max; 25082: 25082: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 25082: 25082: const int_type __eof = _Traits::eof(); 25082: __streambuf_type* __sb = __in.rdbuf(); 25082: int_type __c = __sb->sgetc(); 25082: 25082: while (__extracted < __num - 1 25082: && !_Traits::eq_int_type(__c, __eof) 25082: && !__ct.is(ctype_base::space, 25082: _Traits::to_char_type(__c))) 25082: { 25082: *__s++ = _Traits::to_char_type(__c); 25082: ++__extracted; 25082: __c = __sb->snextc(); 25082: } 25082: if (_Traits::eq_int_type(__c, __eof)) 25082: __err |= ios_base::eofbit; 25082: 25082: 25082: 25082: *__s = char_type(); 25082: __in.width(0); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __in._M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { __in._M_setstate(ios_base::badbit); } 25082: } 25082: if (!__extracted) 25082: __err |= ios_base::failbit; 25082: if (__err) 25082: __in.setstate(__err); 25082: return __in; 25082: } 25082: 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: ws(basic_istream<_CharT, _Traits>& __in) 25082: { 25082: typedef basic_istream<_CharT, _Traits> __istream_type; 25082: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 25082: typedef typename __istream_type::int_type __int_type; 25082: typedef ctype<_CharT> __ctype_type; 25082: 25082: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 25082: const __int_type __eof = _Traits::eof(); 25082: __streambuf_type* __sb = __in.rdbuf(); 25082: __int_type __c = __sb->sgetc(); 25082: 25082: while (!_Traits::eq_int_type(__c, __eof) 25082: && __ct.is(ctype_base::space, _Traits::to_char_type(__c))) 25082: __c = __sb->snextc(); 25082: 25082: if (_Traits::eq_int_type(__c, __eof)) 25082: __in.setstate(ios_base::eofbit); 25082: return __in; 25082: } 25082: 25082: 25082: 25082: 25082: extern template class basic_istream; 25082: extern template istream& ws(istream&); 25082: extern template istream& operator>>(istream&, char&); 25082: extern template istream& operator>>(istream&, char*); 25082: extern template istream& operator>>(istream&, unsigned char&); 25082: extern template istream& operator>>(istream&, signed char&); 25082: extern template istream& operator>>(istream&, unsigned char*); 25082: extern template istream& operator>>(istream&, signed char*); 25082: 25082: extern template istream& istream::_M_extract(unsigned short&); 25082: extern template istream& istream::_M_extract(unsigned int&); 25082: extern template istream& istream::_M_extract(long&); 25082: extern template istream& istream::_M_extract(unsigned long&); 25082: extern template istream& istream::_M_extract(bool&); 25082: 25082: extern template istream& istream::_M_extract(long long&); 25082: extern template istream& istream::_M_extract(unsigned long long&); 25082: 25082: extern template istream& istream::_M_extract(float&); 25082: extern template istream& istream::_M_extract(double&); 25082: extern template istream& istream::_M_extract(long double&); 25082: extern template istream& istream::_M_extract(void*&); 25082: 25082: extern template class basic_iostream; 25082: 25082: 25082: extern template class basic_istream; 25082: extern template wistream& ws(wistream&); 25082: extern template wistream& operator>>(wistream&, wchar_t&); 25082: extern template wistream& operator>>(wistream&, wchar_t*); 25082: 25082: extern template wistream& wistream::_M_extract(unsigned short&); 25082: extern template wistream& wistream::_M_extract(unsigned int&); 25082: extern template wistream& wistream::_M_extract(long&); 25082: extern template wistream& wistream::_M_extract(unsigned long&); 25082: extern template wistream& wistream::_M_extract(bool&); 25082: 25082: extern template wistream& wistream::_M_extract(long long&); 25082: extern template wistream& wistream::_M_extract(unsigned long long&); 25082: 25082: extern template wistream& wistream::_M_extract(float&); 25082: extern template wistream& wistream::_M_extract(double&); 25082: extern template wistream& wistream::_M_extract(long double&); 25082: extern template wistream& wistream::_M_extract(void*&); 25082: 25082: extern template class basic_iostream; 25082: 25082: 25082: 25082: 25082: } 25082: # 992 "/usr/include/c++/8/istream" 2 3 25082: # 66 "/usr/include/c++/8/iterator" 2 3 25082: # 1 "/usr/include/c++/8/bits/stream_iterator.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/stream_iterator.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/stream_iterator.h" 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template, typename _Dist = ptrdiff_t> 25082: class istream_iterator 25082: : public iterator 25082: { 25082: public: 25082: typedef _CharT char_type; 25082: typedef _Traits traits_type; 25082: typedef basic_istream<_CharT, _Traits> istream_type; 25082: 25082: private: 25082: istream_type* _M_stream; 25082: _Tp _M_value; 25082: bool _M_ok; 25082: 25082: public: 25082: 25082: constexpr istream_iterator() 25082: : _M_stream(0), _M_value(), _M_ok(false) {} 25082: 25082: 25082: istream_iterator(istream_type& __s) 25082: : _M_stream(std::__addressof(__s)) 25082: { _M_read(); } 25082: 25082: istream_iterator(const istream_iterator& __obj) 25082: : _M_stream(__obj._M_stream), _M_value(__obj._M_value), 25082: _M_ok(__obj._M_ok) 25082: { } 25082: 25082: const _Tp& 25082: operator*() const 25082: { 25082: 25082: 25082: ; 25082: return _M_value; 25082: } 25082: 25082: const _Tp* 25082: operator->() const { return std::__addressof((operator*())); } 25082: 25082: istream_iterator& 25082: operator++() 25082: { 25082: 25082: 25082: ; 25082: _M_read(); 25082: return *this; 25082: } 25082: 25082: istream_iterator 25082: operator++(int) 25082: { 25082: 25082: 25082: ; 25082: istream_iterator __tmp = *this; 25082: _M_read(); 25082: return __tmp; 25082: } 25082: 25082: bool 25082: _M_equal(const istream_iterator& __x) const 25082: { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); } 25082: 25082: private: 25082: void 25082: _M_read() 25082: { 25082: _M_ok = (_M_stream && *_M_stream) ? true : false; 25082: if (_M_ok) 25082: { 25082: *_M_stream >> _M_value; 25082: _M_ok = *_M_stream ? true : false; 25082: } 25082: } 25082: }; 25082: 25082: 25082: template 25082: inline bool 25082: operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, 25082: const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) 25082: { return __x._M_equal(__y); } 25082: 25082: 25082: template 25082: inline bool 25082: operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, 25082: const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) 25082: { return !__x._M_equal(__y); } 25082: # 152 "/usr/include/c++/8/bits/stream_iterator.h" 3 25082: template > 25082: class ostream_iterator 25082: : public iterator 25082: { 25082: public: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef _Traits traits_type; 25082: typedef basic_ostream<_CharT, _Traits> ostream_type; 25082: 25082: 25082: private: 25082: ostream_type* _M_stream; 25082: const _CharT* _M_string; 25082: 25082: public: 25082: 25082: ostream_iterator(ostream_type& __s) 25082: : _M_stream(std::__addressof(__s)), _M_string(0) {} 25082: # 184 "/usr/include/c++/8/bits/stream_iterator.h" 3 25082: ostream_iterator(ostream_type& __s, const _CharT* __c) 25082: : _M_stream(&__s), _M_string(__c) { } 25082: 25082: 25082: ostream_iterator(const ostream_iterator& __obj) 25082: : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { } 25082: 25082: 25082: 25082: ostream_iterator& 25082: operator=(const _Tp& __value) 25082: { 25082: 25082: 25082: ; 25082: *_M_stream << __value; 25082: if (_M_string) *_M_stream << _M_string; 25082: return *this; 25082: } 25082: 25082: ostream_iterator& 25082: operator*() 25082: { return *this; } 25082: 25082: ostream_iterator& 25082: operator++() 25082: { return *this; } 25082: 25082: ostream_iterator& 25082: operator++(int) 25082: { return *this; } 25082: }; 25082: 25082: 25082: 25082: 25082: } 25082: # 67 "/usr/include/c++/8/iterator" 2 3 25082: # 99 "/usr/include/boost/operators.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/config.hpp" 1 3 4 25082: # 30 "/usr/include/boost/config.hpp" 3 4 25082: # 1 "/usr/include/boost/config/user.hpp" 1 3 4 25082: # 31 "/usr/include/boost/config.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/config/detail/select_compiler_config.hpp" 1 3 4 25082: # 36 "/usr/include/boost/config.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/config/compiler/gcc.hpp" 1 3 4 25082: # 40 "/usr/include/boost/config.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/config/detail/select_stdlib_config.hpp" 1 3 4 25082: # 45 "/usr/include/boost/config.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 1 3 4 25082: # 78 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 3 4 25082: # 1 "/usr/include/unistd.h" 1 3 4 25082: # 27 "/usr/include/unistd.h" 3 4 25082: extern "C" { 25082: # 202 "/usr/include/unistd.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/posix_opt.h" 1 3 4 25082: # 203 "/usr/include/unistd.h" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/environments.h" 1 3 4 25082: # 22 "/usr/include/aarch64-linux-gnu/bits/environments.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 25082: # 23 "/usr/include/aarch64-linux-gnu/bits/environments.h" 2 3 4 25082: # 207 "/usr/include/unistd.h" 2 3 4 25082: # 226 "/usr/include/unistd.h" 3 4 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 227 "/usr/include/unistd.h" 2 3 4 25082: # 274 "/usr/include/unistd.h" 3 4 25082: typedef __socklen_t socklen_t; 25082: # 287 "/usr/include/unistd.h" 3 4 25082: extern int access (const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: extern int euidaccess (const char *__name, int __type) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int eaccess (const char *__name, int __type) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int faccessat (int __fd, const char *__file, int __type, int __flag) 25082: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 25082: # 334 "/usr/include/unistd.h" 3 4 25082: extern __off_t lseek (int __fd, __off_t __offset, int __whence) throw (); 25082: # 345 "/usr/include/unistd.h" 3 4 25082: extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) 25082: throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int close (int __fd); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)); 25082: # 376 "/usr/include/unistd.h" 3 4 25082: extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, 25082: __off_t __offset) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern ssize_t pwrite (int __fd, const void *__buf, size_t __n, 25082: __off_t __offset) __attribute__ ((__warn_unused_result__)); 25082: # 404 "/usr/include/unistd.h" 3 4 25082: extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, 25082: __off64_t __offset) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, 25082: __off64_t __offset) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int pipe (int __pipedes[2]) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int pipe2 (int __pipedes[2], int __flags) throw () __attribute__ ((__warn_unused_result__)); 25082: # 432 "/usr/include/unistd.h" 3 4 25082: extern unsigned int alarm (unsigned int __seconds) throw (); 25082: # 444 "/usr/include/unistd.h" 3 4 25082: extern unsigned int sleep (unsigned int __seconds); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) 25082: throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int usleep (__useconds_t __useconds); 25082: # 469 "/usr/include/unistd.h" 3 4 25082: extern int pause (void); 25082: 25082: 25082: 25082: extern int chown (const char *__file, __uid_t __owner, __gid_t __group) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int fchownat (int __fd, const char *__file, __uid_t __owner, 25082: __gid_t __group, int __flag) 25082: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern int chdir (const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern int fchdir (int __fd) throw () __attribute__ ((__warn_unused_result__)); 25082: # 511 "/usr/include/unistd.h" 3 4 25082: extern char *getcwd (char *__buf, size_t __size) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern char *get_current_dir_name (void) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern char *getwd (char *__buf) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int dup (int __fd) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: extern int dup2 (int __fd, int __fd2) throw (); 25082: 25082: 25082: 25082: 25082: extern int dup3 (int __fd, int __fd2, int __flags) throw (); 25082: 25082: 25082: 25082: extern char **__environ; 25082: 25082: extern char **environ; 25082: 25082: 25082: 25082: 25082: 25082: extern int execve (const char *__path, char *const __argv[], 25082: char *const __envp[]) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: extern int fexecve (int __fd, char *const __argv[], char *const __envp[]) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: 25082: extern int execv (const char *__path, char *const __argv[]) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern int execle (const char *__path, const char *__arg, ...) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern int execl (const char *__path, const char *__arg, ...) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern int execvp (const char *__file, char *const __argv[]) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: extern int execlp (const char *__file, const char *__arg, ...) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: extern int execvpe (const char *__file, char *const __argv[], 25082: char *const __envp[]) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: 25082: extern int nice (int __inc) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern void _exit (int __status) __attribute__ ((__noreturn__)); 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/confname.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/confname.h" 3 4 25082: enum 25082: { 25082: _PC_LINK_MAX, 25082: 25082: _PC_MAX_CANON, 25082: 25082: _PC_MAX_INPUT, 25082: 25082: _PC_NAME_MAX, 25082: 25082: _PC_PATH_MAX, 25082: 25082: _PC_PIPE_BUF, 25082: 25082: _PC_CHOWN_RESTRICTED, 25082: 25082: _PC_NO_TRUNC, 25082: 25082: _PC_VDISABLE, 25082: 25082: _PC_SYNC_IO, 25082: 25082: _PC_ASYNC_IO, 25082: 25082: _PC_PRIO_IO, 25082: 25082: _PC_SOCK_MAXBUF, 25082: 25082: _PC_FILESIZEBITS, 25082: 25082: _PC_REC_INCR_XFER_SIZE, 25082: 25082: _PC_REC_MAX_XFER_SIZE, 25082: 25082: _PC_REC_MIN_XFER_SIZE, 25082: 25082: _PC_REC_XFER_ALIGN, 25082: 25082: _PC_ALLOC_SIZE_MIN, 25082: 25082: _PC_SYMLINK_MAX, 25082: 25082: _PC_2_SYMLINKS 25082: 25082: }; 25082: 25082: 25082: enum 25082: { 25082: _SC_ARG_MAX, 25082: 25082: _SC_CHILD_MAX, 25082: 25082: _SC_CLK_TCK, 25082: 25082: _SC_NGROUPS_MAX, 25082: 25082: _SC_OPEN_MAX, 25082: 25082: _SC_STREAM_MAX, 25082: 25082: _SC_TZNAME_MAX, 25082: 25082: _SC_JOB_CONTROL, 25082: 25082: _SC_SAVED_IDS, 25082: 25082: _SC_REALTIME_SIGNALS, 25082: 25082: _SC_PRIORITY_SCHEDULING, 25082: 25082: _SC_TIMERS, 25082: 25082: _SC_ASYNCHRONOUS_IO, 25082: 25082: _SC_PRIORITIZED_IO, 25082: 25082: _SC_SYNCHRONIZED_IO, 25082: 25082: _SC_FSYNC, 25082: 25082: _SC_MAPPED_FILES, 25082: 25082: _SC_MEMLOCK, 25082: 25082: _SC_MEMLOCK_RANGE, 25082: 25082: _SC_MEMORY_PROTECTION, 25082: 25082: _SC_MESSAGE_PASSING, 25082: 25082: _SC_SEMAPHORES, 25082: 25082: _SC_SHARED_MEMORY_OBJECTS, 25082: 25082: _SC_AIO_LISTIO_MAX, 25082: 25082: _SC_AIO_MAX, 25082: 25082: _SC_AIO_PRIO_DELTA_MAX, 25082: 25082: _SC_DELAYTIMER_MAX, 25082: 25082: _SC_MQ_OPEN_MAX, 25082: 25082: _SC_MQ_PRIO_MAX, 25082: 25082: _SC_VERSION, 25082: 25082: _SC_PAGESIZE, 25082: 25082: 25082: _SC_RTSIG_MAX, 25082: 25082: _SC_SEM_NSEMS_MAX, 25082: 25082: _SC_SEM_VALUE_MAX, 25082: 25082: _SC_SIGQUEUE_MAX, 25082: 25082: _SC_TIMER_MAX, 25082: 25082: 25082: 25082: 25082: _SC_BC_BASE_MAX, 25082: 25082: _SC_BC_DIM_MAX, 25082: 25082: _SC_BC_SCALE_MAX, 25082: 25082: _SC_BC_STRING_MAX, 25082: 25082: _SC_COLL_WEIGHTS_MAX, 25082: 25082: _SC_EQUIV_CLASS_MAX, 25082: 25082: _SC_EXPR_NEST_MAX, 25082: 25082: _SC_LINE_MAX, 25082: 25082: _SC_RE_DUP_MAX, 25082: 25082: _SC_CHARCLASS_NAME_MAX, 25082: 25082: 25082: _SC_2_VERSION, 25082: 25082: _SC_2_C_BIND, 25082: 25082: _SC_2_C_DEV, 25082: 25082: _SC_2_FORT_DEV, 25082: 25082: _SC_2_FORT_RUN, 25082: 25082: _SC_2_SW_DEV, 25082: 25082: _SC_2_LOCALEDEF, 25082: 25082: 25082: _SC_PII, 25082: 25082: _SC_PII_XTI, 25082: 25082: _SC_PII_SOCKET, 25082: 25082: _SC_PII_INTERNET, 25082: 25082: _SC_PII_OSI, 25082: 25082: _SC_POLL, 25082: 25082: _SC_SELECT, 25082: 25082: _SC_UIO_MAXIOV, 25082: 25082: _SC_IOV_MAX = _SC_UIO_MAXIOV, 25082: 25082: _SC_PII_INTERNET_STREAM, 25082: 25082: _SC_PII_INTERNET_DGRAM, 25082: 25082: _SC_PII_OSI_COTS, 25082: 25082: _SC_PII_OSI_CLTS, 25082: 25082: _SC_PII_OSI_M, 25082: 25082: _SC_T_IOV_MAX, 25082: 25082: 25082: 25082: _SC_THREADS, 25082: 25082: _SC_THREAD_SAFE_FUNCTIONS, 25082: 25082: _SC_GETGR_R_SIZE_MAX, 25082: 25082: _SC_GETPW_R_SIZE_MAX, 25082: 25082: _SC_LOGIN_NAME_MAX, 25082: 25082: _SC_TTY_NAME_MAX, 25082: 25082: _SC_THREAD_DESTRUCTOR_ITERATIONS, 25082: 25082: _SC_THREAD_KEYS_MAX, 25082: 25082: _SC_THREAD_STACK_MIN, 25082: 25082: _SC_THREAD_THREADS_MAX, 25082: 25082: _SC_THREAD_ATTR_STACKADDR, 25082: 25082: _SC_THREAD_ATTR_STACKSIZE, 25082: 25082: _SC_THREAD_PRIORITY_SCHEDULING, 25082: 25082: _SC_THREAD_PRIO_INHERIT, 25082: 25082: _SC_THREAD_PRIO_PROTECT, 25082: 25082: _SC_THREAD_PROCESS_SHARED, 25082: 25082: 25082: _SC_NPROCESSORS_CONF, 25082: 25082: _SC_NPROCESSORS_ONLN, 25082: 25082: _SC_PHYS_PAGES, 25082: 25082: _SC_AVPHYS_PAGES, 25082: 25082: _SC_ATEXIT_MAX, 25082: 25082: _SC_PASS_MAX, 25082: 25082: 25082: _SC_XOPEN_VERSION, 25082: 25082: _SC_XOPEN_XCU_VERSION, 25082: 25082: _SC_XOPEN_UNIX, 25082: 25082: _SC_XOPEN_CRYPT, 25082: 25082: _SC_XOPEN_ENH_I18N, 25082: 25082: _SC_XOPEN_SHM, 25082: 25082: 25082: _SC_2_CHAR_TERM, 25082: 25082: _SC_2_C_VERSION, 25082: 25082: _SC_2_UPE, 25082: 25082: 25082: _SC_XOPEN_XPG2, 25082: 25082: _SC_XOPEN_XPG3, 25082: 25082: _SC_XOPEN_XPG4, 25082: 25082: 25082: _SC_CHAR_BIT, 25082: 25082: _SC_CHAR_MAX, 25082: 25082: _SC_CHAR_MIN, 25082: 25082: _SC_INT_MAX, 25082: 25082: _SC_INT_MIN, 25082: 25082: _SC_LONG_BIT, 25082: 25082: _SC_WORD_BIT, 25082: 25082: _SC_MB_LEN_MAX, 25082: 25082: _SC_NZERO, 25082: 25082: _SC_SSIZE_MAX, 25082: 25082: _SC_SCHAR_MAX, 25082: 25082: _SC_SCHAR_MIN, 25082: 25082: _SC_SHRT_MAX, 25082: 25082: _SC_SHRT_MIN, 25082: 25082: _SC_UCHAR_MAX, 25082: 25082: _SC_UINT_MAX, 25082: 25082: _SC_ULONG_MAX, 25082: 25082: _SC_USHRT_MAX, 25082: 25082: 25082: _SC_NL_ARGMAX, 25082: 25082: _SC_NL_LANGMAX, 25082: 25082: _SC_NL_MSGMAX, 25082: 25082: _SC_NL_NMAX, 25082: 25082: _SC_NL_SETMAX, 25082: 25082: _SC_NL_TEXTMAX, 25082: 25082: 25082: _SC_XBS5_ILP32_OFF32, 25082: 25082: _SC_XBS5_ILP32_OFFBIG, 25082: 25082: _SC_XBS5_LP64_OFF64, 25082: 25082: _SC_XBS5_LPBIG_OFFBIG, 25082: 25082: 25082: _SC_XOPEN_LEGACY, 25082: 25082: _SC_XOPEN_REALTIME, 25082: 25082: _SC_XOPEN_REALTIME_THREADS, 25082: 25082: 25082: _SC_ADVISORY_INFO, 25082: 25082: _SC_BARRIERS, 25082: 25082: _SC_BASE, 25082: 25082: _SC_C_LANG_SUPPORT, 25082: 25082: _SC_C_LANG_SUPPORT_R, 25082: 25082: _SC_CLOCK_SELECTION, 25082: 25082: _SC_CPUTIME, 25082: 25082: _SC_THREAD_CPUTIME, 25082: 25082: _SC_DEVICE_IO, 25082: 25082: _SC_DEVICE_SPECIFIC, 25082: 25082: _SC_DEVICE_SPECIFIC_R, 25082: 25082: _SC_FD_MGMT, 25082: 25082: _SC_FIFO, 25082: 25082: _SC_PIPE, 25082: 25082: _SC_FILE_ATTRIBUTES, 25082: 25082: _SC_FILE_LOCKING, 25082: 25082: _SC_FILE_SYSTEM, 25082: 25082: _SC_MONOTONIC_CLOCK, 25082: 25082: _SC_MULTI_PROCESS, 25082: 25082: _SC_SINGLE_PROCESS, 25082: 25082: _SC_NETWORKING, 25082: 25082: _SC_READER_WRITER_LOCKS, 25082: 25082: _SC_SPIN_LOCKS, 25082: 25082: _SC_REGEXP, 25082: 25082: _SC_REGEX_VERSION, 25082: 25082: _SC_SHELL, 25082: 25082: _SC_SIGNALS, 25082: 25082: _SC_SPAWN, 25082: 25082: _SC_SPORADIC_SERVER, 25082: 25082: _SC_THREAD_SPORADIC_SERVER, 25082: 25082: _SC_SYSTEM_DATABASE, 25082: 25082: _SC_SYSTEM_DATABASE_R, 25082: 25082: _SC_TIMEOUTS, 25082: 25082: _SC_TYPED_MEMORY_OBJECTS, 25082: 25082: _SC_USER_GROUPS, 25082: 25082: _SC_USER_GROUPS_R, 25082: 25082: _SC_2_PBS, 25082: 25082: _SC_2_PBS_ACCOUNTING, 25082: 25082: _SC_2_PBS_LOCATE, 25082: 25082: _SC_2_PBS_MESSAGE, 25082: 25082: _SC_2_PBS_TRACK, 25082: 25082: _SC_SYMLOOP_MAX, 25082: 25082: _SC_STREAMS, 25082: 25082: _SC_2_PBS_CHECKPOINT, 25082: 25082: 25082: _SC_V6_ILP32_OFF32, 25082: 25082: _SC_V6_ILP32_OFFBIG, 25082: 25082: _SC_V6_LP64_OFF64, 25082: 25082: _SC_V6_LPBIG_OFFBIG, 25082: 25082: 25082: _SC_HOST_NAME_MAX, 25082: 25082: _SC_TRACE, 25082: 25082: _SC_TRACE_EVENT_FILTER, 25082: 25082: _SC_TRACE_INHERIT, 25082: 25082: _SC_TRACE_LOG, 25082: 25082: 25082: _SC_LEVEL1_ICACHE_SIZE, 25082: 25082: _SC_LEVEL1_ICACHE_ASSOC, 25082: 25082: _SC_LEVEL1_ICACHE_LINESIZE, 25082: 25082: _SC_LEVEL1_DCACHE_SIZE, 25082: 25082: _SC_LEVEL1_DCACHE_ASSOC, 25082: 25082: _SC_LEVEL1_DCACHE_LINESIZE, 25082: 25082: _SC_LEVEL2_CACHE_SIZE, 25082: 25082: _SC_LEVEL2_CACHE_ASSOC, 25082: 25082: _SC_LEVEL2_CACHE_LINESIZE, 25082: 25082: _SC_LEVEL3_CACHE_SIZE, 25082: 25082: _SC_LEVEL3_CACHE_ASSOC, 25082: 25082: _SC_LEVEL3_CACHE_LINESIZE, 25082: 25082: _SC_LEVEL4_CACHE_SIZE, 25082: 25082: _SC_LEVEL4_CACHE_ASSOC, 25082: 25082: _SC_LEVEL4_CACHE_LINESIZE, 25082: 25082: 25082: 25082: _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, 25082: 25082: _SC_RAW_SOCKETS, 25082: 25082: 25082: _SC_V7_ILP32_OFF32, 25082: 25082: _SC_V7_ILP32_OFFBIG, 25082: 25082: _SC_V7_LP64_OFF64, 25082: 25082: _SC_V7_LPBIG_OFFBIG, 25082: 25082: 25082: _SC_SS_REPL_MAX, 25082: 25082: 25082: _SC_TRACE_EVENT_NAME_MAX, 25082: 25082: _SC_TRACE_NAME_MAX, 25082: 25082: _SC_TRACE_SYS_MAX, 25082: 25082: _SC_TRACE_USER_EVENT_MAX, 25082: 25082: 25082: _SC_XOPEN_STREAMS, 25082: 25082: 25082: _SC_THREAD_ROBUST_PRIO_INHERIT, 25082: 25082: _SC_THREAD_ROBUST_PRIO_PROTECT 25082: 25082: }; 25082: 25082: 25082: enum 25082: { 25082: _CS_PATH, 25082: 25082: 25082: _CS_V6_WIDTH_RESTRICTED_ENVS, 25082: 25082: 25082: 25082: _CS_GNU_LIBC_VERSION, 25082: 25082: _CS_GNU_LIBPTHREAD_VERSION, 25082: 25082: 25082: _CS_V5_WIDTH_RESTRICTED_ENVS, 25082: 25082: 25082: 25082: _CS_V7_WIDTH_RESTRICTED_ENVS, 25082: 25082: 25082: 25082: _CS_LFS_CFLAGS = 1000, 25082: 25082: _CS_LFS_LDFLAGS, 25082: 25082: _CS_LFS_LIBS, 25082: 25082: _CS_LFS_LINTFLAGS, 25082: 25082: _CS_LFS64_CFLAGS, 25082: 25082: _CS_LFS64_LDFLAGS, 25082: 25082: _CS_LFS64_LIBS, 25082: 25082: _CS_LFS64_LINTFLAGS, 25082: 25082: 25082: _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, 25082: 25082: _CS_XBS5_ILP32_OFF32_LDFLAGS, 25082: 25082: _CS_XBS5_ILP32_OFF32_LIBS, 25082: 25082: _CS_XBS5_ILP32_OFF32_LINTFLAGS, 25082: 25082: _CS_XBS5_ILP32_OFFBIG_CFLAGS, 25082: 25082: _CS_XBS5_ILP32_OFFBIG_LDFLAGS, 25082: 25082: _CS_XBS5_ILP32_OFFBIG_LIBS, 25082: 25082: _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, 25082: 25082: _CS_XBS5_LP64_OFF64_CFLAGS, 25082: 25082: _CS_XBS5_LP64_OFF64_LDFLAGS, 25082: 25082: _CS_XBS5_LP64_OFF64_LIBS, 25082: 25082: _CS_XBS5_LP64_OFF64_LINTFLAGS, 25082: 25082: _CS_XBS5_LPBIG_OFFBIG_CFLAGS, 25082: 25082: _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, 25082: 25082: _CS_XBS5_LPBIG_OFFBIG_LIBS, 25082: 25082: _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, 25082: 25082: 25082: _CS_POSIX_V6_ILP32_OFF32_CFLAGS, 25082: 25082: _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, 25082: 25082: _CS_POSIX_V6_ILP32_OFF32_LIBS, 25082: 25082: _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, 25082: 25082: _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, 25082: 25082: _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, 25082: 25082: _CS_POSIX_V6_ILP32_OFFBIG_LIBS, 25082: 25082: _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, 25082: 25082: _CS_POSIX_V6_LP64_OFF64_CFLAGS, 25082: 25082: _CS_POSIX_V6_LP64_OFF64_LDFLAGS, 25082: 25082: _CS_POSIX_V6_LP64_OFF64_LIBS, 25082: 25082: _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, 25082: 25082: _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, 25082: 25082: _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, 25082: 25082: _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, 25082: 25082: _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, 25082: 25082: 25082: _CS_POSIX_V7_ILP32_OFF32_CFLAGS, 25082: 25082: _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, 25082: 25082: _CS_POSIX_V7_ILP32_OFF32_LIBS, 25082: 25082: _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, 25082: 25082: _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, 25082: 25082: _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, 25082: 25082: _CS_POSIX_V7_ILP32_OFFBIG_LIBS, 25082: 25082: _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, 25082: 25082: _CS_POSIX_V7_LP64_OFF64_CFLAGS, 25082: 25082: _CS_POSIX_V7_LP64_OFF64_LDFLAGS, 25082: 25082: _CS_POSIX_V7_LP64_OFF64_LIBS, 25082: 25082: _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, 25082: 25082: _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, 25082: 25082: _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, 25082: 25082: _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, 25082: 25082: _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, 25082: 25082: 25082: _CS_V6_ENV, 25082: 25082: _CS_V7_ENV 25082: 25082: }; 25082: # 610 "/usr/include/unistd.h" 2 3 4 25082: 25082: 25082: extern long int pathconf (const char *__path, int __name) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern long int fpathconf (int __fd, int __name) throw (); 25082: 25082: 25082: extern long int sysconf (int __name) throw (); 25082: 25082: 25082: 25082: extern size_t confstr (int __name, char *__buf, size_t __len) throw (); 25082: 25082: 25082: 25082: 25082: extern __pid_t getpid (void) throw (); 25082: 25082: 25082: extern __pid_t getppid (void) throw (); 25082: 25082: 25082: extern __pid_t getpgrp (void) throw (); 25082: 25082: 25082: extern __pid_t __getpgid (__pid_t __pid) throw (); 25082: 25082: extern __pid_t getpgid (__pid_t __pid) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int setpgid (__pid_t __pid, __pid_t __pgid) throw (); 25082: # 660 "/usr/include/unistd.h" 3 4 25082: extern int setpgrp (void) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern __pid_t setsid (void) throw (); 25082: 25082: 25082: 25082: extern __pid_t getsid (__pid_t __pid) throw (); 25082: 25082: 25082: 25082: extern __uid_t getuid (void) throw (); 25082: 25082: 25082: extern __uid_t geteuid (void) throw (); 25082: 25082: 25082: extern __gid_t getgid (void) throw (); 25082: 25082: 25082: extern __gid_t getegid (void) throw (); 25082: 25082: 25082: 25082: 25082: extern int getgroups (int __size, __gid_t __list[]) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern int group_member (__gid_t __gid) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int setuid (__uid_t __uid) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int setreuid (__uid_t __ruid, __uid_t __euid) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int seteuid (__uid_t __uid) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int setgid (__gid_t __gid) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int setregid (__gid_t __rgid, __gid_t __egid) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int setegid (__gid_t __gid) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) 25082: throw (); 25082: 25082: 25082: 25082: extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) 25082: throw (); 25082: 25082: 25082: 25082: extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) 25082: throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) 25082: throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern __pid_t fork (void) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern __pid_t vfork (void) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern char *ttyname (int __fd) throw (); 25082: 25082: 25082: 25082: extern int ttyname_r (int __fd, char *__buf, size_t __buflen) 25082: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern int isatty (int __fd) throw (); 25082: 25082: 25082: 25082: 25082: extern int ttyslot (void) throw (); 25082: 25082: 25082: 25082: 25082: extern int link (const char *__from, const char *__to) 25082: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int linkat (int __fromfd, const char *__from, int __tofd, 25082: const char *__to, int __flags) 25082: throw () __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int symlink (const char *__from, const char *__to) 25082: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern ssize_t readlink (const char *__restrict __path, 25082: char *__restrict __buf, size_t __len) 25082: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: extern int symlinkat (const char *__from, int __tofd, 25082: const char *__to) throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: extern ssize_t readlinkat (int __fd, const char *__restrict __path, 25082: char *__restrict __buf, size_t __len) 25082: throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern int unlink (const char *__name) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern int unlinkat (int __fd, const char *__name, int __flag) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: extern int rmdir (const char *__path) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern __pid_t tcgetpgrp (int __fd) throw (); 25082: 25082: 25082: extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern char *getlogin (void); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: extern int setlogin (const char *__name) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 1 3 4 25082: # 27 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 1 3 4 25082: # 28 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4 25082: extern "C" { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern char *optarg; 25082: # 50 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4 25082: extern int optind; 25082: 25082: 25082: 25082: 25082: extern int opterr; 25082: 25082: 25082: 25082: extern int optopt; 25082: # 91 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4 25082: extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) 25082: throw () __attribute__ ((__nonnull__ (2, 3))); 25082: 25082: } 25082: # 28 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 2 3 4 25082: 25082: extern "C" { 25082: # 49 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 3 4 25082: } 25082: # 870 "/usr/include/unistd.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int sethostname (const char *__name, size_t __len) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern int sethostid (long int __id) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern int getdomainname (char *__name, size_t __len) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: extern int setdomainname (const char *__name, size_t __len) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern int vhangup (void) throw (); 25082: 25082: 25082: extern int revoke (const char *__file) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int profil (unsigned short int *__sample_buffer, size_t __size, 25082: size_t __offset, unsigned int __scale) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: extern int acct (const char *__name) throw (); 25082: 25082: 25082: 25082: extern char *getusershell (void) throw (); 25082: extern void endusershell (void) throw (); 25082: extern void setusershell (void) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern int daemon (int __nochdir, int __noclose) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int chroot (const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int fsync (int __fd); 25082: 25082: 25082: 25082: 25082: 25082: extern int syncfs (int __fd) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int gethostid (void); 25082: 25082: 25082: extern void sync (void) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern int getpagesize (void) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern int getdtablesize (void) throw (); 25082: # 991 "/usr/include/unistd.h" 3 4 25082: extern int truncate (const char *__file, __off_t __length) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 1003 "/usr/include/unistd.h" 3 4 25082: extern int truncate64 (const char *__file, __off64_t __length) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: # 1014 "/usr/include/unistd.h" 3 4 25082: extern int ftruncate (int __fd, __off_t __length) throw () __attribute__ ((__warn_unused_result__)); 25082: # 1024 "/usr/include/unistd.h" 3 4 25082: extern int ftruncate64 (int __fd, __off64_t __length) throw () __attribute__ ((__warn_unused_result__)); 25082: # 1035 "/usr/include/unistd.h" 3 4 25082: extern int brk (void *__addr) throw () __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern void *sbrk (intptr_t __delta) throw (); 25082: # 1056 "/usr/include/unistd.h" 3 4 25082: extern long int syscall (long int __sysno, ...) throw (); 25082: # 1079 "/usr/include/unistd.h" 3 4 25082: extern int lockf (int __fd, int __cmd, __off_t __len) __attribute__ ((__warn_unused_result__)); 25082: # 1089 "/usr/include/unistd.h" 3 4 25082: extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__)); 25082: # 1107 "/usr/include/unistd.h" 3 4 25082: ssize_t copy_file_range (int __infd, __off64_t *__pinoff, 25082: int __outfd, __off64_t *__poutoff, 25082: size_t __length, unsigned int __flags); 25082: 25082: 25082: 25082: 25082: 25082: extern int fdatasync (int __fildes); 25082: # 1124 "/usr/include/unistd.h" 3 4 25082: extern char *crypt (const char *__key, const char *__salt) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern void swab (const void *__restrict __from, void *__restrict __to, 25082: ssize_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: # 1161 "/usr/include/unistd.h" 3 4 25082: int getentropy (void *__buffer, size_t __length) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/unistd.h" 1 3 4 25082: # 23 "/usr/include/aarch64-linux-gnu/bits/unistd.h" 3 4 25082: extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes, 25082: size_t __buflen) __attribute__ ((__warn_unused_result__)); 25082: extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") 25082: __attribute__ ((__warn_unused_result__)); 25082: extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 25082: read (int __fd, void *__buf, size_t __nbytes) 25082: { 25082: if (__builtin_object_size (__buf, 0) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__nbytes)) 25082: return __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)); 25082: 25082: if (__nbytes > __builtin_object_size (__buf, 0)) 25082: return __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)); 25082: } 25082: return __read_alias (__fd, __buf, __nbytes); 25082: } 25082: 25082: 25082: extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes, 25082: __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)); 25082: extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes, 25082: __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)); 25082: extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") 25082: 25082: __attribute__ ((__warn_unused_result__)); 25082: extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") 25082: 25082: __attribute__ ((__warn_unused_result__)); 25082: extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer"))) 25082: ; 25082: extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk") 25082: 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer"))) 25082: ; 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 25082: pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset) 25082: { 25082: if (__builtin_object_size (__buf, 0) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__nbytes)) 25082: return __pread_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)); 25082: 25082: if ( __nbytes > __builtin_object_size (__buf, 0)) 25082: return __pread_chk_warn (__fd, __buf, __nbytes, __offset, 25082: __builtin_object_size (__buf, 0)); 25082: } 25082: return __pread_alias (__fd, __buf, __nbytes, __offset); 25082: } 25082: # 104 "/usr/include/aarch64-linux-gnu/bits/unistd.h" 3 4 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 25082: pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) 25082: { 25082: if (__builtin_object_size (__buf, 0) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__nbytes)) 25082: return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)); 25082: 25082: if ( __nbytes > __builtin_object_size (__buf, 0)) 25082: return __pread64_chk_warn (__fd, __buf, __nbytes, __offset, 25082: __builtin_object_size (__buf, 0)); 25082: } 25082: 25082: return __pread64_alias (__fd, __buf, __nbytes, __offset); 25082: } 25082: 25082: 25082: 25082: 25082: extern ssize_t __readlink_chk (const char *__restrict __path, 25082: char *__restrict __buf, size_t __len, 25082: size_t __buflen) 25082: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 25082: extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlink") 25082: 25082: 25082: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 25082: extern ssize_t __readlink_chk_warn (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__readlink_chk") 25082: 25082: 25082: 25082: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t 25082: __attribute__ ((__leaf__)) readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) throw () 25082: 25082: { 25082: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__len)) 25082: return __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 25082: 25082: if ( __len > __builtin_object_size (__buf, 2 > 1)) 25082: return __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 25082: } 25082: return __readlink_alias (__path, __buf, __len); 25082: } 25082: 25082: 25082: 25082: extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path, 25082: char *__restrict __buf, size_t __len, 25082: size_t __buflen) 25082: throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); 25082: extern ssize_t __readlinkat_alias (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlinkat") 25082: 25082: 25082: 25082: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); 25082: 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") 25082: 25082: 25082: 25082: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer"))) 25082: 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t 25082: __attribute__ ((__leaf__)) readlinkat (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) throw () 25082: 25082: { 25082: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__len)) 25082: return __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 25082: 25082: if (__len > __builtin_object_size (__buf, 2 > 1)) 25082: return __readlinkat_chk_warn (__fd, __path, __buf, __len, 25082: __builtin_object_size (__buf, 2 > 1)); 25082: } 25082: return __readlinkat_alias (__fd, __path, __buf, __len); 25082: } 25082: 25082: 25082: extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) 25082: throw () __attribute__ ((__warn_unused_result__)); 25082: extern char *__getcwd_alias (char *__buf, size_t __size) throw () __asm__ ("" "getcwd") 25082: __attribute__ ((__warn_unused_result__)); 25082: extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) throw () __asm__ ("" "__getcwd_chk") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 25082: __attribute__ ((__leaf__)) getcwd (char *__buf, size_t __size) throw () 25082: { 25082: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__size)) 25082: return __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1)); 25082: 25082: if (__size > __builtin_object_size (__buf, 2 > 1)) 25082: return __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1)); 25082: } 25082: return __getcwd_alias (__buf, __size); 25082: } 25082: 25082: 25082: extern char *__getwd_chk (char *__buf, size_t buflen) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: extern char *__getwd_warn (char *__buf) throw () __asm__ ("" "getwd") 25082: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * 25082: __attribute__ ((__leaf__)) getwd (char *__buf) throw () 25082: { 25082: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 25082: return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1)); 25082: return __getwd_warn (__buf); 25082: } 25082: 25082: 25082: extern size_t __confstr_chk (int __name, char *__buf, size_t __len, 25082: size_t __buflen) throw (); 25082: extern size_t __confstr_alias (int __name, char *__buf, size_t __len) throw () __asm__ ("" "confstr") 25082: ; 25082: extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__confstr_chk") 25082: 25082: 25082: __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 25082: __attribute__ ((__leaf__)) confstr (int __name, char *__buf, size_t __len) throw () 25082: { 25082: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__len)) 25082: return __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 25082: 25082: if (__builtin_object_size (__buf, 2 > 1) < __len) 25082: return __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 25082: } 25082: return __confstr_alias (__name, __buf, __len); 25082: } 25082: 25082: 25082: extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen) 25082: throw () __attribute__ ((__warn_unused_result__)); 25082: extern int __getgroups_alias (int __size, __gid_t __list[]) throw () __asm__ ("" "getgroups") 25082: __attribute__ ((__warn_unused_result__)); 25082: extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) throw () __asm__ ("" "__getgroups_chk") 25082: 25082: 25082: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) getgroups (int __size, __gid_t __list[]) throw () 25082: { 25082: if (__builtin_object_size (__list, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__size) || __size < 0) 25082: return __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1)); 25082: 25082: if (__size * sizeof (__gid_t) > __builtin_object_size (__list, 2 > 1)) 25082: return __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1)); 25082: } 25082: return __getgroups_alias (__size, __list); 25082: } 25082: 25082: 25082: extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen, 25082: size_t __nreal) throw () __attribute__ ((__nonnull__ (2))); 25082: extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ttyname_r") 25082: 25082: __attribute__ ((__nonnull__ (2))); 25082: extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ttyname_r_chk") 25082: 25082: 25082: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) ttyname_r (int __fd, char *__buf, size_t __buflen) throw () 25082: { 25082: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__buflen)) 25082: return __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 25082: 25082: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 25082: return __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 25082: } 25082: return __ttyname_r_alias (__fd, __buf, __buflen); 25082: } 25082: 25082: 25082: 25082: extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal) 25082: __attribute__ ((__nonnull__ (1))); 25082: extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") 25082: __attribute__ ((__nonnull__ (1))); 25082: extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk") 25082: 25082: 25082: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: getlogin_r (char *__buf, size_t __buflen) 25082: { 25082: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__buflen)) 25082: return __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 25082: 25082: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 25082: return __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 25082: } 25082: return __getlogin_r_alias (__buf, __buflen); 25082: } 25082: 25082: 25082: 25082: 25082: extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: extern int __gethostname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "gethostname") 25082: __attribute__ ((__nonnull__ (1))); 25082: extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__gethostname_chk") 25082: 25082: 25082: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))) 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) gethostname (char *__buf, size_t __buflen) throw () 25082: { 25082: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__buflen)) 25082: return __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 25082: 25082: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 25082: return __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 25082: } 25082: return __gethostname_alias (__buf, __buflen); 25082: } 25082: 25082: 25082: 25082: 25082: extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal) 25082: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: extern int __getdomainname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "getdomainname") 25082: 25082: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 25082: extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__getdomainname_chk") 25082: 25082: 25082: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer"))) 25082: 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 25082: __attribute__ ((__leaf__)) getdomainname (char *__buf, size_t __buflen) throw () 25082: { 25082: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 25082: { 25082: if (!__builtin_constant_p (__buflen)) 25082: return __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 25082: 25082: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 25082: return __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 25082: } 25082: return __getdomainname_alias (__buf, __buflen); 25082: } 25082: # 1167 "/usr/include/unistd.h" 2 3 4 25082: 25082: 25082: } 25082: # 79 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 2 3 4 25082: # 49 "/usr/include/boost/config.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/config/detail/select_platform_config.hpp" 1 3 4 25082: # 54 "/usr/include/boost/config.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/config/platform/linux.hpp" 1 3 4 25082: # 15 "/usr/include/boost/config/platform/linux.hpp" 3 4 25082: # 1 "/usr/include/c++/8/cstdlib" 1 3 4 25082: # 39 "/usr/include/c++/8/cstdlib" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstdlib" 3 25082: # 16 "/usr/include/boost/config/platform/linux.hpp" 2 3 4 25082: # 75 "/usr/include/boost/config/platform/linux.hpp" 3 4 25082: # 1 "/usr/include/boost/config/detail/posix_features.hpp" 1 3 4 25082: # 76 "/usr/include/boost/config/platform/linux.hpp" 2 3 4 25082: # 58 "/usr/include/boost/config.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/config/detail/suffix.hpp" 1 3 4 25082: # 34 "/usr/include/boost/config/detail/suffix.hpp" 3 4 25082: 25082: # 35 "/usr/include/boost/config/detail/suffix.hpp" 3 25082: # 484 "/usr/include/boost/config/detail/suffix.hpp" 3 25082: namespace boost{ 25082: 25082: __extension__ typedef long long long_long_type; 25082: __extension__ typedef unsigned long long ulong_long_type; 25082: 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: namespace boost{ 25082: 25082: __extension__ typedef __int128 int128_type; 25082: __extension__ typedef unsigned __int128 uint128_type; 25082: 25082: 25082: 25082: 25082: } 25082: # 543 "/usr/include/boost/config/detail/suffix.hpp" 3 25082: # 1 "/usr/include/boost/config/helper_macros.hpp" 1 3 4 25082: # 544 "/usr/include/boost/config/detail/suffix.hpp" 2 3 25082: # 62 "/usr/include/boost/config.hpp" 2 3 4 25082: 25082: 25082: 25082: # 101 "/usr/include/boost/operators.hpp" 2 3 4 25082: # 1 "/usr/include/boost/detail/workaround.hpp" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/config/workaround.hpp" 1 3 4 25082: # 9 "/usr/include/boost/detail/workaround.hpp" 2 3 4 25082: # 102 "/usr/include/boost/operators.hpp" 2 3 4 25082: # 1 "/usr/include/boost/core/addressof.hpp" 1 3 4 25082: # 34 "/usr/include/boost/core/addressof.hpp" 3 4 25082: namespace boost { 25082: 25082: template 25082: constexpr inline T* 25082: addressof(T& o) noexcept 25082: { 25082: return __builtin_addressof(o); 25082: } 25082: 25082: } 25082: # 266 "/usr/include/boost/core/addressof.hpp" 3 4 25082: namespace boost { 25082: 25082: template 25082: const T* addressof(const T&&) = delete; 25082: 25082: } 25082: # 103 "/usr/include/boost/operators.hpp" 2 3 4 25082: # 116 "/usr/include/boost/operators.hpp" 3 4 25082: namespace boost 25082: { 25082: namespace operators_impl 25082: { 25082: namespace operators_detail 25082: { 25082: 25082: template class empty_base {}; 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template > 25082: struct less_than_comparable2 : B 25082: { 25082: friend bool operator<=(const T& x, const U& y) { return !static_cast(x > y); } 25082: friend bool operator>=(const T& x, const U& y) { return !static_cast(x < y); } 25082: friend bool operator>(const U& x, const T& y) { return y < x; } 25082: friend bool operator<(const U& x, const T& y) { return y > x; } 25082: friend bool operator<=(const U& x, const T& y) { return !static_cast(y < x); } 25082: friend bool operator>=(const U& x, const T& y) { return !static_cast(y > x); } 25082: }; 25082: 25082: template > 25082: struct less_than_comparable1 : B 25082: { 25082: friend bool operator>(const T& x, const T& y) { return y < x; } 25082: friend bool operator<=(const T& x, const T& y) { return !static_cast(y < x); } 25082: friend bool operator>=(const T& x, const T& y) { return !static_cast(x < y); } 25082: }; 25082: 25082: template > 25082: struct equality_comparable2 : B 25082: { 25082: friend bool operator==(const U& y, const T& x) { return x == y; } 25082: friend bool operator!=(const U& y, const T& x) { return !static_cast(x == y); } 25082: friend bool operator!=(const T& y, const U& x) { return !static_cast(y == x); } 25082: }; 25082: 25082: template > 25082: struct equality_comparable1 : B 25082: { 25082: friend bool operator!=(const T& x, const T& y) { return !static_cast(x == y); } 25082: }; 25082: # 259 "/usr/include/boost/operators.hpp" 3 4 25082: template > 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 > struct multipliable1 : B { friend T operator *( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv *= rhs; return nrv; } }; 25082: template > 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 > struct addable1 : B { friend T operator +( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv += rhs; return nrv; } }; 25082: template > struct subtractable2 : B { friend T operator -( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv -= rhs; return nrv; } }; template > struct subtractable2_left : B { friend T operator -( const U& lhs, const T& rhs ) { T nrv( lhs ); nrv -= rhs; return nrv; } }; template > struct subtractable1 : B { friend T operator -( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv -= rhs; return nrv; } }; 25082: template > struct dividable2 : B { friend T operator /( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv /= rhs; return nrv; } }; template > struct dividable2_left : B { friend T operator /( const U& lhs, const T& rhs ) { T nrv( lhs ); nrv /= rhs; return nrv; } }; template > struct dividable1 : B { friend T operator /( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv /= rhs; return nrv; } }; 25082: template > struct modable2 : B { friend T operator %( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv %= rhs; return nrv; } }; template > struct modable2_left : B { friend T operator %( const U& lhs, const T& rhs ) { T nrv( lhs ); nrv %= rhs; return nrv; } }; template > struct modable1 : B { friend T operator %( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv %= rhs; return nrv; } }; 25082: template > 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 > struct xorable1 : B { friend T operator ^( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv ^= rhs; return nrv; } }; 25082: template > 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 > struct andable1 : B { friend T operator &( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv &= rhs; return nrv; } }; 25082: template > 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 > struct orable1 : B { friend T operator |( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv |= rhs; return nrv; } }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template > 25082: struct incrementable : B 25082: { 25082: friend T operator++(T& x, int) 25082: { 25082: incrementable_type nrv(x); 25082: ++x; 25082: return nrv; 25082: } 25082: private: 25082: typedef T incrementable_type; 25082: }; 25082: 25082: template > 25082: struct decrementable : B 25082: { 25082: friend T operator--(T& x, int) 25082: { 25082: decrementable_type nrv(x); 25082: --x; 25082: return nrv; 25082: } 25082: private: 25082: typedef T decrementable_type; 25082: }; 25082: 25082: 25082: 25082: template > 25082: struct dereferenceable : B 25082: { 25082: P operator->() const 25082: { 25082: return ::boost::addressof(*static_cast(*this)); 25082: } 25082: }; 25082: 25082: template > 25082: struct indexable : B 25082: { 25082: R operator[](I n) const 25082: { 25082: return *(static_cast(*this) + n); 25082: } 25082: }; 25082: # 357 "/usr/include/boost/operators.hpp" 3 4 25082: template > struct left_shiftable2 : B { friend T operator <<( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv <<= rhs; return nrv; } }; template > struct left_shiftable1 : B { friend T operator <<( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv <<= rhs; return nrv; } }; 25082: template > struct right_shiftable2 : B { friend T operator >>( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv >>= rhs; return nrv; } }; template > struct right_shiftable1 : B { friend T operator >>( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv >>= rhs; return nrv; } }; 25082: 25082: 25082: 25082: template > 25082: struct equivalent2 : B 25082: { 25082: friend bool operator==(const T& x, const U& y) 25082: { 25082: return !static_cast(x < y) && !static_cast(x > y); 25082: } 25082: }; 25082: 25082: template > 25082: struct equivalent1 : B 25082: { 25082: friend bool operator==(const T&x, const T&y) 25082: { 25082: return !static_cast(x < y) && !static_cast(y < x); 25082: } 25082: }; 25082: 25082: template > 25082: struct partially_ordered2 : B 25082: { 25082: friend bool operator<=(const T& x, const U& y) 25082: { return static_cast(x < y) || static_cast(x == y); } 25082: friend bool operator>=(const T& x, const U& y) 25082: { return static_cast(x > y) || static_cast(x == y); } 25082: friend bool operator>(const U& x, const T& y) 25082: { return y < x; } 25082: friend bool operator<(const U& x, const T& y) 25082: { return y > x; } 25082: friend bool operator<=(const U& x, const T& y) 25082: { return static_cast(y > x) || static_cast(y == x); } 25082: friend bool operator>=(const U& x, const T& y) 25082: { return static_cast(y < x) || static_cast(y == x); } 25082: }; 25082: 25082: template > 25082: struct partially_ordered1 : B 25082: { 25082: friend bool operator>(const T& x, const T& y) 25082: { return y < x; } 25082: friend bool operator<=(const T& x, const T& y) 25082: { return static_cast(x < y) || static_cast(x == y); } 25082: friend bool operator>=(const T& x, const T& y) 25082: { return static_cast(y < x) || static_cast(x == y); } 25082: }; 25082: 25082: 25082: 25082: template > 25082: struct totally_ordered2 25082: : less_than_comparable2 > {}; 25082: 25082: template > 25082: struct totally_ordered1 25082: : less_than_comparable1 > {}; 25082: 25082: template > 25082: struct additive2 25082: : addable2 > {}; 25082: 25082: template > 25082: struct additive1 25082: : addable1 > {}; 25082: 25082: template > 25082: struct multiplicative2 25082: : multipliable2 > {}; 25082: 25082: template > 25082: struct multiplicative1 25082: : multipliable1 > {}; 25082: 25082: template > 25082: struct integer_multiplicative2 25082: : multiplicative2 > {}; 25082: 25082: template > 25082: struct integer_multiplicative1 25082: : multiplicative1 > {}; 25082: 25082: template > 25082: struct arithmetic2 25082: : additive2 > {}; 25082: 25082: template > 25082: struct arithmetic1 25082: : additive1 > {}; 25082: 25082: template > 25082: struct integer_arithmetic2 25082: : additive2 > {}; 25082: 25082: template > 25082: struct integer_arithmetic1 25082: : additive1 > {}; 25082: 25082: template > 25082: struct bitwise2 25082: : xorable2 > > {}; 25082: 25082: template > 25082: struct bitwise1 25082: : xorable1 > > {}; 25082: 25082: template > 25082: struct unit_steppable 25082: : incrementable > {}; 25082: 25082: template > 25082: struct shiftable2 25082: : left_shiftable2 > {}; 25082: 25082: template > 25082: struct shiftable1 25082: : left_shiftable1 > {}; 25082: 25082: template > 25082: struct ring_operators2 25082: : additive2 > > {}; 25082: 25082: template > 25082: struct ring_operators1 25082: : additive1 > {}; 25082: 25082: template > 25082: struct ordered_ring_operators2 25082: : ring_operators2 > {}; 25082: 25082: template > 25082: struct ordered_ring_operators1 25082: : ring_operators1 > {}; 25082: 25082: template > 25082: struct field_operators2 25082: : ring_operators2 > > {}; 25082: 25082: template > 25082: struct field_operators1 25082: : ring_operators1 > {}; 25082: 25082: template > 25082: struct ordered_field_operators2 25082: : field_operators2 > {}; 25082: 25082: template > 25082: struct ordered_field_operators1 25082: : field_operators1 > {}; 25082: 25082: template > 25082: struct euclidian_ring_operators2 25082: : ring_operators2 > > > > {}; 25082: 25082: template > 25082: struct euclidian_ring_operators1 25082: : ring_operators1 > > {}; 25082: 25082: template > 25082: struct ordered_euclidian_ring_operators2 25082: : totally_ordered2 > {}; 25082: 25082: template > 25082: struct ordered_euclidian_ring_operators1 25082: : totally_ordered1 > {}; 25082: 25082: template > 25082: struct euclidean_ring_operators2 25082: : ring_operators2 > > > > {}; 25082: 25082: template > 25082: struct euclidean_ring_operators1 25082: : ring_operators1 > > {}; 25082: 25082: template > 25082: struct ordered_euclidean_ring_operators2 25082: : totally_ordered2 > {}; 25082: 25082: template > 25082: struct ordered_euclidean_ring_operators1 25082: : totally_ordered1 > {}; 25082: 25082: template > 25082: struct input_iteratable 25082: : equality_comparable1 > > {}; 25082: 25082: template > 25082: struct output_iteratable 25082: : incrementable {}; 25082: 25082: template > 25082: struct forward_iteratable 25082: : input_iteratable {}; 25082: 25082: template > 25082: struct bidirectional_iteratable 25082: : forward_iteratable > {}; 25082: 25082: 25082: 25082: 25082: 25082: template > 25082: struct random_access_iteratable 25082: : bidirectional_iteratable > > > {}; 25082: # 662 "/usr/include/boost/operators.hpp" 3 4 25082: namespace operators_detail 25082: { 25082: 25082: 25082: 25082: struct true_t {}; 25082: struct false_t {}; 25082: 25082: } 25082: # 679 "/usr/include/boost/operators.hpp" 3 4 25082: template struct is_chained_base { 25082: typedef operators_detail::false_t value; 25082: }; 25082: # 757 "/usr/include/boost/operators.hpp" 3 4 25082: template ,class O = typename is_chained_base::value > struct less_than_comparable; template struct less_than_comparable : less_than_comparable2 {}; template struct less_than_comparable, operators_detail::true_t> : less_than_comparable1 {}; template struct less_than_comparable : less_than_comparable1 {}; template struct is_chained_base< less_than_comparable > { typedef operators_detail::true_t value; }; template struct is_chained_base< less_than_comparable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< less_than_comparable1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct equality_comparable; template struct equality_comparable : equality_comparable2 {}; template struct equality_comparable, operators_detail::true_t> : equality_comparable1 {}; template struct equality_comparable : equality_comparable1 {}; template struct is_chained_base< equality_comparable > { typedef operators_detail::true_t value; }; template struct is_chained_base< equality_comparable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< equality_comparable1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct multipliable; template struct multipliable : multipliable2 {}; template struct multipliable, operators_detail::true_t> : multipliable1 {}; template struct multipliable : multipliable1 {}; template struct is_chained_base< multipliable > { typedef operators_detail::true_t value; }; template struct is_chained_base< multipliable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< multipliable1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct addable; template struct addable : addable2 {}; template struct addable, operators_detail::true_t> : addable1 {}; template struct addable : addable1 {}; template struct is_chained_base< addable > { typedef operators_detail::true_t value; }; template struct is_chained_base< addable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< addable1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct subtractable; template struct subtractable : subtractable2 {}; template struct subtractable, operators_detail::true_t> : subtractable1 {}; template struct subtractable : subtractable1 {}; template struct is_chained_base< subtractable > { typedef operators_detail::true_t value; }; template struct is_chained_base< subtractable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< subtractable1 > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< subtractable2_left > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct dividable; template struct dividable : dividable2 {}; template struct dividable, operators_detail::true_t> : dividable1 {}; template struct dividable : dividable1 {}; template struct is_chained_base< dividable > { typedef operators_detail::true_t value; }; template struct is_chained_base< dividable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< dividable1 > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< dividable2_left > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct modable; template struct modable : modable2 {}; template struct modable, operators_detail::true_t> : modable1 {}; template struct modable : modable1 {}; template struct is_chained_base< modable > { typedef operators_detail::true_t value; }; template struct is_chained_base< modable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< modable1 > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< modable2_left > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct xorable; template struct xorable : xorable2 {}; template struct xorable, operators_detail::true_t> : xorable1 {}; template struct xorable : xorable1 {}; template struct is_chained_base< xorable > { typedef operators_detail::true_t value; }; template struct is_chained_base< xorable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< xorable1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct andable; template struct andable : andable2 {}; template struct andable, operators_detail::true_t> : andable1 {}; template struct andable : andable1 {}; template struct is_chained_base< andable > { typedef operators_detail::true_t value; }; template struct is_chained_base< andable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< andable1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct orable; template struct orable : orable2 {}; template struct orable, operators_detail::true_t> : orable1 {}; template struct orable : orable1 {}; template struct is_chained_base< orable > { typedef operators_detail::true_t value; }; template struct is_chained_base< orable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< orable1 > { typedef operators_detail::true_t value; }; 25082: 25082: template struct is_chained_base< incrementable > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< decrementable > { typedef operators_detail::true_t value; }; 25082: 25082: template struct is_chained_base< dereferenceable > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< indexable > { typedef operators_detail::true_t value; }; 25082: 25082: template ,class O = typename is_chained_base::value > struct left_shiftable; template struct left_shiftable : left_shiftable2 {}; template struct left_shiftable, operators_detail::true_t> : left_shiftable1 {}; template struct left_shiftable : left_shiftable1 {}; template struct is_chained_base< left_shiftable > { typedef operators_detail::true_t value; }; template struct is_chained_base< left_shiftable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< left_shiftable1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct right_shiftable; template struct right_shiftable : right_shiftable2 {}; template struct right_shiftable, operators_detail::true_t> : right_shiftable1 {}; template struct right_shiftable : right_shiftable1 {}; template struct is_chained_base< right_shiftable > { typedef operators_detail::true_t value; }; template struct is_chained_base< right_shiftable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< right_shiftable1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct equivalent; template struct equivalent : equivalent2 {}; template struct equivalent, operators_detail::true_t> : equivalent1 {}; template struct equivalent : equivalent1 {}; template struct is_chained_base< equivalent > { typedef operators_detail::true_t value; }; template struct is_chained_base< equivalent2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< equivalent1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct partially_ordered; template struct partially_ordered : partially_ordered2 {}; template struct partially_ordered, operators_detail::true_t> : partially_ordered1 {}; template struct partially_ordered : partially_ordered1 {}; template struct is_chained_base< partially_ordered > { typedef operators_detail::true_t value; }; template struct is_chained_base< partially_ordered2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< partially_ordered1 > { typedef operators_detail::true_t value; }; 25082: 25082: template ,class O = typename is_chained_base::value > struct totally_ordered; template struct totally_ordered : totally_ordered2 {}; template struct totally_ordered, operators_detail::true_t> : totally_ordered1 {}; template struct totally_ordered : totally_ordered1 {}; template struct is_chained_base< totally_ordered > { typedef operators_detail::true_t value; }; template struct is_chained_base< totally_ordered2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< totally_ordered1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct additive; template struct additive : additive2 {}; template struct additive, operators_detail::true_t> : additive1 {}; template struct additive : additive1 {}; template struct is_chained_base< additive > { typedef operators_detail::true_t value; }; template struct is_chained_base< additive2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< additive1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct multiplicative; template struct multiplicative : multiplicative2 {}; template struct multiplicative, operators_detail::true_t> : multiplicative1 {}; template struct multiplicative : multiplicative1 {}; template struct is_chained_base< multiplicative > { typedef operators_detail::true_t value; }; template struct is_chained_base< multiplicative2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< multiplicative1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct integer_multiplicative; template struct integer_multiplicative : integer_multiplicative2 {}; template struct integer_multiplicative, operators_detail::true_t> : integer_multiplicative1 {}; template struct integer_multiplicative : integer_multiplicative1 {}; template struct is_chained_base< integer_multiplicative > { typedef operators_detail::true_t value; }; template struct is_chained_base< integer_multiplicative2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< integer_multiplicative1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct arithmetic; template struct arithmetic : arithmetic2 {}; template struct arithmetic, operators_detail::true_t> : arithmetic1 {}; template struct arithmetic : arithmetic1 {}; template struct is_chained_base< arithmetic > { typedef operators_detail::true_t value; }; template struct is_chained_base< arithmetic2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< arithmetic1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct integer_arithmetic; template struct integer_arithmetic : integer_arithmetic2 {}; template struct integer_arithmetic, operators_detail::true_t> : integer_arithmetic1 {}; template struct integer_arithmetic : integer_arithmetic1 {}; template struct is_chained_base< integer_arithmetic > { typedef operators_detail::true_t value; }; template struct is_chained_base< integer_arithmetic2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< integer_arithmetic1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct bitwise; template struct bitwise : bitwise2 {}; template struct bitwise, operators_detail::true_t> : bitwise1 {}; template struct bitwise : bitwise1 {}; template struct is_chained_base< bitwise > { typedef operators_detail::true_t value; }; template struct is_chained_base< bitwise2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< bitwise1 > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< unit_steppable > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct shiftable; template struct shiftable : shiftable2 {}; template struct shiftable, operators_detail::true_t> : shiftable1 {}; template struct shiftable : shiftable1 {}; template struct is_chained_base< shiftable > { typedef operators_detail::true_t value; }; template struct is_chained_base< shiftable2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< shiftable1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct ring_operators; template struct ring_operators : ring_operators2 {}; template struct ring_operators, operators_detail::true_t> : ring_operators1 {}; template struct ring_operators : ring_operators1 {}; template struct is_chained_base< ring_operators > { typedef operators_detail::true_t value; }; template struct is_chained_base< ring_operators2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< ring_operators1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct ordered_ring_operators; template struct ordered_ring_operators : ordered_ring_operators2 {}; template struct ordered_ring_operators, operators_detail::true_t> : ordered_ring_operators1 {}; template struct ordered_ring_operators : ordered_ring_operators1 {}; template struct is_chained_base< ordered_ring_operators > { typedef operators_detail::true_t value; }; template struct is_chained_base< ordered_ring_operators2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< ordered_ring_operators1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct field_operators; template struct field_operators : field_operators2 {}; template struct field_operators, operators_detail::true_t> : field_operators1 {}; template struct field_operators : field_operators1 {}; template struct is_chained_base< field_operators > { typedef operators_detail::true_t value; }; template struct is_chained_base< field_operators2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< field_operators1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct ordered_field_operators; template struct ordered_field_operators : ordered_field_operators2 {}; template struct ordered_field_operators, operators_detail::true_t> : ordered_field_operators1 {}; template struct ordered_field_operators : ordered_field_operators1 {}; template struct is_chained_base< ordered_field_operators > { typedef operators_detail::true_t value; }; template struct is_chained_base< ordered_field_operators2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< ordered_field_operators1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct euclidian_ring_operators; template struct euclidian_ring_operators : euclidian_ring_operators2 {}; template struct euclidian_ring_operators, operators_detail::true_t> : euclidian_ring_operators1 {}; template struct euclidian_ring_operators : euclidian_ring_operators1 {}; template struct is_chained_base< euclidian_ring_operators > { typedef operators_detail::true_t value; }; template struct is_chained_base< euclidian_ring_operators2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< euclidian_ring_operators1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct ordered_euclidian_ring_operators; template struct ordered_euclidian_ring_operators : ordered_euclidian_ring_operators2 {}; template struct ordered_euclidian_ring_operators, operators_detail::true_t> : ordered_euclidian_ring_operators1 {}; template struct ordered_euclidian_ring_operators : ordered_euclidian_ring_operators1 {}; template struct is_chained_base< ordered_euclidian_ring_operators > { typedef operators_detail::true_t value; }; template struct is_chained_base< ordered_euclidian_ring_operators2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< ordered_euclidian_ring_operators1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct euclidean_ring_operators; template struct euclidean_ring_operators : euclidean_ring_operators2 {}; template struct euclidean_ring_operators, operators_detail::true_t> : euclidean_ring_operators1 {}; template struct euclidean_ring_operators : euclidean_ring_operators1 {}; template struct is_chained_base< euclidean_ring_operators > { typedef operators_detail::true_t value; }; template struct is_chained_base< euclidean_ring_operators2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< euclidean_ring_operators1 > { typedef operators_detail::true_t value; }; 25082: template ,class O = typename is_chained_base::value > struct ordered_euclidean_ring_operators; template struct ordered_euclidean_ring_operators : ordered_euclidean_ring_operators2 {}; template struct ordered_euclidean_ring_operators, operators_detail::true_t> : ordered_euclidean_ring_operators1 {}; template struct ordered_euclidean_ring_operators : ordered_euclidean_ring_operators1 {}; template struct is_chained_base< ordered_euclidean_ring_operators > { typedef operators_detail::true_t value; }; template struct is_chained_base< ordered_euclidean_ring_operators2 > { typedef operators_detail::true_t value; }; template struct is_chained_base< ordered_euclidean_ring_operators1 > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< input_iteratable > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< output_iteratable > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< forward_iteratable > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< bidirectional_iteratable > { typedef operators_detail::true_t value; }; 25082: template struct is_chained_base< random_access_iteratable > { typedef operators_detail::true_t value; }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct operators2 25082: : totally_ordered2 > > {}; 25082: 25082: template 25082: struct operators : operators2 {}; 25082: 25082: template struct operators 25082: : totally_ordered > > > {}; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct iterator_helper 25082: { 25082: typedef Category iterator_category; 25082: typedef T value_type; 25082: typedef Distance difference_type; 25082: typedef Pointer pointer; 25082: typedef Reference reference; 25082: }; 25082: 25082: template 25082: struct input_iterator_helper 25082: : input_iteratable > {}; 25082: 25082: template 25082: struct output_iterator_helper 25082: : output_iteratable > 25082: { 25082: T& operator*() { return static_cast(*this); } 25082: T& operator++() { return static_cast(*this); } 25082: }; 25082: 25082: template 25082: struct forward_iterator_helper 25082: : forward_iteratable > {}; 25082: 25082: template 25082: struct bidirectional_iterator_helper 25082: : bidirectional_iteratable > {}; 25082: 25082: template 25082: struct random_access_iterator_helper 25082: : random_access_iteratable > 25082: { 25082: friend D requires_difference_operator(const T& x, const T& y) { 25082: return x - y; 25082: } 25082: }; 25082: 25082: } 25082: using namespace operators_impl; 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/strong_typedef.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct StrongTypedef 25082: : boost::totally_ordered1< StrongTypedef 25082: , boost::totally_ordered2< StrongTypedef, T> > 25082: { 25082: private: 25082: using Self = StrongTypedef; 25082: T t; 25082: 25082: public: 25082: template ::type> 25082: explicit StrongTypedef(const T & t_) : t(t_) {} 25082: template ::type> 25082: explicit StrongTypedef(T && t_) : t(std::move(t_)) {} 25082: 25082: template ::type> 25082: StrongTypedef(): t() {} 25082: 25082: StrongTypedef(const Self &) = default; 25082: StrongTypedef(Self &&) = default; 25082: 25082: Self & operator=(const Self &) = default; 25082: Self & operator=(Self &&) = default; 25082: 25082: template ::type> 25082: Self & operator=(const T & rhs) { t = rhs; return *this;} 25082: 25082: template ::type> 25082: Self & operator=(T && rhs) { t = std::move(rhs); return *this;} 25082: 25082: operator const T & () const { return t; } 25082: operator T & () { return t; } 25082: 25082: bool operator==(const Self & rhs) const { return t == rhs.t; } 25082: bool operator<(const Self & rhs) const { return t < rhs.t; } 25082: 25082: T & toUnderType() { return t; } 25082: const T & toUnderType() const { return t; } 25082: }; 25082: 25082: namespace std 25082: { 25082: template 25082: struct hash> 25082: { 25082: size_t operator()(const StrongTypedef & x) const 25082: { 25082: return std::hash()(x.toUnderType()); 25082: } 25082: }; 25082: } 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/Core/UUID.h" 2 3 4 25082: 25082: namespace DB 25082: { 25082: 25082: struct UUIDTag {}; using UUID = StrongTypedef; 25082: 25082: } 25082: # 13 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Field.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DayNum.h" 1 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/Types.h" 1 3 4 25082: 25082: 25082: 25082: 25082: using Int8 = int8_t; 25082: using Int16 = int16_t; 25082: using Int32 = int32_t; 25082: using Int64 = int64_t; 25082: 25082: using UInt8 = uint8_t; 25082: using UInt16 = uint16_t; 25082: using UInt32 = uint32_t; 25082: using UInt64 = uint64_t; 25082: # 22 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/Types.h" 3 4 25082: namespace std 25082: { 25082: inline UInt64 max(unsigned long x, unsigned long long y) { return x > y ? x : y; } 25082: inline UInt64 max(unsigned long long x, unsigned long y) { return x > y ? x : y; } 25082: inline UInt64 min(unsigned long x, unsigned long long y) { return x < y ? x : y; } 25082: inline UInt64 min(unsigned long long x, unsigned long y) { return x < y ? x : y; } 25082: 25082: inline Int64 max(long x, long long y) { return x > y ? x : y; } 25082: inline Int64 max(long long x, long y) { return x > y ? x : y; } 25082: inline Int64 min(long x, long long y) { return x < y ? x : y; } 25082: inline Int64 min(long long x, long y) { return x < y ? x : y; } 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DayNum.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: struct DayNumTag {}; using DayNum = StrongTypedef; 25082: # 14 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Field.h" 2 3 4 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int BAD_TYPE_OF_FIELD; 25082: extern const int BAD_GET; 25082: extern const int NOT_IMPLEMENTED; 25082: extern const int LOGICAL_ERROR; 25082: } 25082: 25082: class Field; 25082: using Array = std::vector; 25082: using TupleBackend = std::vector; 25082: struct TupleTag {}; using Tuple = StrongTypedef; 25082: 25082: template bool decimalEqual(T x, T y, UInt32 x_scale, UInt32 y_scale); 25082: template bool decimalLess(T x, T y, UInt32 x_scale, UInt32 y_scale); 25082: template bool decimalLessOrEqual(T x, T y, UInt32 x_scale, UInt32 y_scale); 25082: 25082: template 25082: class DecimalField 25082: { 25082: public: 25082: DecimalField(T value, UInt32 scale_) 25082: : dec(value), 25082: scale(scale_) 25082: {} 25082: 25082: operator T() const { return dec; } 25082: T getValue() const { return dec; } 25082: T getScaleMultiplier() const; 25082: UInt32 getScale() const { return scale; } 25082: 25082: template 25082: bool operator < (const DecimalField & r) const 25082: { 25082: using MaxType = std::conditional_t<(sizeof(T) > sizeof(U)), T, U>; 25082: return decimalLess(dec, r.getValue(), scale, r.getScale()); 25082: } 25082: 25082: template 25082: bool operator <= (const DecimalField & r) const 25082: { 25082: using MaxType = std::conditional_t<(sizeof(T) > sizeof(U)), T, U>; 25082: return decimalLessOrEqual(dec, r.getValue(), scale, r.getScale()); 25082: } 25082: 25082: template 25082: bool operator == (const DecimalField & r) const 25082: { 25082: using MaxType = std::conditional_t<(sizeof(T) > sizeof(U)), T, U>; 25082: return decimalEqual(dec, r.getValue(), scale, r.getScale()); 25082: } 25082: 25082: template bool operator > (const DecimalField & r) const { return r < *this; } 25082: template bool operator >= (const DecimalField & r) const { return r <= * this; } 25082: template bool operator != (const DecimalField & r) const { return !(*this == r); } 25082: 25082: const DecimalField & operator += (const DecimalField & r) 25082: { 25082: if (scale != r.getScale()) 25082: throw Exception("Add different decimal fields", ErrorCodes::LOGICAL_ERROR); 25082: dec += r.getValue(); 25082: return *this; 25082: } 25082: 25082: const DecimalField & operator -= (const DecimalField & r) 25082: { 25082: if (scale != r.getScale()) 25082: throw Exception("Sub different decimal fields", ErrorCodes::LOGICAL_ERROR); 25082: dec -= r.getValue(); 25082: return *this; 25082: } 25082: 25082: private: 25082: T dec; 25082: UInt32 scale; 25082: }; 25082: # 111 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Field.h" 3 4 25082: class Field 25082: { 25082: public: 25082: struct Types 25082: { 25082: 25082: enum Which 25082: { 25082: Null = 0, 25082: UInt64 = 1, 25082: Int64 = 2, 25082: Float64 = 3, 25082: UInt128 = 4, 25082: Int128 = 5, 25082: 25082: 25082: 25082: String = 16, 25082: Array = 17, 25082: Tuple = 18, 25082: Decimal32 = 19, 25082: Decimal64 = 20, 25082: Decimal128 = 21, 25082: }; 25082: 25082: static const int MIN_NON_POD = 16; 25082: 25082: static const char * toString(Which which) 25082: { 25082: switch (which) 25082: { 25082: case Null: return "Null"; 25082: case UInt64: return "UInt64"; 25082: case UInt128: return "UInt128"; 25082: case Int64: return "Int64"; 25082: case Int128: return "Int128"; 25082: case Float64: return "Float64"; 25082: case String: return "String"; 25082: case Array: return "Array"; 25082: case Tuple: return "Tuple"; 25082: case Decimal32: return "Decimal32"; 25082: case Decimal64: return "Decimal64"; 25082: case Decimal128: return "Decimal128"; 25082: } 25082: 25082: throw Exception("Bad type of Field", ErrorCodes::BAD_TYPE_OF_FIELD); 25082: } 25082: }; 25082: 25082: 25082: 25082: template struct TypeToEnum; 25082: template struct EnumToType; 25082: 25082: static bool IsDecimal(Types::Which which) { return which >= Types::Decimal32 && which <= Types::Decimal128; } 25082: 25082: Field() 25082: : which(Types::Null) 25082: { 25082: } 25082: 25082: 25082: 25082: 25082: Field(const Field & rhs) 25082: { 25082: create(rhs); 25082: } 25082: 25082: Field(Field && rhs) 25082: { 25082: create(std::move(rhs)); 25082: } 25082: 25082: template 25082: Field(T && rhs, std::enable_if_t, Field>, void *> = nullptr); 25082: 25082: 25082: Field(const char * data, size_t size) 25082: { 25082: create(data, size); 25082: } 25082: 25082: Field(const unsigned char * data, size_t size) 25082: { 25082: create(data, size); 25082: } 25082: 25082: 25082: void assignString(const char * data, size_t size) 25082: { 25082: destroy(); 25082: create(data, size); 25082: } 25082: 25082: void assignString(const unsigned char * data, size_t size) 25082: { 25082: destroy(); 25082: create(data, size); 25082: } 25082: 25082: Field & operator= (const Field & rhs) 25082: { 25082: if (this != &rhs) 25082: { 25082: if (which != rhs.which) 25082: { 25082: destroy(); 25082: create(rhs); 25082: } 25082: else 25082: assign(rhs); 25082: } 25082: return *this; 25082: } 25082: 25082: Field & operator= (Field && rhs) 25082: { 25082: if (this != &rhs) 25082: { 25082: if (which != rhs.which) 25082: { 25082: destroy(); 25082: create(std::move(rhs)); 25082: } 25082: else 25082: assign(std::move(rhs)); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: std::enable_if_t, Field>, Field &> 25082: operator= (T && rhs); 25082: 25082: ~Field() 25082: { 25082: destroy(); 25082: } 25082: 25082: 25082: Types::Which getType() const { return which; } 25082: const char * getTypeName() const { return Types::toString(which); } 25082: 25082: bool isNull() const { return which == Types::Null; } 25082: 25082: 25082: template T & get() 25082: { 25082: using TWithoutRef = std::remove_reference_t; 25082: TWithoutRef * __attribute__((__may_alias__)) ptr = reinterpret_cast(&storage); 25082: return *ptr; 25082: } 25082: 25082: template const T & get() const 25082: { 25082: using TWithoutRef = std::remove_reference_t; 25082: const TWithoutRef * __attribute__((__may_alias__)) ptr = reinterpret_cast(&storage); 25082: return *ptr; 25082: } 25082: 25082: template bool tryGet(T & result) 25082: { 25082: const Types::Which requested = TypeToEnum>::value; 25082: if (which != requested) 25082: return false; 25082: result = get(); 25082: return true; 25082: } 25082: 25082: template bool tryGet(T & result) const 25082: { 25082: const Types::Which requested = TypeToEnum>::value; 25082: if (which != requested) 25082: return false; 25082: result = get(); 25082: return true; 25082: } 25082: 25082: template T & safeGet() 25082: { 25082: const Types::Which requested = TypeToEnum>::value; 25082: if (which != requested) 25082: throw Exception("Bad get: has " + std::string(getTypeName()) + ", requested " + std::string(Types::toString(requested)), ErrorCodes::BAD_GET); 25082: return get(); 25082: } 25082: 25082: template const T & safeGet() const 25082: { 25082: const Types::Which requested = TypeToEnum>::value; 25082: if (which != requested) 25082: throw Exception("Bad get: has " + std::string(getTypeName()) + ", requested " + std::string(Types::toString(requested)), ErrorCodes::BAD_GET); 25082: return get(); 25082: } 25082: 25082: 25082: bool operator< (const Field & rhs) const 25082: { 25082: if (which < rhs.which) 25082: return true; 25082: if (which > rhs.which) 25082: return false; 25082: 25082: switch (which) 25082: { 25082: case Types::Null: return false; 25082: case Types::UInt64: return get() < rhs.get(); 25082: case Types::UInt128: return get() < rhs.get(); 25082: case Types::Int64: return get() < rhs.get(); 25082: case Types::Int128: return get() < rhs.get(); 25082: case Types::Float64: return get() < rhs.get(); 25082: case Types::String: return get() < rhs.get(); 25082: case Types::Array: return get() < rhs.get(); 25082: case Types::Tuple: return get() < rhs.get(); 25082: case Types::Decimal32: return get>() < rhs.get>(); 25082: case Types::Decimal64: return get>() < rhs.get>(); 25082: case Types::Decimal128: return get>() < rhs.get>(); 25082: } 25082: 25082: throw Exception("Bad type of Field", ErrorCodes::BAD_TYPE_OF_FIELD); 25082: } 25082: 25082: bool operator> (const Field & rhs) const 25082: { 25082: return rhs < *this; 25082: } 25082: 25082: bool operator<= (const Field & rhs) const 25082: { 25082: if (which < rhs.which) 25082: return true; 25082: if (which > rhs.which) 25082: return false; 25082: 25082: switch (which) 25082: { 25082: case Types::Null: return true; 25082: case Types::UInt64: return get() <= rhs.get(); 25082: case Types::UInt128: return get() <= rhs.get(); 25082: case Types::Int64: return get() <= rhs.get(); 25082: case Types::Int128: return get() <= rhs.get(); 25082: case Types::Float64: return get() <= rhs.get(); 25082: case Types::String: return get() <= rhs.get(); 25082: case Types::Array: return get() <= rhs.get(); 25082: case Types::Tuple: return get() <= rhs.get(); 25082: case Types::Decimal32: return get>() <= rhs.get>(); 25082: case Types::Decimal64: return get>() <= rhs.get>(); 25082: case Types::Decimal128: return get>() <= rhs.get>(); 25082: } 25082: 25082: throw Exception("Bad type of Field", ErrorCodes::BAD_TYPE_OF_FIELD); 25082: } 25082: 25082: bool operator>= (const Field & rhs) const 25082: { 25082: return rhs <= *this; 25082: } 25082: 25082: bool operator== (const Field & rhs) const 25082: { 25082: if (which != rhs.which) 25082: return false; 25082: 25082: switch (which) 25082: { 25082: case Types::Null: return true; 25082: case Types::UInt64: 25082: case Types::Int64: 25082: case Types::Float64: return get() == rhs.get(); 25082: case Types::String: return get() == rhs.get(); 25082: case Types::Array: return get() == rhs.get(); 25082: case Types::Tuple: return get() == rhs.get(); 25082: case Types::UInt128: return get() == rhs.get(); 25082: case Types::Int128: return get() == rhs.get(); 25082: case Types::Decimal32: return get>() == rhs.get>(); 25082: case Types::Decimal64: return get>() == rhs.get>(); 25082: case Types::Decimal128: return get>() == rhs.get>(); 25082: } 25082: 25082: throw Exception("Bad type of Field", ErrorCodes::BAD_TYPE_OF_FIELD); 25082: } 25082: 25082: bool operator!= (const Field & rhs) const 25082: { 25082: return !(*this == rhs); 25082: } 25082: 25082: private: 25082: std::aligned_union_t<32 - sizeof(Types::Which), 25082: Null, UInt64, UInt128, Int64, Int128, Float64, String, Array, Tuple, 25082: DecimalField, DecimalField, DecimalField 25082: > storage; 25082: 25082: Types::Which which; 25082: 25082: 25082: 25082: template 25082: void createConcrete(T && x) 25082: { 25082: using JustT = std::decay_t; 25082: new (&storage) JustT(std::forward(x)); 25082: which = TypeToEnum::value; 25082: } 25082: 25082: 25082: template 25082: void assignConcrete(T && x) 25082: { 25082: using JustT = std::decay_t; 25082: JustT * __attribute__((__may_alias__)) ptr = reinterpret_cast(&storage); 25082: *ptr = std::forward(x); 25082: } 25082: 25082: 25082: template 25082: static void dispatch(F && f, Field & field) 25082: { 25082: switch (field.which) 25082: { 25082: case Types::Null: f(field.template get()); return; 25082: 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" 25082: 25082: case Types::UInt64: f(field.template get()); return; 25082: case Types::UInt128: f(field.template get()); return; 25082: case Types::Int64: f(field.template get()); return; 25082: case Types::Int128: f(field.template get()); return; 25082: case Types::Float64: f(field.template get()); return; 25082: 25082: #pragma GCC diagnostic pop 25082: 25082: case Types::String: f(field.template get()); return; 25082: case Types::Array: f(field.template get()); return; 25082: case Types::Tuple: f(field.template get()); return; 25082: case Types::Decimal32: f(field.template get>()); return; 25082: case Types::Decimal64: f(field.template get>()); return; 25082: case Types::Decimal128: f(field.template get>()); return; 25082: 25082: default: 25082: throw Exception("Bad type of Field", ErrorCodes::BAD_TYPE_OF_FIELD); 25082: } 25082: } 25082: 25082: 25082: void create(const Field & x) 25082: { 25082: dispatch([this] (auto & value) { createConcrete(value); }, x); 25082: } 25082: 25082: void create(Field && x) 25082: { 25082: dispatch([this] (auto & value) { createConcrete(std::move(value)); }, x); 25082: } 25082: 25082: void assign(const Field & x) 25082: { 25082: dispatch([this] (auto & value) { assignConcrete(value); }, x); 25082: } 25082: 25082: void assign(Field && x) 25082: { 25082: dispatch([this] (auto & value) { assignConcrete(std::move(value)); }, x); 25082: } 25082: 25082: 25082: void create(const char * data, size_t size) 25082: { 25082: new (&storage) String(data, size); 25082: which = Types::String; 25082: } 25082: 25082: void create(const unsigned char * data, size_t size) 25082: { 25082: create(reinterpret_cast(data), size); 25082: } 25082: 25082: __attribute__((__always_inline__)) void destroy() 25082: { 25082: if (which < Types::MIN_NON_POD) 25082: return; 25082: 25082: switch (which) 25082: { 25082: case Types::String: 25082: destroy(); 25082: break; 25082: case Types::Array: 25082: destroy(); 25082: break; 25082: case Types::Tuple: 25082: destroy(); 25082: break; 25082: default: 25082: break; 25082: } 25082: 25082: which = Types::Null; 25082: } 25082: 25082: template 25082: void destroy() 25082: { 25082: T * __attribute__((__may_alias__)) ptr = reinterpret_cast(&storage); 25082: ptr->~T(); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: template <> struct Field::TypeToEnum { static const Types::Which value = Types::Null; }; 25082: template <> struct Field::TypeToEnum { static const Types::Which value = Types::UInt64; }; 25082: template <> struct Field::TypeToEnum { static const Types::Which value = Types::UInt128; }; 25082: template <> struct Field::TypeToEnum { static const Types::Which value = Types::Int64; }; 25082: template <> struct Field::TypeToEnum { static const Types::Which value = Types::Int128; }; 25082: template <> struct Field::TypeToEnum { static const Types::Which value = Types::Float64; }; 25082: template <> struct Field::TypeToEnum { static const Types::Which value = Types::String; }; 25082: template <> struct Field::TypeToEnum { static const Types::Which value = Types::Array; }; 25082: template <> struct Field::TypeToEnum { static const Types::Which value = Types::Tuple; }; 25082: template <> struct Field::TypeToEnum>{ static const Types::Which value = Types::Decimal32; }; 25082: template <> struct Field::TypeToEnum>{ static const Types::Which value = Types::Decimal64; }; 25082: template <> struct Field::TypeToEnum>{ static const Types::Which value = Types::Decimal128; }; 25082: 25082: template <> struct Field::EnumToType { using Type = Null; }; 25082: template <> struct Field::EnumToType { using Type = UInt64; }; 25082: template <> struct Field::EnumToType { using Type = UInt128; }; 25082: template <> struct Field::EnumToType { using Type = Int64; }; 25082: template <> struct Field::EnumToType { using Type = Int128; }; 25082: template <> struct Field::EnumToType { using Type = Float64; }; 25082: template <> struct Field::EnumToType { using Type = String; }; 25082: template <> struct Field::EnumToType { using Type = Array; }; 25082: template <> struct Field::EnumToType { using Type = Tuple; }; 25082: template <> struct Field::EnumToType { using Type = DecimalField; }; 25082: template <> struct Field::EnumToType { using Type = DecimalField; }; 25082: template <> struct Field::EnumToType { using Type = DecimalField; }; 25082: 25082: 25082: template 25082: T get(const Field & field) 25082: { 25082: return field.template get(); 25082: } 25082: 25082: template 25082: T get(Field & field) 25082: { 25082: return field.template get(); 25082: } 25082: 25082: template 25082: T safeGet(const Field & field) 25082: { 25082: return field.template safeGet(); 25082: } 25082: 25082: template 25082: T safeGet(Field & field) 25082: { 25082: return field.template safeGet(); 25082: } 25082: 25082: 25082: template <> struct TypeName { static std::string get() { return "Array"; } }; 25082: template <> struct TypeName { static std::string get() { return "Tuple"; } }; 25082: 25082: 25082: template struct NearestFieldTypeImpl; 25082: 25082: 25082: 25082: 25082: template <> struct NearestFieldTypeImpl { using Type = std::conditional_t, Int64, UInt64>; }; 25082: template <> struct NearestFieldTypeImpl { using Type = Int64; }; 25082: template <> struct NearestFieldTypeImpl { using Type = UInt64; }; 25082: 25082: template <> struct NearestFieldTypeImpl { using Type = UInt64; }; 25082: template <> struct NearestFieldTypeImpl { using Type = UInt64; }; 25082: 25082: template <> struct NearestFieldTypeImpl { using Type = UInt64; }; 25082: template <> struct NearestFieldTypeImpl { using Type = UInt128; }; 25082: template <> struct NearestFieldTypeImpl { using Type = UInt128; }; 25082: template <> struct NearestFieldTypeImpl { using Type = Int64; }; 25082: template <> struct NearestFieldTypeImpl { using Type = Int64; }; 25082: 25082: 25082: 25082: template <> struct NearestFieldTypeImpl { using Type = Int64; }; 25082: template <> struct NearestFieldTypeImpl { using Type = Int64; }; 25082: template <> struct NearestFieldTypeImpl { using Type = UInt64; }; 25082: template <> struct NearestFieldTypeImpl { using Type = UInt64; }; 25082: 25082: template <> struct NearestFieldTypeImpl { using Type = Int128; }; 25082: template <> struct NearestFieldTypeImpl { using Type = DecimalField; }; 25082: template <> struct NearestFieldTypeImpl { using Type = DecimalField; }; 25082: template <> struct NearestFieldTypeImpl { using Type = DecimalField; }; 25082: template <> struct NearestFieldTypeImpl> { using Type = DecimalField; }; 25082: template <> struct NearestFieldTypeImpl> { using Type = DecimalField; }; 25082: template <> struct NearestFieldTypeImpl> { using Type = DecimalField; }; 25082: template <> struct NearestFieldTypeImpl { using Type = Float64; }; 25082: template <> struct NearestFieldTypeImpl { using Type = Float64; }; 25082: template <> struct NearestFieldTypeImpl { using Type = String; }; 25082: template <> struct NearestFieldTypeImpl { using Type = String; }; 25082: template <> struct NearestFieldTypeImpl { using Type = Array; }; 25082: template <> struct NearestFieldTypeImpl { using Type = Tuple; }; 25082: template <> struct NearestFieldTypeImpl { using Type = UInt64; }; 25082: template <> struct NearestFieldTypeImpl { using Type = Null; }; 25082: 25082: template 25082: using NearestFieldType = typename NearestFieldTypeImpl::Type; 25082: 25082: template 25082: decltype(auto) nearestFieldType(T && x) 25082: { 25082: using U = NearestFieldType>; 25082: if constexpr (std::is_same_v, U>) 25082: return std::forward(x); 25082: else 25082: return U(x); 25082: } 25082: # 642 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Field.h" 3 4 25082: template 25082: Field::Field(T && rhs, std::enable_if_t, Field>, void *>) 25082: { 25082: auto && val = nearestFieldType(std::forward(rhs)); 25082: createConcrete(std::forward(val)); 25082: } 25082: 25082: template 25082: std::enable_if_t, Field>, Field &> 25082: Field::operator= (T && rhs) 25082: { 25082: auto && val = nearestFieldType(std::forward(rhs)); 25082: using U = decltype(val); 25082: if (which != TypeToEnum>::value) 25082: { 25082: destroy(); 25082: createConcrete(std::forward(val)); 25082: } 25082: else 25082: assignConcrete(std::forward(val)); 25082: 25082: return *this; 25082: } 25082: 25082: 25082: class ReadBuffer; 25082: class WriteBuffer; 25082: 25082: 25082: void readBinary(Array & x, ReadBuffer & buf); 25082: 25082: inline void readText(Array &, ReadBuffer &) { throw Exception("Cannot read Array.", ErrorCodes::NOT_IMPLEMENTED); } 25082: inline void readQuoted(Array &, ReadBuffer &) { throw Exception("Cannot read Array.", ErrorCodes::NOT_IMPLEMENTED); } 25082: 25082: 25082: void writeBinary(const Array & x, WriteBuffer & buf); 25082: 25082: void writeText(const Array & x, WriteBuffer & buf); 25082: 25082: inline void writeQuoted(const Array &, WriteBuffer &) { throw Exception("Cannot write Array quoted.", ErrorCodes::NOT_IMPLEMENTED); } 25082: 25082: void readBinary(Tuple & x, ReadBuffer & buf); 25082: 25082: inline void readText(Tuple &, ReadBuffer &) { throw Exception("Cannot read Tuple.", ErrorCodes::NOT_IMPLEMENTED); } 25082: inline void readQuoted(Tuple &, ReadBuffer &) { throw Exception("Cannot read Tuple.", ErrorCodes::NOT_IMPLEMENTED); } 25082: 25082: void writeBinary(const Tuple & x, WriteBuffer & buf); 25082: 25082: void writeText(const Tuple & x, WriteBuffer & buf); 25082: 25082: inline void writeQuoted(const Tuple &, WriteBuffer &) { throw Exception("Cannot write Tuple quoted.", ErrorCodes::NOT_IMPLEMENTED); } 25082: } 25082: # 8 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Block.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/list" 1 3 4 25082: # 58 "/usr/include/c++/8/list" 3 4 25082: 25082: # 59 "/usr/include/c++/8/list" 3 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/stl_list.h" 1 3 25082: # 67 "/usr/include/c++/8/bits/stl_list.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: namespace __detail 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct _List_node_base 25082: { 25082: _List_node_base* _M_next; 25082: _List_node_base* _M_prev; 25082: 25082: static void 25082: swap(_List_node_base& __x, _List_node_base& __y) noexcept; 25082: 25082: void 25082: _M_transfer(_List_node_base* const __first, 25082: _List_node_base* const __last) noexcept; 25082: 25082: void 25082: _M_reverse() noexcept; 25082: 25082: void 25082: _M_hook(_List_node_base* const __position) noexcept; 25082: 25082: void 25082: _M_unhook() noexcept; 25082: }; 25082: 25082: 25082: struct _List_node_header : public _List_node_base 25082: { 25082: 25082: std::size_t _M_size; 25082: 25082: 25082: _List_node_header() noexcept 25082: { _M_init(); } 25082: 25082: 25082: _List_node_header(_List_node_header&& __x) noexcept 25082: : _List_node_base{ __x._M_next, __x._M_prev } 25082: 25082: , _M_size(__x._M_size) 25082: 25082: { 25082: if (__x._M_base()->_M_next == __x._M_base()) 25082: this->_M_next = this->_M_prev = this; 25082: else 25082: { 25082: this->_M_next->_M_prev = this->_M_prev->_M_next = this->_M_base(); 25082: __x._M_init(); 25082: } 25082: } 25082: 25082: void 25082: _M_move_nodes(_List_node_header&& __x) 25082: { 25082: _List_node_base* const __xnode = __x._M_base(); 25082: if (__xnode->_M_next == __xnode) 25082: _M_init(); 25082: else 25082: { 25082: _List_node_base* const __node = this->_M_base(); 25082: __node->_M_next = __xnode->_M_next; 25082: __node->_M_prev = __xnode->_M_prev; 25082: __node->_M_next->_M_prev = __node->_M_prev->_M_next = __node; 25082: 25082: _M_size = __x._M_size; 25082: 25082: __x._M_init(); 25082: } 25082: } 25082: 25082: 25082: void 25082: _M_init() noexcept 25082: { 25082: this->_M_next = this->_M_prev = this; 25082: 25082: this->_M_size = 0; 25082: 25082: } 25082: 25082: private: 25082: _List_node_base* _M_base() { return this; } 25082: }; 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: struct _List_node : public __detail::_List_node_base 25082: { 25082: 25082: __gnu_cxx::__aligned_membuf<_Tp> _M_storage; 25082: _Tp* _M_valptr() { return _M_storage._M_ptr(); } 25082: _Tp const* _M_valptr() const { return _M_storage._M_ptr(); } 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _List_iterator 25082: { 25082: typedef _List_iterator<_Tp> _Self; 25082: typedef _List_node<_Tp> _Node; 25082: 25082: typedef ptrdiff_t difference_type; 25082: typedef std::bidirectional_iterator_tag iterator_category; 25082: typedef _Tp value_type; 25082: typedef _Tp* pointer; 25082: typedef _Tp& reference; 25082: 25082: _List_iterator() noexcept 25082: : _M_node() { } 25082: 25082: explicit 25082: _List_iterator(__detail::_List_node_base* __x) noexcept 25082: : _M_node(__x) { } 25082: 25082: _Self 25082: _M_const_cast() const noexcept 25082: { return *this; } 25082: 25082: 25082: reference 25082: operator*() const noexcept 25082: { return *static_cast<_Node*>(_M_node)->_M_valptr(); } 25082: 25082: pointer 25082: operator->() const noexcept 25082: { return static_cast<_Node*>(_M_node)->_M_valptr(); } 25082: 25082: _Self& 25082: operator++() noexcept 25082: { 25082: _M_node = _M_node->_M_next; 25082: return *this; 25082: } 25082: 25082: _Self 25082: operator++(int) noexcept 25082: { 25082: _Self __tmp = *this; 25082: _M_node = _M_node->_M_next; 25082: return __tmp; 25082: } 25082: 25082: _Self& 25082: operator--() noexcept 25082: { 25082: _M_node = _M_node->_M_prev; 25082: return *this; 25082: } 25082: 25082: _Self 25082: operator--(int) noexcept 25082: { 25082: _Self __tmp = *this; 25082: _M_node = _M_node->_M_prev; 25082: return __tmp; 25082: } 25082: 25082: bool 25082: operator==(const _Self& __x) const noexcept 25082: { return _M_node == __x._M_node; } 25082: 25082: bool 25082: operator!=(const _Self& __x) const noexcept 25082: { return _M_node != __x._M_node; } 25082: 25082: 25082: __detail::_List_node_base* _M_node; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct _List_const_iterator 25082: { 25082: typedef _List_const_iterator<_Tp> _Self; 25082: typedef const _List_node<_Tp> _Node; 25082: typedef _List_iterator<_Tp> iterator; 25082: 25082: typedef ptrdiff_t difference_type; 25082: typedef std::bidirectional_iterator_tag iterator_category; 25082: typedef _Tp value_type; 25082: typedef const _Tp* pointer; 25082: typedef const _Tp& reference; 25082: 25082: _List_const_iterator() noexcept 25082: : _M_node() { } 25082: 25082: explicit 25082: _List_const_iterator(const __detail::_List_node_base* __x) 25082: noexcept 25082: : _M_node(__x) { } 25082: 25082: _List_const_iterator(const iterator& __x) noexcept 25082: : _M_node(__x._M_node) { } 25082: 25082: iterator 25082: _M_const_cast() const noexcept 25082: { return iterator(const_cast<__detail::_List_node_base*>(_M_node)); } 25082: 25082: 25082: reference 25082: operator*() const noexcept 25082: { return *static_cast<_Node*>(_M_node)->_M_valptr(); } 25082: 25082: pointer 25082: operator->() const noexcept 25082: { return static_cast<_Node*>(_M_node)->_M_valptr(); } 25082: 25082: _Self& 25082: operator++() noexcept 25082: { 25082: _M_node = _M_node->_M_next; 25082: return *this; 25082: } 25082: 25082: _Self 25082: operator++(int) noexcept 25082: { 25082: _Self __tmp = *this; 25082: _M_node = _M_node->_M_next; 25082: return __tmp; 25082: } 25082: 25082: _Self& 25082: operator--() noexcept 25082: { 25082: _M_node = _M_node->_M_prev; 25082: return *this; 25082: } 25082: 25082: _Self 25082: operator--(int) noexcept 25082: { 25082: _Self __tmp = *this; 25082: _M_node = _M_node->_M_prev; 25082: return __tmp; 25082: } 25082: 25082: bool 25082: operator==(const _Self& __x) const noexcept 25082: { return _M_node == __x._M_node; } 25082: 25082: bool 25082: operator!=(const _Self& __x) const noexcept 25082: { return _M_node != __x._M_node; } 25082: 25082: 25082: const __detail::_List_node_base* _M_node; 25082: }; 25082: 25082: template 25082: inline bool 25082: operator==(const _List_iterator<_Val>& __x, 25082: const _List_const_iterator<_Val>& __y) noexcept 25082: { return __x._M_node == __y._M_node; } 25082: 25082: template 25082: inline bool 25082: operator!=(const _List_iterator<_Val>& __x, 25082: const _List_const_iterator<_Val>& __y) noexcept 25082: { return __x._M_node != __y._M_node; } 25082: 25082: namespace __cxx11 { 25082: 25082: template 25082: class _List_base 25082: { 25082: protected: 25082: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 25082: rebind<_Tp>::other _Tp_alloc_type; 25082: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tp_alloc_traits; 25082: typedef typename _Tp_alloc_traits::template 25082: rebind<_List_node<_Tp> >::other _Node_alloc_type; 25082: typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits; 25082: 25082: 25082: static size_t 25082: _S_distance(const __detail::_List_node_base* __first, 25082: const __detail::_List_node_base* __last) 25082: { 25082: size_t __n = 0; 25082: while (__first != __last) 25082: { 25082: __first = __first->_M_next; 25082: ++__n; 25082: } 25082: return __n; 25082: } 25082: 25082: 25082: struct _List_impl 25082: : public _Node_alloc_type 25082: { 25082: __detail::_List_node_header _M_node; 25082: 25082: _List_impl() noexcept(is_nothrow_default_constructible<_Node_alloc_type>::value) 25082: 25082: : _Node_alloc_type() 25082: { } 25082: 25082: _List_impl(const _Node_alloc_type& __a) noexcept 25082: : _Node_alloc_type(__a) 25082: { } 25082: 25082: 25082: _List_impl(_List_impl&&) = default; 25082: 25082: _List_impl(_Node_alloc_type&& __a, _List_impl&& __x) 25082: : _Node_alloc_type(std::move(__a)), _M_node(std::move(__x._M_node)) 25082: { } 25082: 25082: _List_impl(_Node_alloc_type&& __a) noexcept 25082: : _Node_alloc_type(std::move(__a)) 25082: { } 25082: 25082: }; 25082: 25082: _List_impl _M_impl; 25082: 25082: 25082: size_t _M_get_size() const { return _M_impl._M_node._M_size; } 25082: 25082: void _M_set_size(size_t __n) { _M_impl._M_node._M_size = __n; } 25082: 25082: void _M_inc_size(size_t __n) { _M_impl._M_node._M_size += __n; } 25082: 25082: void _M_dec_size(size_t __n) { _M_impl._M_node._M_size -= __n; } 25082: 25082: 25082: size_t 25082: _M_distance(const __detail::_List_node_base* __first, 25082: const __detail::_List_node_base* __last) const 25082: { return _S_distance(__first, __last); } 25082: 25082: 25082: size_t _M_node_count() const { return _M_get_size(); } 25082: # 448 "/usr/include/c++/8/bits/stl_list.h" 3 25082: typename _Node_alloc_traits::pointer 25082: _M_get_node() 25082: { return _Node_alloc_traits::allocate(_M_impl, 1); } 25082: 25082: void 25082: _M_put_node(typename _Node_alloc_traits::pointer __p) noexcept 25082: { _Node_alloc_traits::deallocate(_M_impl, __p, 1); } 25082: 25082: public: 25082: typedef _Alloc allocator_type; 25082: 25082: _Node_alloc_type& 25082: _M_get_Node_allocator() noexcept 25082: { return _M_impl; } 25082: 25082: const _Node_alloc_type& 25082: _M_get_Node_allocator() const noexcept 25082: { return _M_impl; } 25082: 25082: 25082: _List_base() = default; 25082: 25082: 25082: 25082: 25082: _List_base(const _Node_alloc_type& __a) noexcept 25082: : _M_impl(__a) 25082: { } 25082: 25082: 25082: _List_base(_List_base&&) = default; 25082: 25082: 25082: _List_base(_List_base&& __x, _Node_alloc_type&& __a) 25082: : _M_impl(std::move(__a)) 25082: { 25082: if (__x._M_get_Node_allocator() == _M_get_Node_allocator()) 25082: _M_move_nodes(std::move(__x)); 25082: 25082: } 25082: 25082: 25082: 25082: _List_base(_Node_alloc_type&& __a, _List_base&& __x) 25082: : _M_impl(std::move(__a), std::move(__x._M_impl)) 25082: { } 25082: 25082: 25082: _List_base(_Node_alloc_type&& __a) 25082: : _M_impl(std::move(__a)) 25082: { } 25082: 25082: void 25082: _M_move_nodes(_List_base&& __x) 25082: { _M_impl._M_node._M_move_nodes(std::move(__x._M_impl._M_node)); } 25082: 25082: 25082: 25082: ~_List_base() noexcept 25082: { _M_clear(); } 25082: 25082: void 25082: _M_clear() noexcept; 25082: 25082: void 25082: _M_init() noexcept 25082: { this->_M_impl._M_node._M_init(); } 25082: }; 25082: # 563 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template > 25082: class list : protected _List_base<_Tp, _Alloc> 25082: { 25082: # 576 "/usr/include/c++/8/bits/stl_list.h" 3 25082: static_assert(is_same::type, _Tp>::value, 25082: "std::list must have a non-const, non-volatile value_type"); 25082: 25082: static_assert(is_same::value, 25082: "std::list must have the same value_type as its allocator"); 25082: 25082: 25082: 25082: typedef _List_base<_Tp, _Alloc> _Base; 25082: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; 25082: typedef typename _Base::_Tp_alloc_traits _Tp_alloc_traits; 25082: typedef typename _Base::_Node_alloc_type _Node_alloc_type; 25082: typedef typename _Base::_Node_alloc_traits _Node_alloc_traits; 25082: 25082: public: 25082: typedef _Tp value_type; 25082: typedef typename _Tp_alloc_traits::pointer pointer; 25082: typedef typename _Tp_alloc_traits::const_pointer const_pointer; 25082: typedef typename _Tp_alloc_traits::reference reference; 25082: typedef typename _Tp_alloc_traits::const_reference const_reference; 25082: typedef _List_iterator<_Tp> iterator; 25082: typedef _List_const_iterator<_Tp> const_iterator; 25082: typedef std::reverse_iterator const_reverse_iterator; 25082: typedef std::reverse_iterator reverse_iterator; 25082: typedef size_t size_type; 25082: typedef ptrdiff_t difference_type; 25082: typedef _Alloc allocator_type; 25082: 25082: protected: 25082: 25082: 25082: typedef _List_node<_Tp> _Node; 25082: 25082: using _Base::_M_impl; 25082: using _Base::_M_put_node; 25082: using _Base::_M_get_node; 25082: using _Base::_M_get_Node_allocator; 25082: # 638 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template 25082: _Node* 25082: _M_create_node(_Args&&... __args) 25082: { 25082: auto __p = this->_M_get_node(); 25082: auto& __alloc = _M_get_Node_allocator(); 25082: __allocated_ptr<_Node_alloc_type> __guard{__alloc, __p}; 25082: _Node_alloc_traits::construct(__alloc, __p->_M_valptr(), 25082: std::forward<_Args>(__args)...); 25082: __guard = nullptr; 25082: return __p; 25082: } 25082: 25082: 25082: 25082: static size_t 25082: _S_distance(const_iterator __first, const_iterator __last) 25082: { return std::distance(__first, __last); } 25082: 25082: 25082: size_t 25082: _M_node_count() const 25082: { return this->_M_get_size(); } 25082: # 673 "/usr/include/c++/8/bits/stl_list.h" 3 25082: public: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: list() = default; 25082: # 690 "/usr/include/c++/8/bits/stl_list.h" 3 25082: explicit 25082: list(const allocator_type& __a) noexcept 25082: : _Base(_Node_alloc_type(__a)) { } 25082: # 703 "/usr/include/c++/8/bits/stl_list.h" 3 25082: explicit 25082: list(size_type __n, const allocator_type& __a = allocator_type()) 25082: : _Base(_Node_alloc_type(__a)) 25082: { _M_default_initialize(__n); } 25082: # 716 "/usr/include/c++/8/bits/stl_list.h" 3 25082: list(size_type __n, const value_type& __value, 25082: const allocator_type& __a = allocator_type()) 25082: : _Base(_Node_alloc_type(__a)) 25082: { _M_fill_initialize(__n, __value); } 25082: # 743 "/usr/include/c++/8/bits/stl_list.h" 3 25082: list(const list& __x) 25082: : _Base(_Node_alloc_traits:: 25082: _S_select_on_copy(__x._M_get_Node_allocator())) 25082: { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } 25082: # 756 "/usr/include/c++/8/bits/stl_list.h" 3 25082: list(list&&) = default; 25082: # 766 "/usr/include/c++/8/bits/stl_list.h" 3 25082: list(initializer_list __l, 25082: const allocator_type& __a = allocator_type()) 25082: : _Base(_Node_alloc_type(__a)) 25082: { _M_initialize_dispatch(__l.begin(), __l.end(), __false_type()); } 25082: 25082: list(const list& __x, const allocator_type& __a) 25082: : _Base(_Node_alloc_type(__a)) 25082: { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } 25082: 25082: private: 25082: list(list&& __x, const allocator_type& __a, true_type) noexcept 25082: : _Base(_Node_alloc_type(__a), std::move(__x)) 25082: { } 25082: 25082: list(list&& __x, const allocator_type& __a, false_type) 25082: : _Base(_Node_alloc_type(__a)) 25082: { 25082: if (__x._M_get_Node_allocator() == this->_M_get_Node_allocator()) 25082: this->_M_move_nodes(std::move(__x)); 25082: else 25082: insert(begin(), std::__make_move_if_noexcept_iterator(__x.begin()), 25082: std::__make_move_if_noexcept_iterator(__x.end())); 25082: } 25082: 25082: public: 25082: list(list&& __x, const allocator_type& __a) 25082: noexcept(_Node_alloc_traits::_S_always_equal()) 25082: : list(std::move(__x), __a, 25082: typename _Node_alloc_traits::is_always_equal{}) 25082: { } 25082: # 809 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template> 25082: list(_InputIterator __first, _InputIterator __last, 25082: const allocator_type& __a = allocator_type()) 25082: : _Base(_Node_alloc_type(__a)) 25082: { _M_initialize_dispatch(__first, __last, __false_type()); } 25082: # 835 "/usr/include/c++/8/bits/stl_list.h" 3 25082: ~list() = default; 25082: # 846 "/usr/include/c++/8/bits/stl_list.h" 3 25082: list& 25082: operator=(const list& __x); 25082: # 860 "/usr/include/c++/8/bits/stl_list.h" 3 25082: list& 25082: operator=(list&& __x) 25082: noexcept(_Node_alloc_traits::_S_nothrow_move()) 25082: { 25082: constexpr bool __move_storage = 25082: _Node_alloc_traits::_S_propagate_on_move_assign() 25082: || _Node_alloc_traits::_S_always_equal(); 25082: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); 25082: return *this; 25082: } 25082: # 878 "/usr/include/c++/8/bits/stl_list.h" 3 25082: list& 25082: operator=(initializer_list __l) 25082: { 25082: this->assign(__l.begin(), __l.end()); 25082: return *this; 25082: } 25082: # 896 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: assign(size_type __n, const value_type& __val) 25082: { _M_fill_assign(__n, __val); } 25082: # 913 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template> 25082: void 25082: assign(_InputIterator __first, _InputIterator __last) 25082: { _M_assign_dispatch(__first, __last, __false_type()); } 25082: # 937 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: assign(initializer_list __l) 25082: { this->_M_assign_dispatch(__l.begin(), __l.end(), __false_type()); } 25082: 25082: 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return allocator_type(_Base::_M_get_Node_allocator()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: begin() noexcept 25082: { return iterator(this->_M_impl._M_node._M_next); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return const_iterator(this->_M_impl._M_node._M_next); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() noexcept 25082: { return iterator(&this->_M_impl._M_node); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return const_iterator(&this->_M_impl._M_node); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rbegin() noexcept 25082: { return reverse_iterator(end()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: rbegin() const noexcept 25082: { return const_reverse_iterator(end()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rend() noexcept 25082: { return reverse_iterator(begin()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: rend() const noexcept 25082: { return const_reverse_iterator(begin()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return const_iterator(this->_M_impl._M_node._M_next); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return const_iterator(&this->_M_impl._M_node); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: crbegin() const noexcept 25082: { return const_reverse_iterator(end()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: crend() const noexcept 25082: { return const_reverse_iterator(begin()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; } 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_node_count(); } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _Node_alloc_traits::max_size(_M_get_Node_allocator()); } 25082: # 1086 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: resize(size_type __new_size); 25082: # 1099 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: resize(size_type __new_size, const value_type& __x); 25082: # 1121 "/usr/include/c++/8/bits/stl_list.h" 3 25082: reference 25082: front() noexcept 25082: { return *begin(); } 25082: 25082: 25082: 25082: 25082: 25082: const_reference 25082: front() const noexcept 25082: { return *begin(); } 25082: 25082: 25082: 25082: 25082: 25082: reference 25082: back() noexcept 25082: { 25082: iterator __tmp = end(); 25082: --__tmp; 25082: return *__tmp; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: const_reference 25082: back() const noexcept 25082: { 25082: const_iterator __tmp = end(); 25082: --__tmp; 25082: return *__tmp; 25082: } 25082: # 1168 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: push_front(const value_type& __x) 25082: { this->_M_insert(begin(), __x); } 25082: 25082: 25082: void 25082: push_front(value_type&& __x) 25082: { this->_M_insert(begin(), std::move(__x)); } 25082: 25082: template 25082: 25082: reference 25082: 25082: 25082: 25082: emplace_front(_Args&&... __args) 25082: { 25082: this->_M_insert(begin(), std::forward<_Args>(__args)...); 25082: 25082: return front(); 25082: 25082: } 25082: # 1204 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: pop_front() noexcept 25082: { this->_M_erase(begin()); } 25082: # 1218 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: push_back(const value_type& __x) 25082: { this->_M_insert(end(), __x); } 25082: 25082: 25082: void 25082: push_back(value_type&& __x) 25082: { this->_M_insert(end(), std::move(__x)); } 25082: 25082: template 25082: 25082: reference 25082: 25082: 25082: 25082: emplace_back(_Args&&... __args) 25082: { 25082: this->_M_insert(end(), std::forward<_Args>(__args)...); 25082: 25082: return back(); 25082: 25082: } 25082: # 1253 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: pop_back() noexcept 25082: { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); } 25082: # 1270 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template 25082: iterator 25082: emplace(const_iterator __position, _Args&&... __args); 25082: # 1285 "/usr/include/c++/8/bits/stl_list.h" 3 25082: iterator 25082: insert(const_iterator __position, const value_type& __x); 25082: # 1315 "/usr/include/c++/8/bits/stl_list.h" 3 25082: iterator 25082: insert(const_iterator __position, value_type&& __x) 25082: { return emplace(__position, std::move(__x)); } 25082: # 1334 "/usr/include/c++/8/bits/stl_list.h" 3 25082: iterator 25082: insert(const_iterator __p, initializer_list __l) 25082: { return this->insert(__p, __l.begin(), __l.end()); } 25082: # 1354 "/usr/include/c++/8/bits/stl_list.h" 3 25082: iterator 25082: insert(const_iterator __position, size_type __n, const value_type& __x); 25082: # 1393 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template> 25082: iterator 25082: insert(const_iterator __position, _InputIterator __first, 25082: _InputIterator __last); 25082: # 1437 "/usr/include/c++/8/bits/stl_list.h" 3 25082: iterator 25082: 25082: erase(const_iterator __position) noexcept; 25082: # 1462 "/usr/include/c++/8/bits/stl_list.h" 3 25082: iterator 25082: 25082: erase(const_iterator __first, const_iterator __last) noexcept 25082: 25082: 25082: 25082: { 25082: while (__first != __last) 25082: __first = erase(__first); 25082: return __last._M_const_cast(); 25082: } 25082: # 1485 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: swap(list& __x) noexcept 25082: { 25082: __detail::_List_node_base::swap(this->_M_impl._M_node, 25082: __x._M_impl._M_node); 25082: 25082: size_t __xsize = __x._M_get_size(); 25082: __x._M_set_size(this->_M_get_size()); 25082: this->_M_set_size(__xsize); 25082: 25082: _Node_alloc_traits::_S_on_swap(this->_M_get_Node_allocator(), 25082: __x._M_get_Node_allocator()); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: clear() noexcept 25082: { 25082: _Base::_M_clear(); 25082: _Base::_M_init(); 25082: } 25082: # 1524 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: 25082: splice(const_iterator __position, list&& __x) noexcept 25082: 25082: 25082: 25082: { 25082: if (!__x.empty()) 25082: { 25082: _M_check_equal_allocators(__x); 25082: 25082: this->_M_transfer(__position._M_const_cast(), 25082: __x.begin(), __x.end()); 25082: 25082: this->_M_inc_size(__x._M_get_size()); 25082: __x._M_set_size(0); 25082: } 25082: } 25082: 25082: 25082: void 25082: splice(const_iterator __position, list& __x) noexcept 25082: { splice(__position, std::move(__x)); } 25082: # 1560 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: splice(const_iterator __position, list&& __x, const_iterator __i) noexcept 25082: # 1575 "/usr/include/c++/8/bits/stl_list.h" 3 25082: { 25082: iterator __j = __i._M_const_cast(); 25082: ++__j; 25082: if (__position == __i || __position == __j) 25082: return; 25082: 25082: if (this != std::__addressof(__x)) 25082: _M_check_equal_allocators(__x); 25082: 25082: this->_M_transfer(__position._M_const_cast(), 25082: __i._M_const_cast(), __j); 25082: 25082: this->_M_inc_size(1); 25082: __x._M_dec_size(1); 25082: } 25082: # 1602 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: splice(const_iterator __position, list& __x, const_iterator __i) noexcept 25082: { splice(__position, std::move(__x), __i); } 25082: # 1621 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: splice(const_iterator __position, list&& __x, const_iterator __first, 25082: const_iterator __last) noexcept 25082: # 1641 "/usr/include/c++/8/bits/stl_list.h" 3 25082: { 25082: if (__first != __last) 25082: { 25082: if (this != std::__addressof(__x)) 25082: _M_check_equal_allocators(__x); 25082: 25082: size_t __n = _S_distance(__first, __last); 25082: this->_M_inc_size(__n); 25082: __x._M_dec_size(__n); 25082: 25082: this->_M_transfer(__position._M_const_cast(), 25082: __first._M_const_cast(), 25082: __last._M_const_cast()); 25082: } 25082: } 25082: # 1671 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: splice(const_iterator __position, list& __x, const_iterator __first, 25082: const_iterator __last) noexcept 25082: { splice(__position, std::move(__x), __first, __last); } 25082: # 1688 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: remove(const _Tp& __value); 25082: # 1702 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template 25082: void 25082: remove_if(_Predicate); 25082: # 1716 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: unique(); 25082: # 1731 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template 25082: void 25082: unique(_BinaryPredicate); 25082: # 1745 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: merge(list&& __x); 25082: 25082: void 25082: merge(list& __x) 25082: { merge(std::move(__x)); } 25082: # 1770 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template 25082: void 25082: merge(list&& __x, _StrictWeakOrdering __comp); 25082: 25082: template 25082: void 25082: merge(list& __x, _StrictWeakOrdering __comp) 25082: { merge(std::move(__x), __comp); } 25082: # 1789 "/usr/include/c++/8/bits/stl_list.h" 3 25082: void 25082: reverse() noexcept 25082: { this->_M_impl._M_node._M_reverse(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: sort(); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: sort(_StrictWeakOrdering); 25082: 25082: protected: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: void 25082: _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) 25082: { _M_fill_initialize(static_cast(__n), __x); } 25082: 25082: 25082: template 25082: void 25082: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, 25082: __false_type) 25082: { 25082: for (; __first != __last; ++__first) 25082: 25082: emplace_back(*__first); 25082: 25082: 25082: 25082: } 25082: 25082: 25082: 25082: void 25082: _M_fill_initialize(size_type __n, const value_type& __x) 25082: { 25082: for (; __n; --__n) 25082: push_back(__x); 25082: } 25082: 25082: 25082: 25082: void 25082: _M_default_initialize(size_type __n) 25082: { 25082: for (; __n; --__n) 25082: emplace_back(); 25082: } 25082: 25082: 25082: void 25082: _M_default_append(size_type __n); 25082: # 1867 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template 25082: void 25082: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) 25082: { _M_fill_assign(__n, __val); } 25082: 25082: 25082: template 25082: void 25082: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, 25082: __false_type); 25082: 25082: 25082: 25082: void 25082: _M_fill_assign(size_type __n, const value_type& __val); 25082: 25082: 25082: 25082: void 25082: _M_transfer(iterator __position, iterator __first, iterator __last) 25082: { __position._M_node->_M_transfer(__first._M_node, __last._M_node); } 25082: # 1899 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template 25082: void 25082: _M_insert(iterator __position, _Args&&... __args) 25082: { 25082: _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); 25082: __tmp->_M_hook(__position._M_node); 25082: this->_M_inc_size(1); 25082: } 25082: 25082: 25082: 25082: void 25082: _M_erase(iterator __position) noexcept 25082: { 25082: this->_M_dec_size(1); 25082: __position._M_node->_M_unhook(); 25082: _Node* __n = static_cast<_Node*>(__position._M_node); 25082: 25082: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __n->_M_valptr()); 25082: 25082: 25082: 25082: 25082: _M_put_node(__n); 25082: } 25082: 25082: 25082: void 25082: _M_check_equal_allocators(list& __x) noexcept 25082: { 25082: if (std::__alloc_neq:: 25082: _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator())) 25082: __builtin_abort(); 25082: } 25082: 25082: 25082: const_iterator 25082: _M_resize_pos(size_type& __new_size) const; 25082: 25082: 25082: void 25082: _M_move_assign(list&& __x, true_type) noexcept 25082: { 25082: this->_M_clear(); 25082: this->_M_move_nodes(std::move(__x)); 25082: std::__alloc_on_move(this->_M_get_Node_allocator(), 25082: __x._M_get_Node_allocator()); 25082: } 25082: 25082: void 25082: _M_move_assign(list&& __x, false_type) 25082: { 25082: if (__x._M_get_Node_allocator() == this->_M_get_Node_allocator()) 25082: _M_move_assign(std::move(__x), true_type{}); 25082: else 25082: 25082: 25082: _M_assign_dispatch(std::__make_move_if_noexcept_iterator(__x.begin()), 25082: std::__make_move_if_noexcept_iterator(__x.end()), 25082: __false_type{}); 25082: } 25082: 25082: }; 25082: 25082: 25082: template::value_type, 25082: typename _Allocator = allocator<_ValT>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: list(_InputIterator, _InputIterator, _Allocator = _Allocator()) 25082: -> list<_ValT, _Allocator>; 25082: 25082: 25082: } 25082: # 1985 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template 25082: inline bool 25082: operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) 25082: { 25082: 25082: if (__x.size() != __y.size()) 25082: return false; 25082: 25082: 25082: typedef typename list<_Tp, _Alloc>::const_iterator const_iterator; 25082: const_iterator __end1 = __x.end(); 25082: const_iterator __end2 = __y.end(); 25082: 25082: const_iterator __i1 = __x.begin(); 25082: const_iterator __i2 = __y.begin(); 25082: while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2) 25082: { 25082: ++__i1; 25082: ++__i2; 25082: } 25082: return __i1 == __end1 && __i2 == __end2; 25082: } 25082: # 2019 "/usr/include/c++/8/bits/stl_list.h" 3 25082: template 25082: inline bool 25082: operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) 25082: { return std::lexicographical_compare(__x.begin(), __x.end(), 25082: __y.begin(), __y.end()); } 25082: 25082: 25082: template 25082: inline bool 25082: operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) 25082: { return __y < __x; } 25082: 25082: 25082: template 25082: inline bool 25082: operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) 25082: { return !(__y < __x); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) 25082: { return !(__x < __y); } 25082: 25082: 25082: template 25082: inline void 25082: swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline ptrdiff_t 25082: __distance(std::_List_iterator<_Tp> __first, 25082: std::_List_iterator<_Tp> __last, 25082: input_iterator_tag __tag) 25082: { 25082: typedef std::_List_const_iterator<_Tp> _CIter; 25082: return std::__distance(_CIter(__first), _CIter(__last), __tag); 25082: } 25082: 25082: template 25082: inline ptrdiff_t 25082: __distance(std::_List_const_iterator<_Tp> __first, 25082: std::_List_const_iterator<_Tp> __last, 25082: input_iterator_tag) 25082: { 25082: typedef __detail::_List_node_header _Sentinel; 25082: std::_List_const_iterator<_Tp> __beyond = __last; 25082: ++__beyond; 25082: const bool __whole = __first == __beyond; 25082: if (__builtin_constant_p (__whole) && __whole) 25082: return static_cast(__last._M_node)->_M_size; 25082: 25082: ptrdiff_t __n = 0; 25082: while (__first != __last) 25082: { 25082: ++__first; 25082: ++__n; 25082: } 25082: return __n; 25082: } 25082: 25082: 25082: 25082: } 25082: # 64 "/usr/include/c++/8/list" 2 3 25082: # 1 "/usr/include/c++/8/bits/list.tcc" 1 3 25082: # 59 "/usr/include/c++/8/bits/list.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: void 25082: _List_base<_Tp, _Alloc>:: 25082: _M_clear() noexcept 25082: { 25082: typedef _List_node<_Tp> _Node; 25082: __detail::_List_node_base* __cur = _M_impl._M_node._M_next; 25082: while (__cur != &_M_impl._M_node) 25082: { 25082: _Node* __tmp = static_cast<_Node*>(__cur); 25082: __cur = __tmp->_M_next; 25082: _Tp* __val = __tmp->_M_valptr(); 25082: 25082: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __val); 25082: 25082: 25082: 25082: _M_put_node(__tmp); 25082: } 25082: } 25082: 25082: 25082: template 25082: template 25082: typename list<_Tp, _Alloc>::iterator 25082: list<_Tp, _Alloc>:: 25082: emplace(const_iterator __position, _Args&&... __args) 25082: { 25082: _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); 25082: __tmp->_M_hook(__position._M_const_cast()._M_node); 25082: this->_M_inc_size(1); 25082: return iterator(__tmp); 25082: } 25082: 25082: 25082: template 25082: typename list<_Tp, _Alloc>::iterator 25082: list<_Tp, _Alloc>:: 25082: 25082: insert(const_iterator __position, const value_type& __x) 25082: 25082: 25082: 25082: { 25082: _Node* __tmp = _M_create_node(__x); 25082: __tmp->_M_hook(__position._M_const_cast()._M_node); 25082: this->_M_inc_size(1); 25082: return iterator(__tmp); 25082: } 25082: 25082: 25082: template 25082: typename list<_Tp, _Alloc>::iterator 25082: list<_Tp, _Alloc>:: 25082: insert(const_iterator __position, size_type __n, const value_type& __x) 25082: { 25082: if (__n) 25082: { 25082: list __tmp(__n, __x, get_allocator()); 25082: iterator __it = __tmp.begin(); 25082: splice(__position, __tmp); 25082: return __it; 25082: } 25082: return __position._M_const_cast(); 25082: } 25082: 25082: template 25082: template 25082: typename list<_Tp, _Alloc>::iterator 25082: list<_Tp, _Alloc>:: 25082: insert(const_iterator __position, _InputIterator __first, 25082: _InputIterator __last) 25082: { 25082: list __tmp(__first, __last, get_allocator()); 25082: if (!__tmp.empty()) 25082: { 25082: iterator __it = __tmp.begin(); 25082: splice(__position, __tmp); 25082: return __it; 25082: } 25082: return __position._M_const_cast(); 25082: } 25082: 25082: 25082: template 25082: typename list<_Tp, _Alloc>::iterator 25082: list<_Tp, _Alloc>:: 25082: 25082: erase(const_iterator __position) noexcept 25082: 25082: 25082: 25082: { 25082: iterator __ret = iterator(__position._M_node->_M_next); 25082: _M_erase(__position._M_const_cast()); 25082: return __ret; 25082: } 25082: # 173 "/usr/include/c++/8/bits/list.tcc" 3 25082: template 25082: typename list<_Tp, _Alloc>::const_iterator 25082: list<_Tp, _Alloc>:: 25082: _M_resize_pos(size_type& __new_size) const 25082: { 25082: const_iterator __i; 25082: 25082: const size_type __len = size(); 25082: if (__new_size < __len) 25082: { 25082: if (__new_size <= __len / 2) 25082: { 25082: __i = begin(); 25082: std::advance(__i, __new_size); 25082: } 25082: else 25082: { 25082: __i = end(); 25082: ptrdiff_t __num_erase = __len - __new_size; 25082: std::advance(__i, -__num_erase); 25082: } 25082: __new_size = 0; 25082: return __i; 25082: } 25082: else 25082: __i = end(); 25082: 25082: 25082: 25082: 25082: 25082: __new_size -= __len; 25082: return __i; 25082: } 25082: 25082: 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: _M_default_append(size_type __n) 25082: { 25082: size_type __i = 0; 25082: try 25082: { 25082: for (; __i < __n; ++__i) 25082: emplace_back(); 25082: } 25082: catch(...) 25082: { 25082: for (; __i; --__i) 25082: pop_back(); 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: resize(size_type __new_size) 25082: { 25082: const_iterator __i = _M_resize_pos(__new_size); 25082: if (__new_size) 25082: _M_default_append(__new_size); 25082: else 25082: erase(__i, end()); 25082: } 25082: 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: resize(size_type __new_size, const value_type& __x) 25082: { 25082: const_iterator __i = _M_resize_pos(__new_size); 25082: if (__new_size) 25082: insert(end(), __new_size, __x); 25082: else 25082: erase(__i, end()); 25082: } 25082: # 265 "/usr/include/c++/8/bits/list.tcc" 3 25082: template 25082: list<_Tp, _Alloc>& 25082: list<_Tp, _Alloc>:: 25082: operator=(const list& __x) 25082: { 25082: if (this != std::__addressof(__x)) 25082: { 25082: 25082: if (_Node_alloc_traits::_S_propagate_on_copy_assign()) 25082: { 25082: auto& __this_alloc = this->_M_get_Node_allocator(); 25082: auto& __that_alloc = __x._M_get_Node_allocator(); 25082: if (!_Node_alloc_traits::_S_always_equal() 25082: && __this_alloc != __that_alloc) 25082: { 25082: 25082: clear(); 25082: } 25082: std::__alloc_on_copy(__this_alloc, __that_alloc); 25082: } 25082: 25082: _M_assign_dispatch(__x.begin(), __x.end(), __false_type()); 25082: } 25082: return *this; 25082: } 25082: 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: _M_fill_assign(size_type __n, const value_type& __val) 25082: { 25082: iterator __i = begin(); 25082: for (; __i != end() && __n > 0; ++__i, --__n) 25082: *__i = __val; 25082: if (__n > 0) 25082: insert(end(), __n, __val); 25082: else 25082: erase(__i, end()); 25082: } 25082: 25082: template 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2, 25082: __false_type) 25082: { 25082: iterator __first1 = begin(); 25082: iterator __last1 = end(); 25082: for (; __first1 != __last1 && __first2 != __last2; 25082: ++__first1, ++__first2) 25082: *__first1 = *__first2; 25082: if (__first2 == __last2) 25082: erase(__first1, __last1); 25082: else 25082: insert(__last1, __first2, __last2); 25082: } 25082: 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: remove(const value_type& __value) 25082: { 25082: iterator __first = begin(); 25082: iterator __last = end(); 25082: iterator __extra = __last; 25082: while (__first != __last) 25082: { 25082: iterator __next = __first; 25082: ++__next; 25082: if (*__first == __value) 25082: { 25082: 25082: 25082: 25082: if (std::__addressof(*__first) != std::__addressof(__value)) 25082: _M_erase(__first); 25082: else 25082: __extra = __first; 25082: } 25082: __first = __next; 25082: } 25082: if (__extra != __last) 25082: _M_erase(__extra); 25082: } 25082: 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: unique() 25082: { 25082: iterator __first = begin(); 25082: iterator __last = end(); 25082: if (__first == __last) 25082: return; 25082: iterator __next = __first; 25082: while (++__next != __last) 25082: { 25082: if (*__first == *__next) 25082: _M_erase(__next); 25082: else 25082: __first = __next; 25082: __next = __first; 25082: } 25082: } 25082: 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: 25082: merge(list&& __x) 25082: 25082: 25082: 25082: { 25082: 25082: 25082: if (this != std::__addressof(__x)) 25082: { 25082: _M_check_equal_allocators(__x); 25082: 25082: iterator __first1 = begin(); 25082: iterator __last1 = end(); 25082: iterator __first2 = __x.begin(); 25082: iterator __last2 = __x.end(); 25082: const size_t __orig_size = __x.size(); 25082: try { 25082: while (__first1 != __last1 && __first2 != __last2) 25082: if (*__first2 < *__first1) 25082: { 25082: iterator __next = __first2; 25082: _M_transfer(__first1, __first2, ++__next); 25082: __first2 = __next; 25082: } 25082: else 25082: ++__first1; 25082: if (__first2 != __last2) 25082: _M_transfer(__last1, __first2, __last2); 25082: 25082: this->_M_inc_size(__x._M_get_size()); 25082: __x._M_set_size(0); 25082: } 25082: catch(...) 25082: { 25082: const size_t __dist = std::distance(__first2, __last2); 25082: this->_M_inc_size(__orig_size - __dist); 25082: __x._M_set_size(__dist); 25082: throw; 25082: } 25082: } 25082: } 25082: 25082: template 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: 25082: merge(list&& __x, _StrictWeakOrdering __comp) 25082: 25082: 25082: 25082: { 25082: 25082: 25082: if (this != std::__addressof(__x)) 25082: { 25082: _M_check_equal_allocators(__x); 25082: 25082: iterator __first1 = begin(); 25082: iterator __last1 = end(); 25082: iterator __first2 = __x.begin(); 25082: iterator __last2 = __x.end(); 25082: const size_t __orig_size = __x.size(); 25082: try 25082: { 25082: while (__first1 != __last1 && __first2 != __last2) 25082: if (__comp(*__first2, *__first1)) 25082: { 25082: iterator __next = __first2; 25082: _M_transfer(__first1, __first2, ++__next); 25082: __first2 = __next; 25082: } 25082: else 25082: ++__first1; 25082: if (__first2 != __last2) 25082: _M_transfer(__last1, __first2, __last2); 25082: 25082: this->_M_inc_size(__x._M_get_size()); 25082: __x._M_set_size(0); 25082: } 25082: catch(...) 25082: { 25082: const size_t __dist = std::distance(__first2, __last2); 25082: this->_M_inc_size(__orig_size - __dist); 25082: __x._M_set_size(__dist); 25082: throw; 25082: } 25082: } 25082: } 25082: 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: sort() 25082: { 25082: 25082: if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node 25082: && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) 25082: { 25082: list __carry; 25082: list __tmp[64]; 25082: list * __fill = __tmp; 25082: list * __counter; 25082: try 25082: { 25082: do 25082: { 25082: __carry.splice(__carry.begin(), *this, begin()); 25082: 25082: for(__counter = __tmp; 25082: __counter != __fill && !__counter->empty(); 25082: ++__counter) 25082: { 25082: __counter->merge(__carry); 25082: __carry.swap(*__counter); 25082: } 25082: __carry.swap(*__counter); 25082: if (__counter == __fill) 25082: ++__fill; 25082: } 25082: while ( !empty() ); 25082: 25082: for (__counter = __tmp + 1; __counter != __fill; ++__counter) 25082: __counter->merge(*(__counter - 1)); 25082: swap( *(__fill - 1) ); 25082: } 25082: catch(...) 25082: { 25082: this->splice(this->end(), __carry); 25082: for (int __i = 0; __i < sizeof(__tmp)/sizeof(__tmp[0]); ++__i) 25082: this->splice(this->end(), __tmp[__i]); 25082: throw; 25082: } 25082: } 25082: } 25082: 25082: template 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: remove_if(_Predicate __pred) 25082: { 25082: iterator __first = begin(); 25082: iterator __last = end(); 25082: while (__first != __last) 25082: { 25082: iterator __next = __first; 25082: ++__next; 25082: if (__pred(*__first)) 25082: _M_erase(__first); 25082: __first = __next; 25082: } 25082: } 25082: 25082: template 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: unique(_BinaryPredicate __binary_pred) 25082: { 25082: iterator __first = begin(); 25082: iterator __last = end(); 25082: if (__first == __last) 25082: return; 25082: iterator __next = __first; 25082: while (++__next != __last) 25082: { 25082: if (__binary_pred(*__first, *__next)) 25082: _M_erase(__next); 25082: else 25082: __first = __next; 25082: __next = __first; 25082: } 25082: } 25082: 25082: template 25082: template 25082: void 25082: list<_Tp, _Alloc>:: 25082: sort(_StrictWeakOrdering __comp) 25082: { 25082: 25082: if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node 25082: && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) 25082: { 25082: list __carry; 25082: list __tmp[64]; 25082: list * __fill = __tmp; 25082: list * __counter; 25082: try 25082: { 25082: do 25082: { 25082: __carry.splice(__carry.begin(), *this, begin()); 25082: 25082: for(__counter = __tmp; 25082: __counter != __fill && !__counter->empty(); 25082: ++__counter) 25082: { 25082: __counter->merge(__carry, __comp); 25082: __carry.swap(*__counter); 25082: } 25082: __carry.swap(*__counter); 25082: if (__counter == __fill) 25082: ++__fill; 25082: } 25082: while ( !empty() ); 25082: 25082: for (__counter = __tmp + 1; __counter != __fill; ++__counter) 25082: __counter->merge(*(__counter - 1), __comp); 25082: swap(*(__fill - 1)); 25082: } 25082: catch(...) 25082: { 25082: this->splice(this->end(), __carry); 25082: for (int __i = 0; __i < sizeof(__tmp)/sizeof(__tmp[0]); ++__i) 25082: this->splice(this->end(), __tmp[__i]); 25082: throw; 25082: } 25082: } 25082: } 25082: 25082: 25082: 25082: } 25082: # 65 "/usr/include/c++/8/list" 2 3 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Block.h" 2 3 4 25082: 25082: # 1 "/usr/include/c++/8/map" 1 3 4 25082: # 58 "/usr/include/c++/8/map" 3 4 25082: 25082: # 59 "/usr/include/c++/8/map" 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/stl_map.h" 1 3 25082: # 66 "/usr/include/c++/8/bits/stl_map.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: class multimap; 25082: # 98 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template , 25082: typename _Alloc = std::allocator > > 25082: class map 25082: { 25082: public: 25082: typedef _Key key_type; 25082: typedef _Tp mapped_type; 25082: typedef std::pair value_type; 25082: typedef _Compare key_compare; 25082: typedef _Alloc allocator_type; 25082: 25082: private: 25082: # 122 "/usr/include/c++/8/bits/stl_map.h" 3 25082: static_assert(is_same::value, 25082: "std::map must have the same value_type as its allocator"); 25082: 25082: 25082: public: 25082: class value_compare 25082: : public std::binary_function 25082: { 25082: friend class map<_Key, _Tp, _Compare, _Alloc>; 25082: protected: 25082: _Compare comp; 25082: 25082: value_compare(_Compare __c) 25082: : comp(__c) { } 25082: 25082: public: 25082: bool operator()(const value_type& __x, const value_type& __y) const 25082: { return comp(__x.first, __y.first); } 25082: }; 25082: 25082: private: 25082: 25082: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 25082: rebind::other _Pair_alloc_type; 25082: 25082: typedef _Rb_tree, 25082: key_compare, _Pair_alloc_type> _Rep_type; 25082: 25082: 25082: _Rep_type _M_t; 25082: 25082: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; 25082: 25082: public: 25082: 25082: 25082: typedef typename _Alloc_traits::pointer pointer; 25082: typedef typename _Alloc_traits::const_pointer const_pointer; 25082: typedef typename _Alloc_traits::reference reference; 25082: typedef typename _Alloc_traits::const_reference const_reference; 25082: typedef typename _Rep_type::iterator iterator; 25082: typedef typename _Rep_type::const_iterator const_iterator; 25082: typedef typename _Rep_type::size_type size_type; 25082: typedef typename _Rep_type::difference_type difference_type; 25082: typedef typename _Rep_type::reverse_iterator reverse_iterator; 25082: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 25082: 25082: 25082: using node_type = typename _Rep_type::node_type; 25082: using insert_return_type = typename _Rep_type::insert_return_type; 25082: # 183 "/usr/include/c++/8/bits/stl_map.h" 3 25082: map() = default; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: map(const _Compare& __comp, 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Pair_alloc_type(__a)) { } 25082: # 205 "/usr/include/c++/8/bits/stl_map.h" 3 25082: map(const map&) = default; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: map(map&&) = default; 25082: # 226 "/usr/include/c++/8/bits/stl_map.h" 3 25082: map(initializer_list __l, 25082: const _Compare& __comp = _Compare(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Pair_alloc_type(__a)) 25082: { _M_t._M_insert_unique(__l.begin(), __l.end()); } 25082: 25082: 25082: explicit 25082: map(const allocator_type& __a) 25082: : _M_t(_Compare(), _Pair_alloc_type(__a)) { } 25082: 25082: 25082: map(const map& __m, const allocator_type& __a) 25082: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } 25082: 25082: 25082: map(map&& __m, const allocator_type& __a) 25082: noexcept(is_nothrow_copy_constructible<_Compare>::value 25082: && _Alloc_traits::_S_always_equal()) 25082: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } 25082: 25082: 25082: map(initializer_list __l, const allocator_type& __a) 25082: : _M_t(_Compare(), _Pair_alloc_type(__a)) 25082: { _M_t._M_insert_unique(__l.begin(), __l.end()); } 25082: 25082: 25082: template 25082: map(_InputIterator __first, _InputIterator __last, 25082: const allocator_type& __a) 25082: : _M_t(_Compare(), _Pair_alloc_type(__a)) 25082: { _M_t._M_insert_unique(__first, __last); } 25082: # 270 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: map(_InputIterator __first, _InputIterator __last) 25082: : _M_t() 25082: { _M_t._M_insert_unique(__first, __last); } 25082: # 287 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: map(_InputIterator __first, _InputIterator __last, 25082: const _Compare& __comp, 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Pair_alloc_type(__a)) 25082: { _M_t._M_insert_unique(__first, __last); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ~map() = default; 25082: # 316 "/usr/include/c++/8/bits/stl_map.h" 3 25082: map& 25082: operator=(const map&) = default; 25082: 25082: 25082: map& 25082: operator=(map&&) = default; 25082: # 334 "/usr/include/c++/8/bits/stl_map.h" 3 25082: map& 25082: operator=(initializer_list __l) 25082: { 25082: _M_t._M_assign_unique(__l.begin(), __l.end()); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return allocator_type(_M_t.get_allocator()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: begin() noexcept 25082: { return _M_t.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return _M_t.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() noexcept 25082: { return _M_t.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return _M_t.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rbegin() noexcept 25082: { return _M_t.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: rbegin() const noexcept 25082: { return _M_t.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rend() noexcept 25082: { return _M_t.rend(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: rend() const noexcept 25082: { return _M_t.rend(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return _M_t.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return _M_t.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: crbegin() const noexcept 25082: { return _M_t.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: crend() const noexcept 25082: { return _M_t.rend(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return _M_t.empty(); } 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_t.size(); } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _M_t.max_size(); } 25082: # 489 "/usr/include/c++/8/bits/stl_map.h" 3 25082: mapped_type& 25082: operator[](const key_type& __k) 25082: { 25082: 25082: 25082: 25082: iterator __i = lower_bound(__k); 25082: 25082: if (__i == end() || key_comp()(__k, (*__i).first)) 25082: 25082: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, 25082: std::tuple(__k), 25082: std::tuple<>()); 25082: 25082: 25082: 25082: return (*__i).second; 25082: } 25082: 25082: 25082: mapped_type& 25082: operator[](key_type&& __k) 25082: { 25082: 25082: 25082: 25082: iterator __i = lower_bound(__k); 25082: 25082: if (__i == end() || key_comp()(__k, (*__i).first)) 25082: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, 25082: std::forward_as_tuple(std::move(__k)), 25082: std::tuple<>()); 25082: return (*__i).second; 25082: } 25082: # 534 "/usr/include/c++/8/bits/stl_map.h" 3 25082: mapped_type& 25082: at(const key_type& __k) 25082: { 25082: iterator __i = lower_bound(__k); 25082: if (__i == end() || key_comp()(__k, (*__i).first)) 25082: __throw_out_of_range(("map::at")); 25082: return (*__i).second; 25082: } 25082: 25082: const mapped_type& 25082: at(const key_type& __k) const 25082: { 25082: const_iterator __i = lower_bound(__k); 25082: if (__i == end() || key_comp()(__k, (*__i).first)) 25082: __throw_out_of_range(("map::at")); 25082: return (*__i).second; 25082: } 25082: # 572 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: std::pair 25082: emplace(_Args&&... __args) 25082: { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } 25082: # 602 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: iterator 25082: emplace_hint(const_iterator __pos, _Args&&... __args) 25082: { 25082: return _M_t._M_emplace_hint_unique(__pos, 25082: std::forward<_Args>(__args)...); 25082: } 25082: 25082: 25082: 25082: 25082: node_type 25082: extract(const_iterator __pos) 25082: { 25082: ; 25082: return _M_t.extract(__pos); 25082: } 25082: 25082: 25082: node_type 25082: extract(const key_type& __x) 25082: { return _M_t.extract(__x); } 25082: 25082: 25082: insert_return_type 25082: insert(node_type&& __nh) 25082: { return _M_t._M_reinsert_node_unique(std::move(__nh)); } 25082: 25082: 25082: iterator 25082: insert(const_iterator __hint, node_type&& __nh) 25082: { return _M_t._M_reinsert_node_hint_unique(__hint, std::move(__nh)); } 25082: 25082: template 25082: friend class std::_Rb_tree_merge_helper; 25082: 25082: template 25082: void 25082: merge(map<_Key, _Tp, _C2, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Rb_tree_merge_helper; 25082: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(map<_Key, _Tp, _C2, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: template 25082: void 25082: merge(multimap<_Key, _Tp, _C2, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Rb_tree_merge_helper; 25082: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(multimap<_Key, _Tp, _C2, _Alloc>&& __source) 25082: { merge(__source); } 25082: # 687 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: pair 25082: try_emplace(const key_type& __k, _Args&&... __args) 25082: { 25082: iterator __i = lower_bound(__k); 25082: if (__i == end() || key_comp()(__k, (*__i).first)) 25082: { 25082: __i = emplace_hint(__i, std::piecewise_construct, 25082: std::forward_as_tuple(__k), 25082: std::forward_as_tuple( 25082: std::forward<_Args>(__args)...)); 25082: return {__i, true}; 25082: } 25082: return {__i, false}; 25082: } 25082: 25082: 25082: template 25082: pair 25082: try_emplace(key_type&& __k, _Args&&... __args) 25082: { 25082: iterator __i = lower_bound(__k); 25082: if (__i == end() || key_comp()(__k, (*__i).first)) 25082: { 25082: __i = emplace_hint(__i, std::piecewise_construct, 25082: std::forward_as_tuple(std::move(__k)), 25082: std::forward_as_tuple( 25082: std::forward<_Args>(__args)...)); 25082: return {__i, true}; 25082: } 25082: return {__i, false}; 25082: } 25082: # 747 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: iterator 25082: try_emplace(const_iterator __hint, const key_type& __k, 25082: _Args&&... __args) 25082: { 25082: iterator __i; 25082: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); 25082: if (__true_hint.second) 25082: __i = emplace_hint(iterator(__true_hint.second), 25082: std::piecewise_construct, 25082: std::forward_as_tuple(__k), 25082: std::forward_as_tuple( 25082: std::forward<_Args>(__args)...)); 25082: else 25082: __i = iterator(__true_hint.first); 25082: return __i; 25082: } 25082: 25082: 25082: template 25082: iterator 25082: try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) 25082: { 25082: iterator __i; 25082: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); 25082: if (__true_hint.second) 25082: __i = emplace_hint(iterator(__true_hint.second), 25082: std::piecewise_construct, 25082: std::forward_as_tuple(std::move(__k)), 25082: std::forward_as_tuple( 25082: std::forward<_Args>(__args)...)); 25082: else 25082: __i = iterator(__true_hint.first); 25082: return __i; 25082: } 25082: # 800 "/usr/include/c++/8/bits/stl_map.h" 3 25082: std::pair 25082: insert(const value_type& __x) 25082: { return _M_t._M_insert_unique(__x); } 25082: 25082: 25082: 25082: 25082: std::pair 25082: insert(value_type&& __x) 25082: { return _M_t._M_insert_unique(std::move(__x)); } 25082: 25082: template 25082: __enable_if_t::value, 25082: pair> 25082: insert(_Pair&& __x) 25082: { return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); } 25082: # 827 "/usr/include/c++/8/bits/stl_map.h" 3 25082: void 25082: insert(std::initializer_list __list) 25082: { insert(__list.begin(), __list.end()); } 25082: # 856 "/usr/include/c++/8/bits/stl_map.h" 3 25082: iterator 25082: 25082: insert(const_iterator __position, const value_type& __x) 25082: 25082: 25082: 25082: { return _M_t._M_insert_unique_(__position, __x); } 25082: 25082: 25082: 25082: 25082: iterator 25082: insert(const_iterator __position, value_type&& __x) 25082: { return _M_t._M_insert_unique_(__position, std::move(__x)); } 25082: 25082: template 25082: __enable_if_t::value, iterator> 25082: insert(const_iterator __position, _Pair&& __x) 25082: { 25082: return _M_t._M_emplace_hint_unique(__position, 25082: std::forward<_Pair>(__x)); 25082: } 25082: # 889 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: void 25082: insert(_InputIterator __first, _InputIterator __last) 25082: { _M_t._M_insert_unique(__first, __last); } 25082: # 915 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: pair 25082: insert_or_assign(const key_type& __k, _Obj&& __obj) 25082: { 25082: iterator __i = lower_bound(__k); 25082: if (__i == end() || key_comp()(__k, (*__i).first)) 25082: { 25082: __i = emplace_hint(__i, std::piecewise_construct, 25082: std::forward_as_tuple(__k), 25082: std::forward_as_tuple( 25082: std::forward<_Obj>(__obj))); 25082: return {__i, true}; 25082: } 25082: (*__i).second = std::forward<_Obj>(__obj); 25082: return {__i, false}; 25082: } 25082: 25082: 25082: template 25082: pair 25082: insert_or_assign(key_type&& __k, _Obj&& __obj) 25082: { 25082: iterator __i = lower_bound(__k); 25082: if (__i == end() || key_comp()(__k, (*__i).first)) 25082: { 25082: __i = emplace_hint(__i, std::piecewise_construct, 25082: std::forward_as_tuple(std::move(__k)), 25082: std::forward_as_tuple( 25082: std::forward<_Obj>(__obj))); 25082: return {__i, true}; 25082: } 25082: (*__i).second = std::forward<_Obj>(__obj); 25082: return {__i, false}; 25082: } 25082: # 970 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: iterator 25082: insert_or_assign(const_iterator __hint, 25082: const key_type& __k, _Obj&& __obj) 25082: { 25082: iterator __i; 25082: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); 25082: if (__true_hint.second) 25082: { 25082: return emplace_hint(iterator(__true_hint.second), 25082: std::piecewise_construct, 25082: std::forward_as_tuple(__k), 25082: std::forward_as_tuple( 25082: std::forward<_Obj>(__obj))); 25082: } 25082: __i = iterator(__true_hint.first); 25082: (*__i).second = std::forward<_Obj>(__obj); 25082: return __i; 25082: } 25082: 25082: 25082: template 25082: iterator 25082: insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) 25082: { 25082: iterator __i; 25082: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); 25082: if (__true_hint.second) 25082: { 25082: return emplace_hint(iterator(__true_hint.second), 25082: std::piecewise_construct, 25082: std::forward_as_tuple(std::move(__k)), 25082: std::forward_as_tuple( 25082: std::forward<_Obj>(__obj))); 25082: } 25082: __i = iterator(__true_hint.first); 25082: (*__i).second = std::forward<_Obj>(__obj); 25082: return __i; 25082: } 25082: # 1029 "/usr/include/c++/8/bits/stl_map.h" 3 25082: iterator 25082: erase(const_iterator __position) 25082: { return _M_t.erase(__position); } 25082: 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iterator 25082: erase(iterator __position) 25082: { return _M_t.erase(__position); } 25082: # 1066 "/usr/include/c++/8/bits/stl_map.h" 3 25082: size_type 25082: erase(const key_type& __x) 25082: { return _M_t.erase(__x); } 25082: # 1086 "/usr/include/c++/8/bits/stl_map.h" 3 25082: iterator 25082: erase(const_iterator __first, const_iterator __last) 25082: { return _M_t.erase(__first, __last); } 25082: # 1120 "/usr/include/c++/8/bits/stl_map.h" 3 25082: void 25082: swap(map& __x) 25082: noexcept(__is_nothrow_swappable<_Compare>::value) 25082: { _M_t.swap(__x._M_t); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: clear() noexcept 25082: { _M_t.clear(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: key_compare 25082: key_comp() const 25082: { return _M_t.key_comp(); } 25082: 25082: 25082: 25082: 25082: 25082: value_compare 25082: value_comp() const 25082: { return value_compare(_M_t.key_comp()); } 25082: # 1167 "/usr/include/c++/8/bits/stl_map.h" 3 25082: iterator 25082: find(const key_type& __x) 25082: { return _M_t.find(__x); } 25082: 25082: 25082: template 25082: auto 25082: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) 25082: { return _M_t._M_find_tr(__x); } 25082: # 1192 "/usr/include/c++/8/bits/stl_map.h" 3 25082: const_iterator 25082: find(const key_type& __x) const 25082: { return _M_t.find(__x); } 25082: 25082: 25082: template 25082: auto 25082: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) 25082: { return _M_t._M_find_tr(__x); } 25082: # 1213 "/usr/include/c++/8/bits/stl_map.h" 3 25082: size_type 25082: count(const key_type& __x) const 25082: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } 25082: 25082: 25082: template 25082: auto 25082: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) 25082: { return _M_t._M_count_tr(__x); } 25082: # 1237 "/usr/include/c++/8/bits/stl_map.h" 3 25082: iterator 25082: lower_bound(const key_type& __x) 25082: { return _M_t.lower_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: lower_bound(const _Kt& __x) 25082: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) 25082: { return iterator(_M_t._M_lower_bound_tr(__x)); } 25082: # 1262 "/usr/include/c++/8/bits/stl_map.h" 3 25082: const_iterator 25082: lower_bound(const key_type& __x) const 25082: { return _M_t.lower_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: lower_bound(const _Kt& __x) const 25082: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) 25082: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } 25082: # 1282 "/usr/include/c++/8/bits/stl_map.h" 3 25082: iterator 25082: upper_bound(const key_type& __x) 25082: { return _M_t.upper_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: upper_bound(const _Kt& __x) 25082: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 25082: { return iterator(_M_t._M_upper_bound_tr(__x)); } 25082: # 1302 "/usr/include/c++/8/bits/stl_map.h" 3 25082: const_iterator 25082: upper_bound(const key_type& __x) const 25082: { return _M_t.upper_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: upper_bound(const _Kt& __x) const 25082: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) 25082: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } 25082: # 1331 "/usr/include/c++/8/bits/stl_map.h" 3 25082: std::pair 25082: equal_range(const key_type& __x) 25082: { return _M_t.equal_range(__x); } 25082: 25082: 25082: template 25082: auto 25082: equal_range(const _Kt& __x) 25082: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 25082: { return pair(_M_t._M_equal_range_tr(__x)); } 25082: # 1360 "/usr/include/c++/8/bits/stl_map.h" 3 25082: std::pair 25082: equal_range(const key_type& __x) const 25082: { return _M_t.equal_range(__x); } 25082: 25082: 25082: template 25082: auto 25082: equal_range(const _Kt& __x) const 25082: -> decltype(pair( 25082: _M_t._M_equal_range_tr(__x))) 25082: { 25082: return pair( 25082: _M_t._M_equal_range_tr(__x)); 25082: } 25082: 25082: 25082: 25082: template 25082: friend bool 25082: operator==(const map<_K1, _T1, _C1, _A1>&, 25082: const map<_K1, _T1, _C1, _A1>&); 25082: 25082: template 25082: friend bool 25082: operator<(const map<_K1, _T1, _C1, _A1>&, 25082: const map<_K1, _T1, _C1, _A1>&); 25082: }; 25082: 25082: 25082: 25082: 25082: template>, 25082: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: map(_InputIterator, _InputIterator, 25082: _Compare = _Compare(), _Allocator = _Allocator()) 25082: -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, 25082: _Compare, _Allocator>; 25082: 25082: template, 25082: typename _Allocator = allocator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: map(initializer_list>, 25082: _Compare = _Compare(), _Allocator = _Allocator()) 25082: -> map<_Key, _Tp, _Compare, _Allocator>; 25082: 25082: template , 25082: typename = _RequireAllocator<_Allocator>> 25082: map(_InputIterator, _InputIterator, _Allocator) 25082: -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, 25082: less<__iter_key_t<_InputIterator>>, _Allocator>; 25082: 25082: template> 25082: map(initializer_list>, _Allocator) 25082: -> map<_Key, _Tp, less<_Key>, _Allocator>; 25082: # 1432 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: inline bool 25082: operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const map<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return __x._M_t == __y._M_t; } 25082: # 1449 "/usr/include/c++/8/bits/stl_map.h" 3 25082: template 25082: inline bool 25082: operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const map<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return __x._M_t < __y._M_t; } 25082: 25082: 25082: template 25082: inline bool 25082: operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const map<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const map<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return __y < __x; } 25082: 25082: 25082: template 25082: inline bool 25082: operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const map<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return !(__y < __x); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const map<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return !(__x < __y); } 25082: 25082: 25082: template 25082: inline void 25082: swap(map<_Key, _Tp, _Compare, _Alloc>& __x, 25082: map<_Key, _Tp, _Compare, _Alloc>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct 25082: _Rb_tree_merge_helper, 25082: _Cmp2> 25082: { 25082: private: 25082: friend class std::map<_Key, _Val, _Cmp1, _Alloc>; 25082: 25082: static auto& 25082: _S_get_tree(std::map<_Key, _Val, _Cmp2, _Alloc>& __map) 25082: { return __map._M_t; } 25082: 25082: static auto& 25082: _S_get_tree(std::multimap<_Key, _Val, _Cmp2, _Alloc>& __map) 25082: { return __map._M_t; } 25082: }; 25082: 25082: 25082: 25082: } 25082: # 62 "/usr/include/c++/8/map" 2 3 25082: # 1 "/usr/include/c++/8/bits/stl_multimap.h" 1 3 25082: # 64 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: class map; 25082: # 96 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: template , 25082: typename _Alloc = std::allocator > > 25082: class multimap 25082: { 25082: public: 25082: typedef _Key key_type; 25082: typedef _Tp mapped_type; 25082: typedef std::pair value_type; 25082: typedef _Compare key_compare; 25082: typedef _Alloc allocator_type; 25082: 25082: private: 25082: # 121 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: static_assert(is_same::value, 25082: "std::multimap must have the same value_type as its allocator"); 25082: 25082: 25082: public: 25082: class value_compare 25082: : public std::binary_function 25082: { 25082: friend class multimap<_Key, _Tp, _Compare, _Alloc>; 25082: protected: 25082: _Compare comp; 25082: 25082: value_compare(_Compare __c) 25082: : comp(__c) { } 25082: 25082: public: 25082: bool operator()(const value_type& __x, const value_type& __y) const 25082: { return comp(__x.first, __y.first); } 25082: }; 25082: 25082: private: 25082: 25082: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 25082: rebind::other _Pair_alloc_type; 25082: 25082: typedef _Rb_tree, 25082: key_compare, _Pair_alloc_type> _Rep_type; 25082: 25082: _Rep_type _M_t; 25082: 25082: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; 25082: 25082: public: 25082: 25082: 25082: typedef typename _Alloc_traits::pointer pointer; 25082: typedef typename _Alloc_traits::const_pointer const_pointer; 25082: typedef typename _Alloc_traits::reference reference; 25082: typedef typename _Alloc_traits::const_reference const_reference; 25082: typedef typename _Rep_type::iterator iterator; 25082: typedef typename _Rep_type::const_iterator const_iterator; 25082: typedef typename _Rep_type::size_type size_type; 25082: typedef typename _Rep_type::difference_type difference_type; 25082: typedef typename _Rep_type::reverse_iterator reverse_iterator; 25082: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 25082: 25082: 25082: using node_type = typename _Rep_type::node_type; 25082: # 180 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: multimap() = default; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: multimap(const _Compare& __comp, 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Pair_alloc_type(__a)) { } 25082: # 202 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: multimap(const multimap&) = default; 25082: # 211 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: multimap(multimap&&) = default; 25082: # 223 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: multimap(initializer_list __l, 25082: const _Compare& __comp = _Compare(), 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Pair_alloc_type(__a)) 25082: { _M_t._M_insert_equal(__l.begin(), __l.end()); } 25082: 25082: 25082: explicit 25082: multimap(const allocator_type& __a) 25082: : _M_t(_Compare(), _Pair_alloc_type(__a)) { } 25082: 25082: 25082: multimap(const multimap& __m, const allocator_type& __a) 25082: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } 25082: 25082: 25082: multimap(multimap&& __m, const allocator_type& __a) 25082: noexcept(is_nothrow_copy_constructible<_Compare>::value 25082: && _Alloc_traits::_S_always_equal()) 25082: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } 25082: 25082: 25082: multimap(initializer_list __l, const allocator_type& __a) 25082: : _M_t(_Compare(), _Pair_alloc_type(__a)) 25082: { _M_t._M_insert_equal(__l.begin(), __l.end()); } 25082: 25082: 25082: template 25082: multimap(_InputIterator __first, _InputIterator __last, 25082: const allocator_type& __a) 25082: : _M_t(_Compare(), _Pair_alloc_type(__a)) 25082: { _M_t._M_insert_equal(__first, __last); } 25082: # 266 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: template 25082: multimap(_InputIterator __first, _InputIterator __last) 25082: : _M_t() 25082: { _M_t._M_insert_equal(__first, __last); } 25082: # 282 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: template 25082: multimap(_InputIterator __first, _InputIterator __last, 25082: const _Compare& __comp, 25082: const allocator_type& __a = allocator_type()) 25082: : _M_t(__comp, _Pair_alloc_type(__a)) 25082: { _M_t._M_insert_equal(__first, __last); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ~multimap() = default; 25082: # 311 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: multimap& 25082: operator=(const multimap&) = default; 25082: 25082: 25082: multimap& 25082: operator=(multimap&&) = default; 25082: # 329 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: multimap& 25082: operator=(initializer_list __l) 25082: { 25082: _M_t._M_assign_equal(__l.begin(), __l.end()); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: allocator_type 25082: get_allocator() const noexcept 25082: { return allocator_type(_M_t.get_allocator()); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: begin() noexcept 25082: { return _M_t.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: begin() const noexcept 25082: { return _M_t.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: iterator 25082: end() noexcept 25082: { return _M_t.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: end() const noexcept 25082: { return _M_t.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rbegin() noexcept 25082: { return _M_t.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: rbegin() const noexcept 25082: { return _M_t.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: reverse_iterator 25082: rend() noexcept 25082: { return _M_t.rend(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: rend() const noexcept 25082: { return _M_t.rend(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cbegin() const noexcept 25082: { return _M_t.begin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_iterator 25082: cend() const noexcept 25082: { return _M_t.end(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: crbegin() const noexcept 25082: { return _M_t.rbegin(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: const_reverse_iterator 25082: crend() const noexcept 25082: { return _M_t.rend(); } 25082: 25082: 25082: 25082: 25082: bool 25082: empty() const noexcept 25082: { return _M_t.empty(); } 25082: 25082: 25082: size_type 25082: size() const noexcept 25082: { return _M_t.size(); } 25082: 25082: 25082: size_type 25082: max_size() const noexcept 25082: { return _M_t.max_size(); } 25082: # 487 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: template 25082: iterator 25082: emplace(_Args&&... __args) 25082: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } 25082: # 514 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: template 25082: iterator 25082: emplace_hint(const_iterator __pos, _Args&&... __args) 25082: { 25082: return _M_t._M_emplace_hint_equal(__pos, 25082: std::forward<_Args>(__args)...); 25082: } 25082: # 536 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: iterator 25082: insert(const value_type& __x) 25082: { return _M_t._M_insert_equal(__x); } 25082: 25082: 25082: 25082: 25082: iterator 25082: insert(value_type&& __x) 25082: { return _M_t._M_insert_equal(std::move(__x)); } 25082: 25082: template 25082: __enable_if_t::value, iterator> 25082: insert(_Pair&& __x) 25082: { return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); } 25082: # 575 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: iterator 25082: 25082: insert(const_iterator __position, const value_type& __x) 25082: 25082: 25082: 25082: { return _M_t._M_insert_equal_(__position, __x); } 25082: 25082: 25082: 25082: 25082: iterator 25082: insert(const_iterator __position, value_type&& __x) 25082: { return _M_t._M_insert_equal_(__position, std::move(__x)); } 25082: 25082: template 25082: __enable_if_t::value, iterator> 25082: insert(const_iterator __position, _Pair&& __x) 25082: { 25082: return _M_t._M_emplace_hint_equal(__position, 25082: std::forward<_Pair>(__x)); 25082: } 25082: # 609 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: template 25082: void 25082: insert(_InputIterator __first, _InputIterator __last) 25082: { _M_t._M_insert_equal(__first, __last); } 25082: # 622 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: void 25082: insert(initializer_list __l) 25082: { this->insert(__l.begin(), __l.end()); } 25082: 25082: 25082: 25082: 25082: node_type 25082: extract(const_iterator __pos) 25082: { 25082: ; 25082: return _M_t.extract(__pos); 25082: } 25082: 25082: 25082: node_type 25082: extract(const key_type& __x) 25082: { return _M_t.extract(__x); } 25082: 25082: 25082: iterator 25082: insert(node_type&& __nh) 25082: { return _M_t._M_reinsert_node_equal(std::move(__nh)); } 25082: 25082: 25082: iterator 25082: insert(const_iterator __hint, node_type&& __nh) 25082: { return _M_t._M_reinsert_node_hint_equal(__hint, std::move(__nh)); } 25082: 25082: template 25082: friend class std::_Rb_tree_merge_helper; 25082: 25082: template 25082: void 25082: merge(multimap<_Key, _Tp, _C2, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Rb_tree_merge_helper; 25082: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(multimap<_Key, _Tp, _C2, _Alloc>&& __source) 25082: { merge(__source); } 25082: 25082: template 25082: void 25082: merge(map<_Key, _Tp, _C2, _Alloc>& __source) 25082: { 25082: using _Merge_helper = _Rb_tree_merge_helper; 25082: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); 25082: } 25082: 25082: template 25082: void 25082: merge(map<_Key, _Tp, _C2, _Alloc>&& __source) 25082: { merge(__source); } 25082: # 699 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: iterator 25082: erase(const_iterator __position) 25082: { return _M_t.erase(__position); } 25082: 25082: 25082: __attribute ((__abi_tag__ ("cxx11"))) 25082: iterator 25082: erase(iterator __position) 25082: { return _M_t.erase(__position); } 25082: # 736 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: size_type 25082: erase(const key_type& __x) 25082: { return _M_t.erase(__x); } 25082: # 757 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: iterator 25082: erase(const_iterator __first, const_iterator __last) 25082: { return _M_t.erase(__first, __last); } 25082: # 794 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: void 25082: swap(multimap& __x) 25082: noexcept(__is_nothrow_swappable<_Compare>::value) 25082: { _M_t.swap(__x._M_t); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: clear() noexcept 25082: { _M_t.clear(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: key_compare 25082: key_comp() const 25082: { return _M_t.key_comp(); } 25082: 25082: 25082: 25082: 25082: 25082: value_compare 25082: value_comp() const 25082: { return value_compare(_M_t.key_comp()); } 25082: # 840 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: iterator 25082: find(const key_type& __x) 25082: { return _M_t.find(__x); } 25082: 25082: 25082: template 25082: auto 25082: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) 25082: { return _M_t._M_find_tr(__x); } 25082: # 864 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: const_iterator 25082: find(const key_type& __x) const 25082: { return _M_t.find(__x); } 25082: 25082: 25082: template 25082: auto 25082: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) 25082: { return _M_t._M_find_tr(__x); } 25082: # 882 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: size_type 25082: count(const key_type& __x) const 25082: { return _M_t.count(__x); } 25082: 25082: 25082: template 25082: auto 25082: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) 25082: { return _M_t._M_count_tr(__x); } 25082: # 906 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: iterator 25082: lower_bound(const key_type& __x) 25082: { return _M_t.lower_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: lower_bound(const _Kt& __x) 25082: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) 25082: { return iterator(_M_t._M_lower_bound_tr(__x)); } 25082: # 931 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: const_iterator 25082: lower_bound(const key_type& __x) const 25082: { return _M_t.lower_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: lower_bound(const _Kt& __x) const 25082: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) 25082: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } 25082: # 951 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: iterator 25082: upper_bound(const key_type& __x) 25082: { return _M_t.upper_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: upper_bound(const _Kt& __x) 25082: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 25082: { return iterator(_M_t._M_upper_bound_tr(__x)); } 25082: # 971 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: const_iterator 25082: upper_bound(const key_type& __x) const 25082: { return _M_t.upper_bound(__x); } 25082: 25082: 25082: template 25082: auto 25082: upper_bound(const _Kt& __x) const 25082: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) 25082: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } 25082: # 998 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: std::pair 25082: equal_range(const key_type& __x) 25082: { return _M_t.equal_range(__x); } 25082: 25082: 25082: template 25082: auto 25082: equal_range(const _Kt& __x) 25082: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 25082: { return pair(_M_t._M_equal_range_tr(__x)); } 25082: # 1025 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: std::pair 25082: equal_range(const key_type& __x) const 25082: { return _M_t.equal_range(__x); } 25082: 25082: 25082: template 25082: auto 25082: equal_range(const _Kt& __x) const 25082: -> decltype(pair( 25082: _M_t._M_equal_range_tr(__x))) 25082: { 25082: return pair( 25082: _M_t._M_equal_range_tr(__x)); 25082: } 25082: 25082: 25082: 25082: template 25082: friend bool 25082: operator==(const multimap<_K1, _T1, _C1, _A1>&, 25082: const multimap<_K1, _T1, _C1, _A1>&); 25082: 25082: template 25082: friend bool 25082: operator<(const multimap<_K1, _T1, _C1, _A1>&, 25082: const multimap<_K1, _T1, _C1, _A1>&); 25082: }; 25082: 25082: 25082: 25082: template>, 25082: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, 25082: typename = _RequireInputIter<_InputIterator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: multimap(_InputIterator, _InputIterator, 25082: _Compare = _Compare(), _Allocator = _Allocator()) 25082: -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, 25082: _Compare, _Allocator>; 25082: 25082: template, 25082: typename _Allocator = allocator>, 25082: typename = _RequireAllocator<_Allocator>> 25082: multimap(initializer_list>, 25082: _Compare = _Compare(), _Allocator = _Allocator()) 25082: -> multimap<_Key, _Tp, _Compare, _Allocator>; 25082: 25082: template, 25082: typename = _RequireAllocator<_Allocator>> 25082: multimap(_InputIterator, _InputIterator, _Allocator) 25082: -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, 25082: less<__iter_key_t<_InputIterator>>, _Allocator>; 25082: 25082: template> 25082: multimap(initializer_list>, _Allocator) 25082: -> multimap<_Key, _Tp, less<_Key>, _Allocator>; 25082: # 1096 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: template 25082: inline bool 25082: operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return __x._M_t == __y._M_t; } 25082: # 1113 "/usr/include/c++/8/bits/stl_multimap.h" 3 25082: template 25082: inline bool 25082: operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return __x._M_t < __y._M_t; } 25082: 25082: 25082: template 25082: inline bool 25082: operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return !(__x == __y); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return __y < __x; } 25082: 25082: 25082: template 25082: inline bool 25082: operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return !(__y < __x); } 25082: 25082: 25082: template 25082: inline bool 25082: operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 25082: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 25082: { return !(__x < __y); } 25082: 25082: 25082: template 25082: inline void 25082: swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, 25082: multimap<_Key, _Tp, _Compare, _Alloc>& __y) 25082: noexcept(noexcept(__x.swap(__y))) 25082: { __x.swap(__y); } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct 25082: _Rb_tree_merge_helper, 25082: _Cmp2> 25082: { 25082: private: 25082: friend class std::multimap<_Key, _Val, _Cmp1, _Alloc>; 25082: 25082: static auto& 25082: _S_get_tree(std::map<_Key, _Val, _Cmp2, _Alloc>& __map) 25082: { return __map._M_t; } 25082: 25082: static auto& 25082: _S_get_tree(std::multimap<_Key, _Val, _Cmp2, _Alloc>& __map) 25082: { return __map._M_t; } 25082: }; 25082: 25082: 25082: 25082: } 25082: # 63 "/usr/include/c++/8/map" 2 3 25082: # 7 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Block.h" 2 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/BlockInfo.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: class ReadBuffer; 25082: class WriteBuffer; 25082: 25082: 25082: 25082: struct BlockInfo 25082: { 25082: # 37 "/build/clickhouse-18.16.1+ds/dbms/src/Core/BlockInfo.h" 3 4 25082: bool is_overflows = false; Int32 bucket_num = -1; 25082: 25082: 25082: 25082: 25082: void write(WriteBuffer & out) const; 25082: 25082: 25082: void read(ReadBuffer & in); 25082: }; 25082: 25082: 25082: class BlockMissingValues 25082: { 25082: public: 25082: using RowsBitMask = std::vector; 25082: 25082: const RowsBitMask & getDefaultsBitmask(size_t column_idx) const; 25082: void setBit(size_t column_idx, size_t row_idx); 25082: bool empty() const { return rows_mask_by_column_id.empty(); } 25082: size_t size() const { return rows_mask_by_column_id.size(); } 25082: void clear() { rows_mask_by_column_id.clear(); } 25082: 25082: private: 25082: using RowsMaskByColumnId = std::unordered_map; 25082: 25082: 25082: 25082: RowsMaskByColumnId rows_mask_by_column_id; 25082: }; 25082: 25082: } 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Block.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/NamesAndTypes.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/IDataType.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/COWPtr.h" 1 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 1 3 4 25082: # 18 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 3 4 25082: # 1 "/usr/include/boost/assert.hpp" 1 3 4 25082: # 58 "/usr/include/boost/assert.hpp" 3 4 25082: # 1 "/usr/include/assert.h" 1 3 4 25082: # 59 "/usr/include/boost/assert.hpp" 2 3 4 25082: # 19 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/smart_ptr/detail/sp_convertible.hpp" 1 3 4 25082: # 35 "/usr/include/boost/smart_ptr/detail/sp_convertible.hpp" 3 4 25082: namespace boost 25082: { 25082: 25082: namespace detail 25082: { 25082: 25082: template< class Y, class T > struct sp_convertible 25082: { 25082: typedef char (&yes) [1]; 25082: typedef char (&no) [2]; 25082: 25082: static yes f( T* ); 25082: static no f( ... ); 25082: 25082: enum _vt { value = sizeof( (f)( static_cast(0) ) ) == sizeof(yes) }; 25082: }; 25082: 25082: template< class Y, class T > struct sp_convertible< Y, T[] > 25082: { 25082: enum _vt { value = false }; 25082: }; 25082: 25082: template< class Y, class T > struct sp_convertible< Y[], T[] > 25082: { 25082: enum _vt { value = sp_convertible< Y[1], T[1] >::value }; 25082: }; 25082: 25082: template< class Y, std::size_t N, class T > struct sp_convertible< Y[N], T[] > 25082: { 25082: enum _vt { value = sp_convertible< Y[1], T[1] >::value }; 25082: }; 25082: 25082: struct sp_empty 25082: { 25082: }; 25082: 25082: template< bool > struct sp_enable_if_convertible_impl; 25082: 25082: template<> struct sp_enable_if_convertible_impl 25082: { 25082: typedef sp_empty type; 25082: }; 25082: 25082: template<> struct sp_enable_if_convertible_impl 25082: { 25082: }; 25082: 25082: template< class Y, class T > struct sp_enable_if_convertible: public sp_enable_if_convertible_impl< sp_convertible< Y, T >::value > 25082: { 25082: }; 25082: 25082: } 25082: 25082: } 25082: # 21 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 2 3 4 25082: # 1 "/usr/include/boost/smart_ptr/detail/sp_nullptr_t.hpp" 1 3 4 25082: # 23 "/usr/include/boost/smart_ptr/detail/sp_nullptr_t.hpp" 3 4 25082: namespace boost 25082: { 25082: 25082: namespace detail 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef std::nullptr_t sp_nullptr_t; 25082: 25082: 25082: 25082: } 25082: 25082: } 25082: # 22 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 2 3 4 25082: # 1 "/usr/include/boost/smart_ptr/detail/sp_noexcept.hpp" 1 3 4 25082: # 23 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/config/no_tr1/functional.hpp" 1 3 4 25082: # 25 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 2 3 4 25082: # 35 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 3 4 25082: namespace boost 25082: { 25082: # 53 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 3 4 25082: template class intrusive_ptr 25082: { 25082: private: 25082: 25082: typedef intrusive_ptr this_type; 25082: 25082: public: 25082: 25082: typedef T element_type; 25082: 25082: constexpr intrusive_ptr() noexcept : px( 0 ) 25082: { 25082: } 25082: 25082: intrusive_ptr( T * p, bool add_ref = true ): px( p ) 25082: { 25082: if( px != 0 && add_ref ) intrusive_ptr_add_ref( px ); 25082: } 25082: 25082: 25082: 25082: template 25082: 25082: 25082: intrusive_ptr( intrusive_ptr const & rhs, typename boost::detail::sp_enable_if_convertible::type = boost::detail::sp_empty() ) 25082: 25082: 25082: 25082: 25082: 25082: 25082: : px( rhs.get() ) 25082: { 25082: if( px != 0 ) intrusive_ptr_add_ref( px ); 25082: } 25082: 25082: 25082: 25082: intrusive_ptr(intrusive_ptr const & rhs): px( rhs.px ) 25082: { 25082: if( px != 0 ) intrusive_ptr_add_ref( px ); 25082: } 25082: 25082: ~intrusive_ptr() 25082: { 25082: if( px != 0 ) intrusive_ptr_release( px ); 25082: } 25082: 25082: 25082: 25082: template intrusive_ptr & operator=(intrusive_ptr const & rhs) 25082: { 25082: this_type(rhs).swap(*this); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: intrusive_ptr(intrusive_ptr && rhs) noexcept : px( rhs.px ) 25082: { 25082: rhs.px = 0; 25082: } 25082: 25082: intrusive_ptr & operator=(intrusive_ptr && rhs) noexcept 25082: { 25082: this_type( static_cast< intrusive_ptr && >( rhs ) ).swap(*this); 25082: return *this; 25082: } 25082: 25082: template friend class intrusive_ptr; 25082: 25082: template 25082: 25082: 25082: intrusive_ptr(intrusive_ptr && rhs, typename boost::detail::sp_enable_if_convertible::type = boost::detail::sp_empty()) 25082: 25082: 25082: 25082: 25082: 25082: 25082: : px( rhs.px ) 25082: { 25082: rhs.px = 0; 25082: } 25082: 25082: template 25082: intrusive_ptr & operator=(intrusive_ptr && rhs) noexcept 25082: { 25082: this_type( static_cast< intrusive_ptr && >( rhs ) ).swap(*this); 25082: return *this; 25082: } 25082: 25082: 25082: 25082: intrusive_ptr & operator=(intrusive_ptr const & rhs) 25082: { 25082: this_type(rhs).swap(*this); 25082: return *this; 25082: } 25082: 25082: intrusive_ptr & operator=(T * rhs) 25082: { 25082: this_type(rhs).swap(*this); 25082: return *this; 25082: } 25082: 25082: void reset() 25082: { 25082: this_type().swap( *this ); 25082: } 25082: 25082: void reset( T * rhs ) 25082: { 25082: this_type( rhs ).swap( *this ); 25082: } 25082: 25082: void reset( T * rhs, bool add_ref ) 25082: { 25082: this_type( rhs, add_ref ).swap( *this ); 25082: } 25082: 25082: T * get() const noexcept 25082: { 25082: return px; 25082: } 25082: 25082: T * detach() noexcept 25082: { 25082: T * ret = px; 25082: px = 0; 25082: return ret; 25082: } 25082: 25082: T & operator*() const noexcept 25082: { 25082: (static_cast (0)); 25082: return *px; 25082: } 25082: 25082: T * operator->() const noexcept 25082: { 25082: (static_cast (0)); 25082: return px; 25082: } 25082: 25082: 25082: # 1 "/usr/include/boost/smart_ptr/detail/operator_bool.hpp" 1 3 4 25082: # 12 "/usr/include/boost/smart_ptr/detail/operator_bool.hpp" 3 4 25082: explicit operator bool () const noexcept 25082: { 25082: return px != 0; 25082: } 25082: # 61 "/usr/include/boost/smart_ptr/detail/operator_bool.hpp" 3 4 25082: bool operator! () const noexcept 25082: { 25082: return px == 0; 25082: } 25082: # 205 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 2 3 4 25082: 25082: void swap(intrusive_ptr & rhs) noexcept 25082: { 25082: T * tmp = px; 25082: px = rhs.px; 25082: rhs.px = tmp; 25082: } 25082: 25082: private: 25082: 25082: T * px; 25082: }; 25082: 25082: template inline bool operator==(intrusive_ptr const & a, intrusive_ptr const & b) noexcept 25082: { 25082: return a.get() == b.get(); 25082: } 25082: 25082: template inline bool operator!=(intrusive_ptr const & a, intrusive_ptr const & b) noexcept 25082: { 25082: return a.get() != b.get(); 25082: } 25082: 25082: template inline bool operator==(intrusive_ptr const & a, U * b) noexcept 25082: { 25082: return a.get() == b; 25082: } 25082: 25082: template inline bool operator!=(intrusive_ptr const & a, U * b) noexcept 25082: { 25082: return a.get() != b; 25082: } 25082: 25082: template inline bool operator==(T * a, intrusive_ptr const & b) noexcept 25082: { 25082: return a == b.get(); 25082: } 25082: 25082: template inline bool operator!=(T * a, intrusive_ptr const & b) noexcept 25082: { 25082: return a != b.get(); 25082: } 25082: # 261 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 3 4 25082: template inline bool operator==( intrusive_ptr const & p, boost::detail::sp_nullptr_t ) noexcept 25082: { 25082: return p.get() == 0; 25082: } 25082: 25082: template inline bool operator==( boost::detail::sp_nullptr_t, intrusive_ptr const & p ) noexcept 25082: { 25082: return p.get() == 0; 25082: } 25082: 25082: template inline bool operator!=( intrusive_ptr const & p, boost::detail::sp_nullptr_t ) noexcept 25082: { 25082: return p.get() != 0; 25082: } 25082: 25082: template inline bool operator!=( boost::detail::sp_nullptr_t, intrusive_ptr const & p ) noexcept 25082: { 25082: return p.get() != 0; 25082: } 25082: 25082: 25082: 25082: template inline bool operator<(intrusive_ptr const & a, intrusive_ptr const & b) noexcept 25082: { 25082: return std::less()(a.get(), b.get()); 25082: } 25082: 25082: template void swap(intrusive_ptr & lhs, intrusive_ptr & rhs) noexcept 25082: { 25082: lhs.swap(rhs); 25082: } 25082: 25082: 25082: 25082: template T * get_pointer(intrusive_ptr const & p) noexcept 25082: { 25082: return p.get(); 25082: } 25082: 25082: template intrusive_ptr static_pointer_cast(intrusive_ptr const & p) 25082: { 25082: return static_cast(p.get()); 25082: } 25082: 25082: template intrusive_ptr const_pointer_cast(intrusive_ptr const & p) 25082: { 25082: return const_cast(p.get()); 25082: } 25082: 25082: template intrusive_ptr dynamic_pointer_cast(intrusive_ptr const & p) 25082: { 25082: return dynamic_cast(p.get()); 25082: } 25082: # 337 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 3 4 25082: template std::basic_ostream & operator<< (std::basic_ostream & os, intrusive_ptr const & p) 25082: 25082: { 25082: os << p.get(); 25082: return os; 25082: } 25082: # 352 "/usr/include/boost/smart_ptr/intrusive_ptr.hpp" 3 4 25082: template< class T > struct hash; 25082: 25082: template< class T > std::size_t hash_value( boost::intrusive_ptr const & p ) noexcept 25082: { 25082: return boost::hash< T* >()( p.get() ); 25082: } 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Common/COWPtr.h" 2 3 4 25082: # 1 "/usr/include/boost/smart_ptr/intrusive_ref_counter.hpp" 1 3 4 25082: # 19 "/usr/include/boost/smart_ptr/intrusive_ref_counter.hpp" 3 4 25082: # 1 "/usr/include/boost/smart_ptr/detail/atomic_count.hpp" 1 3 4 25082: # 47 "/usr/include/boost/smart_ptr/detail/atomic_count.hpp" 3 4 25082: # 1 "/usr/include/boost/smart_ptr/detail/sp_has_sync.hpp" 1 3 4 25082: # 48 "/usr/include/boost/smart_ptr/detail/atomic_count.hpp" 2 3 4 25082: # 77 "/usr/include/boost/smart_ptr/detail/atomic_count.hpp" 3 4 25082: # 1 "/usr/include/boost/smart_ptr/detail/atomic_count_std_atomic.hpp" 1 3 4 25082: # 16 "/usr/include/boost/smart_ptr/detail/atomic_count_std_atomic.hpp" 3 4 25082: # 1 "/usr/include/c++/8/atomic" 1 3 4 25082: # 35 "/usr/include/c++/8/atomic" 3 4 25082: 25082: # 36 "/usr/include/c++/8/atomic" 3 25082: # 44 "/usr/include/c++/8/atomic" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 57 "/usr/include/c++/8/atomic" 3 25082: template 25082: struct atomic; 25082: 25082: 25082: 25082: template<> 25082: struct atomic 25082: { 25082: private: 25082: __atomic_base _M_base; 25082: 25082: public: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(bool __i) noexcept : _M_base(__i) { } 25082: 25082: bool 25082: operator=(bool __i) noexcept 25082: { return _M_base.operator=(__i); } 25082: 25082: bool 25082: operator=(bool __i) volatile noexcept 25082: { return _M_base.operator=(__i); } 25082: 25082: operator bool() const noexcept 25082: { return _M_base.load(); } 25082: 25082: operator bool() const volatile noexcept 25082: { return _M_base.load(); } 25082: 25082: bool 25082: is_lock_free() const noexcept { return _M_base.is_lock_free(); } 25082: 25082: bool 25082: is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: 25082: void 25082: store(bool __i, memory_order __m = memory_order_seq_cst) noexcept 25082: { _M_base.store(__i, __m); } 25082: 25082: void 25082: store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { _M_base.store(__i, __m); } 25082: 25082: bool 25082: load(memory_order __m = memory_order_seq_cst) const noexcept 25082: { return _M_base.load(__m); } 25082: 25082: bool 25082: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 25082: { return _M_base.load(__m); } 25082: 25082: bool 25082: exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept 25082: { return _M_base.exchange(__i, __m); } 25082: 25082: bool 25082: exchange(bool __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return _M_base.exchange(__i, __m); } 25082: 25082: bool 25082: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, 25082: memory_order __m2) noexcept 25082: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } 25082: 25082: bool 25082: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, 25082: memory_order __m2) volatile noexcept 25082: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } 25082: 25082: bool 25082: compare_exchange_weak(bool& __i1, bool __i2, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } 25082: 25082: bool 25082: compare_exchange_weak(bool& __i1, bool __i2, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } 25082: 25082: bool 25082: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, 25082: memory_order __m2) noexcept 25082: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } 25082: 25082: bool 25082: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, 25082: memory_order __m2) volatile noexcept 25082: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } 25082: 25082: bool 25082: compare_exchange_strong(bool& __i1, bool __i2, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } 25082: 25082: bool 25082: compare_exchange_strong(bool& __i1, bool __i2, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct atomic 25082: { 25082: private: 25082: 25082: static constexpr int _S_min_alignment 25082: = (sizeof(_Tp) & (sizeof(_Tp) - 1)) || sizeof(_Tp) > 16 25082: ? 0 : sizeof(_Tp); 25082: 25082: static constexpr int _S_alignment 25082: = _S_min_alignment > alignof(_Tp) ? _S_min_alignment : alignof(_Tp); 25082: 25082: alignas(_S_alignment) _Tp _M_i; 25082: 25082: static_assert(__is_trivially_copyable(_Tp), 25082: "std::atomic requires a trivially copyable type"); 25082: 25082: static_assert(sizeof(_Tp) > 0, 25082: "Incomplete or zero-sized types are not supported"); 25082: 25082: public: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(_Tp __i) noexcept : _M_i(__i) { } 25082: 25082: operator _Tp() const noexcept 25082: { return load(); } 25082: 25082: operator _Tp() const volatile noexcept 25082: { return load(); } 25082: 25082: _Tp 25082: operator=(_Tp __i) noexcept 25082: { store(__i); return __i; } 25082: 25082: _Tp 25082: operator=(_Tp __i) volatile noexcept 25082: { store(__i); return __i; } 25082: 25082: bool 25082: is_lock_free() const noexcept 25082: { 25082: 25082: return __atomic_is_lock_free(sizeof(_M_i), 25082: reinterpret_cast(-__alignof(_M_i))); 25082: } 25082: 25082: bool 25082: is_lock_free() const volatile noexcept 25082: { 25082: 25082: return __atomic_is_lock_free(sizeof(_M_i), 25082: reinterpret_cast(-__alignof(_M_i))); 25082: } 25082: 25082: 25082: static constexpr bool is_always_lock_free 25082: = __atomic_always_lock_free(sizeof(_M_i), 0); 25082: 25082: 25082: void 25082: store(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 25082: { __atomic_store(std::__addressof(_M_i), std::__addressof(__i), __m); } 25082: 25082: void 25082: store(_Tp __i, memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { __atomic_store(std::__addressof(_M_i), std::__addressof(__i), __m); } 25082: 25082: _Tp 25082: load(memory_order __m = memory_order_seq_cst) const noexcept 25082: { 25082: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 25082: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 25082: __atomic_load(std::__addressof(_M_i), __ptr, __m); 25082: return *__ptr; 25082: } 25082: 25082: _Tp 25082: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 25082: { 25082: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 25082: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 25082: __atomic_load(std::__addressof(_M_i), __ptr, __m); 25082: return *__ptr; 25082: } 25082: 25082: _Tp 25082: exchange(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 25082: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 25082: __atomic_exchange(std::__addressof(_M_i), std::__addressof(__i), 25082: __ptr, __m); 25082: return *__ptr; 25082: } 25082: 25082: _Tp 25082: exchange(_Tp __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 25082: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 25082: __atomic_exchange(std::__addressof(_M_i), std::__addressof(__i), 25082: __ptr, __m); 25082: return *__ptr; 25082: } 25082: 25082: bool 25082: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, 25082: memory_order __f) noexcept 25082: { 25082: return __atomic_compare_exchange(std::__addressof(_M_i), 25082: std::__addressof(__e), 25082: std::__addressof(__i), 25082: true, __s, __f); 25082: } 25082: 25082: bool 25082: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, 25082: memory_order __f) volatile noexcept 25082: { 25082: return __atomic_compare_exchange(std::__addressof(_M_i), 25082: std::__addressof(__e), 25082: std::__addressof(__i), 25082: true, __s, __f); 25082: } 25082: 25082: bool 25082: compare_exchange_weak(_Tp& __e, _Tp __i, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return compare_exchange_weak(__e, __i, __m, 25082: __cmpexch_failure_order(__m)); } 25082: 25082: bool 25082: compare_exchange_weak(_Tp& __e, _Tp __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return compare_exchange_weak(__e, __i, __m, 25082: __cmpexch_failure_order(__m)); } 25082: 25082: bool 25082: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, 25082: memory_order __f) noexcept 25082: { 25082: return __atomic_compare_exchange(std::__addressof(_M_i), 25082: std::__addressof(__e), 25082: std::__addressof(__i), 25082: false, __s, __f); 25082: } 25082: 25082: bool 25082: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, 25082: memory_order __f) volatile noexcept 25082: { 25082: return __atomic_compare_exchange(std::__addressof(_M_i), 25082: std::__addressof(__e), 25082: std::__addressof(__i), 25082: false, __s, __f); 25082: } 25082: 25082: bool 25082: compare_exchange_strong(_Tp& __e, _Tp __i, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return compare_exchange_strong(__e, __i, __m, 25082: __cmpexch_failure_order(__m)); } 25082: 25082: bool 25082: compare_exchange_strong(_Tp& __e, _Tp __i, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return compare_exchange_strong(__e, __i, __m, 25082: __cmpexch_failure_order(__m)); } 25082: }; 25082: 25082: 25082: 25082: template 25082: struct atomic<_Tp*> 25082: { 25082: typedef _Tp* __pointer_type; 25082: typedef __atomic_base<_Tp*> __base_type; 25082: __base_type _M_b; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__pointer_type __p) noexcept : _M_b(__p) { } 25082: 25082: operator __pointer_type() const noexcept 25082: { return __pointer_type(_M_b); } 25082: 25082: operator __pointer_type() const volatile noexcept 25082: { return __pointer_type(_M_b); } 25082: 25082: __pointer_type 25082: operator=(__pointer_type __p) noexcept 25082: { return _M_b.operator=(__p); } 25082: 25082: __pointer_type 25082: operator=(__pointer_type __p) volatile noexcept 25082: { return _M_b.operator=(__p); } 25082: 25082: __pointer_type 25082: operator++(int) noexcept 25082: { return _M_b++; } 25082: 25082: __pointer_type 25082: operator++(int) volatile noexcept 25082: { return _M_b++; } 25082: 25082: __pointer_type 25082: operator--(int) noexcept 25082: { return _M_b--; } 25082: 25082: __pointer_type 25082: operator--(int) volatile noexcept 25082: { return _M_b--; } 25082: 25082: __pointer_type 25082: operator++() noexcept 25082: { return ++_M_b; } 25082: 25082: __pointer_type 25082: operator++() volatile noexcept 25082: { return ++_M_b; } 25082: 25082: __pointer_type 25082: operator--() noexcept 25082: { return --_M_b; } 25082: 25082: __pointer_type 25082: operator--() volatile noexcept 25082: { return --_M_b; } 25082: 25082: __pointer_type 25082: operator+=(ptrdiff_t __d) noexcept 25082: { return _M_b.operator+=(__d); } 25082: 25082: __pointer_type 25082: operator+=(ptrdiff_t __d) volatile noexcept 25082: { return _M_b.operator+=(__d); } 25082: 25082: __pointer_type 25082: operator-=(ptrdiff_t __d) noexcept 25082: { return _M_b.operator-=(__d); } 25082: 25082: __pointer_type 25082: operator-=(ptrdiff_t __d) volatile noexcept 25082: { return _M_b.operator-=(__d); } 25082: 25082: bool 25082: is_lock_free() const noexcept 25082: { return _M_b.is_lock_free(); } 25082: 25082: bool 25082: is_lock_free() const volatile noexcept 25082: { return _M_b.is_lock_free(); } 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: 25082: void 25082: store(__pointer_type __p, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return _M_b.store(__p, __m); } 25082: 25082: void 25082: store(__pointer_type __p, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return _M_b.store(__p, __m); } 25082: 25082: __pointer_type 25082: load(memory_order __m = memory_order_seq_cst) const noexcept 25082: { return _M_b.load(__m); } 25082: 25082: __pointer_type 25082: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 25082: { return _M_b.load(__m); } 25082: 25082: __pointer_type 25082: exchange(__pointer_type __p, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return _M_b.exchange(__p, __m); } 25082: 25082: __pointer_type 25082: exchange(__pointer_type __p, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return _M_b.exchange(__p, __m); } 25082: 25082: bool 25082: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 25082: memory_order __m1, memory_order __m2) noexcept 25082: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 25082: 25082: bool 25082: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 25082: memory_order __m1, 25082: memory_order __m2) volatile noexcept 25082: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 25082: 25082: bool 25082: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: return compare_exchange_weak(__p1, __p2, __m, 25082: __cmpexch_failure_order(__m)); 25082: } 25082: 25082: bool 25082: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: return compare_exchange_weak(__p1, __p2, __m, 25082: __cmpexch_failure_order(__m)); 25082: } 25082: 25082: bool 25082: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 25082: memory_order __m1, memory_order __m2) noexcept 25082: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 25082: 25082: bool 25082: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 25082: memory_order __m1, 25082: memory_order __m2) volatile noexcept 25082: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 25082: 25082: bool 25082: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { 25082: return _M_b.compare_exchange_strong(__p1, __p2, __m, 25082: __cmpexch_failure_order(__m)); 25082: } 25082: 25082: bool 25082: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { 25082: return _M_b.compare_exchange_strong(__p1, __p2, __m, 25082: __cmpexch_failure_order(__m)); 25082: } 25082: 25082: __pointer_type 25082: fetch_add(ptrdiff_t __d, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return _M_b.fetch_add(__d, __m); } 25082: 25082: __pointer_type 25082: fetch_add(ptrdiff_t __d, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return _M_b.fetch_add(__d, __m); } 25082: 25082: __pointer_type 25082: fetch_sub(ptrdiff_t __d, 25082: memory_order __m = memory_order_seq_cst) noexcept 25082: { return _M_b.fetch_sub(__d, __m); } 25082: 25082: __pointer_type 25082: fetch_sub(ptrdiff_t __d, 25082: memory_order __m = memory_order_seq_cst) volatile noexcept 25082: { return _M_b.fetch_sub(__d, __m); } 25082: }; 25082: 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef char __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef signed char __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept= default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef unsigned char __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept= default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef short __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef unsigned short __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef int __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef unsigned int __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef long __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef unsigned long __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef long long __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef unsigned long long __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef wchar_t __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef char16_t __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: template<> 25082: struct atomic : __atomic_base 25082: { 25082: typedef char32_t __integral_type; 25082: typedef __atomic_base __base_type; 25082: 25082: atomic() noexcept = default; 25082: ~atomic() noexcept = default; 25082: atomic(const atomic&) = delete; 25082: atomic& operator=(const atomic&) = delete; 25082: atomic& operator=(const atomic&) volatile = delete; 25082: 25082: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 25082: 25082: using __base_type::operator __integral_type; 25082: using __base_type::operator=; 25082: 25082: 25082: static constexpr bool is_always_lock_free = 2 == 2; 25082: 25082: }; 25082: 25082: 25082: 25082: typedef atomic atomic_bool; 25082: 25082: 25082: typedef atomic atomic_char; 25082: 25082: 25082: typedef atomic atomic_schar; 25082: 25082: 25082: typedef atomic atomic_uchar; 25082: 25082: 25082: typedef atomic atomic_short; 25082: 25082: 25082: typedef atomic atomic_ushort; 25082: 25082: 25082: typedef atomic atomic_int; 25082: 25082: 25082: typedef atomic atomic_uint; 25082: 25082: 25082: typedef atomic atomic_long; 25082: 25082: 25082: typedef atomic atomic_ulong; 25082: 25082: 25082: typedef atomic atomic_llong; 25082: 25082: 25082: typedef atomic atomic_ullong; 25082: 25082: 25082: typedef atomic atomic_wchar_t; 25082: 25082: 25082: typedef atomic atomic_char16_t; 25082: 25082: 25082: typedef atomic atomic_char32_t; 25082: 25082: 25082: 25082: 25082: 25082: 25082: typedef atomic atomic_int8_t; 25082: 25082: 25082: typedef atomic atomic_uint8_t; 25082: 25082: 25082: typedef atomic atomic_int16_t; 25082: 25082: 25082: typedef atomic atomic_uint16_t; 25082: 25082: 25082: typedef atomic atomic_int32_t; 25082: 25082: 25082: typedef atomic atomic_uint32_t; 25082: 25082: 25082: typedef atomic atomic_int64_t; 25082: 25082: 25082: typedef atomic atomic_uint64_t; 25082: 25082: 25082: 25082: typedef atomic atomic_int_least8_t; 25082: 25082: 25082: typedef atomic atomic_uint_least8_t; 25082: 25082: 25082: typedef atomic atomic_int_least16_t; 25082: 25082: 25082: typedef atomic atomic_uint_least16_t; 25082: 25082: 25082: typedef atomic atomic_int_least32_t; 25082: 25082: 25082: typedef atomic atomic_uint_least32_t; 25082: 25082: 25082: typedef atomic atomic_int_least64_t; 25082: 25082: 25082: typedef atomic atomic_uint_least64_t; 25082: 25082: 25082: 25082: typedef atomic atomic_int_fast8_t; 25082: 25082: 25082: typedef atomic atomic_uint_fast8_t; 25082: 25082: 25082: typedef atomic atomic_int_fast16_t; 25082: 25082: 25082: typedef atomic atomic_uint_fast16_t; 25082: 25082: 25082: typedef atomic atomic_int_fast32_t; 25082: 25082: 25082: typedef atomic atomic_uint_fast32_t; 25082: 25082: 25082: typedef atomic atomic_int_fast64_t; 25082: 25082: 25082: typedef atomic atomic_uint_fast64_t; 25082: 25082: 25082: 25082: 25082: typedef atomic atomic_intptr_t; 25082: 25082: 25082: typedef atomic atomic_uintptr_t; 25082: 25082: 25082: typedef atomic atomic_size_t; 25082: 25082: 25082: typedef atomic atomic_ptrdiff_t; 25082: 25082: 25082: 25082: typedef atomic atomic_intmax_t; 25082: 25082: 25082: typedef atomic atomic_uintmax_t; 25082: 25082: 25082: 25082: inline bool 25082: atomic_flag_test_and_set_explicit(atomic_flag* __a, 25082: memory_order __m) noexcept 25082: { return __a->test_and_set(__m); } 25082: 25082: inline bool 25082: atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, 25082: memory_order __m) noexcept 25082: { return __a->test_and_set(__m); } 25082: 25082: inline void 25082: atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept 25082: { __a->clear(__m); } 25082: 25082: inline void 25082: atomic_flag_clear_explicit(volatile atomic_flag* __a, 25082: memory_order __m) noexcept 25082: { __a->clear(__m); } 25082: 25082: inline bool 25082: atomic_flag_test_and_set(atomic_flag* __a) noexcept 25082: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } 25082: 25082: inline bool 25082: atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept 25082: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } 25082: 25082: inline void 25082: atomic_flag_clear(atomic_flag* __a) noexcept 25082: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } 25082: 25082: inline void 25082: atomic_flag_clear(volatile atomic_flag* __a) noexcept 25082: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } 25082: 25082: 25082: 25082: template 25082: inline bool 25082: atomic_is_lock_free(const atomic<_ITp>* __a) noexcept 25082: { return __a->is_lock_free(); } 25082: 25082: template 25082: inline bool 25082: atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept 25082: { return __a->is_lock_free(); } 25082: 25082: template 25082: inline void 25082: atomic_init(atomic<_ITp>* __a, _ITp __i) noexcept 25082: { __a->store(__i, memory_order_relaxed); } 25082: 25082: template 25082: inline void 25082: atomic_init(volatile atomic<_ITp>* __a, _ITp __i) noexcept 25082: { __a->store(__i, memory_order_relaxed); } 25082: 25082: template 25082: inline void 25082: atomic_store_explicit(atomic<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { __a->store(__i, __m); } 25082: 25082: template 25082: inline void 25082: atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { __a->store(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept 25082: { return __a->load(__m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_load_explicit(const volatile atomic<_ITp>* __a, 25082: memory_order __m) noexcept 25082: { return __a->load(__m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_exchange_explicit(atomic<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->exchange(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_exchange_explicit(volatile atomic<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->exchange(__i, __m); } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, 25082: _ITp* __i1, _ITp __i2, 25082: memory_order __m1, 25082: memory_order __m2) noexcept 25082: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, 25082: _ITp* __i1, _ITp __i2, 25082: memory_order __m1, 25082: memory_order __m2) noexcept 25082: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, 25082: _ITp* __i1, _ITp __i2, 25082: memory_order __m1, 25082: memory_order __m2) noexcept 25082: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, 25082: _ITp* __i1, _ITp __i2, 25082: memory_order __m1, 25082: memory_order __m2) noexcept 25082: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } 25082: 25082: 25082: template 25082: inline void 25082: atomic_store(atomic<_ITp>* __a, _ITp __i) noexcept 25082: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline void 25082: atomic_store(volatile atomic<_ITp>* __a, _ITp __i) noexcept 25082: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_load(const atomic<_ITp>* __a) noexcept 25082: { return atomic_load_explicit(__a, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_load(const volatile atomic<_ITp>* __a) noexcept 25082: { return atomic_load_explicit(__a, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_exchange(atomic<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_exchange(volatile atomic<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_weak(atomic<_ITp>* __a, 25082: _ITp* __i1, _ITp __i2) noexcept 25082: { 25082: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, 25082: memory_order_seq_cst, 25082: memory_order_seq_cst); 25082: } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, 25082: _ITp* __i1, _ITp __i2) noexcept 25082: { 25082: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, 25082: memory_order_seq_cst, 25082: memory_order_seq_cst); 25082: } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_strong(atomic<_ITp>* __a, 25082: _ITp* __i1, _ITp __i2) noexcept 25082: { 25082: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, 25082: memory_order_seq_cst, 25082: memory_order_seq_cst); 25082: } 25082: 25082: template 25082: inline bool 25082: atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, 25082: _ITp* __i1, _ITp __i2) noexcept 25082: { 25082: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, 25082: memory_order_seq_cst, 25082: memory_order_seq_cst); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_add_explicit(__atomic_base<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->fetch_add(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_add_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->fetch_add(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_sub_explicit(__atomic_base<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->fetch_sub(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_sub_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->fetch_sub(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->fetch_and(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->fetch_and(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->fetch_or(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->fetch_or(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->fetch_xor(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, 25082: memory_order __m) noexcept 25082: { return __a->fetch_xor(__i, __m); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_add(__atomic_base<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_add(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_sub(__atomic_base<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_sub(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_and(__atomic_base<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_and(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_or(__atomic_base<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_or(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_xor(__atomic_base<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: template 25082: inline _ITp 25082: atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept 25082: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } 25082: 25082: 25082: 25082: template 25082: inline _ITp* 25082: atomic_fetch_add_explicit(atomic<_ITp*>* __a, ptrdiff_t __d, 25082: memory_order __m) noexcept 25082: { return __a->fetch_add(__d, __m); } 25082: 25082: template 25082: inline _ITp* 25082: atomic_fetch_add_explicit(volatile atomic<_ITp*>* __a, ptrdiff_t __d, 25082: memory_order __m) noexcept 25082: { return __a->fetch_add(__d, __m); } 25082: 25082: template 25082: inline _ITp* 25082: atomic_fetch_add(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept 25082: { return __a->fetch_add(__d); } 25082: 25082: template 25082: inline _ITp* 25082: atomic_fetch_add(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept 25082: { return __a->fetch_add(__d); } 25082: 25082: template 25082: inline _ITp* 25082: atomic_fetch_sub_explicit(volatile atomic<_ITp*>* __a, 25082: ptrdiff_t __d, memory_order __m) noexcept 25082: { return __a->fetch_sub(__d, __m); } 25082: 25082: template 25082: inline _ITp* 25082: atomic_fetch_sub_explicit(atomic<_ITp*>* __a, ptrdiff_t __d, 25082: memory_order __m) noexcept 25082: { return __a->fetch_sub(__d, __m); } 25082: 25082: template 25082: inline _ITp* 25082: atomic_fetch_sub(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept 25082: { return __a->fetch_sub(__d); } 25082: 25082: template 25082: inline _ITp* 25082: atomic_fetch_sub(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept 25082: { return __a->fetch_sub(__d); } 25082: 25082: 25082: 25082: } 25082: # 17 "/usr/include/boost/smart_ptr/detail/atomic_count_std_atomic.hpp" 2 3 4 25082: 25082: 25082: namespace boost 25082: { 25082: 25082: namespace detail 25082: { 25082: 25082: class atomic_count 25082: { 25082: public: 25082: 25082: explicit atomic_count( long v ): value_( v ) 25082: { 25082: } 25082: 25082: long operator++() 25082: { 25082: return value_.fetch_add( 1, std::memory_order_acq_rel ) + 1; 25082: } 25082: 25082: long operator--() 25082: { 25082: return value_.fetch_sub( 1, std::memory_order_acq_rel ) - 1; 25082: } 25082: 25082: operator long() const 25082: { 25082: return value_.load( std::memory_order_acquire ); 25082: } 25082: 25082: private: 25082: 25082: atomic_count(atomic_count const &); 25082: atomic_count & operator=(atomic_count const &); 25082: 25082: std::atomic_int_least32_t value_; 25082: }; 25082: 25082: } 25082: 25082: } 25082: # 78 "/usr/include/boost/smart_ptr/detail/atomic_count.hpp" 2 3 4 25082: # 20 "/usr/include/boost/smart_ptr/intrusive_ref_counter.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: # 34 "/usr/include/boost/smart_ptr/intrusive_ref_counter.hpp" 3 4 25082: namespace boost { 25082: 25082: namespace sp_adl_block { 25082: # 45 "/usr/include/boost/smart_ptr/intrusive_ref_counter.hpp" 3 4 25082: struct thread_unsafe_counter 25082: { 25082: typedef unsigned int type; 25082: 25082: static unsigned int load(unsigned int const& counter) noexcept 25082: { 25082: return counter; 25082: } 25082: 25082: static void increment(unsigned int& counter) noexcept 25082: { 25082: ++counter; 25082: } 25082: 25082: static unsigned int decrement(unsigned int& counter) noexcept 25082: { 25082: return --counter; 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct thread_safe_counter 25082: { 25082: typedef boost::detail::atomic_count type; 25082: 25082: static unsigned int load(boost::detail::atomic_count const& counter) noexcept 25082: { 25082: return static_cast< unsigned int >(static_cast< long >(counter)); 25082: } 25082: 25082: static void increment(boost::detail::atomic_count& counter) noexcept 25082: { 25082: ++counter; 25082: } 25082: 25082: static unsigned int decrement(boost::detail::atomic_count& counter) noexcept 25082: { 25082: return static_cast< unsigned int >(--counter); 25082: } 25082: }; 25082: 25082: template< typename DerivedT, typename CounterPolicyT = thread_safe_counter > 25082: class intrusive_ref_counter; 25082: 25082: template< typename DerivedT, typename CounterPolicyT > 25082: void intrusive_ptr_add_ref(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) noexcept; 25082: template< typename DerivedT, typename CounterPolicyT > 25082: void intrusive_ptr_release(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) noexcept; 25082: # 110 "/usr/include/boost/smart_ptr/intrusive_ref_counter.hpp" 3 4 25082: template< typename DerivedT, typename CounterPolicyT > 25082: class intrusive_ref_counter 25082: { 25082: private: 25082: 25082: typedef typename CounterPolicyT::type counter_type; 25082: 25082: mutable counter_type m_ref_counter; 25082: 25082: public: 25082: 25082: 25082: 25082: 25082: 25082: intrusive_ref_counter() noexcept : m_ref_counter(0) 25082: { 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: intrusive_ref_counter(intrusive_ref_counter const&) noexcept : m_ref_counter(0) 25082: { 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: intrusive_ref_counter& operator= (intrusive_ref_counter const&) noexcept { return *this; } 25082: 25082: 25082: 25082: 25082: unsigned int use_count() const noexcept 25082: { 25082: return CounterPolicyT::load(m_ref_counter); 25082: } 25082: 25082: protected: 25082: 25082: 25082: 25082: ~intrusive_ref_counter() = default; 25082: 25082: friend void intrusive_ptr_add_ref< DerivedT, CounterPolicyT >(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) noexcept; 25082: friend void intrusive_ptr_release< DerivedT, CounterPolicyT >(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) noexcept; 25082: }; 25082: 25082: template< typename DerivedT, typename CounterPolicyT > 25082: inline void intrusive_ptr_add_ref(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) noexcept 25082: { 25082: CounterPolicyT::increment(p->m_ref_counter); 25082: } 25082: 25082: template< typename DerivedT, typename CounterPolicyT > 25082: inline void intrusive_ptr_release(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) noexcept 25082: { 25082: if (CounterPolicyT::decrement(p->m_ref_counter) == 0) 25082: delete static_cast< const DerivedT* >(p); 25082: } 25082: 25082: } 25082: 25082: using sp_adl_block::intrusive_ref_counter; 25082: using sp_adl_block::thread_unsafe_counter; 25082: using sp_adl_block::thread_safe_counter; 25082: 25082: } 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/Common/COWPtr.h" 2 3 4 25082: # 75 "/build/clickhouse-18.16.1+ds/dbms/src/Common/COWPtr.h" 3 4 25082: template 25082: class COWPtr : public boost::intrusive_ref_counter 25082: { 25082: private: 25082: Derived * derived() { return static_cast(this); } 25082: const Derived * derived() const { return static_cast(this); } 25082: 25082: template 25082: class IntrusivePtr : public boost::intrusive_ptr 25082: { 25082: public: 25082: using boost::intrusive_ptr::intrusive_ptr; 25082: 25082: T & operator*() const & { return boost::intrusive_ptr::operator*(); } 25082: T && operator*() const && { return const_cast::type &&>(*boost::intrusive_ptr::get()); } 25082: }; 25082: 25082: protected: 25082: template 25082: class mutable_ptr : public IntrusivePtr 25082: { 25082: private: 25082: using Base = IntrusivePtr; 25082: 25082: template friend class COWPtr; 25082: template friend class COWPtrHelper; 25082: 25082: explicit mutable_ptr(T * ptr) : Base(ptr) {} 25082: 25082: public: 25082: 25082: mutable_ptr(const mutable_ptr &) = delete; 25082: 25082: 25082: mutable_ptr(mutable_ptr &&) = default; 25082: mutable_ptr & operator=(mutable_ptr &&) = default; 25082: 25082: 25082: template 25082: mutable_ptr(mutable_ptr && other) : Base(std::move(other)) {} 25082: 25082: mutable_ptr() = default; 25082: 25082: mutable_ptr(const std::nullptr_t *) {} 25082: }; 25082: 25082: public: 25082: using MutablePtr = mutable_ptr; 25082: 25082: protected: 25082: template 25082: class immutable_ptr : public IntrusivePtr 25082: { 25082: private: 25082: using Base = IntrusivePtr; 25082: 25082: template friend class COWPtr; 25082: template friend class COWPtrHelper; 25082: 25082: explicit immutable_ptr(const T * ptr) : Base(ptr) {} 25082: 25082: public: 25082: 25082: immutable_ptr(const immutable_ptr &) = default; 25082: immutable_ptr & operator=(const immutable_ptr &) = default; 25082: 25082: template 25082: immutable_ptr(const immutable_ptr & other) : Base(other) {} 25082: 25082: 25082: immutable_ptr(immutable_ptr &&) = default; 25082: immutable_ptr & operator=(immutable_ptr &&) = default; 25082: 25082: 25082: template 25082: immutable_ptr(immutable_ptr && other) : Base(std::move(other)) {} 25082: 25082: 25082: template 25082: immutable_ptr(mutable_ptr && other) : Base(std::move(other)) {} 25082: 25082: 25082: template 25082: immutable_ptr(const mutable_ptr &) = delete; 25082: 25082: immutable_ptr() = default; 25082: 25082: immutable_ptr(const std::nullptr_t *) {} 25082: }; 25082: 25082: public: 25082: using Ptr = immutable_ptr; 25082: 25082: template 25082: static MutablePtr create(Args &&... args) { return MutablePtr(new Derived(std::forward(args)...)); } 25082: 25082: template 25082: static MutablePtr create(std::initializer_list && arg) { return create(std::forward>(arg)); } 25082: 25082: public: 25082: Ptr getPtr() const { return static_cast(derived()); } 25082: MutablePtr getPtr() { return static_cast(derived()); } 25082: 25082: MutablePtr mutate() const 25082: { 25082: if (this->use_count() > 1) 25082: return derived()->clone(); 25082: else 25082: return assumeMutable(); 25082: } 25082: 25082: MutablePtr assumeMutable() const 25082: { 25082: return const_cast(this)->getPtr(); 25082: } 25082: 25082: Derived & assumeMutableRef() const 25082: { 25082: return const_cast(*derived()); 25082: } 25082: }; 25082: # 221 "/build/clickhouse-18.16.1+ds/dbms/src/Common/COWPtr.h" 3 4 25082: template 25082: class COWPtrHelper : public Base 25082: { 25082: private: 25082: Derived * derived() { return static_cast(this); } 25082: const Derived * derived() const { return static_cast(this); } 25082: 25082: public: 25082: using Ptr = typename Base::template immutable_ptr; 25082: using MutablePtr = typename Base::template mutable_ptr; 25082: 25082: template 25082: static MutablePtr create(Args &&... args) { return MutablePtr(new Derived(std::forward(args)...)); } 25082: 25082: template 25082: static MutablePtr create(std::initializer_list && arg) { return create(std::forward>(arg)); } 25082: 25082: typename Base::MutablePtr clone() const override { return typename Base::MutablePtr(new Derived(*derived())); } 25082: }; 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/IDataType.h" 2 3 4 25082: # 1 "/usr/include/boost/noncopyable.hpp" 1 3 4 25082: # 15 "/usr/include/boost/noncopyable.hpp" 3 4 25082: # 1 "/usr/include/boost/core/noncopyable.hpp" 1 3 4 25082: # 14 "/usr/include/boost/core/noncopyable.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace noncopyable_ 25082: { 25082: class noncopyable 25082: { 25082: protected: 25082: 25082: constexpr noncopyable() = default; 25082: ~noncopyable() = default; 25082: 25082: 25082: 25082: 25082: 25082: noncopyable( const noncopyable& ) = delete; 25082: noncopyable& operator=( const noncopyable& ) = delete; 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: } 25082: 25082: typedef noncopyable_::noncopyable noncopyable; 25082: 25082: } 25082: # 16 "/usr/include/boost/noncopyable.hpp" 2 3 4 25082: # 6 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/IDataType.h" 2 3 4 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: class ReadBuffer; 25082: class WriteBuffer; 25082: 25082: class IDataType; 25082: struct FormatSettings; 25082: 25082: class IColumn; 25082: using ColumnPtr = COWPtr::Ptr; 25082: using MutableColumnPtr = COWPtr::MutablePtr; 25082: 25082: using DataTypePtr = std::shared_ptr; 25082: using DataTypes = std::vector; 25082: # 33 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/IDataType.h" 3 4 25082: class IDataType : private boost::noncopyable 25082: { 25082: public: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual String getName() const { return getFamilyName(); } 25082: 25082: 25082: virtual const char * getFamilyName() const = 0; 25082: 25082: 25082: virtual TypeIndex getTypeId() const = 0; 25082: # 74 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/IDataType.h" 3 4 25082: struct Substream 25082: { 25082: enum Type 25082: { 25082: ArrayElements, 25082: ArraySizes, 25082: 25082: NullableElements, 25082: NullMap, 25082: 25082: TupleElement, 25082: 25082: DictionaryKeys, 25082: DictionaryIndexes, 25082: }; 25082: Type type; 25082: 25082: 25082: String tuple_element_name; 25082: 25082: Substream(Type type) : type(type) {} 25082: }; 25082: 25082: using SubstreamPath = std::vector; 25082: 25082: using StreamCallback = std::function; 25082: virtual void enumerateStreams(const StreamCallback & callback, SubstreamPath & path) const 25082: { 25082: callback(path); 25082: } 25082: void enumerateStreams(const StreamCallback & callback, SubstreamPath && path) const { enumerateStreams(callback, path); } 25082: void enumerateStreams(const StreamCallback & callback) const { enumerateStreams(callback, {}); } 25082: 25082: using OutputStreamGetter = std::function; 25082: using InputStreamGetter = std::function; 25082: 25082: struct SerializeBinaryBulkState 25082: { 25082: virtual ~SerializeBinaryBulkState() = default; 25082: }; 25082: struct DeserializeBinaryBulkState 25082: { 25082: virtual ~DeserializeBinaryBulkState() = default; 25082: }; 25082: 25082: using SerializeBinaryBulkStatePtr = std::shared_ptr; 25082: using DeserializeBinaryBulkStatePtr = std::shared_ptr; 25082: 25082: struct SerializeBinaryBulkSettings 25082: { 25082: OutputStreamGetter getter; 25082: SubstreamPath path; 25082: 25082: size_t low_cardinality_max_dictionary_size = 0; 25082: bool low_cardinality_use_single_dictionary_for_part = true; 25082: 25082: bool position_independent_encoding = true; 25082: }; 25082: 25082: struct DeserializeBinaryBulkSettings 25082: { 25082: InputStreamGetter getter; 25082: SubstreamPath path; 25082: 25082: 25082: bool continuous_reading = true; 25082: 25082: bool position_independent_encoding = true; 25082: 25082: double avg_value_size_hint = 0; 25082: }; 25082: 25082: 25082: virtual void serializeBinaryBulkStatePrefix( 25082: SerializeBinaryBulkSettings & , 25082: SerializeBinaryBulkStatePtr & ) const {} 25082: 25082: 25082: virtual void serializeBinaryBulkStateSuffix( 25082: SerializeBinaryBulkSettings & , 25082: SerializeBinaryBulkStatePtr & ) const {} 25082: 25082: 25082: virtual void deserializeBinaryBulkStatePrefix( 25082: DeserializeBinaryBulkSettings & , 25082: DeserializeBinaryBulkStatePtr & ) const {} 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual void serializeBinaryBulkWithMultipleStreams( 25082: const IColumn & column, 25082: size_t offset, 25082: size_t limit, 25082: SerializeBinaryBulkSettings & settings, 25082: SerializeBinaryBulkStatePtr & ) const 25082: { 25082: if (WriteBuffer * stream = settings.getter(settings.path)) 25082: serializeBinaryBulk(column, *stream, offset, limit); 25082: } 25082: 25082: 25082: virtual void deserializeBinaryBulkWithMultipleStreams( 25082: IColumn & column, 25082: size_t limit, 25082: DeserializeBinaryBulkSettings & settings, 25082: DeserializeBinaryBulkStatePtr & ) const 25082: { 25082: if (ReadBuffer * stream = settings.getter(settings.path)) 25082: deserializeBinaryBulk(column, *stream, limit, settings.avg_value_size_hint); 25082: } 25082: 25082: 25082: 25082: virtual void serializeBinaryBulk(const IColumn & column, WriteBuffer & ostr, size_t offset, size_t limit) const; 25082: virtual void deserializeBinaryBulk(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const; 25082: # 206 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/IDataType.h" 3 4 25082: virtual void serializeBinary(const Field & field, WriteBuffer & ostr) const = 0; 25082: virtual void deserializeBinary(Field & field, ReadBuffer & istr) const = 0; 25082: 25082: 25082: 25082: 25082: 25082: virtual void serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const = 0; 25082: 25082: 25082: virtual void deserializeBinary(IColumn & column, ReadBuffer & istr) const = 0; 25082: 25082: 25082: 25082: virtual void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const = 0; 25082: 25082: virtual void deserializeTextEscaped(IColumn & column, ReadBuffer & istr, const FormatSettings &) const = 0; 25082: 25082: 25082: 25082: virtual void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const = 0; 25082: 25082: virtual void deserializeTextQuoted(IColumn & column, ReadBuffer & istr, const FormatSettings &) const = 0; 25082: 25082: 25082: 25082: virtual void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const = 0; 25082: 25082: 25082: 25082: 25082: virtual void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const FormatSettings &) const = 0; 25082: 25082: 25082: 25082: 25082: virtual void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const = 0; 25082: 25082: 25082: 25082: 25082: virtual void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const = 0; 25082: virtual void deserializeTextJSON(IColumn & column, ReadBuffer & istr, const FormatSettings &) const = 0; 25082: 25082: 25082: 25082: virtual void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const 25082: { 25082: serializeText(column, row_num, ostr, settings); 25082: } 25082: 25082: 25082: 25082: virtual MutableColumnPtr createColumn() const = 0; 25082: 25082: 25082: 25082: ColumnPtr createColumnConst(size_t size, const Field & field) const; 25082: ColumnPtr createColumnConstWithDefaultValue(size_t size) const; 25082: 25082: 25082: 25082: 25082: virtual Field getDefault() const = 0; 25082: 25082: 25082: 25082: 25082: virtual void insertDefaultInto(IColumn & column) const; 25082: 25082: 25082: virtual bool equals(const IDataType & rhs) const = 0; 25082: 25082: virtual ~IDataType() {} 25082: # 288 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/IDataType.h" 3 4 25082: virtual bool isParametric() const = 0; 25082: 25082: 25082: 25082: 25082: virtual bool haveSubtypes() const = 0; 25082: 25082: 25082: 25082: 25082: virtual bool cannotBeStoredInTables() const { return false; } 25082: 25082: 25082: 25082: 25082: 25082: virtual bool shouldAlignRightInPrettyFormats() const { return false; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual bool textCanContainOnlyValidUTF8() const { return false; } 25082: 25082: 25082: 25082: 25082: 25082: virtual bool isComparable() const { return false; } 25082: 25082: 25082: 25082: 25082: virtual bool canBeComparedWithCollation() const { return false; } 25082: 25082: 25082: 25082: 25082: 25082: virtual bool canBeUsedAsVersion() const { return false; } 25082: 25082: 25082: 25082: 25082: 25082: virtual bool isSummable() const { return false; } 25082: 25082: 25082: 25082: virtual bool canBeUsedInBitOperations() const { return false; } 25082: 25082: 25082: 25082: 25082: virtual bool canBeUsedInBooleanContext() const { return false; } 25082: 25082: 25082: 25082: virtual bool isValueRepresentedByNumber() const { return false; } 25082: 25082: 25082: 25082: virtual bool isValueRepresentedByInteger() const { return false; } 25082: 25082: 25082: 25082: virtual bool isValueRepresentedByUnsignedInteger() const { return false; } 25082: # 364 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/IDataType.h" 3 4 25082: virtual bool isValueUnambiguouslyRepresentedInContiguousMemoryRegion() const { return false; } 25082: 25082: virtual bool isValueUnambiguouslyRepresentedInFixedSizeContiguousMemoryRegion() const 25082: { 25082: return isValueRepresentedByNumber(); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: virtual bool haveMaximumSizeOfValue() const { return false; } 25082: 25082: 25082: 25082: virtual size_t getMaximumSizeOfValueInMemory() const { return getSizeOfValueInMemory(); } 25082: 25082: 25082: 25082: virtual size_t getSizeOfValueInMemory() const; 25082: 25082: 25082: 25082: virtual bool isCategorial() const { return false; } 25082: 25082: virtual bool isNullable() const { return false; } 25082: 25082: 25082: 25082: virtual bool onlyNull() const { return false; } 25082: 25082: 25082: 25082: virtual bool canBeInsideNullable() const { return false; } 25082: 25082: virtual bool lowCardinality() const { return false; } 25082: 25082: 25082: virtual bool canBeInsideLowCardinality() const { return false; } 25082: 25082: 25082: static void updateAvgValueSizeHint(const IColumn & column, double & avg_value_size_hint); 25082: 25082: static String getFileNameForStream(const String & column_name, const SubstreamPath & path); 25082: }; 25082: 25082: 25082: 25082: struct WhichDataType 25082: { 25082: TypeIndex idx; 25082: 25082: 25082: WhichDataType() 25082: : idx(TypeIndex::Nothing) 25082: {} 25082: 25082: WhichDataType(const IDataType & data_type) 25082: : idx(data_type.getTypeId()) 25082: {} 25082: 25082: WhichDataType(const IDataType * data_type) 25082: : idx(data_type->getTypeId()) 25082: {} 25082: 25082: WhichDataType(const DataTypePtr & data_type) 25082: : idx(data_type->getTypeId()) 25082: {} 25082: 25082: bool isUInt8() const { return idx == TypeIndex::UInt8; } 25082: bool isUInt16() const { return idx == TypeIndex::UInt16; } 25082: bool isUInt32() const { return idx == TypeIndex::UInt32; } 25082: bool isUInt64() const { return idx == TypeIndex::UInt64; } 25082: bool isUInt128() const { return idx == TypeIndex::UInt128; } 25082: bool isUInt() const { return isUInt8() || isUInt16() || isUInt32() || isUInt64() || isUInt128(); } 25082: bool isNativeUInt() const { return isUInt8() || isUInt16() || isUInt32() || isUInt64(); } 25082: 25082: bool isInt8() const { return idx == TypeIndex::Int8; } 25082: bool isInt16() const { return idx == TypeIndex::Int16; } 25082: bool isInt32() const { return idx == TypeIndex::Int32; } 25082: bool isInt64() const { return idx == TypeIndex::Int64; } 25082: bool isInt128() const { return idx == TypeIndex::Int128; } 25082: bool isInt() const { return isInt8() || isInt16() || isInt32() || isInt64() || isInt128(); } 25082: bool isNativeInt() const { return isInt8() || isInt16() || isInt32() || isInt64(); } 25082: 25082: bool isDecimal32() const { return idx == TypeIndex::Decimal32; } 25082: bool isDecimal64() const { return idx == TypeIndex::Decimal64; } 25082: bool isDecimal128() const { return idx == TypeIndex::Decimal128; } 25082: bool isDecimal() const { return isDecimal32() || isDecimal64() || isDecimal128(); } 25082: 25082: bool isFloat32() const { return idx == TypeIndex::Float32; } 25082: bool isFloat64() const { return idx == TypeIndex::Float64; } 25082: bool isFloat() const { return isFloat32() || isFloat64(); } 25082: 25082: bool isEnum8() const { return idx == TypeIndex::Enum8; } 25082: bool isEnum16() const { return idx == TypeIndex::Enum16; } 25082: bool isEnum() const { return isEnum8() || isEnum16(); } 25082: 25082: bool isDate() const { return idx == TypeIndex::Date; } 25082: bool isDateTime() const { return idx == TypeIndex::DateTime; } 25082: bool isDateOrDateTime() const { return isDate() || isDateTime(); } 25082: 25082: bool isString() const { return idx == TypeIndex::String; } 25082: bool isFixedString() const { return idx == TypeIndex::FixedString; } 25082: bool isStringOrFixedString() const { return isString() || isFixedString(); } 25082: 25082: bool isUUID() const { return idx == TypeIndex::UUID; } 25082: bool isArray() const { return idx == TypeIndex::Array; } 25082: bool isTuple() const { return idx == TypeIndex::Tuple; } 25082: bool isSet() const { return idx == TypeIndex::Set; } 25082: bool isInterval() const { return idx == TypeIndex::Interval; } 25082: 25082: bool isNothing() const { return idx == TypeIndex::Nothing; } 25082: bool isNullable() const { return idx == TypeIndex::Nullable; } 25082: bool isFunction() const { return idx == TypeIndex::Function; } 25082: bool isAggregateFunction() const { return idx == TypeIndex::AggregateFunction; } 25082: }; 25082: 25082: 25082: 25082: inline bool isDate(const DataTypePtr & data_type) { return WhichDataType(data_type).isDate(); } 25082: inline bool isDateOrDateTime(const DataTypePtr & data_type) { return WhichDataType(data_type).isDateOrDateTime(); } 25082: inline bool isEnum(const DataTypePtr & data_type) { return WhichDataType(data_type).isEnum(); } 25082: inline bool isDecimal(const DataTypePtr & data_type) { return WhichDataType(data_type).isDecimal(); } 25082: inline bool isTuple(const DataTypePtr & data_type) { return WhichDataType(data_type).isTuple(); } 25082: inline bool isArray(const DataTypePtr & data_type) { return WhichDataType(data_type).isArray(); } 25082: 25082: template 25082: inline bool isUInt8(const T & data_type) 25082: { 25082: return WhichDataType(data_type).isUInt8(); 25082: } 25082: 25082: template 25082: inline bool isUnsignedInteger(const T & data_type) 25082: { 25082: return WhichDataType(data_type).isUInt(); 25082: } 25082: 25082: template 25082: inline bool isInteger(const T & data_type) 25082: { 25082: WhichDataType which(data_type); 25082: return which.isInt() || which.isUInt(); 25082: } 25082: 25082: template 25082: inline bool isNumber(const T & data_type) 25082: { 25082: WhichDataType which(data_type); 25082: return which.isInt() || which.isUInt() || which.isFloat(); 25082: } 25082: 25082: template 25082: inline bool isColumnedAsNumber(const T & data_type) 25082: { 25082: WhichDataType which(data_type); 25082: return which.isInt() || which.isUInt() || which.isFloat() || which.isDateOrDateTime() || which.isUUID(); 25082: } 25082: 25082: template 25082: inline bool isString(const T & data_type) 25082: { 25082: return WhichDataType(data_type).isString(); 25082: } 25082: 25082: template 25082: inline bool isFixedString(const T & data_type) 25082: { 25082: return WhichDataType(data_type).isFixedString(); 25082: } 25082: 25082: template 25082: inline bool isStringOrFixedString(const T & data_type) 25082: { 25082: return WhichDataType(data_type).isStringOrFixedString(); 25082: } 25082: 25082: 25082: inline bool isNotDecimalButComparableToDecimal(const DataTypePtr & data_type) 25082: { 25082: WhichDataType which(data_type); 25082: return which.isInt() || which.isUInt(); 25082: } 25082: 25082: inline bool isCompilableType(const DataTypePtr & data_type) 25082: { 25082: return data_type->isValueRepresentedByNumber() && !isDecimal(data_type); 25082: } 25082: 25082: 25082: } 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Core/NamesAndTypes.h" 2 3 4 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: struct NameAndTypePair 25082: { 25082: String name; 25082: DataTypePtr type; 25082: 25082: NameAndTypePair() {} 25082: NameAndTypePair(const String & name_, const DataTypePtr & type_) : name(name_), type(type_) {} 25082: 25082: bool operator<(const NameAndTypePair & rhs) const 25082: { 25082: return std::forward_as_tuple(name, type->getName()) < std::forward_as_tuple(rhs.name, rhs.type->getName()); 25082: } 25082: 25082: bool operator==(const NameAndTypePair & rhs) const 25082: { 25082: return name == rhs.name && type->equals(*rhs.type); 25082: } 25082: }; 25082: 25082: using NamesAndTypes = std::vector; 25082: 25082: class NamesAndTypesList : public std::list 25082: { 25082: public: 25082: NamesAndTypesList() {} 25082: 25082: NamesAndTypesList(std::initializer_list init) : std::list(init) {} 25082: 25082: template 25082: NamesAndTypesList(Iterator begin, Iterator end) : std::list(begin, end) {} 25082: 25082: 25082: void readText(ReadBuffer & buf); 25082: void writeText(WriteBuffer & buf) const; 25082: 25082: String toString() const; 25082: static NamesAndTypesList parse(const String & s); 25082: 25082: 25082: bool isSubsetOf(const NamesAndTypesList & rhs) const; 25082: 25082: 25082: 25082: size_t sizeOfDifference(const NamesAndTypesList & rhs) const; 25082: 25082: 25082: void getDifference(const NamesAndTypesList & rhs, NamesAndTypesList & deleted, NamesAndTypesList & added) const; 25082: 25082: Names getNames() const; 25082: DataTypes getTypes() const; 25082: 25082: 25082: NamesAndTypesList filter(const NameSet & names) const; 25082: 25082: 25082: NamesAndTypesList filter(const Names & names) const; 25082: 25082: 25082: NamesAndTypesList addTypes(const Names & names) const; 25082: 25082: bool contains(const String & name) const; 25082: }; 25082: 25082: } 25082: # 11 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Block.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/ColumnWithTypeAndName.h" 1 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/IColumn.h" 1 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/PODArray.h" 1 3 4 25082: 25082: 25082: # 1 "/usr/include/string.h" 1 3 4 25082: # 26 "/usr/include/string.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 25082: # 27 "/usr/include/string.h" 2 3 4 25082: 25082: extern "C" { 25082: 25082: 25082: 25082: 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 34 "/usr/include/string.h" 2 3 4 25082: # 42 "/usr/include/string.h" 3 4 25082: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, 25082: size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern void *memmove (void *__dest, const void *__src, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: 25082: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, 25082: int __c, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern int memcmp (const void *__s1, const void *__s2, size_t __n) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern "C++" 25082: { 25082: extern void *memchr (void *__s, int __c, size_t __n) 25082: throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: extern const void *memchr (const void *__s, int __c, size_t __n) 25082: throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * 25082: memchr (void *__s, int __c, size_t __n) throw () 25082: { 25082: return __builtin_memchr (__s, __c, __n); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * 25082: memchr (const void *__s, int __c, size_t __n) throw () 25082: { 25082: return __builtin_memchr (__s, __c, __n); 25082: } 25082: 25082: } 25082: # 98 "/usr/include/string.h" 3 4 25082: extern "C++" void *rawmemchr (void *__s, int __c) 25082: throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: extern "C++" const void *rawmemchr (const void *__s, int __c) 25082: throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern "C++" void *memrchr (void *__s, int __c, size_t __n) 25082: throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) 25082: throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: # 121 "/usr/include/string.h" 3 4 25082: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: extern char *strncpy (char *__restrict __dest, 25082: const char *__restrict __src, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern char *strcat (char *__restrict __dest, const char *__restrict __src) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: extern char *strncat (char *__restrict __dest, const char *__restrict __src, 25082: size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int strcmp (const char *__s1, const char *__s2) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: extern int strncmp (const char *__s1, const char *__s2, size_t __n) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int strcoll (const char *__s1, const char *__s2) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: extern size_t strxfrm (char *__restrict __dest, 25082: const char *__restrict __src, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 25082: 25082: 25082: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, 25082: locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4))); 25082: 25082: 25082: 25082: 25082: 25082: extern char *strdup (const char *__s) 25082: throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern char *strndup (const char *__string, size_t __n) 25082: throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 25082: # 203 "/usr/include/string.h" 3 4 25082: extern "C++" 25082: { 25082: extern char *strchr (char *__s, int __c) 25082: throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: extern const char *strchr (const char *__s, int __c) 25082: throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 25082: strchr (char *__s, int __c) throw () 25082: { 25082: return __builtin_strchr (__s, __c); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 25082: strchr (const char *__s, int __c) throw () 25082: { 25082: return __builtin_strchr (__s, __c); 25082: } 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern "C++" 25082: { 25082: extern char *strrchr (char *__s, int __c) 25082: throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: extern const char *strrchr (const char *__s, int __c) 25082: throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 25082: strrchr (char *__s, int __c) throw () 25082: { 25082: return __builtin_strrchr (__s, __c); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 25082: strrchr (const char *__s, int __c) throw () 25082: { 25082: return __builtin_strrchr (__s, __c); 25082: } 25082: 25082: } 25082: # 260 "/usr/include/string.h" 3 4 25082: extern "C++" char *strchrnul (char *__s, int __c) 25082: throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: extern "C++" const char *strchrnul (const char *__s, int __c) 25082: throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: # 272 "/usr/include/string.h" 3 4 25082: extern size_t strcspn (const char *__s, const char *__reject) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern size_t strspn (const char *__s, const char *__accept) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern "C++" 25082: { 25082: extern char *strpbrk (char *__s, const char *__accept) 25082: throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: extern const char *strpbrk (const char *__s, const char *__accept) 25082: throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 25082: strpbrk (char *__s, const char *__accept) throw () 25082: { 25082: return __builtin_strpbrk (__s, __accept); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 25082: strpbrk (const char *__s, const char *__accept) throw () 25082: { 25082: return __builtin_strpbrk (__s, __accept); 25082: } 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern "C++" 25082: { 25082: extern char *strstr (char *__haystack, const char *__needle) 25082: throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: extern const char *strstr (const char *__haystack, const char *__needle) 25082: throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 25082: strstr (char *__haystack, const char *__needle) throw () 25082: { 25082: return __builtin_strstr (__haystack, __needle); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 25082: strstr (const char *__haystack, const char *__needle) throw () 25082: { 25082: return __builtin_strstr (__haystack, __needle); 25082: } 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern char *strtok (char *__restrict __s, const char *__restrict __delim) 25082: throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: extern char *__strtok_r (char *__restrict __s, 25082: const char *__restrict __delim, 25082: char **__restrict __save_ptr) 25082: throw () __attribute__ ((__nonnull__ (2, 3))); 25082: 25082: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, 25082: char **__restrict __save_ptr) 25082: throw () __attribute__ ((__nonnull__ (2, 3))); 25082: 25082: 25082: 25082: 25082: 25082: extern "C++" char *strcasestr (char *__haystack, const char *__needle) 25082: throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: extern "C++" const char *strcasestr (const char *__haystack, 25082: const char *__needle) 25082: throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: # 368 "/usr/include/string.h" 3 4 25082: extern void *memmem (const void *__haystack, size_t __haystacklen, 25082: const void *__needle, size_t __needlelen) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); 25082: 25082: 25082: 25082: extern void *__mempcpy (void *__restrict __dest, 25082: const void *__restrict __src, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: extern void *mempcpy (void *__restrict __dest, 25082: const void *__restrict __src, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: extern size_t strlen (const char *__s) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: extern size_t strnlen (const char *__string, size_t __maxlen) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: extern char *strerror (int __errnum) throw (); 25082: # 420 "/usr/include/string.h" 3 4 25082: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) 25082: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 25082: 25082: 25082: 25082: 25082: 25082: extern char *strerror_l (int __errnum, locale_t __l) throw (); 25082: 25082: 25082: 25082: # 1 "/usr/include/strings.h" 1 3 4 25082: # 23 "/usr/include/strings.h" 3 4 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 24 "/usr/include/strings.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern "C" { 25082: 25082: 25082: 25082: extern int bcmp (const void *__s1, const void *__s2, size_t __n) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern void bcopy (const void *__src, void *__dest, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern "C++" 25082: { 25082: extern char *index (char *__s, int __c) 25082: throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: extern const char *index (const char *__s, int __c) 25082: throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 25082: index (char *__s, int __c) throw () 25082: { 25082: return __builtin_index (__s, __c); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 25082: index (const char *__s, int __c) throw () 25082: { 25082: return __builtin_index (__s, __c); 25082: } 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern "C++" 25082: { 25082: extern char *rindex (char *__s, int __c) 25082: throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: extern const char *rindex (const char *__s, int __c) 25082: throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 25082: rindex (char *__s, int __c) throw () 25082: { 25082: return __builtin_rindex (__s, __c); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 25082: rindex (const char *__s, int __c) throw () 25082: { 25082: return __builtin_rindex (__s, __c); 25082: } 25082: 25082: } 25082: # 104 "/usr/include/strings.h" 3 4 25082: extern int ffs (int __i) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: 25082: extern int ffsl (long int __l) throw () __attribute__ ((__const__)); 25082: __extension__ extern int ffsll (long long int __ll) 25082: throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern int strcasecmp (const char *__s1, const char *__s2) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 25082: 25082: 25082: 25082: extern int strncasecmp_l (const char *__s1, const char *__s2, 25082: size_t __n, locale_t __loc) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); 25082: 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/strings_fortified.h" 1 3 4 25082: # 22 "/usr/include/aarch64-linux-gnu/bits/strings_fortified.h" 3 4 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 25082: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) throw () 25082: { 25082: (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 25082: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) throw () 25082: { 25082: (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0)); 25082: } 25082: # 145 "/usr/include/strings.h" 2 3 4 25082: # 432 "/usr/include/string.h" 2 3 4 25082: 25082: 25082: 25082: extern void explicit_bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: extern char *strsep (char **__restrict __stringp, 25082: const char *__restrict __delim) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: extern char *strsignal (int __sig) throw (); 25082: 25082: 25082: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: extern char *__stpncpy (char *__restrict __dest, 25082: const char *__restrict __src, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: extern char *stpncpy (char *__restrict __dest, 25082: const char *__restrict __src, size_t __n) 25082: throw () __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: 25082: 25082: extern int strverscmp (const char *__s1, const char *__s2) 25082: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 25082: 25082: 25082: extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern "C++" char *basename (char *__filename) 25082: throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); 25082: extern "C++" const char *basename (const char *__filename) 25082: throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); 25082: # 494 "/usr/include/string.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 1 3 4 25082: # 30 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 3 4 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 25082: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw () 25082: 25082: { 25082: return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 25082: } 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 25082: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) throw () 25082: { 25082: return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 25082: } 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 25082: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw () 25082: 25082: { 25082: return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 25082: } 25082: # 58 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 3 4 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 25082: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) throw () 25082: { 25082: # 71 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 3 4 25082: return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0)); 25082: } 25082: 25082: 25082: 25082: 25082: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) 25082: throw () __attribute__ ((__nonnull__ (1))); 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 25082: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) throw () 25082: { 25082: __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0)); 25082: } 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 25082: __attribute__ ((__leaf__)) strcpy (char *__restrict __dest, const char *__restrict __src) throw () 25082: { 25082: return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 25082: } 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 25082: __attribute__ ((__leaf__)) stpcpy (char *__restrict __dest, const char *__restrict __src) throw () 25082: { 25082: return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 25082: } 25082: 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 25082: __attribute__ ((__leaf__)) strncpy (char *__restrict __dest, const char *__restrict __src, size_t __len) throw () 25082: 25082: { 25082: return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); 25082: } 25082: 25082: 25082: extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n, 25082: size_t __destlen) throw (); 25082: extern char *__stpncpy_alias (char *__dest, const char *__src, size_t __n) throw () __asm__ ("" "stpncpy") 25082: ; 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 25082: __attribute__ ((__leaf__)) stpncpy (char *__dest, const char *__src, size_t __n) throw () 25082: { 25082: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 25082: && (!__builtin_constant_p (__n) || __n > __builtin_object_size (__dest, 2 > 1))) 25082: return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); 25082: return __stpncpy_alias (__dest, __src, __n); 25082: } 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 25082: __attribute__ ((__leaf__)) strcat (char *__restrict __dest, const char *__restrict __src) throw () 25082: { 25082: return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 25082: } 25082: 25082: 25082: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 25082: __attribute__ ((__leaf__)) strncat (char *__restrict __dest, const char *__restrict __src, size_t __len) throw () 25082: 25082: { 25082: return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); 25082: } 25082: # 495 "/usr/include/string.h" 2 3 4 25082: 25082: 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Common/PODArray.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/iterator_adaptors.hpp" 1 3 4 25082: # 11 "/usr/include/boost/iterator_adaptors.hpp" 3 4 25082: # 1 "/usr/include/boost/iterator/iterator_adaptor.hpp" 1 3 4 25082: # 10 "/usr/include/boost/iterator/iterator_adaptor.hpp" 3 4 25082: # 1 "/usr/include/boost/static_assert.hpp" 1 3 4 25082: # 11 "/usr/include/boost/iterator/iterator_adaptor.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/iterator/iterator_categories.hpp" 1 3 4 25082: # 10 "/usr/include/boost/iterator/iterator_categories.hpp" 3 4 25082: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4 25082: # 11 "/usr/include/boost/iterator/iterator_categories.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/eval_if.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/eval_if.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/if.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/if.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/static_cast.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/static_cast.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/workaround.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/static_cast.hpp" 2 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/integral.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/config/integral.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/msvc.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/config/integral.hpp" 2 3 4 25082: # 19 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/eti.hpp" 1 3 4 25082: # 20 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 2 3 4 25082: # 73 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 3 4 25082: namespace boost { namespace mpl { namespace aux { 25082: 25082: template< typename T > struct value_type_wknd 25082: { 25082: typedef typename T::value_type type; 25082: }; 25082: # 87 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 3 4 25082: }}} 25082: # 18 "/usr/include/boost/mpl/if.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/na_spec.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/na_spec.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/lambda_fwd.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/lambda_fwd.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/void_fwd.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/void_fwd.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/adl.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/config/adl.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/intel.hpp" 1 3 4 25082: # 19 "/usr/include/boost/mpl/aux_/config/adl.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/gcc.hpp" 1 3 4 25082: # 20 "/usr/include/boost/mpl/aux_/config/adl.hpp" 2 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 2 3 4 25082: # 33 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 3 4 25082: namespace mpl_ { namespace aux {} } 25082: namespace boost { namespace mpl { using namespace mpl_; 25082: namespace aux { using namespace mpl_::aux; } 25082: }} 25082: # 18 "/usr/include/boost/mpl/void_fwd.hpp" 2 3 4 25082: 25082: namespace mpl_ { 25082: 25082: struct void_; 25082: 25082: } 25082: namespace boost { namespace mpl { using ::mpl_::void_; } } 25082: # 18 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/na.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/na.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/bool.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/bool.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/bool_fwd.hpp" 1 3 4 25082: # 19 "/usr/include/boost/mpl/bool_fwd.hpp" 3 4 25082: namespace mpl_ { 25082: 25082: template< bool C_ > struct bool_; 25082: 25082: 25082: typedef bool_ true_; 25082: typedef bool_ false_; 25082: 25082: } 25082: 25082: namespace boost { namespace mpl { using ::mpl_::bool_; } } 25082: namespace boost { namespace mpl { using ::mpl_::true_; } } 25082: namespace boost { namespace mpl { using ::mpl_::false_; } } 25082: # 18 "/usr/include/boost/mpl/bool.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/integral_c_tag.hpp" 1 3 4 25082: # 19 "/usr/include/boost/mpl/integral_c_tag.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/static_constant.hpp" 1 3 4 25082: # 20 "/usr/include/boost/mpl/integral_c_tag.hpp" 2 3 4 25082: 25082: namespace mpl_ { 25082: struct integral_c_tag { static const int value = 0; }; 25082: } 25082: namespace boost { namespace mpl { using ::mpl_::integral_c_tag; } } 25082: # 19 "/usr/include/boost/mpl/bool.hpp" 2 3 4 25082: 25082: 25082: namespace mpl_ { 25082: 25082: template< bool C_ > struct bool_ 25082: { 25082: static const bool value = C_; 25082: typedef integral_c_tag tag; 25082: typedef bool_ type; 25082: typedef bool value_type; 25082: constexpr operator bool() const { return this->value; } 25082: }; 25082: 25082: 25082: template< bool C_ > 25082: bool const bool_::value; 25082: 25082: 25082: } 25082: # 18 "/usr/include/boost/mpl/aux_/na.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/na_fwd.hpp" 1 3 4 25082: # 19 "/usr/include/boost/mpl/aux_/na_fwd.hpp" 3 4 25082: namespace mpl_ { 25082: 25082: 25082: struct na 25082: { 25082: typedef na type; 25082: enum { value = 0 }; 25082: }; 25082: 25082: } 25082: namespace boost { namespace mpl { using ::mpl_::na; } } 25082: # 19 "/usr/include/boost/mpl/aux_/na.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/config/ctps.hpp" 1 3 4 25082: # 21 "/usr/include/boost/mpl/aux_/na.hpp" 2 3 4 25082: 25082: namespace boost { namespace mpl { 25082: 25082: template< typename T > 25082: struct is_na 25082: : false_ 25082: { 25082: 25082: 25082: 25082: }; 25082: 25082: template<> 25082: struct is_na 25082: : true_ 25082: { 25082: 25082: 25082: 25082: }; 25082: 25082: template< typename T > 25082: struct is_not_na 25082: : true_ 25082: { 25082: 25082: 25082: 25082: }; 25082: 25082: template<> 25082: struct is_not_na 25082: : false_ 25082: { 25082: 25082: 25082: 25082: }; 25082: 25082: 25082: template< typename T, typename U > struct if_na 25082: { 25082: typedef T type; 25082: }; 25082: 25082: template< typename U > struct if_na 25082: { 25082: typedef U type; 25082: }; 25082: # 93 "/usr/include/boost/mpl/aux_/na.hpp" 3 4 25082: }} 25082: # 19 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/lambda.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/config/lambda.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/ttp.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/config/lambda.hpp" 2 3 4 25082: # 20 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/int.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/int.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/int_fwd.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/int_fwd.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/nttp_decl.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/nttp_decl.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/nttp.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/nttp_decl.hpp" 2 3 4 25082: # 19 "/usr/include/boost/mpl/int_fwd.hpp" 2 3 4 25082: 25082: namespace mpl_ { 25082: 25082: template< int N > struct int_; 25082: 25082: } 25082: namespace boost { namespace mpl { using ::mpl_::int_; } } 25082: # 18 "/usr/include/boost/mpl/int.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 1 3 4 25082: # 22 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/cat.hpp" 1 3 4 25082: # 17 "/usr/include/boost/preprocessor/cat.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/config/config.hpp" 1 3 4 25082: # 18 "/usr/include/boost/preprocessor/cat.hpp" 2 3 4 25082: # 23 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 2 3 4 25082: # 40 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4 25082: namespace mpl_ { 25082: 25082: template< int N > 25082: struct int_ 25082: { 25082: static const int value = N; 25082: 25082: 25082: 25082: 25082: 25082: typedef int_ type; 25082: 25082: typedef int value_type; 25082: typedef integral_c_tag tag; 25082: # 72 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4 25082: typedef mpl_::int_< static_cast((value + 1)) > next; 25082: typedef mpl_::int_< static_cast((value - 1)) > prior; 25082: 25082: 25082: 25082: 25082: 25082: 25082: constexpr operator int() const { return static_cast(this->value); } 25082: }; 25082: 25082: 25082: template< int N > 25082: int const mpl_::int_< N >::value; 25082: 25082: 25082: } 25082: # 21 "/usr/include/boost/mpl/int.hpp" 2 3 4 25082: # 24 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/lambda_arity_param.hpp" 1 3 4 25082: # 25 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/template_arity_fwd.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/template_arity_fwd.hpp" 3 4 25082: namespace boost { namespace mpl { namespace aux { 25082: 25082: template< typename F > struct template_arity; 25082: 25082: }}} 25082: # 26 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4 25082: 25082: namespace boost { namespace mpl { 25082: 25082: template< 25082: typename T = na 25082: , typename Tag = void_ 25082: , typename Arity = int_< aux::template_arity::value > 25082: 25082: 25082: > 25082: struct lambda; 25082: 25082: }} 25082: # 19 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/arity.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/arity.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/dtp.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/arity.hpp" 2 3 4 25082: # 23 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/preprocessor.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4 25082: # 45 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/comma_if.hpp" 1 3 4 25082: # 15 "/usr/include/boost/preprocessor/comma_if.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 1 3 4 25082: # 18 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/control/if.hpp" 1 3 4 25082: # 18 "/usr/include/boost/preprocessor/control/if.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/control/iif.hpp" 1 3 4 25082: # 19 "/usr/include/boost/preprocessor/control/if.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/logical/bool.hpp" 1 3 4 25082: # 20 "/usr/include/boost/preprocessor/control/if.hpp" 2 3 4 25082: # 19 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/facilities/empty.hpp" 1 3 4 25082: # 20 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/punctuation/comma.hpp" 1 3 4 25082: # 21 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 2 3 4 25082: # 16 "/usr/include/boost/preprocessor/comma_if.hpp" 2 3 4 25082: # 46 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/repeat.hpp" 1 3 4 25082: # 15 "/usr/include/boost/preprocessor/repeat.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 1 3 4 25082: # 19 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/debug/error.hpp" 1 3 4 25082: # 20 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4 25082: # 21 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/tuple/eat.hpp" 1 3 4 25082: # 22 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 2 3 4 25082: # 16 "/usr/include/boost/preprocessor/repeat.hpp" 2 3 4 25082: # 47 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/inc.hpp" 1 3 4 25082: # 15 "/usr/include/boost/preprocessor/inc.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/arithmetic/inc.hpp" 1 3 4 25082: # 16 "/usr/include/boost/preprocessor/inc.hpp" 2 3 4 25082: # 48 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4 25082: # 27 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessor/enum.hpp" 1 3 4 25082: # 28 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/limits/arity.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/preprocessor/logical/and.hpp" 1 3 4 25082: # 19 "/usr/include/boost/preprocessor/logical/and.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/logical/bitand.hpp" 1 3 4 25082: # 20 "/usr/include/boost/preprocessor/logical/and.hpp" 2 3 4 25082: # 23 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/identity.hpp" 1 3 4 25082: # 15 "/usr/include/boost/preprocessor/identity.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/facilities/identity.hpp" 1 3 4 25082: # 16 "/usr/include/boost/preprocessor/identity.hpp" 2 3 4 25082: # 24 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/empty.hpp" 1 3 4 25082: # 25 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4 25082: # 66 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 1 3 4 25082: # 17 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/arithmetic/dec.hpp" 1 3 4 25082: # 18 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/preprocessor/control/while.hpp" 1 3 4 25082: # 20 "/usr/include/boost/preprocessor/control/while.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4 25082: # 21 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/list/fold_left.hpp" 1 3 4 25082: # 18 "/usr/include/boost/preprocessor/list/fold_left.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/control/while.hpp" 1 3 4 25082: # 19 "/usr/include/boost/preprocessor/list/fold_left.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4 25082: # 21 "/usr/include/boost/preprocessor/list/fold_left.hpp" 2 3 4 25082: # 41 "/usr/include/boost/preprocessor/list/fold_left.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 1 3 4 25082: # 17 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/control/expr_iif.hpp" 1 3 4 25082: # 18 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/preprocessor/list/adt.hpp" 1 3 4 25082: # 18 "/usr/include/boost/preprocessor/list/adt.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/detail/is_binary.hpp" 1 3 4 25082: # 16 "/usr/include/boost/preprocessor/detail/is_binary.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/detail/check.hpp" 1 3 4 25082: # 17 "/usr/include/boost/preprocessor/detail/is_binary.hpp" 2 3 4 25082: # 19 "/usr/include/boost/preprocessor/list/adt.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/logical/compl.hpp" 1 3 4 25082: # 20 "/usr/include/boost/preprocessor/list/adt.hpp" 2 3 4 25082: # 20 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 2 3 4 25082: # 42 "/usr/include/boost/preprocessor/list/fold_left.hpp" 2 3 4 25082: # 22 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/list/fold_right.hpp" 1 3 4 25082: # 20 "/usr/include/boost/preprocessor/list/fold_right.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4 25082: # 21 "/usr/include/boost/preprocessor/list/fold_right.hpp" 2 3 4 25082: # 37 "/usr/include/boost/preprocessor/list/fold_right.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/list/detail/fold_right.hpp" 1 3 4 25082: # 18 "/usr/include/boost/preprocessor/list/detail/fold_right.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/list/reverse.hpp" 1 3 4 25082: # 19 "/usr/include/boost/preprocessor/list/detail/fold_right.hpp" 2 3 4 25082: # 38 "/usr/include/boost/preprocessor/list/fold_right.hpp" 2 3 4 25082: # 23 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4 25082: # 48 "/usr/include/boost/preprocessor/control/while.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/control/detail/while.hpp" 1 3 4 25082: # 49 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4 25082: # 21 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/tuple/elem.hpp" 1 3 4 25082: # 20 "/usr/include/boost/preprocessor/tuple/elem.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/facilities/expand.hpp" 1 3 4 25082: # 21 "/usr/include/boost/preprocessor/tuple/elem.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/facilities/overload.hpp" 1 3 4 25082: # 17 "/usr/include/boost/preprocessor/facilities/overload.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/variadic/size.hpp" 1 3 4 25082: # 18 "/usr/include/boost/preprocessor/facilities/overload.hpp" 2 3 4 25082: # 22 "/usr/include/boost/preprocessor/tuple/elem.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/tuple/rem.hpp" 1 3 4 25082: # 20 "/usr/include/boost/preprocessor/tuple/rem.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/tuple/detail/is_single_return.hpp" 1 3 4 25082: # 21 "/usr/include/boost/preprocessor/tuple/rem.hpp" 2 3 4 25082: # 23 "/usr/include/boost/preprocessor/tuple/elem.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/variadic/elem.hpp" 1 3 4 25082: # 24 "/usr/include/boost/preprocessor/tuple/elem.hpp" 2 3 4 25082: # 22 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 2 3 4 25082: # 67 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/arithmetic/sub.hpp" 1 3 4 25082: # 68 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4 25082: # 29 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/config/overload_resolution.hpp" 1 3 4 25082: # 36 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4 25082: # 20 "/usr/include/boost/mpl/if.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/lambda_support.hpp" 1 3 4 25082: # 21 "/usr/include/boost/mpl/if.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: namespace boost { namespace mpl { 25082: 25082: 25082: 25082: template< 25082: bool C 25082: , typename T1 25082: , typename T2 25082: > 25082: struct if_c 25082: { 25082: typedef T1 type; 25082: }; 25082: 25082: template< 25082: typename T1 25082: , typename T2 25082: > 25082: struct if_c 25082: { 25082: typedef T2 type; 25082: }; 25082: 25082: 25082: 25082: template< 25082: typename T1 = na 25082: , typename T2 = na 25082: , typename T3 = na 25082: > 25082: struct if_ 25082: { 25082: private: 25082: 25082: typedef if_c< 25082: 25082: 25082: 25082: static_cast(T1::value) 25082: 25082: , T2 25082: , T3 25082: > almost_type_; 25082: 25082: public: 25082: typedef typename almost_type_::type type; 25082: 25082: 25082: }; 25082: # 131 "/usr/include/boost/mpl/if.hpp" 3 4 25082: 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> { }; } 25082: 25082: }} 25082: # 18 "/usr/include/boost/mpl/eval_if.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace boost { namespace mpl { 25082: 25082: template< 25082: typename C = na 25082: , typename F1 = na 25082: , typename F2 = na 25082: > 25082: struct eval_if 25082: 25082: 25082: 25082: 25082: { 25082: typedef typename if_::type f_; 25082: typedef typename f_::type type; 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: 25082: 25082: template< 25082: bool C 25082: , typename F1 25082: , typename F2 25082: > 25082: struct eval_if_c 25082: 25082: 25082: 25082: 25082: { 25082: typedef typename if_c::type f_; 25082: typedef typename f_::type type; 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: 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> { }; } 25082: 25082: }} 25082: # 15 "/usr/include/boost/iterator/iterator_categories.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/identity.hpp" 1 3 4 25082: # 20 "/usr/include/boost/mpl/identity.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: template< 25082: typename T = na 25082: > 25082: struct identity 25082: { 25082: typedef T type; 25082: 25082: }; 25082: 25082: template< 25082: typename T = na 25082: > 25082: struct make_identity 25082: { 25082: typedef identity type; 25082: 25082: }; 25082: 25082: 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> { }; } 25082: 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> { }; } 25082: 25082: }} 25082: # 16 "/usr/include/boost/iterator/iterator_categories.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/placeholders.hpp" 1 3 4 25082: # 24 "/usr/include/boost/mpl/placeholders.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/arg.hpp" 1 3 4 25082: # 23 "/usr/include/boost/mpl/arg.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/arg_fwd.hpp" 1 3 4 25082: # 21 "/usr/include/boost/mpl/arg_fwd.hpp" 3 4 25082: namespace mpl_ { 25082: 25082: template< int N > struct arg; 25082: 25082: } 25082: namespace boost { namespace mpl { using ::mpl_::arg; } } 25082: # 24 "/usr/include/boost/mpl/arg.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/na_assert.hpp" 1 3 4 25082: # 23 "/usr/include/boost/mpl/aux_/na_assert.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/assert.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/assert.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/not.hpp" 1 3 4 25082: # 19 "/usr/include/boost/mpl/not.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/nested_type_wknd.hpp" 1 3 4 25082: # 25 "/usr/include/boost/mpl/aux_/nested_type_wknd.hpp" 3 4 25082: namespace boost { namespace mpl { namespace aux { 25082: template< typename T > struct nested_type_wknd 25082: : T::type 25082: { 25082: }; 25082: }}} 25082: # 20 "/usr/include/boost/mpl/not.hpp" 2 3 4 25082: 25082: 25082: 25082: namespace boost { namespace mpl { 25082: 25082: namespace aux { 25082: 25082: template< long C_ > 25082: struct not_impl 25082: : bool_ 25082: { 25082: }; 25082: 25082: } 25082: 25082: 25082: template< 25082: typename T = na 25082: > 25082: struct not_ 25082: : aux::not_impl< 25082: ::boost::mpl::aux::nested_type_wknd::value 25082: > 25082: { 25082: 25082: }; 25082: 25082: 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> { }; } 25082: 25082: }} 25082: # 18 "/usr/include/boost/mpl/assert.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/yes_no.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/yes_no.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/arrays.hpp" 1 3 4 25082: # 19 "/usr/include/boost/mpl/aux_/yes_no.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: namespace boost { namespace mpl { namespace aux { 25082: 25082: typedef char (&no_tag)[1]; 25082: typedef char (&yes_tag)[2]; 25082: 25082: template< bool C_ > struct yes_no_tag 25082: { 25082: typedef no_tag type; 25082: }; 25082: 25082: template<> struct yes_no_tag 25082: { 25082: typedef yes_tag type; 25082: }; 25082: 25082: 25082: template< long n > struct weighted_tag 25082: { 25082: 25082: typedef char (&type)[n]; 25082: 25082: 25082: 25082: 25082: }; 25082: # 56 "/usr/include/boost/mpl/aux_/yes_no.hpp" 3 4 25082: }}} 25082: # 21 "/usr/include/boost/mpl/assert.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/config/gpu.hpp" 1 3 4 25082: # 29 "/usr/include/boost/mpl/assert.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/config/pp_counter.hpp" 1 3 4 25082: # 31 "/usr/include/boost/mpl/assert.hpp" 2 3 4 25082: # 66 "/usr/include/boost/mpl/assert.hpp" 3 4 25082: namespace mpl_ { 25082: 25082: struct failed {}; 25082: # 79 "/usr/include/boost/mpl/assert.hpp" 3 4 25082: template< bool C > struct assert { typedef void* type; }; 25082: template<> struct assert { typedef assert type; }; 25082: 25082: template< bool C > 25082: int assertion_failed( typename assert::type ); 25082: 25082: template< bool C > 25082: struct assertion 25082: { 25082: static int failed( assert ); 25082: }; 25082: 25082: template<> 25082: struct assertion 25082: { 25082: static int failed( void* ); 25082: }; 25082: 25082: struct assert_ 25082: { 25082: 25082: template< typename T1, typename T2 = na, typename T3 = na, typename T4 = na > struct types {}; 25082: 25082: static assert_ const arg; 25082: enum relations { equal = 1, not_equal, greater, greater_equal, less, less_equal }; 25082: }; 25082: # 127 "/usr/include/boost/mpl/assert.hpp" 3 4 25082: boost::mpl::aux::weighted_tag<1>::type operator==( assert_, assert_ ); 25082: boost::mpl::aux::weighted_tag<2>::type operator!=( assert_, assert_ ); 25082: boost::mpl::aux::weighted_tag<3>::type operator>( assert_, assert_ ); 25082: boost::mpl::aux::weighted_tag<4>::type operator>=( assert_, assert_ ); 25082: boost::mpl::aux::weighted_tag<5>::type operator<( assert_, assert_ ); 25082: boost::mpl::aux::weighted_tag<6>::type operator<=( assert_, assert_ ); 25082: 25082: template< assert_::relations r, long x, long y > struct assert_relation {}; 25082: # 171 "/usr/include/boost/mpl/assert.hpp" 3 4 25082: template< bool > struct assert_arg_pred_impl { typedef int type; }; 25082: template<> struct assert_arg_pred_impl { typedef void* type; }; 25082: 25082: template< typename P > struct assert_arg_pred 25082: { 25082: typedef typename P::type p_type; 25082: typedef typename assert_arg_pred_impl< p_type::value >::type type; 25082: }; 25082: 25082: template< typename P > struct assert_arg_pred_not 25082: { 25082: typedef typename P::type p_type; 25082: enum { p = !p_type::value }; 25082: typedef typename assert_arg_pred_impl

::type type; 25082: }; 25082: 25082: template< typename Pred > 25082: failed ************ (Pred::************ 25082: assert_arg( void (*)(Pred), typename assert_arg_pred::type ) 25082: ); 25082: 25082: template< typename Pred > 25082: failed ************ (boost::mpl::not_::************ 25082: assert_not_arg( void (*)(Pred), typename assert_arg_pred_not::type ) 25082: ); 25082: 25082: template< typename Pred > 25082: assert 25082: assert_arg( void (*)(Pred), typename assert_arg_pred_not::type ); 25082: 25082: template< typename Pred > 25082: assert 25082: assert_not_arg( void (*)(Pred), typename assert_arg_pred::type ); 25082: # 246 "/usr/include/boost/mpl/assert.hpp" 3 4 25082: } 25082: # 24 "/usr/include/boost/mpl/aux_/na_assert.hpp" 2 3 4 25082: # 26 "/usr/include/boost/mpl/arg.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/arity_spec.hpp" 1 3 4 25082: # 27 "/usr/include/boost/mpl/arg.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/arg_typedef.hpp" 1 3 4 25082: # 28 "/usr/include/boost/mpl/arg.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/config/use_preprocessed.hpp" 1 3 4 25082: # 32 "/usr/include/boost/mpl/arg.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 16 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/compiler.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/preprocessor/stringize.hpp" 1 3 4 25082: # 21 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp" 1 3 4 25082: # 13 "/usr/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp" 3 4 25082: namespace mpl_ { 25082: template<> struct arg< -1 > 25082: { 25082: static const int value = -1; 25082: 25082: 25082: 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: typedef U1 type; 25082: enum { mpl_assertion_in_line_27 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na))0, 1 ) ) ) }; 25082: }; 25082: }; 25082: 25082: template<> struct arg<1> 25082: { 25082: static const int value = 1; 25082: typedef arg<2> next; 25082: 25082: 25082: 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: typedef U1 type; 25082: enum { mpl_assertion_in_line_45 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na))0, 1 ) ) ) }; 25082: }; 25082: }; 25082: 25082: template<> struct arg<2> 25082: { 25082: static const int value = 2; 25082: typedef arg<3> next; 25082: 25082: 25082: 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: typedef U2 type; 25082: enum { mpl_assertion_in_line_63 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na))0, 1 ) ) ) }; 25082: }; 25082: }; 25082: 25082: template<> struct arg<3> 25082: { 25082: static const int value = 3; 25082: typedef arg<4> next; 25082: 25082: 25082: 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: typedef U3 type; 25082: enum { mpl_assertion_in_line_81 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na))0, 1 ) ) ) }; 25082: }; 25082: }; 25082: 25082: template<> struct arg<4> 25082: { 25082: static const int value = 4; 25082: typedef arg<5> next; 25082: 25082: 25082: 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: typedef U4 type; 25082: enum { mpl_assertion_in_line_99 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na))0, 1 ) ) ) }; 25082: }; 25082: }; 25082: 25082: template<> struct arg<5> 25082: { 25082: static const int value = 5; 25082: typedef arg<6> next; 25082: 25082: 25082: 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: typedef U5 type; 25082: enum { mpl_assertion_in_line_117 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na))0, 1 ) ) ) }; 25082: }; 25082: }; 25082: 25082: 25082: 25082: } 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 38 "/usr/include/boost/mpl/arg.hpp" 2 3 4 25082: # 25 "/usr/include/boost/mpl/placeholders.hpp" 2 3 4 25082: # 43 "/usr/include/boost/mpl/placeholders.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp" 1 3 4 25082: # 13 "/usr/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp" 3 4 25082: namespace mpl_ { 25082: typedef arg< -1 > _; 25082: } 25082: namespace boost { namespace mpl { 25082: 25082: using ::mpl_::_; 25082: 25082: namespace placeholders { 25082: using mpl_::_; 25082: } 25082: 25082: }} 25082: 25082: 25082: 25082: namespace mpl_ { 25082: typedef arg<1> _1; 25082: 25082: } 25082: namespace boost { namespace mpl { 25082: 25082: using ::mpl_::_1; 25082: 25082: namespace placeholders { 25082: using mpl_::_1; 25082: } 25082: 25082: }} 25082: namespace mpl_ { 25082: typedef arg<2> _2; 25082: 25082: } 25082: namespace boost { namespace mpl { 25082: 25082: using ::mpl_::_2; 25082: 25082: namespace placeholders { 25082: using mpl_::_2; 25082: } 25082: 25082: }} 25082: namespace mpl_ { 25082: typedef arg<3> _3; 25082: 25082: } 25082: namespace boost { namespace mpl { 25082: 25082: using ::mpl_::_3; 25082: 25082: namespace placeholders { 25082: using mpl_::_3; 25082: } 25082: 25082: }} 25082: namespace mpl_ { 25082: typedef arg<4> _4; 25082: 25082: } 25082: namespace boost { namespace mpl { 25082: 25082: using ::mpl_::_4; 25082: 25082: namespace placeholders { 25082: using mpl_::_4; 25082: } 25082: 25082: }} 25082: namespace mpl_ { 25082: typedef arg<5> _5; 25082: 25082: } 25082: namespace boost { namespace mpl { 25082: 25082: using ::mpl_::_5; 25082: 25082: namespace placeholders { 25082: using mpl_::_5; 25082: } 25082: 25082: }} 25082: namespace mpl_ { 25082: typedef arg<6> _6; 25082: 25082: } 25082: namespace boost { namespace mpl { 25082: 25082: using ::mpl_::_6; 25082: 25082: namespace placeholders { 25082: using mpl_::_6; 25082: } 25082: 25082: }} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 44 "/usr/include/boost/mpl/placeholders.hpp" 2 3 4 25082: # 17 "/usr/include/boost/iterator/iterator_categories.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/type_traits/is_convertible.hpp" 1 3 4 25082: # 15 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/intrinsics.hpp" 1 3 4 25082: # 16 "/usr/include/boost/type_traits/intrinsics.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/detail/config.hpp" 1 3 4 25082: # 15 "/usr/include/boost/type_traits/detail/config.hpp" 3 4 25082: # 1 "/usr/include/boost/version.hpp" 1 3 4 25082: # 16 "/usr/include/boost/type_traits/detail/config.hpp" 2 3 4 25082: # 17 "/usr/include/boost/type_traits/intrinsics.hpp" 2 3 4 25082: # 16 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/integral_constant.hpp" 1 3 4 25082: # 31 "/usr/include/boost/type_traits/integral_constant.hpp" 3 4 25082: namespace mpl_{ 25082: 25082: template struct bool_; 25082: template struct integral_c; 25082: struct integral_c_tag; 25082: } 25082: 25082: namespace boost 25082: { 25082: namespace mpl 25082: { 25082: using ::mpl_::bool_; 25082: using ::mpl_::integral_c; 25082: using ::mpl_::integral_c_tag; 25082: } 25082: } 25082: 25082: 25082: 25082: namespace boost{ 25082: 25082: template 25082: struct integral_constant 25082: { 25082: typedef mpl::integral_c_tag tag; 25082: typedef T value_type; 25082: typedef integral_constant type; 25082: static const T value = val; 25082: 25082: 25082: 25082: 25082: template 25082: static U& dereference(U* p) { return *p; } 25082: 25082: operator const mpl::integral_c& ()const 25082: { 25082: static const char data[sizeof(long)] = { 0 }; 25082: return dereference(reinterpret_cast*>(&data)); 25082: } 25082: constexpr operator T()const { return val; } 25082: }; 25082: 25082: template 25082: T const integral_constant::value; 25082: 25082: template 25082: struct integral_constant 25082: { 25082: typedef mpl::integral_c_tag tag; 25082: typedef bool value_type; 25082: typedef integral_constant type; 25082: static const bool value = val; 25082: 25082: 25082: 25082: 25082: template 25082: static T& dereference(T* p) { return *p; } 25082: 25082: operator const mpl::bool_& ()const 25082: { 25082: static const char data = 0; 25082: return dereference(reinterpret_cast*>(&data)); 25082: } 25082: constexpr operator bool()const { return val; } 25082: }; 25082: 25082: template 25082: bool const integral_constant::value; 25082: 25082: typedef integral_constant true_type; 25082: typedef integral_constant false_type; 25082: 25082: } 25082: # 17 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/is_complete.hpp" 1 3 4 25082: # 13 "/usr/include/boost/type_traits/is_complete.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/remove_reference.hpp" 1 3 4 25082: # 15 "/usr/include/boost/type_traits/remove_reference.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: namespace detail{ 25082: 25082: 25082: 25082: 25082: template 25082: struct remove_rvalue_ref 25082: { 25082: typedef T type; 25082: }; 25082: 25082: template 25082: struct remove_rvalue_ref 25082: { 25082: typedef T type; 25082: }; 25082: 25082: 25082: } 25082: 25082: template struct remove_reference{ typedef typename boost::detail::remove_rvalue_ref::type type; }; 25082: template struct remove_reference{ typedef T type; }; 25082: # 53 "/usr/include/boost/type_traits/remove_reference.hpp" 3 4 25082: template using remove_reference_t = typename remove_reference::type; 25082: 25082: 25082: 25082: } 25082: # 14 "/usr/include/boost/type_traits/is_complete.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/is_function.hpp" 1 3 4 25082: # 14 "/usr/include/boost/type_traits/is_function.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/is_reference.hpp" 1 3 4 25082: # 15 "/usr/include/boost/type_traits/is_reference.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/is_lvalue_reference.hpp" 1 3 4 25082: # 26 "/usr/include/boost/type_traits/is_lvalue_reference.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: 25082: 25082: 25082: template struct is_lvalue_reference : public false_type{}; 25082: template struct is_lvalue_reference : public true_type{}; 25082: # 47 "/usr/include/boost/type_traits/is_lvalue_reference.hpp" 3 4 25082: } 25082: # 16 "/usr/include/boost/type_traits/is_reference.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/is_rvalue_reference.hpp" 1 3 4 25082: # 15 "/usr/include/boost/type_traits/is_rvalue_reference.hpp" 3 4 25082: namespace boost { 25082: 25082: template struct is_rvalue_reference : public false_type {}; 25082: 25082: template struct is_rvalue_reference : public true_type {}; 25082: 25082: 25082: } 25082: # 17 "/usr/include/boost/type_traits/is_reference.hpp" 2 3 4 25082: 25082: namespace boost { 25082: 25082: template struct is_reference 25082: : public 25082: integral_constant< 25082: bool, 25082: ::boost::is_lvalue_reference::value || ::boost::is_rvalue_reference::value> 25082: {}; 25082: 25082: } 25082: # 15 "/usr/include/boost/type_traits/is_function.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp" 1 3 4 25082: # 34 "/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp" 3 4 25082: namespace boost { 25082: namespace type_traits { 25082: 25082: template 25082: struct is_function_ptr_helper 25082: { 25082: static const bool value = false; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: 25082: template 25082: struct is_function_ptr_helper { static const bool value = true; }; 25082: # 419 "/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp" 3 4 25082: } 25082: } 25082: # 19 "/usr/include/boost/type_traits/is_function.hpp" 2 3 4 25082: # 30 "/usr/include/boost/type_traits/is_function.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: 25082: namespace detail { 25082: 25082: 25082: template 25082: struct is_function_chooser 25082: { 25082: template< typename T > struct result_ 25082: : public false_type {}; 25082: }; 25082: 25082: template <> 25082: struct is_function_chooser 25082: { 25082: template< typename T > struct result_ 25082: : public ::boost::type_traits::is_function_ptr_helper {}; 25082: }; 25082: 25082: template 25082: struct is_function_impl 25082: : public is_function_chooser< ::boost::is_reference::value > 25082: ::template result_ 25082: { 25082: }; 25082: # 88 "/usr/include/boost/type_traits/is_function.hpp" 3 4 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template struct is_function : integral_constant::value> {}; 25082: 25082: template struct is_function : public false_type {}; 25082: 25082: 25082: } 25082: # 15 "/usr/include/boost/type_traits/is_complete.hpp" 2 3 4 25082: # 29 "/usr/include/boost/type_traits/is_complete.hpp" 3 4 25082: namespace boost { 25082: # 39 "/usr/include/boost/type_traits/is_complete.hpp" 3 4 25082: namespace detail{ 25082: 25082: template 25082: struct ok_tag { double d; char c[N]; }; 25082: 25082: template 25082: ok_tag check_is_complete(int); 25082: template 25082: char check_is_complete(...); 25082: } 25082: 25082: template struct is_complete 25082: : public integral_constant::type>::value || (sizeof(detail::check_is_complete(0)) != sizeof(char))> {}; 25082: # 88 "/usr/include/boost/type_traits/is_complete.hpp" 3 4 25082: } 25082: # 18 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/is_void.hpp" 1 3 4 25082: # 14 "/usr/include/boost/type_traits/is_void.hpp" 3 4 25082: namespace boost { 25082: 25082: template 25082: struct is_void : public false_type {}; 25082: 25082: template<> struct is_void : public true_type {}; 25082: template<> struct is_void : public true_type{}; 25082: template<> struct is_void : public true_type{}; 25082: template<> struct is_void : public true_type{}; 25082: 25082: } 25082: # 19 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/is_array.hpp" 1 3 4 25082: # 20 "/usr/include/boost/type_traits/is_array.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: 25082: 25082: template struct is_array : public false_type {}; 25082: 25082: template struct is_array : public true_type {}; 25082: template struct is_array : public true_type{}; 25082: template struct is_array : public true_type{}; 25082: template struct is_array : public true_type{}; 25082: 25082: template struct is_array : public true_type{}; 25082: template struct is_array : public true_type{}; 25082: template struct is_array : public true_type{}; 25082: template struct is_array : public true_type{}; 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 20 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/type_traits/detail/yes_no_type.hpp" 1 3 4 25082: # 14 "/usr/include/boost/type_traits/detail/yes_no_type.hpp" 3 4 25082: namespace boost { 25082: namespace type_traits { 25082: 25082: typedef char yes_type; 25082: struct no_type 25082: { 25082: char padding[8]; 25082: }; 25082: 25082: } 25082: } 25082: # 23 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/type_traits/is_arithmetic.hpp" 1 3 4 25082: # 12 "/usr/include/boost/type_traits/is_arithmetic.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/is_integral.hpp" 1 3 4 25082: # 15 "/usr/include/boost/type_traits/is_integral.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: 25082: 25082: 25082: 25082: template struct is_integral : public false_type {}; 25082: template struct is_integral : public is_integral {}; 25082: template struct is_integral : public is_integral{}; 25082: template struct is_integral : public is_integral{}; 25082: 25082: 25082: 25082: 25082: template<> struct is_integral : public true_type {}; 25082: template<> struct is_integral : public true_type{}; 25082: template<> struct is_integral : public true_type{}; 25082: template<> struct is_integral : public true_type{}; 25082: 25082: template<> struct is_integral : public true_type{}; 25082: template<> struct is_integral : public true_type{}; 25082: template<> struct is_integral : public true_type{}; 25082: template<> struct is_integral : public true_type{}; 25082: 25082: template<> struct is_integral : public true_type{}; 25082: template<> struct is_integral : public true_type{}; 25082: 25082: 25082: 25082: 25082: 25082: template<> struct is_integral : public true_type{}; 25082: # 67 "/usr/include/boost/type_traits/is_integral.hpp" 3 4 25082: template<> struct is_integral< ::boost::ulong_long_type> : public true_type{}; 25082: template<> struct is_integral< ::boost::long_long_type> : public true_type{}; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template<> struct is_integral : public true_type{}; 25082: template<> struct is_integral : public true_type{}; 25082: 25082: 25082: template<> struct is_integral : public true_type{}; 25082: 25082: 25082: template<> struct is_integral : public true_type{}; 25082: 25082: 25082: 25082: 25082: } 25082: # 13 "/usr/include/boost/type_traits/is_arithmetic.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/is_floating_point.hpp" 1 3 4 25082: # 13 "/usr/include/boost/type_traits/is_floating_point.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: template struct is_floating_point : public false_type{}; 25082: template struct is_floating_point : public is_floating_point{}; 25082: template struct is_floating_point : public is_floating_point{}; 25082: template struct is_floating_point : public is_floating_point{}; 25082: template<> struct is_floating_point : public true_type{}; 25082: template<> struct is_floating_point : public true_type{}; 25082: template<> struct is_floating_point : public true_type{}; 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 14 "/usr/include/boost/type_traits/is_arithmetic.hpp" 2 3 4 25082: 25082: namespace boost { 25082: 25082: template 25082: struct is_arithmetic : public integral_constant::value || is_floating_point::value> {}; 25082: 25082: } 25082: # 26 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/type_traits/is_abstract.hpp" 1 3 4 25082: # 63 "/usr/include/boost/type_traits/is_abstract.hpp" 3 4 25082: namespace boost { 25082: 25082: namespace detail{ 25082: 25082: 25082: template 25082: struct is_abstract_imp 25082: { 25082: static const bool value = __is_abstract(T); 25082: }; 25082: # 140 "/usr/include/boost/type_traits/is_abstract.hpp" 3 4 25082: } 25082: 25082: 25082: template struct is_abstract : public integral_constant::value> {}; 25082: 25082: 25082: 25082: 25082: } 25082: # 29 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/type_traits/add_lvalue_reference.hpp" 1 3 4 25082: # 9 "/usr/include/boost/type_traits/add_lvalue_reference.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/add_reference.hpp" 1 3 4 25082: # 15 "/usr/include/boost/type_traits/add_reference.hpp" 3 4 25082: namespace boost { 25082: 25082: namespace detail { 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct add_reference_impl 25082: { 25082: typedef T& type; 25082: }; 25082: 25082: 25082: template 25082: struct add_reference_impl 25082: { 25082: typedef T&& type; 25082: }; 25082: 25082: 25082: } 25082: 25082: template struct add_reference 25082: { 25082: typedef typename boost::detail::add_reference_impl::type type; 25082: }; 25082: template struct add_reference 25082: { 25082: typedef T& type; 25082: }; 25082: 25082: 25082: template <> struct add_reference { typedef void type; }; 25082: 25082: template <> struct add_reference { typedef const void type; }; 25082: template <> struct add_reference { typedef const volatile void type; }; 25082: template <> struct add_reference { typedef volatile void type; }; 25082: 25082: 25082: 25082: 25082: template using add_reference_t = typename add_reference::type; 25082: 25082: 25082: 25082: 25082: } 25082: # 10 "/usr/include/boost/type_traits/add_lvalue_reference.hpp" 2 3 4 25082: 25082: namespace boost{ 25082: 25082: template struct add_lvalue_reference 25082: { 25082: typedef typename boost::add_reference::type type; 25082: }; 25082: 25082: 25082: template struct add_lvalue_reference 25082: { 25082: typedef T& type; 25082: }; 25082: 25082: 25082: 25082: 25082: template using add_lvalue_reference_t = typename add_lvalue_reference::type; 25082: 25082: 25082: 25082: } 25082: # 31 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/add_rvalue_reference.hpp" 1 3 4 25082: # 31 "/usr/include/boost/type_traits/add_rvalue_reference.hpp" 3 4 25082: namespace boost { 25082: 25082: namespace type_traits_detail { 25082: 25082: template 25082: struct add_rvalue_reference_helper 25082: { typedef T type; }; 25082: 25082: 25082: template 25082: struct add_rvalue_reference_helper 25082: { 25082: typedef T&& type; 25082: }; 25082: 25082: 25082: template 25082: struct add_rvalue_reference_imp 25082: { 25082: typedef typename boost::type_traits_detail::add_rvalue_reference_helper 25082: ::value == false && is_reference::value == false) >::type type; 25082: }; 25082: 25082: } 25082: 25082: template struct add_rvalue_reference 25082: { 25082: typedef typename boost::type_traits_detail::add_rvalue_reference_imp::type type; 25082: }; 25082: 25082: 25082: 25082: template using add_rvalue_reference_t = typename add_rvalue_reference::type; 25082: 25082: 25082: 25082: } 25082: # 32 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/type_traits/declval.hpp" 1 3 4 25082: # 37 "/usr/include/boost/type_traits/declval.hpp" 3 4 25082: namespace boost { 25082: 25082: template 25082: typename add_rvalue_reference::type declval() noexcept; 25082: 25082: } 25082: # 39 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace boost { 25082: # 59 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4 25082: namespace detail { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct or_helper 25082: { 25082: static const bool value = (A::value || B::value || C::value); 25082: }; 25082: 25082: template, boost::is_function, boost::is_array >::value> 25082: struct is_convertible_basic_impl 25082: { 25082: 25082: static const bool value = is_void::value; 25082: }; 25082: 25082: template 25082: class is_convertible_basic_impl 25082: { 25082: typedef char one; 25082: typedef int two; 25082: 25082: template 25082: static void test_aux(To1); 25082: 25082: template 25082: static decltype(test_aux(boost::declval()), one()) test(int); 25082: 25082: template 25082: static two test(...); 25082: 25082: public: 25082: static const bool value = sizeof(test(0)) == 1; 25082: }; 25082: # 362 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4 25082: template 25082: struct is_convertible_impl 25082: { 25082: static const bool value = ( ::boost::detail::is_convertible_basic_impl::value && !::boost::is_array::value && !::boost::is_function::value); 25082: }; 25082: 25082: 25082: template 25082: struct is_convertible_impl_select 25082: { 25082: template 25082: struct rebind 25082: { 25082: typedef is_convertible_impl type; 25082: }; 25082: }; 25082: 25082: template <> 25082: struct is_convertible_impl_select 25082: { 25082: template 25082: struct rebind 25082: { 25082: typedef true_type type; 25082: }; 25082: }; 25082: 25082: template <> 25082: struct is_convertible_impl_select 25082: { 25082: template 25082: struct rebind 25082: { 25082: typedef false_type type; 25082: }; 25082: }; 25082: 25082: template <> 25082: struct is_convertible_impl_select 25082: { 25082: template 25082: struct rebind 25082: { 25082: typedef false_type type; 25082: }; 25082: }; 25082: 25082: template 25082: struct is_convertible_impl_dispatch_base 25082: { 25082: 25082: typedef is_convertible_impl_select< 25082: ::boost::is_arithmetic::value, 25082: ::boost::is_arithmetic::value, 25082: 25082: 25082: 25082: 25082: false 25082: 25082: > selector; 25082: 25082: 25082: 25082: typedef typename selector::template rebind isc_binder; 25082: typedef typename isc_binder::type type; 25082: }; 25082: 25082: template 25082: struct is_convertible_impl_dispatch 25082: : public is_convertible_impl_dispatch_base::type 25082: {}; 25082: # 442 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: template <> struct is_convertible_impl_dispatch : public true_type{}; 25082: 25082: 25082: 25082: 25082: 25082: template struct is_convertible_impl_dispatch : public false_type{}; 25082: template struct is_convertible_impl_dispatch : public false_type{}; 25082: 25082: 25082: template struct is_convertible_impl_dispatch : public false_type{}; 25082: template struct is_convertible_impl_dispatch : public false_type{}; 25082: template struct is_convertible_impl_dispatch : public false_type{}; 25082: template struct is_convertible_impl_dispatch : public false_type{}; 25082: template struct is_convertible_impl_dispatch : public false_type{}; 25082: template struct is_convertible_impl_dispatch : public false_type{}; 25082: 25082: 25082: } 25082: 25082: template 25082: struct is_convertible : public integral_constant::value> 25082: { 25082: static_assert(boost::is_complete::value || boost::is_void::value || boost::is_array::value, "Destination argument type to is_convertible must be a complete type"); 25082: static_assert(boost::is_complete::value || boost::is_void::value || boost::is_array::value, "From argument type to is_convertible must be a complete type"); 25082: }; 25082: # 504 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4 25082: } 25082: # 20 "/usr/include/boost/iterator/iterator_categories.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: namespace boost { 25082: namespace iterators { 25082: 25082: 25082: 25082: 25082: 25082: struct no_traversal_tag {}; 25082: 25082: struct incrementable_traversal_tag 25082: : no_traversal_tag 25082: { 25082: 25082: 25082: }; 25082: 25082: struct single_pass_traversal_tag 25082: : incrementable_traversal_tag 25082: { 25082: 25082: 25082: }; 25082: 25082: struct forward_traversal_tag 25082: : single_pass_traversal_tag 25082: { 25082: 25082: 25082: }; 25082: 25082: struct bidirectional_traversal_tag 25082: : forward_traversal_tag 25082: { 25082: 25082: 25082: }; 25082: 25082: struct random_access_traversal_tag 25082: : bidirectional_traversal_tag 25082: { 25082: 25082: 25082: }; 25082: 25082: namespace detail 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct old_category_to_traversal 25082: : mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , void 25082: > 25082: > 25082: > 25082: > 25082: > 25082: {}; 25082: 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: struct iterator_category_to_traversal 25082: : mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , boost::iterators::detail::old_category_to_traversal 25082: > 25082: {}; 25082: 25082: 25082: template 25082: struct iterator_traversal 25082: : iterator_category_to_traversal< 25082: typename std::iterator_traits::iterator_category 25082: > 25082: {}; 25082: # 146 "/usr/include/boost/iterator/iterator_categories.hpp" 3 4 25082: template 25082: struct pure_traversal_tag 25082: : mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , void 25082: > 25082: > 25082: > 25082: > 25082: > 25082: { 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct pure_iterator_traversal 25082: : pure_traversal_tag::type> 25082: {}; 25082: # 194 "/usr/include/boost/iterator/iterator_categories.hpp" 3 4 25082: } 25082: 25082: using iterators::no_traversal_tag; 25082: using iterators::incrementable_traversal_tag; 25082: using iterators::single_pass_traversal_tag; 25082: using iterators::forward_traversal_tag; 25082: using iterators::bidirectional_traversal_tag; 25082: using iterators::random_access_traversal_tag; 25082: using iterators::iterator_category_to_traversal; 25082: using iterators::iterator_traversal; 25082: 25082: 25082: 25082: 25082: namespace detail { 25082: using iterators::pure_traversal_tag; 25082: } 25082: 25082: } 25082: 25082: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4 25082: # 215 "/usr/include/boost/iterator/iterator_categories.hpp" 2 3 4 25082: # 13 "/usr/include/boost/iterator/iterator_adaptor.hpp" 2 3 4 25082: # 1 "/usr/include/boost/iterator/iterator_facade.hpp" 1 3 4 25082: # 11 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4 25082: # 1 "/usr/include/boost/iterator/interoperable.hpp" 1 3 4 25082: # 11 "/usr/include/boost/iterator/interoperable.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/or.hpp" 1 3 4 25082: # 43 "/usr/include/boost/mpl/or.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/or.hpp" 1 3 4 25082: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/or.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: namespace aux { 25082: 25082: template< bool C_, typename T1, typename T2, typename T3, typename T4 > 25082: struct or_impl 25082: : true_ 25082: { 25082: }; 25082: 25082: template< typename T1, typename T2, typename T3, typename T4 > 25082: struct or_impl< false,T1,T2,T3,T4 > 25082: : or_impl< 25082: ::boost::mpl::aux::nested_type_wknd::value 25082: , T2, T3, T4 25082: , false_ 25082: > 25082: { 25082: }; 25082: 25082: template<> 25082: struct or_impl< 25082: false 25082: , false_, false_, false_, false_ 25082: > 25082: : false_ 25082: { 25082: }; 25082: 25082: } 25082: 25082: template< 25082: typename T1 = na 25082: , typename T2 = na 25082: , typename T3 = false_, typename T4 = false_, typename T5 = false_ 25082: > 25082: struct or_ 25082: 25082: : aux::or_impl< 25082: ::boost::mpl::aux::nested_type_wknd::value 25082: , T2, T3, T4, T5 25082: > 25082: 25082: { 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: 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> { }; } 25082: 25082: 25082: 25082: 25082: 25082: }} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 44 "/usr/include/boost/mpl/or.hpp" 2 3 4 25082: # 12 "/usr/include/boost/iterator/interoperable.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4 25082: # 16 "/usr/include/boost/iterator/interoperable.hpp" 2 3 4 25082: 25082: namespace boost { 25082: namespace iterators { 25082: # 34 "/usr/include/boost/iterator/interoperable.hpp" 3 4 25082: template 25082: struct is_interoperable 25082: 25082: 25082: 25082: : mpl::or_< 25082: is_convertible< A, B > 25082: , is_convertible< B, A > > 25082: 25082: { 25082: }; 25082: 25082: } 25082: 25082: using iterators::is_interoperable; 25082: 25082: } 25082: 25082: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4 25082: # 53 "/usr/include/boost/iterator/interoperable.hpp" 2 3 4 25082: # 12 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: # 1 "/usr/include/boost/iterator/iterator_traits.hpp" 1 3 4 25082: # 12 "/usr/include/boost/iterator/iterator_traits.hpp" 3 4 25082: namespace boost { 25082: namespace iterators { 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct iterator_value 25082: { 25082: typedef typename std::iterator_traits::value_type type; 25082: }; 25082: 25082: template 25082: struct iterator_reference 25082: { 25082: typedef typename std::iterator_traits::reference type; 25082: }; 25082: 25082: 25082: template 25082: struct iterator_pointer 25082: { 25082: typedef typename std::iterator_traits::pointer type; 25082: }; 25082: 25082: template 25082: struct iterator_difference 25082: { 25082: typedef typename std::iterator_traits::difference_type type; 25082: }; 25082: 25082: template 25082: struct iterator_category 25082: { 25082: typedef typename std::iterator_traits::iterator_category type; 25082: }; 25082: 25082: } 25082: 25082: using iterators::iterator_value; 25082: using iterators::iterator_reference; 25082: using iterators::iterator_pointer; 25082: using iterators::iterator_difference; 25082: using iterators::iterator_category; 25082: 25082: } 25082: # 13 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 1 3 4 25082: # 10 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/and.hpp" 1 3 4 25082: # 42 "/usr/include/boost/mpl/and.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp" 1 3 4 25082: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: namespace aux { 25082: 25082: template< bool C_, typename T1, typename T2, typename T3, typename T4 > 25082: struct and_impl 25082: : false_ 25082: { 25082: }; 25082: 25082: template< typename T1, typename T2, typename T3, typename T4 > 25082: struct and_impl< true,T1,T2,T3,T4 > 25082: : and_impl< 25082: ::boost::mpl::aux::nested_type_wknd::value 25082: , T2, T3, T4 25082: , true_ 25082: > 25082: { 25082: }; 25082: 25082: template<> 25082: struct and_impl< 25082: true 25082: , true_, true_, true_, true_ 25082: > 25082: : true_ 25082: { 25082: }; 25082: 25082: } 25082: 25082: template< 25082: typename T1 = na 25082: , typename T2 = na 25082: , typename T3 = true_, typename T4 = true_, typename T5 = true_ 25082: > 25082: struct and_ 25082: 25082: : aux::and_impl< 25082: ::boost::mpl::aux::nested_type_wknd::value 25082: , T2, T3, T4, T5 25082: > 25082: 25082: { 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: 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> { }; } 25082: 25082: 25082: 25082: 25082: 25082: }} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 43 "/usr/include/boost/mpl/and.hpp" 2 3 4 25082: # 11 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/type_traits/is_same.hpp" 1 3 4 25082: # 26 "/usr/include/boost/type_traits/is_same.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: template struct is_same : public false_type {}; 25082: template struct is_same : public true_type {}; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 17 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/is_const.hpp" 1 3 4 25082: # 27 "/usr/include/boost/type_traits/is_const.hpp" 3 4 25082: namespace boost { 25082: # 36 "/usr/include/boost/type_traits/is_const.hpp" 3 4 25082: template 25082: struct is_const : public false_type {}; 25082: template struct is_const : public true_type{}; 25082: template struct is_const : public true_type{}; 25082: template struct is_const : public true_type{}; 25082: 25082: 25082: 25082: } 25082: # 18 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4 25082: # 24 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/detail/indirect_traits.hpp" 1 3 4 25082: # 9 "/usr/include/boost/detail/indirect_traits.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/is_pointer.hpp" 1 3 4 25082: # 26 "/usr/include/boost/type_traits/is_pointer.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: 25082: 25082: template struct is_pointer : public false_type{}; 25082: template struct is_pointer : public true_type{}; 25082: template struct is_pointer : public true_type{}; 25082: template struct is_pointer : public true_type{}; 25082: template struct is_pointer : public true_type{}; 25082: # 45 "/usr/include/boost/type_traits/is_pointer.hpp" 3 4 25082: } 25082: # 10 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/is_class.hpp" 1 3 4 25082: # 31 "/usr/include/boost/type_traits/is_class.hpp" 3 4 25082: namespace boost { 25082: 25082: namespace detail { 25082: # 96 "/usr/include/boost/type_traits/is_class.hpp" 3 4 25082: template 25082: struct is_class_impl 25082: { 25082: static const bool value = __is_class(T); 25082: }; 25082: 25082: 25082: } 25082: 25082: template struct is_class : public integral_constant::value> {}; 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 11 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/type_traits/is_volatile.hpp" 1 3 4 25082: # 27 "/usr/include/boost/type_traits/is_volatile.hpp" 3 4 25082: namespace boost { 25082: # 36 "/usr/include/boost/type_traits/is_volatile.hpp" 3 4 25082: template 25082: struct is_volatile : public false_type {}; 25082: template struct is_volatile : public true_type{}; 25082: template struct is_volatile : public true_type{}; 25082: template struct is_volatile : public true_type{}; 25082: 25082: 25082: 25082: } 25082: # 13 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 1 3 4 25082: # 23 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp" 1 3 4 25082: # 35 "/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp" 3 4 25082: namespace boost { 25082: namespace type_traits { 25082: 25082: template 25082: struct is_mem_fun_pointer_impl 25082: { 25082: static const bool value = false; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: template 25082: struct is_mem_fun_pointer_impl { static const bool value = true; }; 25082: # 1254 "/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp" 3 4 25082: } 25082: } 25082: # 24 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/remove_cv.hpp" 1 3 4 25082: # 18 "/usr/include/boost/type_traits/remove_cv.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: template struct remove_cv{ typedef T type; }; 25082: template struct remove_cv{ typedef T type; }; 25082: template struct remove_cv{ typedef T type; }; 25082: template struct remove_cv{ typedef T type; }; 25082: 25082: 25082: template struct remove_cv{ typedef T type[N]; }; 25082: template struct remove_cv{ typedef T type[N]; }; 25082: template struct remove_cv{ typedef T type[N]; }; 25082: 25082: template struct remove_cv{ typedef T type[]; }; 25082: template struct remove_cv{ typedef T type[]; }; 25082: template struct remove_cv{ typedef T type[]; }; 25082: 25082: 25082: 25082: 25082: 25082: template using remove_cv_t = typename remove_cv::type; 25082: 25082: 25082: 25082: } 25082: # 25 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 2 3 4 25082: # 33 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: 25082: 25082: 25082: template struct is_member_function_pointer 25082: : public ::boost::integral_constant::type>::value>{}; 25082: # 118 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 3 4 25082: } 25082: # 14 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/is_member_pointer.hpp" 1 3 4 25082: # 27 "/usr/include/boost/type_traits/is_member_pointer.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: 25082: 25082: template struct is_member_pointer : public integral_constant::value>{}; 25082: template struct is_member_pointer : public true_type{}; 25082: 25082: 25082: template struct is_member_pointer : public true_type{}; 25082: template struct is_member_pointer : public true_type{}; 25082: template struct is_member_pointer : public true_type{}; 25082: 25082: 25082: 25082: 25082: } 25082: # 15 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/type_traits/remove_pointer.hpp" 1 3 4 25082: # 20 "/usr/include/boost/type_traits/remove_pointer.hpp" 3 4 25082: namespace boost { 25082: # 68 "/usr/include/boost/type_traits/remove_pointer.hpp" 3 4 25082: template struct remove_pointer{ typedef T type; }; 25082: template struct remove_pointer{ typedef T type; }; 25082: template struct remove_pointer{ typedef T type; }; 25082: template struct remove_pointer{ typedef T type; }; 25082: template struct remove_pointer{ typedef T type; }; 25082: 25082: 25082: 25082: 25082: 25082: template using remove_pointer_t = typename remove_pointer::type; 25082: 25082: 25082: 25082: } 25082: # 18 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4 25082: # 29 "/usr/include/boost/detail/indirect_traits.hpp" 3 4 25082: namespace boost { namespace detail { 25082: 25082: namespace indirect_traits { 25082: 25082: template 25082: struct is_reference_to_const : mpl::false_ 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_const : mpl::true_ 25082: { 25082: }; 25082: # 50 "/usr/include/boost/detail/indirect_traits.hpp" 3 4 25082: template 25082: struct is_reference_to_function : mpl::false_ 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_function : is_function 25082: { 25082: }; 25082: 25082: template 25082: struct is_pointer_to_function : mpl::false_ 25082: { 25082: }; 25082: 25082: 25082: 25082: template 25082: struct is_pointer_to_function : is_function 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_member_function_pointer_impl : mpl::false_ 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_member_function_pointer_impl 25082: : is_member_function_pointer::type> 25082: { 25082: }; 25082: 25082: 25082: template 25082: struct is_reference_to_member_function_pointer 25082: : is_reference_to_member_function_pointer_impl 25082: { 25082: 25082: }; 25082: 25082: template 25082: struct is_reference_to_function_pointer_aux 25082: : mpl::and_< 25082: is_reference 25082: , is_pointer_to_function< 25082: typename remove_cv< 25082: typename remove_reference::type 25082: >::type 25082: > 25082: > 25082: { 25082: 25082: }; 25082: 25082: template 25082: struct is_reference_to_function_pointer 25082: : mpl::if_< 25082: is_reference_to_function 25082: , mpl::false_ 25082: , is_reference_to_function_pointer_aux 25082: >::type 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_non_const 25082: : mpl::and_< 25082: is_reference 25082: , mpl::not_< 25082: is_reference_to_const 25082: > 25082: > 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_volatile : mpl::false_ 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_volatile : mpl::true_ 25082: { 25082: }; 25082: # 144 "/usr/include/boost/detail/indirect_traits.hpp" 3 4 25082: template 25082: struct is_reference_to_pointer : mpl::false_ 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_pointer : mpl::true_ 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_pointer : mpl::true_ 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_pointer : mpl::true_ 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_pointer : mpl::true_ 25082: { 25082: }; 25082: 25082: template 25082: struct is_reference_to_class 25082: : mpl::and_< 25082: is_reference 25082: , is_class< 25082: typename remove_cv< 25082: typename remove_reference::type 25082: >::type 25082: > 25082: > 25082: { 25082: 25082: }; 25082: 25082: template 25082: struct is_pointer_to_class 25082: : mpl::and_< 25082: is_pointer 25082: , is_class< 25082: typename remove_cv< 25082: typename remove_pointer::type 25082: >::type 25082: > 25082: > 25082: { 25082: 25082: }; 25082: 25082: 25082: } 25082: 25082: using namespace indirect_traits; 25082: 25082: }} 25082: # 27 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace boost { 25082: namespace iterators { 25082: 25082: 25082: struct use_default; 25082: 25082: namespace detail { 25082: 25082: struct input_output_iterator_tag 25082: : std::input_iterator_tag 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: operator std::output_iterator_tag() const 25082: { 25082: return std::output_iterator_tag(); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct iterator_writability_disabled 25082: 25082: : mpl::or_< 25082: is_const 25082: , boost::detail::indirect_traits::is_reference_to_const 25082: , is_const 25082: > 25082: 25082: 25082: 25082: {}; 25082: # 83 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 3 4 25082: template 25082: struct iterator_facade_default_category 25082: : mpl::eval_if< 25082: mpl::and_< 25082: is_reference 25082: , is_convertible 25082: > 25082: , mpl::eval_if< 25082: is_convertible 25082: , mpl::identity 25082: , mpl::if_< 25082: is_convertible 25082: , std::bidirectional_iterator_tag 25082: , std::forward_iterator_tag 25082: > 25082: > 25082: , typename mpl::eval_if< 25082: mpl::and_< 25082: is_convertible 25082: 25082: 25082: , is_convertible 25082: > 25082: , mpl::identity 25082: , mpl::identity 25082: > 25082: > 25082: { 25082: }; 25082: 25082: 25082: template 25082: struct is_iterator_category 25082: : mpl::or_< 25082: is_convertible 25082: , is_convertible 25082: > 25082: { 25082: }; 25082: 25082: template 25082: struct is_iterator_traversal 25082: : is_convertible 25082: {}; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct iterator_category_with_traversal 25082: : Category, Traversal 25082: { 25082: 25082: 25082: 25082: enum { mpl_assertion_in_line_145 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_not_arg( (void (*) ( is_convertible< typename iterator_category_to_traversal::type , Traversal >))0, 1 ) ) ) } 25082: 25082: 25082: 25082: ; 25082: 25082: enum { mpl_assertion_in_line_147 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_arg( (void (*) (is_iterator_category))0, 1 ) ) ) }; 25082: enum { mpl_assertion_in_line_148 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_not_arg( (void (*) (is_iterator_category))0, 1 ) ) ) }; 25082: enum { mpl_assertion_in_line_149 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_not_arg( (void (*) (is_iterator_traversal))0, 1 ) ) ) }; 25082: 25082: enum { mpl_assertion_in_line_151 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_arg( (void (*) (is_iterator_traversal))0, 1 ) ) ) }; 25082: 25082: }; 25082: 25082: 25082: 25082: template 25082: struct facade_iterator_category_impl 25082: { 25082: enum { mpl_assertion_in_line_160 = sizeof( boost::mpl::assertion_failed( boost::mpl::assert_not_arg( (void (*) (is_iterator_category))0, 1 ) ) ) }; 25082: 25082: typedef typename iterator_facade_default_category< 25082: Traversal,ValueParam,Reference 25082: >::type category; 25082: 25082: typedef typename mpl::if_< 25082: is_same< 25082: Traversal 25082: , typename iterator_category_to_traversal::type 25082: > 25082: , category 25082: , iterator_category_with_traversal 25082: >::type type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: struct facade_iterator_category 25082: : mpl::eval_if< 25082: is_iterator_category 25082: , mpl::identity 25082: , facade_iterator_category_impl 25082: > 25082: { 25082: }; 25082: 25082: }}} 25082: 25082: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4 25082: # 192 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4 25082: # 16 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: # 1 "/usr/include/boost/iterator/detail/enable_if.hpp" 1 3 4 25082: # 13 "/usr/include/boost/iterator/detail/enable_if.hpp" 3 4 25082: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4 25082: # 14 "/usr/include/boost/iterator/detail/enable_if.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace boost 25082: { 25082: 25082: namespace iterators 25082: { 25082: 25082: 25082: 25082: template 25082: struct enabled 25082: { 25082: template 25082: struct base 25082: { 25082: typedef T type; 25082: }; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: struct enabled 25082: { 25082: template 25082: struct base 25082: { 25082: # 62 "/usr/include/boost/iterator/detail/enable_if.hpp" 3 4 25082: }; 25082: }; 25082: 25082: 25082: template 25082: struct enable_if 25082: 25082: : enabled<(Cond::value)>::template base 25082: 25082: 25082: 25082: { 25082: }; 25082: 25082: } 25082: 25082: } 25082: 25082: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4 25082: # 82 "/usr/include/boost/iterator/detail/enable_if.hpp" 2 3 4 25082: # 17 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/utility/addressof.hpp" 1 3 4 25082: # 20 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/type_traits/add_const.hpp" 1 3 4 25082: # 15 "/usr/include/boost/type_traits/add_const.hpp" 3 4 25082: namespace boost { 25082: # 30 "/usr/include/boost/type_traits/add_const.hpp" 3 4 25082: template struct add_const 25082: { 25082: typedef T const type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template struct add_const 25082: { 25082: typedef T& type; 25082: }; 25082: 25082: 25082: 25082: template using add_const_t = typename add_const::type; 25082: 25082: 25082: 25082: } 25082: # 23 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: # 1 "/usr/include/boost/type_traits/add_pointer.hpp" 1 3 4 25082: # 14 "/usr/include/boost/type_traits/add_pointer.hpp" 3 4 25082: namespace boost { 25082: # 50 "/usr/include/boost/type_traits/add_pointer.hpp" 3 4 25082: template 25082: struct add_pointer 25082: { 25082: typedef typename remove_reference::type no_ref_type; 25082: typedef no_ref_type* type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template using add_pointer_t = typename add_pointer::type; 25082: 25082: 25082: 25082: } 25082: # 24 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/type_traits/remove_const.hpp" 1 3 4 25082: # 18 "/usr/include/boost/type_traits/remove_const.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: template struct remove_const{ typedef T type; }; 25082: template struct remove_const{ typedef T type; }; 25082: 25082: 25082: template struct remove_const{ typedef T type[N]; }; 25082: 25082: template struct remove_const{ typedef T type[]; }; 25082: 25082: 25082: 25082: 25082: 25082: template using remove_const_t = typename remove_const::type; 25082: 25082: 25082: 25082: } 25082: # 26 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/type_traits/is_pod.hpp" 1 3 4 25082: # 15 "/usr/include/boost/type_traits/is_pod.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/is_scalar.hpp" 1 3 4 25082: # 13 "/usr/include/boost/type_traits/is_scalar.hpp" 3 4 25082: # 1 "/usr/include/boost/type_traits/is_enum.hpp" 1 3 4 25082: # 32 "/usr/include/boost/type_traits/is_enum.hpp" 3 4 25082: namespace boost { 25082: # 160 "/usr/include/boost/type_traits/is_enum.hpp" 3 4 25082: template struct is_enum : public integral_constant {}; 25082: 25082: 25082: 25082: } 25082: # 14 "/usr/include/boost/type_traits/is_scalar.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: namespace boost { 25082: 25082: template 25082: struct is_scalar 25082: : public integral_constant::value || ::boost::is_enum::value || ::boost::is_pointer::value || ::boost::is_member_pointer::value> 25082: {}; 25082: 25082: } 25082: # 16 "/usr/include/boost/type_traits/is_pod.hpp" 2 3 4 25082: # 30 "/usr/include/boost/type_traits/is_pod.hpp" 3 4 25082: namespace boost { 25082: 25082: 25082: template< typename T > struct is_POD; 25082: 25082: template struct is_pod 25082: : public integral_constant::value || ::boost::is_void::value || __is_pod(T)> 25082: {}; 25082: 25082: 25082: template struct is_pod : public is_pod{}; 25082: 25082: 25082: 25082: 25082: template<> struct is_pod : public true_type{}; 25082: 25082: 25082: template<> struct is_pod : public true_type{}; 25082: template<> struct is_pod : public true_type{}; 25082: template<> struct is_pod : public true_type{}; 25082: 25082: 25082: template struct is_POD : public is_pod{}; 25082: 25082: } 25082: # 29 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/always.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/always.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessor/default_params.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/always.hpp" 2 3 4 25082: 25082: 25082: 25082: namespace boost { namespace mpl { 25082: 25082: template< typename Value > struct always 25082: { 25082: template< 25082: typename T1 = na , typename T2 = na , typename T3 = na , typename T4 = na , typename T5 = na 25082: > 25082: struct apply 25082: { 25082: typedef Value type; 25082: }; 25082: }; 25082: 25082: 25082: 25082: }} 25082: # 36 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/apply.hpp" 1 3 4 25082: # 22 "/usr/include/boost/mpl/apply.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/apply_fwd.hpp" 1 3 4 25082: # 31 "/usr/include/boost/mpl/apply_fwd.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp" 1 3 4 25082: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: template< 25082: typename F, typename T1 = na, typename T2 = na, typename T3 = na 25082: , typename T4 = na, typename T5 = na 25082: > 25082: struct apply; 25082: 25082: template< 25082: typename F 25082: > 25082: struct apply0; 25082: 25082: template< 25082: typename F, typename T1 25082: > 25082: struct apply1; 25082: 25082: template< 25082: typename F, typename T1, typename T2 25082: > 25082: struct apply2; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3 25082: > 25082: struct apply3; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: > 25082: struct apply4; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5 25082: > 25082: struct apply5; 25082: 25082: }} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 32 "/usr/include/boost/mpl/apply_fwd.hpp" 2 3 4 25082: # 23 "/usr/include/boost/mpl/apply.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4 25082: # 23 "/usr/include/boost/mpl/apply_wrap.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/has_apply.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/aux_/has_apply.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/has_xxx.hpp" 1 3 4 25082: # 21 "/usr/include/boost/mpl/has_xxx.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/type_wrapper.hpp" 1 3 4 25082: # 20 "/usr/include/boost/mpl/aux_/type_wrapper.hpp" 3 4 25082: namespace boost { namespace mpl { namespace aux { 25082: 25082: template< typename T > struct type_wrapper 25082: { 25082: typedef T type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template< typename T > struct wrapped_type; 25082: 25082: template< typename T > struct wrapped_type< type_wrapper > 25082: { 25082: typedef T type; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: }}} 25082: # 22 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/config/has_xxx.hpp" 1 3 4 25082: # 25 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/msvc_typename.hpp" 1 3 4 25082: # 26 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/preprocessor/array/elem.hpp" 1 3 4 25082: # 15 "/usr/include/boost/preprocessor/array/elem.hpp" 3 4 25082: # 1 "/usr/include/boost/preprocessor/array/data.hpp" 1 3 4 25082: # 16 "/usr/include/boost/preprocessor/array/elem.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/array/size.hpp" 1 3 4 25082: # 17 "/usr/include/boost/preprocessor/array/elem.hpp" 2 3 4 25082: # 31 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/preprocessor/repetition/enum_params.hpp" 1 3 4 25082: # 34 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4 25082: # 1 "/usr/include/boost/preprocessor/repetition/enum_trailing_params.hpp" 1 3 4 25082: # 35 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4 25082: # 18 "/usr/include/boost/mpl/aux_/has_apply.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/has_apply.hpp" 1 3 4 25082: # 19 "/usr/include/boost/mpl/aux_/has_apply.hpp" 2 3 4 25082: 25082: namespace boost { namespace mpl { namespace aux { 25082: 25082: template< typename T, typename fallback_ = boost::mpl::bool_ > struct has_apply { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper const volatile* , boost::mpl::aux::type_wrapper* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_ type; }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: }}} 25082: # 24 "/usr/include/boost/mpl/apply_wrap.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/msvc_never_true.hpp" 1 3 4 25082: # 26 "/usr/include/boost/mpl/apply_wrap.hpp" 2 3 4 25082: # 34 "/usr/include/boost/mpl/apply_wrap.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp" 1 3 4 25082: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: template< 25082: typename F 25082: 25082: , typename has_apply_ = typename aux::has_apply::type 25082: 25082: > 25082: struct apply_wrap0 25082: 25082: : F::template apply< > 25082: { 25082: }; 25082: 25082: template< typename F > 25082: struct apply_wrap0< F,true_ > 25082: : F::apply 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1 25082: 25082: > 25082: struct apply_wrap1 25082: 25082: : F::template apply 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2 25082: 25082: > 25082: struct apply_wrap2 25082: 25082: : F::template apply< T1,T2 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3 25082: 25082: > 25082: struct apply_wrap3 25082: 25082: : F::template apply< T1,T2,T3 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: 25082: > 25082: struct apply_wrap4 25082: 25082: : F::template apply< T1,T2,T3,T4 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5 25082: 25082: > 25082: struct apply_wrap5 25082: 25082: : F::template apply< T1,T2,T3,T4,T5 > 25082: { 25082: }; 25082: 25082: }} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 35 "/usr/include/boost/mpl/apply_wrap.hpp" 2 3 4 25082: # 24 "/usr/include/boost/mpl/apply.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/placeholders.hpp" 1 3 4 25082: # 25 "/usr/include/boost/mpl/apply.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/lambda.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/lambda.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/bind.hpp" 1 3 4 25082: # 23 "/usr/include/boost/mpl/bind.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/bind_fwd.hpp" 1 3 4 25082: # 25 "/usr/include/boost/mpl/bind_fwd.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/config/bind.hpp" 1 3 4 25082: # 26 "/usr/include/boost/mpl/bind_fwd.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp" 1 3 4 25082: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: template< 25082: typename F, typename T1 = na, typename T2 = na, typename T3 = na 25082: , typename T4 = na, typename T5 = na 25082: > 25082: struct bind; 25082: 25082: template< 25082: typename F 25082: > 25082: struct bind0; 25082: 25082: template< 25082: typename F, typename T1 25082: > 25082: struct bind1; 25082: 25082: template< 25082: typename F, typename T1, typename T2 25082: > 25082: struct bind2; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3 25082: > 25082: struct bind3; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: > 25082: struct bind4; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5 25082: > 25082: struct bind5; 25082: 25082: }} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 33 "/usr/include/boost/mpl/bind_fwd.hpp" 2 3 4 25082: # 24 "/usr/include/boost/mpl/bind.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/placeholders.hpp" 1 3 4 25082: # 25 "/usr/include/boost/mpl/bind.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/next.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/next.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/next_prior.hpp" 1 3 4 25082: # 17 "/usr/include/boost/mpl/next_prior.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/common_name_wknd.hpp" 1 3 4 25082: # 18 "/usr/include/boost/mpl/next_prior.hpp" 2 3 4 25082: 25082: 25082: 25082: namespace boost { namespace mpl { 25082: 25082: 25082: 25082: 25082: template< 25082: typename T = na 25082: > 25082: struct next 25082: { 25082: typedef typename T::next type; 25082: 25082: }; 25082: 25082: template< 25082: typename T = na 25082: > 25082: struct prior 25082: { 25082: typedef typename T::prior type; 25082: 25082: }; 25082: 25082: 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> { }; } 25082: 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> { }; } 25082: 25082: }} 25082: # 18 "/usr/include/boost/mpl/next.hpp" 2 3 4 25082: # 26 "/usr/include/boost/mpl/bind.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/protect.hpp" 1 3 4 25082: # 23 "/usr/include/boost/mpl/protect.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: template< 25082: typename T = na 25082: , int not_le_ = 0 25082: > 25082: struct protect : T 25082: { 25082: 25082: 25082: 25082: typedef protect type; 25082: 25082: }; 25082: # 48 "/usr/include/boost/mpl/protect.hpp" 3 4 25082: template<> struct protect< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : protect< T1 > { }; }; 25082: 25082: namespace aux { template< typename T1 > struct template_arity< protect< T1 > > : int_<1> { }; template<> struct template_arity< protect< na > > : int_<-1> { }; } 25082: 25082: 25082: }} 25082: # 27 "/usr/include/boost/mpl/bind.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4 25082: # 28 "/usr/include/boost/mpl/bind.hpp" 2 3 4 25082: # 50 "/usr/include/boost/mpl/bind.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp" 1 3 4 25082: # 13 "/usr/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename T, typename U1, typename U2, typename U3, typename U4 25082: , typename U5 25082: > 25082: struct resolve_bind_arg 25082: { 25082: typedef T type; 25082: }; 25082: 25082: template< 25082: typename T 25082: , typename Arg 25082: > 25082: struct replace_unnamed_arg 25082: { 25082: typedef Arg next; 25082: typedef T type; 25082: }; 25082: 25082: template< 25082: typename Arg 25082: > 25082: struct replace_unnamed_arg< arg< -1 >, Arg > 25082: { 25082: typedef typename Arg::next next; 25082: typedef Arg type; 25082: }; 25082: 25082: template< 25082: int N, typename U1, typename U2, typename U3, typename U4, typename U5 25082: > 25082: struct resolve_bind_arg< arg, U1, U2, U3, U4, U5 > 25082: { 25082: typedef typename apply_wrap5, U1, U2, U3, U4, U5>::type type; 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5, typename U1, typename U2, typename U3, typename U4 25082: , typename U5 25082: > 25082: struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 > 25082: { 25082: typedef bind< F,T1,T2,T3,T4,T5 > f_; 25082: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 25082: }; 25082: 25082: } 25082: 25082: template< 25082: typename F 25082: > 25082: struct bind0 25082: { 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: private: 25082: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 25082: typedef typename r0::type a0; 25082: typedef typename r0::next n1; 25082: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 25082: 25082: public: 25082: typedef typename apply_wrap0< 25082: f_ 25082: >::type type; 25082: 25082: }; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename F, typename U1, typename U2, typename U3, typename U4 25082: , typename U5 25082: > 25082: struct resolve_bind_arg< 25082: bind0, U1, U2, U3, U4, U5 25082: > 25082: { 25082: typedef bind0 f_; 25082: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 25082: }; 25082: 25082: } 25082: 25082: 25082: namespace aux { template< typename T1 > struct template_arity< bind0< T1> > : int_<1> { }; } 25082: 25082: template< 25082: typename F 25082: > 25082: struct bind< F,na,na,na,na,na > 25082: : bind0 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1 25082: > 25082: struct bind1 25082: { 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: private: 25082: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 25082: typedef typename r0::type a0; 25082: typedef typename r0::next n1; 25082: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 25082: 25082: typedef aux::replace_unnamed_arg< T1,n1 > r1; 25082: typedef typename r1::type a1; 25082: typedef typename r1::next n2; 25082: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 25082: 25082: public: 25082: typedef typename apply_wrap1< 25082: f_ 25082: , typename t1::type 25082: >::type type; 25082: 25082: }; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename F, typename T1, typename U1, typename U2, typename U3 25082: , typename U4, typename U5 25082: > 25082: struct resolve_bind_arg< 25082: bind1< F,T1 >, U1, U2, U3, U4, U5 25082: > 25082: { 25082: typedef bind1< F,T1 > f_; 25082: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 25082: }; 25082: 25082: } 25082: 25082: 25082: namespace aux { template< typename T1 , typename T2 > struct template_arity< bind1< T1 , T2> > : int_<2> { }; } 25082: 25082: template< 25082: typename F, typename T1 25082: > 25082: struct bind< F,T1,na,na,na,na > 25082: : bind1< F,T1 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2 25082: > 25082: struct bind2 25082: { 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: private: 25082: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 25082: typedef typename r0::type a0; 25082: typedef typename r0::next n1; 25082: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 25082: 25082: typedef aux::replace_unnamed_arg< T1,n1 > r1; 25082: typedef typename r1::type a1; 25082: typedef typename r1::next n2; 25082: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 25082: 25082: typedef aux::replace_unnamed_arg< T2,n2 > r2; 25082: typedef typename r2::type a2; 25082: typedef typename r2::next n3; 25082: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2; 25082: 25082: public: 25082: typedef typename apply_wrap2< 25082: f_ 25082: , typename t1::type, typename t2::type 25082: >::type type; 25082: 25082: }; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename U1, typename U2 25082: , typename U3, typename U4, typename U5 25082: > 25082: struct resolve_bind_arg< 25082: bind2< F,T1,T2 >, U1, U2, U3, U4, U5 25082: > 25082: { 25082: typedef bind2< F,T1,T2 > f_; 25082: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 25082: }; 25082: 25082: } 25082: 25082: 25082: namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< bind2< T1 , T2 , T3> > : int_<3> { }; } 25082: 25082: template< 25082: typename F, typename T1, typename T2 25082: > 25082: struct bind< F,T1,T2,na,na,na > 25082: : bind2< F,T1,T2 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3 25082: > 25082: struct bind3 25082: { 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: private: 25082: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 25082: typedef typename r0::type a0; 25082: typedef typename r0::next n1; 25082: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 25082: 25082: typedef aux::replace_unnamed_arg< T1,n1 > r1; 25082: typedef typename r1::type a1; 25082: typedef typename r1::next n2; 25082: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 25082: 25082: typedef aux::replace_unnamed_arg< T2,n2 > r2; 25082: typedef typename r2::type a2; 25082: typedef typename r2::next n3; 25082: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2; 25082: 25082: typedef aux::replace_unnamed_arg< T3,n3 > r3; 25082: typedef typename r3::type a3; 25082: typedef typename r3::next n4; 25082: typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3; 25082: 25082: public: 25082: typedef typename apply_wrap3< 25082: f_ 25082: , typename t1::type, typename t2::type, typename t3::type 25082: >::type type; 25082: 25082: }; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename U1 25082: , typename U2, typename U3, typename U4, typename U5 25082: > 25082: struct resolve_bind_arg< 25082: bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5 25082: > 25082: { 25082: typedef bind3< F,T1,T2,T3 > f_; 25082: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 25082: }; 25082: 25082: } 25082: 25082: 25082: namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 > struct template_arity< bind3< T1 , T2 , T3 , T4> > : int_<4> { }; } 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3 25082: > 25082: struct bind< F,T1,T2,T3,na,na > 25082: : bind3< F,T1,T2,T3 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: > 25082: struct bind4 25082: { 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: private: 25082: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 25082: typedef typename r0::type a0; 25082: typedef typename r0::next n1; 25082: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 25082: 25082: typedef aux::replace_unnamed_arg< T1,n1 > r1; 25082: typedef typename r1::type a1; 25082: typedef typename r1::next n2; 25082: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 25082: 25082: typedef aux::replace_unnamed_arg< T2,n2 > r2; 25082: typedef typename r2::type a2; 25082: typedef typename r2::next n3; 25082: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2; 25082: 25082: typedef aux::replace_unnamed_arg< T3,n3 > r3; 25082: typedef typename r3::type a3; 25082: typedef typename r3::next n4; 25082: typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3; 25082: 25082: typedef aux::replace_unnamed_arg< T4,n4 > r4; 25082: typedef typename r4::type a4; 25082: typedef typename r4::next n5; 25082: typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4; 25082: 25082: public: 25082: typedef typename apply_wrap4< 25082: f_ 25082: , typename t1::type, typename t2::type, typename t3::type 25082: , typename t4::type 25082: >::type type; 25082: 25082: }; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename U1, typename U2, typename U3, typename U4, typename U5 25082: > 25082: struct resolve_bind_arg< 25082: bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5 25082: > 25082: { 25082: typedef bind4< F,T1,T2,T3,T4 > f_; 25082: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 25082: }; 25082: 25082: } 25082: 25082: 25082: namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< bind4< T1 , T2 , T3 , T4 , T5> > : int_<5> { }; } 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: > 25082: struct bind< F,T1,T2,T3,T4,na > 25082: : bind4< F,T1,T2,T3,T4 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5 25082: > 25082: struct bind5 25082: { 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: private: 25082: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0; 25082: typedef typename r0::type a0; 25082: typedef typename r0::next n1; 25082: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_; 25082: 25082: typedef aux::replace_unnamed_arg< T1,n1 > r1; 25082: typedef typename r1::type a1; 25082: typedef typename r1::next n2; 25082: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 25082: 25082: typedef aux::replace_unnamed_arg< T2,n2 > r2; 25082: typedef typename r2::type a2; 25082: typedef typename r2::next n3; 25082: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2; 25082: 25082: typedef aux::replace_unnamed_arg< T3,n3 > r3; 25082: typedef typename r3::type a3; 25082: typedef typename r3::next n4; 25082: typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3; 25082: 25082: typedef aux::replace_unnamed_arg< T4,n4 > r4; 25082: typedef typename r4::type a4; 25082: typedef typename r4::next n5; 25082: typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4; 25082: 25082: typedef aux::replace_unnamed_arg< T5,n5 > r5; 25082: typedef typename r5::type a5; 25082: typedef typename r5::next n6; 25082: typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5; 25082: 25082: public: 25082: typedef typename apply_wrap5< 25082: f_ 25082: , typename t1::type, typename t2::type, typename t3::type 25082: , typename t4::type, typename t5::type 25082: >::type type; 25082: 25082: }; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5, typename U1, typename U2, typename U3, typename U4 25082: , typename U5 25082: > 25082: struct resolve_bind_arg< 25082: bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 25082: > 25082: { 25082: typedef bind5< F,T1,T2,T3,T4,T5 > f_; 25082: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type; 25082: }; 25082: 25082: } 25082: 25082: 25082: 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> { }; } 25082: 25082: 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5 25082: > 25082: struct bind 25082: : bind5< F,T1,T2,T3,T4,T5 > 25082: { 25082: }; 25082: 25082: 25082: template< template< typename T1, typename T2, typename T3 > class F, typename Tag > 25082: struct quote3; 25082: 25082: template< typename T1, typename T2, typename T3 > struct if_; 25082: 25082: template< 25082: typename Tag, typename T1, typename T2, typename T3 25082: > 25082: struct bind3< 25082: quote3< if_,Tag > 25082: , T1, T2, T3 25082: > 25082: { 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: private: 25082: typedef mpl::arg<1> n1; 25082: typedef aux::replace_unnamed_arg< T1,n1 > r1; 25082: typedef typename r1::type a1; 25082: typedef typename r1::next n2; 25082: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 25082: 25082: typedef aux::replace_unnamed_arg< T2,n2 > r2; 25082: typedef typename r2::type a2; 25082: typedef typename r2::next n3; 25082: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2; 25082: 25082: typedef aux::replace_unnamed_arg< T3,n3 > r3; 25082: typedef typename r3::type a3; 25082: typedef typename r3::next n4; 25082: typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3; 25082: 25082: typedef typename if_< 25082: typename t1::type 25082: , t2, t3 25082: >::type f_; 25082: 25082: public: 25082: typedef typename f_::type type; 25082: }; 25082: }; 25082: 25082: template< 25082: template< typename T1, typename T2, typename T3 > class F, typename Tag 25082: > 25082: struct quote3; 25082: 25082: template< typename T1, typename T2, typename T3 > struct eval_if; 25082: 25082: template< 25082: typename Tag, typename T1, typename T2, typename T3 25082: > 25082: struct bind3< 25082: quote3< eval_if,Tag > 25082: , T1, T2, T3 25082: > 25082: { 25082: template< 25082: typename U1 = na, typename U2 = na, typename U3 = na 25082: , typename U4 = na, typename U5 = na 25082: > 25082: struct apply 25082: { 25082: private: 25082: typedef mpl::arg<1> n1; 25082: typedef aux::replace_unnamed_arg< T1,n1 > r1; 25082: typedef typename r1::type a1; 25082: typedef typename r1::next n2; 25082: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1; 25082: 25082: typedef aux::replace_unnamed_arg< T2,n2 > r2; 25082: typedef typename r2::type a2; 25082: typedef typename r2::next n3; 25082: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2; 25082: 25082: typedef aux::replace_unnamed_arg< T3,n3 > r3; 25082: typedef typename r3::type a3; 25082: typedef typename r3::next n4; 25082: typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3; 25082: 25082: typedef typename eval_if< 25082: typename t1::type 25082: , t2, t3 25082: >::type f_; 25082: 25082: public: 25082: typedef typename f_::type type; 25082: }; 25082: }; 25082: 25082: }} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 51 "/usr/include/boost/mpl/bind.hpp" 2 3 4 25082: # 19 "/usr/include/boost/mpl/lambda.hpp" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 1 3 4 25082: # 23 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/bind_fwd.hpp" 1 3 4 25082: # 24 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 2 3 4 25082: 25082: # 1 "/usr/include/boost/mpl/quote.hpp" 1 3 4 25082: # 22 "/usr/include/boost/mpl/quote.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/void.hpp" 1 3 4 25082: # 23 "/usr/include/boost/mpl/void.hpp" 3 4 25082: namespace mpl_ { 25082: 25082: 25082: 25082: 25082: 25082: struct void_ { typedef void_ type; }; 25082: 25082: } 25082: 25082: namespace boost { namespace mpl { 25082: 25082: template< typename T > 25082: struct is_void_ 25082: : false_ 25082: { 25082: 25082: 25082: 25082: }; 25082: 25082: template<> 25082: struct is_void_ 25082: : true_ 25082: { 25082: 25082: 25082: 25082: }; 25082: 25082: template< typename T > 25082: struct is_not_void_ 25082: : true_ 25082: { 25082: 25082: 25082: 25082: }; 25082: 25082: template<> 25082: struct is_not_void_ 25082: : false_ 25082: { 25082: 25082: 25082: 25082: }; 25082: 25082: 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> { }; } 25082: 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> { }; } 25082: 25082: }} 25082: # 23 "/usr/include/boost/mpl/quote.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/has_type.hpp" 1 3 4 25082: # 19 "/usr/include/boost/mpl/aux_/has_type.hpp" 3 4 25082: namespace boost { namespace mpl { namespace aux { 25082: template< typename T, typename fallback_ = boost::mpl::bool_ > struct has_type { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper const volatile* , boost::mpl::aux::type_wrapper* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_ type; }; 25082: }}} 25082: # 24 "/usr/include/boost/mpl/quote.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/config/bcc.hpp" 1 3 4 25082: # 27 "/usr/include/boost/mpl/quote.hpp" 2 3 4 25082: # 45 "/usr/include/boost/mpl/quote.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp" 1 3 4 25082: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: template< typename T, bool has_type_ > 25082: struct quote_impl 25082: { 25082: typedef typename T::type type; 25082: }; 25082: 25082: template< typename T > 25082: struct quote_impl< T,false > 25082: { 25082: typedef T type; 25082: }; 25082: 25082: template< 25082: template< typename P1 > class F 25082: , typename Tag = void_ 25082: > 25082: struct quote1 25082: { 25082: template< typename U1 > struct apply 25082: 25082: : quote_impl< 25082: F 25082: , aux::has_type< F >::value 25082: > 25082: 25082: { 25082: }; 25082: }; 25082: 25082: template< 25082: template< typename P1, typename P2 > class F 25082: , typename Tag = void_ 25082: > 25082: struct quote2 25082: { 25082: template< typename U1, typename U2 > struct apply 25082: 25082: : quote_impl< 25082: F< U1,U2 > 25082: , aux::has_type< F< U1,U2 > >::value 25082: > 25082: 25082: { 25082: }; 25082: }; 25082: 25082: template< 25082: template< typename P1, typename P2, typename P3 > class F 25082: , typename Tag = void_ 25082: > 25082: struct quote3 25082: { 25082: template< typename U1, typename U2, typename U3 > struct apply 25082: 25082: : quote_impl< 25082: F< U1,U2,U3 > 25082: , aux::has_type< F< U1,U2,U3 > >::value 25082: > 25082: 25082: { 25082: }; 25082: }; 25082: 25082: template< 25082: template< typename P1, typename P2, typename P3, typename P4 > class F 25082: , typename Tag = void_ 25082: > 25082: struct quote4 25082: { 25082: template< 25082: typename U1, typename U2, typename U3, typename U4 25082: > 25082: struct apply 25082: 25082: : quote_impl< 25082: F< U1,U2,U3,U4 > 25082: , aux::has_type< F< U1,U2,U3,U4 > >::value 25082: > 25082: 25082: { 25082: }; 25082: }; 25082: 25082: template< 25082: template< 25082: typename P1, typename P2, typename P3, typename P4 25082: , typename P5 25082: > 25082: class F 25082: , typename Tag = void_ 25082: > 25082: struct quote5 25082: { 25082: template< 25082: typename U1, typename U2, typename U3, typename U4 25082: , typename U5 25082: > 25082: struct apply 25082: 25082: : quote_impl< 25082: F< U1,U2,U3,U4,U5 > 25082: , aux::has_type< F< U1,U2,U3,U4,U5 > >::value 25082: > 25082: 25082: { 25082: }; 25082: }; 25082: 25082: }} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 46 "/usr/include/boost/mpl/quote.hpp" 2 3 4 25082: # 26 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 2 3 4 25082: # 1 "/usr/include/boost/mpl/arg.hpp" 1 3 4 25082: # 27 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 2 3 4 25082: 25082: 25082: # 1 "/usr/include/boost/mpl/aux_/template_arity.hpp" 1 3 4 25082: # 43 "/usr/include/boost/mpl/aux_/template_arity.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp" 1 3 4 25082: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp" 3 4 25082: namespace boost { namespace mpl { namespace aux { 25082: template< int N > struct arity_tag 25082: { 25082: typedef char (&type)[N + 1]; 25082: }; 25082: 25082: template< 25082: int C1, int C2, int C3, int C4, int C5, int C6 25082: > 25082: struct max_arity 25082: { 25082: static const int value = ( C6 > 0 ? C6 : ( C5 > 0 ? C5 : ( C4 > 0 ? C4 : ( C3 > 0 ? C3 : ( C2 > 0 ? C2 : ( C1 > 0 ? C1 : -1 ) ) ) ) ) ) 25082: 25082: ; 25082: }; 25082: 25082: arity_tag<0>::type arity_helper(...); 25082: 25082: template< 25082: template< typename P1 > class F 25082: , typename T1 25082: > 25082: typename arity_tag<1>::type 25082: arity_helper(type_wrapper< F >, arity_tag<1>); 25082: 25082: template< 25082: template< typename P1, typename P2 > class F 25082: , typename T1, typename T2 25082: > 25082: typename arity_tag<2>::type 25082: arity_helper(type_wrapper< F< T1,T2 > >, arity_tag<2>); 25082: 25082: template< 25082: template< typename P1, typename P2, typename P3 > class F 25082: , typename T1, typename T2, typename T3 25082: > 25082: typename arity_tag<3>::type 25082: arity_helper(type_wrapper< F< T1,T2,T3 > >, arity_tag<3>); 25082: 25082: template< 25082: template< typename P1, typename P2, typename P3, typename P4 > class F 25082: , typename T1, typename T2, typename T3, typename T4 25082: > 25082: typename arity_tag<4>::type 25082: arity_helper(type_wrapper< F< T1,T2,T3,T4 > >, arity_tag<4>); 25082: 25082: template< 25082: template< 25082: typename P1, typename P2, typename P3, typename P4 25082: , typename P5 25082: > 25082: class F 25082: , typename T1, typename T2, typename T3, typename T4, typename T5 25082: > 25082: typename arity_tag<5>::type 25082: arity_helper(type_wrapper< F< T1,T2,T3,T4,T5 > >, arity_tag<5>); 25082: 25082: template< 25082: template< 25082: typename P1, typename P2, typename P3, typename P4 25082: , typename P5, typename P6 25082: > 25082: class F 25082: , typename T1, typename T2, typename T3, typename T4, typename T5 25082: , typename T6 25082: > 25082: typename arity_tag<6>::type 25082: arity_helper(type_wrapper< F< T1,T2,T3,T4,T5,T6 > >, arity_tag<6>); 25082: template< typename F, int N > 25082: struct template_arity_impl 25082: { 25082: static const int value = sizeof(::boost::mpl::aux::arity_helper(type_wrapper(), arity_tag())) - 1 25082: 25082: ; 25082: }; 25082: 25082: template< typename F > 25082: struct template_arity 25082: { 25082: 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 ) 25082: 25082: ; 25082: typedef mpl::int_ type; 25082: }; 25082: 25082: }}} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 44 "/usr/include/boost/mpl/aux_/template_arity.hpp" 2 3 4 25082: # 30 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 2 3 4 25082: # 44 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp" 1 3 4 25082: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: namespace aux { 25082: 25082: template< 25082: bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false 25082: , bool C5 = false 25082: > 25082: struct lambda_or 25082: : true_ 25082: { 25082: }; 25082: 25082: template<> 25082: struct lambda_or< false,false,false,false,false > 25082: : false_ 25082: { 25082: }; 25082: 25082: } 25082: 25082: template< 25082: typename T 25082: , typename Tag 25082: , typename Arity 25082: > 25082: struct lambda 25082: { 25082: typedef false_ is_le; 25082: typedef T result_; 25082: typedef T type; 25082: }; 25082: 25082: template< 25082: typename T 25082: > 25082: struct is_lambda_expression 25082: : lambda::is_le 25082: { 25082: }; 25082: 25082: template< int N, typename Tag > 25082: struct lambda< arg,Tag, int_< -1 > > 25082: { 25082: typedef true_ is_le; 25082: typedef mpl::arg result_; 25082: typedef mpl::protect type; 25082: }; 25082: 25082: template< 25082: typename F 25082: , typename Tag 25082: > 25082: struct lambda< 25082: bind0 25082: , Tag 25082: , int_<1> 25082: > 25082: { 25082: typedef false_ is_le; 25082: typedef bind0< 25082: F 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename IsLE, typename Tag 25082: , template< typename P1 > class F 25082: , typename L1 25082: > 25082: struct le_result1 25082: { 25082: typedef F< 25082: typename L1::type 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: template< 25082: typename Tag 25082: , template< typename P1 > class F 25082: , typename L1 25082: > 25082: struct le_result1< true_,Tag,F,L1 > 25082: { 25082: typedef bind1< 25082: quote1< F,Tag > 25082: , typename L1::result_ 25082: > result_; 25082: 25082: typedef mpl::protect type; 25082: }; 25082: 25082: } 25082: 25082: template< 25082: template< typename P1 > class F 25082: , typename T1 25082: , typename Tag 25082: > 25082: struct lambda< 25082: F 25082: , Tag 25082: , int_<1> 25082: > 25082: { 25082: typedef lambda< T1,Tag > l1; 25082: typedef typename l1::is_le is_le1; 25082: typedef typename aux::lambda_or< 25082: is_le1::value 25082: >::type is_le; 25082: 25082: typedef aux::le_result1< 25082: is_le, Tag, F, l1 25082: > le_result_; 25082: 25082: typedef typename le_result_::result_ result_; 25082: typedef typename le_result_::type type; 25082: }; 25082: 25082: template< 25082: typename F, typename T1 25082: , typename Tag 25082: > 25082: struct lambda< 25082: bind1< F,T1 > 25082: , Tag 25082: , int_<2> 25082: > 25082: { 25082: typedef false_ is_le; 25082: typedef bind1< 25082: F 25082: , T1 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename IsLE, typename Tag 25082: , template< typename P1, typename P2 > class F 25082: , typename L1, typename L2 25082: > 25082: struct le_result2 25082: { 25082: typedef F< 25082: typename L1::type, typename L2::type 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: template< 25082: typename Tag 25082: , template< typename P1, typename P2 > class F 25082: , typename L1, typename L2 25082: > 25082: struct le_result2< true_,Tag,F,L1,L2 > 25082: { 25082: typedef bind2< 25082: quote2< F,Tag > 25082: , typename L1::result_, typename L2::result_ 25082: > result_; 25082: 25082: typedef mpl::protect type; 25082: }; 25082: 25082: } 25082: 25082: template< 25082: template< typename P1, typename P2 > class F 25082: , typename T1, typename T2 25082: , typename Tag 25082: > 25082: struct lambda< 25082: F< T1,T2 > 25082: , Tag 25082: , int_<2> 25082: > 25082: { 25082: typedef lambda< T1,Tag > l1; 25082: typedef lambda< T2,Tag > l2; 25082: 25082: typedef typename l1::is_le is_le1; 25082: typedef typename l2::is_le is_le2; 25082: 25082: 25082: typedef typename aux::lambda_or< 25082: is_le1::value, is_le2::value 25082: >::type is_le; 25082: 25082: typedef aux::le_result2< 25082: is_le, Tag, F, l1, l2 25082: > le_result_; 25082: 25082: typedef typename le_result_::result_ result_; 25082: typedef typename le_result_::type type; 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2 25082: , typename Tag 25082: > 25082: struct lambda< 25082: bind2< F,T1,T2 > 25082: , Tag 25082: , int_<3> 25082: > 25082: { 25082: typedef false_ is_le; 25082: typedef bind2< 25082: F 25082: , T1, T2 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename IsLE, typename Tag 25082: , template< typename P1, typename P2, typename P3 > class F 25082: , typename L1, typename L2, typename L3 25082: > 25082: struct le_result3 25082: { 25082: typedef F< 25082: typename L1::type, typename L2::type, typename L3::type 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: template< 25082: typename Tag 25082: , template< typename P1, typename P2, typename P3 > class F 25082: , typename L1, typename L2, typename L3 25082: > 25082: struct le_result3< true_,Tag,F,L1,L2,L3 > 25082: { 25082: typedef bind3< 25082: quote3< F,Tag > 25082: , typename L1::result_, typename L2::result_, typename L3::result_ 25082: > result_; 25082: 25082: typedef mpl::protect type; 25082: }; 25082: 25082: } 25082: 25082: template< 25082: template< typename P1, typename P2, typename P3 > class F 25082: , typename T1, typename T2, typename T3 25082: , typename Tag 25082: > 25082: struct lambda< 25082: F< T1,T2,T3 > 25082: , Tag 25082: , int_<3> 25082: > 25082: { 25082: typedef lambda< T1,Tag > l1; 25082: typedef lambda< T2,Tag > l2; 25082: typedef lambda< T3,Tag > l3; 25082: 25082: typedef typename l1::is_le is_le1; 25082: typedef typename l2::is_le is_le2; 25082: typedef typename l3::is_le is_le3; 25082: 25082: 25082: typedef typename aux::lambda_or< 25082: is_le1::value, is_le2::value, is_le3::value 25082: >::type is_le; 25082: 25082: typedef aux::le_result3< 25082: is_le, Tag, F, l1, l2, l3 25082: > le_result_; 25082: 25082: typedef typename le_result_::result_ result_; 25082: typedef typename le_result_::type type; 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3 25082: , typename Tag 25082: > 25082: struct lambda< 25082: bind3< F,T1,T2,T3 > 25082: , Tag 25082: , int_<4> 25082: > 25082: { 25082: typedef false_ is_le; 25082: typedef bind3< 25082: F 25082: , T1, T2, T3 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename IsLE, typename Tag 25082: , template< typename P1, typename P2, typename P3, typename P4 > class F 25082: , typename L1, typename L2, typename L3, typename L4 25082: > 25082: struct le_result4 25082: { 25082: typedef F< 25082: typename L1::type, typename L2::type, typename L3::type 25082: , typename L4::type 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: template< 25082: typename Tag 25082: , template< typename P1, typename P2, typename P3, typename P4 > class F 25082: , typename L1, typename L2, typename L3, typename L4 25082: > 25082: struct le_result4< true_,Tag,F,L1,L2,L3,L4 > 25082: { 25082: typedef bind4< 25082: quote4< F,Tag > 25082: , typename L1::result_, typename L2::result_, typename L3::result_ 25082: , typename L4::result_ 25082: > result_; 25082: 25082: typedef mpl::protect type; 25082: }; 25082: 25082: } 25082: 25082: template< 25082: template< typename P1, typename P2, typename P3, typename P4 > class F 25082: , typename T1, typename T2, typename T3, typename T4 25082: , typename Tag 25082: > 25082: struct lambda< 25082: F< T1,T2,T3,T4 > 25082: , Tag 25082: , int_<4> 25082: > 25082: { 25082: typedef lambda< T1,Tag > l1; 25082: typedef lambda< T2,Tag > l2; 25082: typedef lambda< T3,Tag > l3; 25082: typedef lambda< T4,Tag > l4; 25082: 25082: typedef typename l1::is_le is_le1; 25082: typedef typename l2::is_le is_le2; 25082: typedef typename l3::is_le is_le3; 25082: typedef typename l4::is_le is_le4; 25082: 25082: 25082: typedef typename aux::lambda_or< 25082: is_le1::value, is_le2::value, is_le3::value, is_le4::value 25082: >::type is_le; 25082: 25082: typedef aux::le_result4< 25082: is_le, Tag, F, l1, l2, l3, l4 25082: > le_result_; 25082: 25082: typedef typename le_result_::result_ result_; 25082: typedef typename le_result_::type type; 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename Tag 25082: > 25082: struct lambda< 25082: bind4< F,T1,T2,T3,T4 > 25082: , Tag 25082: , int_<5> 25082: > 25082: { 25082: typedef false_ is_le; 25082: typedef bind4< 25082: F 25082: , T1, T2, T3, T4 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: namespace aux { 25082: 25082: template< 25082: typename IsLE, typename Tag 25082: , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F 25082: , typename L1, typename L2, typename L3, typename L4, typename L5 25082: > 25082: struct le_result5 25082: { 25082: typedef F< 25082: typename L1::type, typename L2::type, typename L3::type 25082: , typename L4::type, typename L5::type 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: template< 25082: typename Tag 25082: , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F 25082: , typename L1, typename L2, typename L3, typename L4, typename L5 25082: > 25082: struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 > 25082: { 25082: typedef bind5< 25082: quote5< F,Tag > 25082: , typename L1::result_, typename L2::result_, typename L3::result_ 25082: , typename L4::result_, typename L5::result_ 25082: > result_; 25082: 25082: typedef mpl::protect type; 25082: }; 25082: 25082: } 25082: 25082: template< 25082: template< 25082: typename P1, typename P2, typename P3, typename P4 25082: , typename P5 25082: > 25082: class F 25082: , typename T1, typename T2, typename T3, typename T4, typename T5 25082: , typename Tag 25082: > 25082: struct lambda< 25082: F< T1,T2,T3,T4,T5 > 25082: , Tag 25082: , int_<5> 25082: > 25082: { 25082: typedef lambda< T1,Tag > l1; 25082: typedef lambda< T2,Tag > l2; 25082: typedef lambda< T3,Tag > l3; 25082: typedef lambda< T4,Tag > l4; 25082: typedef lambda< T5,Tag > l5; 25082: 25082: typedef typename l1::is_le is_le1; 25082: typedef typename l2::is_le is_le2; 25082: typedef typename l3::is_le is_le3; 25082: typedef typename l4::is_le is_le4; 25082: typedef typename l5::is_le is_le5; 25082: 25082: 25082: typedef typename aux::lambda_or< 25082: is_le1::value, is_le2::value, is_le3::value, is_le4::value 25082: , is_le5::value 25082: >::type is_le; 25082: 25082: typedef aux::le_result5< 25082: is_le, Tag, F, l1, l2, l3, l4, l5 25082: > le_result_; 25082: 25082: typedef typename le_result_::result_ result_; 25082: typedef typename le_result_::type type; 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5 25082: , typename Tag 25082: > 25082: struct lambda< 25082: bind5< F,T1,T2,T3,T4,T5 > 25082: , Tag 25082: , int_<6> 25082: > 25082: { 25082: typedef false_ is_le; 25082: typedef bind5< 25082: F 25082: , T1, T2, T3, T4, T5 25082: > result_; 25082: 25082: typedef result_ type; 25082: }; 25082: 25082: 25082: template< typename T, typename Tag > 25082: struct lambda< mpl::protect,Tag, int_<1> > 25082: { 25082: typedef false_ is_le; 25082: typedef mpl::protect result_; 25082: typedef result_ type; 25082: }; 25082: 25082: 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5 25082: , typename Tag 25082: > 25082: struct lambda< 25082: bind< F,T1,T2,T3,T4,T5 > 25082: , Tag 25082: , int_<6> 25082: > 25082: { 25082: typedef false_ is_le; 25082: typedef bind< F,T1,T2,T3,T4,T5 > result_; 25082: typedef result_ type; 25082: }; 25082: 25082: template< 25082: typename F 25082: , typename Tag1 25082: , typename Tag2 25082: , typename Arity 25082: > 25082: struct lambda< 25082: lambda< F,Tag1,Arity > 25082: , Tag2 25082: , int_<3> 25082: > 25082: { 25082: typedef lambda< F,Tag2 > l1; 25082: typedef lambda< Tag1,Tag2 > l2; 25082: typedef typename l1::is_le is_le; 25082: typedef bind1< quote1, typename l1::result_ > arity_; 25082: typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3; 25082: typedef aux::le_result3 le_result_; 25082: typedef typename le_result_::result_ result_; 25082: typedef typename le_result_::type type; 25082: }; 25082: 25082: 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> { }; } 25082: 25082: }} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 45 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 2 3 4 25082: # 23 "/usr/include/boost/mpl/lambda.hpp" 2 3 4 25082: # 26 "/usr/include/boost/mpl/apply.hpp" 2 3 4 25082: # 36 "/usr/include/boost/mpl/apply.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4 25082: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4 25082: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp" 1 3 4 25082: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp" 3 4 25082: namespace boost { namespace mpl { 25082: 25082: template< 25082: typename F 25082: > 25082: struct apply0 25082: 25082: : apply_wrap0< 25082: typename lambda::type 25082: 25082: > 25082: { 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: template< 25082: typename F 25082: > 25082: struct apply< F,na,na,na,na,na > 25082: : apply0 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1 25082: > 25082: struct apply1 25082: 25082: : apply_wrap1< 25082: typename lambda::type 25082: , T1 25082: > 25082: { 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: template< 25082: typename F, typename T1 25082: > 25082: struct apply< F,T1,na,na,na,na > 25082: : apply1< F,T1 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2 25082: > 25082: struct apply2 25082: 25082: : apply_wrap2< 25082: typename lambda::type 25082: , T1, T2 25082: > 25082: { 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2 25082: > 25082: struct apply< F,T1,T2,na,na,na > 25082: : apply2< F,T1,T2 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3 25082: > 25082: struct apply3 25082: 25082: : apply_wrap3< 25082: typename lambda::type 25082: , T1, T2, T3 25082: > 25082: { 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3 25082: > 25082: struct apply< F,T1,T2,T3,na,na > 25082: : apply3< F,T1,T2,T3 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: > 25082: struct apply4 25082: 25082: : apply_wrap4< 25082: typename lambda::type 25082: , T1, T2, T3, T4 25082: > 25082: { 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: > 25082: struct apply< F,T1,T2,T3,T4,na > 25082: : apply4< F,T1,T2,T3,T4 > 25082: { 25082: }; 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5 25082: > 25082: struct apply5 25082: 25082: : apply_wrap5< 25082: typename lambda::type 25082: , T1, T2, T3, T4, T5 25082: > 25082: { 25082: 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: 25082: 25082: template< 25082: typename F, typename T1, typename T2, typename T3, typename T4 25082: , typename T5 25082: > 25082: struct apply 25082: : apply5< F,T1,T2,T3,T4,T5 > 25082: { 25082: }; 25082: 25082: }} 25082: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4 25082: # 37 "/usr/include/boost/mpl/apply.hpp" 2 3 4 25082: # 37 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4 25082: # 42 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: 25082: namespace boost { 25082: namespace iterators { 25082: 25082: 25082: 25082: template class iterator_facade; 25082: 25082: namespace detail 25082: { 25082: 25082: 25082: 25082: struct always_bool2 25082: { 25082: template 25082: struct apply 25082: { 25082: typedef bool type; 25082: }; 25082: }; 25082: 25082: 25082: template< typename CategoryOrTraversal, typename Required > 25082: struct is_traversal_at_least : 25082: public boost::is_convertible< typename iterator_category_to_traversal< CategoryOrTraversal >::type, Required > 25082: {}; 25082: 25082: 25082: 25082: 25082: template < 25082: class Facade1 25082: , class Facade2 25082: , class Return 25082: > 25082: struct enable_if_interoperable : 25082: public boost::iterators::enable_if< 25082: is_interoperable< Facade1, Facade2 > 25082: , Return 25082: > 25082: {}; 25082: 25082: 25082: 25082: 25082: template < 25082: class Facade1 25082: , class Facade2 25082: , class Return 25082: > 25082: struct enable_if_interoperable_and_random_access_traversal : 25082: public boost::iterators::enable_if< 25082: mpl::and_< 25082: is_interoperable< Facade1, Facade2 > 25082: , is_traversal_at_least< typename iterator_category< Facade1 >::type, random_access_traversal_tag > 25082: , is_traversal_at_least< typename iterator_category< Facade2 >::type, random_access_traversal_tag > 25082: > 25082: , Return 25082: > 25082: {}; 25082: 25082: 25082: 25082: 25082: 25082: template < 25082: class ValueParam 25082: , class CategoryOrTraversal 25082: , class Reference 25082: , class Difference 25082: > 25082: struct iterator_facade_types 25082: { 25082: typedef typename facade_iterator_category< 25082: CategoryOrTraversal, ValueParam, Reference 25082: >::type iterator_category; 25082: 25082: typedef typename remove_const::type value_type; 25082: 25082: 25082: typedef typename mpl::eval_if< 25082: boost::iterators::detail::iterator_writability_disabled 25082: , add_pointer 25082: , add_pointer 25082: >::type pointer; 25082: # 145 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class postfix_increment_proxy 25082: { 25082: typedef typename iterator_value::type value_type; 25082: public: 25082: explicit postfix_increment_proxy(Iterator const& x) 25082: : stored_value(*x) 25082: {} 25082: 25082: 25082: 25082: 25082: 25082: value_type& 25082: operator*() const 25082: { 25082: return this->stored_value; 25082: } 25082: private: 25082: mutable value_type stored_value; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class writable_postfix_increment_proxy 25082: { 25082: typedef typename iterator_value::type value_type; 25082: public: 25082: explicit writable_postfix_increment_proxy(Iterator const& x) 25082: : stored_value(*x) 25082: , stored_iterator(x) 25082: {} 25082: 25082: 25082: 25082: 25082: 25082: writable_postfix_increment_proxy const& 25082: operator*() const 25082: { 25082: return *this; 25082: } 25082: 25082: 25082: operator value_type&() const 25082: { 25082: return stored_value; 25082: } 25082: 25082: 25082: template 25082: T const& operator=(T const& x) const 25082: { 25082: *this->stored_iterator = x; 25082: return x; 25082: } 25082: 25082: 25082: template 25082: T& operator=(T& x) const 25082: { 25082: *this->stored_iterator = x; 25082: return x; 25082: } 25082: 25082: 25082: operator Iterator const&() const 25082: { 25082: return stored_iterator; 25082: } 25082: 25082: private: 25082: mutable value_type stored_value; 25082: Iterator stored_iterator; 25082: }; 25082: # 259 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4 25082: template 25082: struct is_non_proxy_reference 25082: : is_convertible< 25082: typename remove_reference::type 25082: const volatile* 25082: , Value const volatile* 25082: > 25082: {}; 25082: # 284 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4 25082: template 25082: struct postfix_increment_result 25082: : mpl::eval_if< 25082: mpl::and_< 25082: 25082: is_convertible< 25082: Reference 25082: 25082: 25082: 25082: 25082: 25082: , typename add_lvalue_reference::type 25082: > 25082: 25082: 25082: 25082: , mpl::not_< 25082: is_convertible< 25082: typename iterator_category_to_traversal::type 25082: , forward_traversal_tag 25082: > 25082: > 25082: > 25082: , mpl::if_< 25082: is_non_proxy_reference 25082: , postfix_increment_proxy 25082: , writable_postfix_increment_proxy 25082: > 25082: , mpl::identity 25082: > 25082: {}; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct operator_arrow_dispatch 25082: { 25082: struct proxy 25082: { 25082: explicit proxy(Reference const & x) : m_ref(x) {} 25082: Reference* operator->() { return boost::addressof(m_ref); } 25082: 25082: 25082: operator Reference*() { return boost::addressof(m_ref); } 25082: Reference m_ref; 25082: }; 25082: typedef proxy result_type; 25082: static result_type apply(Reference const & x) 25082: { 25082: return result_type(x); 25082: } 25082: }; 25082: 25082: template 25082: struct operator_arrow_dispatch 25082: { 25082: typedef Pointer result_type; 25082: static result_type apply(T& x) 25082: { 25082: return boost::addressof(x); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: class operator_brackets_proxy 25082: { 25082: 25082: 25082: typedef typename Iterator::reference reference; 25082: typedef typename Iterator::value_type value_type; 25082: 25082: public: 25082: operator_brackets_proxy(Iterator const& iter) 25082: : m_iter(iter) 25082: {} 25082: 25082: operator reference() const 25082: { 25082: return *m_iter; 25082: } 25082: 25082: operator_brackets_proxy& operator=(value_type const& val) 25082: { 25082: *m_iter = val; 25082: return *this; 25082: } 25082: 25082: private: 25082: Iterator m_iter; 25082: }; 25082: 25082: 25082: 25082: template 25082: struct use_operator_brackets_proxy 25082: : mpl::not_< 25082: mpl::and_< 25082: 25082: 25082: boost::is_POD 25082: , iterator_writability_disabled 25082: > 25082: > 25082: {}; 25082: 25082: template 25082: struct operator_brackets_result 25082: { 25082: typedef typename mpl::if_< 25082: use_operator_brackets_proxy 25082: , operator_brackets_proxy 25082: , Value 25082: >::type type; 25082: }; 25082: 25082: template 25082: operator_brackets_proxy make_operator_brackets_result(Iterator const& iter, mpl::true_) 25082: { 25082: return operator_brackets_proxy(iter); 25082: } 25082: 25082: template 25082: typename Iterator::value_type make_operator_brackets_result(Iterator const& iter, mpl::false_) 25082: { 25082: return *iter; 25082: } 25082: 25082: struct choose_difference_type 25082: { 25082: template 25082: struct apply 25082: : 25082: 25082: 25082: 25082: mpl::eval_if< 25082: is_convertible 25082: , iterator_difference 25082: , iterator_difference 25082: > 25082: 25082: {}; 25082: 25082: }; 25082: 25082: template < 25082: class Derived 25082: , class Value 25082: , class CategoryOrTraversal 25082: , class Reference 25082: , class Difference 25082: , bool IsBidirectionalTraversal 25082: , bool IsRandomAccessTraversal 25082: > 25082: class iterator_facade_base; 25082: 25082: } 25082: # 497 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4 25082: class iterator_core_access 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: template friend class iterator_facade; 25082: template 25082: friend class detail::iterator_facade_base; 25082: 25082: 25082: 25082: 25082: 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::type >::type operator ==( iterator_facade const& lhs , iterator_facade const& rhs); 25082: 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::type >::type operator !=( iterator_facade const& lhs , iterator_facade const& rhs); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 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::type >::type operator <( iterator_facade const& lhs , iterator_facade const& rhs); 25082: 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::type >::type operator >( iterator_facade const& lhs , iterator_facade const& rhs); 25082: 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::type >::type operator <=( iterator_facade const& lhs , iterator_facade const& rhs); 25082: 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::type >::type operator >=( iterator_facade const& lhs , iterator_facade const& rhs); 25082: 25082: 25082: 25082: 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::type >::type operator -( iterator_facade const& lhs , iterator_facade const& rhs) 25082: 25082: ; 25082: 25082: template 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 const& , typename Derived::difference_type) 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: template 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 const&) 25082: 25082: 25082: 25082: 25082: ; 25082: 25082: 25082: 25082: template 25082: static typename Facade::reference dereference(Facade const& f) 25082: { 25082: return f.dereference(); 25082: } 25082: 25082: template 25082: static void increment(Facade& f) 25082: { 25082: f.increment(); 25082: } 25082: 25082: template 25082: static void decrement(Facade& f) 25082: { 25082: f.decrement(); 25082: } 25082: 25082: template 25082: static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::true_) 25082: { 25082: return f1.equal(f2); 25082: } 25082: 25082: template 25082: static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::false_) 25082: { 25082: return f2.equal(f1); 25082: } 25082: 25082: template 25082: static void advance(Facade& f, typename Facade::difference_type n) 25082: { 25082: f.advance(n); 25082: } 25082: 25082: template 25082: static typename Facade1::difference_type distance_from( 25082: Facade1 const& f1, Facade2 const& f2, mpl::true_) 25082: { 25082: return -f1.distance_to(f2); 25082: } 25082: 25082: template 25082: static typename Facade2::difference_type distance_from( 25082: Facade1 const& f1, Facade2 const& f2, mpl::false_) 25082: { 25082: return f2.distance_to(f1); 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: static I& derived(iterator_facade& facade) 25082: { 25082: return *static_cast(&facade); 25082: } 25082: 25082: template 25082: static I const& derived(iterator_facade const& facade) 25082: { 25082: return *static_cast(&facade); 25082: } 25082: 25082: 25082: iterator_core_access() = delete; 25082: }; 25082: 25082: namespace detail { 25082: 25082: 25082: template < 25082: class Derived 25082: , class Value 25082: , class CategoryOrTraversal 25082: , class Reference 25082: , class Difference 25082: > 25082: class iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, false, false > 25082: 25082: 25082: 25082: 25082: 25082: 25082: { 25082: private: 25082: typedef boost::iterators::detail::iterator_facade_types< 25082: Value, CategoryOrTraversal, Reference, Difference 25082: > associated_types; 25082: 25082: typedef boost::iterators::detail::operator_arrow_dispatch< 25082: Reference 25082: , typename associated_types::pointer 25082: > operator_arrow_dispatch_; 25082: 25082: public: 25082: typedef typename associated_types::value_type value_type; 25082: typedef Reference reference; 25082: typedef Difference difference_type; 25082: 25082: typedef typename operator_arrow_dispatch_::result_type pointer; 25082: 25082: typedef typename associated_types::iterator_category iterator_category; 25082: 25082: public: 25082: reference operator*() const 25082: { 25082: return iterator_core_access::dereference(this->derived()); 25082: } 25082: 25082: pointer operator->() const 25082: { 25082: return operator_arrow_dispatch_::apply(*this->derived()); 25082: } 25082: 25082: Derived& operator++() 25082: { 25082: iterator_core_access::increment(this->derived()); 25082: return this->derived(); 25082: } 25082: 25082: protected: 25082: 25082: 25082: 25082: Derived& derived() 25082: { 25082: return *static_cast(this); 25082: } 25082: 25082: Derived const& derived() const 25082: { 25082: return *static_cast(this); 25082: } 25082: }; 25082: 25082: 25082: template < 25082: class Derived 25082: , class Value 25082: , class CategoryOrTraversal 25082: , class Reference 25082: , class Difference 25082: > 25082: class iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, false > : 25082: public iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, false, false > 25082: { 25082: public: 25082: Derived& operator--() 25082: { 25082: iterator_core_access::decrement(this->derived()); 25082: return this->derived(); 25082: } 25082: 25082: Derived operator--(int) 25082: { 25082: Derived tmp(this->derived()); 25082: --*this; 25082: return tmp; 25082: } 25082: }; 25082: 25082: 25082: template < 25082: class Derived 25082: , class Value 25082: , class CategoryOrTraversal 25082: , class Reference 25082: , class Difference 25082: > 25082: class iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, true > : 25082: public iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, false > 25082: { 25082: private: 25082: typedef iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, false > base_type; 25082: 25082: public: 25082: typedef typename base_type::reference reference; 25082: typedef typename base_type::difference_type difference_type; 25082: 25082: public: 25082: typename boost::iterators::detail::operator_brackets_result::type 25082: operator[](difference_type n) const 25082: { 25082: typedef boost::iterators::detail::use_operator_brackets_proxy use_proxy; 25082: 25082: return boost::iterators::detail::make_operator_brackets_result( 25082: this->derived() + n 25082: , use_proxy() 25082: ); 25082: } 25082: 25082: Derived& operator+=(difference_type n) 25082: { 25082: iterator_core_access::advance(this->derived(), n); 25082: return this->derived(); 25082: } 25082: 25082: Derived& operator-=(difference_type n) 25082: { 25082: iterator_core_access::advance(this->derived(), -n); 25082: return this->derived(); 25082: } 25082: 25082: Derived operator-(difference_type x) const 25082: { 25082: Derived result(this->derived()); 25082: return result -= x; 25082: } 25082: }; 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template < 25082: class Derived 25082: , class Value 25082: , class CategoryOrTraversal 25082: , class Reference = Value& 25082: , class Difference = std::ptrdiff_t 25082: > 25082: class iterator_facade : 25082: public detail::iterator_facade_base< 25082: Derived, 25082: Value, 25082: CategoryOrTraversal, 25082: Reference, 25082: Difference, 25082: detail::is_traversal_at_least< CategoryOrTraversal, bidirectional_traversal_tag >::value, 25082: detail::is_traversal_at_least< CategoryOrTraversal, random_access_traversal_tag >::value 25082: > 25082: { 25082: protected: 25082: 25082: typedef iterator_facade iterator_facade_; 25082: }; 25082: 25082: template 25082: inline typename boost::iterators::detail::postfix_increment_result::type 25082: operator++( 25082: iterator_facade& i 25082: , int 25082: ) 25082: { 25082: typename boost::iterators::detail::postfix_increment_result::type 25082: tmp(*static_cast(&i)); 25082: 25082: ++i; 25082: 25082: return tmp; 25082: } 25082: # 900 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4 25082: 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::type >::type operator ==( iterator_facade const& lhs , iterator_facade const& rhs) { static_assert(( is_interoperable< Derived1, Derived2 >::value ), "( is_interoperable< Derived1, Derived2 >::value )"); return iterator_core_access::equal( *static_cast(&lhs) , *static_cast(&rhs) , is_convertible() ); } 25082: 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::type >::type operator !=( iterator_facade const& lhs , iterator_facade const& rhs) { static_assert(( is_interoperable< Derived1, Derived2 >::value ), "( is_interoperable< Derived1, Derived2 >::value )"); return ! iterator_core_access::equal( *static_cast(&lhs) , *static_cast(&rhs) , is_convertible() ); } 25082: # 930 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4 25082: 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::type >::type operator <( iterator_facade const& lhs , iterator_facade 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(&lhs) , *static_cast(&rhs) , is_convertible() ); } 25082: 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::type >::type operator >( iterator_facade const& lhs , iterator_facade 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(&lhs) , *static_cast(&rhs) , is_convertible() ); } 25082: 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::type >::type operator <=( iterator_facade const& lhs , iterator_facade 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(&lhs) , *static_cast(&rhs) , is_convertible() ); } 25082: 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::type >::type operator >=( iterator_facade const& lhs , iterator_facade 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(&lhs) , *static_cast(&rhs) , is_convertible() ); } 25082: 25082: 25082: 25082: 25082: 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::type >::type operator -( iterator_facade const& lhs , iterator_facade 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(&lhs) , *static_cast(&rhs) , is_convertible() ); } 25082: # 955 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4 25082: template 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 const& i , typename Derived::difference_type n ) { Derived tmp(static_cast(i)); return tmp += n; } 25082: 25082: 25082: 25082: 25082: template 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 const& i ) { Derived tmp(static_cast(i)); return tmp += n; } 25082: # 972 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4 25082: } 25082: 25082: using iterators::iterator_core_access; 25082: using iterators::iterator_facade; 25082: 25082: } 25082: 25082: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4 25082: # 980 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4 25082: # 14 "/usr/include/boost/iterator/iterator_adaptor.hpp" 2 3 4 25082: # 28 "/usr/include/boost/iterator/iterator_adaptor.hpp" 3 4 25082: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4 25082: # 29 "/usr/include/boost/iterator/iterator_adaptor.hpp" 2 3 4 25082: 25082: 25082: 25082: namespace boost { 25082: namespace iterators { 25082: 25082: 25082: 25082: 25082: struct use_default; 25082: 25082: } 25082: 25082: using iterators::use_default; 25082: 25082: 25082: 25082: 25082: template 25082: struct is_convertible 25082: : mpl::false_ {}; 25082: 25082: namespace iterators { 25082: 25082: namespace detail 25082: { 25082: # 63 "/usr/include/boost/iterator/iterator_adaptor.hpp" 3 4 25082: struct enable_type; 25082: } 25082: # 130 "/usr/include/boost/iterator/iterator_adaptor.hpp" 3 4 25082: template 25082: struct enable_if_convertible 25082: : iterators::enable_if< 25082: is_convertible 25082: , boost::iterators::detail::enable_type 25082: > 25082: {}; 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace detail 25082: { 25082: 25082: 25082: template 25082: struct ia_dflt_help 25082: : mpl::eval_if< 25082: is_same 25082: , DefaultNullaryFn 25082: , mpl::identity 25082: > 25082: { 25082: }; 25082: 25082: 25082: 25082: template < 25082: class Derived 25082: , class Base 25082: , class Value 25082: , class Traversal 25082: , class Reference 25082: , class Difference 25082: > 25082: struct iterator_adaptor_base 25082: { 25082: typedef iterator_facade< 25082: Derived 25082: 25082: 25082: , typename boost::iterators::detail::ia_dflt_help< 25082: Value 25082: , mpl::eval_if< 25082: is_same 25082: , iterator_value 25082: , remove_reference 25082: > 25082: >::type 25082: 25082: 25082: 25082: 25082: 25082: 25082: , typename boost::iterators::detail::ia_dflt_help< 25082: Traversal 25082: , iterator_traversal 25082: >::type 25082: 25082: , typename boost::iterators::detail::ia_dflt_help< 25082: Reference 25082: , mpl::eval_if< 25082: is_same 25082: , iterator_reference 25082: , add_reference 25082: > 25082: >::type 25082: 25082: , typename boost::iterators::detail::ia_dflt_help< 25082: Difference, iterator_difference 25082: >::type 25082: > 25082: type; 25082: }; 25082: 25082: 25082: template 25082: inline void iterator_adaptor_assert_traversal () 25082: { 25082: static_assert((is_convertible::value), "(is_convertible::value)"); 25082: } 25082: } 25082: # 241 "/usr/include/boost/iterator/iterator_adaptor.hpp" 3 4 25082: template < 25082: class Derived 25082: , class Base 25082: , class Value = use_default 25082: , class Traversal = use_default 25082: , class Reference = use_default 25082: , class Difference = use_default 25082: > 25082: class iterator_adaptor 25082: : public boost::iterators::detail::iterator_adaptor_base< 25082: Derived, Base, Value, Traversal, Reference, Difference 25082: >::type 25082: { 25082: friend class iterator_core_access; 25082: 25082: protected: 25082: typedef typename boost::iterators::detail::iterator_adaptor_base< 25082: Derived, Base, Value, Traversal, Reference, Difference 25082: >::type super_t; 25082: public: 25082: iterator_adaptor() {} 25082: 25082: explicit iterator_adaptor(Base const &iter) 25082: : m_iterator(iter) 25082: { 25082: } 25082: 25082: typedef Base base_type; 25082: 25082: Base const& base() const 25082: { return m_iterator; } 25082: 25082: protected: 25082: 25082: typedef iterator_adaptor iterator_adaptor_; 25082: 25082: 25082: 25082: 25082: Base const& base_reference() const 25082: { return m_iterator; } 25082: 25082: Base& base_reference() 25082: { return m_iterator; } 25082: 25082: private: 25082: 25082: 25082: 25082: 25082: 25082: 25082: typename super_t::reference dereference() const 25082: { return *m_iterator; } 25082: 25082: template < 25082: class OtherDerived, class OtherIterator, class V, class C, class R, class D 25082: > 25082: bool equal(iterator_adaptor const& x) const 25082: { 25082: 25082: 25082: 25082: 25082: return m_iterator == x.base(); 25082: } 25082: 25082: typedef typename iterator_category_to_traversal< 25082: typename super_t::iterator_category 25082: >::type my_traversal; 25082: 25082: 25082: 25082: 25082: void advance(typename super_t::difference_type n) 25082: { 25082: boost::iterators::detail::iterator_adaptor_assert_traversal(); 25082: m_iterator += n; 25082: } 25082: 25082: void increment() { ++m_iterator; } 25082: 25082: void decrement() 25082: { 25082: boost::iterators::detail::iterator_adaptor_assert_traversal(); 25082: --m_iterator; 25082: } 25082: 25082: template < 25082: class OtherDerived, class OtherIterator, class V, class C, class R, class D 25082: > 25082: typename super_t::difference_type distance_to( 25082: iterator_adaptor const& y) const 25082: { 25082: boost::iterators::detail::iterator_adaptor_assert_traversal(); 25082: 25082: 25082: 25082: 25082: return y.base() - m_iterator; 25082: } 25082: 25082: 25082: 25082: private: 25082: Base m_iterator; 25082: }; 25082: 25082: } 25082: 25082: using iterators::iterator_adaptor; 25082: using iterators::enable_if_convertible; 25082: 25082: } 25082: 25082: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4 25082: # 357 "/usr/include/boost/iterator/iterator_adaptor.hpp" 2 3 4 25082: # 12 "/usr/include/boost/iterator_adaptors.hpp" 2 3 4 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Common/PODArray.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/likely.h" 1 3 4 25082: 25082: # 12 "/build/clickhouse-18.16.1+ds/dbms/src/Common/PODArray.h" 2 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/Allocator.h" 1 3 4 25082: 25082: # 14 "/build/clickhouse-18.16.1+ds/dbms/src/Common/Allocator.h" 3 4 25082: template 25082: class Allocator 25082: { 25082: protected: 25082: static constexpr bool clear_memory = clear_memory_; 25082: 25082: public: 25082: 25082: void * alloc(size_t size, size_t alignment = 0); 25082: 25082: 25082: void free(void * buf, size_t size); 25082: 25082: 25082: 25082: 25082: 25082: void * realloc(void * buf, size_t old_size, size_t new_size, size_t alignment = 0); 25082: 25082: protected: 25082: static constexpr size_t getStackThreshold() 25082: { 25082: return 0; 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wfree-nonheap-object" 25082: 25082: 25082: 25082: 25082: template 25082: class AllocatorWithStackMemory : private Base 25082: { 25082: private: 25082: char stack_memory[N]; 25082: 25082: public: 25082: void * alloc(size_t size) 25082: { 25082: if (size <= N) 25082: { 25082: if (Base::clear_memory) 25082: memset(stack_memory, 0, N); 25082: return stack_memory; 25082: } 25082: 25082: return Base::alloc(size); 25082: } 25082: 25082: void free(void * buf, size_t size) 25082: { 25082: if (size > N) 25082: Base::free(buf, size); 25082: } 25082: 25082: void * realloc(void * buf, size_t old_size, size_t new_size) 25082: { 25082: 25082: if (new_size <= N) 25082: return buf; 25082: 25082: 25082: if (old_size > N) 25082: return Base::realloc(buf, old_size, new_size); 25082: 25082: 25082: void * new_buf = Base::alloc(new_size); 25082: memcpy(new_buf, buf, old_size); 25082: return new_buf; 25082: } 25082: 25082: protected: 25082: static constexpr size_t getStackThreshold() 25082: { 25082: return N; 25082: } 25082: }; 25082: 25082: 25082: 25082: #pragma GCC diagnostic pop 25082: # 15 "/build/clickhouse-18.16.1+ds/dbms/src/Common/PODArray.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/BitHelpers.h" 1 3 4 25082: 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Common/BitHelpers.h" 3 4 25082: inline unsigned int bitScanReverse(unsigned int x) 25082: { 25082: return sizeof(unsigned int) * 8 - 1 - __builtin_clz(x); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline size_t roundUpToPowerOfTwoOrZero(size_t n) 25082: { 25082: --n; 25082: n |= n >> 1; 25082: n |= n >> 2; 25082: n |= n >> 4; 25082: n |= n >> 8; 25082: n |= n >> 16; 25082: n |= n >> 32; 25082: ++n; 25082: 25082: return n; 25082: } 25082: # 17 "/build/clickhouse-18.16.1+ds/dbms/src/Common/PODArray.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/memcpySmall.h" 1 3 4 25082: 25082: # 61 "/build/clickhouse-18.16.1+ds/dbms/src/Common/memcpySmall.h" 3 4 25082: inline void memcpySmallAllowReadWriteOverflow15(void * __restrict dst, const void * __restrict src, size_t n) 25082: { 25082: memcpy(dst, src, n); 25082: } 25082: # 18 "/build/clickhouse-18.16.1+ds/dbms/src/Common/PODArray.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: # 49 "/build/clickhouse-18.16.1+ds/dbms/src/Common/PODArray.h" 3 4 25082: template , size_t pad_right_ = 0> 25082: class PODArray : private boost::noncopyable, private TAllocator 25082: { 25082: protected: 25082: 25082: static constexpr size_t pad_right = (pad_right_ + sizeof(T) - 1) / sizeof(T) * sizeof(T); 25082: 25082: char * c_start = nullptr; 25082: char * c_end = nullptr; 25082: char * c_end_of_storage = nullptr; 25082: 25082: T * t_start() { return reinterpret_cast(c_start); } 25082: T * t_end() { return reinterpret_cast(c_end); } 25082: T * t_end_of_storage() { return reinterpret_cast(c_end_of_storage); } 25082: 25082: const T * t_start() const { return reinterpret_cast(c_start); } 25082: const T * t_end() const { return reinterpret_cast(c_end); } 25082: const T * t_end_of_storage() const { return reinterpret_cast(c_end_of_storage); } 25082: 25082: 25082: static size_t byte_size(size_t num_elements) { return num_elements * sizeof(T); } 25082: 25082: 25082: static size_t minimum_memory_for_elements(size_t num_elements) { return byte_size(num_elements) + pad_right; } 25082: 25082: void alloc_for_num_elements(size_t num_elements) 25082: { 25082: alloc(roundUpToPowerOfTwoOrZero(minimum_memory_for_elements(num_elements))); 25082: } 25082: 25082: template 25082: void alloc(size_t bytes, TAllocatorParams &&... allocator_params) 25082: { 25082: c_start = c_end = reinterpret_cast(TAllocator::alloc(bytes, std::forward(allocator_params)...)); 25082: c_end_of_storage = c_start + bytes - pad_right; 25082: } 25082: 25082: void dealloc() 25082: { 25082: if (c_start == nullptr) 25082: return; 25082: 25082: TAllocator::free(c_start, allocated_bytes()); 25082: } 25082: 25082: template 25082: void realloc(size_t bytes, TAllocatorParams &&... allocator_params) 25082: { 25082: if (c_start == nullptr) 25082: { 25082: alloc(bytes, std::forward(allocator_params)...); 25082: return; 25082: } 25082: 25082: ptrdiff_t end_diff = c_end - c_start; 25082: 25082: c_start = reinterpret_cast(TAllocator::realloc(c_start, allocated_bytes(), bytes, std::forward(allocator_params)...)); 25082: 25082: c_end = c_start + end_diff; 25082: c_end_of_storage = c_start + bytes - pad_right; 25082: } 25082: 25082: bool isInitialized() const 25082: { 25082: return (c_start != nullptr) && (c_end != nullptr) && (c_end_of_storage != nullptr); 25082: } 25082: 25082: bool isAllocatedFromStack() const 25082: { 25082: constexpr size_t stack_threshold = TAllocator::getStackThreshold(); 25082: return (stack_threshold > 0) && (allocated_bytes() <= stack_threshold); 25082: } 25082: 25082: template 25082: void reserveForNextSize(TAllocatorParams &&... allocator_params) 25082: { 25082: if (size() == 0) 25082: { 25082: 25082: 25082: realloc(std::max(((INITIAL_SIZE - 1) / sizeof(T) + 1) * sizeof(T), minimum_memory_for_elements(1)), 25082: std::forward(allocator_params)...); 25082: } 25082: else 25082: realloc(allocated_bytes() * 2, std::forward(allocator_params)...); 25082: } 25082: 25082: public: 25082: using value_type = T; 25082: 25082: size_t allocated_bytes() const { return c_end_of_storage - c_start + pad_right; } 25082: 25082: 25082: struct iterator : public boost::iterator_adaptor 25082: { 25082: iterator() {} 25082: iterator(T * ptr_) : iterator::iterator_adaptor_(ptr_) {} 25082: }; 25082: 25082: struct const_iterator : public boost::iterator_adaptor 25082: { 25082: const_iterator() {} 25082: const_iterator(const T * ptr_) : const_iterator::iterator_adaptor_(ptr_) {} 25082: }; 25082: 25082: 25082: PODArray() {} 25082: 25082: PODArray(size_t n) 25082: { 25082: alloc_for_num_elements(n); 25082: c_end += byte_size(n); 25082: } 25082: 25082: PODArray(size_t n, const T & x) 25082: { 25082: alloc_for_num_elements(n); 25082: assign(n, x); 25082: } 25082: 25082: PODArray(const_iterator from_begin, const_iterator from_end) 25082: { 25082: alloc_for_num_elements(from_end - from_begin); 25082: insert(from_begin, from_end); 25082: } 25082: 25082: PODArray(std::initializer_list il) : PODArray(std::begin(il), std::end(il)) {} 25082: 25082: ~PODArray() 25082: { 25082: dealloc(); 25082: } 25082: 25082: PODArray(PODArray && other) 25082: { 25082: this->swap(other); 25082: } 25082: 25082: PODArray & operator=(PODArray && other) 25082: { 25082: this->swap(other); 25082: return *this; 25082: } 25082: 25082: T * data() { return t_start(); } 25082: const T * data() const { return t_start(); } 25082: 25082: size_t size() const { return t_end() - t_start(); } 25082: bool empty() const { return t_end() == t_start(); } 25082: size_t capacity() const { return t_end_of_storage() - t_start(); } 25082: 25082: T & operator[] (size_t n) { return t_start()[n]; } 25082: const T & operator[] (size_t n) const { return t_start()[n]; } 25082: 25082: T & front() { return t_start()[0]; } 25082: T & back() { return t_end()[-1]; } 25082: const T & front() const { return t_start()[0]; } 25082: const T & back() const { return t_end()[-1]; } 25082: 25082: iterator begin() { return t_start(); } 25082: iterator end() { return t_end(); } 25082: const_iterator begin() const { return t_start(); } 25082: const_iterator end() const { return t_end(); } 25082: const_iterator cbegin() const { return t_start(); } 25082: const_iterator cend() const { return t_end(); } 25082: 25082: template 25082: void reserve(size_t n, TAllocatorParams &&... allocator_params) 25082: { 25082: if (n > capacity()) 25082: realloc(roundUpToPowerOfTwoOrZero(minimum_memory_for_elements(n)), std::forward(allocator_params)...); 25082: } 25082: 25082: template 25082: void resize(size_t n, TAllocatorParams &&... allocator_params) 25082: { 25082: reserve(n, std::forward(allocator_params)...); 25082: resize_assume_reserved(n); 25082: } 25082: 25082: void resize_assume_reserved(const size_t n) 25082: { 25082: c_end = c_start + byte_size(n); 25082: } 25082: 25082: 25082: void resize_fill(size_t n) 25082: { 25082: size_t old_size = size(); 25082: if (n > old_size) 25082: { 25082: reserve(n); 25082: memset(c_end, 0, byte_size(n - old_size)); 25082: } 25082: c_end = c_start + byte_size(n); 25082: } 25082: 25082: void resize_fill(size_t n, const T & value) 25082: { 25082: size_t old_size = size(); 25082: if (n > old_size) 25082: { 25082: reserve(n); 25082: std::fill(t_end(), t_end() + n - old_size, value); 25082: } 25082: c_end = c_start + byte_size(n); 25082: } 25082: 25082: void clear() 25082: { 25082: c_end = c_start; 25082: } 25082: 25082: template 25082: void push_back(const T & x, TAllocatorParams &&... allocator_params) 25082: { 25082: if ((__builtin_expect(!!(c_end == c_end_of_storage), 0))) 25082: reserveForNextSize(std::forward(allocator_params)...); 25082: 25082: *t_end() = x; 25082: c_end += byte_size(1); 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: void emplace_back(Args &&... args) 25082: { 25082: if ((__builtin_expect(!!(c_end == c_end_of_storage), 0))) 25082: reserveForNextSize(); 25082: 25082: new (t_end()) T(std::forward(args)...); 25082: c_end += byte_size(1); 25082: } 25082: 25082: void pop_back() 25082: { 25082: c_end -= byte_size(1); 25082: } 25082: 25082: 25082: template 25082: void insertPrepare(It1 from_begin, It2 from_end, TAllocatorParams &&... allocator_params) 25082: { 25082: size_t required_capacity = size() + (from_end - from_begin); 25082: if (required_capacity > capacity()) 25082: reserve(roundUpToPowerOfTwoOrZero(required_capacity), std::forward(allocator_params)...); 25082: } 25082: 25082: 25082: template 25082: void insert(It1 from_begin, It2 from_end, TAllocatorParams &&... allocator_params) 25082: { 25082: insertPrepare(from_begin, from_end, std::forward(allocator_params)...); 25082: insert_assume_reserved(from_begin, from_end); 25082: } 25082: 25082: 25082: template 25082: void insertSmallAllowReadWriteOverflow15(It1 from_begin, It2 from_end, TAllocatorParams &&... allocator_params) 25082: { 25082: static_assert(pad_right_ >= 15); 25082: insertPrepare(from_begin, from_end, std::forward(allocator_params)...); 25082: size_t bytes_to_copy = byte_size(from_end - from_begin); 25082: memcpySmallAllowReadWriteOverflow15(c_end, reinterpret_cast(&*from_begin), bytes_to_copy); 25082: c_end += bytes_to_copy; 25082: } 25082: 25082: template 25082: void insert(iterator it, It1 from_begin, It2 from_end) 25082: { 25082: insertPrepare(from_begin, from_end); 25082: 25082: size_t bytes_to_copy = byte_size(from_end - from_begin); 25082: size_t bytes_to_move = (end() - it) * sizeof(T); 25082: 25082: if ((__builtin_expect(!!(bytes_to_move), 0))) 25082: memcpy(c_end + bytes_to_copy - bytes_to_move, c_end - bytes_to_move, bytes_to_move); 25082: 25082: memcpy(c_end - bytes_to_move, reinterpret_cast(&*from_begin), bytes_to_copy); 25082: c_end += bytes_to_copy; 25082: } 25082: 25082: template 25082: void insert_assume_reserved(It1 from_begin, It2 from_end) 25082: { 25082: size_t bytes_to_copy = byte_size(from_end - from_begin); 25082: memcpy(c_end, reinterpret_cast(&*from_begin), bytes_to_copy); 25082: c_end += bytes_to_copy; 25082: } 25082: 25082: void swap(PODArray & rhs) 25082: { 25082: 25082: 25082: 25082: auto swap_stack_heap = [](PODArray & arr1, PODArray & arr2) 25082: { 25082: size_t stack_size = arr1.size(); 25082: size_t stack_allocated = arr1.allocated_bytes(); 25082: 25082: size_t heap_size = arr2.size(); 25082: size_t heap_allocated = arr2.allocated_bytes(); 25082: 25082: 25082: char * stack_c_start = arr1.c_start; 25082: 25082: 25082: arr1.c_start = arr2.c_start; 25082: arr1.c_end_of_storage = arr1.c_start + heap_allocated - arr1.pad_right; 25082: arr1.c_end = arr1.c_start + byte_size(heap_size); 25082: 25082: 25082: arr2.alloc(stack_allocated); 25082: 25082: memcpy(arr2.c_start, stack_c_start, byte_size(stack_size)); 25082: arr2.c_end = arr2.c_start + byte_size(stack_size); 25082: }; 25082: 25082: auto do_move = [](PODArray & src, PODArray & dest) 25082: { 25082: if (src.isAllocatedFromStack()) 25082: { 25082: dest.dealloc(); 25082: dest.alloc(src.allocated_bytes()); 25082: memcpy(dest.c_start, src.c_start, byte_size(src.size())); 25082: dest.c_end = dest.c_start + (src.c_end - src.c_start); 25082: 25082: src.c_start = nullptr; 25082: src.c_end = nullptr; 25082: src.c_end_of_storage = nullptr; 25082: } 25082: else 25082: { 25082: std::swap(dest.c_start, src.c_start); 25082: std::swap(dest.c_end, src.c_end); 25082: std::swap(dest.c_end_of_storage, src.c_end_of_storage); 25082: } 25082: }; 25082: 25082: if (!isInitialized() && !rhs.isInitialized()) 25082: return; 25082: else if (!isInitialized() && rhs.isInitialized()) 25082: { 25082: do_move(rhs, *this); 25082: return; 25082: } 25082: else if (isInitialized() && !rhs.isInitialized()) 25082: { 25082: do_move(*this, rhs); 25082: return; 25082: } 25082: 25082: if (isAllocatedFromStack() && rhs.isAllocatedFromStack()) 25082: { 25082: size_t min_size = std::min(size(), rhs.size()); 25082: size_t max_size = std::max(size(), rhs.size()); 25082: 25082: for (size_t i = 0; i < min_size; ++i) 25082: std::swap(this->operator[](i), rhs[i]); 25082: 25082: if (size() == max_size) 25082: { 25082: for (size_t i = min_size; i < max_size; ++i) 25082: rhs[i] = this->operator[](i); 25082: } 25082: else 25082: { 25082: for (size_t i = min_size; i < max_size; ++i) 25082: this->operator[](i) = rhs[i]; 25082: } 25082: 25082: size_t lhs_size = size(); 25082: size_t lhs_allocated = allocated_bytes(); 25082: 25082: size_t rhs_size = rhs.size(); 25082: size_t rhs_allocated = rhs.allocated_bytes(); 25082: 25082: c_end_of_storage = c_start + rhs_allocated - pad_right; 25082: rhs.c_end_of_storage = rhs.c_start + lhs_allocated - pad_right; 25082: 25082: c_end = c_start + byte_size(rhs_size); 25082: rhs.c_end = rhs.c_start + byte_size(lhs_size); 25082: } 25082: else if (isAllocatedFromStack() && !rhs.isAllocatedFromStack()) 25082: swap_stack_heap(*this, rhs); 25082: else if (!isAllocatedFromStack() && rhs.isAllocatedFromStack()) 25082: swap_stack_heap(rhs, *this); 25082: else 25082: { 25082: std::swap(c_start, rhs.c_start); 25082: std::swap(c_end, rhs.c_end); 25082: std::swap(c_end_of_storage, rhs.c_end_of_storage); 25082: } 25082: } 25082: 25082: void assign(size_t n, const T & x) 25082: { 25082: resize(n); 25082: std::fill(begin(), end(), x); 25082: } 25082: 25082: template 25082: void assign(It1 from_begin, It2 from_end) 25082: { 25082: size_t required_capacity = from_end - from_begin; 25082: if (required_capacity > capacity()) 25082: reserve(roundUpToPowerOfTwoOrZero(required_capacity)); 25082: 25082: size_t bytes_to_copy = byte_size(required_capacity); 25082: memcpy(c_start, reinterpret_cast(&*from_begin), bytes_to_copy); 25082: c_end = c_start + bytes_to_copy; 25082: } 25082: 25082: void assign(const PODArray & from) 25082: { 25082: assign(from.begin(), from.end()); 25082: } 25082: 25082: 25082: bool operator== (const PODArray & other) const 25082: { 25082: if (size() != other.size()) 25082: return false; 25082: 25082: const_iterator this_it = begin(); 25082: const_iterator that_it = other.begin(); 25082: 25082: while (this_it != end()) 25082: { 25082: if (*this_it != *that_it) 25082: return false; 25082: 25082: ++this_it; 25082: ++that_it; 25082: } 25082: 25082: return true; 25082: } 25082: 25082: bool operator!= (const PODArray & other) const 25082: { 25082: return !operator==(other); 25082: } 25082: }; 25082: 25082: template 25082: void swap(PODArray & lhs, PODArray & rhs) 25082: { 25082: lhs.swap(rhs); 25082: } 25082: 25082: 25082: template > 25082: using PaddedPODArray = PODArray; 25082: 25082: 25082: inline constexpr size_t integerRound(size_t value, size_t dividend) 25082: { 25082: return ((value + dividend - 1) / dividend) * dividend; 25082: } 25082: 25082: template 25082: using PODArrayWithStackMemory = PODArray, integerRound(stack_size_in_bytes, sizeof(T))>>; 25082: 25082: } 25082: # 6 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/IColumn.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/StringRef.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/unaligned.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: template 25082: inline T unalignedLoad(const void * address) 25082: { 25082: T res {}; 25082: memcpy(&res, address, sizeof(res)); 25082: return res; 25082: } 25082: 25082: template 25082: inline void unalignedStore(void * address, const T & src) 25082: { 25082: memcpy(address, &src, sizeof(src)); 25082: } 25082: # 10 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/StringRef.h" 2 3 4 25082: # 24 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/StringRef.h" 3 4 25082: struct StringRef 25082: { 25082: const char * data = nullptr; 25082: size_t size = 0; 25082: 25082: StringRef(const char * data_, size_t size_) : data(data_), size(size_) {} 25082: StringRef(const unsigned char * data_, size_t size_) : data(reinterpret_cast(data_)), size(size_) {} 25082: StringRef(const std::string & s) : data(s.data()), size(s.size()) {} 25082: StringRef() = default; 25082: 25082: std::string toString() const { return std::string(data, size); } 25082: 25082: explicit operator std::string() const { return toString(); } 25082: }; 25082: 25082: using StringRefs = std::vector; 25082: # 128 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/StringRef.h" 3 4 25082: inline bool operator== (StringRef lhs, StringRef rhs) 25082: { 25082: if (lhs.size != rhs.size) 25082: return false; 25082: 25082: if (lhs.size == 0) 25082: return true; 25082: 25082: 25082: 25082: 25082: return 0 == memcmp(lhs.data, rhs.data, lhs.size); 25082: 25082: } 25082: 25082: inline bool operator!= (StringRef lhs, StringRef rhs) 25082: { 25082: return !(lhs == rhs); 25082: } 25082: 25082: inline bool operator< (StringRef lhs, StringRef rhs) 25082: { 25082: int cmp = memcmp(lhs.data, rhs.data, std::min(lhs.size, rhs.size)); 25082: return cmp < 0 || (cmp == 0 && lhs.size < rhs.size); 25082: } 25082: 25082: inline bool operator> (StringRef lhs, StringRef rhs) 25082: { 25082: int cmp = memcmp(lhs.data, rhs.data, std::min(lhs.size, rhs.size)); 25082: return cmp > 0 || (cmp == 0 && lhs.size > rhs.size); 25082: } 25082: # 169 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/StringRef.h" 3 4 25082: struct StringRefHash64 25082: { 25082: size_t operator() (StringRef x) const 25082: { 25082: return CityHash_v1_0_2::CityHash64(x.data, x.size); 25082: } 25082: }; 25082: # 269 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/StringRef.h" 3 4 25082: struct CRC32Hash 25082: { 25082: size_t operator() (StringRef ) const 25082: { 25082: throw std::logic_error{"Not implemented CRC32Hash without SSE"}; 25082: } 25082: }; 25082: 25082: struct StringRefHash : StringRefHash64 {}; 25082: 25082: 25082: 25082: 25082: namespace std 25082: { 25082: template <> 25082: struct hash : public StringRefHash {}; 25082: } 25082: 25082: 25082: namespace ZeroTraits 25082: { 25082: inline bool check(StringRef x) { return 0 == x.size; } 25082: inline void set(StringRef & x) { x.size = 0; } 25082: } 25082: 25082: 25082: inline bool operator==(StringRef lhs, const char * rhs) 25082: { 25082: for (size_t pos = 0; pos < lhs.size; ++pos) 25082: if (!rhs[pos] || lhs.data[pos] != rhs[pos]) 25082: return false; 25082: 25082: return true; 25082: } 25082: 25082: inline std::ostream & operator<<(std::ostream & os, const StringRef & str) 25082: { 25082: if (str.data) 25082: os.write(str.data, str.size); 25082: 25082: return os; 25082: } 25082: # 8 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/IColumn.h" 2 3 4 25082: 25082: 25082: class SipHash; 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int CANNOT_GET_SIZE_OF_FIELD; 25082: extern const int NOT_IMPLEMENTED; 25082: extern const int SIZES_OF_COLUMNS_DOESNT_MATCH; 25082: } 25082: 25082: class Arena; 25082: class ColumnGathererStream; 25082: 25082: 25082: class IColumn : public COWPtr 25082: { 25082: private: 25082: friend class COWPtr; 25082: 25082: 25082: 25082: 25082: 25082: virtual MutablePtr clone() const = 0; 25082: 25082: public: 25082: 25082: virtual std::string getName() const { return getFamilyName(); } 25082: 25082: 25082: virtual const char * getFamilyName() const = 0; 25082: 25082: 25082: 25082: 25082: virtual Ptr convertToFullColumnIfConst() const { return {}; } 25082: 25082: 25082: 25082: virtual Ptr convertToFullColumnIfLowCardinality() const { return getPtr(); } 25082: 25082: 25082: virtual MutablePtr cloneEmpty() const { return cloneResized(0); } 25082: 25082: 25082: 25082: 25082: virtual MutablePtr cloneResized(size_t ) const { throw Exception("Cannot cloneResized() column " + getName(), ErrorCodes::NOT_IMPLEMENTED); } 25082: 25082: 25082: virtual size_t size() const = 0; 25082: 25082: 25082: bool empty() const { return size() == 0; } 25082: 25082: 25082: 25082: virtual Field operator[](size_t n) const = 0; 25082: 25082: 25082: virtual void get(size_t n, Field & res) const = 0; 25082: 25082: 25082: 25082: virtual StringRef getDataAt(size_t n) const = 0; 25082: 25082: 25082: 25082: virtual StringRef getDataAtWithTerminatingZero(size_t n) const 25082: { 25082: return getDataAt(n); 25082: } 25082: 25082: 25082: 25082: 25082: virtual UInt64 get64(size_t ) const 25082: { 25082: throw Exception("Method get64 is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: virtual UInt64 getUInt(size_t ) const 25082: { 25082: throw Exception("Method getUInt is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: 25082: virtual Int64 getInt(size_t ) const 25082: { 25082: throw Exception("Method getInt is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: 25082: virtual bool isDefaultAt(size_t n) const { return get64(n) == 0; } 25082: virtual bool isNullAt(size_t ) const { return false; } 25082: 25082: 25082: 25082: 25082: 25082: virtual bool getBool(size_t ) const 25082: { 25082: throw Exception("Method getBool is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: 25082: 25082: 25082: virtual Ptr cut(size_t start, size_t length) const 25082: { 25082: MutablePtr res = cloneEmpty(); 25082: res->insertRangeFrom(*this, start, length); 25082: return res; 25082: } 25082: 25082: 25082: 25082: virtual void insert(const Field & x) = 0; 25082: 25082: 25082: 25082: virtual void insertFrom(const IColumn & src, size_t n) { insert(src[n]); } 25082: 25082: 25082: 25082: virtual void insertRangeFrom(const IColumn & src, size_t start, size_t length) = 0; 25082: 25082: 25082: 25082: 25082: virtual void insertData(const char * pos, size_t length) = 0; 25082: 25082: 25082: 25082: 25082: virtual void insertDefault() = 0; 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual void popBack(size_t n) = 0; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual StringRef serializeValueIntoArena(size_t n, Arena & arena, char const *& begin) const = 0; 25082: 25082: 25082: 25082: virtual const char * deserializeAndInsertFromArena(const char * pos) = 0; 25082: 25082: 25082: 25082: 25082: virtual void updateHashWithValue(size_t n, SipHash & hash) const = 0; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using Filter = PaddedPODArray; 25082: virtual Ptr filter(const Filter & filt, ssize_t result_size_hint) const = 0; 25082: 25082: 25082: 25082: using Permutation = PaddedPODArray; 25082: virtual Ptr permute(const Permutation & perm, size_t limit) const = 0; 25082: 25082: 25082: 25082: virtual Ptr index(const IColumn & indexes, size_t limit) const = 0; 25082: # 204 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/IColumn.h" 3 4 25082: virtual int compareAt(size_t n, size_t m, const IColumn & rhs, int nan_direction_hint) const = 0; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual void getPermutation(bool reverse, size_t limit, int nan_direction_hint, Permutation & res) const = 0; 25082: 25082: 25082: 25082: 25082: 25082: using Offset = UInt64; 25082: using Offsets = PaddedPODArray; 25082: virtual Ptr replicate(const Offsets & offsets) const = 0; 25082: 25082: 25082: 25082: 25082: 25082: using ColumnIndex = UInt64; 25082: using Selector = PaddedPODArray; 25082: virtual std::vector scatter(ColumnIndex num_columns, const Selector & selector) const = 0; 25082: 25082: 25082: 25082: 25082: 25082: virtual void gather(ColumnGathererStream & gatherer_stream) = 0; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual void getExtremes(Field & min, Field & max) const = 0; 25082: 25082: 25082: 25082: virtual void reserve(size_t ) {} 25082: 25082: 25082: virtual size_t byteSize() const = 0; 25082: 25082: 25082: 25082: 25082: virtual size_t allocatedBytes() const = 0; 25082: 25082: 25082: 25082: using ColumnCallback = std::function; 25082: virtual void forEachSubcolumn(ColumnCallback) {} 25082: 25082: 25082: MutablePtr mutate() const && 25082: { 25082: MutablePtr res = COWPtr::mutate(); 25082: res->forEachSubcolumn([](Ptr & subcolumn) { subcolumn = (*std::move(subcolumn)).mutate(); }); 25082: return res; 25082: } 25082: # 282 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/IColumn.h" 3 4 25082: virtual bool isColumnNullable() const { return false; } 25082: 25082: 25082: virtual bool isColumnConst() const { return false; } 25082: 25082: 25082: virtual bool isDummy() const { return false; } 25082: # 308 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/IColumn.h" 3 4 25082: virtual bool valuesHaveFixedSize() const { return isFixedAndContiguous(); } 25082: 25082: 25082: virtual bool isFixedAndContiguous() const { return false; } 25082: 25082: 25082: virtual StringRef getRawData() const { throw Exception("Column " + getName() + " is not a contiguous block of memory", ErrorCodes::NOT_IMPLEMENTED); } 25082: 25082: 25082: virtual size_t sizeOfValueIfFixed() const { throw Exception("Values of column " + getName() + " are not fixed size.", ErrorCodes::CANNOT_GET_SIZE_OF_FIELD); } 25082: 25082: 25082: 25082: virtual bool isNumeric() const { return false; } 25082: 25082: 25082: 25082: virtual bool onlyNull() const { return false; } 25082: 25082: 25082: virtual bool canBeInsideNullable() const { return false; } 25082: 25082: virtual bool lowCardinality() const { return false; } 25082: 25082: 25082: virtual ~IColumn() {} 25082: 25082: 25082: 25082: String dumpStructure() const; 25082: 25082: protected: 25082: 25082: 25082: 25082: template 25082: std::vector scatterImpl(ColumnIndex num_columns, const Selector & selector) const 25082: { 25082: size_t num_rows = size(); 25082: 25082: if (num_rows != selector.size()) 25082: throw Exception( 25082: "Size of selector: " + std::to_string(selector.size()) + " doesn't match size of column: " + std::to_string(num_rows), 25082: ErrorCodes::SIZES_OF_COLUMNS_DOESNT_MATCH); 25082: 25082: std::vector columns(num_columns); 25082: for (auto & column : columns) 25082: column = cloneEmpty(); 25082: 25082: { 25082: size_t reserve_size = num_rows * 1.1 / num_columns; 25082: 25082: if (reserve_size > 1) 25082: for (auto & column : columns) 25082: column->reserve(reserve_size); 25082: } 25082: 25082: for (size_t i = 0; i < num_rows; ++i) 25082: static_cast(*columns[selector[i]]).insertFrom(*this, i); 25082: 25082: return columns; 25082: } 25082: }; 25082: 25082: using ColumnPtr = IColumn::Ptr; 25082: using MutableColumnPtr = IColumn::MutablePtr; 25082: using Columns = std::vector; 25082: using MutableColumns = std::vector; 25082: 25082: using ColumnRawPtrs = std::vector; 25082: 25082: 25082: template 25082: struct IsMutableColumns; 25082: 25082: template 25082: struct IsMutableColumns 25082: { 25082: static const bool value = std::is_assignable::value && IsMutableColumns::value; 25082: }; 25082: 25082: template <> 25082: struct IsMutableColumns<> { static const bool value = true; }; 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Core/ColumnWithTypeAndName.h" 2 3 4 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: class WriteBuffer; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct ColumnWithTypeAndName 25082: { 25082: ColumnPtr column; 25082: DataTypePtr type; 25082: String name; 25082: 25082: ColumnWithTypeAndName() {} 25082: ColumnWithTypeAndName(const ColumnPtr & column_, const DataTypePtr & type_, const String & name_) 25082: : column(column_), type(type_), name(name_) {} 25082: 25082: 25082: ColumnWithTypeAndName(const DataTypePtr & type_, const String & name_) 25082: : column(type_->createColumn()), type(type_), name(name_) {} 25082: 25082: ColumnWithTypeAndName cloneEmpty() const; 25082: bool operator==(const ColumnWithTypeAndName & other) const; 25082: 25082: void dumpStructure(WriteBuffer & out) const; 25082: String dumpStructure() const; 25082: }; 25082: 25082: } 25082: # 12 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Block.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/ColumnsWithTypeAndName.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: using ColumnsWithTypeAndName = std::vector; 25082: 25082: } 25082: # 13 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Block.h" 2 3 4 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: # 26 "/build/clickhouse-18.16.1+ds/dbms/src/Core/Block.h" 3 4 25082: class Context; 25082: 25082: class Block 25082: { 25082: private: 25082: using Container = ColumnsWithTypeAndName; 25082: using IndexByName = std::map; 25082: 25082: Container data; 25082: IndexByName index_by_name; 25082: 25082: public: 25082: BlockInfo info; 25082: 25082: Block() = default; 25082: Block(std::initializer_list il); 25082: Block(const ColumnsWithTypeAndName & data_); 25082: 25082: 25082: void insert(size_t position, const ColumnWithTypeAndName & elem); 25082: void insert(size_t position, ColumnWithTypeAndName && elem); 25082: 25082: void insert(const ColumnWithTypeAndName & elem); 25082: void insert(ColumnWithTypeAndName && elem); 25082: 25082: void insertUnique(const ColumnWithTypeAndName & elem); 25082: void insertUnique(ColumnWithTypeAndName && elem); 25082: 25082: void erase(size_t position); 25082: 25082: void erase(const std::set & positions); 25082: 25082: void erase(const String & name); 25082: 25082: 25082: 25082: ColumnWithTypeAndName & getByPosition(size_t position) { return data[position]; } 25082: const ColumnWithTypeAndName & getByPosition(size_t position) const { return data[position]; } 25082: 25082: ColumnWithTypeAndName & safeGetByPosition(size_t position); 25082: const ColumnWithTypeAndName & safeGetByPosition(size_t position) const; 25082: 25082: ColumnWithTypeAndName & getByName(const std::string & name); 25082: const ColumnWithTypeAndName & getByName(const std::string & name) const; 25082: 25082: Container::iterator begin() { return data.begin(); } 25082: Container::iterator end() { return data.end(); } 25082: Container::const_iterator begin() const { return data.begin(); } 25082: Container::const_iterator end() const { return data.end(); } 25082: Container::const_iterator cbegin() const { return data.cbegin(); } 25082: Container::const_iterator cend() const { return data.cend(); } 25082: 25082: bool has(const std::string & name) const; 25082: 25082: size_t getPositionByName(const std::string & name) const; 25082: 25082: const ColumnsWithTypeAndName & getColumnsWithTypeAndName() const; 25082: NamesAndTypesList getNamesAndTypesList() const; 25082: Names getNames() const; 25082: 25082: 25082: size_t rows() const; 25082: 25082: size_t columns() const { return data.size(); } 25082: 25082: 25082: void checkNumberOfRows() const; 25082: 25082: 25082: size_t bytes() const; 25082: 25082: 25082: size_t allocatedBytes() const; 25082: 25082: operator bool() const { return !data.empty(); } 25082: bool operator!() const { return data.empty(); } 25082: 25082: 25082: std::string dumpNames() const; 25082: 25082: 25082: std::string dumpStructure() const; 25082: 25082: 25082: Block cloneEmpty() const; 25082: 25082: Columns getColumns() const; 25082: void setColumns(const Columns & columns); 25082: Block cloneWithColumns(const Columns & columns) const; 25082: Block cloneWithoutColumns() const; 25082: 25082: 25082: MutableColumns cloneEmptyColumns() const; 25082: 25082: 25082: MutableColumns mutateColumns(); 25082: 25082: 25082: void setColumns(MutableColumns && columns); 25082: Block cloneWithColumns(MutableColumns && columns) const; 25082: 25082: 25082: Block sortColumns() const; 25082: 25082: void clear(); 25082: void swap(Block & other) noexcept; 25082: 25082: 25082: 25082: 25082: 25082: void updateHash(SipHash & hash) const; 25082: 25082: private: 25082: void eraseImpl(size_t position); 25082: void initializeIndexByName(); 25082: }; 25082: 25082: using Blocks = std::vector; 25082: using BlocksList = std::list; 25082: 25082: 25082: 25082: bool blocksHaveEqualStructure(const Block & lhs, const Block & rhs); 25082: 25082: 25082: void assertBlocksHaveEqualStructure(const Block & lhs, const Block & rhs, const std::string & context_description); 25082: 25082: 25082: void getBlocksDifference(const Block & lhs, const Block & rhs, std::string & out_lhs_diff, std::string & out_rhs_diff); 25082: 25082: } 25082: # 9 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/ColumnNumbers.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: using ColumnNumbers = std::vector; 25082: 25082: } 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 2 3 4 25082: 25082: 25082: 25082: namespace llvm 25082: { 25082: class LLVMContext; 25082: class Value; 25082: class IRBuilderBase; 25082: } 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int ILLEGAL_TYPE_OF_ARGUMENT; 25082: extern const int NOT_IMPLEMENTED; 25082: extern const int LOGICAL_ERROR; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: class IPreparedFunction 25082: { 25082: public: 25082: virtual ~IPreparedFunction() = default; 25082: 25082: 25082: virtual String getName() const = 0; 25082: 25082: virtual void execute(Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count, bool dry_run) = 0; 25082: }; 25082: 25082: using PreparedFunctionPtr = std::shared_ptr; 25082: 25082: 25082: class PreparedFunctionLowCardinalityResultCache; 25082: using PreparedFunctionLowCardinalityResultCachePtr = std::shared_ptr; 25082: 25082: class PreparedFunctionImpl : public IPreparedFunction 25082: { 25082: public: 25082: void execute(Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count, bool dry_run = false) final; 25082: 25082: 25082: 25082: 25082: void createLowCardinalityResultCache(size_t cache_size); 25082: 25082: protected: 25082: virtual void executeImpl(Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count) = 0; 25082: virtual void executeImplDryRun(Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count) 25082: { 25082: executeImpl(block, arguments, result, input_rows_count); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual bool useDefaultImplementationForNulls() const { return true; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual bool useDefaultImplementationForConstants() const { return false; } 25082: 25082: 25082: 25082: 25082: 25082: virtual bool useDefaultImplementationForLowCardinalityColumns() const { return true; } 25082: 25082: 25082: 25082: virtual ColumnNumbers getArgumentsThatAreAlwaysConstant() const { return {}; } 25082: 25082: 25082: 25082: 25082: virtual bool canBeExecutedOnDefaultArguments() const { return true; } 25082: 25082: private: 25082: bool defaultImplementationForNulls(Block & block, const ColumnNumbers & args, size_t result, 25082: size_t input_rows_count, bool dry_run); 25082: bool defaultImplementationForConstantArguments(Block & block, const ColumnNumbers & args, size_t result, 25082: size_t input_rows_count, bool dry_run); 25082: void executeWithoutLowCardinalityColumns(Block & block, const ColumnNumbers & arguments, size_t result, 25082: size_t input_rows_count, bool dry_run); 25082: 25082: 25082: PreparedFunctionLowCardinalityResultCachePtr low_cardinality_result_cache; 25082: }; 25082: 25082: using ValuePlaceholders = std::vector>; 25082: 25082: 25082: class IFunctionBase 25082: { 25082: public: 25082: virtual ~IFunctionBase() = default; 25082: 25082: 25082: virtual String getName() const = 0; 25082: 25082: virtual const DataTypes & getArgumentTypes() const = 0; 25082: virtual const DataTypePtr & getReturnType() const = 0; 25082: 25082: 25082: 25082: virtual PreparedFunctionPtr prepare(const Block & sample_block, const ColumnNumbers & arguments, size_t result) const = 0; 25082: 25082: 25082: virtual void execute(Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count, bool dry_run = false) 25082: { 25082: return prepare(block, arguments, result)->execute(block, arguments, result, input_rows_count, dry_run); 25082: } 25082: # 158 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 3 4 25082: virtual bool isSuitableForConstantFolding() const { return true; } 25082: # 182 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 3 4 25082: virtual bool isInjective(const Block & ) { return false; } 25082: # 191 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 3 4 25082: virtual bool isDeterministic() const { return true; } 25082: 25082: virtual bool isDeterministicInScopeOfQuery() const { return true; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual bool hasInformationAboutMonotonicity() const { return false; } 25082: 25082: 25082: struct Monotonicity 25082: { 25082: bool is_monotonic = false; 25082: bool is_positive = true; 25082: bool is_always_monotonic = false; 25082: 25082: Monotonicity(bool is_monotonic_ = false, bool is_positive_ = true, bool is_always_monotonic_ = false) 25082: : is_monotonic(is_monotonic_), is_positive(is_positive_), is_always_monotonic(is_always_monotonic_) {} 25082: }; 25082: 25082: 25082: 25082: 25082: virtual Monotonicity getMonotonicityForRange(const IDataType & , const Field & , const Field & ) const 25082: { 25082: throw Exception("Function " + getName() + " has no information about its monotonicity.", ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: }; 25082: 25082: using FunctionBasePtr = std::shared_ptr; 25082: 25082: 25082: class IFunctionBuilder 25082: { 25082: public: 25082: virtual ~IFunctionBuilder() = default; 25082: 25082: 25082: virtual String getName() const = 0; 25082: 25082: 25082: virtual bool isVariadic() const { return false; } 25082: 25082: 25082: virtual size_t getNumberOfArguments() const = 0; 25082: 25082: 25082: virtual void checkNumberOfArguments(size_t number_of_arguments) const = 0; 25082: 25082: 25082: virtual FunctionBasePtr build(const ColumnsWithTypeAndName & arguments) const = 0; 25082: 25082: 25082: 25082: 25082: virtual void getLambdaArgumentTypes(DataTypes & arguments) const = 0; 25082: }; 25082: 25082: using FunctionBuilderPtr = std::shared_ptr; 25082: 25082: class FunctionBuilderImpl : public IFunctionBuilder 25082: { 25082: public: 25082: FunctionBasePtr build(const ColumnsWithTypeAndName & arguments) const final 25082: { 25082: return buildImpl(arguments, getReturnType(arguments)); 25082: } 25082: 25082: 25082: void checkNumberOfArguments(size_t number_of_arguments) const override; 25082: 25082: DataTypePtr getReturnType(const ColumnsWithTypeAndName & arguments) const; 25082: 25082: void getLambdaArgumentTypes(DataTypes & arguments) const override 25082: { 25082: checkNumberOfArguments(arguments.size()); 25082: getLambdaArgumentTypesImpl(arguments); 25082: } 25082: 25082: protected: 25082: 25082: virtual DataTypePtr getReturnTypeImpl(const ColumnsWithTypeAndName & arguments) const 25082: { 25082: DataTypes data_types(arguments.size()); 25082: for (size_t i = 0; i < arguments.size(); ++i) 25082: data_types[i] = arguments[i].type; 25082: 25082: return getReturnTypeImpl(data_types); 25082: } 25082: 25082: virtual DataTypePtr getReturnTypeImpl(const DataTypes & ) const 25082: { 25082: throw Exception("getReturnType is not implemented for " + getName(), ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: # 296 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 3 4 25082: virtual bool useDefaultImplementationForNulls() const { return true; } 25082: 25082: 25082: 25082: 25082: 25082: virtual bool useDefaultImplementationForLowCardinalityColumns() const { return true; } 25082: 25082: 25082: virtual bool canBeExecutedOnLowCardinalityDictionary() const { return true; } 25082: 25082: virtual FunctionBasePtr buildImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & return_type) const = 0; 25082: 25082: virtual void getLambdaArgumentTypesImpl(DataTypes & ) const 25082: { 25082: throw Exception("Function " + getName() + " can't have lambda-expressions as arguments", ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT); 25082: } 25082: 25082: private: 25082: 25082: DataTypePtr getReturnTypeWithoutLowCardinality(const ColumnsWithTypeAndName & arguments) const; 25082: }; 25082: 25082: 25082: class IFunction : public std::enable_shared_from_this, 25082: public FunctionBuilderImpl, public IFunctionBase, public PreparedFunctionImpl 25082: { 25082: public: 25082: String getName() const override = 0; 25082: 25082: void executeImpl(Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count) override = 0; 25082: 25082: 25082: bool useDefaultImplementationForNulls() const override { return true; } 25082: bool useDefaultImplementationForConstants() const override { return false; } 25082: bool useDefaultImplementationForLowCardinalityColumns() const override { return true; } 25082: ColumnNumbers getArgumentsThatAreAlwaysConstant() const override { return {}; } 25082: bool canBeExecutedOnDefaultArguments() const override { return true; } 25082: bool canBeExecutedOnLowCardinalityDictionary() const override { return isDeterministicInScopeOfQuery(); } 25082: 25082: using PreparedFunctionImpl::execute; 25082: using PreparedFunctionImpl::executeImplDryRun; 25082: using FunctionBuilderImpl::getReturnTypeImpl; 25082: using FunctionBuilderImpl::getLambdaArgumentTypesImpl; 25082: using FunctionBuilderImpl::getReturnType; 25082: 25082: PreparedFunctionPtr prepare(const Block & , const ColumnNumbers & , size_t ) const final 25082: { 25082: throw Exception("prepare is not implemented for IFunction", ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: # 361 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 3 4 25082: const DataTypes & getArgumentTypes() const final 25082: { 25082: throw Exception("getArgumentTypes is not implemented for IFunction", ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: 25082: const DataTypePtr & getReturnType() const final 25082: { 25082: throw Exception("getReturnType is not implemented for IFunction", ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: # 379 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 3 4 25082: protected: 25082: # 392 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 3 4 25082: FunctionBasePtr buildImpl(const ColumnsWithTypeAndName & , const DataTypePtr & ) const final 25082: { 25082: throw Exception("buildImpl is not implemented for IFunction", ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: }; 25082: 25082: 25082: 25082: class DefaultExecutable final : public PreparedFunctionImpl 25082: { 25082: public: 25082: explicit DefaultExecutable(std::shared_ptr function) : function(std::move(function)) {} 25082: 25082: String getName() const override { return function->getName(); } 25082: 25082: protected: 25082: void executeImpl(Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count) final 25082: { 25082: return function->executeImpl(block, arguments, result, input_rows_count); 25082: } 25082: void executeImplDryRun(Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count) final 25082: { 25082: return function->executeImplDryRun(block, arguments, result, input_rows_count); 25082: } 25082: bool useDefaultImplementationForNulls() const final { return function->useDefaultImplementationForNulls(); } 25082: bool useDefaultImplementationForConstants() const final { return function->useDefaultImplementationForConstants(); } 25082: bool useDefaultImplementationForLowCardinalityColumns() const final { return function->useDefaultImplementationForLowCardinalityColumns(); } 25082: ColumnNumbers getArgumentsThatAreAlwaysConstant() const final { return function->getArgumentsThatAreAlwaysConstant(); } 25082: bool canBeExecutedOnDefaultArguments() const override { return function->canBeExecutedOnDefaultArguments(); } 25082: 25082: private: 25082: std::shared_ptr function; 25082: }; 25082: 25082: class DefaultFunction final : public IFunctionBase 25082: { 25082: public: 25082: DefaultFunction(std::shared_ptr function, DataTypes arguments, DataTypePtr return_type) 25082: : function(std::move(function)), arguments(std::move(arguments)), return_type(std::move(return_type)) {} 25082: 25082: String getName() const override { return function->getName(); } 25082: 25082: const DataTypes & getArgumentTypes() const override { return arguments; } 25082: const DataTypePtr & getReturnType() const override { return return_type; } 25082: # 445 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/IFunction.h" 3 4 25082: PreparedFunctionPtr prepare(const Block & , const ColumnNumbers & , size_t ) const override 25082: { 25082: return std::make_shared(function); 25082: } 25082: 25082: bool isSuitableForConstantFolding() const override { return function->isSuitableForConstantFolding(); } 25082: 25082: bool isInjective(const Block & sample_block) override { return function->isInjective(sample_block); } 25082: 25082: bool isDeterministic() const override { return function->isDeterministic(); } 25082: 25082: bool isDeterministicInScopeOfQuery() const override { return function->isDeterministicInScopeOfQuery(); } 25082: 25082: bool hasInformationAboutMonotonicity() const override { return function->hasInformationAboutMonotonicity(); } 25082: 25082: IFunctionBase::Monotonicity getMonotonicityForRange(const IDataType & type, const Field & left, const Field & right) const override 25082: { 25082: return function->getMonotonicityForRange(type, left, right); 25082: } 25082: private: 25082: std::shared_ptr function; 25082: DataTypes arguments; 25082: DataTypePtr return_type; 25082: }; 25082: 25082: class DefaultFunctionBuilder : public FunctionBuilderImpl 25082: { 25082: public: 25082: explicit DefaultFunctionBuilder(std::shared_ptr function) : function(std::move(function)) {} 25082: 25082: void checkNumberOfArguments(size_t number_of_arguments) const override 25082: { 25082: return function->checkNumberOfArguments(number_of_arguments); 25082: } 25082: 25082: String getName() const override { return function->getName(); } 25082: bool isVariadic() const override { return function->isVariadic(); } 25082: size_t getNumberOfArguments() const override { return function->getNumberOfArguments(); } 25082: 25082: protected: 25082: DataTypePtr getReturnTypeImpl(const DataTypes & arguments) const override { return function->getReturnTypeImpl(arguments); } 25082: DataTypePtr getReturnTypeImpl(const ColumnsWithTypeAndName & arguments) const override { return function->getReturnTypeImpl(arguments); } 25082: 25082: bool useDefaultImplementationForNulls() const override { return function->useDefaultImplementationForNulls(); } 25082: bool useDefaultImplementationForLowCardinalityColumns() const override { return function->useDefaultImplementationForLowCardinalityColumns(); } 25082: bool canBeExecutedOnLowCardinalityDictionary() const override { return function->canBeExecutedOnLowCardinalityDictionary(); } 25082: 25082: FunctionBasePtr buildImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & return_type) const override 25082: { 25082: DataTypes data_types(arguments.size()); 25082: for (size_t i = 0; i < arguments.size(); ++i) 25082: data_types[i] = arguments[i].type; 25082: return std::make_shared(function, data_types, return_type); 25082: } 25082: 25082: void getLambdaArgumentTypesImpl(DataTypes & arguments) const override { return function->getLambdaArgumentTypesImpl(arguments); } 25082: 25082: private: 25082: std::shared_ptr function; 25082: }; 25082: 25082: using FunctionPtr = std::shared_ptr; 25082: 25082: 25082: 25082: 25082: 25082: ColumnPtr wrapInNullable(const ColumnPtr & src, const Block & block, const ColumnNumbers & args, size_t result, size_t input_rows_count); 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionFactory.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/IFactoryWithAliases.h" 1 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/Poco/String.h" 1 3 4 25082: # 22 "/usr/include/Poco/String.h" 3 4 25082: # 1 "/usr/include/Poco/Ascii.h" 1 3 4 25082: # 24 "/usr/include/Poco/Ascii.h" 3 4 25082: namespace Poco { 25082: 25082: 25082: class __attribute__ ((visibility ("default"))) Ascii 25082: # 42 "/usr/include/Poco/Ascii.h" 3 4 25082: { 25082: public: 25082: enum CharacterProperties 25082: 25082: { 25082: ACP_CONTROL = 0x0001, 25082: ACP_SPACE = 0x0002, 25082: ACP_PUNCT = 0x0004, 25082: ACP_DIGIT = 0x0008, 25082: ACP_HEXDIGIT = 0x0010, 25082: ACP_ALPHA = 0x0020, 25082: ACP_LOWER = 0x0040, 25082: ACP_UPPER = 0x0080, 25082: ACP_GRAPH = 0x0100, 25082: ACP_PRINT = 0x0200 25082: }; 25082: 25082: static int properties(int ch); 25082: 25082: 25082: 25082: 25082: 25082: 25082: static bool hasSomeProperties(int ch, int properties); 25082: 25082: 25082: 25082: 25082: static bool hasProperties(int ch, int properties); 25082: 25082: 25082: 25082: 25082: static bool isAscii(int ch); 25082: 25082: 25082: 25082: static bool isSpace(int ch); 25082: 25082: 25082: static bool isDigit(int ch); 25082: 25082: 25082: static bool isHexDigit(int ch); 25082: 25082: 25082: static bool isPunct(int ch); 25082: 25082: 25082: static bool isAlpha(int ch); 25082: 25082: 25082: static bool isAlphaNumeric(int ch); 25082: 25082: 25082: static bool isLower(int ch); 25082: 25082: 25082: 25082: static bool isUpper(int ch); 25082: 25082: 25082: 25082: static int toLower(int ch); 25082: 25082: 25082: 25082: 25082: static int toUpper(int ch); 25082: 25082: 25082: 25082: 25082: private: 25082: static const int CHARACTER_PROPERTIES[128]; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: inline int Ascii::properties(int ch) 25082: { 25082: if (isAscii(ch)) 25082: return CHARACTER_PROPERTIES[ch]; 25082: else 25082: return 0; 25082: } 25082: 25082: 25082: inline bool Ascii::isAscii(int ch) 25082: { 25082: return (static_cast(ch) & 0xFFFFFF80) == 0; 25082: } 25082: 25082: 25082: inline bool Ascii::hasProperties(int ch, int props) 25082: { 25082: return (properties(ch) & props) == props; 25082: } 25082: 25082: 25082: inline bool Ascii::hasSomeProperties(int ch, int props) 25082: { 25082: return (properties(ch) & props) != 0; 25082: } 25082: 25082: 25082: inline bool Ascii::isSpace(int ch) 25082: { 25082: return hasProperties(ch, ACP_SPACE); 25082: } 25082: 25082: 25082: inline bool Ascii::isDigit(int ch) 25082: { 25082: return hasProperties(ch, ACP_DIGIT); 25082: } 25082: 25082: 25082: inline bool Ascii::isHexDigit(int ch) 25082: { 25082: return hasProperties(ch, ACP_HEXDIGIT); 25082: } 25082: 25082: 25082: inline bool Ascii::isPunct(int ch) 25082: { 25082: return hasProperties(ch, ACP_PUNCT); 25082: } 25082: 25082: 25082: inline bool Ascii::isAlpha(int ch) 25082: { 25082: return hasProperties(ch, ACP_ALPHA); 25082: } 25082: 25082: 25082: inline bool Ascii::isAlphaNumeric(int ch) 25082: { 25082: return hasSomeProperties(ch, ACP_ALPHA | ACP_DIGIT); 25082: } 25082: 25082: 25082: inline bool Ascii::isLower(int ch) 25082: { 25082: return hasProperties(ch, ACP_LOWER); 25082: } 25082: 25082: 25082: inline bool Ascii::isUpper(int ch) 25082: { 25082: return hasProperties(ch, ACP_UPPER); 25082: } 25082: 25082: 25082: inline int Ascii::toLower(int ch) 25082: { 25082: if (isUpper(ch)) 25082: return ch + 32; 25082: else 25082: return ch; 25082: } 25082: 25082: 25082: inline int Ascii::toUpper(int ch) 25082: { 25082: if (isLower(ch)) 25082: return ch - 32; 25082: else 25082: return ch; 25082: } 25082: 25082: 25082: } 25082: # 23 "/usr/include/Poco/String.h" 2 3 4 25082: # 1 "/usr/include/c++/8/cstring" 1 3 4 25082: # 39 "/usr/include/c++/8/cstring" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstring" 3 25082: # 71 "/usr/include/c++/8/cstring" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: using ::memchr; 25082: using ::memcmp; 25082: using ::memcpy; 25082: using ::memmove; 25082: using ::memset; 25082: using ::strcat; 25082: using ::strcmp; 25082: using ::strcoll; 25082: using ::strcpy; 25082: using ::strcspn; 25082: using ::strerror; 25082: using ::strlen; 25082: using ::strncat; 25082: using ::strncmp; 25082: using ::strncpy; 25082: using ::strspn; 25082: using ::strtok; 25082: using ::strxfrm; 25082: using ::strchr; 25082: using ::strpbrk; 25082: using ::strrchr; 25082: using ::strstr; 25082: # 120 "/usr/include/c++/8/cstring" 3 25082: 25082: } 25082: # 24 "/usr/include/Poco/String.h" 2 3 4 25082: 25082: 25082: 25082: namespace Poco { 25082: 25082: 25082: template 25082: S trimLeft(const S& str) 25082: 25082: 25082: { 25082: typename S::const_iterator it = str.begin(); 25082: typename S::const_iterator end = str.end(); 25082: 25082: while (it != end && Ascii::isSpace(*it)) ++it; 25082: return S(it, end); 25082: } 25082: 25082: 25082: template 25082: S& trimLeftInPlace(S& str) 25082: 25082: { 25082: typename S::iterator it = str.begin(); 25082: typename S::iterator end = str.end(); 25082: 25082: while (it != end && Ascii::isSpace(*it)) ++it; 25082: str.erase(str.begin(), it); 25082: return str; 25082: } 25082: 25082: 25082: template 25082: S trimRight(const S& str) 25082: 25082: 25082: { 25082: int pos = int(str.size()) - 1; 25082: 25082: while (pos >= 0 && Ascii::isSpace(str[pos])) --pos; 25082: return S(str, 0, pos + 1); 25082: } 25082: 25082: 25082: template 25082: S& trimRightInPlace(S& str) 25082: 25082: { 25082: int pos = int(str.size()) - 1; 25082: 25082: while (pos >= 0 && Ascii::isSpace(str[pos])) --pos; 25082: str.resize(pos + 1); 25082: 25082: return str; 25082: } 25082: 25082: 25082: template 25082: S trim(const S& str) 25082: 25082: 25082: { 25082: int first = 0; 25082: int last = int(str.size()) - 1; 25082: 25082: while (first <= last && Ascii::isSpace(str[first])) ++first; 25082: while (last >= first && Ascii::isSpace(str[last])) --last; 25082: 25082: return S(str, first, last - first + 1); 25082: } 25082: 25082: 25082: template 25082: S& trimInPlace(S& str) 25082: 25082: { 25082: int first = 0; 25082: int last = int(str.size()) - 1; 25082: 25082: while (first <= last && Ascii::isSpace(str[first])) ++first; 25082: while (last >= first && Ascii::isSpace(str[last])) --last; 25082: 25082: str.resize(last + 1); 25082: str.erase(0, first); 25082: 25082: return str; 25082: } 25082: 25082: 25082: template 25082: S toUpper(const S& str) 25082: 25082: { 25082: typename S::const_iterator it = str.begin(); 25082: typename S::const_iterator end = str.end(); 25082: 25082: S result; 25082: result.reserve(str.size()); 25082: while (it != end) result += static_cast(Ascii::toUpper(*it++)); 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S& toUpperInPlace(S& str) 25082: 25082: { 25082: typename S::iterator it = str.begin(); 25082: typename S::iterator end = str.end(); 25082: 25082: while (it != end) { *it = static_cast(Ascii::toUpper(*it)); ++it; } 25082: return str; 25082: } 25082: 25082: 25082: template 25082: S toLower(const S& str) 25082: 25082: { 25082: typename S::const_iterator it = str.begin(); 25082: typename S::const_iterator end = str.end(); 25082: 25082: S result; 25082: result.reserve(str.size()); 25082: while (it != end) result += static_cast(Ascii::toLower(*it++)); 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S& toLowerInPlace(S& str) 25082: 25082: { 25082: typename S::iterator it = str.begin(); 25082: typename S::iterator end = str.end(); 25082: 25082: while (it != end) { *it = static_cast(Ascii::toLower(*it)); ++it; } 25082: return str; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: int icompare( 25082: const S& str, 25082: typename S::size_type pos, 25082: typename S::size_type n, 25082: It it2, 25082: It end2) 25082: 25082: { 25082: typename S::size_type sz = str.size(); 25082: if (pos > sz) pos = sz; 25082: if (pos + n > sz) n = sz - pos; 25082: It it1 = str.begin() + pos; 25082: It end1 = str.begin() + pos + n; 25082: while (it1 != end1 && it2 != end2) 25082: { 25082: typename S::value_type c1(static_cast(Ascii::toLower(*it1))); 25082: typename S::value_type c2(static_cast(Ascii::toLower(*it2))); 25082: if (c1 < c2) 25082: return -1; 25082: else if (c1 > c2) 25082: return 1; 25082: ++it1; ++it2; 25082: } 25082: 25082: if (it1 == end1) 25082: return it2 == end2 ? 0 : -1; 25082: else 25082: return 1; 25082: } 25082: 25082: 25082: template 25082: int icompare(const S& str1, const S& str2) 25082: 25082: { 25082: typename S::const_iterator it1(str1.begin()); 25082: typename S::const_iterator end1(str1.end()); 25082: typename S::const_iterator it2(str2.begin()); 25082: typename S::const_iterator end2(str2.end()); 25082: while (it1 != end1 && it2 != end2) 25082: { 25082: typename S::value_type c1(static_cast(Ascii::toLower(*it1))); 25082: typename S::value_type c2(static_cast(Ascii::toLower(*it2))); 25082: if (c1 < c2) 25082: return -1; 25082: else if (c1 > c2) 25082: return 1; 25082: ++it1; ++it2; 25082: } 25082: 25082: if (it1 == end1) 25082: return it2 == end2 ? 0 : -1; 25082: else 25082: return 1; 25082: } 25082: 25082: 25082: template 25082: int icompare(const S& str1, typename S::size_type n1, const S& str2, typename S::size_type n2) 25082: { 25082: if (n2 > str2.size()) n2 = str2.size(); 25082: return icompare(str1, 0, n1, str2.begin(), str2.begin() + n2); 25082: } 25082: 25082: 25082: template 25082: int icompare(const S& str1, typename S::size_type n, const S& str2) 25082: { 25082: if (n > str2.size()) n = str2.size(); 25082: return icompare(str1, 0, n, str2.begin(), str2.begin() + n); 25082: } 25082: 25082: 25082: template 25082: int icompare(const S& str1, typename S::size_type pos, typename S::size_type n, const S& str2) 25082: { 25082: return icompare(str1, pos, n, str2.begin(), str2.end()); 25082: } 25082: 25082: 25082: template 25082: int icompare( 25082: const S& str1, 25082: typename S::size_type pos1, 25082: typename S::size_type n1, 25082: const S& str2, 25082: typename S::size_type pos2, 25082: typename S::size_type n2) 25082: { 25082: typename S::size_type sz2 = str2.size(); 25082: if (pos2 > sz2) pos2 = sz2; 25082: if (pos2 + n2 > sz2) n2 = sz2 - pos2; 25082: return icompare(str1, pos1, n1, str2.begin() + pos2, str2.begin() + pos2 + n2); 25082: } 25082: 25082: 25082: template 25082: int icompare( 25082: const S& str1, 25082: typename S::size_type pos1, 25082: typename S::size_type n, 25082: const S& str2, 25082: typename S::size_type pos2) 25082: { 25082: typename S::size_type sz2 = str2.size(); 25082: if (pos2 > sz2) pos2 = sz2; 25082: if (pos2 + n > sz2) n = sz2 - pos2; 25082: return icompare(str1, pos1, n, str2.begin() + pos2, str2.begin() + pos2 + n); 25082: } 25082: 25082: 25082: template 25082: int icompare( 25082: const S& str, 25082: typename S::size_type pos, 25082: typename S::size_type n, 25082: const typename S::value_type* ptr) 25082: { 25082: if (!(ptr)) Poco::Bugcheck::nullPointer("ptr", "/usr/include/Poco/String.h", 287); else (void) 0; 25082: typename S::size_type sz = str.size(); 25082: if (pos > sz) pos = sz; 25082: if (pos + n > sz) n = sz - pos; 25082: typename S::const_iterator it = str.begin() + pos; 25082: typename S::const_iterator end = str.begin() + pos + n; 25082: while (it != end && *ptr) 25082: { 25082: typename S::value_type c1(static_cast(Ascii::toLower(*it))); 25082: typename S::value_type c2(static_cast(Ascii::toLower(*ptr))); 25082: if (c1 < c2) 25082: return -1; 25082: else if (c1 > c2) 25082: return 1; 25082: ++it; ++ptr; 25082: } 25082: 25082: if (it == end) 25082: return *ptr == 0 ? 0 : -1; 25082: else 25082: return 1; 25082: } 25082: 25082: 25082: template 25082: int icompare( 25082: const S& str, 25082: typename S::size_type pos, 25082: const typename S::value_type* ptr) 25082: { 25082: return icompare(str, pos, str.size() - pos, ptr); 25082: } 25082: 25082: 25082: template 25082: int icompare( 25082: const S& str, 25082: const typename S::value_type* ptr) 25082: { 25082: return icompare(str, 0, str.size(), ptr); 25082: } 25082: # 348 "/usr/include/Poco/String.h" 3 4 25082: template 25082: S translate(const S& str, const S& from, const S& to) 25082: 25082: 25082: 25082: 25082: 25082: { 25082: S result; 25082: result.reserve(str.size()); 25082: typename S::const_iterator it = str.begin(); 25082: typename S::const_iterator end = str.end(); 25082: typename S::size_type toSize = to.size(); 25082: while (it != end) 25082: { 25082: typename S::size_type pos = from.find(*it); 25082: if (pos == S::npos) 25082: { 25082: result += *it; 25082: } 25082: else 25082: { 25082: if (pos < toSize) result += to[pos]; 25082: } 25082: ++it; 25082: } 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S translate(const S& str, const typename S::value_type* from, const typename S::value_type* to) 25082: { 25082: if (!(from)) Poco::Bugcheck::nullPointer("from", "/usr/include/Poco/String.h", 381); else (void) 0; 25082: if (!(to)) Poco::Bugcheck::nullPointer("to", "/usr/include/Poco/String.h", 382); else (void) 0; 25082: return translate(str, S(from), S(to)); 25082: } 25082: 25082: 25082: template 25082: S& translateInPlace(S& str, const S& from, const S& to) 25082: 25082: 25082: 25082: 25082: { 25082: str = translate(str, from, to); 25082: return str; 25082: } 25082: 25082: 25082: template 25082: S translateInPlace(S& str, const typename S::value_type* from, const typename S::value_type* to) 25082: { 25082: if (!(from)) Poco::Bugcheck::nullPointer("from", "/usr/include/Poco/String.h", 402); else (void) 0; 25082: if (!(to)) Poco::Bugcheck::nullPointer("to", "/usr/include/Poco/String.h", 403); else (void) 0; 25082: str = translate(str, S(from), S(to)); 25082: 25082: 25082: 25082: 25082: 25082: return str; 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: S& replaceInPlace(S& str, const S& from, const S& to, typename S::size_type start = 0) 25082: { 25082: if (!(from.size() > 0)) Poco::Bugcheck::assertion("from.size() > 0", "/usr/include/Poco/String.h", 421); else (void) 0; 25082: 25082: S result; 25082: typename S::size_type pos = 0; 25082: result.append(str, 0, start); 25082: do 25082: { 25082: pos = str.find(from, start); 25082: if (pos != S::npos) 25082: { 25082: result.append(str, start, pos - start); 25082: result.append(to); 25082: start = pos + from.length(); 25082: } 25082: else result.append(str, start, str.size() - start); 25082: } 25082: while (pos != S::npos); 25082: str.swap(result); 25082: return str; 25082: } 25082: 25082: 25082: template 25082: S& replaceInPlace(S& str, const typename S::value_type* from, const typename S::value_type* to, typename S::size_type start = 0) 25082: { 25082: if (!(*from)) Poco::Bugcheck::assertion("*from", "/usr/include/Poco/String.h", 446); else (void) 0; 25082: 25082: S result; 25082: typename S::size_type pos = 0; 25082: typename S::size_type fromLen = std::strlen(from); 25082: result.append(str, 0, start); 25082: do 25082: { 25082: pos = str.find(from, start); 25082: if (pos != S::npos) 25082: { 25082: result.append(str, start, pos - start); 25082: result.append(to); 25082: start = pos + fromLen; 25082: } 25082: else result.append(str, start, str.size() - start); 25082: } 25082: while (pos != S::npos); 25082: str.swap(result); 25082: return str; 25082: } 25082: 25082: 25082: template 25082: S& replaceInPlace(S& str, const typename S::value_type from, const typename S::value_type to = 0, typename S::size_type start = 0) 25082: { 25082: if (from == to) return str; 25082: 25082: typename S::size_type pos = 0; 25082: do 25082: { 25082: pos = str.find(from, start); 25082: if (pos != S::npos) 25082: { 25082: if (to) str[pos] = to; 25082: else str.erase(pos, 1); 25082: } 25082: } while (pos != S::npos); 25082: 25082: return str; 25082: } 25082: 25082: 25082: template 25082: S& removeInPlace(S& str, const typename S::value_type ch, typename S::size_type start = 0) 25082: { 25082: return replaceInPlace(str, ch, 0, start); 25082: } 25082: 25082: 25082: template 25082: S replace(const S& str, const S& from, const S& to, typename S::size_type start = 0) 25082: 25082: 25082: { 25082: S result(str); 25082: replaceInPlace(result, from, to, start); 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S replace(const S& str, const typename S::value_type* from, const typename S::value_type* to, typename S::size_type start = 0) 25082: { 25082: S result(str); 25082: replaceInPlace(result, from, to, start); 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S replace(const S& str, const typename S::value_type from, const typename S::value_type to = 0, typename S::size_type start = 0) 25082: { 25082: S result(str); 25082: replaceInPlace(result, from, to, start); 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S remove(const S& str, const typename S::value_type ch, typename S::size_type start = 0) 25082: { 25082: S result(str); 25082: replaceInPlace(result, ch, 0, start); 25082: return result; 25082: } 25082: # 550 "/usr/include/Poco/String.h" 3 4 25082: template 25082: S cat(const S& s1, const S& s2) 25082: 25082: { 25082: S result = s1; 25082: result.reserve(s1.size() + s2.size()); 25082: result.append(s2); 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S cat(const S& s1, const S& s2, const S& s3) 25082: 25082: { 25082: S result = s1; 25082: result.reserve(s1.size() + s2.size() + s3.size()); 25082: result.append(s2); 25082: result.append(s3); 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S cat(const S& s1, const S& s2, const S& s3, const S& s4) 25082: 25082: { 25082: S result = s1; 25082: result.reserve(s1.size() + s2.size() + s3.size() + s4.size()); 25082: result.append(s2); 25082: result.append(s3); 25082: result.append(s4); 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S cat(const S& s1, const S& s2, const S& s3, const S& s4, const S& s5) 25082: 25082: { 25082: S result = s1; 25082: result.reserve(s1.size() + s2.size() + s3.size() + s4.size() + s5.size()); 25082: result.append(s2); 25082: result.append(s3); 25082: result.append(s4); 25082: result.append(s5); 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S cat(const S& s1, const S& s2, const S& s3, const S& s4, const S& s5, const S& s6) 25082: 25082: { 25082: S result = s1; 25082: result.reserve(s1.size() + s2.size() + s3.size() + s4.size() + s5.size() + s6.size()); 25082: result.append(s2); 25082: result.append(s3); 25082: result.append(s4); 25082: result.append(s5); 25082: result.append(s6); 25082: return result; 25082: } 25082: 25082: 25082: template 25082: S cat(const S& delim, const It& begin, const It& end) 25082: 25082: 25082: { 25082: S result; 25082: for (It it = begin; it != end; ++it) 25082: { 25082: if (!result.empty()) result.append(delim); 25082: result += *it; 25082: } 25082: return result; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct i_char_traits : public std::char_traits 25082: { 25082: inline static bool eq(charT c1, charT c2) 25082: { 25082: return Ascii::toLower(c1) == Ascii::toLower(c2); 25082: } 25082: 25082: inline static bool ne(charT c1, charT c2) 25082: { 25082: return !eq(c1, c2); 25082: } 25082: 25082: inline static bool lt(charT c1, charT c2) 25082: { 25082: return Ascii::toLower(c1) < Ascii::toLower(c2); 25082: } 25082: 25082: static int compare(const charT* s1, const charT* s2, std::size_t n) 25082: { 25082: for (int i = 0; i < n && s1 && s2; ++i, ++s1, ++s2) 25082: { 25082: if (Ascii::toLower(*s1) == Ascii::toLower(*s2)) continue; 25082: else if (Ascii::toLower(*s1) < Ascii::toLower(*s2)) return -1; 25082: else return 1; 25082: } 25082: 25082: return 0; 25082: } 25082: 25082: static const charT* find(const charT* s, int n, charT a) 25082: { 25082: while(n-- > 0 && Ascii::toLower(*s) != Ascii::toLower(a)) { ++s; } 25082: return s; 25082: } 25082: }; 25082: 25082: 25082: typedef std::basic_string > istring; 25082: 25082: 25082: 25082: template 25082: std::size_t isubstr(const T& str, const T& sought) 25082: 25082: 25082: { 25082: typename T::const_iterator it = std::search(str.begin(), str.end(), 25082: sought.begin(), sought.end(), 25082: i_char_traits::eq); 25082: 25082: if (it != str.end()) return it - str.begin(); 25082: else return static_cast(T::npos); 25082: } 25082: 25082: 25082: struct CILess 25082: 25082: 25082: 25082: { 25082: inline bool operator() (const std::string& s1, const std::string& s2) const 25082: { 25082: return icompare(s1, s2) < 0; 25082: } 25082: }; 25082: 25082: 25082: } 25082: # 6 "/build/clickhouse-18.16.1+ds/dbms/src/Common/IFactoryWithAliases.h" 2 3 4 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int LOGICAL_ERROR; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class IFactoryWithAliases 25082: { 25082: protected: 25082: using Creator = CreatorFunc; 25082: 25082: String getAliasToOrName(const String & name) const 25082: { 25082: if (aliases.count(name)) 25082: return aliases.at(name); 25082: else if (String name_lowercase = Poco::toLower(name); case_insensitive_aliases.count(name_lowercase)) 25082: return case_insensitive_aliases.at(name_lowercase); 25082: else 25082: return name; 25082: } 25082: 25082: public: 25082: 25082: enum CaseSensitiveness 25082: { 25082: CaseSensitive, 25082: CaseInsensitive 25082: }; 25082: 25082: 25082: 25082: 25082: void registerAlias(const String & alias_name, const String & real_name, CaseSensitiveness case_sensitiveness = CaseSensitive) 25082: { 25082: const auto & creator_map = getCreatorMap(); 25082: const auto & case_insensitive_creator_map = getCaseInsensitiveCreatorMap(); 25082: const String factory_name = getFactoryName(); 25082: 25082: String real_dict_name; 25082: if (creator_map.count(real_name)) 25082: real_dict_name = real_name; 25082: else if (auto real_name_lowercase = Poco::toLower(real_name); case_insensitive_creator_map.count(real_name_lowercase)) 25082: real_dict_name = real_name_lowercase; 25082: else 25082: throw Exception(factory_name + ": can't create alias '" + alias_name + "', the real name '" + real_name + "' is not registered", 25082: ErrorCodes::LOGICAL_ERROR); 25082: 25082: String alias_name_lowercase = Poco::toLower(alias_name); 25082: 25082: if (creator_map.count(alias_name) || case_insensitive_creator_map.count(alias_name_lowercase)) 25082: throw Exception( 25082: factory_name + ": the alias name '" + alias_name + "' is already registered as real name", ErrorCodes::LOGICAL_ERROR); 25082: 25082: if (case_sensitiveness == CaseInsensitive) 25082: if (!case_insensitive_aliases.emplace(alias_name_lowercase, real_dict_name).second) 25082: throw Exception( 25082: factory_name + ": case insensitive alias name '" + alias_name + "' is not unique", ErrorCodes::LOGICAL_ERROR); 25082: 25082: if (!aliases.emplace(alias_name, real_dict_name).second) 25082: throw Exception(factory_name + ": alias name '" + alias_name + "' is not unique", ErrorCodes::LOGICAL_ERROR); 25082: } 25082: 25082: std::vector getAllRegisteredNames() const 25082: { 25082: std::vector result; 25082: auto getter = [](const auto & pair) { return pair.first; }; 25082: std::transform(getCreatorMap().begin(), getCreatorMap().end(), std::back_inserter(result), getter); 25082: std::transform(aliases.begin(), aliases.end(), std::back_inserter(result), getter); 25082: return result; 25082: } 25082: 25082: bool isCaseInsensitive(const String & name) const 25082: { 25082: String name_lowercase = Poco::toLower(name); 25082: return getCaseInsensitiveCreatorMap().count(name_lowercase) || case_insensitive_aliases.count(name_lowercase); 25082: } 25082: 25082: const String & aliasTo(const String & name) const 25082: { 25082: if (auto it = aliases.find(name); it != aliases.end()) 25082: return it->second; 25082: else if (auto jt = case_insensitive_aliases.find(Poco::toLower(name)); jt != case_insensitive_aliases.end()) 25082: return jt->second; 25082: 25082: throw Exception(getFactoryName() + ": name '" + name + "' is not alias", ErrorCodes::LOGICAL_ERROR); 25082: } 25082: 25082: bool isAlias(const String & name) const 25082: { 25082: return aliases.count(name) || case_insensitive_aliases.count(name); 25082: } 25082: 25082: virtual ~IFactoryWithAliases() {} 25082: 25082: private: 25082: using InnerMap = std::unordered_map; 25082: using AliasMap = std::unordered_map; 25082: 25082: virtual const InnerMap & getCreatorMap() const = 0; 25082: virtual const InnerMap & getCaseInsensitiveCreatorMap() const = 0; 25082: virtual String getFactoryName() const = 0; 25082: 25082: 25082: AliasMap aliases; 25082: 25082: 25082: AliasMap case_insensitive_aliases; 25082: }; 25082: 25082: } 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionFactory.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/ext/singleton.h" 1 3 4 25082: 25082: 25082: 25082: namespace ext 25082: { 25082: # 26 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/ext/singleton.h" 3 4 25082: template class singleton 25082: { 25082: public: 25082: static T & instance() 25082: { 25082: 25082: static T instance; 25082: return instance; 25082: } 25082: 25082: protected: 25082: singleton() {} 25082: 25082: private: 25082: singleton(const singleton &); 25082: singleton & operator=(const singleton &); 25082: }; 25082: 25082: } 25082: # 7 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionFactory.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: class Context; 25082: 25082: 25082: 25082: 25082: 25082: 25082: class FunctionFactory : public ext::singleton, public IFactoryWithAliases> 25082: { 25082: public: 25082: 25082: template 25082: void registerFunction(CaseSensitiveness case_sensitiveness = CaseSensitive) 25082: { 25082: registerFunction(Function::name, case_sensitiveness); 25082: } 25082: 25082: template 25082: void registerFunction(const std::string & name, CaseSensitiveness case_sensitiveness = CaseSensitive) 25082: { 25082: if constexpr (std::is_base_of::value) 25082: registerFunction(name, &createDefaultFunction, case_sensitiveness); 25082: else 25082: registerFunction(name, &Function::create, case_sensitiveness); 25082: } 25082: 25082: 25082: FunctionBuilderPtr get(const std::string & name, const Context & context) const; 25082: 25082: 25082: FunctionBuilderPtr tryGet(const std::string & name, const Context & context) const; 25082: 25082: private: 25082: using Functions = std::unordered_map; 25082: 25082: Functions functions; 25082: Functions case_insensitive_functions; 25082: 25082: template 25082: static FunctionBuilderPtr createDefaultFunction(const Context & context) 25082: { 25082: return std::make_shared(Function::create(context)); 25082: } 25082: 25082: const Functions & getCreatorMap() const override { return functions; } 25082: 25082: const Functions & getCaseInsensitiveCreatorMap() const override { return case_insensitive_functions; } 25082: 25082: String getFactoryName() const override { return "FunctionFactory"; } 25082: 25082: 25082: 25082: void registerFunction( 25082: const std::string & name, 25082: Creator creator, 25082: CaseSensitiveness case_sensitiveness = CaseSensitive); 25082: }; 25082: 25082: } 25082: # 2 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/bitRotateLeft.cpp" 2 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 1 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypesNumber.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypeNumberBase.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypeWithSimpleSerialization.h" 1 3 4 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: class DataTypeWithSimpleSerialization : public IDataType 25082: { 25082: protected: 25082: DataTypeWithSimpleSerialization() 25082: {} 25082: 25082: void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const override 25082: { 25082: serializeText(column, row_num, ostr, settings); 25082: } 25082: 25082: void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const override 25082: { 25082: serializeText(column, row_num, ostr, settings); 25082: } 25082: 25082: void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const override 25082: { 25082: serializeText(column, row_num, ostr, settings); 25082: } 25082: 25082: void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const override 25082: { 25082: serializeText(column, row_num, ostr, settings); 25082: } 25082: 25082: void deserializeTextEscaped(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const override 25082: { 25082: deserializeText(column, istr, settings); 25082: } 25082: 25082: void deserializeTextQuoted(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const override 25082: { 25082: deserializeText(column, istr, settings); 25082: } 25082: 25082: void deserializeTextJSON(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const override 25082: { 25082: deserializeText(column, istr, settings); 25082: } 25082: 25082: void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const override 25082: { 25082: deserializeText(column, istr, settings); 25082: } 25082: 25082: virtual void deserializeText(IColumn & column, ReadBuffer & istr, const FormatSettings &) const = 0; 25082: }; 25082: 25082: } 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypeNumberBase.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: template 25082: class DataTypeNumberBase : public DataTypeWithSimpleSerialization 25082: { 25082: static_assert(IsNumber); 25082: 25082: public: 25082: static constexpr bool is_parametric = false; 25082: using FieldType = T; 25082: 25082: const char * getFamilyName() const override { return TypeName::get(); } 25082: TypeIndex getTypeId() const override { return TypeId::value; } 25082: 25082: void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeText(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const override; 25082: void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const override; 25082: void deserializeTextJSON(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const override; 25082: Field getDefault() const override; 25082: 25082: 25082: 25082: void serializeBinary(const Field & field, WriteBuffer & ostr) const override; 25082: void deserializeBinary(Field & field, ReadBuffer & istr) const override; 25082: void serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; 25082: void deserializeBinary(IColumn & column, ReadBuffer & istr) const override; 25082: void serializeBinaryBulk(const IColumn & column, WriteBuffer & ostr, size_t offset, size_t limit) const override; 25082: void deserializeBinaryBulk(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const override; 25082: 25082: MutableColumnPtr createColumn() const override; 25082: 25082: bool isParametric() const override { return false; } 25082: bool haveSubtypes() const override { return false; } 25082: bool shouldAlignRightInPrettyFormats() const override { return true; } 25082: bool textCanContainOnlyValidUTF8() const override { return true; } 25082: bool isComparable() const override { return true; } 25082: bool isValueRepresentedByNumber() const override { return true; } 25082: bool isValueRepresentedByInteger() const override; 25082: bool isValueRepresentedByUnsignedInteger() const override; 25082: bool isValueUnambiguouslyRepresentedInContiguousMemoryRegion() const override { return true; } 25082: bool haveMaximumSizeOfValue() const override { return true; } 25082: size_t getSizeOfValueInMemory() const override { return sizeof(T); } 25082: bool isCategorial() const override { return isValueRepresentedByInteger(); } 25082: bool canBeInsideLowCardinality() const override { return true; } 25082: }; 25082: 25082: } 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypesNumber.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: template 25082: class DataTypeNumber final : public DataTypeNumberBase 25082: { 25082: bool equals(const IDataType & rhs) const override { return typeid(rhs) == typeid(*this); } 25082: 25082: bool canBeUsedAsVersion() const override { return true; } 25082: bool isSummable() const override { return true; } 25082: bool canBeUsedInBitOperations() const override { return true; } 25082: bool canBeUsedInBooleanContext() const override { return true; } 25082: bool canBeInsideNullable() const override { return true; } 25082: }; 25082: 25082: using DataTypeUInt8 = DataTypeNumber; 25082: using DataTypeUInt16 = DataTypeNumber; 25082: using DataTypeUInt32 = DataTypeNumber; 25082: using DataTypeUInt64 = DataTypeNumber; 25082: using DataTypeInt8 = DataTypeNumber; 25082: using DataTypeInt16 = DataTypeNumber; 25082: using DataTypeInt32 = DataTypeNumber; 25082: using DataTypeInt64 = DataTypeNumber; 25082: using DataTypeFloat32 = DataTypeNumber; 25082: using DataTypeFloat64 = DataTypeNumber; 25082: 25082: template constexpr bool IsDataTypeNumber = false; 25082: template <> constexpr bool IsDataTypeNumber> = true; 25082: template <> constexpr bool IsDataTypeNumber> = true; 25082: template <> constexpr bool IsDataTypeNumber> = true; 25082: template <> constexpr bool IsDataTypeNumber> = true; 25082: template <> constexpr bool IsDataTypeNumber> = true; 25082: template <> constexpr bool IsDataTypeNumber> = true; 25082: template <> constexpr bool IsDataTypeNumber> = true; 25082: template <> constexpr bool IsDataTypeNumber> = true; 25082: template <> constexpr bool IsDataTypeNumber> = true; 25082: template <> constexpr bool IsDataTypeNumber> = true; 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypesDecimal.h" 1 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/arithmeticOverflow.h" 1 3 4 25082: 25082: 25082: namespace common 25082: { 25082: template 25082: inline bool addOverflow(T x, T y, T & res) 25082: { 25082: return __builtin_add_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool addOverflow(int x, int y, int & res) 25082: { 25082: return __builtin_sadd_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool addOverflow(long x, long y, long & res) 25082: { 25082: return __builtin_saddl_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool addOverflow(long long x, long long y, long long & res) 25082: { 25082: return __builtin_saddll_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool addOverflow(__int128 x, __int128 y, __int128 & res) 25082: { 25082: static constexpr __int128 min_int128 = __int128(0x8000000000000000ll) << 64; 25082: static constexpr __int128 max_int128 = (__int128(0x7fffffffffffffffll) << 64) + 0xffffffffffffffffll; 25082: res = x + y; 25082: return (y > 0 && x > max_int128 - y) || (y < 0 && x < min_int128 - y); 25082: } 25082: 25082: template 25082: inline bool subOverflow(T x, T y, T & res) 25082: { 25082: return __builtin_sub_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool subOverflow(int x, int y, int & res) 25082: { 25082: return __builtin_ssub_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool subOverflow(long x, long y, long & res) 25082: { 25082: return __builtin_ssubl_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool subOverflow(long long x, long long y, long long & res) 25082: { 25082: return __builtin_ssubll_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool subOverflow(__int128 x, __int128 y, __int128 & res) 25082: { 25082: static constexpr __int128 min_int128 = __int128(0x8000000000000000ll) << 64; 25082: static constexpr __int128 max_int128 = (__int128(0x7fffffffffffffffll) << 64) + 0xffffffffffffffffll; 25082: res = x - y; 25082: return (y < 0 && x > max_int128 + y) || (y > 0 && x < min_int128 + y); 25082: } 25082: 25082: template 25082: inline bool mulOverflow(T x, T y, T & res) 25082: { 25082: return __builtin_mul_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool mulOverflow(int x, int y, int & res) 25082: { 25082: return __builtin_smul_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool mulOverflow(long x, long y, long & res) 25082: { 25082: return __builtin_smull_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool mulOverflow(long long x, long long y, long long & res) 25082: { 25082: return __builtin_smulll_overflow(x, y, &res); 25082: } 25082: 25082: template <> 25082: inline bool mulOverflow(__int128 x, __int128 y, __int128 & res) 25082: { 25082: res = x * y; 25082: if (!x || !y) 25082: return false; 25082: 25082: unsigned __int128 a = (x > 0) ? x : -x; 25082: unsigned __int128 b = (y > 0) ? y : -y; 25082: return (a * b) / b != a; 25082: } 25082: } 25082: # 3 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypesDecimal.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/typeid_cast.h" 1 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/typeindex" 1 3 4 25082: # 32 "/usr/include/c++/8/typeindex" 3 4 25082: 25082: # 33 "/usr/include/c++/8/typeindex" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 52 "/usr/include/c++/8/typeindex" 3 25082: struct type_index 25082: { 25082: type_index(const type_info& __rhs) noexcept 25082: : _M_target(&__rhs) { } 25082: 25082: bool 25082: operator==(const type_index& __rhs) const noexcept 25082: { return *_M_target == *__rhs._M_target; } 25082: 25082: bool 25082: operator!=(const type_index& __rhs) const noexcept 25082: { return *_M_target != *__rhs._M_target; } 25082: 25082: bool 25082: operator<(const type_index& __rhs) const noexcept 25082: { return _M_target->before(*__rhs._M_target); } 25082: 25082: bool 25082: operator<=(const type_index& __rhs) const noexcept 25082: { return !__rhs._M_target->before(*_M_target); } 25082: 25082: bool 25082: operator>(const type_index& __rhs) const noexcept 25082: { return __rhs._M_target->before(*_M_target); } 25082: 25082: bool 25082: operator>=(const type_index& __rhs) const noexcept 25082: { return !_M_target->before(*__rhs._M_target); } 25082: 25082: size_t 25082: hash_code() const noexcept 25082: { return _M_target->hash_code(); } 25082: 25082: const char* 25082: name() const noexcept 25082: { return _M_target->name(); } 25082: 25082: private: 25082: const type_info* _M_target; 25082: }; 25082: 25082: template struct hash; 25082: 25082: 25082: template<> 25082: struct hash 25082: { 25082: typedef size_t result_type; 25082: typedef type_index argument_type; 25082: 25082: size_t 25082: operator()(const type_index& __ti) const noexcept 25082: { return __ti.hash_code(); } 25082: }; 25082: 25082: 25082: } 25082: # 6 "/build/clickhouse-18.16.1+ds/dbms/src/Common/typeid_cast.h" 2 3 4 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/demangle.h" 1 3 4 25082: 25082: # 10 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/demangle.h" 3 4 25082: std::string demangle(const char * name, int & status); 25082: 25082: inline std::string demangle(const char * name) 25082: { 25082: int status = 0; 25082: return demangle(name, status); 25082: } 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Common/typeid_cast.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: namespace ErrorCodes 25082: { 25082: extern const int BAD_CAST; 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: std::enable_if_t, To> typeid_cast(From & from) 25082: { 25082: if (typeid(from) == typeid(To)) 25082: return static_cast(from); 25082: else 25082: throw DB::Exception("Bad cast from type " + demangle(typeid(from).name()) + " to " + demangle(typeid(To).name()), 25082: DB::ErrorCodes::BAD_CAST); 25082: } 25082: 25082: template 25082: To typeid_cast(From * from) 25082: { 25082: if (typeid(*from) == typeid(std::remove_pointer_t)) 25082: return static_cast(from); 25082: else 25082: return nullptr; 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypesDecimal.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/ColumnDecimal.h" 1 3 4 25082: 25082: 25082: # 1 "/usr/include/c++/8/cmath" 1 3 4 25082: # 39 "/usr/include/c++/8/cmath" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cmath" 3 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/math.h" 1 3 4 25082: # 27 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 25082: # 28 "/usr/include/math.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern "C" { 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 1 3 4 25082: # 27 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/libm-simd-decl-stubs.h" 1 3 4 25082: # 27 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 2 3 4 25082: # 41 "/usr/include/math.h" 2 3 4 25082: # 138 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/flt-eval-method.h" 1 3 4 25082: # 139 "/usr/include/math.h" 2 3 4 25082: # 149 "/usr/include/math.h" 3 4 25082: typedef float float_t; 25082: typedef double double_t; 25082: # 190 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/fp-logb.h" 1 3 4 25082: # 191 "/usr/include/math.h" 2 3 4 25082: # 233 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/fp-fast.h" 1 3 4 25082: # 234 "/usr/include/math.h" 2 3 4 25082: 25082: 25082: 25082: enum 25082: { 25082: FP_INT_UPWARD = 25082: 25082: 0, 25082: FP_INT_DOWNWARD = 25082: 25082: 1, 25082: FP_INT_TOWARDZERO = 25082: 25082: 2, 25082: FP_INT_TONEARESTFROMZERO = 25082: 25082: 3, 25082: FP_INT_TONEAREST = 25082: 25082: 4, 25082: }; 25082: # 289 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 25082: # 21 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 25082: extern int __fpclassify (double __value) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int __signbit (double __value) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern int __isinf (double __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int __finite (double __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int __isnan (double __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int __iseqsig (double __x, double __y) throw (); 25082: 25082: 25082: extern int __issignaling (double __value) throw () 25082: __attribute__ ((__const__)); 25082: # 290 "/usr/include/math.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 25082: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern double acos (double __x) throw (); extern double __acos (double __x) throw (); 25082: 25082: extern double asin (double __x) throw (); extern double __asin (double __x) throw (); 25082: 25082: extern double atan (double __x) throw (); extern double __atan (double __x) throw (); 25082: 25082: extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw (); 25082: 25082: 25082: extern double cos (double __x) throw (); extern double __cos (double __x) throw (); 25082: 25082: extern double sin (double __x) throw (); extern double __sin (double __x) throw (); 25082: 25082: extern double tan (double __x) throw (); extern double __tan (double __x) throw (); 25082: 25082: 25082: 25082: 25082: extern double cosh (double __x) throw (); extern double __cosh (double __x) throw (); 25082: 25082: extern double sinh (double __x) throw (); extern double __sinh (double __x) throw (); 25082: 25082: extern double tanh (double __x) throw (); extern double __tanh (double __x) throw (); 25082: 25082: 25082: 25082: extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern double acosh (double __x) throw (); extern double __acosh (double __x) throw (); 25082: 25082: extern double asinh (double __x) throw (); extern double __asinh (double __x) throw (); 25082: 25082: extern double atanh (double __x) throw (); extern double __atanh (double __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern double exp (double __x) throw (); extern double __exp (double __x) throw (); 25082: 25082: 25082: extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw (); 25082: 25082: 25082: extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw (); 25082: 25082: 25082: extern double log (double __x) throw (); extern double __log (double __x) throw (); 25082: 25082: 25082: extern double log10 (double __x) throw (); extern double __log10 (double __x) throw (); 25082: 25082: 25082: extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw (); 25082: 25082: 25082: 25082: 25082: extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw (); 25082: 25082: 25082: extern double log1p (double __x) throw (); extern double __log1p (double __x) throw (); 25082: 25082: 25082: extern double logb (double __x) throw (); extern double __logb (double __x) throw (); 25082: 25082: 25082: 25082: 25082: extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw (); 25082: 25082: 25082: extern double log2 (double __x) throw (); extern double __log2 (double __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw (); 25082: 25082: 25082: extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw (); 25082: 25082: 25082: 25082: extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw (); 25082: 25082: 25082: 25082: 25082: extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw (); 25082: # 182 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern int finite (double __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw (); 25082: 25082: 25082: 25082: extern double significand (double __x) throw (); extern double __significand (double __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern double nan (const char *__tagb) throw (); extern double __nan (const char *__tagb) throw (); 25082: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern double j0 (double) throw (); extern double __j0 (double) throw (); 25082: extern double j1 (double) throw (); extern double __j1 (double) throw (); 25082: extern double jn (int, double) throw (); extern double __jn (int, double) throw (); 25082: extern double y0 (double) throw (); extern double __y0 (double) throw (); 25082: extern double y1 (double) throw (); extern double __y1 (double) throw (); 25082: extern double yn (int, double) throw (); extern double __yn (int, double) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern double erf (double) throw (); extern double __erf (double) throw (); 25082: extern double erfc (double) throw (); extern double __erfc (double) throw (); 25082: extern double lgamma (double) throw (); extern double __lgamma (double) throw (); 25082: 25082: 25082: 25082: 25082: extern double tgamma (double) throw (); extern double __tgamma (double) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern double gamma (double) throw (); extern double __gamma (double) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern double rint (double __x) throw (); extern double __rint (double __x) throw (); 25082: 25082: 25082: extern double nextafter (double __x, double __y) throw (); extern double __nextafter (double __x, double __y) throw (); 25082: 25082: extern double nexttoward (double __x, long double __y) throw (); extern double __nexttoward (double __x, long double __y) throw (); 25082: 25082: 25082: 25082: 25082: extern double nextdown (double __x) throw (); extern double __nextdown (double __x) throw (); 25082: 25082: extern double nextup (double __x) throw (); extern double __nextup (double __x) throw (); 25082: 25082: 25082: 25082: extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw (); 25082: 25082: 25082: 25082: extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw (); 25082: 25082: 25082: 25082: extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long int llogb (double __x) throw (); extern long int __llogb (double __x) throw (); 25082: 25082: 25082: 25082: 25082: extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw (); 25082: 25082: 25082: 25082: extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw (); 25082: 25082: 25082: 25082: extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw (); 25082: __extension__ 25082: extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw (); 25082: 25082: 25082: 25082: extern long int lround (double __x) throw (); extern long int __lround (double __x) throw (); 25082: __extension__ 25082: extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw (); 25082: 25082: 25082: 25082: extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw (); 25082: 25082: 25082: extern double fmax (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmax (double __x, double __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern double fmin (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmin (double __x, double __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw (); 25082: 25082: 25082: 25082: 25082: extern double roundeven (double __x) throw () __attribute__ ((__const__)); extern double __roundeven (double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern __intmax_t fromfp (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: extern double fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern double fminmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalorder (double __x, double __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalordermag (double __x, double __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int canonicalize (double *__cx, const double *__x) throw (); 25082: 25082: 25082: extern double getpayload (const double *__x) throw (); extern double __getpayload (const double *__x) throw (); 25082: 25082: 25082: extern int setpayload (double *__x, double __payload) throw (); 25082: 25082: 25082: extern int setpayloadsig (double *__x, double __payload) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw (); 25082: # 291 "/usr/include/math.h" 2 3 4 25082: # 306 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 25082: # 21 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 25082: extern int __fpclassifyf (float __value) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int __signbitf (float __value) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern int __isinff (float __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int __finitef (float __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int __isnanf (float __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int __iseqsigf (float __x, float __y) throw (); 25082: 25082: 25082: extern int __issignalingf (float __value) throw () 25082: __attribute__ ((__const__)); 25082: # 307 "/usr/include/math.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 25082: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern float acosf (float __x) throw (); extern float __acosf (float __x) throw (); 25082: 25082: extern float asinf (float __x) throw (); extern float __asinf (float __x) throw (); 25082: 25082: extern float atanf (float __x) throw (); extern float __atanf (float __x) throw (); 25082: 25082: extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw (); 25082: 25082: 25082: extern float cosf (float __x) throw (); extern float __cosf (float __x) throw (); 25082: 25082: extern float sinf (float __x) throw (); extern float __sinf (float __x) throw (); 25082: 25082: extern float tanf (float __x) throw (); extern float __tanf (float __x) throw (); 25082: 25082: 25082: 25082: 25082: extern float coshf (float __x) throw (); extern float __coshf (float __x) throw (); 25082: 25082: extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw (); 25082: 25082: extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw (); 25082: 25082: 25082: 25082: extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw (); 25082: 25082: extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw (); 25082: 25082: extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern float expf (float __x) throw (); extern float __expf (float __x) throw (); 25082: 25082: 25082: extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw (); 25082: 25082: 25082: extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw (); 25082: 25082: 25082: extern float logf (float __x) throw (); extern float __logf (float __x) throw (); 25082: 25082: 25082: extern float log10f (float __x) throw (); extern float __log10f (float __x) throw (); 25082: 25082: 25082: extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw (); 25082: 25082: 25082: 25082: 25082: extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw (); 25082: 25082: 25082: extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw (); 25082: 25082: 25082: extern float logbf (float __x) throw (); extern float __logbf (float __x) throw (); 25082: 25082: 25082: 25082: 25082: extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw (); 25082: 25082: 25082: extern float log2f (float __x) throw (); extern float __log2f (float __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw (); 25082: 25082: 25082: extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw (); 25082: 25082: 25082: 25082: extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw (); 25082: 25082: 25082: 25082: 25082: extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw (); 25082: # 177 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern int isinff (float __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern int finitef (float __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw (); 25082: 25082: 25082: 25082: extern float significandf (float __x) throw (); extern float __significandf (float __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern float nanf (const char *__tagb) throw (); extern float __nanf (const char *__tagb) throw (); 25082: # 211 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern int isnanf (float __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: 25082: extern float j0f (float) throw (); extern float __j0f (float) throw (); 25082: extern float j1f (float) throw (); extern float __j1f (float) throw (); 25082: extern float jnf (int, float) throw (); extern float __jnf (int, float) throw (); 25082: extern float y0f (float) throw (); extern float __y0f (float) throw (); 25082: extern float y1f (float) throw (); extern float __y1f (float) throw (); 25082: extern float ynf (int, float) throw (); extern float __ynf (int, float) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern float erff (float) throw (); extern float __erff (float) throw (); 25082: extern float erfcf (float) throw (); extern float __erfcf (float) throw (); 25082: extern float lgammaf (float) throw (); extern float __lgammaf (float) throw (); 25082: 25082: 25082: 25082: 25082: extern float tgammaf (float) throw (); extern float __tgammaf (float) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern float gammaf (float) throw (); extern float __gammaf (float) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern float rintf (float __x) throw (); extern float __rintf (float __x) throw (); 25082: 25082: 25082: extern float nextafterf (float __x, float __y) throw (); extern float __nextafterf (float __x, float __y) throw (); 25082: 25082: extern float nexttowardf (float __x, long double __y) throw (); extern float __nexttowardf (float __x, long double __y) throw (); 25082: 25082: 25082: 25082: 25082: extern float nextdownf (float __x) throw (); extern float __nextdownf (float __x) throw (); 25082: 25082: extern float nextupf (float __x) throw (); extern float __nextupf (float __x) throw (); 25082: 25082: 25082: 25082: extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw (); 25082: 25082: 25082: 25082: extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw (); 25082: 25082: 25082: 25082: extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long int llogbf (float __x) throw (); extern long int __llogbf (float __x) throw (); 25082: 25082: 25082: 25082: 25082: extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw (); 25082: 25082: 25082: 25082: extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw (); 25082: 25082: 25082: 25082: extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw (); 25082: __extension__ 25082: extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw (); 25082: 25082: 25082: 25082: extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw (); 25082: __extension__ 25082: extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw (); 25082: 25082: 25082: 25082: extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw (); 25082: 25082: 25082: extern float fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern float fminf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminf (float __x, float __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw (); 25082: 25082: 25082: 25082: 25082: extern float roundevenf (float __x) throw () __attribute__ ((__const__)); extern float __roundevenf (float __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: extern float fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern float fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalorderf (float __x, float __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalordermagf (float __x, float __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int canonicalizef (float *__cx, const float *__x) throw (); 25082: 25082: 25082: extern float getpayloadf (const float *__x) throw (); extern float __getpayloadf (const float *__x) throw (); 25082: 25082: 25082: extern int setpayloadf (float *__x, float __payload) throw (); 25082: 25082: 25082: extern int setpayloadsigf (float *__x, float __payload) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw (); 25082: # 308 "/usr/include/math.h" 2 3 4 25082: # 349 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 25082: # 21 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 25082: extern int __fpclassifyl (long double __value) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int __signbitl (long double __value) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern int __isinfl (long double __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int __finitel (long double __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int __isnanl (long double __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int __iseqsigl (long double __x, long double __y) throw (); 25082: 25082: 25082: extern int __issignalingl (long double __value) throw () 25082: __attribute__ ((__const__)); 25082: # 350 "/usr/include/math.h" 2 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 25082: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw (); 25082: 25082: extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw (); 25082: 25082: extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw (); 25082: 25082: extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw (); 25082: 25082: 25082: extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw (); 25082: 25082: extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw (); 25082: 25082: extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw (); 25082: 25082: extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw (); 25082: 25082: extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw (); 25082: 25082: 25082: 25082: 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 () 25082: ; 25082: 25082: 25082: 25082: 25082: extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw (); 25082: 25082: extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw (); 25082: 25082: extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw (); 25082: 25082: 25082: extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw (); 25082: 25082: 25082: extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw (); 25082: 25082: 25082: extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw (); 25082: 25082: 25082: extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw (); 25082: 25082: 25082: 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))); 25082: 25082: 25082: 25082: extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw (); 25082: 25082: 25082: extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw (); 25082: 25082: 25082: extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw (); 25082: 25082: 25082: extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw (); 25082: 25082: 25082: extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw (); 25082: 25082: 25082: 25082: extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw (); 25082: 25082: 25082: 25082: 25082: extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw (); 25082: # 177 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern int isinfl (long double __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern int finitel (long double __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw (); 25082: 25082: 25082: 25082: extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 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__)); 25082: 25082: 25082: 25082: 25082: extern long double nanl (const char *__tagb) throw (); extern long double __nanl (const char *__tagb) throw (); 25082: # 211 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern int isnanl (long double __value) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: 25082: extern long double j0l (long double) throw (); extern long double __j0l (long double) throw (); 25082: extern long double j1l (long double) throw (); extern long double __j1l (long double) throw (); 25082: extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw (); 25082: extern long double y0l (long double) throw (); extern long double __y0l (long double) throw (); 25082: extern long double y1l (long double) throw (); extern long double __y1l (long double) throw (); 25082: extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern long double erfl (long double) throw (); extern long double __erfl (long double) throw (); 25082: extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw (); 25082: extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw (); 25082: 25082: 25082: 25082: 25082: extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern long double gammal (long double) throw (); extern long double __gammal (long double) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw (); 25082: 25082: 25082: extern long double nextafterl (long double __x, long double __y) throw (); extern long double __nextafterl (long double __x, long double __y) throw (); 25082: 25082: extern long double nexttowardl (long double __x, long double __y) throw (); extern long double __nexttowardl (long double __x, long double __y) throw (); 25082: 25082: 25082: 25082: 25082: extern long double nextdownl (long double __x) throw (); extern long double __nextdownl (long double __x) throw (); 25082: 25082: extern long double nextupl (long double __x) throw (); extern long double __nextupl (long double __x) throw (); 25082: 25082: 25082: 25082: extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw (); 25082: 25082: 25082: 25082: extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw (); 25082: 25082: 25082: 25082: extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long int llogbl (long double __x) throw (); extern long int __llogbl (long double __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw (); 25082: 25082: 25082: 25082: extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw (); 25082: 25082: 25082: 25082: extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: 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 (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw (); 25082: __extension__ 25082: extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw (); 25082: 25082: 25082: 25082: extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw (); 25082: __extension__ 25082: extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw (); 25082: 25082: 25082: 25082: extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw (); 25082: 25082: 25082: 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__)); 25082: 25082: 25082: 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__)); 25082: 25082: 25082: 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 (); 25082: 25082: 25082: 25082: 25082: extern long double roundevenl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundevenl (long double __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 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 () 25082: ; 25082: 25082: 25082: 25082: 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 () 25082: ; 25082: 25082: 25082: 25082: 25082: 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 () 25082: ; 25082: 25082: 25082: 25082: 25082: 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 () 25082: ; 25082: 25082: 25082: 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__)); 25082: 25082: 25082: 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__)); 25082: 25082: 25082: extern int totalorderl (long double __x, long double __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalordermagl (long double __x, long double __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int canonicalizel (long double *__cx, const long double *__x) throw (); 25082: 25082: 25082: extern long double getpayloadl (const long double *__x) throw (); extern long double __getpayloadl (const long double *__x) throw (); 25082: 25082: 25082: extern int setpayloadl (long double *__x, long double __payload) throw (); 25082: 25082: 25082: extern int setpayloadsigl (long double *__x, long double __payload) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw (); 25082: # 351 "/usr/include/math.h" 2 3 4 25082: # 389 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 25082: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float32 acosf32 (_Float32 __x) throw (); extern _Float32 __acosf32 (_Float32 __x) throw (); 25082: 25082: extern _Float32 asinf32 (_Float32 __x) throw (); extern _Float32 __asinf32 (_Float32 __x) throw (); 25082: 25082: extern _Float32 atanf32 (_Float32 __x) throw (); extern _Float32 __atanf32 (_Float32 __x) throw (); 25082: 25082: extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) throw (); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) throw (); 25082: 25082: 25082: extern _Float32 cosf32 (_Float32 __x) throw (); extern _Float32 __cosf32 (_Float32 __x) throw (); 25082: 25082: extern _Float32 sinf32 (_Float32 __x) throw (); extern _Float32 __sinf32 (_Float32 __x) throw (); 25082: 25082: extern _Float32 tanf32 (_Float32 __x) throw (); extern _Float32 __tanf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32 coshf32 (_Float32 __x) throw (); extern _Float32 __coshf32 (_Float32 __x) throw (); 25082: 25082: extern _Float32 sinhf32 (_Float32 __x) throw (); extern _Float32 __sinhf32 (_Float32 __x) throw (); 25082: 25082: extern _Float32 tanhf32 (_Float32 __x) throw (); extern _Float32 __tanhf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw (); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern _Float32 acoshf32 (_Float32 __x) throw (); extern _Float32 __acoshf32 (_Float32 __x) throw (); 25082: 25082: extern _Float32 asinhf32 (_Float32 __x) throw (); extern _Float32 __asinhf32 (_Float32 __x) throw (); 25082: 25082: extern _Float32 atanhf32 (_Float32 __x) throw (); extern _Float32 __atanhf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32 expf32 (_Float32 __x) throw (); extern _Float32 __expf32 (_Float32 __x) throw (); 25082: 25082: 25082: extern _Float32 frexpf32 (_Float32 __x, int *__exponent) throw (); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) throw (); 25082: 25082: 25082: extern _Float32 ldexpf32 (_Float32 __x, int __exponent) throw (); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) throw (); 25082: 25082: 25082: extern _Float32 logf32 (_Float32 __x) throw (); extern _Float32 __logf32 (_Float32 __x) throw (); 25082: 25082: 25082: extern _Float32 log10f32 (_Float32 __x) throw (); extern _Float32 __log10f32 (_Float32 __x) throw (); 25082: 25082: 25082: extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) throw (); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: extern _Float32 exp10f32 (_Float32 __x) throw (); extern _Float32 __exp10f32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32 expm1f32 (_Float32 __x) throw (); extern _Float32 __expm1f32 (_Float32 __x) throw (); 25082: 25082: 25082: extern _Float32 log1pf32 (_Float32 __x) throw (); extern _Float32 __log1pf32 (_Float32 __x) throw (); 25082: 25082: 25082: extern _Float32 logbf32 (_Float32 __x) throw (); extern _Float32 __logbf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32 exp2f32 (_Float32 __x) throw (); extern _Float32 __exp2f32 (_Float32 __x) throw (); 25082: 25082: 25082: extern _Float32 log2f32 (_Float32 __x) throw (); extern _Float32 __log2f32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32 powf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) throw (); 25082: 25082: 25082: extern _Float32 sqrtf32 (_Float32 __x) throw (); extern _Float32 __sqrtf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32 cbrtf32 (_Float32 __x) throw (); extern _Float32 __cbrtf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32 ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32 fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32 floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) throw (); 25082: # 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern _Float32 nanf32 (const char *__tagb) throw (); extern _Float32 __nanf32 (const char *__tagb) throw (); 25082: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float32 j0f32 (_Float32) throw (); extern _Float32 __j0f32 (_Float32) throw (); 25082: extern _Float32 j1f32 (_Float32) throw (); extern _Float32 __j1f32 (_Float32) throw (); 25082: extern _Float32 jnf32 (int, _Float32) throw (); extern _Float32 __jnf32 (int, _Float32) throw (); 25082: extern _Float32 y0f32 (_Float32) throw (); extern _Float32 __y0f32 (_Float32) throw (); 25082: extern _Float32 y1f32 (_Float32) throw (); extern _Float32 __y1f32 (_Float32) throw (); 25082: extern _Float32 ynf32 (int, _Float32) throw (); extern _Float32 __ynf32 (int, _Float32) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32 erff32 (_Float32) throw (); extern _Float32 __erff32 (_Float32) throw (); 25082: extern _Float32 erfcf32 (_Float32) throw (); extern _Float32 __erfcf32 (_Float32) throw (); 25082: extern _Float32 lgammaf32 (_Float32) throw (); extern _Float32 __lgammaf32 (_Float32) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32 tgammaf32 (_Float32) throw (); extern _Float32 __tgammaf32 (_Float32) throw (); 25082: # 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float32 lgammaf32_r (_Float32, int *__signgamp) throw (); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32 rintf32 (_Float32 __x) throw (); extern _Float32 __rintf32 (_Float32 __x) throw (); 25082: 25082: 25082: extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32 nextdownf32 (_Float32 __x) throw (); extern _Float32 __nextdownf32 (_Float32 __x) throw (); 25082: 25082: extern _Float32 nextupf32 (_Float32 __x) throw (); extern _Float32 __nextupf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) throw (); 25082: 25082: 25082: 25082: extern _Float32 scalbnf32 (_Float32 __x, int __n) throw (); extern _Float32 __scalbnf32 (_Float32 __x, int __n) throw (); 25082: 25082: 25082: 25082: extern int ilogbf32 (_Float32 __x) throw (); extern int __ilogbf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long int llogbf32 (_Float32 __x) throw (); extern long int __llogbf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32 scalblnf32 (_Float32 __x, long int __n) throw (); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) throw (); 25082: 25082: 25082: 25082: extern _Float32 nearbyintf32 (_Float32 __x) throw (); extern _Float32 __nearbyintf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: extern _Float32 roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern _Float32 truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int lrintf32 (_Float32 __x) throw (); extern long int __lrintf32 (_Float32 __x) throw (); 25082: __extension__ 25082: extern long long int llrintf32 (_Float32 __x) throw (); extern long long int __llrintf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: extern long int lroundf32 (_Float32 __x) throw (); extern long int __lroundf32 (_Float32 __x) throw (); 25082: __extension__ 25082: extern long long int llroundf32 (_Float32 __x) throw (); extern long long int __llroundf32 (_Float32 __x) throw (); 25082: 25082: 25082: 25082: extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) throw (); 25082: 25082: 25082: extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32 fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32 roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalorderf32 (_Float32 __x, _Float32 __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalordermagf32 (_Float32 __x, _Float32 __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) throw (); 25082: 25082: 25082: extern _Float32 getpayloadf32 (const _Float32 *__x) throw (); extern _Float32 __getpayloadf32 (const _Float32 *__x) throw (); 25082: 25082: 25082: extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) throw (); 25082: 25082: 25082: extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) throw (); 25082: # 390 "/usr/include/math.h" 2 3 4 25082: # 406 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 25082: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float64 acosf64 (_Float64 __x) throw (); extern _Float64 __acosf64 (_Float64 __x) throw (); 25082: 25082: extern _Float64 asinf64 (_Float64 __x) throw (); extern _Float64 __asinf64 (_Float64 __x) throw (); 25082: 25082: extern _Float64 atanf64 (_Float64 __x) throw (); extern _Float64 __atanf64 (_Float64 __x) throw (); 25082: 25082: extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) throw (); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) throw (); 25082: 25082: 25082: extern _Float64 cosf64 (_Float64 __x) throw (); extern _Float64 __cosf64 (_Float64 __x) throw (); 25082: 25082: extern _Float64 sinf64 (_Float64 __x) throw (); extern _Float64 __sinf64 (_Float64 __x) throw (); 25082: 25082: extern _Float64 tanf64 (_Float64 __x) throw (); extern _Float64 __tanf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64 coshf64 (_Float64 __x) throw (); extern _Float64 __coshf64 (_Float64 __x) throw (); 25082: 25082: extern _Float64 sinhf64 (_Float64 __x) throw (); extern _Float64 __sinhf64 (_Float64 __x) throw (); 25082: 25082: extern _Float64 tanhf64 (_Float64 __x) throw (); extern _Float64 __tanhf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw (); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern _Float64 acoshf64 (_Float64 __x) throw (); extern _Float64 __acoshf64 (_Float64 __x) throw (); 25082: 25082: extern _Float64 asinhf64 (_Float64 __x) throw (); extern _Float64 __asinhf64 (_Float64 __x) throw (); 25082: 25082: extern _Float64 atanhf64 (_Float64 __x) throw (); extern _Float64 __atanhf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64 expf64 (_Float64 __x) throw (); extern _Float64 __expf64 (_Float64 __x) throw (); 25082: 25082: 25082: extern _Float64 frexpf64 (_Float64 __x, int *__exponent) throw (); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) throw (); 25082: 25082: 25082: extern _Float64 ldexpf64 (_Float64 __x, int __exponent) throw (); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) throw (); 25082: 25082: 25082: extern _Float64 logf64 (_Float64 __x) throw (); extern _Float64 __logf64 (_Float64 __x) throw (); 25082: 25082: 25082: extern _Float64 log10f64 (_Float64 __x) throw (); extern _Float64 __log10f64 (_Float64 __x) throw (); 25082: 25082: 25082: extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) throw (); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: extern _Float64 exp10f64 (_Float64 __x) throw (); extern _Float64 __exp10f64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64 expm1f64 (_Float64 __x) throw (); extern _Float64 __expm1f64 (_Float64 __x) throw (); 25082: 25082: 25082: extern _Float64 log1pf64 (_Float64 __x) throw (); extern _Float64 __log1pf64 (_Float64 __x) throw (); 25082: 25082: 25082: extern _Float64 logbf64 (_Float64 __x) throw (); extern _Float64 __logbf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64 exp2f64 (_Float64 __x) throw (); extern _Float64 __exp2f64 (_Float64 __x) throw (); 25082: 25082: 25082: extern _Float64 log2f64 (_Float64 __x) throw (); extern _Float64 __log2f64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64 powf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: extern _Float64 sqrtf64 (_Float64 __x) throw (); extern _Float64 __sqrtf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64 cbrtf64 (_Float64 __x) throw (); extern _Float64 __cbrtf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64 ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64 fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64 floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) throw (); 25082: # 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern _Float64 nanf64 (const char *__tagb) throw (); extern _Float64 __nanf64 (const char *__tagb) throw (); 25082: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float64 j0f64 (_Float64) throw (); extern _Float64 __j0f64 (_Float64) throw (); 25082: extern _Float64 j1f64 (_Float64) throw (); extern _Float64 __j1f64 (_Float64) throw (); 25082: extern _Float64 jnf64 (int, _Float64) throw (); extern _Float64 __jnf64 (int, _Float64) throw (); 25082: extern _Float64 y0f64 (_Float64) throw (); extern _Float64 __y0f64 (_Float64) throw (); 25082: extern _Float64 y1f64 (_Float64) throw (); extern _Float64 __y1f64 (_Float64) throw (); 25082: extern _Float64 ynf64 (int, _Float64) throw (); extern _Float64 __ynf64 (int, _Float64) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64 erff64 (_Float64) throw (); extern _Float64 __erff64 (_Float64) throw (); 25082: extern _Float64 erfcf64 (_Float64) throw (); extern _Float64 __erfcf64 (_Float64) throw (); 25082: extern _Float64 lgammaf64 (_Float64) throw (); extern _Float64 __lgammaf64 (_Float64) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64 tgammaf64 (_Float64) throw (); extern _Float64 __tgammaf64 (_Float64) throw (); 25082: # 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float64 lgammaf64_r (_Float64, int *__signgamp) throw (); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64 rintf64 (_Float64 __x) throw (); extern _Float64 __rintf64 (_Float64 __x) throw (); 25082: 25082: 25082: extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64 nextdownf64 (_Float64 __x) throw (); extern _Float64 __nextdownf64 (_Float64 __x) throw (); 25082: 25082: extern _Float64 nextupf64 (_Float64 __x) throw (); extern _Float64 __nextupf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: 25082: extern _Float64 scalbnf64 (_Float64 __x, int __n) throw (); extern _Float64 __scalbnf64 (_Float64 __x, int __n) throw (); 25082: 25082: 25082: 25082: extern int ilogbf64 (_Float64 __x) throw (); extern int __ilogbf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long int llogbf64 (_Float64 __x) throw (); extern long int __llogbf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64 scalblnf64 (_Float64 __x, long int __n) throw (); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) throw (); 25082: 25082: 25082: 25082: extern _Float64 nearbyintf64 (_Float64 __x) throw (); extern _Float64 __nearbyintf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: extern _Float64 roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern _Float64 truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int lrintf64 (_Float64 __x) throw (); extern long int __lrintf64 (_Float64 __x) throw (); 25082: __extension__ 25082: extern long long int llrintf64 (_Float64 __x) throw (); extern long long int __llrintf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: extern long int lroundf64 (_Float64 __x) throw (); extern long int __lroundf64 (_Float64 __x) throw (); 25082: __extension__ 25082: extern long long int llroundf64 (_Float64 __x) throw (); extern long long int __llroundf64 (_Float64 __x) throw (); 25082: 25082: 25082: 25082: extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64 fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64 roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalorderf64 (_Float64 __x, _Float64 __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalordermagf64 (_Float64 __x, _Float64 __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) throw (); 25082: 25082: 25082: extern _Float64 getpayloadf64 (const _Float64 *__x) throw (); extern _Float64 __getpayloadf64 (const _Float64 *__x) throw (); 25082: 25082: 25082: extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) throw (); 25082: 25082: 25082: extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) throw (); 25082: # 407 "/usr/include/math.h" 2 3 4 25082: # 423 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 25082: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float128 acosf128 (_Float128 __x) throw (); extern _Float128 __acosf128 (_Float128 __x) throw (); 25082: 25082: extern _Float128 asinf128 (_Float128 __x) throw (); extern _Float128 __asinf128 (_Float128 __x) throw (); 25082: 25082: extern _Float128 atanf128 (_Float128 __x) throw (); extern _Float128 __atanf128 (_Float128 __x) throw (); 25082: 25082: extern _Float128 atan2f128 (_Float128 __y, _Float128 __x) throw (); extern _Float128 __atan2f128 (_Float128 __y, _Float128 __x) throw (); 25082: 25082: 25082: extern _Float128 cosf128 (_Float128 __x) throw (); extern _Float128 __cosf128 (_Float128 __x) throw (); 25082: 25082: extern _Float128 sinf128 (_Float128 __x) throw (); extern _Float128 __sinf128 (_Float128 __x) throw (); 25082: 25082: extern _Float128 tanf128 (_Float128 __x) throw (); extern _Float128 __tanf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float128 coshf128 (_Float128 __x) throw (); extern _Float128 __coshf128 (_Float128 __x) throw (); 25082: 25082: extern _Float128 sinhf128 (_Float128 __x) throw (); extern _Float128 __sinhf128 (_Float128 __x) throw (); 25082: 25082: extern _Float128 tanhf128 (_Float128 __x) throw (); extern _Float128 __tanhf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: extern void sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) throw (); extern void __sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern _Float128 acoshf128 (_Float128 __x) throw (); extern _Float128 __acoshf128 (_Float128 __x) throw (); 25082: 25082: extern _Float128 asinhf128 (_Float128 __x) throw (); extern _Float128 __asinhf128 (_Float128 __x) throw (); 25082: 25082: extern _Float128 atanhf128 (_Float128 __x) throw (); extern _Float128 __atanhf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern _Float128 expf128 (_Float128 __x) throw (); extern _Float128 __expf128 (_Float128 __x) throw (); 25082: 25082: 25082: extern _Float128 frexpf128 (_Float128 __x, int *__exponent) throw (); extern _Float128 __frexpf128 (_Float128 __x, int *__exponent) throw (); 25082: 25082: 25082: extern _Float128 ldexpf128 (_Float128 __x, int __exponent) throw (); extern _Float128 __ldexpf128 (_Float128 __x, int __exponent) throw (); 25082: 25082: 25082: extern _Float128 logf128 (_Float128 __x) throw (); extern _Float128 __logf128 (_Float128 __x) throw (); 25082: 25082: 25082: extern _Float128 log10f128 (_Float128 __x) throw (); extern _Float128 __log10f128 (_Float128 __x) throw (); 25082: 25082: 25082: extern _Float128 modff128 (_Float128 __x, _Float128 *__iptr) throw (); extern _Float128 __modff128 (_Float128 __x, _Float128 *__iptr) throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: extern _Float128 exp10f128 (_Float128 __x) throw (); extern _Float128 __exp10f128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float128 expm1f128 (_Float128 __x) throw (); extern _Float128 __expm1f128 (_Float128 __x) throw (); 25082: 25082: 25082: extern _Float128 log1pf128 (_Float128 __x) throw (); extern _Float128 __log1pf128 (_Float128 __x) throw (); 25082: 25082: 25082: extern _Float128 logbf128 (_Float128 __x) throw (); extern _Float128 __logbf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float128 exp2f128 (_Float128 __x) throw (); extern _Float128 __exp2f128 (_Float128 __x) throw (); 25082: 25082: 25082: extern _Float128 log2f128 (_Float128 __x) throw (); extern _Float128 __log2f128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float128 powf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __powf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float128 sqrtf128 (_Float128 __x) throw (); extern _Float128 __sqrtf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: extern _Float128 hypotf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __hypotf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float128 cbrtf128 (_Float128 __x) throw (); extern _Float128 __cbrtf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float128 ceilf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __ceilf128 (_Float128 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float128 fabsf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __fabsf128 (_Float128 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float128 floorf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __floorf128 (_Float128 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float128 fmodf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __fmodf128 (_Float128 __x, _Float128 __y) throw (); 25082: # 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float128 copysignf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __copysignf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern _Float128 nanf128 (const char *__tagb) throw (); extern _Float128 __nanf128 (const char *__tagb) throw (); 25082: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float128 j0f128 (_Float128) throw (); extern _Float128 __j0f128 (_Float128) throw (); 25082: extern _Float128 j1f128 (_Float128) throw (); extern _Float128 __j1f128 (_Float128) throw (); 25082: extern _Float128 jnf128 (int, _Float128) throw (); extern _Float128 __jnf128 (int, _Float128) throw (); 25082: extern _Float128 y0f128 (_Float128) throw (); extern _Float128 __y0f128 (_Float128) throw (); 25082: extern _Float128 y1f128 (_Float128) throw (); extern _Float128 __y1f128 (_Float128) throw (); 25082: extern _Float128 ynf128 (int, _Float128) throw (); extern _Float128 __ynf128 (int, _Float128) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern _Float128 erff128 (_Float128) throw (); extern _Float128 __erff128 (_Float128) throw (); 25082: extern _Float128 erfcf128 (_Float128) throw (); extern _Float128 __erfcf128 (_Float128) throw (); 25082: extern _Float128 lgammaf128 (_Float128) throw (); extern _Float128 __lgammaf128 (_Float128) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float128 tgammaf128 (_Float128) throw (); extern _Float128 __tgammaf128 (_Float128) throw (); 25082: # 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float128 lgammaf128_r (_Float128, int *__signgamp) throw (); extern _Float128 __lgammaf128_r (_Float128, int *__signgamp) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float128 rintf128 (_Float128 __x) throw (); extern _Float128 __rintf128 (_Float128 __x) throw (); 25082: 25082: 25082: extern _Float128 nextafterf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __nextafterf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float128 nextdownf128 (_Float128 __x) throw (); extern _Float128 __nextdownf128 (_Float128 __x) throw (); 25082: 25082: extern _Float128 nextupf128 (_Float128 __x) throw (); extern _Float128 __nextupf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: extern _Float128 remainderf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __remainderf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: 25082: extern _Float128 scalbnf128 (_Float128 __x, int __n) throw (); extern _Float128 __scalbnf128 (_Float128 __x, int __n) throw (); 25082: 25082: 25082: 25082: extern int ilogbf128 (_Float128 __x) throw (); extern int __ilogbf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long int llogbf128 (_Float128 __x) throw (); extern long int __llogbf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float128 scalblnf128 (_Float128 __x, long int __n) throw (); extern _Float128 __scalblnf128 (_Float128 __x, long int __n) throw (); 25082: 25082: 25082: 25082: extern _Float128 nearbyintf128 (_Float128 __x) throw (); extern _Float128 __nearbyintf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: extern _Float128 roundf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __roundf128 (_Float128 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern _Float128 truncf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __truncf128 (_Float128 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern _Float128 remquof128 (_Float128 __x, _Float128 __y, int *__quo) throw (); extern _Float128 __remquof128 (_Float128 __x, _Float128 __y, int *__quo) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int lrintf128 (_Float128 __x) throw (); extern long int __lrintf128 (_Float128 __x) throw (); 25082: __extension__ 25082: extern long long int llrintf128 (_Float128 __x) throw (); extern long long int __llrintf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: extern long int lroundf128 (_Float128 __x) throw (); extern long int __lroundf128 (_Float128 __x) throw (); 25082: __extension__ 25082: extern long long int llroundf128 (_Float128 __x) throw (); extern long long int __llroundf128 (_Float128 __x) throw (); 25082: 25082: 25082: 25082: extern _Float128 fdimf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __fdimf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float128 fmaxf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fmaxf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float128 fminf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fminf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float128 fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) throw (); extern _Float128 __fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float128 roundevenf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __roundevenf128 (_Float128 __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern __intmax_t fromfpf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf128 (_Float128 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf128 (_Float128 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __intmax_t fromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: extern _Float128 fmaxmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fmaxmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float128 fminmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fminmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalorderf128 (_Float128 __x, _Float128 __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalordermagf128 (_Float128 __x, _Float128 __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int canonicalizef128 (_Float128 *__cx, const _Float128 *__x) throw (); 25082: 25082: 25082: extern _Float128 getpayloadf128 (const _Float128 *__x) throw (); extern _Float128 __getpayloadf128 (const _Float128 *__x) throw (); 25082: 25082: 25082: extern int setpayloadf128 (_Float128 *__x, _Float128 __payload) throw (); 25082: 25082: 25082: extern int setpayloadsigf128 (_Float128 *__x, _Float128 __payload) throw (); 25082: # 424 "/usr/include/math.h" 2 3 4 25082: # 440 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 25082: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float32x acosf32x (_Float32x __x) throw (); extern _Float32x __acosf32x (_Float32x __x) throw (); 25082: 25082: extern _Float32x asinf32x (_Float32x __x) throw (); extern _Float32x __asinf32x (_Float32x __x) throw (); 25082: 25082: extern _Float32x atanf32x (_Float32x __x) throw (); extern _Float32x __atanf32x (_Float32x __x) throw (); 25082: 25082: extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) throw (); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) throw (); 25082: 25082: 25082: extern _Float32x cosf32x (_Float32x __x) throw (); extern _Float32x __cosf32x (_Float32x __x) throw (); 25082: 25082: extern _Float32x sinf32x (_Float32x __x) throw (); extern _Float32x __sinf32x (_Float32x __x) throw (); 25082: 25082: extern _Float32x tanf32x (_Float32x __x) throw (); extern _Float32x __tanf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32x coshf32x (_Float32x __x) throw (); extern _Float32x __coshf32x (_Float32x __x) throw (); 25082: 25082: extern _Float32x sinhf32x (_Float32x __x) throw (); extern _Float32x __sinhf32x (_Float32x __x) throw (); 25082: 25082: extern _Float32x tanhf32x (_Float32x __x) throw (); extern _Float32x __tanhf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw (); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern _Float32x acoshf32x (_Float32x __x) throw (); extern _Float32x __acoshf32x (_Float32x __x) throw (); 25082: 25082: extern _Float32x asinhf32x (_Float32x __x) throw (); extern _Float32x __asinhf32x (_Float32x __x) throw (); 25082: 25082: extern _Float32x atanhf32x (_Float32x __x) throw (); extern _Float32x __atanhf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32x expf32x (_Float32x __x) throw (); extern _Float32x __expf32x (_Float32x __x) throw (); 25082: 25082: 25082: extern _Float32x frexpf32x (_Float32x __x, int *__exponent) throw (); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) throw (); 25082: 25082: 25082: extern _Float32x ldexpf32x (_Float32x __x, int __exponent) throw (); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) throw (); 25082: 25082: 25082: extern _Float32x logf32x (_Float32x __x) throw (); extern _Float32x __logf32x (_Float32x __x) throw (); 25082: 25082: 25082: extern _Float32x log10f32x (_Float32x __x) throw (); extern _Float32x __log10f32x (_Float32x __x) throw (); 25082: 25082: 25082: extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) throw (); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: extern _Float32x exp10f32x (_Float32x __x) throw (); extern _Float32x __exp10f32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32x expm1f32x (_Float32x __x) throw (); extern _Float32x __expm1f32x (_Float32x __x) throw (); 25082: 25082: 25082: extern _Float32x log1pf32x (_Float32x __x) throw (); extern _Float32x __log1pf32x (_Float32x __x) throw (); 25082: 25082: 25082: extern _Float32x logbf32x (_Float32x __x) throw (); extern _Float32x __logbf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32x exp2f32x (_Float32x __x) throw (); extern _Float32x __exp2f32x (_Float32x __x) throw (); 25082: 25082: 25082: extern _Float32x log2f32x (_Float32x __x) throw (); extern _Float32x __log2f32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32x powf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) throw (); 25082: 25082: 25082: extern _Float32x sqrtf32x (_Float32x __x) throw (); extern _Float32x __sqrtf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32x cbrtf32x (_Float32x __x) throw (); extern _Float32x __cbrtf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32x ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32x fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32x floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) throw (); 25082: # 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern _Float32x nanf32x (const char *__tagb) throw (); extern _Float32x __nanf32x (const char *__tagb) throw (); 25082: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float32x j0f32x (_Float32x) throw (); extern _Float32x __j0f32x (_Float32x) throw (); 25082: extern _Float32x j1f32x (_Float32x) throw (); extern _Float32x __j1f32x (_Float32x) throw (); 25082: extern _Float32x jnf32x (int, _Float32x) throw (); extern _Float32x __jnf32x (int, _Float32x) throw (); 25082: extern _Float32x y0f32x (_Float32x) throw (); extern _Float32x __y0f32x (_Float32x) throw (); 25082: extern _Float32x y1f32x (_Float32x) throw (); extern _Float32x __y1f32x (_Float32x) throw (); 25082: extern _Float32x ynf32x (int, _Float32x) throw (); extern _Float32x __ynf32x (int, _Float32x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32x erff32x (_Float32x) throw (); extern _Float32x __erff32x (_Float32x) throw (); 25082: extern _Float32x erfcf32x (_Float32x) throw (); extern _Float32x __erfcf32x (_Float32x) throw (); 25082: extern _Float32x lgammaf32x (_Float32x) throw (); extern _Float32x __lgammaf32x (_Float32x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32x tgammaf32x (_Float32x) throw (); extern _Float32x __tgammaf32x (_Float32x) throw (); 25082: # 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) throw (); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32x rintf32x (_Float32x __x) throw (); extern _Float32x __rintf32x (_Float32x __x) throw (); 25082: 25082: 25082: extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float32x nextdownf32x (_Float32x __x) throw (); extern _Float32x __nextdownf32x (_Float32x __x) throw (); 25082: 25082: extern _Float32x nextupf32x (_Float32x __x) throw (); extern _Float32x __nextupf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) throw (); 25082: 25082: 25082: 25082: extern _Float32x scalbnf32x (_Float32x __x, int __n) throw (); extern _Float32x __scalbnf32x (_Float32x __x, int __n) throw (); 25082: 25082: 25082: 25082: extern int ilogbf32x (_Float32x __x) throw (); extern int __ilogbf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long int llogbf32x (_Float32x __x) throw (); extern long int __llogbf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32x scalblnf32x (_Float32x __x, long int __n) throw (); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) throw (); 25082: 25082: 25082: 25082: extern _Float32x nearbyintf32x (_Float32x __x) throw (); extern _Float32x __nearbyintf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: extern _Float32x roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern _Float32x truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int lrintf32x (_Float32x __x) throw (); extern long int __lrintf32x (_Float32x __x) throw (); 25082: __extension__ 25082: extern long long int llrintf32x (_Float32x __x) throw (); extern long long int __llrintf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: extern long int lroundf32x (_Float32x __x) throw (); extern long int __lroundf32x (_Float32x __x) throw (); 25082: __extension__ 25082: extern long long int llroundf32x (_Float32x __x) throw (); extern long long int __llroundf32x (_Float32x __x) throw (); 25082: 25082: 25082: 25082: extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) throw (); 25082: 25082: 25082: extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32x fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float32x roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalorderf32x (_Float32x __x, _Float32x __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalordermagf32x (_Float32x __x, _Float32x __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) throw (); 25082: 25082: 25082: extern _Float32x getpayloadf32x (const _Float32x *__x) throw (); extern _Float32x __getpayloadf32x (const _Float32x *__x) throw (); 25082: 25082: 25082: extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) throw (); 25082: 25082: 25082: extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) throw (); 25082: # 441 "/usr/include/math.h" 2 3 4 25082: # 457 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 25082: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float64x acosf64x (_Float64x __x) throw (); extern _Float64x __acosf64x (_Float64x __x) throw (); 25082: 25082: extern _Float64x asinf64x (_Float64x __x) throw (); extern _Float64x __asinf64x (_Float64x __x) throw (); 25082: 25082: extern _Float64x atanf64x (_Float64x __x) throw (); extern _Float64x __atanf64x (_Float64x __x) throw (); 25082: 25082: extern _Float64x atan2f64x (_Float64x __y, _Float64x __x) throw (); extern _Float64x __atan2f64x (_Float64x __y, _Float64x __x) throw (); 25082: 25082: 25082: extern _Float64x cosf64x (_Float64x __x) throw (); extern _Float64x __cosf64x (_Float64x __x) throw (); 25082: 25082: extern _Float64x sinf64x (_Float64x __x) throw (); extern _Float64x __sinf64x (_Float64x __x) throw (); 25082: 25082: extern _Float64x tanf64x (_Float64x __x) throw (); extern _Float64x __tanf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64x coshf64x (_Float64x __x) throw (); extern _Float64x __coshf64x (_Float64x __x) throw (); 25082: 25082: extern _Float64x sinhf64x (_Float64x __x) throw (); extern _Float64x __sinhf64x (_Float64x __x) throw (); 25082: 25082: extern _Float64x tanhf64x (_Float64x __x) throw (); extern _Float64x __tanhf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: extern void sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) throw (); extern void __sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern _Float64x acoshf64x (_Float64x __x) throw (); extern _Float64x __acoshf64x (_Float64x __x) throw (); 25082: 25082: extern _Float64x asinhf64x (_Float64x __x) throw (); extern _Float64x __asinhf64x (_Float64x __x) throw (); 25082: 25082: extern _Float64x atanhf64x (_Float64x __x) throw (); extern _Float64x __atanhf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64x expf64x (_Float64x __x) throw (); extern _Float64x __expf64x (_Float64x __x) throw (); 25082: 25082: 25082: extern _Float64x frexpf64x (_Float64x __x, int *__exponent) throw (); extern _Float64x __frexpf64x (_Float64x __x, int *__exponent) throw (); 25082: 25082: 25082: extern _Float64x ldexpf64x (_Float64x __x, int __exponent) throw (); extern _Float64x __ldexpf64x (_Float64x __x, int __exponent) throw (); 25082: 25082: 25082: extern _Float64x logf64x (_Float64x __x) throw (); extern _Float64x __logf64x (_Float64x __x) throw (); 25082: 25082: 25082: extern _Float64x log10f64x (_Float64x __x) throw (); extern _Float64x __log10f64x (_Float64x __x) throw (); 25082: 25082: 25082: extern _Float64x modff64x (_Float64x __x, _Float64x *__iptr) throw (); extern _Float64x __modff64x (_Float64x __x, _Float64x *__iptr) throw () __attribute__ ((__nonnull__ (2))); 25082: 25082: 25082: 25082: extern _Float64x exp10f64x (_Float64x __x) throw (); extern _Float64x __exp10f64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64x expm1f64x (_Float64x __x) throw (); extern _Float64x __expm1f64x (_Float64x __x) throw (); 25082: 25082: 25082: extern _Float64x log1pf64x (_Float64x __x) throw (); extern _Float64x __log1pf64x (_Float64x __x) throw (); 25082: 25082: 25082: extern _Float64x logbf64x (_Float64x __x) throw (); extern _Float64x __logbf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64x exp2f64x (_Float64x __x) throw (); extern _Float64x __exp2f64x (_Float64x __x) throw (); 25082: 25082: 25082: extern _Float64x log2f64x (_Float64x __x) throw (); extern _Float64x __log2f64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64x powf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __powf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float64x sqrtf64x (_Float64x __x) throw (); extern _Float64x __sqrtf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: extern _Float64x hypotf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __hypotf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64x cbrtf64x (_Float64x __x) throw (); extern _Float64x __cbrtf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64x ceilf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __ceilf64x (_Float64x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64x fabsf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __fabsf64x (_Float64x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64x floorf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __floorf64x (_Float64x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64x fmodf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __fmodf64x (_Float64x __x, _Float64x __y) throw (); 25082: # 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float64x copysignf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __copysignf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern _Float64x nanf64x (const char *__tagb) throw (); extern _Float64x __nanf64x (const char *__tagb) throw (); 25082: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float64x j0f64x (_Float64x) throw (); extern _Float64x __j0f64x (_Float64x) throw (); 25082: extern _Float64x j1f64x (_Float64x) throw (); extern _Float64x __j1f64x (_Float64x) throw (); 25082: extern _Float64x jnf64x (int, _Float64x) throw (); extern _Float64x __jnf64x (int, _Float64x) throw (); 25082: extern _Float64x y0f64x (_Float64x) throw (); extern _Float64x __y0f64x (_Float64x) throw (); 25082: extern _Float64x y1f64x (_Float64x) throw (); extern _Float64x __y1f64x (_Float64x) throw (); 25082: extern _Float64x ynf64x (int, _Float64x) throw (); extern _Float64x __ynf64x (int, _Float64x) throw (); 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64x erff64x (_Float64x) throw (); extern _Float64x __erff64x (_Float64x) throw (); 25082: extern _Float64x erfcf64x (_Float64x) throw (); extern _Float64x __erfcf64x (_Float64x) throw (); 25082: extern _Float64x lgammaf64x (_Float64x) throw (); extern _Float64x __lgammaf64x (_Float64x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64x tgammaf64x (_Float64x) throw (); extern _Float64x __tgammaf64x (_Float64x) throw (); 25082: # 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 25082: extern _Float64x lgammaf64x_r (_Float64x, int *__signgamp) throw (); extern _Float64x __lgammaf64x_r (_Float64x, int *__signgamp) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64x rintf64x (_Float64x __x) throw (); extern _Float64x __rintf64x (_Float64x __x) throw (); 25082: 25082: 25082: extern _Float64x nextafterf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __nextafterf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern _Float64x nextdownf64x (_Float64x __x) throw (); extern _Float64x __nextdownf64x (_Float64x __x) throw (); 25082: 25082: extern _Float64x nextupf64x (_Float64x __x) throw (); extern _Float64x __nextupf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: extern _Float64x remainderf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __remainderf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: 25082: extern _Float64x scalbnf64x (_Float64x __x, int __n) throw (); extern _Float64x __scalbnf64x (_Float64x __x, int __n) throw (); 25082: 25082: 25082: 25082: extern int ilogbf64x (_Float64x __x) throw (); extern int __ilogbf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: 25082: extern long int llogbf64x (_Float64x __x) throw (); extern long int __llogbf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64x scalblnf64x (_Float64x __x, long int __n) throw (); extern _Float64x __scalblnf64x (_Float64x __x, long int __n) throw (); 25082: 25082: 25082: 25082: extern _Float64x nearbyintf64x (_Float64x __x) throw (); extern _Float64x __nearbyintf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: extern _Float64x roundf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __roundf64x (_Float64x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern _Float64x truncf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __truncf64x (_Float64x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: 25082: extern _Float64x remquof64x (_Float64x __x, _Float64x __y, int *__quo) throw (); extern _Float64x __remquof64x (_Float64x __x, _Float64x __y, int *__quo) throw (); 25082: 25082: 25082: 25082: 25082: 25082: 25082: extern long int lrintf64x (_Float64x __x) throw (); extern long int __lrintf64x (_Float64x __x) throw (); 25082: __extension__ 25082: extern long long int llrintf64x (_Float64x __x) throw (); extern long long int __llrintf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: extern long int lroundf64x (_Float64x __x) throw (); extern long int __lroundf64x (_Float64x __x) throw (); 25082: __extension__ 25082: extern long long int llroundf64x (_Float64x __x) throw (); extern long long int __llroundf64x (_Float64x __x) throw (); 25082: 25082: 25082: 25082: extern _Float64x fdimf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __fdimf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float64x fmaxf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fmaxf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64x fminf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fminf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64x fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) throw (); extern _Float64x __fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) throw (); 25082: 25082: 25082: 25082: 25082: extern _Float64x roundevenf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __roundevenf64x (_Float64x __x) throw () __attribute__ ((__const__)); 25082: 25082: 25082: 25082: extern __intmax_t fromfpf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64x (_Float64x __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64x (_Float64x __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __intmax_t fromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: 25082: 25082: extern __uintmax_t ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw () 25082: ; 25082: 25082: 25082: extern _Float64x fmaxmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fmaxmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern _Float64x fminmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fminmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalorderf64x (_Float64x __x, _Float64x __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int totalordermagf64x (_Float64x __x, _Float64x __y) throw () 25082: __attribute__ ((__const__)); 25082: 25082: 25082: extern int canonicalizef64x (_Float64x *__cx, const _Float64x *__x) throw (); 25082: 25082: 25082: extern _Float64x getpayloadf64x (const _Float64x *__x) throw (); extern _Float64x __getpayloadf64x (const _Float64x *__x) throw (); 25082: 25082: 25082: extern int setpayloadf64x (_Float64x *__x, _Float64x __payload) throw (); 25082: 25082: 25082: extern int setpayloadsigf64x (_Float64x *__x, _Float64x __payload) throw (); 25082: # 458 "/usr/include/math.h" 2 3 4 25082: # 503 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern float fadd (double __x, double __y) throw (); 25082: 25082: 25082: extern float fdiv (double __x, double __y) throw (); 25082: 25082: 25082: extern float fmul (double __x, double __y) throw (); 25082: 25082: 25082: extern float fsub (double __x, double __y) throw (); 25082: # 504 "/usr/include/math.h" 2 3 4 25082: # 517 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern float faddl (long double __x, long double __y) throw (); 25082: 25082: 25082: extern float fdivl (long double __x, long double __y) throw (); 25082: 25082: 25082: extern float fmull (long double __x, long double __y) throw (); 25082: 25082: 25082: extern float fsubl (long double __x, long double __y) throw (); 25082: # 518 "/usr/include/math.h" 2 3 4 25082: # 537 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern double daddl (long double __x, long double __y) throw (); 25082: 25082: 25082: extern double ddivl (long double __x, long double __y) throw (); 25082: 25082: 25082: extern double dmull (long double __x, long double __y) throw (); 25082: 25082: 25082: extern double dsubl (long double __x, long double __y) throw (); 25082: # 538 "/usr/include/math.h" 2 3 4 25082: # 616 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) throw (); 25082: 25082: 25082: extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) throw (); 25082: 25082: 25082: extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) throw (); 25082: 25082: 25082: extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) throw (); 25082: # 617 "/usr/include/math.h" 2 3 4 25082: # 626 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) throw (); 25082: # 627 "/usr/include/math.h" 2 3 4 25082: # 636 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern _Float32 f32addf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float32 f32divf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float32 f32mulf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float32 f32subf64x (_Float64x __x, _Float64x __y) throw (); 25082: # 637 "/usr/include/math.h" 2 3 4 25082: # 646 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern _Float32 f32addf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float32 f32divf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float32 f32mulf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float32 f32subf128 (_Float128 __x, _Float128 __y) throw (); 25082: # 647 "/usr/include/math.h" 2 3 4 25082: # 666 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) throw (); 25082: 25082: 25082: extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) throw (); 25082: # 667 "/usr/include/math.h" 2 3 4 25082: # 676 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern _Float32x f32xaddf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float32x f32xdivf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float32x f32xmulf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float32x f32xsubf64x (_Float64x __x, _Float64x __y) throw (); 25082: # 677 "/usr/include/math.h" 2 3 4 25082: # 686 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern _Float32x f32xaddf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float32x f32xdivf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float32x f32xmulf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float32x f32xsubf128 (_Float128 __x, _Float128 __y) throw (); 25082: # 687 "/usr/include/math.h" 2 3 4 25082: # 706 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern _Float64 f64addf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float64 f64divf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float64 f64mulf64x (_Float64x __x, _Float64x __y) throw (); 25082: 25082: 25082: extern _Float64 f64subf64x (_Float64x __x, _Float64x __y) throw (); 25082: # 707 "/usr/include/math.h" 2 3 4 25082: # 716 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern _Float64 f64addf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float64 f64divf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float64 f64mulf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float64 f64subf128 (_Float128 __x, _Float128 __y) throw (); 25082: # 717 "/usr/include/math.h" 2 3 4 25082: # 736 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 25082: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 25082: extern _Float64x f64xaddf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float64x f64xdivf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float64x f64xmulf128 (_Float128 __x, _Float128 __y) throw (); 25082: 25082: 25082: extern _Float64x f64xsubf128 (_Float128 __x, _Float128 __y) throw (); 25082: # 737 "/usr/include/math.h" 2 3 4 25082: # 773 "/usr/include/math.h" 3 4 25082: extern int signgam; 25082: # 853 "/usr/include/math.h" 3 4 25082: enum 25082: { 25082: FP_NAN = 25082: 25082: 0, 25082: FP_INFINITE = 25082: 25082: 1, 25082: FP_ZERO = 25082: 25082: 2, 25082: FP_SUBNORMAL = 25082: 25082: 3, 25082: FP_NORMAL = 25082: 25082: 4 25082: }; 25082: # 968 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/iscanonical.h" 1 3 4 25082: # 969 "/usr/include/math.h" 2 3 4 25082: # 980 "/usr/include/math.h" 3 4 25082: extern "C++" { 25082: inline int issignaling (float __val) { return __issignalingf (__val); } 25082: inline int issignaling (double __val) { return __issignaling (__val); } 25082: inline int 25082: issignaling (long double __val) 25082: { 25082: 25082: 25082: 25082: return __issignalingl (__val); 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 1011 "/usr/include/math.h" 3 4 25082: extern "C++" { 25082: # 1042 "/usr/include/math.h" 3 4 25082: template inline bool 25082: iszero (__T __val) 25082: { 25082: return __val == 0; 25082: } 25082: 25082: } 25082: # 1240 "/usr/include/math.h" 3 4 25082: # 1 "/usr/include/aarch64-linux-gnu/bits/mathinline.h" 1 3 4 25082: # 1241 "/usr/include/math.h" 2 3 4 25082: # 1493 "/usr/include/math.h" 3 4 25082: extern "C++" { 25082: template struct __iseqsig_type; 25082: 25082: template<> struct __iseqsig_type 25082: { 25082: static int __call (float __x, float __y) throw () 25082: { 25082: return __iseqsigf (__x, __y); 25082: } 25082: }; 25082: 25082: template<> struct __iseqsig_type 25082: { 25082: static int __call (double __x, double __y) throw () 25082: { 25082: return __iseqsig (__x, __y); 25082: } 25082: }; 25082: 25082: template<> struct __iseqsig_type 25082: { 25082: static int __call (long double __x, long double __y) throw () 25082: { 25082: 25082: return __iseqsigl (__x, __y); 25082: 25082: 25082: 25082: } 25082: }; 25082: # 1536 "/usr/include/math.h" 3 4 25082: template 25082: inline int 25082: iseqsig (_T1 __x, _T2 __y) throw () 25082: { 25082: 25082: typedef decltype (((__x) + (__y) + 0.0f)) _T3; 25082: 25082: 25082: 25082: return __iseqsig_type<_T3>::__call (__x, __y); 25082: } 25082: 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: # 46 "/usr/include/c++/8/cmath" 2 3 25082: # 77 "/usr/include/c++/8/cmath" 3 25082: extern "C++" 25082: { 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: using ::acos; 25082: 25082: 25082: inline constexpr float 25082: acos(float __x) 25082: { return __builtin_acosf(__x); } 25082: 25082: inline constexpr long double 25082: acos(long double __x) 25082: { return __builtin_acosl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: acos(_Tp __x) 25082: { return __builtin_acos(__x); } 25082: 25082: using ::asin; 25082: 25082: 25082: inline constexpr float 25082: asin(float __x) 25082: { return __builtin_asinf(__x); } 25082: 25082: inline constexpr long double 25082: asin(long double __x) 25082: { return __builtin_asinl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: asin(_Tp __x) 25082: { return __builtin_asin(__x); } 25082: 25082: using ::atan; 25082: 25082: 25082: inline constexpr float 25082: atan(float __x) 25082: { return __builtin_atanf(__x); } 25082: 25082: inline constexpr long double 25082: atan(long double __x) 25082: { return __builtin_atanl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: atan(_Tp __x) 25082: { return __builtin_atan(__x); } 25082: 25082: using ::atan2; 25082: 25082: 25082: inline constexpr float 25082: atan2(float __y, float __x) 25082: { return __builtin_atan2f(__y, __x); } 25082: 25082: inline constexpr long double 25082: atan2(long double __y, long double __x) 25082: { return __builtin_atan2l(__y, __x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: atan2(_Tp __y, _Up __x) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return atan2(__type(__y), __type(__x)); 25082: } 25082: 25082: using ::ceil; 25082: 25082: 25082: inline constexpr float 25082: ceil(float __x) 25082: { return __builtin_ceilf(__x); } 25082: 25082: inline constexpr long double 25082: ceil(long double __x) 25082: { return __builtin_ceill(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: ceil(_Tp __x) 25082: { return __builtin_ceil(__x); } 25082: 25082: using ::cos; 25082: 25082: 25082: inline constexpr float 25082: cos(float __x) 25082: { return __builtin_cosf(__x); } 25082: 25082: inline constexpr long double 25082: cos(long double __x) 25082: { return __builtin_cosl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: cos(_Tp __x) 25082: { return __builtin_cos(__x); } 25082: 25082: using ::cosh; 25082: 25082: 25082: inline constexpr float 25082: cosh(float __x) 25082: { return __builtin_coshf(__x); } 25082: 25082: inline constexpr long double 25082: cosh(long double __x) 25082: { return __builtin_coshl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: cosh(_Tp __x) 25082: { return __builtin_cosh(__x); } 25082: 25082: using ::exp; 25082: 25082: 25082: inline constexpr float 25082: exp(float __x) 25082: { return __builtin_expf(__x); } 25082: 25082: inline constexpr long double 25082: exp(long double __x) 25082: { return __builtin_expl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: exp(_Tp __x) 25082: { return __builtin_exp(__x); } 25082: 25082: using ::fabs; 25082: 25082: 25082: inline constexpr float 25082: fabs(float __x) 25082: { return __builtin_fabsf(__x); } 25082: 25082: inline constexpr long double 25082: fabs(long double __x) 25082: { return __builtin_fabsl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: fabs(_Tp __x) 25082: { return __builtin_fabs(__x); } 25082: 25082: using ::floor; 25082: 25082: 25082: inline constexpr float 25082: floor(float __x) 25082: { return __builtin_floorf(__x); } 25082: 25082: inline constexpr long double 25082: floor(long double __x) 25082: { return __builtin_floorl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: floor(_Tp __x) 25082: { return __builtin_floor(__x); } 25082: 25082: using ::fmod; 25082: 25082: 25082: inline constexpr float 25082: fmod(float __x, float __y) 25082: { return __builtin_fmodf(__x, __y); } 25082: 25082: inline constexpr long double 25082: fmod(long double __x, long double __y) 25082: { return __builtin_fmodl(__x, __y); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: fmod(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return fmod(__type(__x), __type(__y)); 25082: } 25082: 25082: using ::frexp; 25082: 25082: 25082: inline float 25082: frexp(float __x, int* __exp) 25082: { return __builtin_frexpf(__x, __exp); } 25082: 25082: inline long double 25082: frexp(long double __x, int* __exp) 25082: { return __builtin_frexpl(__x, __exp); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: frexp(_Tp __x, int* __exp) 25082: { return __builtin_frexp(__x, __exp); } 25082: 25082: using ::ldexp; 25082: 25082: 25082: inline constexpr float 25082: ldexp(float __x, int __exp) 25082: { return __builtin_ldexpf(__x, __exp); } 25082: 25082: inline constexpr long double 25082: ldexp(long double __x, int __exp) 25082: { return __builtin_ldexpl(__x, __exp); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: ldexp(_Tp __x, int __exp) 25082: { return __builtin_ldexp(__x, __exp); } 25082: 25082: using ::log; 25082: 25082: 25082: inline constexpr float 25082: log(float __x) 25082: { return __builtin_logf(__x); } 25082: 25082: inline constexpr long double 25082: log(long double __x) 25082: { return __builtin_logl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: log(_Tp __x) 25082: { return __builtin_log(__x); } 25082: 25082: using ::log10; 25082: 25082: 25082: inline constexpr float 25082: log10(float __x) 25082: { return __builtin_log10f(__x); } 25082: 25082: inline constexpr long double 25082: log10(long double __x) 25082: { return __builtin_log10l(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: log10(_Tp __x) 25082: { return __builtin_log10(__x); } 25082: 25082: using ::modf; 25082: 25082: 25082: inline float 25082: modf(float __x, float* __iptr) 25082: { return __builtin_modff(__x, __iptr); } 25082: 25082: inline long double 25082: modf(long double __x, long double* __iptr) 25082: { return __builtin_modfl(__x, __iptr); } 25082: 25082: 25082: using ::pow; 25082: 25082: 25082: inline constexpr float 25082: pow(float __x, float __y) 25082: { return __builtin_powf(__x, __y); } 25082: 25082: inline constexpr long double 25082: pow(long double __x, long double __y) 25082: { return __builtin_powl(__x, __y); } 25082: # 412 "/usr/include/c++/8/cmath" 3 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: pow(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return pow(__type(__x), __type(__y)); 25082: } 25082: 25082: using ::sin; 25082: 25082: 25082: inline constexpr float 25082: sin(float __x) 25082: { return __builtin_sinf(__x); } 25082: 25082: inline constexpr long double 25082: sin(long double __x) 25082: { return __builtin_sinl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: sin(_Tp __x) 25082: { return __builtin_sin(__x); } 25082: 25082: using ::sinh; 25082: 25082: 25082: inline constexpr float 25082: sinh(float __x) 25082: { return __builtin_sinhf(__x); } 25082: 25082: inline constexpr long double 25082: sinh(long double __x) 25082: { return __builtin_sinhl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: sinh(_Tp __x) 25082: { return __builtin_sinh(__x); } 25082: 25082: using ::sqrt; 25082: 25082: 25082: inline constexpr float 25082: sqrt(float __x) 25082: { return __builtin_sqrtf(__x); } 25082: 25082: inline constexpr long double 25082: sqrt(long double __x) 25082: { return __builtin_sqrtl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: sqrt(_Tp __x) 25082: { return __builtin_sqrt(__x); } 25082: 25082: using ::tan; 25082: 25082: 25082: inline constexpr float 25082: tan(float __x) 25082: { return __builtin_tanf(__x); } 25082: 25082: inline constexpr long double 25082: tan(long double __x) 25082: { return __builtin_tanl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: tan(_Tp __x) 25082: { return __builtin_tan(__x); } 25082: 25082: using ::tanh; 25082: 25082: 25082: inline constexpr float 25082: tanh(float __x) 25082: { return __builtin_tanhf(__x); } 25082: 25082: inline constexpr long double 25082: tanh(long double __x) 25082: { return __builtin_tanhl(__x); } 25082: 25082: 25082: template 25082: inline constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: tanh(_Tp __x) 25082: { return __builtin_tanh(__x); } 25082: # 536 "/usr/include/c++/8/cmath" 3 25082: constexpr int 25082: fpclassify(float __x) 25082: { return __builtin_fpclassify(0, 1, 4, 25082: 3, 2, __x); } 25082: 25082: constexpr int 25082: fpclassify(double __x) 25082: { return __builtin_fpclassify(0, 1, 4, 25082: 3, 2, __x); } 25082: 25082: constexpr int 25082: fpclassify(long double __x) 25082: { return __builtin_fpclassify(0, 1, 4, 25082: 3, 2, __x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: int>::__type 25082: fpclassify(_Tp __x) 25082: { return __x != 0 ? 4 : 2; } 25082: 25082: 25082: 25082: constexpr bool 25082: isfinite(float __x) 25082: { return __builtin_isfinite(__x); } 25082: 25082: constexpr bool 25082: isfinite(double __x) 25082: { return __builtin_isfinite(__x); } 25082: 25082: constexpr bool 25082: isfinite(long double __x) 25082: { return __builtin_isfinite(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: bool>::__type 25082: isfinite(_Tp __x) 25082: { return true; } 25082: 25082: 25082: 25082: constexpr bool 25082: isinf(float __x) 25082: { return __builtin_isinf(__x); } 25082: 25082: 25082: 25082: 25082: 25082: constexpr bool 25082: isinf(double __x) 25082: { return __builtin_isinf(__x); } 25082: 25082: 25082: constexpr bool 25082: isinf(long double __x) 25082: { return __builtin_isinf(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: bool>::__type 25082: isinf(_Tp __x) 25082: { return false; } 25082: 25082: 25082: 25082: constexpr bool 25082: isnan(float __x) 25082: { return __builtin_isnan(__x); } 25082: 25082: 25082: 25082: 25082: 25082: constexpr bool 25082: isnan(double __x) 25082: { return __builtin_isnan(__x); } 25082: 25082: 25082: constexpr bool 25082: isnan(long double __x) 25082: { return __builtin_isnan(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: bool>::__type 25082: isnan(_Tp __x) 25082: { return false; } 25082: 25082: 25082: 25082: constexpr bool 25082: isnormal(float __x) 25082: { return __builtin_isnormal(__x); } 25082: 25082: constexpr bool 25082: isnormal(double __x) 25082: { return __builtin_isnormal(__x); } 25082: 25082: constexpr bool 25082: isnormal(long double __x) 25082: { return __builtin_isnormal(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: bool>::__type 25082: isnormal(_Tp __x) 25082: { return __x != 0 ? true : false; } 25082: 25082: 25082: 25082: 25082: constexpr bool 25082: signbit(float __x) 25082: { return __builtin_signbit(__x); } 25082: 25082: constexpr bool 25082: signbit(double __x) 25082: { return __builtin_signbit(__x); } 25082: 25082: constexpr bool 25082: signbit(long double __x) 25082: { return __builtin_signbit(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: bool>::__type 25082: signbit(_Tp __x) 25082: { return __x < 0 ? true : false; } 25082: 25082: 25082: 25082: constexpr bool 25082: isgreater(float __x, float __y) 25082: { return __builtin_isgreater(__x, __y); } 25082: 25082: constexpr bool 25082: isgreater(double __x, double __y) 25082: { return __builtin_isgreater(__x, __y); } 25082: 25082: constexpr bool 25082: isgreater(long double __x, long double __y) 25082: { return __builtin_isgreater(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename 25082: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 25082: && __is_arithmetic<_Up>::__value), bool>::__type 25082: isgreater(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return __builtin_isgreater(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr bool 25082: isgreaterequal(float __x, float __y) 25082: { return __builtin_isgreaterequal(__x, __y); } 25082: 25082: constexpr bool 25082: isgreaterequal(double __x, double __y) 25082: { return __builtin_isgreaterequal(__x, __y); } 25082: 25082: constexpr bool 25082: isgreaterequal(long double __x, long double __y) 25082: { return __builtin_isgreaterequal(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename 25082: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 25082: && __is_arithmetic<_Up>::__value), bool>::__type 25082: isgreaterequal(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return __builtin_isgreaterequal(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr bool 25082: isless(float __x, float __y) 25082: { return __builtin_isless(__x, __y); } 25082: 25082: constexpr bool 25082: isless(double __x, double __y) 25082: { return __builtin_isless(__x, __y); } 25082: 25082: constexpr bool 25082: isless(long double __x, long double __y) 25082: { return __builtin_isless(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename 25082: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 25082: && __is_arithmetic<_Up>::__value), bool>::__type 25082: isless(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return __builtin_isless(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr bool 25082: islessequal(float __x, float __y) 25082: { return __builtin_islessequal(__x, __y); } 25082: 25082: constexpr bool 25082: islessequal(double __x, double __y) 25082: { return __builtin_islessequal(__x, __y); } 25082: 25082: constexpr bool 25082: islessequal(long double __x, long double __y) 25082: { return __builtin_islessequal(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename 25082: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 25082: && __is_arithmetic<_Up>::__value), bool>::__type 25082: islessequal(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return __builtin_islessequal(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr bool 25082: islessgreater(float __x, float __y) 25082: { return __builtin_islessgreater(__x, __y); } 25082: 25082: constexpr bool 25082: islessgreater(double __x, double __y) 25082: { return __builtin_islessgreater(__x, __y); } 25082: 25082: constexpr bool 25082: islessgreater(long double __x, long double __y) 25082: { return __builtin_islessgreater(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename 25082: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 25082: && __is_arithmetic<_Up>::__value), bool>::__type 25082: islessgreater(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return __builtin_islessgreater(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr bool 25082: isunordered(float __x, float __y) 25082: { return __builtin_isunordered(__x, __y); } 25082: 25082: constexpr bool 25082: isunordered(double __x, double __y) 25082: { return __builtin_isunordered(__x, __y); } 25082: 25082: constexpr bool 25082: isunordered(long double __x, long double __y) 25082: { return __builtin_isunordered(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename 25082: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 25082: && __is_arithmetic<_Up>::__value), bool>::__type 25082: isunordered(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return __builtin_isunordered(__type(__x), __type(__y)); 25082: } 25082: # 1065 "/usr/include/c++/8/cmath" 3 25082: using ::double_t; 25082: using ::float_t; 25082: 25082: 25082: using ::acosh; 25082: using ::acoshf; 25082: using ::acoshl; 25082: 25082: using ::asinh; 25082: using ::asinhf; 25082: using ::asinhl; 25082: 25082: using ::atanh; 25082: using ::atanhf; 25082: using ::atanhl; 25082: 25082: using ::cbrt; 25082: using ::cbrtf; 25082: using ::cbrtl; 25082: 25082: using ::copysign; 25082: using ::copysignf; 25082: using ::copysignl; 25082: 25082: using ::erf; 25082: using ::erff; 25082: using ::erfl; 25082: 25082: using ::erfc; 25082: using ::erfcf; 25082: using ::erfcl; 25082: 25082: using ::exp2; 25082: using ::exp2f; 25082: using ::exp2l; 25082: 25082: using ::expm1; 25082: using ::expm1f; 25082: using ::expm1l; 25082: 25082: using ::fdim; 25082: using ::fdimf; 25082: using ::fdiml; 25082: 25082: using ::fma; 25082: using ::fmaf; 25082: using ::fmal; 25082: 25082: using ::fmax; 25082: using ::fmaxf; 25082: using ::fmaxl; 25082: 25082: using ::fmin; 25082: using ::fminf; 25082: using ::fminl; 25082: 25082: using ::hypot; 25082: using ::hypotf; 25082: using ::hypotl; 25082: 25082: using ::ilogb; 25082: using ::ilogbf; 25082: using ::ilogbl; 25082: 25082: using ::lgamma; 25082: using ::lgammaf; 25082: using ::lgammal; 25082: 25082: 25082: using ::llrint; 25082: using ::llrintf; 25082: using ::llrintl; 25082: 25082: using ::llround; 25082: using ::llroundf; 25082: using ::llroundl; 25082: 25082: 25082: using ::log1p; 25082: using ::log1pf; 25082: using ::log1pl; 25082: 25082: using ::log2; 25082: using ::log2f; 25082: using ::log2l; 25082: 25082: using ::logb; 25082: using ::logbf; 25082: using ::logbl; 25082: 25082: using ::lrint; 25082: using ::lrintf; 25082: using ::lrintl; 25082: 25082: using ::lround; 25082: using ::lroundf; 25082: using ::lroundl; 25082: 25082: using ::nan; 25082: using ::nanf; 25082: using ::nanl; 25082: 25082: using ::nearbyint; 25082: using ::nearbyintf; 25082: using ::nearbyintl; 25082: 25082: using ::nextafter; 25082: using ::nextafterf; 25082: using ::nextafterl; 25082: 25082: using ::nexttoward; 25082: using ::nexttowardf; 25082: using ::nexttowardl; 25082: 25082: using ::remainder; 25082: using ::remainderf; 25082: using ::remainderl; 25082: 25082: using ::remquo; 25082: using ::remquof; 25082: using ::remquol; 25082: 25082: using ::rint; 25082: using ::rintf; 25082: using ::rintl; 25082: 25082: using ::round; 25082: using ::roundf; 25082: using ::roundl; 25082: 25082: using ::scalbln; 25082: using ::scalblnf; 25082: using ::scalblnl; 25082: 25082: using ::scalbn; 25082: using ::scalbnf; 25082: using ::scalbnl; 25082: 25082: using ::tgamma; 25082: using ::tgammaf; 25082: using ::tgammal; 25082: 25082: using ::trunc; 25082: using ::truncf; 25082: using ::truncl; 25082: 25082: 25082: 25082: constexpr float 25082: acosh(float __x) 25082: { return __builtin_acoshf(__x); } 25082: 25082: constexpr long double 25082: acosh(long double __x) 25082: { return __builtin_acoshl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: acosh(_Tp __x) 25082: { return __builtin_acosh(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: asinh(float __x) 25082: { return __builtin_asinhf(__x); } 25082: 25082: constexpr long double 25082: asinh(long double __x) 25082: { return __builtin_asinhl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: asinh(_Tp __x) 25082: { return __builtin_asinh(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: atanh(float __x) 25082: { return __builtin_atanhf(__x); } 25082: 25082: constexpr long double 25082: atanh(long double __x) 25082: { return __builtin_atanhl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: atanh(_Tp __x) 25082: { return __builtin_atanh(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: cbrt(float __x) 25082: { return __builtin_cbrtf(__x); } 25082: 25082: constexpr long double 25082: cbrt(long double __x) 25082: { return __builtin_cbrtl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: cbrt(_Tp __x) 25082: { return __builtin_cbrt(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: copysign(float __x, float __y) 25082: { return __builtin_copysignf(__x, __y); } 25082: 25082: constexpr long double 25082: copysign(long double __x, long double __y) 25082: { return __builtin_copysignl(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: copysign(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return copysign(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr float 25082: erf(float __x) 25082: { return __builtin_erff(__x); } 25082: 25082: constexpr long double 25082: erf(long double __x) 25082: { return __builtin_erfl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: erf(_Tp __x) 25082: { return __builtin_erf(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: erfc(float __x) 25082: { return __builtin_erfcf(__x); } 25082: 25082: constexpr long double 25082: erfc(long double __x) 25082: { return __builtin_erfcl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: erfc(_Tp __x) 25082: { return __builtin_erfc(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: exp2(float __x) 25082: { return __builtin_exp2f(__x); } 25082: 25082: constexpr long double 25082: exp2(long double __x) 25082: { return __builtin_exp2l(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: exp2(_Tp __x) 25082: { return __builtin_exp2(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: expm1(float __x) 25082: { return __builtin_expm1f(__x); } 25082: 25082: constexpr long double 25082: expm1(long double __x) 25082: { return __builtin_expm1l(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: expm1(_Tp __x) 25082: { return __builtin_expm1(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: fdim(float __x, float __y) 25082: { return __builtin_fdimf(__x, __y); } 25082: 25082: constexpr long double 25082: fdim(long double __x, long double __y) 25082: { return __builtin_fdiml(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: fdim(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return fdim(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr float 25082: fma(float __x, float __y, float __z) 25082: { return __builtin_fmaf(__x, __y, __z); } 25082: 25082: constexpr long double 25082: fma(long double __x, long double __y, long double __z) 25082: { return __builtin_fmal(__x, __y, __z); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type 25082: fma(_Tp __x, _Up __y, _Vp __z) 25082: { 25082: typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; 25082: return fma(__type(__x), __type(__y), __type(__z)); 25082: } 25082: 25082: 25082: 25082: constexpr float 25082: fmax(float __x, float __y) 25082: { return __builtin_fmaxf(__x, __y); } 25082: 25082: constexpr long double 25082: fmax(long double __x, long double __y) 25082: { return __builtin_fmaxl(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: fmax(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return fmax(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr float 25082: fmin(float __x, float __y) 25082: { return __builtin_fminf(__x, __y); } 25082: 25082: constexpr long double 25082: fmin(long double __x, long double __y) 25082: { return __builtin_fminl(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: fmin(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return fmin(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr float 25082: hypot(float __x, float __y) 25082: { return __builtin_hypotf(__x, __y); } 25082: 25082: constexpr long double 25082: hypot(long double __x, long double __y) 25082: { return __builtin_hypotl(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: hypot(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return hypot(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr int 25082: ilogb(float __x) 25082: { return __builtin_ilogbf(__x); } 25082: 25082: constexpr int 25082: ilogb(long double __x) 25082: { return __builtin_ilogbl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr 25082: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: int>::__type 25082: ilogb(_Tp __x) 25082: { return __builtin_ilogb(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: lgamma(float __x) 25082: { return __builtin_lgammaf(__x); } 25082: 25082: constexpr long double 25082: lgamma(long double __x) 25082: { return __builtin_lgammal(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: lgamma(_Tp __x) 25082: { return __builtin_lgamma(__x); } 25082: 25082: 25082: 25082: constexpr long long 25082: llrint(float __x) 25082: { return __builtin_llrintf(__x); } 25082: 25082: constexpr long long 25082: llrint(long double __x) 25082: { return __builtin_llrintl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: long long>::__type 25082: llrint(_Tp __x) 25082: { return __builtin_llrint(__x); } 25082: 25082: 25082: 25082: constexpr long long 25082: llround(float __x) 25082: { return __builtin_llroundf(__x); } 25082: 25082: constexpr long long 25082: llround(long double __x) 25082: { return __builtin_llroundl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: long long>::__type 25082: llround(_Tp __x) 25082: { return __builtin_llround(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: log1p(float __x) 25082: { return __builtin_log1pf(__x); } 25082: 25082: constexpr long double 25082: log1p(long double __x) 25082: { return __builtin_log1pl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: log1p(_Tp __x) 25082: { return __builtin_log1p(__x); } 25082: 25082: 25082: 25082: 25082: constexpr float 25082: log2(float __x) 25082: { return __builtin_log2f(__x); } 25082: 25082: constexpr long double 25082: log2(long double __x) 25082: { return __builtin_log2l(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: log2(_Tp __x) 25082: { return __builtin_log2(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: logb(float __x) 25082: { return __builtin_logbf(__x); } 25082: 25082: constexpr long double 25082: logb(long double __x) 25082: { return __builtin_logbl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: logb(_Tp __x) 25082: { return __builtin_logb(__x); } 25082: 25082: 25082: 25082: constexpr long 25082: lrint(float __x) 25082: { return __builtin_lrintf(__x); } 25082: 25082: constexpr long 25082: lrint(long double __x) 25082: { return __builtin_lrintl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: long>::__type 25082: lrint(_Tp __x) 25082: { return __builtin_lrint(__x); } 25082: 25082: 25082: 25082: constexpr long 25082: lround(float __x) 25082: { return __builtin_lroundf(__x); } 25082: 25082: constexpr long 25082: lround(long double __x) 25082: { return __builtin_lroundl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: long>::__type 25082: lround(_Tp __x) 25082: { return __builtin_lround(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: nearbyint(float __x) 25082: { return __builtin_nearbyintf(__x); } 25082: 25082: constexpr long double 25082: nearbyint(long double __x) 25082: { return __builtin_nearbyintl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: nearbyint(_Tp __x) 25082: { return __builtin_nearbyint(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: nextafter(float __x, float __y) 25082: { return __builtin_nextafterf(__x, __y); } 25082: 25082: constexpr long double 25082: nextafter(long double __x, long double __y) 25082: { return __builtin_nextafterl(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: nextafter(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return nextafter(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: constexpr float 25082: nexttoward(float __x, long double __y) 25082: { return __builtin_nexttowardf(__x, __y); } 25082: 25082: constexpr long double 25082: nexttoward(long double __x, long double __y) 25082: { return __builtin_nexttowardl(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: nexttoward(_Tp __x, long double __y) 25082: { return __builtin_nexttoward(__x, __y); } 25082: 25082: 25082: 25082: constexpr float 25082: remainder(float __x, float __y) 25082: { return __builtin_remainderf(__x, __y); } 25082: 25082: constexpr long double 25082: remainder(long double __x, long double __y) 25082: { return __builtin_remainderl(__x, __y); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: remainder(_Tp __x, _Up __y) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return remainder(__type(__x), __type(__y)); 25082: } 25082: 25082: 25082: 25082: inline float 25082: remquo(float __x, float __y, int* __pquo) 25082: { return __builtin_remquof(__x, __y, __pquo); } 25082: 25082: inline long double 25082: remquo(long double __x, long double __y, int* __pquo) 25082: { return __builtin_remquol(__x, __y, __pquo); } 25082: 25082: 25082: 25082: template 25082: inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 25082: remquo(_Tp __x, _Up __y, int* __pquo) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 25082: return remquo(__type(__x), __type(__y), __pquo); 25082: } 25082: 25082: 25082: 25082: constexpr float 25082: rint(float __x) 25082: { return __builtin_rintf(__x); } 25082: 25082: constexpr long double 25082: rint(long double __x) 25082: { return __builtin_rintl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: rint(_Tp __x) 25082: { return __builtin_rint(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: round(float __x) 25082: { return __builtin_roundf(__x); } 25082: 25082: constexpr long double 25082: round(long double __x) 25082: { return __builtin_roundl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: round(_Tp __x) 25082: { return __builtin_round(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: scalbln(float __x, long __ex) 25082: { return __builtin_scalblnf(__x, __ex); } 25082: 25082: constexpr long double 25082: scalbln(long double __x, long __ex) 25082: { return __builtin_scalblnl(__x, __ex); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: scalbln(_Tp __x, long __ex) 25082: { return __builtin_scalbln(__x, __ex); } 25082: 25082: 25082: 25082: constexpr float 25082: scalbn(float __x, int __ex) 25082: { return __builtin_scalbnf(__x, __ex); } 25082: 25082: constexpr long double 25082: scalbn(long double __x, int __ex) 25082: { return __builtin_scalbnl(__x, __ex); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: scalbn(_Tp __x, int __ex) 25082: { return __builtin_scalbn(__x, __ex); } 25082: 25082: 25082: 25082: constexpr float 25082: tgamma(float __x) 25082: { return __builtin_tgammaf(__x); } 25082: 25082: constexpr long double 25082: tgamma(long double __x) 25082: { return __builtin_tgammal(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: tgamma(_Tp __x) 25082: { return __builtin_tgamma(__x); } 25082: 25082: 25082: 25082: constexpr float 25082: trunc(float __x) 25082: { return __builtin_truncf(__x); } 25082: 25082: constexpr long double 25082: trunc(long double __x) 25082: { return __builtin_truncl(__x); } 25082: 25082: 25082: 25082: template 25082: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 25082: double>::__type 25082: trunc(_Tp __x) 25082: { return __builtin_trunc(__x); } 25082: # 1852 "/usr/include/c++/8/cmath" 3 25082: template 25082: inline _Tp 25082: __hypot3(_Tp __x, _Tp __y, _Tp __z) 25082: { 25082: __x = std::abs(__x); 25082: __y = std::abs(__y); 25082: __z = std::abs(__z); 25082: if (_Tp __a = __x < __y ? __y < __z ? __z : __y : __x < __z ? __z : __x) 25082: return __a * std::sqrt((__x / __a) * (__x / __a) 25082: + (__y / __a) * (__y / __a) 25082: + (__z / __a) * (__z / __a)); 25082: else 25082: return {}; 25082: } 25082: 25082: inline float 25082: hypot(float __x, float __y, float __z) 25082: { return std::__hypot3(__x, __y, __z); } 25082: 25082: inline double 25082: hypot(double __x, double __y, double __z) 25082: { return std::__hypot3(__x, __y, __z); } 25082: 25082: inline long double 25082: hypot(long double __x, long double __y, long double __z) 25082: { return std::__hypot3(__x, __y, __z); } 25082: 25082: template 25082: typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type 25082: hypot(_Tp __x, _Up __y, _Vp __z) 25082: { 25082: using __type = typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type; 25082: return std::__hypot3<__type>(__x, __y, __z); 25082: } 25082: 25082: 25082: 25082: } 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/specfun.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/specfun.h" 3 25082: #pragma GCC visibility push(default) 25082: # 49 "/usr/include/c++/8/bits/specfun.h" 3 25082: # 1 "/usr/include/c++/8/tr1/gamma.tcc" 1 3 25082: # 49 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: # 1 "/usr/include/c++/8/tr1/special_function_util.h" 1 3 25082: # 39 "/usr/include/c++/8/tr1/special_function_util.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 50 "/usr/include/c++/8/tr1/special_function_util.h" 3 25082: namespace __detail 25082: { 25082: 25082: 25082: 25082: template 25082: struct __floating_point_constant 25082: { 25082: static const _Tp __value; 25082: }; 25082: 25082: 25082: 25082: template 25082: struct __numeric_constants 25082: { 25082: 25082: static _Tp __pi() throw() 25082: { return static_cast<_Tp>(3.1415926535897932384626433832795029L); } 25082: 25082: static _Tp __pi_2() throw() 25082: { return static_cast<_Tp>(1.5707963267948966192313216916397514L); } 25082: 25082: static _Tp __pi_3() throw() 25082: { return static_cast<_Tp>(1.0471975511965977461542144610931676L); } 25082: 25082: static _Tp __pi_4() throw() 25082: { return static_cast<_Tp>(0.7853981633974483096156608458198757L); } 25082: 25082: static _Tp __1_pi() throw() 25082: { return static_cast<_Tp>(0.3183098861837906715377675267450287L); } 25082: 25082: static _Tp __2_sqrtpi() throw() 25082: { return static_cast<_Tp>(1.1283791670955125738961589031215452L); } 25082: 25082: static _Tp __sqrt2() throw() 25082: { return static_cast<_Tp>(1.4142135623730950488016887242096981L); } 25082: 25082: static _Tp __sqrt3() throw() 25082: { return static_cast<_Tp>(1.7320508075688772935274463415058723L); } 25082: 25082: static _Tp __sqrtpio2() throw() 25082: { return static_cast<_Tp>(1.2533141373155002512078826424055226L); } 25082: 25082: static _Tp __sqrt1_2() throw() 25082: { return static_cast<_Tp>(0.7071067811865475244008443621048490L); } 25082: 25082: static _Tp __lnpi() throw() 25082: { return static_cast<_Tp>(1.1447298858494001741434273513530587L); } 25082: 25082: static _Tp __gamma_e() throw() 25082: { return static_cast<_Tp>(0.5772156649015328606065120900824024L); } 25082: 25082: static _Tp __euler() throw() 25082: { return static_cast<_Tp>(2.7182818284590452353602874713526625L); } 25082: }; 25082: # 114 "/usr/include/c++/8/tr1/special_function_util.h" 3 25082: template 25082: inline bool __isnan(_Tp __x) 25082: { return std::isnan(__x); } 25082: # 133 "/usr/include/c++/8/tr1/special_function_util.h" 3 25082: } 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 50 "/usr/include/c++/8/tr1/gamma.tcc" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 65 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: namespace __detail 25082: { 25082: # 76 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __bernoulli_series(unsigned int __n) 25082: { 25082: 25082: static const _Tp __num[28] = { 25082: _Tp(1UL), -_Tp(1UL) / _Tp(2UL), 25082: _Tp(1UL) / _Tp(6UL), _Tp(0UL), 25082: -_Tp(1UL) / _Tp(30UL), _Tp(0UL), 25082: _Tp(1UL) / _Tp(42UL), _Tp(0UL), 25082: -_Tp(1UL) / _Tp(30UL), _Tp(0UL), 25082: _Tp(5UL) / _Tp(66UL), _Tp(0UL), 25082: -_Tp(691UL) / _Tp(2730UL), _Tp(0UL), 25082: _Tp(7UL) / _Tp(6UL), _Tp(0UL), 25082: -_Tp(3617UL) / _Tp(510UL), _Tp(0UL), 25082: _Tp(43867UL) / _Tp(798UL), _Tp(0UL), 25082: -_Tp(174611) / _Tp(330UL), _Tp(0UL), 25082: _Tp(854513UL) / _Tp(138UL), _Tp(0UL), 25082: -_Tp(236364091UL) / _Tp(2730UL), _Tp(0UL), 25082: _Tp(8553103UL) / _Tp(6UL), _Tp(0UL) 25082: }; 25082: 25082: if (__n == 0) 25082: return _Tp(1); 25082: 25082: if (__n == 1) 25082: return -_Tp(1) / _Tp(2); 25082: 25082: 25082: if (__n % 2 == 1) 25082: return _Tp(0); 25082: 25082: 25082: if (__n < 28) 25082: return __num[__n]; 25082: 25082: 25082: _Tp __fact = _Tp(1); 25082: if ((__n / 2) % 2 == 0) 25082: __fact *= _Tp(-1); 25082: for (unsigned int __k = 1; __k <= __n; ++__k) 25082: __fact *= __k / (_Tp(2) * __numeric_constants<_Tp>::__pi()); 25082: __fact *= _Tp(2); 25082: 25082: _Tp __sum = _Tp(0); 25082: for (unsigned int __i = 1; __i < 1000; ++__i) 25082: { 25082: _Tp __term = std::pow(_Tp(__i), -_Tp(__n)); 25082: if (__term < std::numeric_limits<_Tp>::epsilon()) 25082: break; 25082: __sum += __term; 25082: } 25082: 25082: return __fact * __sum; 25082: } 25082: # 139 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: inline _Tp 25082: __bernoulli(int __n) 25082: { return __bernoulli_series<_Tp>(__n); } 25082: # 153 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __log_gamma_bernoulli(_Tp __x) 25082: { 25082: _Tp __lg = (__x - _Tp(0.5L)) * std::log(__x) - __x 25082: + _Tp(0.5L) * std::log(_Tp(2) 25082: * __numeric_constants<_Tp>::__pi()); 25082: 25082: const _Tp __xx = __x * __x; 25082: _Tp __help = _Tp(1) / __x; 25082: for ( unsigned int __i = 1; __i < 20; ++__i ) 25082: { 25082: const _Tp __2i = _Tp(2 * __i); 25082: __help /= __2i * (__2i - _Tp(1)) * __xx; 25082: __lg += __bernoulli<_Tp>(2 * __i) * __help; 25082: } 25082: 25082: return __lg; 25082: } 25082: # 181 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __log_gamma_lanczos(_Tp __x) 25082: { 25082: const _Tp __xm1 = __x - _Tp(1); 25082: 25082: static const _Tp __lanczos_cheb_7[9] = { 25082: _Tp( 0.99999999999980993227684700473478L), 25082: _Tp( 676.520368121885098567009190444019L), 25082: _Tp(-1259.13921672240287047156078755283L), 25082: _Tp( 771.3234287776530788486528258894L), 25082: _Tp(-176.61502916214059906584551354L), 25082: _Tp( 12.507343278686904814458936853L), 25082: _Tp(-0.13857109526572011689554707L), 25082: _Tp( 9.984369578019570859563e-6L), 25082: _Tp( 1.50563273514931155834e-7L) 25082: }; 25082: 25082: static const _Tp __LOGROOT2PI 25082: = _Tp(0.9189385332046727417803297364056176L); 25082: 25082: _Tp __sum = __lanczos_cheb_7[0]; 25082: for(unsigned int __k = 1; __k < 9; ++__k) 25082: __sum += __lanczos_cheb_7[__k] / (__xm1 + __k); 25082: 25082: const _Tp __term1 = (__xm1 + _Tp(0.5L)) 25082: * std::log((__xm1 + _Tp(7.5L)) 25082: / __numeric_constants<_Tp>::__euler()); 25082: const _Tp __term2 = __LOGROOT2PI + std::log(__sum); 25082: const _Tp __result = __term1 + (__term2 - _Tp(7)); 25082: 25082: return __result; 25082: } 25082: # 225 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __log_gamma(_Tp __x) 25082: { 25082: if (__x > _Tp(0.5L)) 25082: return __log_gamma_lanczos(__x); 25082: else 25082: { 25082: const _Tp __sin_fact 25082: = std::abs(std::sin(__numeric_constants<_Tp>::__pi() * __x)); 25082: if (__sin_fact == _Tp(0)) 25082: std::__throw_domain_error(("Argument is nonpositive integer " "in __log_gamma") 25082: ); 25082: return __numeric_constants<_Tp>::__lnpi() 25082: - std::log(__sin_fact) 25082: - __log_gamma_lanczos(_Tp(1) - __x); 25082: } 25082: } 25082: # 252 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __log_gamma_sign(_Tp __x) 25082: { 25082: if (__x > _Tp(0)) 25082: return _Tp(1); 25082: else 25082: { 25082: const _Tp __sin_fact 25082: = std::sin(__numeric_constants<_Tp>::__pi() * __x); 25082: if (__sin_fact > _Tp(0)) 25082: return (1); 25082: else if (__sin_fact < _Tp(0)) 25082: return -_Tp(1); 25082: else 25082: return _Tp(0); 25082: } 25082: } 25082: # 283 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __log_bincoef(unsigned int __n, unsigned int __k) 25082: { 25082: 25082: static const _Tp __max_bincoeff 25082: = std::numeric_limits<_Tp>::max_exponent10 25082: * std::log(_Tp(10)) - _Tp(1); 25082: 25082: _Tp __coeff = ::std::lgamma(_Tp(1 + __n)) 25082: - ::std::lgamma(_Tp(1 + __k)) 25082: - ::std::lgamma(_Tp(1 + __n - __k)); 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 314 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __bincoef(unsigned int __n, unsigned int __k) 25082: { 25082: 25082: static const _Tp __max_bincoeff 25082: = std::numeric_limits<_Tp>::max_exponent10 25082: * std::log(_Tp(10)) - _Tp(1); 25082: 25082: const _Tp __log_coeff = __log_bincoef<_Tp>(__n, __k); 25082: if (__log_coeff > __max_bincoeff) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else 25082: return std::exp(__log_coeff); 25082: } 25082: # 337 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: inline _Tp 25082: __gamma(_Tp __x) 25082: { return std::exp(__log_gamma(__x)); } 25082: # 356 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __psi_series(_Tp __x) 25082: { 25082: _Tp __sum = -__numeric_constants<_Tp>::__gamma_e() - _Tp(1) / __x; 25082: const unsigned int __max_iter = 100000; 25082: for (unsigned int __k = 1; __k < __max_iter; ++__k) 25082: { 25082: const _Tp __term = __x / (__k * (__k + __x)); 25082: __sum += __term; 25082: if (std::abs(__term / __sum) < std::numeric_limits<_Tp>::epsilon()) 25082: break; 25082: } 25082: return __sum; 25082: } 25082: # 386 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __psi_asymp(_Tp __x) 25082: { 25082: _Tp __sum = std::log(__x) - _Tp(0.5L) / __x; 25082: const _Tp __xx = __x * __x; 25082: _Tp __xp = __xx; 25082: const unsigned int __max_iter = 100; 25082: for (unsigned int __k = 1; __k < __max_iter; ++__k) 25082: { 25082: const _Tp __term = __bernoulli<_Tp>(2 * __k) / (2 * __k * __xp); 25082: __sum -= __term; 25082: if (std::abs(__term / __sum) < std::numeric_limits<_Tp>::epsilon()) 25082: break; 25082: __xp *= __xx; 25082: } 25082: return __sum; 25082: } 25082: # 417 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __psi(_Tp __x) 25082: { 25082: const int __n = static_cast(__x + 0.5L); 25082: const _Tp __eps = _Tp(4) * std::numeric_limits<_Tp>::epsilon(); 25082: if (__n <= 0 && std::abs(__x - _Tp(__n)) < __eps) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__x < _Tp(0)) 25082: { 25082: const _Tp __pi = __numeric_constants<_Tp>::__pi(); 25082: return __psi(_Tp(1) - __x) 25082: - __pi * std::cos(__pi * __x) / std::sin(__pi * __x); 25082: } 25082: else if (__x > _Tp(100)) 25082: return __psi_asymp(__x); 25082: else 25082: return __psi_series(__x); 25082: } 25082: # 446 "/usr/include/c++/8/tr1/gamma.tcc" 3 25082: template 25082: _Tp 25082: __psi(unsigned int __n, _Tp __x) 25082: { 25082: if (__x <= _Tp(0)) 25082: std::__throw_domain_error(("Argument out of range " "in __psi") 25082: ); 25082: else if (__n == 0) 25082: return __psi(__x); 25082: else 25082: { 25082: const _Tp __hzeta = __hurwitz_zeta(_Tp(__n + 1), __x); 25082: 25082: const _Tp __ln_nfact = ::std::lgamma(_Tp(__n + 1)); 25082: 25082: 25082: 25082: _Tp __result = std::exp(__ln_nfact) * __hzeta; 25082: if (__n % 2 == 1) 25082: __result = -__result; 25082: return __result; 25082: } 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 50 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: # 1 "/usr/include/c++/8/tr1/bessel_function.tcc" 1 3 25082: # 49 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: # 1 "/usr/include/c++/8/tr1/special_function_util.h" 1 3 25082: # 50 "/usr/include/c++/8/tr1/bessel_function.tcc" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 67 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: namespace __detail 25082: { 25082: # 94 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: template 25082: void 25082: __gamma_temme(_Tp __mu, 25082: _Tp & __gam1, _Tp & __gam2, _Tp & __gampl, _Tp & __gammi) 25082: { 25082: 25082: __gampl = _Tp(1) / ::std::tgamma(_Tp(1) + __mu); 25082: __gammi = _Tp(1) / ::std::tgamma(_Tp(1) - __mu); 25082: 25082: 25082: 25082: 25082: 25082: if (std::abs(__mu) < std::numeric_limits<_Tp>::epsilon()) 25082: __gam1 = -_Tp(__numeric_constants<_Tp>::__gamma_e()); 25082: else 25082: __gam1 = (__gammi - __gampl) / (_Tp(2) * __mu); 25082: 25082: __gam2 = (__gammi + __gampl) / (_Tp(2)); 25082: 25082: return; 25082: } 25082: # 132 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: template 25082: void 25082: __bessel_jn(_Tp __nu, _Tp __x, 25082: _Tp & __Jnu, _Tp & __Nnu, _Tp & __Jpnu, _Tp & __Npnu) 25082: { 25082: if (__x == _Tp(0)) 25082: { 25082: if (__nu == _Tp(0)) 25082: { 25082: __Jnu = _Tp(1); 25082: __Jpnu = _Tp(0); 25082: } 25082: else if (__nu == _Tp(1)) 25082: { 25082: __Jnu = _Tp(0); 25082: __Jpnu = _Tp(0.5L); 25082: } 25082: else 25082: { 25082: __Jnu = _Tp(0); 25082: __Jpnu = _Tp(0); 25082: } 25082: __Nnu = -std::numeric_limits<_Tp>::infinity(); 25082: __Npnu = std::numeric_limits<_Tp>::infinity(); 25082: return; 25082: } 25082: 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: 25082: 25082: 25082: 25082: const _Tp __fp_min = std::sqrt(std::numeric_limits<_Tp>::min()); 25082: const int __max_iter = 15000; 25082: const _Tp __x_min = _Tp(2); 25082: 25082: const int __nl = (__x < __x_min 25082: ? static_cast(__nu + _Tp(0.5L)) 25082: : std::max(0, static_cast(__nu - __x + _Tp(1.5L)))); 25082: 25082: const _Tp __mu = __nu - __nl; 25082: const _Tp __mu2 = __mu * __mu; 25082: const _Tp __xi = _Tp(1) / __x; 25082: const _Tp __xi2 = _Tp(2) * __xi; 25082: _Tp __w = __xi2 / __numeric_constants<_Tp>::__pi(); 25082: int __isign = 1; 25082: _Tp __h = __nu * __xi; 25082: if (__h < __fp_min) 25082: __h = __fp_min; 25082: _Tp __b = __xi2 * __nu; 25082: _Tp __d = _Tp(0); 25082: _Tp __c = __h; 25082: int __i; 25082: for (__i = 1; __i <= __max_iter; ++__i) 25082: { 25082: __b += __xi2; 25082: __d = __b - __d; 25082: if (std::abs(__d) < __fp_min) 25082: __d = __fp_min; 25082: __c = __b - _Tp(1) / __c; 25082: if (std::abs(__c) < __fp_min) 25082: __c = __fp_min; 25082: __d = _Tp(1) / __d; 25082: const _Tp __del = __c * __d; 25082: __h *= __del; 25082: if (__d < _Tp(0)) 25082: __isign = -__isign; 25082: if (std::abs(__del - _Tp(1)) < __eps) 25082: break; 25082: } 25082: if (__i > __max_iter) 25082: std::__throw_runtime_error(("Argument x too large in __bessel_jn; " "try asymptotic expansion.") 25082: ); 25082: _Tp __Jnul = __isign * __fp_min; 25082: _Tp __Jpnul = __h * __Jnul; 25082: _Tp __Jnul1 = __Jnul; 25082: _Tp __Jpnu1 = __Jpnul; 25082: _Tp __fact = __nu * __xi; 25082: for ( int __l = __nl; __l >= 1; --__l ) 25082: { 25082: const _Tp __Jnutemp = __fact * __Jnul + __Jpnul; 25082: __fact -= __xi; 25082: __Jpnul = __fact * __Jnutemp - __Jnul; 25082: __Jnul = __Jnutemp; 25082: } 25082: if (__Jnul == _Tp(0)) 25082: __Jnul = __eps; 25082: _Tp __f= __Jpnul / __Jnul; 25082: _Tp __Nmu, __Nnu1, __Npmu, __Jmu; 25082: if (__x < __x_min) 25082: { 25082: const _Tp __x2 = __x / _Tp(2); 25082: const _Tp __pimu = __numeric_constants<_Tp>::__pi() * __mu; 25082: _Tp __fact = (std::abs(__pimu) < __eps 25082: ? _Tp(1) : __pimu / std::sin(__pimu)); 25082: _Tp __d = -std::log(__x2); 25082: _Tp __e = __mu * __d; 25082: _Tp __fact2 = (std::abs(__e) < __eps 25082: ? _Tp(1) : std::sinh(__e) / __e); 25082: _Tp __gam1, __gam2, __gampl, __gammi; 25082: __gamma_temme(__mu, __gam1, __gam2, __gampl, __gammi); 25082: _Tp __ff = (_Tp(2) / __numeric_constants<_Tp>::__pi()) 25082: * __fact * (__gam1 * std::cosh(__e) + __gam2 * __fact2 * __d); 25082: __e = std::exp(__e); 25082: _Tp __p = __e / (__numeric_constants<_Tp>::__pi() * __gampl); 25082: _Tp __q = _Tp(1) / (__e * __numeric_constants<_Tp>::__pi() * __gammi); 25082: const _Tp __pimu2 = __pimu / _Tp(2); 25082: _Tp __fact3 = (std::abs(__pimu2) < __eps 25082: ? _Tp(1) : std::sin(__pimu2) / __pimu2 ); 25082: _Tp __r = __numeric_constants<_Tp>::__pi() * __pimu2 * __fact3 * __fact3; 25082: _Tp __c = _Tp(1); 25082: __d = -__x2 * __x2; 25082: _Tp __sum = __ff + __r * __q; 25082: _Tp __sum1 = __p; 25082: for (__i = 1; __i <= __max_iter; ++__i) 25082: { 25082: __ff = (__i * __ff + __p + __q) / (__i * __i - __mu2); 25082: __c *= __d / _Tp(__i); 25082: __p /= _Tp(__i) - __mu; 25082: __q /= _Tp(__i) + __mu; 25082: const _Tp __del = __c * (__ff + __r * __q); 25082: __sum += __del; 25082: const _Tp __del1 = __c * __p - __i * __del; 25082: __sum1 += __del1; 25082: if ( std::abs(__del) < __eps * (_Tp(1) + std::abs(__sum)) ) 25082: break; 25082: } 25082: if ( __i > __max_iter ) 25082: std::__throw_runtime_error(("Bessel y series failed to converge " "in __bessel_jn.") 25082: ); 25082: __Nmu = -__sum; 25082: __Nnu1 = -__sum1 * __xi2; 25082: __Npmu = __mu * __xi * __Nmu - __Nnu1; 25082: __Jmu = __w / (__Npmu - __f * __Nmu); 25082: } 25082: else 25082: { 25082: _Tp __a = _Tp(0.25L) - __mu2; 25082: _Tp __q = _Tp(1); 25082: _Tp __p = -__xi / _Tp(2); 25082: _Tp __br = _Tp(2) * __x; 25082: _Tp __bi = _Tp(2); 25082: _Tp __fact = __a * __xi / (__p * __p + __q * __q); 25082: _Tp __cr = __br + __q * __fact; 25082: _Tp __ci = __bi + __p * __fact; 25082: _Tp __den = __br * __br + __bi * __bi; 25082: _Tp __dr = __br / __den; 25082: _Tp __di = -__bi / __den; 25082: _Tp __dlr = __cr * __dr - __ci * __di; 25082: _Tp __dli = __cr * __di + __ci * __dr; 25082: _Tp __temp = __p * __dlr - __q * __dli; 25082: __q = __p * __dli + __q * __dlr; 25082: __p = __temp; 25082: int __i; 25082: for (__i = 2; __i <= __max_iter; ++__i) 25082: { 25082: __a += _Tp(2 * (__i - 1)); 25082: __bi += _Tp(2); 25082: __dr = __a * __dr + __br; 25082: __di = __a * __di + __bi; 25082: if (std::abs(__dr) + std::abs(__di) < __fp_min) 25082: __dr = __fp_min; 25082: __fact = __a / (__cr * __cr + __ci * __ci); 25082: __cr = __br + __cr * __fact; 25082: __ci = __bi - __ci * __fact; 25082: if (std::abs(__cr) + std::abs(__ci) < __fp_min) 25082: __cr = __fp_min; 25082: __den = __dr * __dr + __di * __di; 25082: __dr /= __den; 25082: __di /= -__den; 25082: __dlr = __cr * __dr - __ci * __di; 25082: __dli = __cr * __di + __ci * __dr; 25082: __temp = __p * __dlr - __q * __dli; 25082: __q = __p * __dli + __q * __dlr; 25082: __p = __temp; 25082: if (std::abs(__dlr - _Tp(1)) + std::abs(__dli) < __eps) 25082: break; 25082: } 25082: if (__i > __max_iter) 25082: std::__throw_runtime_error(("Lentz's method failed " "in __bessel_jn.") 25082: ); 25082: const _Tp __gam = (__p - __f) / __q; 25082: __Jmu = std::sqrt(__w / ((__p - __f) * __gam + __q)); 25082: 25082: __Jmu = ::std::copysign(__Jmu, __Jnul); 25082: 25082: 25082: 25082: 25082: __Nmu = __gam * __Jmu; 25082: __Npmu = (__p + __q / __gam) * __Nmu; 25082: __Nnu1 = __mu * __xi * __Nmu - __Npmu; 25082: } 25082: __fact = __Jmu / __Jnul; 25082: __Jnu = __fact * __Jnul1; 25082: __Jpnu = __fact * __Jpnu1; 25082: for (__i = 1; __i <= __nl; ++__i) 25082: { 25082: const _Tp __Nnutemp = (__mu + __i) * __xi2 * __Nnu1 - __Nmu; 25082: __Nmu = __Nnu1; 25082: __Nnu1 = __Nnutemp; 25082: } 25082: __Nnu = __Nmu; 25082: __Npnu = __nu * __xi * __Nmu - __Nnu1; 25082: 25082: return; 25082: } 25082: # 357 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: template 25082: void 25082: __cyl_bessel_jn_asymp(_Tp __nu, _Tp __x, _Tp & __Jnu, _Tp & __Nnu) 25082: { 25082: const _Tp __mu = _Tp(4) * __nu * __nu; 25082: const _Tp __mum1 = __mu - _Tp(1); 25082: const _Tp __mum9 = __mu - _Tp(9); 25082: const _Tp __mum25 = __mu - _Tp(25); 25082: const _Tp __mum49 = __mu - _Tp(49); 25082: const _Tp __xx = _Tp(64) * __x * __x; 25082: const _Tp __P = _Tp(1) - __mum1 * __mum9 / (_Tp(2) * __xx) 25082: * (_Tp(1) - __mum25 * __mum49 / (_Tp(12) * __xx)); 25082: const _Tp __Q = __mum1 / (_Tp(8) * __x) 25082: * (_Tp(1) - __mum9 * __mum25 / (_Tp(6) * __xx)); 25082: 25082: const _Tp __chi = __x - (__nu + _Tp(0.5L)) 25082: * __numeric_constants<_Tp>::__pi_2(); 25082: const _Tp __c = std::cos(__chi); 25082: const _Tp __s = std::sin(__chi); 25082: 25082: const _Tp __coef = std::sqrt(_Tp(2) 25082: / (__numeric_constants<_Tp>::__pi() * __x)); 25082: __Jnu = __coef * (__c * __P - __s * __Q); 25082: __Nnu = __coef * (__s * __P + __c * __Q); 25082: 25082: return; 25082: } 25082: # 413 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: template 25082: _Tp 25082: __cyl_bessel_ij_series(_Tp __nu, _Tp __x, _Tp __sgn, 25082: unsigned int __max_iter) 25082: { 25082: if (__x == _Tp(0)) 25082: return __nu == _Tp(0) ? _Tp(1) : _Tp(0); 25082: 25082: const _Tp __x2 = __x / _Tp(2); 25082: _Tp __fact = __nu * std::log(__x2); 25082: 25082: __fact -= ::std::lgamma(__nu + _Tp(1)); 25082: 25082: 25082: 25082: __fact = std::exp(__fact); 25082: const _Tp __xx4 = __sgn * __x2 * __x2; 25082: _Tp __Jn = _Tp(1); 25082: _Tp __term = _Tp(1); 25082: 25082: for (unsigned int __i = 1; __i < __max_iter; ++__i) 25082: { 25082: __term *= __xx4 / (_Tp(__i) * (__nu + _Tp(__i))); 25082: __Jn += __term; 25082: if (std::abs(__term / __Jn) < std::numeric_limits<_Tp>::epsilon()) 25082: break; 25082: } 25082: 25082: return __fact * __Jn; 25082: } 25082: # 459 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: template 25082: _Tp 25082: __cyl_bessel_j(_Tp __nu, _Tp __x) 25082: { 25082: if (__nu < _Tp(0) || __x < _Tp(0)) 25082: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_j.") 25082: ); 25082: else if (__isnan(__nu) || __isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__x * __x < _Tp(10) * (__nu + _Tp(1))) 25082: return __cyl_bessel_ij_series(__nu, __x, -_Tp(1), 200); 25082: else if (__x > _Tp(1000)) 25082: { 25082: _Tp __J_nu, __N_nu; 25082: __cyl_bessel_jn_asymp(__nu, __x, __J_nu, __N_nu); 25082: return __J_nu; 25082: } 25082: else 25082: { 25082: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu; 25082: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu); 25082: return __J_nu; 25082: } 25082: } 25082: # 501 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: template 25082: _Tp 25082: __cyl_neumann_n(_Tp __nu, _Tp __x) 25082: { 25082: if (__nu < _Tp(0) || __x < _Tp(0)) 25082: std::__throw_domain_error(("Bad argument " "in __cyl_neumann_n.") 25082: ); 25082: else if (__isnan(__nu) || __isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__x > _Tp(1000)) 25082: { 25082: _Tp __J_nu, __N_nu; 25082: __cyl_bessel_jn_asymp(__nu, __x, __J_nu, __N_nu); 25082: return __N_nu; 25082: } 25082: else 25082: { 25082: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu; 25082: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu); 25082: return __N_nu; 25082: } 25082: } 25082: # 538 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: template 25082: void 25082: __sph_bessel_jn(unsigned int __n, _Tp __x, 25082: _Tp & __j_n, _Tp & __n_n, _Tp & __jp_n, _Tp & __np_n) 25082: { 25082: const _Tp __nu = _Tp(__n) + _Tp(0.5L); 25082: 25082: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu; 25082: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu); 25082: 25082: const _Tp __factor = __numeric_constants<_Tp>::__sqrtpio2() 25082: / std::sqrt(__x); 25082: 25082: __j_n = __factor * __J_nu; 25082: __n_n = __factor * __N_nu; 25082: __jp_n = __factor * __Jp_nu - __j_n / (_Tp(2) * __x); 25082: __np_n = __factor * __Np_nu - __n_n / (_Tp(2) * __x); 25082: 25082: return; 25082: } 25082: # 573 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: template 25082: _Tp 25082: __sph_bessel(unsigned int __n, _Tp __x) 25082: { 25082: if (__x < _Tp(0)) 25082: std::__throw_domain_error(("Bad argument " "in __sph_bessel.") 25082: ); 25082: else if (__isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__x == _Tp(0)) 25082: { 25082: if (__n == 0) 25082: return _Tp(1); 25082: else 25082: return _Tp(0); 25082: } 25082: else 25082: { 25082: _Tp __j_n, __n_n, __jp_n, __np_n; 25082: __sph_bessel_jn(__n, __x, __j_n, __n_n, __jp_n, __np_n); 25082: return __j_n; 25082: } 25082: } 25082: # 611 "/usr/include/c++/8/tr1/bessel_function.tcc" 3 25082: template 25082: _Tp 25082: __sph_neumann(unsigned int __n, _Tp __x) 25082: { 25082: if (__x < _Tp(0)) 25082: std::__throw_domain_error(("Bad argument " "in __sph_neumann.") 25082: ); 25082: else if (__isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__x == _Tp(0)) 25082: return -std::numeric_limits<_Tp>::infinity(); 25082: else 25082: { 25082: _Tp __j_n, __n_n, __jp_n, __np_n; 25082: __sph_bessel_jn(__n, __x, __j_n, __n_n, __jp_n, __np_n); 25082: return __n_n; 25082: } 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 51 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: # 1 "/usr/include/c++/8/tr1/beta_function.tcc" 1 3 25082: # 49 "/usr/include/c++/8/tr1/beta_function.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 65 "/usr/include/c++/8/tr1/beta_function.tcc" 3 25082: namespace __detail 25082: { 25082: # 79 "/usr/include/c++/8/tr1/beta_function.tcc" 3 25082: template 25082: _Tp 25082: __beta_gamma(_Tp __x, _Tp __y) 25082: { 25082: 25082: _Tp __bet; 25082: 25082: if (__x > __y) 25082: { 25082: __bet = ::std::tgamma(__x) 25082: / ::std::tgamma(__x + __y); 25082: __bet *= ::std::tgamma(__y); 25082: } 25082: else 25082: { 25082: __bet = ::std::tgamma(__y) 25082: / ::std::tgamma(__x + __y); 25082: __bet *= ::std::tgamma(__x); 25082: } 25082: # 111 "/usr/include/c++/8/tr1/beta_function.tcc" 3 25082: return __bet; 25082: } 25082: # 127 "/usr/include/c++/8/tr1/beta_function.tcc" 3 25082: template 25082: _Tp 25082: __beta_lgamma(_Tp __x, _Tp __y) 25082: { 25082: 25082: _Tp __bet = ::std::lgamma(__x) 25082: + ::std::lgamma(__y) 25082: - ::std::lgamma(__x + __y); 25082: 25082: 25082: 25082: 25082: 25082: __bet = std::exp(__bet); 25082: return __bet; 25082: } 25082: # 158 "/usr/include/c++/8/tr1/beta_function.tcc" 3 25082: template 25082: _Tp 25082: __beta_product(_Tp __x, _Tp __y) 25082: { 25082: 25082: _Tp __bet = (__x + __y) / (__x * __y); 25082: 25082: unsigned int __max_iter = 1000000; 25082: for (unsigned int __k = 1; __k < __max_iter; ++__k) 25082: { 25082: _Tp __term = (_Tp(1) + (__x + __y) / __k) 25082: / ((_Tp(1) + __x / __k) * (_Tp(1) + __y / __k)); 25082: __bet *= __term; 25082: } 25082: 25082: return __bet; 25082: } 25082: # 189 "/usr/include/c++/8/tr1/beta_function.tcc" 3 25082: template 25082: inline _Tp 25082: __beta(_Tp __x, _Tp __y) 25082: { 25082: if (__isnan(__x) || __isnan(__y)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else 25082: return __beta_lgamma(__x, __y); 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 52 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: # 1 "/usr/include/c++/8/tr1/ell_integral.tcc" 1 3 25082: # 45 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 59 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: namespace __detail 25082: { 25082: # 76 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __ellint_rf(_Tp __x, _Tp __y, _Tp __z) 25082: { 25082: const _Tp __min = std::numeric_limits<_Tp>::min(); 25082: const _Tp __max = std::numeric_limits<_Tp>::max(); 25082: const _Tp __lolim = _Tp(5) * __min; 25082: const _Tp __uplim = __max / _Tp(5); 25082: 25082: if (__x < _Tp(0) || __y < _Tp(0) || __z < _Tp(0)) 25082: std::__throw_domain_error(("Argument less than zero " "in __ellint_rf.") 25082: ); 25082: else if (__x + __y < __lolim || __x + __z < __lolim 25082: || __y + __z < __lolim) 25082: std::__throw_domain_error(("Argument too small in __ellint_rf")); 25082: else 25082: { 25082: const _Tp __c0 = _Tp(1) / _Tp(4); 25082: const _Tp __c1 = _Tp(1) / _Tp(24); 25082: const _Tp __c2 = _Tp(1) / _Tp(10); 25082: const _Tp __c3 = _Tp(3) / _Tp(44); 25082: const _Tp __c4 = _Tp(1) / _Tp(14); 25082: 25082: _Tp __xn = __x; 25082: _Tp __yn = __y; 25082: _Tp __zn = __z; 25082: 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: const _Tp __errtol = std::pow(__eps, _Tp(1) / _Tp(6)); 25082: _Tp __mu; 25082: _Tp __xndev, __yndev, __zndev; 25082: 25082: const unsigned int __max_iter = 100; 25082: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) 25082: { 25082: __mu = (__xn + __yn + __zn) / _Tp(3); 25082: __xndev = 2 - (__mu + __xn) / __mu; 25082: __yndev = 2 - (__mu + __yn) / __mu; 25082: __zndev = 2 - (__mu + __zn) / __mu; 25082: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev)); 25082: __epsilon = std::max(__epsilon, std::abs(__zndev)); 25082: if (__epsilon < __errtol) 25082: break; 25082: const _Tp __xnroot = std::sqrt(__xn); 25082: const _Tp __ynroot = std::sqrt(__yn); 25082: const _Tp __znroot = std::sqrt(__zn); 25082: const _Tp __lambda = __xnroot * (__ynroot + __znroot) 25082: + __ynroot * __znroot; 25082: __xn = __c0 * (__xn + __lambda); 25082: __yn = __c0 * (__yn + __lambda); 25082: __zn = __c0 * (__zn + __lambda); 25082: } 25082: 25082: const _Tp __e2 = __xndev * __yndev - __zndev * __zndev; 25082: const _Tp __e3 = __xndev * __yndev * __zndev; 25082: const _Tp __s = _Tp(1) + (__c1 * __e2 - __c2 - __c3 * __e3) * __e2 25082: + __c4 * __e3; 25082: 25082: return __s / std::sqrt(__mu); 25082: } 25082: } 25082: # 155 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __comp_ellint_1_series(_Tp __k) 25082: { 25082: 25082: const _Tp __kk = __k * __k; 25082: 25082: _Tp __term = __kk / _Tp(4); 25082: _Tp __sum = _Tp(1) + __term; 25082: 25082: const unsigned int __max_iter = 1000; 25082: for (unsigned int __i = 2; __i < __max_iter; ++__i) 25082: { 25082: __term *= (2 * __i - 1) * __kk / (2 * __i); 25082: if (__term < std::numeric_limits<_Tp>::epsilon()) 25082: break; 25082: __sum += __term; 25082: } 25082: 25082: return __numeric_constants<_Tp>::__pi_2() * __sum; 25082: } 25082: # 193 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __comp_ellint_1(_Tp __k) 25082: { 25082: 25082: if (__isnan(__k)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (std::abs(__k) >= _Tp(1)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else 25082: return __ellint_rf(_Tp(0), _Tp(1) - __k * __k, _Tp(1)); 25082: } 25082: # 221 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __ellint_1(_Tp __k, _Tp __phi) 25082: { 25082: 25082: if (__isnan(__k) || __isnan(__phi)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (std::abs(__k) > _Tp(1)) 25082: std::__throw_domain_error(("Bad argument in __ellint_1.")); 25082: else 25082: { 25082: 25082: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi() 25082: + _Tp(0.5L)); 25082: const _Tp __phi_red = __phi 25082: - __n * __numeric_constants<_Tp>::__pi(); 25082: 25082: const _Tp __s = std::sin(__phi_red); 25082: const _Tp __c = std::cos(__phi_red); 25082: 25082: const _Tp __F = __s 25082: * __ellint_rf(__c * __c, 25082: _Tp(1) - __k * __k * __s * __s, _Tp(1)); 25082: 25082: if (__n == 0) 25082: return __F; 25082: else 25082: return __F + _Tp(2) * __n * __comp_ellint_1(__k); 25082: } 25082: } 25082: # 268 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __comp_ellint_2_series(_Tp __k) 25082: { 25082: 25082: const _Tp __kk = __k * __k; 25082: 25082: _Tp __term = __kk; 25082: _Tp __sum = __term; 25082: 25082: const unsigned int __max_iter = 1000; 25082: for (unsigned int __i = 2; __i < __max_iter; ++__i) 25082: { 25082: const _Tp __i2m = 2 * __i - 1; 25082: const _Tp __i2 = 2 * __i; 25082: __term *= __i2m * __i2m * __kk / (__i2 * __i2); 25082: if (__term < std::numeric_limits<_Tp>::epsilon()) 25082: break; 25082: __sum += __term / __i2m; 25082: } 25082: 25082: return __numeric_constants<_Tp>::__pi_2() * (_Tp(1) - __sum); 25082: } 25082: # 316 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __ellint_rd(_Tp __x, _Tp __y, _Tp __z) 25082: { 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6)); 25082: const _Tp __min = std::numeric_limits<_Tp>::min(); 25082: const _Tp __max = std::numeric_limits<_Tp>::max(); 25082: const _Tp __lolim = _Tp(2) / std::pow(__max, _Tp(2) / _Tp(3)); 25082: const _Tp __uplim = std::pow(_Tp(0.1L) * __errtol / __min, _Tp(2) / _Tp(3)); 25082: 25082: if (__x < _Tp(0) || __y < _Tp(0)) 25082: std::__throw_domain_error(("Argument less than zero " "in __ellint_rd.") 25082: ); 25082: else if (__x + __y < __lolim || __z < __lolim) 25082: std::__throw_domain_error(("Argument too small " "in __ellint_rd.") 25082: ); 25082: else 25082: { 25082: const _Tp __c0 = _Tp(1) / _Tp(4); 25082: const _Tp __c1 = _Tp(3) / _Tp(14); 25082: const _Tp __c2 = _Tp(1) / _Tp(6); 25082: const _Tp __c3 = _Tp(9) / _Tp(22); 25082: const _Tp __c4 = _Tp(3) / _Tp(26); 25082: 25082: _Tp __xn = __x; 25082: _Tp __yn = __y; 25082: _Tp __zn = __z; 25082: _Tp __sigma = _Tp(0); 25082: _Tp __power4 = _Tp(1); 25082: 25082: _Tp __mu; 25082: _Tp __xndev, __yndev, __zndev; 25082: 25082: const unsigned int __max_iter = 100; 25082: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) 25082: { 25082: __mu = (__xn + __yn + _Tp(3) * __zn) / _Tp(5); 25082: __xndev = (__mu - __xn) / __mu; 25082: __yndev = (__mu - __yn) / __mu; 25082: __zndev = (__mu - __zn) / __mu; 25082: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev)); 25082: __epsilon = std::max(__epsilon, std::abs(__zndev)); 25082: if (__epsilon < __errtol) 25082: break; 25082: _Tp __xnroot = std::sqrt(__xn); 25082: _Tp __ynroot = std::sqrt(__yn); 25082: _Tp __znroot = std::sqrt(__zn); 25082: _Tp __lambda = __xnroot * (__ynroot + __znroot) 25082: + __ynroot * __znroot; 25082: __sigma += __power4 / (__znroot * (__zn + __lambda)); 25082: __power4 *= __c0; 25082: __xn = __c0 * (__xn + __lambda); 25082: __yn = __c0 * (__yn + __lambda); 25082: __zn = __c0 * (__zn + __lambda); 25082: } 25082: 25082: 25082: _Tp __eaa = __xndev * __yndev; 25082: _Tp __eb = __zndev * __zndev; 25082: _Tp __ec = __eaa - __eb; 25082: _Tp __ed = __eaa - _Tp(6) * __eb; 25082: _Tp __ef = __ed + __ec + __ec; 25082: _Tp __s1 = __ed * (-__c1 + __c3 * __ed 25082: / _Tp(3) - _Tp(3) * __c4 * __zndev * __ef 25082: / _Tp(2)); 25082: _Tp __s2 = __zndev 25082: * (__c2 * __ef 25082: + __zndev * (-__c3 * __ec - __zndev * __c4 - __eaa)); 25082: 25082: return _Tp(3) * __sigma + __power4 * (_Tp(1) + __s1 + __s2) 25082: / (__mu * std::sqrt(__mu)); 25082: } 25082: } 25082: # 404 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __comp_ellint_2(_Tp __k) 25082: { 25082: 25082: if (__isnan(__k)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (std::abs(__k) == 1) 25082: return _Tp(1); 25082: else if (std::abs(__k) > _Tp(1)) 25082: std::__throw_domain_error(("Bad argument in __comp_ellint_2.")); 25082: else 25082: { 25082: const _Tp __kk = __k * __k; 25082: 25082: return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1)) 25082: - __kk * __ellint_rd(_Tp(0), _Tp(1) - __kk, _Tp(1)) / _Tp(3); 25082: } 25082: } 25082: # 438 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __ellint_2(_Tp __k, _Tp __phi) 25082: { 25082: 25082: if (__isnan(__k) || __isnan(__phi)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (std::abs(__k) > _Tp(1)) 25082: std::__throw_domain_error(("Bad argument in __ellint_2.")); 25082: else 25082: { 25082: 25082: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi() 25082: + _Tp(0.5L)); 25082: const _Tp __phi_red = __phi 25082: - __n * __numeric_constants<_Tp>::__pi(); 25082: 25082: const _Tp __kk = __k * __k; 25082: const _Tp __s = std::sin(__phi_red); 25082: const _Tp __ss = __s * __s; 25082: const _Tp __sss = __ss * __s; 25082: const _Tp __c = std::cos(__phi_red); 25082: const _Tp __cc = __c * __c; 25082: 25082: const _Tp __E = __s 25082: * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1)) 25082: - __kk * __sss 25082: * __ellint_rd(__cc, _Tp(1) - __kk * __ss, _Tp(1)) 25082: / _Tp(3); 25082: 25082: if (__n == 0) 25082: return __E; 25082: else 25082: return __E + _Tp(2) * __n * __comp_ellint_2(__k); 25082: } 25082: } 25082: # 497 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __ellint_rc(_Tp __x, _Tp __y) 25082: { 25082: const _Tp __min = std::numeric_limits<_Tp>::min(); 25082: const _Tp __max = std::numeric_limits<_Tp>::max(); 25082: const _Tp __lolim = _Tp(5) * __min; 25082: const _Tp __uplim = __max / _Tp(5); 25082: 25082: if (__x < _Tp(0) || __y < _Tp(0) || __x + __y < __lolim) 25082: std::__throw_domain_error(("Argument less than zero " "in __ellint_rc.") 25082: ); 25082: else 25082: { 25082: const _Tp __c0 = _Tp(1) / _Tp(4); 25082: const _Tp __c1 = _Tp(1) / _Tp(7); 25082: const _Tp __c2 = _Tp(9) / _Tp(22); 25082: const _Tp __c3 = _Tp(3) / _Tp(10); 25082: const _Tp __c4 = _Tp(3) / _Tp(8); 25082: 25082: _Tp __xn = __x; 25082: _Tp __yn = __y; 25082: 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: const _Tp __errtol = std::pow(__eps / _Tp(30), _Tp(1) / _Tp(6)); 25082: _Tp __mu; 25082: _Tp __sn; 25082: 25082: const unsigned int __max_iter = 100; 25082: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) 25082: { 25082: __mu = (__xn + _Tp(2) * __yn) / _Tp(3); 25082: __sn = (__yn + __mu) / __mu - _Tp(2); 25082: if (std::abs(__sn) < __errtol) 25082: break; 25082: const _Tp __lambda = _Tp(2) * std::sqrt(__xn) * std::sqrt(__yn) 25082: + __yn; 25082: __xn = __c0 * (__xn + __lambda); 25082: __yn = __c0 * (__yn + __lambda); 25082: } 25082: 25082: _Tp __s = __sn * __sn 25082: * (__c3 + __sn*(__c1 + __sn * (__c4 + __sn * __c2))); 25082: 25082: return (_Tp(1) + __s) / std::sqrt(__mu); 25082: } 25082: } 25082: # 568 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __ellint_rj(_Tp __x, _Tp __y, _Tp __z, _Tp __p) 25082: { 25082: const _Tp __min = std::numeric_limits<_Tp>::min(); 25082: const _Tp __max = std::numeric_limits<_Tp>::max(); 25082: const _Tp __lolim = std::pow(_Tp(5) * __min, _Tp(1)/_Tp(3)); 25082: const _Tp __uplim = _Tp(0.3L) 25082: * std::pow(_Tp(0.2L) * __max, _Tp(1)/_Tp(3)); 25082: 25082: if (__x < _Tp(0) || __y < _Tp(0) || __z < _Tp(0)) 25082: std::__throw_domain_error(("Argument less than zero " "in __ellint_rj.") 25082: ); 25082: else if (__x + __y < __lolim || __x + __z < __lolim 25082: || __y + __z < __lolim || __p < __lolim) 25082: std::__throw_domain_error(("Argument too small " "in __ellint_rj") 25082: ); 25082: else 25082: { 25082: const _Tp __c0 = _Tp(1) / _Tp(4); 25082: const _Tp __c1 = _Tp(3) / _Tp(14); 25082: const _Tp __c2 = _Tp(1) / _Tp(3); 25082: const _Tp __c3 = _Tp(3) / _Tp(22); 25082: const _Tp __c4 = _Tp(3) / _Tp(26); 25082: 25082: _Tp __xn = __x; 25082: _Tp __yn = __y; 25082: _Tp __zn = __z; 25082: _Tp __pn = __p; 25082: _Tp __sigma = _Tp(0); 25082: _Tp __power4 = _Tp(1); 25082: 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6)); 25082: 25082: _Tp __lambda, __mu; 25082: _Tp __xndev, __yndev, __zndev, __pndev; 25082: 25082: const unsigned int __max_iter = 100; 25082: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) 25082: { 25082: __mu = (__xn + __yn + __zn + _Tp(2) * __pn) / _Tp(5); 25082: __xndev = (__mu - __xn) / __mu; 25082: __yndev = (__mu - __yn) / __mu; 25082: __zndev = (__mu - __zn) / __mu; 25082: __pndev = (__mu - __pn) / __mu; 25082: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev)); 25082: __epsilon = std::max(__epsilon, std::abs(__zndev)); 25082: __epsilon = std::max(__epsilon, std::abs(__pndev)); 25082: if (__epsilon < __errtol) 25082: break; 25082: const _Tp __xnroot = std::sqrt(__xn); 25082: const _Tp __ynroot = std::sqrt(__yn); 25082: const _Tp __znroot = std::sqrt(__zn); 25082: const _Tp __lambda = __xnroot * (__ynroot + __znroot) 25082: + __ynroot * __znroot; 25082: const _Tp __alpha1 = __pn * (__xnroot + __ynroot + __znroot) 25082: + __xnroot * __ynroot * __znroot; 25082: const _Tp __alpha2 = __alpha1 * __alpha1; 25082: const _Tp __beta = __pn * (__pn + __lambda) 25082: * (__pn + __lambda); 25082: __sigma += __power4 * __ellint_rc(__alpha2, __beta); 25082: __power4 *= __c0; 25082: __xn = __c0 * (__xn + __lambda); 25082: __yn = __c0 * (__yn + __lambda); 25082: __zn = __c0 * (__zn + __lambda); 25082: __pn = __c0 * (__pn + __lambda); 25082: } 25082: 25082: 25082: _Tp __eaa = __xndev * (__yndev + __zndev) + __yndev * __zndev; 25082: _Tp __eb = __xndev * __yndev * __zndev; 25082: _Tp __ec = __pndev * __pndev; 25082: _Tp __e2 = __eaa - _Tp(3) * __ec; 25082: _Tp __e3 = __eb + _Tp(2) * __pndev * (__eaa - __ec); 25082: _Tp __s1 = _Tp(1) + __e2 * (-__c1 + _Tp(3) * __c3 * __e2 / _Tp(4) 25082: - _Tp(3) * __c4 * __e3 / _Tp(2)); 25082: _Tp __s2 = __eb * (__c2 / _Tp(2) 25082: + __pndev * (-__c3 - __c3 + __pndev * __c4)); 25082: _Tp __s3 = __pndev * __eaa * (__c2 - __pndev * __c3) 25082: - __c2 * __pndev * __ec; 25082: 25082: return _Tp(3) * __sigma + __power4 * (__s1 + __s2 + __s3) 25082: / (__mu * std::sqrt(__mu)); 25082: } 25082: } 25082: # 672 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __comp_ellint_3(_Tp __k, _Tp __nu) 25082: { 25082: 25082: if (__isnan(__k) || __isnan(__nu)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__nu == _Tp(1)) 25082: return std::numeric_limits<_Tp>::infinity(); 25082: else if (std::abs(__k) > _Tp(1)) 25082: std::__throw_domain_error(("Bad argument in __comp_ellint_3.")); 25082: else 25082: { 25082: const _Tp __kk = __k * __k; 25082: 25082: return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1)) 25082: + __nu 25082: * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) - __nu) 25082: / _Tp(3); 25082: } 25082: } 25082: # 712 "/usr/include/c++/8/tr1/ell_integral.tcc" 3 25082: template 25082: _Tp 25082: __ellint_3(_Tp __k, _Tp __nu, _Tp __phi) 25082: { 25082: 25082: if (__isnan(__k) || __isnan(__nu) || __isnan(__phi)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (std::abs(__k) > _Tp(1)) 25082: std::__throw_domain_error(("Bad argument in __ellint_3.")); 25082: else 25082: { 25082: 25082: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi() 25082: + _Tp(0.5L)); 25082: const _Tp __phi_red = __phi 25082: - __n * __numeric_constants<_Tp>::__pi(); 25082: 25082: const _Tp __kk = __k * __k; 25082: const _Tp __s = std::sin(__phi_red); 25082: const _Tp __ss = __s * __s; 25082: const _Tp __sss = __ss * __s; 25082: const _Tp __c = std::cos(__phi_red); 25082: const _Tp __cc = __c * __c; 25082: 25082: const _Tp __Pi = __s 25082: * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1)) 25082: + __nu * __sss 25082: * __ellint_rj(__cc, _Tp(1) - __kk * __ss, _Tp(1), 25082: _Tp(1) - __nu * __ss) / _Tp(3); 25082: 25082: if (__n == 0) 25082: return __Pi; 25082: else 25082: return __Pi + _Tp(2) * __n * __comp_ellint_3(__k, __nu); 25082: } 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 53 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: # 1 "/usr/include/c++/8/tr1/exp_integral.tcc" 1 3 25082: # 50 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 64 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: namespace __detail 25082: { 25082: template _Tp __expint_E1(_Tp); 25082: # 81 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_E1_series(_Tp __x) 25082: { 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: _Tp __term = _Tp(1); 25082: _Tp __esum = _Tp(0); 25082: _Tp __osum = _Tp(0); 25082: const unsigned int __max_iter = 1000; 25082: for (unsigned int __i = 1; __i < __max_iter; ++__i) 25082: { 25082: __term *= - __x / __i; 25082: if (std::abs(__term) < __eps) 25082: break; 25082: if (__term >= _Tp(0)) 25082: __esum += __term / __i; 25082: else 25082: __osum += __term / __i; 25082: } 25082: 25082: return - __esum - __osum 25082: - __numeric_constants<_Tp>::__gamma_e() - std::log(__x); 25082: } 25082: # 118 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_E1_asymp(_Tp __x) 25082: { 25082: _Tp __term = _Tp(1); 25082: _Tp __esum = _Tp(1); 25082: _Tp __osum = _Tp(0); 25082: const unsigned int __max_iter = 1000; 25082: for (unsigned int __i = 1; __i < __max_iter; ++__i) 25082: { 25082: _Tp __prev = __term; 25082: __term *= - __i / __x; 25082: if (std::abs(__term) > std::abs(__prev)) 25082: break; 25082: if (__term >= _Tp(0)) 25082: __esum += __term; 25082: else 25082: __osum += __term; 25082: } 25082: 25082: return std::exp(- __x) * (__esum + __osum) / __x; 25082: } 25082: # 155 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_En_series(unsigned int __n, _Tp __x) 25082: { 25082: const unsigned int __max_iter = 1000; 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: const int __nm1 = __n - 1; 25082: _Tp __ans = (__nm1 != 0 25082: ? _Tp(1) / __nm1 : -std::log(__x) 25082: - __numeric_constants<_Tp>::__gamma_e()); 25082: _Tp __fact = _Tp(1); 25082: for (int __i = 1; __i <= __max_iter; ++__i) 25082: { 25082: __fact *= -__x / _Tp(__i); 25082: _Tp __del; 25082: if ( __i != __nm1 ) 25082: __del = -__fact / _Tp(__i - __nm1); 25082: else 25082: { 25082: _Tp __psi = -__numeric_constants<_Tp>::gamma_e(); 25082: for (int __ii = 1; __ii <= __nm1; ++__ii) 25082: __psi += _Tp(1) / _Tp(__ii); 25082: __del = __fact * (__psi - std::log(__x)); 25082: } 25082: __ans += __del; 25082: if (std::abs(__del) < __eps * std::abs(__ans)) 25082: return __ans; 25082: } 25082: std::__throw_runtime_error(("Series summation failed " "in __expint_En_series.") 25082: ); 25082: } 25082: # 201 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_En_cont_frac(unsigned int __n, _Tp __x) 25082: { 25082: const unsigned int __max_iter = 1000; 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: const _Tp __fp_min = std::numeric_limits<_Tp>::min(); 25082: const int __nm1 = __n - 1; 25082: _Tp __b = __x + _Tp(__n); 25082: _Tp __c = _Tp(1) / __fp_min; 25082: _Tp __d = _Tp(1) / __b; 25082: _Tp __h = __d; 25082: for ( unsigned int __i = 1; __i <= __max_iter; ++__i ) 25082: { 25082: _Tp __a = -_Tp(__i * (__nm1 + __i)); 25082: __b += _Tp(2); 25082: __d = _Tp(1) / (__a * __d + __b); 25082: __c = __b + __a / __c; 25082: const _Tp __del = __c * __d; 25082: __h *= __del; 25082: if (std::abs(__del - _Tp(1)) < __eps) 25082: { 25082: const _Tp __ans = __h * std::exp(-__x); 25082: return __ans; 25082: } 25082: } 25082: std::__throw_runtime_error(("Continued fraction failed " "in __expint_En_cont_frac.") 25082: ); 25082: } 25082: # 246 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_En_recursion(unsigned int __n, _Tp __x) 25082: { 25082: _Tp __En; 25082: _Tp __E1 = __expint_E1(__x); 25082: if (__x < _Tp(__n)) 25082: { 25082: 25082: __En = __E1; 25082: for (unsigned int __j = 2; __j < __n; ++__j) 25082: __En = (std::exp(-__x) - __x * __En) / _Tp(__j - 1); 25082: } 25082: else 25082: { 25082: 25082: __En = _Tp(1); 25082: const int __N = __n + 20; 25082: _Tp __save = _Tp(0); 25082: for (int __j = __N; __j > 0; --__j) 25082: { 25082: __En = (std::exp(-__x) - __j * __En) / __x; 25082: if (__j == __n) 25082: __save = __En; 25082: } 25082: _Tp __norm = __En / __E1; 25082: __En /= __norm; 25082: } 25082: 25082: return __En; 25082: } 25082: # 290 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_Ei_series(_Tp __x) 25082: { 25082: _Tp __term = _Tp(1); 25082: _Tp __sum = _Tp(0); 25082: const unsigned int __max_iter = 1000; 25082: for (unsigned int __i = 1; __i < __max_iter; ++__i) 25082: { 25082: __term *= __x / __i; 25082: __sum += __term / __i; 25082: if (__term < std::numeric_limits<_Tp>::epsilon() * __sum) 25082: break; 25082: } 25082: 25082: return __numeric_constants<_Tp>::__gamma_e() + __sum + std::log(__x); 25082: } 25082: # 321 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_Ei_asymp(_Tp __x) 25082: { 25082: _Tp __term = _Tp(1); 25082: _Tp __sum = _Tp(1); 25082: const unsigned int __max_iter = 1000; 25082: for (unsigned int __i = 1; __i < __max_iter; ++__i) 25082: { 25082: _Tp __prev = __term; 25082: __term *= __i / __x; 25082: if (__term < std::numeric_limits<_Tp>::epsilon()) 25082: break; 25082: if (__term >= __prev) 25082: break; 25082: __sum += __term; 25082: } 25082: 25082: return std::exp(__x) * __sum / __x; 25082: } 25082: # 354 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_Ei(_Tp __x) 25082: { 25082: if (__x < _Tp(0)) 25082: return -__expint_E1(-__x); 25082: else if (__x < -std::log(std::numeric_limits<_Tp>::epsilon())) 25082: return __expint_Ei_series(__x); 25082: else 25082: return __expint_Ei_asymp(__x); 25082: } 25082: # 378 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_E1(_Tp __x) 25082: { 25082: if (__x < _Tp(0)) 25082: return -__expint_Ei(-__x); 25082: else if (__x < _Tp(1)) 25082: return __expint_E1_series(__x); 25082: else if (__x < _Tp(100)) 25082: return __expint_En_cont_frac(1, __x); 25082: else 25082: return __expint_E1_asymp(__x); 25082: } 25082: # 408 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_asymp(unsigned int __n, _Tp __x) 25082: { 25082: _Tp __term = _Tp(1); 25082: _Tp __sum = _Tp(1); 25082: for (unsigned int __i = 1; __i <= __n; ++__i) 25082: { 25082: _Tp __prev = __term; 25082: __term *= -(__n - __i + 1) / __x; 25082: if (std::abs(__term) > std::abs(__prev)) 25082: break; 25082: __sum += __term; 25082: } 25082: 25082: return std::exp(-__x) * __sum / __x; 25082: } 25082: # 442 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint_large_n(unsigned int __n, _Tp __x) 25082: { 25082: const _Tp __xpn = __x + __n; 25082: const _Tp __xpn2 = __xpn * __xpn; 25082: _Tp __term = _Tp(1); 25082: _Tp __sum = _Tp(1); 25082: for (unsigned int __i = 1; __i <= __n; ++__i) 25082: { 25082: _Tp __prev = __term; 25082: __term *= (__n - 2 * (__i - 1) * __x) / __xpn2; 25082: if (std::abs(__term) < std::numeric_limits<_Tp>::epsilon()) 25082: break; 25082: __sum += __term; 25082: } 25082: 25082: return std::exp(-__x) * __sum / __xpn; 25082: } 25082: # 476 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: _Tp 25082: __expint(unsigned int __n, _Tp __x) 25082: { 25082: 25082: if (__isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__n <= 1 && __x == _Tp(0)) 25082: return std::numeric_limits<_Tp>::infinity(); 25082: else 25082: { 25082: _Tp __E0 = std::exp(__x) / __x; 25082: if (__n == 0) 25082: return __E0; 25082: 25082: _Tp __E1 = __expint_E1(__x); 25082: if (__n == 1) 25082: return __E1; 25082: 25082: if (__x == _Tp(0)) 25082: return _Tp(1) / static_cast<_Tp>(__n - 1); 25082: 25082: _Tp __En = __expint_En_recursion(__n, __x); 25082: 25082: return __En; 25082: } 25082: } 25082: # 516 "/usr/include/c++/8/tr1/exp_integral.tcc" 3 25082: template 25082: inline _Tp 25082: __expint(_Tp __x) 25082: { 25082: if (__isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else 25082: return __expint_Ei(__x); 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 54 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: # 1 "/usr/include/c++/8/tr1/hypergeometric.tcc" 1 3 25082: # 44 "/usr/include/c++/8/tr1/hypergeometric.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 60 "/usr/include/c++/8/tr1/hypergeometric.tcc" 3 25082: namespace __detail 25082: { 25082: # 83 "/usr/include/c++/8/tr1/hypergeometric.tcc" 3 25082: template 25082: _Tp 25082: __conf_hyperg_series(_Tp __a, _Tp __c, _Tp __x) 25082: { 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: 25082: _Tp __term = _Tp(1); 25082: _Tp __Fac = _Tp(1); 25082: const unsigned int __max_iter = 100000; 25082: unsigned int __i; 25082: for (__i = 0; __i < __max_iter; ++__i) 25082: { 25082: __term *= (__a + _Tp(__i)) * __x 25082: / ((__c + _Tp(__i)) * _Tp(1 + __i)); 25082: if (std::abs(__term) < __eps) 25082: { 25082: break; 25082: } 25082: __Fac += __term; 25082: } 25082: if (__i == __max_iter) 25082: std::__throw_runtime_error(("Series failed to converge " "in __conf_hyperg_series.") 25082: ); 25082: 25082: return __Fac; 25082: } 25082: # 120 "/usr/include/c++/8/tr1/hypergeometric.tcc" 3 25082: template 25082: _Tp 25082: __conf_hyperg_luke(_Tp __a, _Tp __c, _Tp __xin) 25082: { 25082: const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L)); 25082: const int __nmax = 20000; 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: const _Tp __x = -__xin; 25082: const _Tp __x3 = __x * __x * __x; 25082: const _Tp __t0 = __a / __c; 25082: const _Tp __t1 = (__a + _Tp(1)) / (_Tp(2) * __c); 25082: const _Tp __t2 = (__a + _Tp(2)) / (_Tp(2) * (__c + _Tp(1))); 25082: _Tp __F = _Tp(1); 25082: _Tp __prec; 25082: 25082: _Tp __Bnm3 = _Tp(1); 25082: _Tp __Bnm2 = _Tp(1) + __t1 * __x; 25082: _Tp __Bnm1 = _Tp(1) + __t2 * __x * (_Tp(1) + __t1 / _Tp(3) * __x); 25082: 25082: _Tp __Anm3 = _Tp(1); 25082: _Tp __Anm2 = __Bnm2 - __t0 * __x; 25082: _Tp __Anm1 = __Bnm1 - __t0 * (_Tp(1) + __t2 * __x) * __x 25082: + __t0 * __t1 * (__c / (__c + _Tp(1))) * __x * __x; 25082: 25082: int __n = 3; 25082: while(1) 25082: { 25082: _Tp __npam1 = _Tp(__n - 1) + __a; 25082: _Tp __npcm1 = _Tp(__n - 1) + __c; 25082: _Tp __npam2 = _Tp(__n - 2) + __a; 25082: _Tp __npcm2 = _Tp(__n - 2) + __c; 25082: _Tp __tnm1 = _Tp(2 * __n - 1); 25082: _Tp __tnm3 = _Tp(2 * __n - 3); 25082: _Tp __tnm5 = _Tp(2 * __n - 5); 25082: _Tp __F1 = (_Tp(__n - 2) - __a) / (_Tp(2) * __tnm3 * __npcm1); 25082: _Tp __F2 = (_Tp(__n) + __a) * __npam1 25082: / (_Tp(4) * __tnm1 * __tnm3 * __npcm2 * __npcm1); 25082: _Tp __F3 = -__npam2 * __npam1 * (_Tp(__n - 2) - __a) 25082: / (_Tp(8) * __tnm3 * __tnm3 * __tnm5 25082: * (_Tp(__n - 3) + __c) * __npcm2 * __npcm1); 25082: _Tp __E = -__npam1 * (_Tp(__n - 1) - __c) 25082: / (_Tp(2) * __tnm3 * __npcm2 * __npcm1); 25082: 25082: _Tp __An = (_Tp(1) + __F1 * __x) * __Anm1 25082: + (__E + __F2 * __x) * __x * __Anm2 + __F3 * __x3 * __Anm3; 25082: _Tp __Bn = (_Tp(1) + __F1 * __x) * __Bnm1 25082: + (__E + __F2 * __x) * __x * __Bnm2 + __F3 * __x3 * __Bnm3; 25082: _Tp __r = __An / __Bn; 25082: 25082: __prec = std::abs((__F - __r) / __F); 25082: __F = __r; 25082: 25082: if (__prec < __eps || __n > __nmax) 25082: break; 25082: 25082: if (std::abs(__An) > __big || std::abs(__Bn) > __big) 25082: { 25082: __An /= __big; 25082: __Bn /= __big; 25082: __Anm1 /= __big; 25082: __Bnm1 /= __big; 25082: __Anm2 /= __big; 25082: __Bnm2 /= __big; 25082: __Anm3 /= __big; 25082: __Bnm3 /= __big; 25082: } 25082: else if (std::abs(__An) < _Tp(1) / __big 25082: || std::abs(__Bn) < _Tp(1) / __big) 25082: { 25082: __An *= __big; 25082: __Bn *= __big; 25082: __Anm1 *= __big; 25082: __Bnm1 *= __big; 25082: __Anm2 *= __big; 25082: __Bnm2 *= __big; 25082: __Anm3 *= __big; 25082: __Bnm3 *= __big; 25082: } 25082: 25082: ++__n; 25082: __Bnm3 = __Bnm2; 25082: __Bnm2 = __Bnm1; 25082: __Bnm1 = __Bn; 25082: __Anm3 = __Anm2; 25082: __Anm2 = __Anm1; 25082: __Anm1 = __An; 25082: } 25082: 25082: if (__n >= __nmax) 25082: std::__throw_runtime_error(("Iteration failed to converge " "in __conf_hyperg_luke.") 25082: ); 25082: 25082: return __F; 25082: } 25082: # 227 "/usr/include/c++/8/tr1/hypergeometric.tcc" 3 25082: template 25082: _Tp 25082: __conf_hyperg(_Tp __a, _Tp __c, _Tp __x) 25082: { 25082: 25082: const _Tp __c_nint = ::std::nearbyint(__c); 25082: 25082: 25082: 25082: if (__isnan(__a) || __isnan(__c) || __isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__c_nint == __c && __c_nint <= 0) 25082: return std::numeric_limits<_Tp>::infinity(); 25082: else if (__a == _Tp(0)) 25082: return _Tp(1); 25082: else if (__c == __a) 25082: return std::exp(__x); 25082: else if (__x < _Tp(0)) 25082: return __conf_hyperg_luke(__a, __c, __x); 25082: else 25082: return __conf_hyperg_series(__a, __c, __x); 25082: } 25082: # 271 "/usr/include/c++/8/tr1/hypergeometric.tcc" 3 25082: template 25082: _Tp 25082: __hyperg_series(_Tp __a, _Tp __b, _Tp __c, _Tp __x) 25082: { 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: 25082: _Tp __term = _Tp(1); 25082: _Tp __Fabc = _Tp(1); 25082: const unsigned int __max_iter = 100000; 25082: unsigned int __i; 25082: for (__i = 0; __i < __max_iter; ++__i) 25082: { 25082: __term *= (__a + _Tp(__i)) * (__b + _Tp(__i)) * __x 25082: / ((__c + _Tp(__i)) * _Tp(1 + __i)); 25082: if (std::abs(__term) < __eps) 25082: { 25082: break; 25082: } 25082: __Fabc += __term; 25082: } 25082: if (__i == __max_iter) 25082: std::__throw_runtime_error(("Series failed to converge " "in __hyperg_series.") 25082: ); 25082: 25082: return __Fabc; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: _Tp 25082: __hyperg_luke(_Tp __a, _Tp __b, _Tp __c, _Tp __xin) 25082: { 25082: const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L)); 25082: const int __nmax = 20000; 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: const _Tp __x = -__xin; 25082: const _Tp __x3 = __x * __x * __x; 25082: const _Tp __t0 = __a * __b / __c; 25082: const _Tp __t1 = (__a + _Tp(1)) * (__b + _Tp(1)) / (_Tp(2) * __c); 25082: const _Tp __t2 = (__a + _Tp(2)) * (__b + _Tp(2)) 25082: / (_Tp(2) * (__c + _Tp(1))); 25082: 25082: _Tp __F = _Tp(1); 25082: 25082: _Tp __Bnm3 = _Tp(1); 25082: _Tp __Bnm2 = _Tp(1) + __t1 * __x; 25082: _Tp __Bnm1 = _Tp(1) + __t2 * __x * (_Tp(1) + __t1 / _Tp(3) * __x); 25082: 25082: _Tp __Anm3 = _Tp(1); 25082: _Tp __Anm2 = __Bnm2 - __t0 * __x; 25082: _Tp __Anm1 = __Bnm1 - __t0 * (_Tp(1) + __t2 * __x) * __x 25082: + __t0 * __t1 * (__c / (__c + _Tp(1))) * __x * __x; 25082: 25082: int __n = 3; 25082: while (1) 25082: { 25082: const _Tp __npam1 = _Tp(__n - 1) + __a; 25082: const _Tp __npbm1 = _Tp(__n - 1) + __b; 25082: const _Tp __npcm1 = _Tp(__n - 1) + __c; 25082: const _Tp __npam2 = _Tp(__n - 2) + __a; 25082: const _Tp __npbm2 = _Tp(__n - 2) + __b; 25082: const _Tp __npcm2 = _Tp(__n - 2) + __c; 25082: const _Tp __tnm1 = _Tp(2 * __n - 1); 25082: const _Tp __tnm3 = _Tp(2 * __n - 3); 25082: const _Tp __tnm5 = _Tp(2 * __n - 5); 25082: const _Tp __n2 = __n * __n; 25082: const _Tp __F1 = (_Tp(3) * __n2 + (__a + __b - _Tp(6)) * __n 25082: + _Tp(2) - __a * __b - _Tp(2) * (__a + __b)) 25082: / (_Tp(2) * __tnm3 * __npcm1); 25082: const _Tp __F2 = -(_Tp(3) * __n2 - (__a + __b + _Tp(6)) * __n 25082: + _Tp(2) - __a * __b) * __npam1 * __npbm1 25082: / (_Tp(4) * __tnm1 * __tnm3 * __npcm2 * __npcm1); 25082: const _Tp __F3 = (__npam2 * __npam1 * __npbm2 * __npbm1 25082: * (_Tp(__n - 2) - __a) * (_Tp(__n - 2) - __b)) 25082: / (_Tp(8) * __tnm3 * __tnm3 * __tnm5 25082: * (_Tp(__n - 3) + __c) * __npcm2 * __npcm1); 25082: const _Tp __E = -__npam1 * __npbm1 * (_Tp(__n - 1) - __c) 25082: / (_Tp(2) * __tnm3 * __npcm2 * __npcm1); 25082: 25082: _Tp __An = (_Tp(1) + __F1 * __x) * __Anm1 25082: + (__E + __F2 * __x) * __x * __Anm2 + __F3 * __x3 * __Anm3; 25082: _Tp __Bn = (_Tp(1) + __F1 * __x) * __Bnm1 25082: + (__E + __F2 * __x) * __x * __Bnm2 + __F3 * __x3 * __Bnm3; 25082: const _Tp __r = __An / __Bn; 25082: 25082: const _Tp __prec = std::abs((__F - __r) / __F); 25082: __F = __r; 25082: 25082: if (__prec < __eps || __n > __nmax) 25082: break; 25082: 25082: if (std::abs(__An) > __big || std::abs(__Bn) > __big) 25082: { 25082: __An /= __big; 25082: __Bn /= __big; 25082: __Anm1 /= __big; 25082: __Bnm1 /= __big; 25082: __Anm2 /= __big; 25082: __Bnm2 /= __big; 25082: __Anm3 /= __big; 25082: __Bnm3 /= __big; 25082: } 25082: else if (std::abs(__An) < _Tp(1) / __big 25082: || std::abs(__Bn) < _Tp(1) / __big) 25082: { 25082: __An *= __big; 25082: __Bn *= __big; 25082: __Anm1 *= __big; 25082: __Bnm1 *= __big; 25082: __Anm2 *= __big; 25082: __Bnm2 *= __big; 25082: __Anm3 *= __big; 25082: __Bnm3 *= __big; 25082: } 25082: 25082: ++__n; 25082: __Bnm3 = __Bnm2; 25082: __Bnm2 = __Bnm1; 25082: __Bnm1 = __Bn; 25082: __Anm3 = __Anm2; 25082: __Anm2 = __Anm1; 25082: __Anm1 = __An; 25082: } 25082: 25082: if (__n >= __nmax) 25082: std::__throw_runtime_error(("Iteration failed to converge " "in __hyperg_luke.") 25082: ); 25082: 25082: return __F; 25082: } 25082: # 438 "/usr/include/c++/8/tr1/hypergeometric.tcc" 3 25082: template 25082: _Tp 25082: __hyperg_reflect(_Tp __a, _Tp __b, _Tp __c, _Tp __x) 25082: { 25082: const _Tp __d = __c - __a - __b; 25082: const int __intd = std::floor(__d + _Tp(0.5L)); 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: const _Tp __toler = _Tp(1000) * __eps; 25082: const _Tp __log_max = std::log(std::numeric_limits<_Tp>::max()); 25082: const bool __d_integer = (std::abs(__d - __intd) < __toler); 25082: 25082: if (__d_integer) 25082: { 25082: const _Tp __ln_omx = std::log(_Tp(1) - __x); 25082: const _Tp __ad = std::abs(__d); 25082: _Tp __F1, __F2; 25082: 25082: _Tp __d1, __d2; 25082: if (__d >= _Tp(0)) 25082: { 25082: __d1 = __d; 25082: __d2 = _Tp(0); 25082: } 25082: else 25082: { 25082: __d1 = _Tp(0); 25082: __d2 = __d; 25082: } 25082: 25082: const _Tp __lng_c = __log_gamma(__c); 25082: 25082: 25082: if (__ad < __eps) 25082: { 25082: 25082: __F1 = _Tp(0); 25082: } 25082: else 25082: { 25082: 25082: bool __ok_d1 = true; 25082: _Tp __lng_ad, __lng_ad1, __lng_bd1; 25082: try 25082: { 25082: __lng_ad = __log_gamma(__ad); 25082: __lng_ad1 = __log_gamma(__a + __d1); 25082: __lng_bd1 = __log_gamma(__b + __d1); 25082: } 25082: catch(...) 25082: { 25082: __ok_d1 = false; 25082: } 25082: 25082: if (__ok_d1) 25082: { 25082: 25082: 25082: 25082: _Tp __sum1 = _Tp(1); 25082: _Tp __term = _Tp(1); 25082: _Tp __ln_pre1 = __lng_ad + __lng_c + __d2 * __ln_omx 25082: - __lng_ad1 - __lng_bd1; 25082: 25082: 25082: 25082: for (int __i = 1; __i < __ad; ++__i) 25082: { 25082: const int __j = __i - 1; 25082: __term *= (__a + __d2 + __j) * (__b + __d2 + __j) 25082: / (_Tp(1) + __d2 + __j) / __i * (_Tp(1) - __x); 25082: __sum1 += __term; 25082: } 25082: 25082: if (__ln_pre1 > __log_max) 25082: std::__throw_runtime_error(("Overflow of gamma functions" " in __hyperg_luke.") 25082: ); 25082: else 25082: __F1 = std::exp(__ln_pre1) * __sum1; 25082: } 25082: else 25082: { 25082: 25082: 25082: __F1 = _Tp(0); 25082: } 25082: } 25082: 25082: 25082: bool __ok_d2 = true; 25082: _Tp __lng_ad2, __lng_bd2; 25082: try 25082: { 25082: __lng_ad2 = __log_gamma(__a + __d2); 25082: __lng_bd2 = __log_gamma(__b + __d2); 25082: } 25082: catch(...) 25082: { 25082: __ok_d2 = false; 25082: } 25082: 25082: if (__ok_d2) 25082: { 25082: 25082: 25082: const int __maxiter = 2000; 25082: const _Tp __psi_1 = -__numeric_constants<_Tp>::__gamma_e(); 25082: const _Tp __psi_1pd = __psi(_Tp(1) + __ad); 25082: const _Tp __psi_apd1 = __psi(__a + __d1); 25082: const _Tp __psi_bpd1 = __psi(__b + __d1); 25082: 25082: _Tp __psi_term = __psi_1 + __psi_1pd - __psi_apd1 25082: - __psi_bpd1 - __ln_omx; 25082: _Tp __fact = _Tp(1); 25082: _Tp __sum2 = __psi_term; 25082: _Tp __ln_pre2 = __lng_c + __d1 * __ln_omx 25082: - __lng_ad2 - __lng_bd2; 25082: 25082: 25082: int __j; 25082: for (__j = 1; __j < __maxiter; ++__j) 25082: { 25082: 25082: 25082: const _Tp __term1 = _Tp(1) / _Tp(__j) 25082: + _Tp(1) / (__ad + __j); 25082: const _Tp __term2 = _Tp(1) / (__a + __d1 + _Tp(__j - 1)) 25082: + _Tp(1) / (__b + __d1 + _Tp(__j - 1)); 25082: __psi_term += __term1 - __term2; 25082: __fact *= (__a + __d1 + _Tp(__j - 1)) 25082: * (__b + __d1 + _Tp(__j - 1)) 25082: / ((__ad + __j) * __j) * (_Tp(1) - __x); 25082: const _Tp __delta = __fact * __psi_term; 25082: __sum2 += __delta; 25082: if (std::abs(__delta) < __eps * std::abs(__sum2)) 25082: break; 25082: } 25082: if (__j == __maxiter) 25082: std::__throw_runtime_error(("Sum F2 failed to converge " "in __hyperg_reflect") 25082: ); 25082: 25082: if (__sum2 == _Tp(0)) 25082: __F2 = _Tp(0); 25082: else 25082: __F2 = std::exp(__ln_pre2) * __sum2; 25082: } 25082: else 25082: { 25082: 25082: 25082: __F2 = _Tp(0); 25082: } 25082: 25082: const _Tp __sgn_2 = (__intd % 2 == 1 ? -_Tp(1) : _Tp(1)); 25082: const _Tp __F = __F1 + __sgn_2 * __F2; 25082: 25082: return __F; 25082: } 25082: else 25082: { 25082: 25082: 25082: 25082: 25082: bool __ok1 = true; 25082: _Tp __sgn_g1ca = _Tp(0), __ln_g1ca = _Tp(0); 25082: _Tp __sgn_g1cb = _Tp(0), __ln_g1cb = _Tp(0); 25082: try 25082: { 25082: __sgn_g1ca = __log_gamma_sign(__c - __a); 25082: __ln_g1ca = __log_gamma(__c - __a); 25082: __sgn_g1cb = __log_gamma_sign(__c - __b); 25082: __ln_g1cb = __log_gamma(__c - __b); 25082: } 25082: catch(...) 25082: { 25082: __ok1 = false; 25082: } 25082: 25082: bool __ok2 = true; 25082: _Tp __sgn_g2a = _Tp(0), __ln_g2a = _Tp(0); 25082: _Tp __sgn_g2b = _Tp(0), __ln_g2b = _Tp(0); 25082: try 25082: { 25082: __sgn_g2a = __log_gamma_sign(__a); 25082: __ln_g2a = __log_gamma(__a); 25082: __sgn_g2b = __log_gamma_sign(__b); 25082: __ln_g2b = __log_gamma(__b); 25082: } 25082: catch(...) 25082: { 25082: __ok2 = false; 25082: } 25082: 25082: const _Tp __sgn_gc = __log_gamma_sign(__c); 25082: const _Tp __ln_gc = __log_gamma(__c); 25082: const _Tp __sgn_gd = __log_gamma_sign(__d); 25082: const _Tp __ln_gd = __log_gamma(__d); 25082: const _Tp __sgn_gmd = __log_gamma_sign(-__d); 25082: const _Tp __ln_gmd = __log_gamma(-__d); 25082: 25082: const _Tp __sgn1 = __sgn_gc * __sgn_gd * __sgn_g1ca * __sgn_g1cb; 25082: const _Tp __sgn2 = __sgn_gc * __sgn_gmd * __sgn_g2a * __sgn_g2b; 25082: 25082: _Tp __pre1, __pre2; 25082: if (__ok1 && __ok2) 25082: { 25082: _Tp __ln_pre1 = __ln_gc + __ln_gd - __ln_g1ca - __ln_g1cb; 25082: _Tp __ln_pre2 = __ln_gc + __ln_gmd - __ln_g2a - __ln_g2b 25082: + __d * std::log(_Tp(1) - __x); 25082: if (__ln_pre1 < __log_max && __ln_pre2 < __log_max) 25082: { 25082: __pre1 = std::exp(__ln_pre1); 25082: __pre2 = std::exp(__ln_pre2); 25082: __pre1 *= __sgn1; 25082: __pre2 *= __sgn2; 25082: } 25082: else 25082: { 25082: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect") 25082: ); 25082: } 25082: } 25082: else if (__ok1 && !__ok2) 25082: { 25082: _Tp __ln_pre1 = __ln_gc + __ln_gd - __ln_g1ca - __ln_g1cb; 25082: if (__ln_pre1 < __log_max) 25082: { 25082: __pre1 = std::exp(__ln_pre1); 25082: __pre1 *= __sgn1; 25082: __pre2 = _Tp(0); 25082: } 25082: else 25082: { 25082: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect") 25082: ); 25082: } 25082: } 25082: else if (!__ok1 && __ok2) 25082: { 25082: _Tp __ln_pre2 = __ln_gc + __ln_gmd - __ln_g2a - __ln_g2b 25082: + __d * std::log(_Tp(1) - __x); 25082: if (__ln_pre2 < __log_max) 25082: { 25082: __pre1 = _Tp(0); 25082: __pre2 = std::exp(__ln_pre2); 25082: __pre2 *= __sgn2; 25082: } 25082: else 25082: { 25082: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect") 25082: ); 25082: } 25082: } 25082: else 25082: { 25082: __pre1 = _Tp(0); 25082: __pre2 = _Tp(0); 25082: std::__throw_runtime_error(("Underflow of gamma functions " "in __hyperg_reflect") 25082: ); 25082: } 25082: 25082: const _Tp __F1 = __hyperg_series(__a, __b, _Tp(1) - __d, 25082: _Tp(1) - __x); 25082: const _Tp __F2 = __hyperg_series(__c - __a, __c - __b, _Tp(1) + __d, 25082: _Tp(1) - __x); 25082: 25082: const _Tp __F = __pre1 * __F1 + __pre2 * __F2; 25082: 25082: return __F; 25082: } 25082: } 25082: # 728 "/usr/include/c++/8/tr1/hypergeometric.tcc" 3 25082: template 25082: _Tp 25082: __hyperg(_Tp __a, _Tp __b, _Tp __c, _Tp __x) 25082: { 25082: 25082: const _Tp __a_nint = ::std::nearbyint(__a); 25082: const _Tp __b_nint = ::std::nearbyint(__b); 25082: const _Tp __c_nint = ::std::nearbyint(__c); 25082: 25082: 25082: 25082: 25082: 25082: const _Tp __toler = _Tp(1000) * std::numeric_limits<_Tp>::epsilon(); 25082: if (std::abs(__x) >= _Tp(1)) 25082: std::__throw_domain_error(("Argument outside unit circle " "in __hyperg.") 25082: ); 25082: else if (__isnan(__a) || __isnan(__b) 25082: || __isnan(__c) || __isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__c_nint == __c && __c_nint <= _Tp(0)) 25082: return std::numeric_limits<_Tp>::infinity(); 25082: else if (std::abs(__c - __b) < __toler || std::abs(__c - __a) < __toler) 25082: return std::pow(_Tp(1) - __x, __c - __a - __b); 25082: else if (__a >= _Tp(0) && __b >= _Tp(0) && __c >= _Tp(0) 25082: && __x >= _Tp(0) && __x < _Tp(0.995L)) 25082: return __hyperg_series(__a, __b, __c, __x); 25082: else if (std::abs(__a) < _Tp(10) && std::abs(__b) < _Tp(10)) 25082: { 25082: 25082: 25082: if (__a < _Tp(0) && std::abs(__a - __a_nint) < __toler) 25082: return __hyperg_series(__a_nint, __b, __c, __x); 25082: else if (__b < _Tp(0) && std::abs(__b - __b_nint) < __toler) 25082: return __hyperg_series(__a, __b_nint, __c, __x); 25082: else if (__x < -_Tp(0.25L)) 25082: return __hyperg_luke(__a, __b, __c, __x); 25082: else if (__x < _Tp(0.5L)) 25082: return __hyperg_series(__a, __b, __c, __x); 25082: else 25082: if (std::abs(__c) > _Tp(10)) 25082: return __hyperg_series(__a, __b, __c, __x); 25082: else 25082: return __hyperg_reflect(__a, __b, __c, __x); 25082: } 25082: else 25082: return __hyperg_luke(__a, __b, __c, __x); 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 55 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: # 1 "/usr/include/c++/8/tr1/legendre_function.tcc" 1 3 25082: # 49 "/usr/include/c++/8/tr1/legendre_function.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 65 "/usr/include/c++/8/tr1/legendre_function.tcc" 3 25082: namespace __detail 25082: { 25082: # 80 "/usr/include/c++/8/tr1/legendre_function.tcc" 3 25082: template 25082: _Tp 25082: __poly_legendre_p(unsigned int __l, _Tp __x) 25082: { 25082: 25082: if ((__x < _Tp(-1)) || (__x > _Tp(+1))) 25082: std::__throw_domain_error(("Argument out of range" " in __poly_legendre_p.") 25082: ); 25082: else if (__isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__x == +_Tp(1)) 25082: return +_Tp(1); 25082: else if (__x == -_Tp(1)) 25082: return (__l % 2 == 1 ? -_Tp(1) : +_Tp(1)); 25082: else 25082: { 25082: _Tp __p_lm2 = _Tp(1); 25082: if (__l == 0) 25082: return __p_lm2; 25082: 25082: _Tp __p_lm1 = __x; 25082: if (__l == 1) 25082: return __p_lm1; 25082: 25082: _Tp __p_l = 0; 25082: for (unsigned int __ll = 2; __ll <= __l; ++__ll) 25082: { 25082: 25082: 25082: __p_l = _Tp(2) * __x * __p_lm1 - __p_lm2 25082: - (__x * __p_lm1 - __p_lm2) / _Tp(__ll); 25082: __p_lm2 = __p_lm1; 25082: __p_lm1 = __p_l; 25082: } 25082: 25082: return __p_l; 25082: } 25082: } 25082: # 137 "/usr/include/c++/8/tr1/legendre_function.tcc" 3 25082: template 25082: _Tp 25082: __assoc_legendre_p(unsigned int __l, unsigned int __m, _Tp __x) 25082: { 25082: 25082: if (__x < _Tp(-1) || __x > _Tp(+1)) 25082: std::__throw_domain_error(("Argument out of range" " in __assoc_legendre_p.") 25082: ); 25082: else if (__m > __l) 25082: std::__throw_domain_error(("Degree out of range" " in __assoc_legendre_p.") 25082: ); 25082: else if (__isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__m == 0) 25082: return __poly_legendre_p(__l, __x); 25082: else 25082: { 25082: _Tp __p_mm = _Tp(1); 25082: if (__m > 0) 25082: { 25082: 25082: 25082: _Tp __root = std::sqrt(_Tp(1) - __x) * std::sqrt(_Tp(1) + __x); 25082: _Tp __fact = _Tp(1); 25082: for (unsigned int __i = 1; __i <= __m; ++__i) 25082: { 25082: __p_mm *= -__fact * __root; 25082: __fact += _Tp(2); 25082: } 25082: } 25082: if (__l == __m) 25082: return __p_mm; 25082: 25082: _Tp __p_mp1m = _Tp(2 * __m + 1) * __x * __p_mm; 25082: if (__l == __m + 1) 25082: return __p_mp1m; 25082: 25082: _Tp __p_lm2m = __p_mm; 25082: _Tp __P_lm1m = __p_mp1m; 25082: _Tp __p_lm = _Tp(0); 25082: for (unsigned int __j = __m + 2; __j <= __l; ++__j) 25082: { 25082: __p_lm = (_Tp(2 * __j - 1) * __x * __P_lm1m 25082: - _Tp(__j + __m - 1) * __p_lm2m) / _Tp(__j - __m); 25082: __p_lm2m = __P_lm1m; 25082: __P_lm1m = __p_lm; 25082: } 25082: 25082: return __p_lm; 25082: } 25082: } 25082: # 216 "/usr/include/c++/8/tr1/legendre_function.tcc" 3 25082: template 25082: _Tp 25082: __sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta) 25082: { 25082: if (__isnan(__theta)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: 25082: const _Tp __x = std::cos(__theta); 25082: 25082: if (__l < __m) 25082: { 25082: std::__throw_domain_error(("Bad argument " "in __sph_legendre.") 25082: ); 25082: } 25082: else if (__m == 0) 25082: { 25082: _Tp __P = __poly_legendre_p(__l, __x); 25082: _Tp __fact = std::sqrt(_Tp(2 * __l + 1) 25082: / (_Tp(4) * __numeric_constants<_Tp>::__pi())); 25082: __P *= __fact; 25082: return __P; 25082: } 25082: else if (__x == _Tp(1) || __x == -_Tp(1)) 25082: { 25082: 25082: return _Tp(0); 25082: } 25082: else 25082: { 25082: 25082: 25082: 25082: 25082: 25082: const _Tp __sgn = ( __m % 2 == 1 ? -_Tp(1) : _Tp(1)); 25082: const _Tp __y_mp1m_factor = __x * std::sqrt(_Tp(2 * __m + 3)); 25082: 25082: const _Tp __lncirc = ::std::log1p(-__x * __x); 25082: 25082: 25082: 25082: 25082: 25082: const _Tp __lnpoch = ::std::lgamma(_Tp(__m + _Tp(0.5L))) 25082: - ::std::lgamma(_Tp(__m)); 25082: 25082: 25082: 25082: 25082: const _Tp __lnpre_val = 25082: -_Tp(0.25L) * __numeric_constants<_Tp>::__lnpi() 25082: + _Tp(0.5L) * (__lnpoch + __m * __lncirc); 25082: _Tp __sr = std::sqrt((_Tp(2) + _Tp(1) / __m) 25082: / (_Tp(4) * __numeric_constants<_Tp>::__pi())); 25082: _Tp __y_mm = __sgn * __sr * std::exp(__lnpre_val); 25082: _Tp __y_mp1m = __y_mp1m_factor * __y_mm; 25082: 25082: if (__l == __m) 25082: { 25082: return __y_mm; 25082: } 25082: else if (__l == __m + 1) 25082: { 25082: return __y_mp1m; 25082: } 25082: else 25082: { 25082: _Tp __y_lm = _Tp(0); 25082: 25082: 25082: for ( int __ll = __m + 2; __ll <= __l; ++__ll) 25082: { 25082: const _Tp __rat1 = _Tp(__ll - __m) / _Tp(__ll + __m); 25082: const _Tp __rat2 = _Tp(__ll - __m - 1) / _Tp(__ll + __m - 1); 25082: const _Tp __fact1 = std::sqrt(__rat1 * _Tp(2 * __ll + 1) 25082: * _Tp(2 * __ll - 1)); 25082: const _Tp __fact2 = std::sqrt(__rat1 * __rat2 * _Tp(2 * __ll + 1) 25082: / _Tp(2 * __ll - 3)); 25082: __y_lm = (__x * __y_mp1m * __fact1 25082: - (__ll + __m - 1) * __y_mm * __fact2) / _Tp(__ll - __m); 25082: __y_mm = __y_mp1m; 25082: __y_mp1m = __y_lm; 25082: } 25082: 25082: return __y_lm; 25082: } 25082: } 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 56 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: # 1 "/usr/include/c++/8/tr1/modified_bessel_func.tcc" 1 3 25082: # 51 "/usr/include/c++/8/tr1/modified_bessel_func.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 65 "/usr/include/c++/8/tr1/modified_bessel_func.tcc" 3 25082: namespace __detail 25082: { 25082: # 83 "/usr/include/c++/8/tr1/modified_bessel_func.tcc" 3 25082: template 25082: void 25082: __bessel_ik(_Tp __nu, _Tp __x, 25082: _Tp & __Inu, _Tp & __Knu, _Tp & __Ipnu, _Tp & __Kpnu) 25082: { 25082: if (__x == _Tp(0)) 25082: { 25082: if (__nu == _Tp(0)) 25082: { 25082: __Inu = _Tp(1); 25082: __Ipnu = _Tp(0); 25082: } 25082: else if (__nu == _Tp(1)) 25082: { 25082: __Inu = _Tp(0); 25082: __Ipnu = _Tp(0.5L); 25082: } 25082: else 25082: { 25082: __Inu = _Tp(0); 25082: __Ipnu = _Tp(0); 25082: } 25082: __Knu = std::numeric_limits<_Tp>::infinity(); 25082: __Kpnu = -std::numeric_limits<_Tp>::infinity(); 25082: return; 25082: } 25082: 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: const _Tp __fp_min = _Tp(10) * std::numeric_limits<_Tp>::epsilon(); 25082: const int __max_iter = 15000; 25082: const _Tp __x_min = _Tp(2); 25082: 25082: const int __nl = static_cast(__nu + _Tp(0.5L)); 25082: 25082: const _Tp __mu = __nu - __nl; 25082: const _Tp __mu2 = __mu * __mu; 25082: const _Tp __xi = _Tp(1) / __x; 25082: const _Tp __xi2 = _Tp(2) * __xi; 25082: _Tp __h = __nu * __xi; 25082: if ( __h < __fp_min ) 25082: __h = __fp_min; 25082: _Tp __b = __xi2 * __nu; 25082: _Tp __d = _Tp(0); 25082: _Tp __c = __h; 25082: int __i; 25082: for ( __i = 1; __i <= __max_iter; ++__i ) 25082: { 25082: __b += __xi2; 25082: __d = _Tp(1) / (__b + __d); 25082: __c = __b + _Tp(1) / __c; 25082: const _Tp __del = __c * __d; 25082: __h *= __del; 25082: if (std::abs(__del - _Tp(1)) < __eps) 25082: break; 25082: } 25082: if (__i > __max_iter) 25082: std::__throw_runtime_error(("Argument x too large " "in __bessel_ik; " "try asymptotic expansion.") 25082: 25082: ); 25082: _Tp __Inul = __fp_min; 25082: _Tp __Ipnul = __h * __Inul; 25082: _Tp __Inul1 = __Inul; 25082: _Tp __Ipnu1 = __Ipnul; 25082: _Tp __fact = __nu * __xi; 25082: for (int __l = __nl; __l >= 1; --__l) 25082: { 25082: const _Tp __Inutemp = __fact * __Inul + __Ipnul; 25082: __fact -= __xi; 25082: __Ipnul = __fact * __Inutemp + __Inul; 25082: __Inul = __Inutemp; 25082: } 25082: _Tp __f = __Ipnul / __Inul; 25082: _Tp __Kmu, __Knu1; 25082: if (__x < __x_min) 25082: { 25082: const _Tp __x2 = __x / _Tp(2); 25082: const _Tp __pimu = __numeric_constants<_Tp>::__pi() * __mu; 25082: const _Tp __fact = (std::abs(__pimu) < __eps 25082: ? _Tp(1) : __pimu / std::sin(__pimu)); 25082: _Tp __d = -std::log(__x2); 25082: _Tp __e = __mu * __d; 25082: const _Tp __fact2 = (std::abs(__e) < __eps 25082: ? _Tp(1) : std::sinh(__e) / __e); 25082: _Tp __gam1, __gam2, __gampl, __gammi; 25082: __gamma_temme(__mu, __gam1, __gam2, __gampl, __gammi); 25082: _Tp __ff = __fact 25082: * (__gam1 * std::cosh(__e) + __gam2 * __fact2 * __d); 25082: _Tp __sum = __ff; 25082: __e = std::exp(__e); 25082: _Tp __p = __e / (_Tp(2) * __gampl); 25082: _Tp __q = _Tp(1) / (_Tp(2) * __e * __gammi); 25082: _Tp __c = _Tp(1); 25082: __d = __x2 * __x2; 25082: _Tp __sum1 = __p; 25082: int __i; 25082: for (__i = 1; __i <= __max_iter; ++__i) 25082: { 25082: __ff = (__i * __ff + __p + __q) / (__i * __i - __mu2); 25082: __c *= __d / __i; 25082: __p /= __i - __mu; 25082: __q /= __i + __mu; 25082: const _Tp __del = __c * __ff; 25082: __sum += __del; 25082: const _Tp __del1 = __c * (__p - __i * __ff); 25082: __sum1 += __del1; 25082: if (std::abs(__del) < __eps * std::abs(__sum)) 25082: break; 25082: } 25082: if (__i > __max_iter) 25082: std::__throw_runtime_error(("Bessel k series failed to converge " "in __bessel_ik.") 25082: ); 25082: __Kmu = __sum; 25082: __Knu1 = __sum1 * __xi2; 25082: } 25082: else 25082: { 25082: _Tp __b = _Tp(2) * (_Tp(1) + __x); 25082: _Tp __d = _Tp(1) / __b; 25082: _Tp __delh = __d; 25082: _Tp __h = __delh; 25082: _Tp __q1 = _Tp(0); 25082: _Tp __q2 = _Tp(1); 25082: _Tp __a1 = _Tp(0.25L) - __mu2; 25082: _Tp __q = __c = __a1; 25082: _Tp __a = -__a1; 25082: _Tp __s = _Tp(1) + __q * __delh; 25082: int __i; 25082: for (__i = 2; __i <= __max_iter; ++__i) 25082: { 25082: __a -= 2 * (__i - 1); 25082: __c = -__a * __c / __i; 25082: const _Tp __qnew = (__q1 - __b * __q2) / __a; 25082: __q1 = __q2; 25082: __q2 = __qnew; 25082: __q += __c * __qnew; 25082: __b += _Tp(2); 25082: __d = _Tp(1) / (__b + __a * __d); 25082: __delh = (__b * __d - _Tp(1)) * __delh; 25082: __h += __delh; 25082: const _Tp __dels = __q * __delh; 25082: __s += __dels; 25082: if ( std::abs(__dels / __s) < __eps ) 25082: break; 25082: } 25082: if (__i > __max_iter) 25082: std::__throw_runtime_error(("Steed's method failed " "in __bessel_ik.") 25082: ); 25082: __h = __a1 * __h; 25082: __Kmu = std::sqrt(__numeric_constants<_Tp>::__pi() / (_Tp(2) * __x)) 25082: * std::exp(-__x) / __s; 25082: __Knu1 = __Kmu * (__mu + __x + _Tp(0.5L) - __h) * __xi; 25082: } 25082: 25082: _Tp __Kpmu = __mu * __xi * __Kmu - __Knu1; 25082: _Tp __Inumu = __xi / (__f * __Kmu - __Kpmu); 25082: __Inu = __Inumu * __Inul1 / __Inul; 25082: __Ipnu = __Inumu * __Ipnu1 / __Inul; 25082: for ( __i = 1; __i <= __nl; ++__i ) 25082: { 25082: const _Tp __Knutemp = (__mu + __i) * __xi2 * __Knu1 + __Kmu; 25082: __Kmu = __Knu1; 25082: __Knu1 = __Knutemp; 25082: } 25082: __Knu = __Kmu; 25082: __Kpnu = __nu * __xi * __Kmu - __Knu1; 25082: 25082: return; 25082: } 25082: # 267 "/usr/include/c++/8/tr1/modified_bessel_func.tcc" 3 25082: template 25082: _Tp 25082: __cyl_bessel_i(_Tp __nu, _Tp __x) 25082: { 25082: if (__nu < _Tp(0) || __x < _Tp(0)) 25082: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_i.") 25082: ); 25082: else if (__isnan(__nu) || __isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__x * __x < _Tp(10) * (__nu + _Tp(1))) 25082: return __cyl_bessel_ij_series(__nu, __x, +_Tp(1), 200); 25082: else 25082: { 25082: _Tp __I_nu, __K_nu, __Ip_nu, __Kp_nu; 25082: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu); 25082: return __I_nu; 25082: } 25082: } 25082: # 303 "/usr/include/c++/8/tr1/modified_bessel_func.tcc" 3 25082: template 25082: _Tp 25082: __cyl_bessel_k(_Tp __nu, _Tp __x) 25082: { 25082: if (__nu < _Tp(0) || __x < _Tp(0)) 25082: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_k.") 25082: ); 25082: else if (__isnan(__nu) || __isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else 25082: { 25082: _Tp __I_nu, __K_nu, __Ip_nu, __Kp_nu; 25082: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu); 25082: return __K_nu; 25082: } 25082: } 25082: # 337 "/usr/include/c++/8/tr1/modified_bessel_func.tcc" 3 25082: template 25082: void 25082: __sph_bessel_ik(unsigned int __n, _Tp __x, 25082: _Tp & __i_n, _Tp & __k_n, _Tp & __ip_n, _Tp & __kp_n) 25082: { 25082: const _Tp __nu = _Tp(__n) + _Tp(0.5L); 25082: 25082: _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu; 25082: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu); 25082: 25082: const _Tp __factor = __numeric_constants<_Tp>::__sqrtpio2() 25082: / std::sqrt(__x); 25082: 25082: __i_n = __factor * __I_nu; 25082: __k_n = __factor * __K_nu; 25082: __ip_n = __factor * __Ip_nu - __i_n / (_Tp(2) * __x); 25082: __kp_n = __factor * __Kp_nu - __k_n / (_Tp(2) * __x); 25082: 25082: return; 25082: } 25082: # 373 "/usr/include/c++/8/tr1/modified_bessel_func.tcc" 3 25082: template 25082: void 25082: __airy(_Tp __x, _Tp & __Ai, _Tp & __Bi, _Tp & __Aip, _Tp & __Bip) 25082: { 25082: const _Tp __absx = std::abs(__x); 25082: const _Tp __rootx = std::sqrt(__absx); 25082: const _Tp __z = _Tp(2) * __absx * __rootx / _Tp(3); 25082: const _Tp _S_NaN = std::numeric_limits<_Tp>::quiet_NaN(); 25082: const _Tp _S_inf = std::numeric_limits<_Tp>::infinity(); 25082: 25082: if (__isnan(__x)) 25082: __Bip = __Aip = __Bi = __Ai = std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__z == _S_inf) 25082: { 25082: __Aip = __Ai = _Tp(0); 25082: __Bip = __Bi = _S_inf; 25082: } 25082: else if (__z == -_S_inf) 25082: __Bip = __Aip = __Bi = __Ai = _Tp(0); 25082: else if (__x > _Tp(0)) 25082: { 25082: _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu; 25082: 25082: __bessel_ik(_Tp(1) / _Tp(3), __z, __I_nu, __K_nu, __Ip_nu, __Kp_nu); 25082: __Ai = __rootx * __K_nu 25082: / (__numeric_constants<_Tp>::__sqrt3() 25082: * __numeric_constants<_Tp>::__pi()); 25082: __Bi = __rootx * (__K_nu / __numeric_constants<_Tp>::__pi() 25082: + _Tp(2) * __I_nu / __numeric_constants<_Tp>::__sqrt3()); 25082: 25082: __bessel_ik(_Tp(2) / _Tp(3), __z, __I_nu, __K_nu, __Ip_nu, __Kp_nu); 25082: __Aip = -__x * __K_nu 25082: / (__numeric_constants<_Tp>::__sqrt3() 25082: * __numeric_constants<_Tp>::__pi()); 25082: __Bip = __x * (__K_nu / __numeric_constants<_Tp>::__pi() 25082: + _Tp(2) * __I_nu 25082: / __numeric_constants<_Tp>::__sqrt3()); 25082: } 25082: else if (__x < _Tp(0)) 25082: { 25082: _Tp __J_nu, __Jp_nu, __N_nu, __Np_nu; 25082: 25082: __bessel_jn(_Tp(1) / _Tp(3), __z, __J_nu, __N_nu, __Jp_nu, __Np_nu); 25082: __Ai = __rootx * (__J_nu 25082: - __N_nu / __numeric_constants<_Tp>::__sqrt3()) / _Tp(2); 25082: __Bi = -__rootx * (__N_nu 25082: + __J_nu / __numeric_constants<_Tp>::__sqrt3()) / _Tp(2); 25082: 25082: __bessel_jn(_Tp(2) / _Tp(3), __z, __J_nu, __N_nu, __Jp_nu, __Np_nu); 25082: __Aip = __absx * (__N_nu / __numeric_constants<_Tp>::__sqrt3() 25082: + __J_nu) / _Tp(2); 25082: __Bip = __absx * (__J_nu / __numeric_constants<_Tp>::__sqrt3() 25082: - __N_nu) / _Tp(2); 25082: } 25082: else 25082: { 25082: 25082: 25082: 25082: __Ai = _Tp(0.35502805388781723926L); 25082: __Bi = __Ai * __numeric_constants<_Tp>::__sqrt3(); 25082: 25082: 25082: 25082: 25082: __Aip = -_Tp(0.25881940379280679840L); 25082: __Bip = -__Aip * __numeric_constants<_Tp>::__sqrt3(); 25082: } 25082: 25082: return; 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 57 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: # 1 "/usr/include/c++/8/tr1/poly_hermite.tcc" 1 3 25082: # 42 "/usr/include/c++/8/tr1/poly_hermite.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 56 "/usr/include/c++/8/tr1/poly_hermite.tcc" 3 25082: namespace __detail 25082: { 25082: # 72 "/usr/include/c++/8/tr1/poly_hermite.tcc" 3 25082: template 25082: _Tp 25082: __poly_hermite_recursion(unsigned int __n, _Tp __x) 25082: { 25082: 25082: _Tp __H_0 = 1; 25082: if (__n == 0) 25082: return __H_0; 25082: 25082: 25082: _Tp __H_1 = 2 * __x; 25082: if (__n == 1) 25082: return __H_1; 25082: 25082: 25082: _Tp __H_n, __H_nm1, __H_nm2; 25082: unsigned int __i; 25082: for (__H_nm2 = __H_0, __H_nm1 = __H_1, __i = 2; __i <= __n; ++__i) 25082: { 25082: __H_n = 2 * (__x * __H_nm1 - (__i - 1) * __H_nm2); 25082: __H_nm2 = __H_nm1; 25082: __H_nm1 = __H_n; 25082: } 25082: 25082: return __H_n; 25082: } 25082: # 114 "/usr/include/c++/8/tr1/poly_hermite.tcc" 3 25082: template 25082: inline _Tp 25082: __poly_hermite(unsigned int __n, _Tp __x) 25082: { 25082: if (__isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else 25082: return __poly_hermite_recursion(__n, __x); 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 58 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: # 1 "/usr/include/c++/8/tr1/poly_laguerre.tcc" 1 3 25082: # 44 "/usr/include/c++/8/tr1/poly_laguerre.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 60 "/usr/include/c++/8/tr1/poly_laguerre.tcc" 3 25082: namespace __detail 25082: { 25082: # 75 "/usr/include/c++/8/tr1/poly_laguerre.tcc" 3 25082: template 25082: _Tp 25082: __poly_laguerre_large_n(unsigned __n, _Tpa __alpha1, _Tp __x) 25082: { 25082: const _Tp __a = -_Tp(__n); 25082: const _Tp __b = _Tp(__alpha1) + _Tp(1); 25082: const _Tp __eta = _Tp(2) * __b - _Tp(4) * __a; 25082: const _Tp __cos2th = __x / __eta; 25082: const _Tp __sin2th = _Tp(1) - __cos2th; 25082: const _Tp __th = std::acos(std::sqrt(__cos2th)); 25082: const _Tp __pre_h = __numeric_constants<_Tp>::__pi_2() 25082: * __numeric_constants<_Tp>::__pi_2() 25082: * __eta * __eta * __cos2th * __sin2th; 25082: 25082: 25082: const _Tp __lg_b = ::std::lgamma(_Tp(__n) + __b); 25082: const _Tp __lnfact = ::std::lgamma(_Tp(__n + 1)); 25082: 25082: 25082: 25082: 25082: 25082: _Tp __pre_term1 = _Tp(0.5L) * (_Tp(1) - __b) 25082: * std::log(_Tp(0.25L) * __x * __eta); 25082: _Tp __pre_term2 = _Tp(0.25L) * std::log(__pre_h); 25082: _Tp __lnpre = __lg_b - __lnfact + _Tp(0.5L) * __x 25082: + __pre_term1 - __pre_term2; 25082: _Tp __ser_term1 = std::sin(__a * __numeric_constants<_Tp>::__pi()); 25082: _Tp __ser_term2 = std::sin(_Tp(0.25L) * __eta 25082: * (_Tp(2) * __th 25082: - std::sin(_Tp(2) * __th)) 25082: + __numeric_constants<_Tp>::__pi_4()); 25082: _Tp __ser = __ser_term1 + __ser_term2; 25082: 25082: return std::exp(__lnpre) * __ser; 25082: } 25082: # 129 "/usr/include/c++/8/tr1/poly_laguerre.tcc" 3 25082: template 25082: _Tp 25082: __poly_laguerre_hyperg(unsigned int __n, _Tpa __alpha1, _Tp __x) 25082: { 25082: const _Tp __b = _Tp(__alpha1) + _Tp(1); 25082: const _Tp __mx = -__x; 25082: const _Tp __tc_sgn = (__x < _Tp(0) ? _Tp(1) 25082: : ((__n % 2 == 1) ? -_Tp(1) : _Tp(1))); 25082: 25082: _Tp __tc = _Tp(1); 25082: const _Tp __ax = std::abs(__x); 25082: for (unsigned int __k = 1; __k <= __n; ++__k) 25082: __tc *= (__ax / __k); 25082: 25082: _Tp __term = __tc * __tc_sgn; 25082: _Tp __sum = __term; 25082: for (int __k = int(__n) - 1; __k >= 0; --__k) 25082: { 25082: __term *= ((__b + _Tp(__k)) / _Tp(int(__n) - __k)) 25082: * _Tp(__k + 1) / __mx; 25082: __sum += __term; 25082: } 25082: 25082: return __sum; 25082: } 25082: # 185 "/usr/include/c++/8/tr1/poly_laguerre.tcc" 3 25082: template 25082: _Tp 25082: __poly_laguerre_recursion(unsigned int __n, _Tpa __alpha1, _Tp __x) 25082: { 25082: 25082: _Tp __l_0 = _Tp(1); 25082: if (__n == 0) 25082: return __l_0; 25082: 25082: 25082: _Tp __l_1 = -__x + _Tp(1) + _Tp(__alpha1); 25082: if (__n == 1) 25082: return __l_1; 25082: 25082: 25082: _Tp __l_n2 = __l_0; 25082: _Tp __l_n1 = __l_1; 25082: _Tp __l_n = _Tp(0); 25082: for (unsigned int __nn = 2; __nn <= __n; ++__nn) 25082: { 25082: __l_n = (_Tp(2 * __nn - 1) + _Tp(__alpha1) - __x) 25082: * __l_n1 / _Tp(__nn) 25082: - (_Tp(__nn - 1) + _Tp(__alpha1)) * __l_n2 / _Tp(__nn); 25082: __l_n2 = __l_n1; 25082: __l_n1 = __l_n; 25082: } 25082: 25082: return __l_n; 25082: } 25082: # 244 "/usr/include/c++/8/tr1/poly_laguerre.tcc" 3 25082: template 25082: _Tp 25082: __poly_laguerre(unsigned int __n, _Tpa __alpha1, _Tp __x) 25082: { 25082: if (__x < _Tp(0)) 25082: std::__throw_domain_error(("Negative argument " "in __poly_laguerre.") 25082: ); 25082: 25082: else if (__isnan(__x)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__n == 0) 25082: return _Tp(1); 25082: else if (__n == 1) 25082: return _Tp(1) + _Tp(__alpha1) - __x; 25082: else if (__x == _Tp(0)) 25082: { 25082: _Tp __prod = _Tp(__alpha1) + _Tp(1); 25082: for (unsigned int __k = 2; __k <= __n; ++__k) 25082: __prod *= (_Tp(__alpha1) + _Tp(__k)) / _Tp(__k); 25082: return __prod; 25082: } 25082: else if (__n > 10000000 && _Tp(__alpha1) > -_Tp(1) 25082: && __x < _Tp(2) * (_Tp(__alpha1) + _Tp(1)) + _Tp(4 * __n)) 25082: return __poly_laguerre_large_n(__n, __alpha1, __x); 25082: else if (_Tp(__alpha1) >= _Tp(0) 25082: || (__x > _Tp(0) && _Tp(__alpha1) < -_Tp(__n + 1))) 25082: return __poly_laguerre_recursion(__n, __alpha1, __x); 25082: else 25082: return __poly_laguerre_hyperg(__n, __alpha1, __x); 25082: } 25082: # 296 "/usr/include/c++/8/tr1/poly_laguerre.tcc" 3 25082: template 25082: inline _Tp 25082: __assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x) 25082: { return __poly_laguerre(__n, __m, __x); } 25082: # 316 "/usr/include/c++/8/tr1/poly_laguerre.tcc" 3 25082: template 25082: inline _Tp 25082: __laguerre(unsigned int __n, _Tp __x) 25082: { return __poly_laguerre(__n, 0, __x); } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 59 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: # 1 "/usr/include/c++/8/tr1/riemann_zeta.tcc" 1 3 25082: # 47 "/usr/include/c++/8/tr1/riemann_zeta.tcc" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 63 "/usr/include/c++/8/tr1/riemann_zeta.tcc" 3 25082: namespace __detail 25082: { 25082: # 78 "/usr/include/c++/8/tr1/riemann_zeta.tcc" 3 25082: template 25082: _Tp 25082: __riemann_zeta_sum(_Tp __s) 25082: { 25082: 25082: if (__s < _Tp(1)) 25082: std::__throw_domain_error(("Bad argument in zeta sum.")); 25082: 25082: const unsigned int max_iter = 10000; 25082: _Tp __zeta = _Tp(0); 25082: for (unsigned int __k = 1; __k < max_iter; ++__k) 25082: { 25082: _Tp __term = std::pow(static_cast<_Tp>(__k), -__s); 25082: if (__term < std::numeric_limits<_Tp>::epsilon()) 25082: { 25082: break; 25082: } 25082: __zeta += __term; 25082: } 25082: 25082: return __zeta; 25082: } 25082: # 115 "/usr/include/c++/8/tr1/riemann_zeta.tcc" 3 25082: template 25082: _Tp 25082: __riemann_zeta_alt(_Tp __s) 25082: { 25082: _Tp __sgn = _Tp(1); 25082: _Tp __zeta = _Tp(0); 25082: for (unsigned int __i = 1; __i < 10000000; ++__i) 25082: { 25082: _Tp __term = __sgn / std::pow(__i, __s); 25082: if (std::abs(__term) < std::numeric_limits<_Tp>::epsilon()) 25082: break; 25082: __zeta += __term; 25082: __sgn *= _Tp(-1); 25082: } 25082: __zeta /= _Tp(1) - std::pow(_Tp(2), _Tp(1) - __s); 25082: 25082: return __zeta; 25082: } 25082: # 157 "/usr/include/c++/8/tr1/riemann_zeta.tcc" 3 25082: template 25082: _Tp 25082: __riemann_zeta_glob(_Tp __s) 25082: { 25082: _Tp __zeta = _Tp(0); 25082: 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: 25082: const _Tp __max_bincoeff = std::numeric_limits<_Tp>::max_exponent10 25082: * std::log(_Tp(10)) - _Tp(1); 25082: 25082: 25082: 25082: if (__s < _Tp(0)) 25082: { 25082: 25082: if (::std::fmod(__s,_Tp(2)) == _Tp(0)) 25082: return _Tp(0); 25082: else 25082: 25082: { 25082: _Tp __zeta = __riemann_zeta_glob(_Tp(1) - __s); 25082: __zeta *= std::pow(_Tp(2) 25082: * __numeric_constants<_Tp>::__pi(), __s) 25082: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s) 25082: 25082: * std::exp(::std::lgamma(_Tp(1) - __s)) 25082: 25082: 25082: 25082: / __numeric_constants<_Tp>::__pi(); 25082: return __zeta; 25082: } 25082: } 25082: 25082: _Tp __num = _Tp(0.5L); 25082: const unsigned int __maxit = 10000; 25082: for (unsigned int __i = 0; __i < __maxit; ++__i) 25082: { 25082: bool __punt = false; 25082: _Tp __sgn = _Tp(1); 25082: _Tp __term = _Tp(0); 25082: for (unsigned int __j = 0; __j <= __i; ++__j) 25082: { 25082: 25082: _Tp __bincoeff = ::std::lgamma(_Tp(1 + __i)) 25082: - ::std::lgamma(_Tp(1 + __j)) 25082: - ::std::lgamma(_Tp(1 + __i - __j)); 25082: 25082: 25082: 25082: 25082: 25082: if (__bincoeff > __max_bincoeff) 25082: { 25082: 25082: __punt = true; 25082: break; 25082: } 25082: __bincoeff = std::exp(__bincoeff); 25082: __term += __sgn * __bincoeff * std::pow(_Tp(1 + __j), -__s); 25082: __sgn *= _Tp(-1); 25082: } 25082: if (__punt) 25082: break; 25082: __term *= __num; 25082: __zeta += __term; 25082: if (std::abs(__term/__zeta) < __eps) 25082: break; 25082: __num *= _Tp(0.5L); 25082: } 25082: 25082: __zeta /= _Tp(1) - std::pow(_Tp(2), _Tp(1) - __s); 25082: 25082: return __zeta; 25082: } 25082: # 252 "/usr/include/c++/8/tr1/riemann_zeta.tcc" 3 25082: template 25082: _Tp 25082: __riemann_zeta_product(_Tp __s) 25082: { 25082: static const _Tp __prime[] = { 25082: _Tp(2), _Tp(3), _Tp(5), _Tp(7), _Tp(11), _Tp(13), _Tp(17), _Tp(19), 25082: _Tp(23), _Tp(29), _Tp(31), _Tp(37), _Tp(41), _Tp(43), _Tp(47), 25082: _Tp(53), _Tp(59), _Tp(61), _Tp(67), _Tp(71), _Tp(73), _Tp(79), 25082: _Tp(83), _Tp(89), _Tp(97), _Tp(101), _Tp(103), _Tp(107), _Tp(109) 25082: }; 25082: static const unsigned int __num_primes = sizeof(__prime) / sizeof(_Tp); 25082: 25082: _Tp __zeta = _Tp(1); 25082: for (unsigned int __i = 0; __i < __num_primes; ++__i) 25082: { 25082: const _Tp __fact = _Tp(1) - std::pow(__prime[__i], -__s); 25082: __zeta *= __fact; 25082: if (_Tp(1) - __fact < std::numeric_limits<_Tp>::epsilon()) 25082: break; 25082: } 25082: 25082: __zeta = _Tp(1) / __zeta; 25082: 25082: return __zeta; 25082: } 25082: # 293 "/usr/include/c++/8/tr1/riemann_zeta.tcc" 3 25082: template 25082: _Tp 25082: __riemann_zeta(_Tp __s) 25082: { 25082: if (__isnan(__s)) 25082: return std::numeric_limits<_Tp>::quiet_NaN(); 25082: else if (__s == _Tp(1)) 25082: return std::numeric_limits<_Tp>::infinity(); 25082: else if (__s < -_Tp(19)) 25082: { 25082: _Tp __zeta = __riemann_zeta_product(_Tp(1) - __s); 25082: __zeta *= std::pow(_Tp(2) * __numeric_constants<_Tp>::__pi(), __s) 25082: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s) 25082: 25082: * std::exp(::std::lgamma(_Tp(1) - __s)) 25082: 25082: 25082: 25082: / __numeric_constants<_Tp>::__pi(); 25082: return __zeta; 25082: } 25082: else if (__s < _Tp(20)) 25082: { 25082: 25082: bool __glob = true; 25082: if (__glob) 25082: return __riemann_zeta_glob(__s); 25082: else 25082: { 25082: if (__s > _Tp(1)) 25082: return __riemann_zeta_sum(__s); 25082: else 25082: { 25082: _Tp __zeta = std::pow(_Tp(2) 25082: * __numeric_constants<_Tp>::__pi(), __s) 25082: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s) 25082: 25082: * ::std::tgamma(_Tp(1) - __s) 25082: 25082: 25082: 25082: * __riemann_zeta_sum(_Tp(1) - __s); 25082: return __zeta; 25082: } 25082: } 25082: } 25082: else 25082: return __riemann_zeta_product(__s); 25082: } 25082: # 365 "/usr/include/c++/8/tr1/riemann_zeta.tcc" 3 25082: template 25082: _Tp 25082: __hurwitz_zeta_glob(_Tp __a, _Tp __s) 25082: { 25082: _Tp __zeta = _Tp(0); 25082: 25082: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); 25082: 25082: const _Tp __max_bincoeff = std::numeric_limits<_Tp>::max_exponent10 25082: * std::log(_Tp(10)) - _Tp(1); 25082: 25082: const unsigned int __maxit = 10000; 25082: for (unsigned int __i = 0; __i < __maxit; ++__i) 25082: { 25082: bool __punt = false; 25082: _Tp __sgn = _Tp(1); 25082: _Tp __term = _Tp(0); 25082: for (unsigned int __j = 0; __j <= __i; ++__j) 25082: { 25082: 25082: _Tp __bincoeff = ::std::lgamma(_Tp(1 + __i)) 25082: - ::std::lgamma(_Tp(1 + __j)) 25082: - ::std::lgamma(_Tp(1 + __i - __j)); 25082: 25082: 25082: 25082: 25082: 25082: if (__bincoeff > __max_bincoeff) 25082: { 25082: 25082: __punt = true; 25082: break; 25082: } 25082: __bincoeff = std::exp(__bincoeff); 25082: __term += __sgn * __bincoeff * std::pow(_Tp(__a + __j), -__s); 25082: __sgn *= _Tp(-1); 25082: } 25082: if (__punt) 25082: break; 25082: __term /= _Tp(__i + 1); 25082: if (std::abs(__term / __zeta) < __eps) 25082: break; 25082: __zeta += __term; 25082: } 25082: 25082: __zeta /= __s - _Tp(1); 25082: 25082: return __zeta; 25082: } 25082: # 430 "/usr/include/c++/8/tr1/riemann_zeta.tcc" 3 25082: template 25082: inline _Tp 25082: __hurwitz_zeta(_Tp __a, _Tp __s) 25082: { return __hurwitz_zeta_glob(__a, __s); } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 60 "/usr/include/c++/8/bits/specfun.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 205 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: assoc_laguerref(unsigned int __n, unsigned int __m, float __x) 25082: { return __detail::__assoc_laguerre(__n, __m, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x) 25082: { return __detail::__assoc_laguerre(__n, __m, __x); } 25082: # 250 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__assoc_laguerre<__type>(__n, __m, __x); 25082: } 25082: # 266 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: assoc_legendref(unsigned int __l, unsigned int __m, float __x) 25082: { return __detail::__assoc_legendre_p(__l, __m, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: assoc_legendrel(unsigned int __l, unsigned int __m, long double __x) 25082: { return __detail::__assoc_legendre_p(__l, __m, __x); } 25082: # 296 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__assoc_legendre_p<__type>(__l, __m, __x); 25082: } 25082: # 311 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: betaf(float __a, float __b) 25082: { return __detail::__beta(__a, __b); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: betal(long double __a, long double __b) 25082: { return __detail::__beta(__a, __b); } 25082: # 341 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type 25082: beta(_Tpa __a, _Tpb __b) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type __type; 25082: return __detail::__beta<__type>(__a, __b); 25082: } 25082: # 357 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: comp_ellint_1f(float __k) 25082: { return __detail::__comp_ellint_1(__k); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: comp_ellint_1l(long double __k) 25082: { return __detail::__comp_ellint_1(__k); } 25082: # 389 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: comp_ellint_1(_Tp __k) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__comp_ellint_1<__type>(__k); 25082: } 25082: # 405 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: comp_ellint_2f(float __k) 25082: { return __detail::__comp_ellint_2(__k); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: comp_ellint_2l(long double __k) 25082: { return __detail::__comp_ellint_2(__k); } 25082: # 436 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: comp_ellint_2(_Tp __k) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__comp_ellint_2<__type>(__k); 25082: } 25082: # 452 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: comp_ellint_3f(float __k, float __nu) 25082: { return __detail::__comp_ellint_3(__k, __nu); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: comp_ellint_3l(long double __k, long double __nu) 25082: { return __detail::__comp_ellint_3(__k, __nu); } 25082: # 487 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type 25082: comp_ellint_3(_Tp __k, _Tpn __nu) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type; 25082: return __detail::__comp_ellint_3<__type>(__k, __nu); 25082: } 25082: # 503 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: cyl_bessel_if(float __nu, float __x) 25082: { return __detail::__cyl_bessel_i(__nu, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: cyl_bessel_il(long double __nu, long double __x) 25082: { return __detail::__cyl_bessel_i(__nu, __x); } 25082: # 533 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type 25082: cyl_bessel_i(_Tpnu __nu, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; 25082: return __detail::__cyl_bessel_i<__type>(__nu, __x); 25082: } 25082: # 549 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: cyl_bessel_jf(float __nu, float __x) 25082: { return __detail::__cyl_bessel_j(__nu, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: cyl_bessel_jl(long double __nu, long double __x) 25082: { return __detail::__cyl_bessel_j(__nu, __x); } 25082: # 579 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type 25082: cyl_bessel_j(_Tpnu __nu, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; 25082: return __detail::__cyl_bessel_j<__type>(__nu, __x); 25082: } 25082: # 595 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: cyl_bessel_kf(float __nu, float __x) 25082: { return __detail::__cyl_bessel_k(__nu, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: cyl_bessel_kl(long double __nu, long double __x) 25082: { return __detail::__cyl_bessel_k(__nu, __x); } 25082: # 631 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type 25082: cyl_bessel_k(_Tpnu __nu, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; 25082: return __detail::__cyl_bessel_k<__type>(__nu, __x); 25082: } 25082: # 647 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: cyl_neumannf(float __nu, float __x) 25082: { return __detail::__cyl_neumann_n(__nu, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: cyl_neumannl(long double __nu, long double __x) 25082: { return __detail::__cyl_neumann_n(__nu, __x); } 25082: # 679 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type 25082: cyl_neumann(_Tpnu __nu, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; 25082: return __detail::__cyl_neumann_n<__type>(__nu, __x); 25082: } 25082: # 695 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: ellint_1f(float __k, float __phi) 25082: { return __detail::__ellint_1(__k, __phi); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: ellint_1l(long double __k, long double __phi) 25082: { return __detail::__ellint_1(__k, __phi); } 25082: # 727 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type 25082: ellint_1(_Tp __k, _Tpp __phi) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type; 25082: return __detail::__ellint_1<__type>(__k, __phi); 25082: } 25082: # 743 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: ellint_2f(float __k, float __phi) 25082: { return __detail::__ellint_2(__k, __phi); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: ellint_2l(long double __k, long double __phi) 25082: { return __detail::__ellint_2(__k, __phi); } 25082: # 775 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type 25082: ellint_2(_Tp __k, _Tpp __phi) 25082: { 25082: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type; 25082: return __detail::__ellint_2<__type>(__k, __phi); 25082: } 25082: # 791 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: ellint_3f(float __k, float __nu, float __phi) 25082: { return __detail::__ellint_3(__k, __nu, __phi); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: ellint_3l(long double __k, long double __nu, long double __phi) 25082: { return __detail::__ellint_3(__k, __nu, __phi); } 25082: # 828 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type 25082: ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi) 25082: { 25082: typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type; 25082: return __detail::__ellint_3<__type>(__k, __nu, __phi); 25082: } 25082: # 843 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: expintf(float __x) 25082: { return __detail::__expint(__x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: expintl(long double __x) 25082: { return __detail::__expint(__x); } 25082: # 868 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: expint(_Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__expint<__type>(__x); 25082: } 25082: # 884 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: hermitef(unsigned int __n, float __x) 25082: { return __detail::__poly_hermite(__n, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: hermitel(unsigned int __n, long double __x) 25082: { return __detail::__poly_hermite(__n, __x); } 25082: # 916 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: hermite(unsigned int __n, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__poly_hermite<__type>(__n, __x); 25082: } 25082: # 932 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: laguerref(unsigned int __n, float __x) 25082: { return __detail::__laguerre(__n, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: laguerrel(unsigned int __n, long double __x) 25082: { return __detail::__laguerre(__n, __x); } 25082: # 960 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: laguerre(unsigned int __n, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__laguerre<__type>(__n, __x); 25082: } 25082: # 976 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: legendref(unsigned int __l, float __x) 25082: { return __detail::__poly_legendre_p(__l, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: legendrel(unsigned int __l, long double __x) 25082: { return __detail::__poly_legendre_p(__l, __x); } 25082: # 1005 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: legendre(unsigned int __l, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__poly_legendre_p<__type>(__l, __x); 25082: } 25082: # 1021 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: riemann_zetaf(float __s) 25082: { return __detail::__riemann_zeta(__s); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: riemann_zetal(long double __s) 25082: { return __detail::__riemann_zeta(__s); } 25082: # 1056 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: riemann_zeta(_Tp __s) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__riemann_zeta<__type>(__s); 25082: } 25082: # 1072 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: sph_besself(unsigned int __n, float __x) 25082: { return __detail::__sph_bessel(__n, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: sph_bessell(unsigned int __n, long double __x) 25082: { return __detail::__sph_bessel(__n, __x); } 25082: # 1100 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: sph_bessel(unsigned int __n, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__sph_bessel<__type>(__n, __x); 25082: } 25082: # 1116 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: sph_legendref(unsigned int __l, unsigned int __m, float __theta) 25082: { return __detail::__sph_legendre(__l, __m, __theta); } 25082: # 1127 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline long double 25082: sph_legendrel(unsigned int __l, unsigned int __m, long double __theta) 25082: { return __detail::__sph_legendre(__l, __m, __theta); } 25082: # 1147 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__sph_legendre<__type>(__l, __m, __theta); 25082: } 25082: # 1163 "/usr/include/c++/8/bits/specfun.h" 3 25082: inline float 25082: sph_neumannf(unsigned int __n, float __x) 25082: { return __detail::__sph_neumann(__n, __x); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline long double 25082: sph_neumannl(unsigned int __n, long double __x) 25082: { return __detail::__sph_neumann(__n, __x); } 25082: # 1191 "/usr/include/c++/8/bits/specfun.h" 3 25082: template 25082: inline typename __gnu_cxx::__promote<_Tp>::__type 25082: sph_neumann(unsigned int __n, _Tp __x) 25082: { 25082: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; 25082: return __detail::__sph_neumann<__type>(__n, __x); 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: # 1383 "/usr/include/c++/8/bits/specfun.h" 3 25082: #pragma GCC visibility pop 25082: # 1893 "/usr/include/c++/8/cmath" 2 3 25082: 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/ColumnDecimal.h" 2 3 4 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int LOGICAL_ERROR; 25082: } 25082: 25082: 25082: template 25082: class DecimalPaddedPODArray : public PaddedPODArray 25082: { 25082: public: 25082: using Base = PaddedPODArray; 25082: using Base::operator[]; 25082: 25082: DecimalPaddedPODArray(size_t size, UInt32 scale_) 25082: : Base(size), 25082: scale(scale_) 25082: {} 25082: 25082: DecimalPaddedPODArray(const DecimalPaddedPODArray & other) 25082: : Base(other.begin(), other.end()), 25082: scale(other.scale) 25082: {} 25082: 25082: DecimalPaddedPODArray(DecimalPaddedPODArray && other) 25082: { 25082: this->swap(other); 25082: std::swap(scale, other.scale); 25082: } 25082: 25082: DecimalPaddedPODArray & operator=(DecimalPaddedPODArray && other) 25082: { 25082: this->swap(other); 25082: std::swap(scale, other.scale); 25082: return *this; 25082: } 25082: 25082: UInt32 getScale() const { return scale; } 25082: 25082: private: 25082: UInt32 scale; 25082: }; 25082: 25082: 25082: 25082: template 25082: class ColumnDecimal final : public COWPtrHelper> 25082: { 25082: static_assert(IsDecimalNumber); 25082: 25082: private: 25082: using Self = ColumnDecimal; 25082: friend class COWPtrHelper; 25082: 25082: public: 25082: using Container = DecimalPaddedPODArray; 25082: 25082: private: 25082: ColumnDecimal(const size_t n, UInt32 scale_) 25082: : data(n, scale_), 25082: scale(scale_) 25082: {} 25082: 25082: ColumnDecimal(const ColumnDecimal & src) 25082: : data(src.data), 25082: scale(src.scale) 25082: {} 25082: 25082: public: 25082: const char * getFamilyName() const override { return TypeName::get(); } 25082: 25082: bool isNumeric() const override { return false; } 25082: bool canBeInsideNullable() const override { return true; } 25082: bool isFixedAndContiguous() const override { return true; } 25082: size_t sizeOfValueIfFixed() const override { return sizeof(T); } 25082: 25082: size_t size() const override { return data.size(); } 25082: size_t byteSize() const override { return data.size() * sizeof(data[0]); } 25082: size_t allocatedBytes() const override { return data.allocated_bytes(); } 25082: void reserve(size_t n) override { data.reserve(n); } 25082: 25082: void insertFrom(const IColumn & src, size_t n) override { data.push_back(static_cast(src).getData()[n]); } 25082: void insertData(const char * pos, size_t ) override; 25082: void insertDefault() override { data.push_back(T()); } 25082: void insert(const Field & x) override { data.push_back(DB::get>(x)); } 25082: void insertRangeFrom(const IColumn & src, size_t start, size_t length) override; 25082: 25082: void popBack(size_t n) override { data.resize_assume_reserved(data.size() - n); } 25082: 25082: StringRef serializeValueIntoArena(size_t n, Arena & arena, char const *& begin) const override; 25082: const char * deserializeAndInsertFromArena(const char * pos) override; 25082: void updateHashWithValue(size_t n, SipHash & hash) const override; 25082: int compareAt(size_t n, size_t m, const IColumn & rhs_, int nan_direction_hint) const override; 25082: void getPermutation(bool reverse, size_t limit, int nan_direction_hint, IColumn::Permutation & res) const override; 25082: 25082: MutableColumnPtr cloneResized(size_t size) const override; 25082: 25082: Field operator[](size_t n) const override { return DecimalField(data[n], scale); } 25082: 25082: StringRef getRawData() const override { return StringRef(reinterpret_cast(data.data()), data.size()); } 25082: StringRef getDataAt(size_t n) const override { return StringRef(reinterpret_cast(&data[n]), sizeof(data[n])); } 25082: void get(size_t n, Field & res) const override { res = (*this)[n]; } 25082: bool getBool(size_t n) const override { return bool(data[n]); } 25082: Int64 getInt(size_t n) const override { return Int64(data[n] * scale); } 25082: UInt64 get64(size_t n) const override; 25082: bool isDefaultAt(size_t n) const override { return data[n] == 0; } 25082: 25082: ColumnPtr filter(const IColumn::Filter & filt, ssize_t result_size_hint) const override; 25082: ColumnPtr permute(const IColumn::Permutation & perm, size_t limit) const override; 25082: ColumnPtr index(const IColumn & indexes, size_t limit) const override; 25082: 25082: template 25082: ColumnPtr indexImpl(const PaddedPODArray & indexes, size_t limit) const; 25082: 25082: ColumnPtr replicate(const IColumn::Offsets & offsets) const override; 25082: void getExtremes(Field & min, Field & max) const override; 25082: 25082: MutableColumns scatter(IColumn::ColumnIndex num_columns, const IColumn::Selector & selector) const override 25082: { 25082: return this->template scatterImpl(num_columns, selector); 25082: } 25082: 25082: void gather(ColumnGathererStream & gatherer_stream) override; 25082: 25082: 25082: void insert(const T value) { data.push_back(value); } 25082: Container & getData() { return data; } 25082: const Container & getData() const { return data; } 25082: const T & getElement(size_t n) const { return data[n]; } 25082: T & getElement(size_t n) { return data[n]; } 25082: 25082: protected: 25082: Container data; 25082: UInt32 scale; 25082: 25082: template 25082: void permutation(bool reverse, size_t limit, PaddedPODArray & res) const 25082: { 25082: size_t s = data.size(); 25082: res.resize(s); 25082: for (U i = 0; i < s; ++i) 25082: res[i] = i; 25082: 25082: auto sort_end = res.end(); 25082: if (limit && limit < s) 25082: sort_end = res.begin() + limit; 25082: 25082: if (reverse) 25082: std::partial_sort(res.begin(), sort_end, res.end(), [this](size_t a, size_t b) { return data[a] > data[b]; }); 25082: else 25082: std::partial_sort(res.begin(), sort_end, res.end(), [this](size_t a, size_t b) { return data[a] < data[b]; }); 25082: } 25082: }; 25082: 25082: template 25082: template 25082: ColumnPtr ColumnDecimal::indexImpl(const PaddedPODArray & indexes, size_t limit) const 25082: { 25082: size_t size = indexes.size(); 25082: 25082: if (limit == 0) 25082: limit = size; 25082: else 25082: limit = std::min(size, limit); 25082: 25082: auto res = this->create(limit, scale); 25082: typename Self::Container & res_data = res->getData(); 25082: for (size_t i = 0; i < limit; ++i) 25082: res_data[i] = data[indexes[i]]; 25082: 25082: return std::move(res); 25082: } 25082: 25082: } 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypesDecimal.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int ARGUMENT_OUT_OF_BOUND; 25082: extern const int CANNOT_CONVERT_TYPE; 25082: extern const int DECIMAL_OVERFLOW; 25082: } 25082: 25082: class Context; 25082: bool decimalCheckComparisonOverflow(const Context & context); 25082: bool decimalCheckArithmeticOverflow(const Context & context); 25082: 25082: 25082: static constexpr size_t minDecimalPrecision() { return 1; } 25082: template static constexpr size_t maxDecimalPrecision() { return 0; } 25082: template <> constexpr size_t maxDecimalPrecision() { return 9; } 25082: template <> constexpr size_t maxDecimalPrecision() { return 18; } 25082: template <> constexpr size_t maxDecimalPrecision() { return 38; } 25082: 25082: 25082: DataTypePtr createDecimal(UInt64 precision, UInt64 scale); 25082: 25082: inline UInt32 leastDecimalPrecisionFor(TypeIndex int_type) 25082: { 25082: switch (int_type) 25082: { 25082: case TypeIndex::Int8: [[fallthrough]]; 25082: case TypeIndex::UInt8: 25082: return 3; 25082: case TypeIndex::Int16: [[fallthrough]]; 25082: case TypeIndex::UInt16: 25082: return 5; 25082: case TypeIndex::Int32: [[fallthrough]]; 25082: case TypeIndex::UInt32: 25082: return 10; 25082: case TypeIndex::Int64: 25082: return 19; 25082: case TypeIndex::UInt64: 25082: return 20; 25082: default: 25082: break; 25082: }; 25082: return 0; 25082: } 25082: # 65 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypesDecimal.h" 3 4 25082: template 25082: class DataTypeDecimal final : public DataTypeWithSimpleSerialization 25082: { 25082: static_assert(IsDecimalNumber); 25082: 25082: public: 25082: using FieldType = T; 25082: using ColumnType = ColumnDecimal; 25082: 25082: static constexpr bool is_parametric = true; 25082: 25082: static constexpr size_t maxPrecision() { return maxDecimalPrecision(); } 25082: 25082: DataTypeDecimal(UInt32 precision_, UInt32 scale_) 25082: : precision(precision_), 25082: scale(scale_) 25082: { 25082: if ((__builtin_expect(!!(precision < 1 || precision > maxPrecision()), 0))) 25082: throw Exception("Precision is out of bounds", ErrorCodes::ARGUMENT_OUT_OF_BOUND); 25082: if ((__builtin_expect(!!(scale < 0 || static_cast(scale) > maxPrecision()), 0))) 25082: throw Exception("Scale is out of bounds", ErrorCodes::ARGUMENT_OUT_OF_BOUND); 25082: } 25082: 25082: const char * getFamilyName() const override { return "Decimal"; } 25082: std::string getName() const override; 25082: TypeIndex getTypeId() const override { return TypeId::value; } 25082: 25082: void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeText(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: 25082: void serializeBinary(const Field & field, WriteBuffer & ostr) const override; 25082: void serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; 25082: void serializeBinaryBulk(const IColumn & column, WriteBuffer & ostr, size_t offset, size_t limit) const override; 25082: 25082: void deserializeBinary(Field & field, ReadBuffer & istr) const override; 25082: void deserializeBinary(IColumn & column, ReadBuffer & istr) const override; 25082: void deserializeBinaryBulk(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const override; 25082: 25082: Field getDefault() const override; 25082: MutableColumnPtr createColumn() const override; 25082: bool equals(const IDataType & rhs) const override; 25082: 25082: bool isParametric() const override { return true; } 25082: bool haveSubtypes() const override { return false; } 25082: bool shouldAlignRightInPrettyFormats() const override { return true; } 25082: bool textCanContainOnlyValidUTF8() const override { return true; } 25082: bool isComparable() const override { return true; } 25082: bool isValueRepresentedByNumber() const override { return true; } 25082: bool isValueUnambiguouslyRepresentedInContiguousMemoryRegion() const override { return true; } 25082: bool haveMaximumSizeOfValue() const override { return true; } 25082: size_t getSizeOfValueInMemory() const override { return sizeof(T); } 25082: 25082: bool isSummable() const override { return true; } 25082: bool canBeUsedInBooleanContext() const override { return true; } 25082: bool canBeInsideNullable() const override { return true; } 25082: 25082: 25082: 25082: UInt32 getPrecision() const { return precision; } 25082: UInt32 getScale() const { return scale; } 25082: T getScaleMultiplier() const { return getScaleMultiplier(scale); } 25082: 25082: T wholePart(T x) const 25082: { 25082: if (scale == 0) 25082: return x; 25082: return x / getScaleMultiplier(); 25082: } 25082: 25082: T fractionalPart(T x) const 25082: { 25082: if (scale == 0) 25082: return 0; 25082: if (x < T(0)) 25082: x *= T(-1); 25082: return x % getScaleMultiplier(); 25082: } 25082: 25082: T maxWholeValue() const { return getScaleMultiplier(maxPrecision() - scale) - T(1); } 25082: 25082: bool canStoreWhole(T x) const 25082: { 25082: T max = maxWholeValue(); 25082: if (x > max || x < -max) 25082: return false; 25082: return true; 25082: } 25082: 25082: 25082: template 25082: T scaleFactorFor(const DataTypeDecimal & x, bool) const 25082: { 25082: if (getScale() < x.getScale()) 25082: throw Exception("Decimal result's scale is less then argiment's one", ErrorCodes::ARGUMENT_OUT_OF_BOUND); 25082: UInt32 scale_delta = getScale() - x.getScale(); 25082: return getScaleMultiplier(scale_delta); 25082: } 25082: 25082: template 25082: T scaleFactorFor(const DataTypeNumber & , bool is_multiply_or_divisor) const 25082: { 25082: if (is_multiply_or_divisor) 25082: return 1; 25082: return getScaleMultiplier(); 25082: } 25082: 25082: T parseFromString(const String & str) const; 25082: 25082: void readText(T & x, ReadBuffer & istr) const { readText(x, istr, precision, scale); } 25082: static void readText(T & x, ReadBuffer & istr, UInt32 precision, UInt32 scale); 25082: static T getScaleMultiplier(UInt32 scale); 25082: 25082: private: 25082: const UInt32 precision; 25082: const UInt32 scale; 25082: }; 25082: 25082: 25082: template 25082: typename std::enable_if_t<(sizeof(T) >= sizeof(U)), const DataTypeDecimal> 25082: decimalResultType(const DataTypeDecimal & tx, const DataTypeDecimal & ty, bool is_multiply, bool is_divide) 25082: { 25082: UInt32 scale = (tx.getScale() > ty.getScale() ? tx.getScale() : ty.getScale()); 25082: if (is_multiply) 25082: scale = tx.getScale() + ty.getScale(); 25082: else if (is_divide) 25082: scale = tx.getScale(); 25082: return DataTypeDecimal(maxDecimalPrecision(), scale); 25082: } 25082: 25082: template 25082: typename std::enable_if_t<(sizeof(T) < sizeof(U)), const DataTypeDecimal> 25082: decimalResultType(const DataTypeDecimal & tx, const DataTypeDecimal & ty, bool is_multiply, bool is_divide) 25082: { 25082: UInt32 scale = (tx.getScale() > ty.getScale() ? tx.getScale() : ty.getScale()); 25082: if (is_multiply) 25082: scale = tx.getScale() * ty.getScale(); 25082: else if (is_divide) 25082: scale = tx.getScale(); 25082: return DataTypeDecimal(maxDecimalPrecision(), scale); 25082: } 25082: 25082: template 25082: const DataTypeDecimal decimalResultType(const DataTypeDecimal & tx, const DataTypeNumber &, bool, bool) 25082: { 25082: return DataTypeDecimal(maxDecimalPrecision(), tx.getScale()); 25082: } 25082: 25082: template 25082: const DataTypeDecimal decimalResultType(const DataTypeNumber &, const DataTypeDecimal & ty, bool, bool) 25082: { 25082: return DataTypeDecimal(maxDecimalPrecision(), ty.getScale()); 25082: } 25082: 25082: 25082: template 25082: inline const DataTypeDecimal * checkDecimal(const IDataType & data_type) 25082: { 25082: return typeid_cast *>(&data_type); 25082: } 25082: 25082: inline UInt32 getDecimalScale(const IDataType & data_type, UInt32 default_value = std::numeric_limits::max()) 25082: { 25082: if (auto * decimal_type = checkDecimal(data_type)) 25082: return decimal_type->getScale(); 25082: if (auto * decimal_type = checkDecimal(data_type)) 25082: return decimal_type->getScale(); 25082: if (auto * decimal_type = checkDecimal(data_type)) 25082: return decimal_type->getScale(); 25082: return default_value; 25082: } 25082: 25082: 25082: 25082: template constexpr bool IsDataTypeDecimal = false; 25082: template <> constexpr bool IsDataTypeDecimal> = true; 25082: template <> constexpr bool IsDataTypeDecimal> = true; 25082: template <> constexpr bool IsDataTypeDecimal> = true; 25082: 25082: template constexpr bool IsDataTypeDecimalOrNumber = IsDataTypeDecimal || IsDataTypeNumber; 25082: 25082: template 25082: inline std::enable_if_t && IsDataTypeDecimal, typename ToDataType::FieldType> 25082: convertDecimals(const typename FromDataType::FieldType & value, UInt32 scale_from, UInt32 scale_to) 25082: { 25082: using FromFieldType = typename FromDataType::FieldType; 25082: using ToFieldType = typename ToDataType::FieldType; 25082: using MaxFieldType = std::conditional_t<(sizeof(FromFieldType) > sizeof(ToFieldType)), FromFieldType, ToFieldType>; 25082: using MaxNativeType = typename MaxFieldType::NativeType; 25082: 25082: MaxNativeType converted_value; 25082: if (scale_to > scale_from) 25082: { 25082: converted_value = DataTypeDecimal::getScaleMultiplier(scale_to - scale_from); 25082: if (common::mulOverflow(static_cast(value), converted_value, converted_value)) 25082: throw Exception("Decimal convert overflow", ErrorCodes::DECIMAL_OVERFLOW); 25082: } 25082: else 25082: converted_value = value / DataTypeDecimal::getScaleMultiplier(scale_from - scale_to); 25082: 25082: if constexpr (sizeof(FromFieldType) > sizeof(ToFieldType)) 25082: { 25082: if (converted_value < std::numeric_limits::min() || 25082: converted_value > std::numeric_limits::max()) 25082: throw Exception("Decimal convert overflow", ErrorCodes::DECIMAL_OVERFLOW); 25082: } 25082: 25082: return converted_value; 25082: } 25082: 25082: template 25082: inline std::enable_if_t && IsDataTypeNumber, typename ToDataType::FieldType> 25082: convertFromDecimal(const typename FromDataType::FieldType & value, UInt32 scale) 25082: { 25082: using FromFieldType = typename FromDataType::FieldType; 25082: using ToFieldType = typename ToDataType::FieldType; 25082: 25082: if constexpr (std::is_floating_point_v) 25082: return static_cast(value) / FromDataType::getScaleMultiplier(scale); 25082: else 25082: { 25082: FromFieldType converted_value = convertDecimals(value, scale, 0); 25082: 25082: if constexpr (sizeof(FromFieldType) > sizeof(ToFieldType) || !std::numeric_limits::is_signed) 25082: { 25082: if constexpr (std::numeric_limits::is_signed) 25082: { 25082: if (converted_value < std::numeric_limits::min() || 25082: converted_value > std::numeric_limits::max()) 25082: throw Exception("Decimal convert overflow", ErrorCodes::DECIMAL_OVERFLOW); 25082: } 25082: else 25082: { 25082: using CastIntType = std::conditional_t, Int128, Int64>; 25082: 25082: if (converted_value < 0 || 25082: converted_value > static_cast(std::numeric_limits::max())) 25082: throw Exception("Decimal convert overflow", ErrorCodes::DECIMAL_OVERFLOW); 25082: } 25082: } 25082: return converted_value; 25082: } 25082: } 25082: 25082: template 25082: inline std::enable_if_t && IsDataTypeDecimal, typename ToDataType::FieldType> 25082: convertToDecimal(const typename FromDataType::FieldType & value, UInt32 scale) 25082: { 25082: using FromFieldType = typename FromDataType::FieldType; 25082: 25082: if constexpr (std::is_floating_point_v) 25082: return value * ToDataType::getScaleMultiplier(scale); 25082: else 25082: { 25082: if constexpr (std::is_same_v) 25082: if (value > static_cast(std::numeric_limits::max())) 25082: return convertDecimals, ToDataType>(value, 0, scale); 25082: return convertDecimals, ToDataType>(value, 0, scale); 25082: } 25082: } 25082: 25082: } 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypeDate.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: class DataTypeDate final : public DataTypeNumberBase 25082: { 25082: public: 25082: TypeIndex getTypeId() const override { return TypeIndex::Date; } 25082: const char * getFamilyName() const override { return "Date"; } 25082: 25082: void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextEscaped(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextQuoted(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextJSON(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const override; 25082: 25082: bool canBeUsedAsVersion() const override { return true; } 25082: bool canBeInsideNullable() const override { return true; } 25082: 25082: bool equals(const IDataType & rhs) const override; 25082: }; 25082: 25082: } 25082: # 6 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypeDateTime.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: class DateLUTImpl; 25082: 25082: namespace DB 25082: { 25082: # 31 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypeDateTime.h" 3 4 25082: class DataTypeDateTime final : public DataTypeNumberBase 25082: { 25082: public: 25082: DataTypeDateTime(const std::string & time_zone_name = ""); 25082: 25082: const char * getFamilyName() const override { return "DateTime"; } 25082: std::string getName() const override; 25082: TypeIndex getTypeId() const override { return TypeIndex::DateTime; } 25082: 25082: void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextEscaped(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextQuoted(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextJSON(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const override; 25082: 25082: bool canBeUsedAsVersion() const override { return true; } 25082: bool canBeInsideNullable() const override { return true; } 25082: 25082: bool equals(const IDataType & rhs) const override; 25082: 25082: const DateLUTImpl & getTimeZone() const { return time_zone; } 25082: 25082: private: 25082: bool has_explicit_time_zone; 25082: const DateLUTImpl & time_zone; 25082: const DateLUTImpl & utc_time_zone; 25082: }; 25082: 25082: } 25082: # 7 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypeInterval.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: # 17 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypeInterval.h" 3 4 25082: class DataTypeInterval final : public DataTypeNumberBase 25082: { 25082: public: 25082: enum Kind 25082: { 25082: Second, 25082: Minute, 25082: Hour, 25082: Day, 25082: Week, 25082: Month, 25082: Year 25082: }; 25082: 25082: private: 25082: Kind kind; 25082: 25082: public: 25082: static constexpr bool is_parametric = true; 25082: 25082: Kind getKind() const { return kind; } 25082: 25082: const char * kindToString() const 25082: { 25082: switch (kind) 25082: { 25082: case Second: return "Second"; 25082: case Minute: return "Minute"; 25082: case Hour: return "Hour"; 25082: case Day: return "Day"; 25082: case Week: return "Week"; 25082: case Month: return "Month"; 25082: case Year: return "Year"; 25082: default: __builtin_unreachable(); 25082: } 25082: } 25082: 25082: DataTypeInterval(Kind kind) : kind(kind) {} 25082: 25082: std::string getName() const override { return std::string("Interval") + kindToString(); } 25082: const char * getFamilyName() const override { return "Interval"; } 25082: TypeIndex getTypeId() const override { return TypeIndex::Interval; } 25082: 25082: bool equals(const IDataType & rhs) const override; 25082: 25082: bool isParametric() const override { return true; } 25082: bool cannotBeStoredInTables() const override { return true; } 25082: bool isCategorial() const override { return false; } 25082: }; 25082: 25082: } 25082: # 8 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypeAggregateFunction.h" 1 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/IAggregateFunction.h" 1 3 4 25082: 25082: # 13 "/build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/IAggregateFunction.h" 3 4 25082: namespace DB 25082: { 25082: 25082: class Arena; 25082: class ReadBuffer; 25082: class WriteBuffer; 25082: class IColumn; 25082: class IDataType; 25082: 25082: using DataTypePtr = std::shared_ptr; 25082: using DataTypes = std::vector; 25082: 25082: using AggregateDataPtr = char *; 25082: using ConstAggregateDataPtr = const char *; 25082: # 37 "/build/clickhouse-18.16.1+ds/dbms/src/AggregateFunctions/IAggregateFunction.h" 3 4 25082: class IAggregateFunction 25082: { 25082: public: 25082: 25082: virtual String getName() const = 0; 25082: 25082: 25082: virtual DataTypePtr getReturnType() const = 0; 25082: 25082: virtual ~IAggregateFunction() {} 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual void create(AggregateDataPtr place) const = 0; 25082: 25082: 25082: virtual void destroy(AggregateDataPtr place) const noexcept = 0; 25082: 25082: 25082: virtual bool hasTrivialDestructor() const = 0; 25082: 25082: 25082: virtual size_t sizeOfData() const = 0; 25082: 25082: 25082: virtual size_t alignOfData() const = 0; 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual void add(AggregateDataPtr place, const IColumn ** columns, size_t row_num, Arena * arena) const = 0; 25082: 25082: 25082: virtual void merge(AggregateDataPtr place, ConstAggregateDataPtr rhs, Arena * arena) const = 0; 25082: 25082: 25082: virtual void serialize(ConstAggregateDataPtr place, WriteBuffer & buf) const = 0; 25082: 25082: 25082: virtual void deserialize(AggregateDataPtr place, ReadBuffer & buf, Arena * arena) const = 0; 25082: 25082: 25082: virtual bool allocatesMemoryInArena() const 25082: { 25082: return false; 25082: } 25082: 25082: 25082: virtual void insertResultInto(ConstAggregateDataPtr place, IColumn & to) const = 0; 25082: 25082: 25082: 25082: 25082: virtual bool isState() const { return false; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: using AddFunc = void (*)(const IAggregateFunction *, AggregateDataPtr, const IColumn **, size_t, Arena *); 25082: virtual AddFunc getAddressOfAddFunction() const = 0; 25082: 25082: 25082: 25082: 25082: 25082: virtual const char * getHeaderFilePath() const = 0; 25082: }; 25082: 25082: 25082: 25082: template 25082: class IAggregateFunctionHelper : public IAggregateFunction 25082: { 25082: private: 25082: static void addFree(const IAggregateFunction * that, AggregateDataPtr place, const IColumn ** columns, size_t row_num, Arena * arena) 25082: { 25082: static_cast(*that).add(place, columns, row_num, arena); 25082: } 25082: 25082: public: 25082: AddFunc getAddressOfAddFunction() const override { return &addFree; } 25082: }; 25082: 25082: 25082: 25082: template 25082: class IAggregateFunctionDataHelper : public IAggregateFunctionHelper 25082: { 25082: protected: 25082: using Data = T; 25082: 25082: static Data & data(AggregateDataPtr place) { return *reinterpret_cast(place); } 25082: static const Data & data(ConstAggregateDataPtr place) { return *reinterpret_cast(place); } 25082: 25082: public: 25082: void create(AggregateDataPtr place) const override 25082: { 25082: new (place) Data; 25082: } 25082: 25082: void destroy(AggregateDataPtr place) const noexcept override 25082: { 25082: data(place).~Data(); 25082: } 25082: 25082: bool hasTrivialDestructor() const override 25082: { 25082: return std::is_trivially_destructible_v; 25082: } 25082: 25082: size_t sizeOfData() const override 25082: { 25082: return sizeof(Data); 25082: } 25082: 25082: 25082: size_t alignOfData() const override 25082: { 25082: return alignof(Data); 25082: } 25082: }; 25082: 25082: 25082: using AggregateFunctionPtr = std::shared_ptr; 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/DataTypeAggregateFunction.h" 2 3 4 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: 25082: class DataTypeAggregateFunction final : public IDataType 25082: { 25082: private: 25082: AggregateFunctionPtr function; 25082: DataTypes argument_types; 25082: Array parameters; 25082: 25082: public: 25082: static constexpr bool is_parametric = true; 25082: 25082: DataTypeAggregateFunction(const AggregateFunctionPtr & function_, const DataTypes & argument_types_, const Array & parameters_) 25082: : function(function_), argument_types(argument_types_), parameters(parameters_) 25082: { 25082: } 25082: 25082: std::string getFunctionName() const { return function->getName(); } 25082: AggregateFunctionPtr getFunction() const { return function; } 25082: 25082: std::string getName() const override; 25082: const char * getFamilyName() const override { return "AggregateFunction"; } 25082: TypeIndex getTypeId() const override { return TypeIndex::AggregateFunction; } 25082: 25082: bool canBeInsideNullable() const override { return false; } 25082: 25082: DataTypePtr getReturnType() const { return function->getReturnType(); } 25082: DataTypes getArgumentsDataTypes() const { return argument_types; } 25082: 25082: 25082: void serializeBinary(const Field & field, WriteBuffer & ostr) const override; 25082: void deserializeBinary(Field & field, ReadBuffer & istr) const override; 25082: 25082: void serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override; 25082: void deserializeBinary(IColumn & column, ReadBuffer & istr) const override; 25082: void serializeBinaryBulk(const IColumn & column, WriteBuffer & ostr, size_t offset, size_t limit) const override; 25082: void deserializeBinaryBulk(IColumn & column, ReadBuffer & istr, size_t limit, double avg_value_size_hint) const override; 25082: void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextEscaped(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: void serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextQuoted(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: void serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextJSON(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override; 25082: void serializeTextXML(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override; 25082: void deserializeTextCSV(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const override; 25082: 25082: MutableColumnPtr createColumn() const override; 25082: 25082: Field getDefault() const override; 25082: 25082: bool equals(const IDataType & rhs) const override; 25082: 25082: bool isParametric() const override { return true; } 25082: bool haveSubtypes() const override { return false; } 25082: bool shouldAlignRightInPrettyFormats() const override { return false; } 25082: }; 25082: 25082: 25082: } 25082: # 9 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/Native.h" 1 3 4 25082: 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/ColumnVector.h" 1 3 4 25082: 25082: 25082: # 1 "/usr/include/c++/8/cmath" 1 3 4 25082: # 39 "/usr/include/c++/8/cmath" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cmath" 3 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/ColumnVector.h" 2 3 4 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct CompareHelper 25082: { 25082: static bool less(T a, T b, int ) { return a < b; } 25082: static bool greater(T a, T b, int ) { return a > b; } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: static int compare(T a, T b, int ) 25082: { 25082: return a > b ? 1 : (a < b ? -1 : 0); 25082: } 25082: }; 25082: 25082: template 25082: struct FloatCompareHelper 25082: { 25082: static bool less(T a, T b, int nan_direction_hint) 25082: { 25082: bool isnan_a = std::isnan(a); 25082: bool isnan_b = std::isnan(b); 25082: 25082: if (isnan_a && isnan_b) 25082: return false; 25082: if (isnan_a) 25082: return nan_direction_hint < 0; 25082: if (isnan_b) 25082: return nan_direction_hint > 0; 25082: 25082: return a < b; 25082: } 25082: 25082: static bool greater(T a, T b, int nan_direction_hint) 25082: { 25082: bool isnan_a = std::isnan(a); 25082: bool isnan_b = std::isnan(b); 25082: 25082: if (isnan_a && isnan_b) 25082: return false; 25082: if (isnan_a) 25082: return nan_direction_hint > 0; 25082: if (isnan_b) 25082: return nan_direction_hint < 0; 25082: 25082: return a > b; 25082: } 25082: 25082: static int compare(T a, T b, int nan_direction_hint) 25082: { 25082: bool isnan_a = std::isnan(a); 25082: bool isnan_b = std::isnan(b); 25082: if ((__builtin_expect(!!(isnan_a || isnan_b), 0))) 25082: { 25082: if (isnan_a && isnan_b) 25082: return 0; 25082: 25082: return isnan_a 25082: ? nan_direction_hint 25082: : -nan_direction_hint; 25082: } 25082: 25082: return (T(0) < (a - b)) - ((a - b) < T(0)); 25082: } 25082: }; 25082: 25082: template <> struct CompareHelper : public FloatCompareHelper {}; 25082: template <> struct CompareHelper : public FloatCompareHelper {}; 25082: 25082: 25082: 25082: 25082: template 25082: inline UInt64 unionCastToUInt64(T x) { return x; } 25082: 25082: template <> inline UInt64 unionCastToUInt64(Float64 x) 25082: { 25082: union 25082: { 25082: Float64 src; 25082: UInt64 res; 25082: }; 25082: 25082: src = x; 25082: return res; 25082: } 25082: 25082: template <> inline UInt64 unionCastToUInt64(Float32 x) 25082: { 25082: union 25082: { 25082: Float32 src; 25082: UInt64 res; 25082: }; 25082: 25082: res = 0; 25082: src = x; 25082: return res; 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: class ColumnVector final : public COWPtrHelper> 25082: { 25082: static_assert(!IsDecimalNumber); 25082: 25082: private: 25082: using Self = ColumnVector; 25082: friend class COWPtrHelper; 25082: 25082: struct less; 25082: struct greater; 25082: 25082: public: 25082: using value_type = T; 25082: using Container = PaddedPODArray; 25082: 25082: private: 25082: ColumnVector() {} 25082: ColumnVector(const size_t n) : data(n) {} 25082: ColumnVector(const size_t n, const value_type x) : data(n, x) {} 25082: ColumnVector(const ColumnVector & src) : data(src.data.begin(), src.data.end()) {} 25082: 25082: 25082: ColumnVector(std::initializer_list il) : data{il} {} 25082: 25082: public: 25082: bool isNumeric() const override { return IsNumber; } 25082: 25082: size_t size() const override 25082: { 25082: return data.size(); 25082: } 25082: 25082: StringRef getDataAt(size_t n) const override 25082: { 25082: return StringRef(reinterpret_cast(&data[n]), sizeof(data[n])); 25082: } 25082: 25082: void insertFrom(const IColumn & src, size_t n) override 25082: { 25082: data.push_back(static_cast(src).getData()[n]); 25082: } 25082: 25082: void insertData(const char * pos, size_t ) override 25082: { 25082: data.push_back(*reinterpret_cast(pos)); 25082: } 25082: 25082: void insertDefault() override 25082: { 25082: data.push_back(T()); 25082: } 25082: 25082: void popBack(size_t n) override 25082: { 25082: data.resize_assume_reserved(data.size() - n); 25082: } 25082: 25082: StringRef serializeValueIntoArena(size_t n, Arena & arena, char const *& begin) const override; 25082: 25082: const char * deserializeAndInsertFromArena(const char * pos) override; 25082: 25082: void updateHashWithValue(size_t n, SipHash & hash) const override; 25082: 25082: size_t byteSize() const override 25082: { 25082: return data.size() * sizeof(data[0]); 25082: } 25082: 25082: size_t allocatedBytes() const override 25082: { 25082: return data.allocated_bytes(); 25082: } 25082: 25082: void insertValue(const T value) 25082: { 25082: data.push_back(value); 25082: } 25082: 25082: 25082: int compareAt(size_t n, size_t m, const IColumn & rhs_, int nan_direction_hint) const override 25082: { 25082: return CompareHelper::compare(data[n], static_cast(rhs_).data[m], nan_direction_hint); 25082: } 25082: 25082: void getPermutation(bool reverse, size_t limit, int nan_direction_hint, IColumn::Permutation & res) const override; 25082: 25082: void reserve(size_t n) override 25082: { 25082: data.reserve(n); 25082: } 25082: 25082: const char * getFamilyName() const override; 25082: 25082: MutableColumnPtr cloneResized(size_t size) const override; 25082: 25082: Field operator[](size_t n) const override 25082: { 25082: return data[n]; 25082: } 25082: 25082: void get(size_t n, Field & res) const override 25082: { 25082: res = (*this)[n]; 25082: } 25082: 25082: UInt64 get64(size_t n) const override; 25082: 25082: UInt64 getUInt(size_t n) const override 25082: { 25082: return UInt64(data[n]); 25082: } 25082: 25082: bool getBool(size_t n) const override 25082: { 25082: return bool(data[n]); 25082: } 25082: 25082: Int64 getInt(size_t n) const override 25082: { 25082: return Int64(data[n]); 25082: } 25082: 25082: void insert(const Field & x) override 25082: { 25082: data.push_back(DB::get>(x)); 25082: } 25082: 25082: void insertRangeFrom(const IColumn & src, size_t start, size_t length) override; 25082: 25082: ColumnPtr filter(const IColumn::Filter & filt, ssize_t result_size_hint) const override; 25082: 25082: ColumnPtr permute(const IColumn::Permutation & perm, size_t limit) const override; 25082: 25082: ColumnPtr index(const IColumn & indexes, size_t limit) const override; 25082: 25082: template 25082: ColumnPtr indexImpl(const PaddedPODArray & indexes, size_t limit) const; 25082: 25082: ColumnPtr replicate(const IColumn::Offsets & offsets) const override; 25082: 25082: void getExtremes(Field & min, Field & max) const override; 25082: 25082: MutableColumns scatter(IColumn::ColumnIndex num_columns, const IColumn::Selector & selector) const override 25082: { 25082: return this->template scatterImpl(num_columns, selector); 25082: } 25082: 25082: void gather(ColumnGathererStream & gatherer_stream) override; 25082: 25082: 25082: bool canBeInsideNullable() const override { return true; } 25082: 25082: bool isFixedAndContiguous() const override { return true; } 25082: size_t sizeOfValueIfFixed() const override { return sizeof(T); } 25082: StringRef getRawData() const override { return StringRef(reinterpret_cast(data.data()), data.size()); } 25082: 25082: 25082: Container & getData() 25082: { 25082: return data; 25082: } 25082: 25082: const Container & getData() const 25082: { 25082: return data; 25082: } 25082: 25082: const T & getElement(size_t n) const 25082: { 25082: return data[n]; 25082: } 25082: 25082: T & getElement(size_t n) 25082: { 25082: return data[n]; 25082: } 25082: 25082: protected: 25082: Container data; 25082: }; 25082: 25082: template 25082: template 25082: ColumnPtr ColumnVector::indexImpl(const PaddedPODArray & indexes, size_t limit) const 25082: { 25082: size_t size = indexes.size(); 25082: 25082: if (limit == 0) 25082: limit = size; 25082: else 25082: limit = std::min(size, limit); 25082: 25082: auto res = this->create(limit); 25082: typename Self::Container & res_data = res->getData(); 25082: for (size_t i = 0; i < limit; ++i) 25082: res_data[i] = data[indexes[i]]; 25082: 25082: return res; 25082: } 25082: 25082: } 25082: # 11 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/ColumnConst.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int NOT_IMPLEMENTED; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: class ColumnConst final : public COWPtrHelper 25082: { 25082: private: 25082: friend class COWPtrHelper; 25082: 25082: ColumnPtr data; 25082: size_t s; 25082: 25082: ColumnConst(const ColumnPtr & data, size_t s); 25082: ColumnConst(const ColumnConst & src) = default; 25082: 25082: public: 25082: ColumnPtr convertToFullColumn() const; 25082: 25082: ColumnPtr convertToFullColumnIfConst() const override 25082: { 25082: return convertToFullColumn(); 25082: } 25082: 25082: ColumnPtr removeLowCardinality() const; 25082: 25082: std::string getName() const override 25082: { 25082: return "Const(" + data->getName() + ")"; 25082: } 25082: 25082: const char * getFamilyName() const override 25082: { 25082: return "Const"; 25082: } 25082: 25082: MutableColumnPtr cloneResized(size_t new_size) const override 25082: { 25082: return ColumnConst::create(data, new_size); 25082: } 25082: 25082: size_t size() const override 25082: { 25082: return s; 25082: } 25082: 25082: Field operator[](size_t) const override 25082: { 25082: return (*data)[0]; 25082: } 25082: 25082: void get(size_t, Field & res) const override 25082: { 25082: data->get(0, res); 25082: } 25082: 25082: StringRef getDataAt(size_t) const override 25082: { 25082: return data->getDataAt(0); 25082: } 25082: 25082: StringRef getDataAtWithTerminatingZero(size_t) const override 25082: { 25082: return data->getDataAtWithTerminatingZero(0); 25082: } 25082: 25082: UInt64 get64(size_t) const override 25082: { 25082: return data->get64(0); 25082: } 25082: 25082: UInt64 getUInt(size_t) const override 25082: { 25082: return data->getUInt(0); 25082: } 25082: 25082: Int64 getInt(size_t) const override 25082: { 25082: return data->getInt(0); 25082: } 25082: 25082: bool getBool(size_t) const override 25082: { 25082: return data->getBool(0); 25082: } 25082: 25082: bool isNullAt(size_t) const override 25082: { 25082: return data->isNullAt(0); 25082: } 25082: 25082: void insertRangeFrom(const IColumn &, size_t , size_t length) override 25082: { 25082: s += length; 25082: } 25082: 25082: void insert(const Field &) override 25082: { 25082: ++s; 25082: } 25082: 25082: void insertData(const char *, size_t) override 25082: { 25082: ++s; 25082: } 25082: 25082: void insertFrom(const IColumn &, size_t) override 25082: { 25082: ++s; 25082: } 25082: 25082: void insertDefault() override 25082: { 25082: ++s; 25082: } 25082: 25082: void popBack(size_t n) override 25082: { 25082: s -= n; 25082: } 25082: 25082: StringRef serializeValueIntoArena(size_t, Arena & arena, char const *& begin) const override 25082: { 25082: return data->serializeValueIntoArena(0, arena, begin); 25082: } 25082: 25082: const char * deserializeAndInsertFromArena(const char * pos) override 25082: { 25082: auto & mutable_data = data->assumeMutableRef(); 25082: auto res = mutable_data.deserializeAndInsertFromArena(pos); 25082: mutable_data.popBack(1); 25082: ++s; 25082: return res; 25082: } 25082: 25082: void updateHashWithValue(size_t, SipHash & hash) const override 25082: { 25082: data->updateHashWithValue(0, hash); 25082: } 25082: 25082: ColumnPtr filter(const Filter & filt, ssize_t result_size_hint) const override; 25082: ColumnPtr replicate(const Offsets & offsets) const override; 25082: ColumnPtr permute(const Permutation & perm, size_t limit) const override; 25082: ColumnPtr index(const IColumn & indexes, size_t limit) const override; 25082: void getPermutation(bool reverse, size_t limit, int nan_direction_hint, Permutation & res) const override; 25082: 25082: size_t byteSize() const override 25082: { 25082: return data->byteSize() + sizeof(s); 25082: } 25082: 25082: size_t allocatedBytes() const override 25082: { 25082: return data->allocatedBytes() + sizeof(s); 25082: } 25082: 25082: int compareAt(size_t, size_t, const IColumn & rhs, int nan_direction_hint) const override 25082: { 25082: return data->compareAt(0, 0, *static_cast(rhs).data, nan_direction_hint); 25082: } 25082: 25082: MutableColumns scatter(ColumnIndex num_columns, const Selector & selector) const override; 25082: 25082: void gather(ColumnGathererStream &) override 25082: { 25082: throw Exception("Cannot gather into constant column " + getName(), ErrorCodes::NOT_IMPLEMENTED); 25082: } 25082: 25082: void getExtremes(Field & min, Field & max) const override 25082: { 25082: data->getExtremes(min, max); 25082: } 25082: 25082: void forEachSubcolumn(ColumnCallback callback) override 25082: { 25082: callback(data); 25082: } 25082: 25082: bool onlyNull() const override { return data->isNullAt(0); } 25082: bool isColumnConst() const override { return true; } 25082: bool isNumeric() const override { return data->isNumeric(); } 25082: bool isFixedAndContiguous() const override { return data->isFixedAndContiguous(); } 25082: bool valuesHaveFixedSize() const override { return data->valuesHaveFixedSize(); } 25082: size_t sizeOfValueIfFixed() const override { return data->sizeOfValueIfFixed(); } 25082: StringRef getRawData() const override { return data->getRawData(); } 25082: 25082: 25082: 25082: IColumn & getDataColumn() { return data->assumeMutableRef(); } 25082: const IColumn & getDataColumn() const { return *data; } 25082: 25082: const ColumnPtr & getDataColumnPtr() const { return data; } 25082: 25082: 25082: Field getField() const { return getDataColumn()[0]; } 25082: 25082: template 25082: T getValue() const { return getField().safeGet>(); } 25082: }; 25082: 25082: } 25082: # 13 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/ColumnAggregateFunction.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBufferFromString.h" 1 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBufferFromMemory.h" 1 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBuffer.h" 1 3 4 25082: 25082: 25082: # 1 "/usr/include/c++/8/cstring" 1 3 4 25082: # 39 "/usr/include/c++/8/cstring" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstring" 3 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBuffer.h" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/BufferBase.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: # 28 "/build/clickhouse-18.16.1+ds/dbms/src/IO/BufferBase.h" 3 4 25082: class BufferBase 25082: { 25082: public: 25082: 25082: using Position = char *; 25082: 25082: 25082: struct Buffer 25082: { 25082: Buffer(Position begin_pos_, Position end_pos_) : begin_pos(begin_pos_), end_pos(end_pos_) {} 25082: 25082: inline Position begin() const { return begin_pos; } 25082: inline Position end() const { return end_pos; } 25082: inline size_t size() const { return size_t(end_pos - begin_pos); } 25082: inline void resize(size_t size) { end_pos = begin_pos + size; } 25082: 25082: inline void swap(Buffer & other) 25082: { 25082: std::swap(begin_pos, other.begin_pos); 25082: std::swap(end_pos, other.end_pos); 25082: } 25082: 25082: private: 25082: Position begin_pos; 25082: Position end_pos; 25082: }; 25082: 25082: 25082: 25082: 25082: BufferBase(Position ptr, size_t size, size_t offset) 25082: : pos(ptr + offset), working_buffer(ptr, ptr + size), internal_buffer(ptr, ptr + size) {} 25082: 25082: void set(Position ptr, size_t size, size_t offset) 25082: { 25082: internal_buffer = Buffer(ptr, ptr + size); 25082: working_buffer = Buffer(ptr, ptr + size); 25082: pos = ptr + offset; 25082: } 25082: 25082: 25082: inline Buffer & internalBuffer() { return internal_buffer; } 25082: 25082: 25082: inline Buffer & buffer() { return working_buffer; } 25082: 25082: 25082: inline Position & position() { return pos; } 25082: 25082: 25082: inline size_t offset() const { return size_t(pos - working_buffer.begin()); } 25082: 25082: 25082: inline size_t available() const { return size_t(working_buffer.end() - pos); } 25082: 25082: inline void swap(BufferBase & other) 25082: { 25082: internal_buffer.swap(other.internal_buffer); 25082: working_buffer.swap(other.working_buffer); 25082: std::swap(pos, other.pos); 25082: } 25082: 25082: 25082: size_t count() const 25082: { 25082: return bytes + offset(); 25082: } 25082: 25082: 25082: bool __attribute__((__always_inline__)) hasPendingData() const 25082: { 25082: return pos != working_buffer.end(); 25082: } 25082: 25082: bool isPadded() const 25082: { 25082: return padded; 25082: } 25082: 25082: protected: 25082: 25082: Position pos; 25082: 25082: 25082: 25082: 25082: size_t bytes = 0; 25082: 25082: 25082: 25082: 25082: 25082: 25082: Buffer working_buffer; 25082: 25082: 25082: Buffer internal_buffer; 25082: 25082: 25082: bool padded{false}; 25082: }; 25082: 25082: 25082: } 25082: # 9 "/build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBuffer.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int ATTEMPT_TO_READ_AFTER_EOF; 25082: extern const int CANNOT_READ_ALL_DATA; 25082: } 25082: # 31 "/build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBuffer.h" 3 4 25082: class ReadBuffer : public BufferBase 25082: { 25082: public: 25082: 25082: 25082: 25082: ReadBuffer(Position ptr, size_t size) : BufferBase(ptr, size, 0) { working_buffer.resize(0); } 25082: 25082: 25082: 25082: 25082: ReadBuffer(Position ptr, size_t size, size_t offset) : BufferBase(ptr, size, offset) {} 25082: 25082: void set(Position ptr, size_t size) { BufferBase::set(ptr, size, 0); working_buffer.resize(0); } 25082: 25082: 25082: 25082: 25082: bool next() 25082: { 25082: bytes += offset(); 25082: bool res = nextImpl(); 25082: if (!res) 25082: working_buffer.resize(0); 25082: 25082: pos = working_buffer.begin() + working_buffer_offset; 25082: working_buffer_offset = 0; 25082: return res; 25082: } 25082: 25082: 25082: inline void nextIfAtEnd() 25082: { 25082: if (!hasPendingData()) 25082: next(); 25082: } 25082: 25082: virtual ~ReadBuffer() {} 25082: # 78 "/build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBuffer.h" 3 4 25082: bool __attribute__((__always_inline__)) eof() 25082: { 25082: return !hasPendingData() && !next(); 25082: } 25082: 25082: void ignore() 25082: { 25082: if (!eof()) 25082: ++pos; 25082: else 25082: throw Exception("Attempt to read after eof", ErrorCodes::ATTEMPT_TO_READ_AFTER_EOF); 25082: } 25082: 25082: void ignore(size_t n) 25082: { 25082: while (n != 0 && !eof()) 25082: { 25082: size_t bytes_to_ignore = std::min(static_cast(working_buffer.end() - pos), n); 25082: pos += bytes_to_ignore; 25082: n -= bytes_to_ignore; 25082: } 25082: 25082: if (n) 25082: throw Exception("Attempt to read after eof", ErrorCodes::ATTEMPT_TO_READ_AFTER_EOF); 25082: } 25082: 25082: 25082: size_t tryIgnore(size_t n) 25082: { 25082: size_t bytes_ignored = 0; 25082: 25082: while (bytes_ignored < n && !eof()) 25082: { 25082: size_t bytes_to_ignore = std::min(static_cast(working_buffer.end() - pos), n - bytes_ignored); 25082: pos += bytes_to_ignore; 25082: bytes_ignored += bytes_to_ignore; 25082: } 25082: 25082: return bytes_ignored; 25082: } 25082: 25082: 25082: size_t read(char * to, size_t n) 25082: { 25082: size_t bytes_copied = 0; 25082: 25082: while (bytes_copied < n && !eof()) 25082: { 25082: size_t bytes_to_copy = std::min(static_cast(working_buffer.end() - pos), n - bytes_copied); 25082: ::memcpy(to + bytes_copied, pos, bytes_to_copy); 25082: pos += bytes_to_copy; 25082: bytes_copied += bytes_to_copy; 25082: } 25082: 25082: return bytes_copied; 25082: } 25082: 25082: 25082: void readStrict(char * to, size_t n) 25082: { 25082: auto read_bytes = read(to, n); 25082: if (n != read_bytes) 25082: throw Exception("Cannot read all data. Bytes read: " + std::to_string(read_bytes) + ". Bytes expected: " + std::to_string(n) + ".", ErrorCodes::CANNOT_READ_ALL_DATA); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual size_t readBig(char * to, size_t n) 25082: { 25082: return read(to, n); 25082: } 25082: 25082: protected: 25082: 25082: size_t working_buffer_offset = 0; 25082: 25082: private: 25082: 25082: 25082: 25082: 25082: virtual bool nextImpl() { return false; } 25082: }; 25082: 25082: 25082: using ReadBufferPtr = std::shared_ptr; 25082: 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBufferFromMemory.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: 25082: 25082: class ReadBufferFromMemory : public ReadBuffer 25082: { 25082: public: 25082: ReadBufferFromMemory(const char * buf, size_t size) 25082: : ReadBuffer(const_cast(buf), size, 0) {} 25082: 25082: ReadBufferFromMemory(const unsigned char * buf, size_t size) 25082: : ReadBuffer(const_cast(reinterpret_cast(buf)), size, 0) {} 25082: 25082: ReadBufferFromMemory(const signed char * buf, size_t size) 25082: : ReadBuffer(const_cast(reinterpret_cast(buf)), size, 0) {} 25082: }; 25082: 25082: } 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/IO/ReadBufferFromString.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: class ReadBufferFromString : public ReadBufferFromMemory 25082: { 25082: public: 25082: 25082: template 25082: ReadBufferFromString(const S & s) : ReadBufferFromMemory(s.data(), s.size()) {} 25082: }; 25082: 25082: } 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/ColumnAggregateFunction.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBuffer.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/cstring" 1 3 4 25082: # 39 "/usr/include/c++/8/cstring" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstring" 3 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBuffer.h" 2 3 4 25082: 25082: # 1 "/usr/include/c++/8/iostream" 1 3 4 25082: # 36 "/usr/include/c++/8/iostream" 3 4 25082: 25082: # 37 "/usr/include/c++/8/iostream" 3 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 60 "/usr/include/c++/8/iostream" 3 25082: extern istream cin; 25082: extern ostream cout; 25082: extern ostream cerr; 25082: extern ostream clog; 25082: 25082: 25082: extern wistream wcin; 25082: extern wostream wcout; 25082: extern wostream wcerr; 25082: extern wostream wclog; 25082: 25082: 25082: 25082: 25082: static ios_base::Init __ioinit; 25082: 25082: 25082: } 25082: # 7 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBuffer.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int CANNOT_WRITE_AFTER_END_OF_BUFFER; 25082: } 25082: # 27 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBuffer.h" 3 4 25082: class WriteBuffer : public BufferBase 25082: { 25082: public: 25082: WriteBuffer(Position ptr, size_t size) : BufferBase(ptr, size, 0) {} 25082: void set(Position ptr, size_t size) { BufferBase::set(ptr, size, 0); } 25082: 25082: 25082: 25082: 25082: inline void next() 25082: { 25082: if (!offset()) 25082: return; 25082: bytes += offset(); 25082: 25082: try 25082: { 25082: nextImpl(); 25082: } 25082: catch (...) 25082: { 25082: 25082: 25082: 25082: pos = working_buffer.begin(); 25082: throw; 25082: } 25082: 25082: pos = working_buffer.begin(); 25082: } 25082: 25082: 25082: 25082: 25082: virtual ~WriteBuffer() {} 25082: 25082: 25082: inline void nextIfAtEnd() 25082: { 25082: if (!hasPendingData()) 25082: next(); 25082: } 25082: 25082: 25082: void write(const char * from, size_t n) 25082: { 25082: size_t bytes_copied = 0; 25082: 25082: while (bytes_copied < n) 25082: { 25082: nextIfAtEnd(); 25082: size_t bytes_to_copy = std::min(static_cast(working_buffer.end() - pos), n - bytes_copied); 25082: std::memcpy(pos, from + bytes_copied, bytes_to_copy); 25082: pos += bytes_to_copy; 25082: bytes_copied += bytes_to_copy; 25082: } 25082: } 25082: 25082: 25082: inline void write(char x) 25082: { 25082: nextIfAtEnd(); 25082: *pos = x; 25082: ++pos; 25082: } 25082: 25082: private: 25082: 25082: 25082: 25082: virtual void nextImpl() { throw Exception("Cannot write after end of buffer.", ErrorCodes::CANNOT_WRITE_AFTER_END_OF_BUFFER); } 25082: }; 25082: 25082: 25082: using WriteBufferPtr = std::shared_ptr; 25082: 25082: 25082: } 25082: # 11 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/ColumnAggregateFunction.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 1 3 4 25082: 25082: 25082: # 1 "/usr/include/c++/8/cstring" 1 3 4 25082: # 39 "/usr/include/c++/8/cstring" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstring" 3 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: # 1 "/usr/include/c++/8/cstdio" 1 3 4 25082: # 39 "/usr/include/c++/8/cstdio" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstdio" 3 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DateLUT.h" 1 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DateLUTImpl.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/ctime" 1 3 4 25082: # 39 "/usr/include/c++/8/ctime" 3 4 25082: 25082: # 40 "/usr/include/c++/8/ctime" 3 25082: # 58 "/usr/include/c++/8/ctime" 3 25082: namespace std 25082: { 25082: using ::clock_t; 25082: using ::time_t; 25082: using ::tm; 25082: 25082: using ::clock; 25082: using ::difftime; 25082: using ::mktime; 25082: using ::time; 25082: using ::asctime; 25082: using ::ctime; 25082: using ::gmtime; 25082: using ::localtime; 25082: using ::strftime; 25082: } 25082: # 7 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DateLUTImpl.h" 2 3 4 25082: # 21 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DateLUTImpl.h" 3 4 25082: class DateLUTImpl 25082: { 25082: public: 25082: DateLUTImpl(const std::string & time_zone); 25082: 25082: public: 25082: 25082: struct Values 25082: { 25082: 25082: 25082: 25082: UInt32 date; 25082: 25082: 25082: UInt16 year; 25082: UInt8 month; 25082: UInt8 day_of_month; 25082: UInt8 day_of_week; 25082: 25082: 25082: 25082: UInt8 days_in_month; 25082: 25082: 25082: Int16 amount_of_offset_change; 25082: UInt32 time_at_offset_change; 25082: }; 25082: 25082: static_assert(sizeof(Values) == 16); 25082: 25082: private: 25082: 25082: 25082: 25082: 25082: Values lut[0x10000]; 25082: 25082: 25082: DayNum years_lut[(1 + 2105 - 1970)]; 25082: 25082: 25082: DayNum years_months_lut[(1 + 2105 - 1970) * 12]; 25082: 25082: 25082: time_t offset_at_start_of_epoch; 25082: bool offset_is_whole_number_of_hours_everytime; 25082: 25082: 25082: std::string time_zone; 25082: 25082: 25082: 25082: inline size_t findIndex(time_t t) const 25082: { 25082: 25082: size_t guess = t / 86400; 25082: if (guess >= (0xFFFFFFFFU / 86400)) 25082: return 0; 25082: if (t >= lut[guess].date && t < lut[guess + 1].date) 25082: return guess; 25082: 25082: for (size_t i = 1;; ++i) 25082: { 25082: if (guess + i >= (0xFFFFFFFFU / 86400)) 25082: return 0; 25082: if (t >= lut[guess + i].date && t < lut[guess + i + 1].date) 25082: return guess + i; 25082: if (guess < i) 25082: return 0; 25082: if (t >= lut[guess - i].date && t < lut[guess - i + 1].date) 25082: return guess - i; 25082: } 25082: } 25082: 25082: inline const Values & find(time_t t) const 25082: { 25082: return lut[findIndex(t)]; 25082: } 25082: 25082: public: 25082: const std::string & getTimeZone() const { return time_zone; } 25082: 25082: 25082: 25082: inline time_t toDate(time_t t) const { return find(t).date; } 25082: inline unsigned toMonth(time_t t) const { return find(t).month; } 25082: inline unsigned toQuarter(time_t t) const { return (find(t).month - 1) / 3 + 1; } 25082: inline unsigned toYear(time_t t) const { return find(t).year; } 25082: inline unsigned toDayOfWeek(time_t t) const { return find(t).day_of_week; } 25082: inline unsigned toDayOfMonth(time_t t) const { return find(t).day_of_month; } 25082: 25082: 25082: inline time_t toFirstDayOfWeek(time_t t) const 25082: { 25082: size_t index = findIndex(t); 25082: return lut[index - (lut[index].day_of_week - 1)].date; 25082: } 25082: 25082: inline DayNum toFirstDayNumOfWeek(DayNum d) const 25082: { 25082: return DayNum(d - (lut[d].day_of_week - 1)); 25082: } 25082: 25082: inline DayNum toFirstDayNumOfWeek(time_t t) const 25082: { 25082: return toFirstDayNumOfWeek(toDayNum(t)); 25082: } 25082: 25082: 25082: inline time_t toFirstDayOfMonth(time_t t) const 25082: { 25082: size_t index = findIndex(t); 25082: return lut[index - (lut[index].day_of_month - 1)].date; 25082: } 25082: 25082: inline DayNum toFirstDayNumOfMonth(DayNum d) const 25082: { 25082: return DayNum(d - (lut[d].day_of_month - 1)); 25082: } 25082: 25082: inline DayNum toFirstDayNumOfMonth(time_t t) const 25082: { 25082: return toFirstDayNumOfMonth(toDayNum(t)); 25082: } 25082: 25082: 25082: inline DayNum toFirstDayNumOfQuarter(DayNum d) const 25082: { 25082: size_t index = d; 25082: size_t month_inside_quarter = (lut[index].month - 1) % 3; 25082: 25082: index = index - lut[index].day_of_month; 25082: while (month_inside_quarter) 25082: { 25082: index = index - lut[index].day_of_month; 25082: --month_inside_quarter; 25082: } 25082: 25082: return DayNum(index + 1); 25082: } 25082: 25082: inline DayNum toFirstDayNumOfQuarter(time_t t) const 25082: { 25082: return toFirstDayNumOfQuarter(toDayNum(t)); 25082: } 25082: 25082: inline time_t toFirstDayOfQuarter(time_t t) const 25082: { 25082: return fromDayNum(toFirstDayNumOfQuarter(t)); 25082: } 25082: 25082: 25082: inline time_t toFirstDayOfYear(time_t t) const 25082: { 25082: return lut[years_lut[lut[findIndex(t)].year - 1970]].date; 25082: } 25082: 25082: inline DayNum toFirstDayNumOfYear(DayNum d) const 25082: { 25082: return years_lut[lut[d].year - 1970]; 25082: } 25082: 25082: inline DayNum toFirstDayNumOfYear(time_t t) const 25082: { 25082: return toFirstDayNumOfYear(toDayNum(t)); 25082: } 25082: 25082: inline time_t toFirstDayOfNextMonth(time_t t) const 25082: { 25082: size_t index = findIndex(t); 25082: index += 32 - lut[index].day_of_month; 25082: return lut[index - (lut[index].day_of_month - 1)].date; 25082: } 25082: 25082: inline time_t toFirstDayOfPrevMonth(time_t t) const 25082: { 25082: size_t index = findIndex(t); 25082: index -= lut[index].day_of_month; 25082: return lut[index - (lut[index].day_of_month - 1)].date; 25082: } 25082: 25082: inline UInt8 daysInMonth(DayNum d) const 25082: { 25082: return lut[d].days_in_month; 25082: } 25082: 25082: inline UInt8 daysInMonth(time_t t) const 25082: { 25082: return find(t).days_in_month; 25082: } 25082: 25082: inline UInt8 daysInMonth(UInt16 year, UInt8 month) const 25082: { 25082: 25082: auto any_day_of_month = years_lut[year - 1970] + 32 * (month - 1); 25082: return lut[any_day_of_month].days_in_month; 25082: } 25082: 25082: 25082: 25082: inline time_t toDateAndShift(time_t t, Int32 days) const 25082: { 25082: return lut[findIndex(t) + days].date; 25082: } 25082: 25082: inline time_t toTime(time_t t) const 25082: { 25082: size_t index = findIndex(t); 25082: 25082: if ((__builtin_expect(!!(index == 0), 0))) 25082: return t + offset_at_start_of_epoch; 25082: 25082: time_t res = t - lut[index].date; 25082: 25082: if (res >= lut[index].time_at_offset_change) 25082: res += lut[index].amount_of_offset_change; 25082: 25082: return res - offset_at_start_of_epoch; 25082: } 25082: 25082: inline unsigned toHour(time_t t) const 25082: { 25082: size_t index = findIndex(t); 25082: 25082: 25082: 25082: if ((__builtin_expect(!!(index == 0), 0))) 25082: return static_cast((t + offset_at_start_of_epoch) / 3600) % 24; 25082: 25082: time_t res = t - lut[index].date; 25082: 25082: 25082: if (res >= lut[index].time_at_offset_change) 25082: res += lut[index].amount_of_offset_change; 25082: 25082: return res / 3600; 25082: } 25082: # 271 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DateLUTImpl.h" 3 4 25082: inline unsigned toSecond(time_t t) const { return t % 60; } 25082: 25082: inline unsigned toMinute(time_t t) const 25082: { 25082: if (offset_is_whole_number_of_hours_everytime) 25082: return (t / 60) % 60; 25082: 25082: time_t date = find(t).date; 25082: return (t - date) / 60 % 60; 25082: } 25082: 25082: inline time_t toStartOfMinute(time_t t) const { return t / 60 * 60; } 25082: inline time_t toStartOfFiveMinute(time_t t) const { return t / 300 * 300; } 25082: inline time_t toStartOfFifteenMinutes(time_t t) const { return t / 900 * 900; } 25082: 25082: inline time_t toStartOfHour(time_t t) const 25082: { 25082: if (offset_is_whole_number_of_hours_everytime) 25082: return t / 3600 * 3600; 25082: 25082: time_t date = find(t).date; 25082: 25082: return date + (t - date) / 3600 * 3600; 25082: } 25082: # 304 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DateLUTImpl.h" 3 4 25082: inline DayNum toDayNum(time_t t) const { return static_cast(findIndex(t)); } 25082: inline time_t fromDayNum(DayNum d) const { return lut[d].date; } 25082: 25082: inline time_t toDate(DayNum d) const { return lut[d].date; } 25082: inline unsigned toMonth(DayNum d) const { return lut[d].month; } 25082: inline unsigned toQuarter(DayNum d) const { return (lut[d].month - 1) / 3 + 1; } 25082: inline unsigned toYear(DayNum d) const { return lut[d].year; } 25082: inline unsigned toDayOfWeek(DayNum d) const { return lut[d].day_of_week; } 25082: inline unsigned toDayOfMonth(DayNum d) const { return lut[d].day_of_month; } 25082: inline unsigned toDayOfYear(DayNum d) const { return d + 1 - toFirstDayNumOfYear(d); } 25082: 25082: inline unsigned toDayOfYear(time_t t) const { return toDayOfYear(toDayNum(t)); } 25082: 25082: 25082: 25082: 25082: inline unsigned toRelativeWeekNum(DayNum d) const 25082: { 25082: 25082: return (d + 8 - toDayOfWeek(d)) / 7; 25082: } 25082: 25082: inline unsigned toRelativeWeekNum(time_t t) const 25082: { 25082: return toRelativeWeekNum(toDayNum(t)); 25082: } 25082: 25082: 25082: inline unsigned toISOYear(DayNum d) const 25082: { 25082: 25082: return toYear(DayNum(d + 4 - toDayOfWeek(d))); 25082: } 25082: 25082: inline unsigned toISOYear(time_t t) const 25082: { 25082: return toISOYear(toDayNum(t)); 25082: } 25082: 25082: 25082: 25082: 25082: inline DayNum toFirstDayNumOfISOYear(DayNum d) const 25082: { 25082: auto iso_year = toISOYear(d); 25082: 25082: DayNum first_day_of_year = years_lut[iso_year - 1970]; 25082: auto first_day_of_week_of_year = lut[first_day_of_year].day_of_week; 25082: 25082: return DayNum(first_day_of_week_of_year <= 4 25082: ? first_day_of_year + 1 - first_day_of_week_of_year 25082: : first_day_of_year + 8 - first_day_of_week_of_year); 25082: } 25082: 25082: inline DayNum toFirstDayNumOfISOYear(time_t t) const 25082: { 25082: return toFirstDayNumOfISOYear(toDayNum(t)); 25082: } 25082: 25082: inline time_t toFirstDayOfISOYear(time_t t) const 25082: { 25082: return fromDayNum(toFirstDayNumOfISOYear(t)); 25082: } 25082: 25082: 25082: 25082: inline unsigned toISOWeek(DayNum d) const 25082: { 25082: return 1 + (toFirstDayNumOfWeek(d) - toFirstDayNumOfISOYear(d)) / 7; 25082: } 25082: 25082: inline unsigned toISOWeek(time_t t) const 25082: { 25082: return toISOWeek(toDayNum(t)); 25082: } 25082: 25082: 25082: inline unsigned toRelativeMonthNum(DayNum d) const 25082: { 25082: return lut[d].year * 12 + lut[d].month; 25082: } 25082: 25082: inline unsigned toRelativeMonthNum(time_t t) const 25082: { 25082: return toRelativeMonthNum(toDayNum(t)); 25082: } 25082: 25082: inline unsigned toRelativeQuarterNum(DayNum d) const 25082: { 25082: return lut[d].year * 4 + (lut[d].month - 1) / 3; 25082: } 25082: 25082: inline unsigned toRelativeQuarterNum(time_t t) const 25082: { 25082: return toRelativeQuarterNum(toDayNum(t)); 25082: } 25082: 25082: 25082: inline time_t toRelativeHourNum(time_t t) const 25082: { 25082: if (offset_is_whole_number_of_hours_everytime) 25082: return t / 3600; 25082: 25082: 25082: 25082: return (t + 86400 - offset_at_start_of_epoch) / 3600; 25082: } 25082: 25082: inline time_t toRelativeHourNum(DayNum d) const 25082: { 25082: return toRelativeHourNum(lut[d].date); 25082: } 25082: 25082: inline time_t toRelativeMinuteNum(time_t t) const 25082: { 25082: return t / 60; 25082: } 25082: 25082: inline time_t toRelativeMinuteNum(DayNum d) const 25082: { 25082: return toRelativeMinuteNum(lut[d].date); 25082: } 25082: 25082: 25082: inline DayNum makeDayNum(UInt16 year, UInt8 month, UInt8 day_of_month) const 25082: { 25082: if ((__builtin_expect(!!(year < 1970 || year > 2105 || month < 1 || month > 12 || day_of_month < 1 || day_of_month > 31), 0))) 25082: return DayNum(0); 25082: 25082: return DayNum(years_months_lut[(year - 1970) * 12 + month - 1] + day_of_month - 1); 25082: } 25082: 25082: inline time_t makeDate(UInt16 year, UInt8 month, UInt8 day_of_month) const 25082: { 25082: return lut[makeDayNum(year, month, day_of_month)].date; 25082: } 25082: 25082: 25082: 25082: inline time_t makeDateTime(UInt16 year, UInt8 month, UInt8 day_of_month, UInt8 hour, UInt8 minute, UInt8 second) const 25082: { 25082: size_t index = makeDayNum(year, month, day_of_month); 25082: time_t time_offset = hour * 3600 + minute * 60 + second; 25082: 25082: if (time_offset >= lut[index].time_at_offset_change) 25082: time_offset -= lut[index].amount_of_offset_change; 25082: 25082: return lut[index].date + time_offset; 25082: } 25082: 25082: inline const Values & getValues(DayNum d) const { return lut[d]; } 25082: inline const Values & getValues(time_t t) const { return lut[findIndex(t)]; } 25082: 25082: inline UInt32 toNumYYYYMM(time_t t) const 25082: { 25082: const Values & values = find(t); 25082: return values.year * 100 + values.month; 25082: } 25082: 25082: inline UInt32 toNumYYYYMM(DayNum d) const 25082: { 25082: const Values & values = lut[d]; 25082: return values.year * 100 + values.month; 25082: } 25082: 25082: inline UInt32 toNumYYYYMMDD(time_t t) const 25082: { 25082: const Values & values = find(t); 25082: return values.year * 10000 + values.month * 100 + values.day_of_month; 25082: } 25082: 25082: inline UInt32 toNumYYYYMMDD(DayNum d) const 25082: { 25082: const Values & values = lut[d]; 25082: return values.year * 10000 + values.month * 100 + values.day_of_month; 25082: } 25082: 25082: inline time_t YYYYMMDDToDate(UInt32 num) const 25082: { 25082: return makeDate(num / 10000, num / 100 % 100, num % 100); 25082: } 25082: 25082: inline DayNum YYYYMMDDToDayNum(UInt32 num) const 25082: { 25082: return makeDayNum(num / 10000, num / 100 % 100, num % 100); 25082: } 25082: 25082: 25082: inline UInt64 toNumYYYYMMDDhhmmss(time_t t) const 25082: { 25082: const Values & values = find(t); 25082: return 25082: toSecond(t) 25082: + toMinute(t) * 100 25082: + toHour(t) * 10000 25082: + UInt64(values.day_of_month) * 1000000 25082: + UInt64(values.month) * 100000000 25082: + UInt64(values.year) * 10000000000; 25082: } 25082: 25082: inline time_t YYYYMMDDhhmmssToTime(UInt64 num) const 25082: { 25082: return makeDateTime( 25082: num / 10000000000, 25082: num / 100000000 % 100, 25082: num / 1000000 % 100, 25082: num / 10000 % 100, 25082: num / 100 % 100, 25082: num % 100); 25082: } 25082: 25082: 25082: 25082: 25082: inline time_t addDays(time_t t, Int64 delta) const 25082: { 25082: size_t index = findIndex(t); 25082: time_t time_offset = toHour(t) * 3600 + toMinute(t) * 60 + toSecond(t); 25082: 25082: index += delta; 25082: 25082: if (time_offset >= lut[index].time_at_offset_change) 25082: time_offset -= lut[index].amount_of_offset_change; 25082: 25082: return lut[index].date + time_offset; 25082: } 25082: 25082: inline time_t addWeeks(time_t t, Int64 delta) const 25082: { 25082: return addDays(t, delta * 7); 25082: } 25082: 25082: inline UInt8 saturateDayOfMonth(UInt16 year, UInt8 month, UInt8 day_of_month) const 25082: { 25082: if ((__builtin_expect(!!(day_of_month <= 28), 1))) 25082: return day_of_month; 25082: 25082: UInt8 days_in_month = daysInMonth(year, month); 25082: 25082: if (day_of_month > days_in_month) 25082: day_of_month = days_in_month; 25082: 25082: return day_of_month; 25082: } 25082: 25082: 25082: 25082: inline time_t addMonths(time_t t, Int64 delta) const 25082: { 25082: DayNum result_day = addMonths(toDayNum(t), delta); 25082: 25082: time_t time_offset = toHour(t) * 3600 + toMinute(t) * 60 + toSecond(t); 25082: 25082: if (time_offset >= lut[result_day].time_at_offset_change) 25082: time_offset -= lut[result_day].amount_of_offset_change; 25082: 25082: return lut[result_day].date + time_offset; 25082: } 25082: 25082: inline DayNum addMonths(DayNum d, Int64 delta) const 25082: { 25082: const Values & values = lut[d]; 25082: 25082: Int64 month = static_cast(values.month) + delta; 25082: 25082: if (month > 0) 25082: { 25082: auto year = values.year + (month - 1) / 12; 25082: month = ((month - 1) % 12) + 1; 25082: auto day_of_month = saturateDayOfMonth(year, month, values.day_of_month); 25082: 25082: return makeDayNum(year, month, day_of_month); 25082: } 25082: else 25082: { 25082: auto year = values.year - (12 - month) / 12; 25082: month = 12 - (-month % 12); 25082: auto day_of_month = saturateDayOfMonth(year, month, values.day_of_month); 25082: 25082: return makeDayNum(year, month, day_of_month); 25082: } 25082: } 25082: 25082: 25082: inline time_t addYears(time_t t, Int64 delta) const 25082: { 25082: DayNum result_day = addYears(toDayNum(t), delta); 25082: 25082: time_t time_offset = toHour(t) * 3600 + toMinute(t) * 60 + toSecond(t); 25082: 25082: if (time_offset >= lut[result_day].time_at_offset_change) 25082: time_offset -= lut[result_day].amount_of_offset_change; 25082: 25082: return lut[result_day].date + time_offset; 25082: } 25082: 25082: inline DayNum addYears(DayNum d, Int64 delta) const 25082: { 25082: const Values & values = lut[d]; 25082: 25082: auto year = values.year + delta; 25082: auto month = values.month; 25082: auto day_of_month = values.day_of_month; 25082: 25082: 25082: if ((__builtin_expect(!!(day_of_month == 29 && month == 2), 0))) 25082: day_of_month = saturateDayOfMonth(year, month, day_of_month); 25082: 25082: return makeDayNum(year, month, day_of_month); 25082: } 25082: 25082: 25082: inline std::string timeToString(time_t t) const 25082: { 25082: const Values & values = find(t); 25082: 25082: std::string s {"0000-00-00 00:00:00"}; 25082: 25082: s[0] += values.year / 1000; 25082: s[1] += (values.year / 100) % 10; 25082: s[2] += (values.year / 10) % 10; 25082: s[3] += values.year % 10; 25082: s[5] += values.month / 10; 25082: s[6] += values.month % 10; 25082: s[8] += values.day_of_month / 10; 25082: s[9] += values.day_of_month % 10; 25082: 25082: auto hour = toHour(t); 25082: auto minute = toMinute(t); 25082: auto second = toSecond(t); 25082: 25082: s[11] += hour / 10; 25082: s[12] += hour % 10; 25082: s[14] += minute / 10; 25082: s[15] += minute % 10; 25082: s[17] += second / 10; 25082: s[18] += second % 10; 25082: 25082: return s; 25082: } 25082: 25082: inline std::string dateToString(time_t t) const 25082: { 25082: const Values & values = find(t); 25082: 25082: std::string s {"0000-00-00"}; 25082: 25082: s[0] += values.year / 1000; 25082: s[1] += (values.year / 100) % 10; 25082: s[2] += (values.year / 10) % 10; 25082: s[3] += values.year % 10; 25082: s[5] += values.month / 10; 25082: s[6] += values.month % 10; 25082: s[8] += values.day_of_month / 10; 25082: s[9] += values.day_of_month % 10; 25082: 25082: return s; 25082: } 25082: 25082: inline std::string dateToString(DayNum d) const 25082: { 25082: const Values & values = lut[d]; 25082: 25082: std::string s {"0000-00-00"}; 25082: 25082: s[0] += values.year / 1000; 25082: s[1] += (values.year / 100) % 10; 25082: s[2] += (values.year / 10) % 10; 25082: s[3] += values.year % 10; 25082: s[5] += values.month / 10; 25082: s[6] += values.month % 10; 25082: s[8] += values.day_of_month / 10; 25082: s[9] += values.day_of_month % 10; 25082: 25082: return s; 25082: } 25082: 25082: inline bool isOffsetWholeNumberOfHoursEveryTime() const { return offset_is_whole_number_of_hours_everytime; } 25082: }; 25082: # 4 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DateLUT.h" 2 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/mutex" 1 3 4 25082: # 32 "/usr/include/c++/8/mutex" 3 4 25082: 25082: # 33 "/usr/include/c++/8/mutex" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/chrono" 1 3 25082: # 32 "/usr/include/c++/8/chrono" 3 25082: 25082: # 33 "/usr/include/c++/8/chrono" 3 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/ratio" 1 3 25082: # 32 "/usr/include/c++/8/ratio" 3 25082: 25082: # 33 "/usr/include/c++/8/ratio" 3 25082: # 43 "/usr/include/c++/8/ratio" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 55 "/usr/include/c++/8/ratio" 3 25082: template 25082: struct __static_sign 25082: : integral_constant 25082: { }; 25082: 25082: template 25082: struct __static_abs 25082: : integral_constant::value> 25082: { }; 25082: 25082: template 25082: struct __static_gcd 25082: : __static_gcd<_Qn, (_Pn % _Qn)> 25082: { }; 25082: 25082: template 25082: struct __static_gcd<_Pn, 0> 25082: : integral_constant::value> 25082: { }; 25082: 25082: template 25082: struct __static_gcd<0, _Qn> 25082: : integral_constant::value> 25082: { }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: struct __safe_multiply 25082: { 25082: private: 25082: static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 25082: 25082: static const uintmax_t __a0 = __static_abs<_Pn>::value % __c; 25082: static const uintmax_t __a1 = __static_abs<_Pn>::value / __c; 25082: static const uintmax_t __b0 = __static_abs<_Qn>::value % __c; 25082: static const uintmax_t __b1 = __static_abs<_Qn>::value / __c; 25082: 25082: static_assert(__a1 == 0 || __b1 == 0, 25082: "overflow in multiplication"); 25082: static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1), 25082: "overflow in multiplication"); 25082: static_assert(__b0 * __a0 <= 0x7fffffffffffffffL, 25082: "overflow in multiplication"); 25082: static_assert((__a0 * __b1 + __b0 * __a1) * __c 25082: <= 0x7fffffffffffffffL - __b0 * __a0, 25082: "overflow in multiplication"); 25082: 25082: public: 25082: static const intmax_t value = _Pn * _Qn; 25082: }; 25082: 25082: 25082: 25082: template 25082: struct __big_less 25082: : integral_constant 25082: { }; 25082: 25082: template 25082: struct __big_add 25082: { 25082: static constexpr uintmax_t __lo = __lo1 + __lo2; 25082: static constexpr uintmax_t __hi = (__hi1 + __hi2 + 25082: (__lo1 + __lo2 < __lo1)); 25082: }; 25082: 25082: 25082: template 25082: struct __big_sub 25082: { 25082: static_assert(!__big_less<__hi1, __lo1, __hi2, __lo2>::value, 25082: "Internal library error"); 25082: static constexpr uintmax_t __lo = __lo1 - __lo2; 25082: static constexpr uintmax_t __hi = (__hi1 - __hi2 - 25082: (__lo1 < __lo2)); 25082: }; 25082: 25082: 25082: template 25082: struct __big_mul 25082: { 25082: private: 25082: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 25082: static constexpr uintmax_t __x0 = __x % __c; 25082: static constexpr uintmax_t __x1 = __x / __c; 25082: static constexpr uintmax_t __y0 = __y % __c; 25082: static constexpr uintmax_t __y1 = __y / __c; 25082: static constexpr uintmax_t __x0y0 = __x0 * __y0; 25082: static constexpr uintmax_t __x0y1 = __x0 * __y1; 25082: static constexpr uintmax_t __x1y0 = __x1 * __y0; 25082: static constexpr uintmax_t __x1y1 = __x1 * __y1; 25082: static constexpr uintmax_t __mix = __x0y1 + __x1y0; 25082: static constexpr uintmax_t __mix_lo = __mix * __c; 25082: static constexpr uintmax_t __mix_hi 25082: = __mix / __c + ((__mix < __x0y1) ? __c : 0); 25082: typedef __big_add<__mix_hi, __mix_lo, __x1y1, __x0y0> _Res; 25082: public: 25082: static constexpr uintmax_t __hi = _Res::__hi; 25082: static constexpr uintmax_t __lo = _Res::__lo; 25082: }; 25082: 25082: 25082: 25082: template 25082: struct __big_div_impl 25082: { 25082: private: 25082: static_assert(__d >= (uintmax_t(1) << (sizeof(intmax_t) * 8 - 1)), 25082: "Internal library error"); 25082: static_assert(__n1 < __d, "Internal library error"); 25082: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 25082: static constexpr uintmax_t __d1 = __d / __c; 25082: static constexpr uintmax_t __d0 = __d % __c; 25082: 25082: static constexpr uintmax_t __q1x = __n1 / __d1; 25082: static constexpr uintmax_t __r1x = __n1 % __d1; 25082: static constexpr uintmax_t __m = __q1x * __d0; 25082: static constexpr uintmax_t __r1y = __r1x * __c + __n0 / __c; 25082: static constexpr uintmax_t __r1z = __r1y + __d; 25082: static constexpr uintmax_t __r1 25082: = ((__r1y < __m) ? ((__r1z >= __d) && (__r1z < __m)) 25082: ? (__r1z + __d) : __r1z : __r1y) - __m; 25082: static constexpr uintmax_t __q1 25082: = __q1x - ((__r1y < __m) 25082: ? ((__r1z >= __d) && (__r1z < __m)) ? 2 : 1 : 0); 25082: static constexpr uintmax_t __q0x = __r1 / __d1; 25082: static constexpr uintmax_t __r0x = __r1 % __d1; 25082: static constexpr uintmax_t __n = __q0x * __d0; 25082: static constexpr uintmax_t __r0y = __r0x * __c + __n0 % __c; 25082: static constexpr uintmax_t __r0z = __r0y + __d; 25082: static constexpr uintmax_t __r0 25082: = ((__r0y < __n) ? ((__r0z >= __d) && (__r0z < __n)) 25082: ? (__r0z + __d) : __r0z : __r0y) - __n; 25082: static constexpr uintmax_t __q0 25082: = __q0x - ((__r0y < __n) ? ((__r0z >= __d) 25082: && (__r0z < __n)) ? 2 : 1 : 0); 25082: 25082: public: 25082: static constexpr uintmax_t __quot = __q1 * __c + __q0; 25082: static constexpr uintmax_t __rem = __r0; 25082: 25082: private: 25082: typedef __big_mul<__quot, __d> _Prod; 25082: typedef __big_add<_Prod::__hi, _Prod::__lo, 0, __rem> _Sum; 25082: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, 25082: "Internal library error"); 25082: }; 25082: 25082: template 25082: struct __big_div 25082: { 25082: private: 25082: static_assert(__d != 0, "Internal library error"); 25082: static_assert(sizeof (uintmax_t) == sizeof (unsigned long long), 25082: "This library calls __builtin_clzll on uintmax_t, which " 25082: "is unsafe on your platform. Please complain to " 25082: "http://gcc.gnu.org/bugzilla/"); 25082: static constexpr int __shift = __builtin_clzll(__d); 25082: static constexpr int __coshift_ = sizeof(uintmax_t) * 8 - __shift; 25082: static constexpr int __coshift = (__shift != 0) ? __coshift_ : 0; 25082: static constexpr uintmax_t __c1 = uintmax_t(1) << __shift; 25082: static constexpr uintmax_t __c2 = uintmax_t(1) << __coshift; 25082: static constexpr uintmax_t __new_d = __d * __c1; 25082: static constexpr uintmax_t __new_n0 = __n0 * __c1; 25082: static constexpr uintmax_t __n1_shifted = (__n1 % __d) * __c1; 25082: static constexpr uintmax_t __n0_top = (__shift != 0) ? (__n0 / __c2) : 0; 25082: static constexpr uintmax_t __new_n1 = __n1_shifted + __n0_top; 25082: typedef __big_div_impl<__new_n1, __new_n0, __new_d> _Res; 25082: 25082: public: 25082: static constexpr uintmax_t __quot_hi = __n1 / __d; 25082: static constexpr uintmax_t __quot_lo = _Res::__quot; 25082: static constexpr uintmax_t __rem = _Res::__rem / __c1; 25082: 25082: private: 25082: typedef __big_mul<__quot_lo, __d> _P0; 25082: typedef __big_mul<__quot_hi, __d> _P1; 25082: typedef __big_add<_P0::__hi, _P0::__lo, _P1::__lo, __rem> _Sum; 25082: 25082: static_assert(_P1::__hi == 0, "Internal library error"); 25082: static_assert(_Sum::__hi >= _P0::__hi, "Internal library error"); 25082: 25082: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, 25082: "Internal library error"); 25082: static_assert(__rem < __d, "Internal library error"); 25082: }; 25082: # 262 "/usr/include/c++/8/ratio" 3 25082: template 25082: struct ratio 25082: { 25082: static_assert(_Den != 0, "denominator cannot be zero"); 25082: static_assert(_Num >= -0x7fffffffffffffffL && _Den >= -0x7fffffffffffffffL, 25082: "out of range"); 25082: 25082: 25082: static constexpr intmax_t num = 25082: _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value; 25082: 25082: static constexpr intmax_t den = 25082: __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value; 25082: 25082: typedef ratio type; 25082: }; 25082: 25082: template 25082: constexpr intmax_t ratio<_Num, _Den>::num; 25082: 25082: template 25082: constexpr intmax_t ratio<_Num, _Den>::den; 25082: 25082: template 25082: struct __ratio_multiply 25082: { 25082: private: 25082: static const intmax_t __gcd1 = 25082: __static_gcd<_R1::num, _R2::den>::value; 25082: static const intmax_t __gcd2 = 25082: __static_gcd<_R2::num, _R1::den>::value; 25082: 25082: public: 25082: typedef ratio< 25082: __safe_multiply<(_R1::num / __gcd1), 25082: (_R2::num / __gcd2)>::value, 25082: __safe_multiply<(_R1::den / __gcd2), 25082: (_R2::den / __gcd1)>::value> type; 25082: 25082: static constexpr intmax_t num = type::num; 25082: static constexpr intmax_t den = type::den; 25082: }; 25082: 25082: template 25082: constexpr intmax_t __ratio_multiply<_R1, _R2>::num; 25082: 25082: template 25082: constexpr intmax_t __ratio_multiply<_R1, _R2>::den; 25082: 25082: 25082: template 25082: using ratio_multiply = typename __ratio_multiply<_R1, _R2>::type; 25082: 25082: template 25082: struct __ratio_divide 25082: { 25082: static_assert(_R2::num != 0, "division by 0"); 25082: 25082: typedef typename __ratio_multiply< 25082: _R1, 25082: ratio<_R2::den, _R2::num>>::type type; 25082: 25082: static constexpr intmax_t num = type::num; 25082: static constexpr intmax_t den = type::den; 25082: }; 25082: 25082: template 25082: constexpr intmax_t __ratio_divide<_R1, _R2>::num; 25082: 25082: template 25082: constexpr intmax_t __ratio_divide<_R1, _R2>::den; 25082: 25082: 25082: template 25082: using ratio_divide = typename __ratio_divide<_R1, _R2>::type; 25082: 25082: 25082: template 25082: struct ratio_equal 25082: : integral_constant 25082: { }; 25082: 25082: 25082: template 25082: struct ratio_not_equal 25082: : integral_constant::value> 25082: { }; 25082: 25082: 25082: template, 25082: typename _Right = __big_mul<_R2::num,_R1::den> > 25082: struct __ratio_less_impl_1 25082: : integral_constant::value> 25082: { }; 25082: 25082: template::value 25082: != __static_sign<_R2::num>::value)), 25082: bool = (__static_sign<_R1::num>::value == -1 25082: && __static_sign<_R2::num>::value == -1)> 25082: struct __ratio_less_impl 25082: : __ratio_less_impl_1<_R1, _R2>::type 25082: { }; 25082: 25082: template 25082: struct __ratio_less_impl<_R1, _R2, true, false> 25082: : integral_constant 25082: { }; 25082: 25082: template 25082: struct __ratio_less_impl<_R1, _R2, false, true> 25082: : __ratio_less_impl_1, 25082: ratio<-_R1::num, _R1::den> >::type 25082: { }; 25082: 25082: 25082: template 25082: struct ratio_less 25082: : __ratio_less_impl<_R1, _R2>::type 25082: { }; 25082: 25082: 25082: template 25082: struct ratio_less_equal 25082: : integral_constant::value> 25082: { }; 25082: 25082: 25082: template 25082: struct ratio_greater 25082: : integral_constant::value> 25082: { }; 25082: 25082: 25082: template 25082: struct ratio_greater_equal 25082: : integral_constant::value> 25082: { }; 25082: 25082: 25082: template 25082: inline constexpr bool ratio_equal_v = ratio_equal<_R1, _R2>::value; 25082: template 25082: inline constexpr bool ratio_not_equal_v = ratio_not_equal<_R1, _R2>::value; 25082: template 25082: inline constexpr bool ratio_less_v = ratio_less<_R1, _R2>::value; 25082: template 25082: inline constexpr bool ratio_less_equal_v = 25082: ratio_less_equal<_R1, _R2>::value; 25082: template 25082: inline constexpr bool ratio_greater_v = ratio_greater<_R1, _R2>::value; 25082: template 25082: inline constexpr bool ratio_greater_equal_v 25082: = ratio_greater_equal<_R1, _R2>::value; 25082: 25082: 25082: template= 0), 25082: bool = (_R2::num >= 0), 25082: bool = ratio_less::value, _R1::den>, 25082: ratio<__static_abs<_R2::num>::value, _R2::den> >::value> 25082: struct __ratio_add_impl 25082: { 25082: private: 25082: typedef typename __ratio_add_impl< 25082: ratio<-_R1::num, _R1::den>, 25082: ratio<-_R2::num, _R2::den> >::type __t; 25082: public: 25082: typedef ratio<-__t::num, __t::den> type; 25082: }; 25082: 25082: 25082: template 25082: struct __ratio_add_impl<_R1, _R2, true, true, __b> 25082: { 25082: private: 25082: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; 25082: static constexpr uintmax_t __d2 = _R2::den / __g; 25082: typedef __big_mul<_R1::den, __d2> __d; 25082: typedef __big_mul<_R1::num, _R2::den / __g> __x; 25082: typedef __big_mul<_R2::num, _R1::den / __g> __y; 25082: typedef __big_add<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; 25082: static_assert(__n::__hi >= __x::__hi, "Internal library error"); 25082: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; 25082: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; 25082: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; 25082: static_assert(__n_final::__rem == 0, "Internal library error"); 25082: static_assert(__n_final::__quot_hi == 0 && 25082: __n_final::__quot_lo <= 0x7fffffffffffffffL, "overflow in addition"); 25082: typedef __big_mul<_R1::den / __g2, __d2> __d_final; 25082: static_assert(__d_final::__hi == 0 && 25082: __d_final::__lo <= 0x7fffffffffffffffL, "overflow in addition"); 25082: public: 25082: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; 25082: }; 25082: 25082: template 25082: struct __ratio_add_impl<_R1, _R2, false, true, true> 25082: : __ratio_add_impl<_R2, _R1> 25082: { }; 25082: 25082: 25082: template 25082: struct __ratio_add_impl<_R1, _R2, true, false, false> 25082: { 25082: private: 25082: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; 25082: static constexpr uintmax_t __d2 = _R2::den / __g; 25082: typedef __big_mul<_R1::den, __d2> __d; 25082: typedef __big_mul<_R1::num, _R2::den / __g> __x; 25082: typedef __big_mul<-_R2::num, _R1::den / __g> __y; 25082: typedef __big_sub<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; 25082: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; 25082: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; 25082: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; 25082: static_assert(__n_final::__rem == 0, "Internal library error"); 25082: static_assert(__n_final::__quot_hi == 0 && 25082: __n_final::__quot_lo <= 0x7fffffffffffffffL, "overflow in addition"); 25082: typedef __big_mul<_R1::den / __g2, __d2> __d_final; 25082: static_assert(__d_final::__hi == 0 && 25082: __d_final::__lo <= 0x7fffffffffffffffL, "overflow in addition"); 25082: public: 25082: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; 25082: }; 25082: 25082: template 25082: struct __ratio_add 25082: { 25082: typedef typename __ratio_add_impl<_R1, _R2>::type type; 25082: static constexpr intmax_t num = type::num; 25082: static constexpr intmax_t den = type::den; 25082: }; 25082: 25082: template 25082: constexpr intmax_t __ratio_add<_R1, _R2>::num; 25082: 25082: template 25082: constexpr intmax_t __ratio_add<_R1, _R2>::den; 25082: 25082: 25082: template 25082: using ratio_add = typename __ratio_add<_R1, _R2>::type; 25082: 25082: template 25082: struct __ratio_subtract 25082: { 25082: typedef typename __ratio_add< 25082: _R1, 25082: ratio<-_R2::num, _R2::den>>::type type; 25082: 25082: static constexpr intmax_t num = type::num; 25082: static constexpr intmax_t den = type::den; 25082: }; 25082: 25082: template 25082: constexpr intmax_t __ratio_subtract<_R1, _R2>::num; 25082: 25082: template 25082: constexpr intmax_t __ratio_subtract<_R1, _R2>::den; 25082: 25082: 25082: template 25082: using ratio_subtract = typename __ratio_subtract<_R1, _R2>::type; 25082: 25082: 25082: typedef ratio<1, 1000000000000000000> atto; 25082: typedef ratio<1, 1000000000000000> femto; 25082: typedef ratio<1, 1000000000000> pico; 25082: typedef ratio<1, 1000000000> nano; 25082: typedef ratio<1, 1000000> micro; 25082: typedef ratio<1, 1000> milli; 25082: typedef ratio<1, 100> centi; 25082: typedef ratio<1, 10> deci; 25082: typedef ratio< 10, 1> deca; 25082: typedef ratio< 100, 1> hecto; 25082: typedef ratio< 1000, 1> kilo; 25082: typedef ratio< 1000000, 1> mega; 25082: typedef ratio< 1000000000, 1> giga; 25082: typedef ratio< 1000000000000, 1> tera; 25082: typedef ratio< 1000000000000000, 1> peta; 25082: typedef ratio< 1000000000000000000, 1> exa; 25082: 25082: 25082: 25082: } 25082: # 39 "/usr/include/c++/8/chrono" 2 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/ctime" 1 3 25082: # 39 "/usr/include/c++/8/ctime" 3 25082: 25082: # 40 "/usr/include/c++/8/ctime" 3 25082: # 42 "/usr/include/c++/8/chrono" 2 3 25082: # 1 "/usr/include/c++/8/bits/parse_numbers.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/parse_numbers.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/parse_numbers.h" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: namespace __parse_int 25082: { 25082: template 25082: struct _Digit; 25082: 25082: template 25082: struct _Digit<_Base, '0'> : integral_constant 25082: { 25082: using __valid = true_type; 25082: }; 25082: 25082: template 25082: struct _Digit<_Base, '1'> : integral_constant 25082: { 25082: using __valid = true_type; 25082: }; 25082: 25082: template 25082: struct _Digit_impl : integral_constant 25082: { 25082: static_assert(_Base > _Val, "invalid digit"); 25082: using __valid = true_type; 25082: }; 25082: 25082: template 25082: struct _Digit<_Base, '2'> : _Digit_impl<_Base, 2> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, '3'> : _Digit_impl<_Base, 3> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, '4'> : _Digit_impl<_Base, 4> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, '5'> : _Digit_impl<_Base, 5> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, '6'> : _Digit_impl<_Base, 6> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, '7'> : _Digit_impl<_Base, 7> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, '8'> : _Digit_impl<_Base, 8> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, '9'> : _Digit_impl<_Base, 9> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'a'> : _Digit_impl<_Base, 0xa> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'A'> : _Digit_impl<_Base, 0xa> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'b'> : _Digit_impl<_Base, 0xb> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'B'> : _Digit_impl<_Base, 0xb> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'c'> : _Digit_impl<_Base, 0xc> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'C'> : _Digit_impl<_Base, 0xc> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'd'> : _Digit_impl<_Base, 0xd> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'D'> : _Digit_impl<_Base, 0xd> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'e'> : _Digit_impl<_Base, 0xe> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'E'> : _Digit_impl<_Base, 0xe> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'f'> : _Digit_impl<_Base, 0xf> 25082: { }; 25082: 25082: template 25082: struct _Digit<_Base, 'F'> : _Digit_impl<_Base, 0xf> 25082: { }; 25082: 25082: 25082: template 25082: struct _Digit<_Base, '\''> : integral_constant 25082: { 25082: using __valid = false_type; 25082: }; 25082: 25082: 25082: 25082: template 25082: using __ull_constant = integral_constant; 25082: 25082: template 25082: struct _Power_help 25082: { 25082: using __next = typename _Power_help<_Base, _Digs...>::type; 25082: using __valid_digit = typename _Digit<_Base, _Dig>::__valid; 25082: using type 25082: = __ull_constant<__next::value * (__valid_digit{} ? _Base : 1ULL)>; 25082: }; 25082: 25082: template 25082: struct _Power_help<_Base, _Dig> 25082: { 25082: using __valid_digit = typename _Digit<_Base, _Dig>::__valid; 25082: using type = __ull_constant<__valid_digit::value>; 25082: }; 25082: 25082: template 25082: struct _Power : _Power_help<_Base, _Digs...>::type 25082: { }; 25082: 25082: template 25082: struct _Power<_Base> : __ull_constant<0> 25082: { }; 25082: 25082: 25082: 25082: template 25082: struct _Number_help 25082: { 25082: using __digit = _Digit<_Base, _Dig>; 25082: using __valid_digit = typename __digit::__valid; 25082: using __next = _Number_help<_Base, 25082: __valid_digit::value ? _Pow / _Base : _Pow, 25082: _Digs...>; 25082: using type = __ull_constant<_Pow * __digit::value + __next::type::value>; 25082: static_assert((type::value / _Pow) == __digit::value, 25082: "integer literal does not fit in unsigned long long"); 25082: }; 25082: 25082: 25082: template 25082: struct _Number_help<_Base, _Pow, '\'', _Dig, _Digs...> 25082: : _Number_help<_Base, _Pow, _Dig, _Digs...> 25082: { }; 25082: 25082: 25082: template 25082: struct _Number_help<_Base, 1ULL, _Dig> 25082: { 25082: using type = __ull_constant<_Digit<_Base, _Dig>::value>; 25082: }; 25082: 25082: template 25082: struct _Number 25082: : _Number_help<_Base, _Power<_Base, _Digs...>::value, _Digs...>::type 25082: { }; 25082: 25082: template 25082: struct _Number<_Base> 25082: : __ull_constant<0> 25082: { }; 25082: 25082: 25082: 25082: template 25082: struct _Parse_int; 25082: 25082: template 25082: struct _Parse_int<'0', 'b', _Digs...> 25082: : _Number<2U, _Digs...>::type 25082: { }; 25082: 25082: template 25082: struct _Parse_int<'0', 'B', _Digs...> 25082: : _Number<2U, _Digs...>::type 25082: { }; 25082: 25082: template 25082: struct _Parse_int<'0', 'x', _Digs...> 25082: : _Number<16U, _Digs...>::type 25082: { }; 25082: 25082: template 25082: struct _Parse_int<'0', 'X', _Digs...> 25082: : _Number<16U, _Digs...>::type 25082: { }; 25082: 25082: template 25082: struct _Parse_int<'0', _Digs...> 25082: : _Number<8U, _Digs...>::type 25082: { }; 25082: 25082: template 25082: struct _Parse_int 25082: : _Number<10U, _Digs...>::type 25082: { }; 25082: 25082: } 25082: 25082: 25082: namespace __select_int 25082: { 25082: template 25082: struct _Select_int_base; 25082: 25082: template 25082: struct _Select_int_base<_Val, _IntType, _Ints...> 25082: : conditional_t<(_Val <= std::numeric_limits<_IntType>::max()), 25082: integral_constant<_IntType, _Val>, 25082: _Select_int_base<_Val, _Ints...>> 25082: { }; 25082: 25082: template 25082: struct _Select_int_base<_Val> 25082: { }; 25082: 25082: template 25082: using _Select_int = typename _Select_int_base< 25082: __parse_int::_Parse_int<_Digs...>::value, 25082: unsigned char, 25082: unsigned short, 25082: unsigned int, 25082: unsigned long, 25082: unsigned long long 25082: >::type; 25082: 25082: } 25082: 25082: 25082: } 25082: # 43 "/usr/include/c++/8/chrono" 2 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 61 "/usr/include/c++/8/chrono" 3 25082: namespace chrono 25082: { 25082: template> 25082: struct duration; 25082: 25082: template 25082: struct time_point; 25082: } 25082: 25082: 25082: 25082: template 25082: struct __duration_common_type_wrapper 25082: { 25082: private: 25082: typedef __static_gcd<_Period1::num, _Period2::num> __gcd_num; 25082: typedef __static_gcd<_Period1::den, _Period2::den> __gcd_den; 25082: typedef typename _CT::type __cr; 25082: typedef ratio<__gcd_num::value, 25082: (_Period1::den / __gcd_den::value) * _Period2::den> __r; 25082: public: 25082: typedef __success_type> type; 25082: }; 25082: 25082: template 25082: struct __duration_common_type_wrapper<__failure_type, _Period1, _Period2> 25082: { typedef __failure_type type; }; 25082: 25082: template 25082: struct common_type, 25082: chrono::duration<_Rep2, _Period2>> 25082: : public __duration_common_type_wrapper>::type, _Period1, _Period2>::type 25082: { }; 25082: 25082: 25082: 25082: template 25082: struct __timepoint_common_type_wrapper 25082: { 25082: typedef __success_type> 25082: type; 25082: }; 25082: 25082: template 25082: struct __timepoint_common_type_wrapper<__failure_type, _Clock> 25082: { typedef __failure_type type; }; 25082: 25082: template 25082: struct common_type, 25082: chrono::time_point<_Clock, _Duration2>> 25082: : public __timepoint_common_type_wrapper>::type, _Clock>::type 25082: { }; 25082: 25082: namespace chrono 25082: { 25082: 25082: template 25082: struct __duration_cast_impl 25082: { 25082: template 25082: static constexpr _ToDur 25082: __cast(const duration<_Rep, _Period>& __d) 25082: { 25082: typedef typename _ToDur::rep __to_rep; 25082: return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count()) 25082: * static_cast<_CR>(_CF::num) 25082: / static_cast<_CR>(_CF::den))); 25082: } 25082: }; 25082: 25082: template 25082: struct __duration_cast_impl<_ToDur, _CF, _CR, true, true> 25082: { 25082: template 25082: static constexpr _ToDur 25082: __cast(const duration<_Rep, _Period>& __d) 25082: { 25082: typedef typename _ToDur::rep __to_rep; 25082: return _ToDur(static_cast<__to_rep>(__d.count())); 25082: } 25082: }; 25082: 25082: template 25082: struct __duration_cast_impl<_ToDur, _CF, _CR, true, false> 25082: { 25082: template 25082: static constexpr _ToDur 25082: __cast(const duration<_Rep, _Period>& __d) 25082: { 25082: typedef typename _ToDur::rep __to_rep; 25082: return _ToDur(static_cast<__to_rep>( 25082: static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den))); 25082: } 25082: }; 25082: 25082: template 25082: struct __duration_cast_impl<_ToDur, _CF, _CR, false, true> 25082: { 25082: template 25082: static constexpr _ToDur 25082: __cast(const duration<_Rep, _Period>& __d) 25082: { 25082: typedef typename _ToDur::rep __to_rep; 25082: return _ToDur(static_cast<__to_rep>( 25082: static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num))); 25082: } 25082: }; 25082: 25082: template 25082: struct __is_duration 25082: : std::false_type 25082: { }; 25082: 25082: template 25082: struct __is_duration> 25082: : std::true_type 25082: { }; 25082: 25082: template 25082: using __enable_if_is_duration 25082: = typename enable_if<__is_duration<_Tp>::value, _Tp>::type; 25082: 25082: template 25082: using __disable_if_is_duration 25082: = typename enable_if::value, _Tp>::type; 25082: 25082: 25082: template 25082: constexpr __enable_if_is_duration<_ToDur> 25082: duration_cast(const duration<_Rep, _Period>& __d) 25082: { 25082: typedef typename _ToDur::period __to_period; 25082: typedef typename _ToDur::rep __to_rep; 25082: typedef ratio_divide<_Period, __to_period> __cf; 25082: typedef typename common_type<__to_rep, _Rep, intmax_t>::type 25082: __cr; 25082: typedef __duration_cast_impl<_ToDur, __cf, __cr, 25082: __cf::num == 1, __cf::den == 1> __dc; 25082: return __dc::__cast(__d); 25082: } 25082: 25082: 25082: template 25082: struct treat_as_floating_point 25082: : is_floating_point<_Rep> 25082: { }; 25082: 25082: 25082: template 25082: inline constexpr bool treat_as_floating_point_v = 25082: treat_as_floating_point<_Rep>::value; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: constexpr __enable_if_is_duration<_ToDur> 25082: floor(const duration<_Rep, _Period>& __d) 25082: { 25082: auto __to = chrono::duration_cast<_ToDur>(__d); 25082: if (__to > __d) 25082: return __to - _ToDur{1}; 25082: return __to; 25082: } 25082: 25082: template 25082: constexpr __enable_if_is_duration<_ToDur> 25082: ceil(const duration<_Rep, _Period>& __d) 25082: { 25082: auto __to = chrono::duration_cast<_ToDur>(__d); 25082: if (__to < __d) 25082: return __to + _ToDur{1}; 25082: return __to; 25082: } 25082: 25082: template 25082: constexpr enable_if_t< 25082: __and_<__is_duration<_ToDur>, 25082: __not_>>::value, 25082: _ToDur> 25082: round(const duration<_Rep, _Period>& __d) 25082: { 25082: _ToDur __t0 = chrono::floor<_ToDur>(__d); 25082: _ToDur __t1 = __t0 + _ToDur{1}; 25082: auto __diff0 = __d - __t0; 25082: auto __diff1 = __t1 - __d; 25082: if (__diff0 == __diff1) 25082: { 25082: if (__t0.count() & 1) 25082: return __t1; 25082: return __t0; 25082: } 25082: else if (__diff0 < __diff1) 25082: return __t0; 25082: return __t1; 25082: } 25082: 25082: template 25082: constexpr 25082: enable_if_t::is_signed, duration<_Rep, _Period>> 25082: abs(duration<_Rep, _Period> __d) 25082: { 25082: if (__d >= __d.zero()) 25082: return __d; 25082: return -__d; 25082: } 25082: 25082: 25082: 25082: template 25082: struct duration_values 25082: { 25082: static constexpr _Rep 25082: zero() noexcept 25082: { return _Rep(0); } 25082: 25082: static constexpr _Rep 25082: max() noexcept 25082: { return numeric_limits<_Rep>::max(); } 25082: 25082: static constexpr _Rep 25082: min() noexcept 25082: { return numeric_limits<_Rep>::lowest(); } 25082: }; 25082: 25082: template 25082: struct __is_ratio 25082: : std::false_type 25082: { }; 25082: 25082: template 25082: struct __is_ratio> 25082: : std::true_type 25082: { }; 25082: 25082: 25082: template 25082: struct duration 25082: { 25082: private: 25082: template 25082: using __is_float = treat_as_floating_point<_Rep2>; 25082: 25082: 25082: template 25082: using __is_harmonic 25082: = __bool_constant::den == 1>; 25082: 25082: public: 25082: 25082: typedef _Rep rep; 25082: typedef _Period period; 25082: 25082: static_assert(!__is_duration<_Rep>::value, "rep cannot be a duration"); 25082: static_assert(__is_ratio<_Period>::value, 25082: "period must be a specialization of ratio"); 25082: static_assert(_Period::num > 0, "period must be positive"); 25082: 25082: 25082: constexpr duration() = default; 25082: 25082: duration(const duration&) = default; 25082: 25082: 25082: 25082: template, 25082: __or_<__is_float, __not_<__is_float<_Rep2>>>>> 25082: constexpr explicit duration(const _Rep2& __rep) 25082: : __r(static_cast(__rep)) { } 25082: 25082: template, 25082: __and_<__is_harmonic<_Period2>, 25082: __not_<__is_float<_Rep2>>>>>> 25082: constexpr duration(const duration<_Rep2, _Period2>& __d) 25082: : __r(duration_cast(__d).count()) { } 25082: 25082: ~duration() = default; 25082: duration& operator=(const duration&) = default; 25082: 25082: 25082: constexpr rep 25082: count() const 25082: { return __r; } 25082: 25082: 25082: constexpr duration 25082: operator+() const 25082: { return *this; } 25082: 25082: constexpr duration 25082: operator-() const 25082: { return duration(-__r); } 25082: 25082: constexpr duration& 25082: operator++() 25082: { 25082: ++__r; 25082: return *this; 25082: } 25082: 25082: constexpr duration 25082: operator++(int) 25082: { return duration(__r++); } 25082: 25082: constexpr duration& 25082: operator--() 25082: { 25082: --__r; 25082: return *this; 25082: } 25082: 25082: constexpr duration 25082: operator--(int) 25082: { return duration(__r--); } 25082: 25082: constexpr duration& 25082: operator+=(const duration& __d) 25082: { 25082: __r += __d.count(); 25082: return *this; 25082: } 25082: 25082: constexpr duration& 25082: operator-=(const duration& __d) 25082: { 25082: __r -= __d.count(); 25082: return *this; 25082: } 25082: 25082: constexpr duration& 25082: operator*=(const rep& __rhs) 25082: { 25082: __r *= __rhs; 25082: return *this; 25082: } 25082: 25082: constexpr duration& 25082: operator/=(const rep& __rhs) 25082: { 25082: __r /= __rhs; 25082: return *this; 25082: } 25082: 25082: 25082: template 25082: constexpr 25082: typename enable_if::value, 25082: duration&>::type 25082: operator%=(const rep& __rhs) 25082: { 25082: __r %= __rhs; 25082: return *this; 25082: } 25082: 25082: template 25082: constexpr 25082: typename enable_if::value, 25082: duration&>::type 25082: operator%=(const duration& __d) 25082: { 25082: __r %= __d.count(); 25082: return *this; 25082: } 25082: 25082: 25082: static constexpr duration 25082: zero() noexcept 25082: { return duration(duration_values::zero()); } 25082: 25082: static constexpr duration 25082: min() noexcept 25082: { return duration(duration_values::min()); } 25082: 25082: static constexpr duration 25082: max() noexcept 25082: { return duration(duration_values::max()); } 25082: 25082: private: 25082: rep __r; 25082: }; 25082: 25082: template 25082: constexpr typename common_type, 25082: duration<_Rep2, _Period2>>::type 25082: operator+(const duration<_Rep1, _Period1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { 25082: typedef duration<_Rep1, _Period1> __dur1; 25082: typedef duration<_Rep2, _Period2> __dur2; 25082: typedef typename common_type<__dur1,__dur2>::type __cd; 25082: return __cd(__cd(__lhs).count() + __cd(__rhs).count()); 25082: } 25082: 25082: template 25082: constexpr typename common_type, 25082: duration<_Rep2, _Period2>>::type 25082: operator-(const duration<_Rep1, _Period1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { 25082: typedef duration<_Rep1, _Period1> __dur1; 25082: typedef duration<_Rep2, _Period2> __dur2; 25082: typedef typename common_type<__dur1,__dur2>::type __cd; 25082: return __cd(__cd(__lhs).count() - __cd(__rhs).count()); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template::type> 25082: using __common_rep_t = typename 25082: enable_if::value, _CRep>::type; 25082: 25082: template 25082: constexpr duration<__common_rep_t<_Rep1, _Rep2>, _Period> 25082: operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 25082: { 25082: typedef duration::type, _Period> 25082: __cd; 25082: return __cd(__cd(__d).count() * __s); 25082: } 25082: 25082: template 25082: constexpr duration<__common_rep_t<_Rep2, _Rep1>, _Period> 25082: operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) 25082: { return __d * __s; } 25082: 25082: template 25082: constexpr 25082: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> 25082: operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 25082: { 25082: typedef duration::type, _Period> 25082: __cd; 25082: return __cd(__cd(__d).count() / __s); 25082: } 25082: 25082: template 25082: constexpr typename common_type<_Rep1, _Rep2>::type 25082: operator/(const duration<_Rep1, _Period1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { 25082: typedef duration<_Rep1, _Period1> __dur1; 25082: typedef duration<_Rep2, _Period2> __dur2; 25082: typedef typename common_type<__dur1,__dur2>::type __cd; 25082: return __cd(__lhs).count() / __cd(__rhs).count(); 25082: } 25082: 25082: 25082: template 25082: constexpr 25082: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> 25082: operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 25082: { 25082: typedef duration::type, _Period> 25082: __cd; 25082: return __cd(__cd(__d).count() % __s); 25082: } 25082: 25082: template 25082: constexpr typename common_type, 25082: duration<_Rep2, _Period2>>::type 25082: operator%(const duration<_Rep1, _Period1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { 25082: typedef duration<_Rep1, _Period1> __dur1; 25082: typedef duration<_Rep2, _Period2> __dur2; 25082: typedef typename common_type<__dur1,__dur2>::type __cd; 25082: return __cd(__cd(__lhs).count() % __cd(__rhs).count()); 25082: } 25082: 25082: 25082: template 25082: constexpr bool 25082: operator==(const duration<_Rep1, _Period1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { 25082: typedef duration<_Rep1, _Period1> __dur1; 25082: typedef duration<_Rep2, _Period2> __dur2; 25082: typedef typename common_type<__dur1,__dur2>::type __ct; 25082: return __ct(__lhs).count() == __ct(__rhs).count(); 25082: } 25082: 25082: template 25082: constexpr bool 25082: operator<(const duration<_Rep1, _Period1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { 25082: typedef duration<_Rep1, _Period1> __dur1; 25082: typedef duration<_Rep2, _Period2> __dur2; 25082: typedef typename common_type<__dur1,__dur2>::type __ct; 25082: return __ct(__lhs).count() < __ct(__rhs).count(); 25082: } 25082: 25082: template 25082: constexpr bool 25082: operator!=(const duration<_Rep1, _Period1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { return !(__lhs == __rhs); } 25082: 25082: template 25082: constexpr bool 25082: operator<=(const duration<_Rep1, _Period1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { return !(__rhs < __lhs); } 25082: 25082: template 25082: constexpr bool 25082: operator>(const duration<_Rep1, _Period1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { return __rhs < __lhs; } 25082: 25082: template 25082: constexpr bool 25082: operator>=(const duration<_Rep1, _Period1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { return !(__lhs < __rhs); } 25082: 25082: 25082: typedef duration nanoseconds; 25082: 25082: 25082: typedef duration microseconds; 25082: 25082: 25082: typedef duration milliseconds; 25082: 25082: 25082: typedef duration seconds; 25082: 25082: 25082: typedef duration> minutes; 25082: 25082: 25082: typedef duration> hours; 25082: 25082: 25082: template 25082: struct time_point 25082: { 25082: typedef _Clock clock; 25082: typedef _Dur duration; 25082: typedef typename duration::rep rep; 25082: typedef typename duration::period period; 25082: 25082: constexpr time_point() : __d(duration::zero()) 25082: { } 25082: 25082: constexpr explicit time_point(const duration& __dur) 25082: : __d(__dur) 25082: { } 25082: 25082: 25082: template>> 25082: constexpr time_point(const time_point& __t) 25082: : __d(__t.time_since_epoch()) 25082: { } 25082: 25082: 25082: constexpr duration 25082: time_since_epoch() const 25082: { return __d; } 25082: 25082: 25082: constexpr time_point& 25082: operator+=(const duration& __dur) 25082: { 25082: __d += __dur; 25082: return *this; 25082: } 25082: 25082: constexpr time_point& 25082: operator-=(const duration& __dur) 25082: { 25082: __d -= __dur; 25082: return *this; 25082: } 25082: 25082: 25082: static constexpr time_point 25082: min() noexcept 25082: { return time_point(duration::min()); } 25082: 25082: static constexpr time_point 25082: max() noexcept 25082: { return time_point(duration::max()); } 25082: 25082: private: 25082: duration __d; 25082: }; 25082: 25082: 25082: template 25082: constexpr typename enable_if<__is_duration<_ToDur>::value, 25082: time_point<_Clock, _ToDur>>::type 25082: time_point_cast(const time_point<_Clock, _Dur>& __t) 25082: { 25082: typedef time_point<_Clock, _ToDur> __time_point; 25082: return __time_point(duration_cast<_ToDur>(__t.time_since_epoch())); 25082: } 25082: 25082: 25082: template 25082: constexpr 25082: enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> 25082: floor(const time_point<_Clock, _Dur>& __tp) 25082: { 25082: return time_point<_Clock, _ToDur>{ 25082: chrono::floor<_ToDur>(__tp.time_since_epoch())}; 25082: } 25082: 25082: template 25082: constexpr 25082: enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> 25082: ceil(const time_point<_Clock, _Dur>& __tp) 25082: { 25082: return time_point<_Clock, _ToDur>{ 25082: chrono::ceil<_ToDur>(__tp.time_since_epoch())}; 25082: } 25082: 25082: template 25082: constexpr enable_if_t< 25082: __and_<__is_duration<_ToDur>, 25082: __not_>>::value, 25082: time_point<_Clock, _ToDur>> 25082: round(const time_point<_Clock, _Dur>& __tp) 25082: { 25082: return time_point<_Clock, _ToDur>{ 25082: chrono::round<_ToDur>(__tp.time_since_epoch())}; 25082: } 25082: 25082: 25082: template 25082: constexpr time_point<_Clock, 25082: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> 25082: operator+(const time_point<_Clock, _Dur1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { 25082: typedef duration<_Rep2, _Period2> __dur2; 25082: typedef typename common_type<_Dur1,__dur2>::type __ct; 25082: typedef time_point<_Clock, __ct> __time_point; 25082: return __time_point(__lhs.time_since_epoch() + __rhs); 25082: } 25082: 25082: template 25082: constexpr time_point<_Clock, 25082: typename common_type, _Dur2>::type> 25082: operator+(const duration<_Rep1, _Period1>& __lhs, 25082: const time_point<_Clock, _Dur2>& __rhs) 25082: { 25082: typedef duration<_Rep1, _Period1> __dur1; 25082: typedef typename common_type<__dur1,_Dur2>::type __ct; 25082: typedef time_point<_Clock, __ct> __time_point; 25082: return __time_point(__rhs.time_since_epoch() + __lhs); 25082: } 25082: 25082: template 25082: constexpr time_point<_Clock, 25082: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> 25082: operator-(const time_point<_Clock, _Dur1>& __lhs, 25082: const duration<_Rep2, _Period2>& __rhs) 25082: { 25082: typedef duration<_Rep2, _Period2> __dur2; 25082: typedef typename common_type<_Dur1,__dur2>::type __ct; 25082: typedef time_point<_Clock, __ct> __time_point; 25082: return __time_point(__lhs.time_since_epoch() -__rhs); 25082: } 25082: 25082: template 25082: constexpr typename common_type<_Dur1, _Dur2>::type 25082: operator-(const time_point<_Clock, _Dur1>& __lhs, 25082: const time_point<_Clock, _Dur2>& __rhs) 25082: { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } 25082: 25082: template 25082: constexpr bool 25082: operator==(const time_point<_Clock, _Dur1>& __lhs, 25082: const time_point<_Clock, _Dur2>& __rhs) 25082: { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } 25082: 25082: template 25082: constexpr bool 25082: operator!=(const time_point<_Clock, _Dur1>& __lhs, 25082: const time_point<_Clock, _Dur2>& __rhs) 25082: { return !(__lhs == __rhs); } 25082: 25082: template 25082: constexpr bool 25082: operator<(const time_point<_Clock, _Dur1>& __lhs, 25082: const time_point<_Clock, _Dur2>& __rhs) 25082: { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } 25082: 25082: template 25082: constexpr bool 25082: operator<=(const time_point<_Clock, _Dur1>& __lhs, 25082: const time_point<_Clock, _Dur2>& __rhs) 25082: { return !(__rhs < __lhs); } 25082: 25082: template 25082: constexpr bool 25082: operator>(const time_point<_Clock, _Dur1>& __lhs, 25082: const time_point<_Clock, _Dur2>& __rhs) 25082: { return __rhs < __lhs; } 25082: 25082: template 25082: constexpr bool 25082: operator>=(const time_point<_Clock, _Dur1>& __lhs, 25082: const time_point<_Clock, _Dur2>& __rhs) 25082: { return !(__lhs < __rhs); } 25082: # 811 "/usr/include/c++/8/chrono" 3 25082: inline namespace _V2 { 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct system_clock 25082: { 25082: typedef chrono::nanoseconds duration; 25082: typedef duration::rep rep; 25082: typedef duration::period period; 25082: typedef chrono::time_point time_point; 25082: 25082: static_assert(system_clock::duration::min() 25082: < system_clock::duration::zero(), 25082: "a clock's minimum duration cannot be less than its epoch"); 25082: 25082: static constexpr bool is_steady = false; 25082: 25082: static time_point 25082: now() noexcept; 25082: 25082: 25082: static std::time_t 25082: to_time_t(const time_point& __t) noexcept 25082: { 25082: return std::time_t(duration_cast 25082: (__t.time_since_epoch()).count()); 25082: } 25082: 25082: static time_point 25082: from_time_t(std::time_t __t) noexcept 25082: { 25082: typedef chrono::time_point __from; 25082: return time_point_cast 25082: (__from(chrono::seconds(__t))); 25082: } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct steady_clock 25082: { 25082: typedef chrono::nanoseconds duration; 25082: typedef duration::rep rep; 25082: typedef duration::period period; 25082: typedef chrono::time_point time_point; 25082: 25082: static constexpr bool is_steady = true; 25082: 25082: static time_point 25082: now() noexcept; 25082: }; 25082: # 878 "/usr/include/c++/8/chrono" 3 25082: using high_resolution_clock = system_clock; 25082: 25082: } 25082: } 25082: 25082: 25082: 25082: 25082: 25082: inline namespace literals 25082: { 25082: inline namespace chrono_literals 25082: { 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wliteral-suffix" 25082: template 25082: struct _Checked_integral_constant 25082: : integral_constant<_Rep, static_cast<_Rep>(_Val)> 25082: { 25082: static_assert(_Checked_integral_constant::value >= 0 25082: && _Checked_integral_constant::value == _Val, 25082: "literal value cannot be represented by duration type"); 25082: }; 25082: 25082: template 25082: constexpr _Dur __check_overflow() 25082: { 25082: using _Val = __parse_int::_Parse_int<_Digits...>; 25082: using _Rep = typename _Dur::rep; 25082: 25082: 25082: using _CheckedVal = _Checked_integral_constant<_Rep, _Val::value>; 25082: return _Dur{_CheckedVal::value}; 25082: } 25082: 25082: constexpr chrono::duration> 25082: operator""h(long double __hours) 25082: { return chrono::duration>{__hours}; } 25082: 25082: template 25082: constexpr chrono::hours 25082: operator""h() 25082: { return __check_overflow(); } 25082: 25082: constexpr chrono::duration> 25082: operator""min(long double __mins) 25082: { return chrono::duration>{__mins}; } 25082: 25082: template 25082: constexpr chrono::minutes 25082: operator""min() 25082: { return __check_overflow(); } 25082: 25082: constexpr chrono::duration 25082: operator""s(long double __secs) 25082: { return chrono::duration{__secs}; } 25082: 25082: template 25082: constexpr chrono::seconds 25082: operator""s() 25082: { return __check_overflow(); } 25082: 25082: constexpr chrono::duration 25082: operator""ms(long double __msecs) 25082: { return chrono::duration{__msecs}; } 25082: 25082: template 25082: constexpr chrono::milliseconds 25082: operator""ms() 25082: { return __check_overflow(); } 25082: 25082: constexpr chrono::duration 25082: operator""us(long double __usecs) 25082: { return chrono::duration{__usecs}; } 25082: 25082: template 25082: constexpr chrono::microseconds 25082: operator""us() 25082: { return __check_overflow(); } 25082: 25082: constexpr chrono::duration 25082: operator""ns(long double __nsecs) 25082: { return chrono::duration{__nsecs}; } 25082: 25082: template 25082: constexpr chrono::nanoseconds 25082: operator""ns() 25082: { return __check_overflow(); } 25082: 25082: #pragma GCC diagnostic pop 25082: } 25082: } 25082: 25082: namespace chrono 25082: { 25082: using namespace literals::chrono_literals; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 40 "/usr/include/c++/8/mutex" 2 3 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/std_mutex.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/std_mutex.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/std_mutex.h" 3 25082: # 46 "/usr/include/c++/8/bits/std_mutex.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 60 "/usr/include/c++/8/bits/std_mutex.h" 3 25082: class __mutex_base 25082: { 25082: protected: 25082: typedef __gthread_mutex_t __native_type; 25082: 25082: 25082: __native_type _M_mutex = { { 0, 0, 0, 0, 0, 0, { 0, 0 } } }; 25082: 25082: constexpr __mutex_base() noexcept = default; 25082: # 81 "/usr/include/c++/8/bits/std_mutex.h" 3 25082: __mutex_base(const __mutex_base&) = delete; 25082: __mutex_base& operator=(const __mutex_base&) = delete; 25082: }; 25082: 25082: 25082: class mutex : private __mutex_base 25082: { 25082: public: 25082: typedef __native_type* native_handle_type; 25082: 25082: 25082: constexpr 25082: 25082: mutex() noexcept = default; 25082: ~mutex() = default; 25082: 25082: mutex(const mutex&) = delete; 25082: mutex& operator=(const mutex&) = delete; 25082: 25082: void 25082: lock() 25082: { 25082: int __e = __gthread_mutex_lock(&_M_mutex); 25082: 25082: 25082: if (__e) 25082: __throw_system_error(__e); 25082: } 25082: 25082: bool 25082: try_lock() noexcept 25082: { 25082: 25082: return !__gthread_mutex_trylock(&_M_mutex); 25082: } 25082: 25082: void 25082: unlock() 25082: { 25082: 25082: __gthread_mutex_unlock(&_M_mutex); 25082: } 25082: 25082: native_handle_type 25082: native_handle() noexcept 25082: { return &_M_mutex; } 25082: }; 25082: 25082: 25082: 25082: 25082: struct defer_lock_t { explicit defer_lock_t() = default; }; 25082: 25082: 25082: struct try_to_lock_t { explicit try_to_lock_t() = default; }; 25082: 25082: 25082: 25082: struct adopt_lock_t { explicit adopt_lock_t() = default; }; 25082: 25082: 25082: inline constexpr defer_lock_t defer_lock { }; 25082: 25082: 25082: inline constexpr try_to_lock_t try_to_lock { }; 25082: 25082: 25082: inline constexpr adopt_lock_t adopt_lock { }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class lock_guard 25082: { 25082: public: 25082: typedef _Mutex mutex_type; 25082: 25082: explicit lock_guard(mutex_type& __m) : _M_device(__m) 25082: { _M_device.lock(); } 25082: 25082: lock_guard(mutex_type& __m, adopt_lock_t) noexcept : _M_device(__m) 25082: { } 25082: 25082: ~lock_guard() 25082: { _M_device.unlock(); } 25082: 25082: lock_guard(const lock_guard&) = delete; 25082: lock_guard& operator=(const lock_guard&) = delete; 25082: 25082: private: 25082: mutex_type& _M_device; 25082: }; 25082: # 184 "/usr/include/c++/8/bits/std_mutex.h" 3 25082: template 25082: class unique_lock 25082: { 25082: public: 25082: typedef _Mutex mutex_type; 25082: 25082: unique_lock() noexcept 25082: : _M_device(0), _M_owns(false) 25082: { } 25082: 25082: explicit unique_lock(mutex_type& __m) 25082: : _M_device(std::__addressof(__m)), _M_owns(false) 25082: { 25082: lock(); 25082: _M_owns = true; 25082: } 25082: 25082: unique_lock(mutex_type& __m, defer_lock_t) noexcept 25082: : _M_device(std::__addressof(__m)), _M_owns(false) 25082: { } 25082: 25082: unique_lock(mutex_type& __m, try_to_lock_t) 25082: : _M_device(std::__addressof(__m)), _M_owns(_M_device->try_lock()) 25082: { } 25082: 25082: unique_lock(mutex_type& __m, adopt_lock_t) noexcept 25082: : _M_device(std::__addressof(__m)), _M_owns(true) 25082: { 25082: 25082: } 25082: 25082: template 25082: unique_lock(mutex_type& __m, 25082: const chrono::time_point<_Clock, _Duration>& __atime) 25082: : _M_device(std::__addressof(__m)), 25082: _M_owns(_M_device->try_lock_until(__atime)) 25082: { } 25082: 25082: template 25082: unique_lock(mutex_type& __m, 25082: const chrono::duration<_Rep, _Period>& __rtime) 25082: : _M_device(std::__addressof(__m)), 25082: _M_owns(_M_device->try_lock_for(__rtime)) 25082: { } 25082: 25082: ~unique_lock() 25082: { 25082: if (_M_owns) 25082: unlock(); 25082: } 25082: 25082: unique_lock(const unique_lock&) = delete; 25082: unique_lock& operator=(const unique_lock&) = delete; 25082: 25082: unique_lock(unique_lock&& __u) noexcept 25082: : _M_device(__u._M_device), _M_owns(__u._M_owns) 25082: { 25082: __u._M_device = 0; 25082: __u._M_owns = false; 25082: } 25082: 25082: unique_lock& operator=(unique_lock&& __u) noexcept 25082: { 25082: if(_M_owns) 25082: unlock(); 25082: 25082: unique_lock(std::move(__u)).swap(*this); 25082: 25082: __u._M_device = 0; 25082: __u._M_owns = false; 25082: 25082: return *this; 25082: } 25082: 25082: void 25082: lock() 25082: { 25082: if (!_M_device) 25082: __throw_system_error(int(errc::operation_not_permitted)); 25082: else if (_M_owns) 25082: __throw_system_error(int(errc::resource_deadlock_would_occur)); 25082: else 25082: { 25082: _M_device->lock(); 25082: _M_owns = true; 25082: } 25082: } 25082: 25082: bool 25082: try_lock() 25082: { 25082: if (!_M_device) 25082: __throw_system_error(int(errc::operation_not_permitted)); 25082: else if (_M_owns) 25082: __throw_system_error(int(errc::resource_deadlock_would_occur)); 25082: else 25082: { 25082: _M_owns = _M_device->try_lock(); 25082: return _M_owns; 25082: } 25082: } 25082: 25082: template 25082: bool 25082: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 25082: { 25082: if (!_M_device) 25082: __throw_system_error(int(errc::operation_not_permitted)); 25082: else if (_M_owns) 25082: __throw_system_error(int(errc::resource_deadlock_would_occur)); 25082: else 25082: { 25082: _M_owns = _M_device->try_lock_until(__atime); 25082: return _M_owns; 25082: } 25082: } 25082: 25082: template 25082: bool 25082: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 25082: { 25082: if (!_M_device) 25082: __throw_system_error(int(errc::operation_not_permitted)); 25082: else if (_M_owns) 25082: __throw_system_error(int(errc::resource_deadlock_would_occur)); 25082: else 25082: { 25082: _M_owns = _M_device->try_lock_for(__rtime); 25082: return _M_owns; 25082: } 25082: } 25082: 25082: void 25082: unlock() 25082: { 25082: if (!_M_owns) 25082: __throw_system_error(int(errc::operation_not_permitted)); 25082: else if (_M_device) 25082: { 25082: _M_device->unlock(); 25082: _M_owns = false; 25082: } 25082: } 25082: 25082: void 25082: swap(unique_lock& __u) noexcept 25082: { 25082: std::swap(_M_device, __u._M_device); 25082: std::swap(_M_owns, __u._M_owns); 25082: } 25082: 25082: mutex_type* 25082: release() noexcept 25082: { 25082: mutex_type* __ret = _M_device; 25082: _M_device = 0; 25082: _M_owns = false; 25082: return __ret; 25082: } 25082: 25082: bool 25082: owns_lock() const noexcept 25082: { return _M_owns; } 25082: 25082: explicit operator bool() const noexcept 25082: { return owns_lock(); } 25082: 25082: mutex_type* 25082: mutex() const noexcept 25082: { return _M_device; } 25082: 25082: private: 25082: mutex_type* _M_device; 25082: bool _M_owns; 25082: }; 25082: 25082: 25082: template 25082: inline void 25082: swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) noexcept 25082: { __x.swap(__y); } 25082: 25082: 25082: 25082: } 25082: # 44 "/usr/include/c++/8/mutex" 2 3 25082: # 54 "/usr/include/c++/8/mutex" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 66 "/usr/include/c++/8/mutex" 3 25082: class __recursive_mutex_base 25082: { 25082: protected: 25082: typedef __gthread_recursive_mutex_t __native_type; 25082: 25082: __recursive_mutex_base(const __recursive_mutex_base&) = delete; 25082: __recursive_mutex_base& operator=(const __recursive_mutex_base&) = delete; 25082: 25082: 25082: __native_type _M_mutex = { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0, 0 } } }; 25082: 25082: __recursive_mutex_base() = default; 25082: # 90 "/usr/include/c++/8/mutex" 3 25082: }; 25082: 25082: 25082: class recursive_mutex : private __recursive_mutex_base 25082: { 25082: public: 25082: typedef __native_type* native_handle_type; 25082: 25082: recursive_mutex() = default; 25082: ~recursive_mutex() = default; 25082: 25082: recursive_mutex(const recursive_mutex&) = delete; 25082: recursive_mutex& operator=(const recursive_mutex&) = delete; 25082: 25082: void 25082: lock() 25082: { 25082: int __e = __gthread_recursive_mutex_lock(&_M_mutex); 25082: 25082: 25082: if (__e) 25082: __throw_system_error(__e); 25082: } 25082: 25082: bool 25082: try_lock() noexcept 25082: { 25082: 25082: return !__gthread_recursive_mutex_trylock(&_M_mutex); 25082: } 25082: 25082: void 25082: unlock() 25082: { 25082: 25082: __gthread_recursive_mutex_unlock(&_M_mutex); 25082: } 25082: 25082: native_handle_type 25082: native_handle() noexcept 25082: { return &_M_mutex; } 25082: }; 25082: 25082: 25082: template 25082: class __timed_mutex_impl 25082: { 25082: protected: 25082: typedef chrono::high_resolution_clock __clock_t; 25082: 25082: template 25082: bool 25082: _M_try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 25082: { 25082: using chrono::steady_clock; 25082: auto __rt = chrono::duration_cast(__rtime); 25082: if (ratio_greater()) 25082: ++__rt; 25082: return _M_try_lock_until(steady_clock::now() + __rt); 25082: } 25082: 25082: template 25082: bool 25082: _M_try_lock_until(const chrono::time_point<__clock_t, 25082: _Duration>& __atime) 25082: { 25082: auto __s = chrono::time_point_cast(__atime); 25082: auto __ns = chrono::duration_cast(__atime - __s); 25082: 25082: __gthread_time_t __ts = { 25082: static_cast(__s.time_since_epoch().count()), 25082: static_cast(__ns.count()) 25082: }; 25082: 25082: return static_cast<_Derived*>(this)->_M_timedlock(__ts); 25082: } 25082: 25082: template 25082: bool 25082: _M_try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 25082: { 25082: auto __rtime = __atime - _Clock::now(); 25082: return _M_try_lock_until(__clock_t::now() + __rtime); 25082: } 25082: }; 25082: 25082: 25082: class timed_mutex 25082: : private __mutex_base, public __timed_mutex_impl 25082: { 25082: public: 25082: typedef __native_type* native_handle_type; 25082: 25082: timed_mutex() = default; 25082: ~timed_mutex() = default; 25082: 25082: timed_mutex(const timed_mutex&) = delete; 25082: timed_mutex& operator=(const timed_mutex&) = delete; 25082: 25082: void 25082: lock() 25082: { 25082: int __e = __gthread_mutex_lock(&_M_mutex); 25082: 25082: 25082: if (__e) 25082: __throw_system_error(__e); 25082: } 25082: 25082: bool 25082: try_lock() noexcept 25082: { 25082: 25082: return !__gthread_mutex_trylock(&_M_mutex); 25082: } 25082: 25082: template 25082: bool 25082: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 25082: { return _M_try_lock_for(__rtime); } 25082: 25082: template 25082: bool 25082: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 25082: { return _M_try_lock_until(__atime); } 25082: 25082: void 25082: unlock() 25082: { 25082: 25082: __gthread_mutex_unlock(&_M_mutex); 25082: } 25082: 25082: native_handle_type 25082: native_handle() noexcept 25082: { return &_M_mutex; } 25082: 25082: private: 25082: friend class __timed_mutex_impl; 25082: 25082: bool 25082: _M_timedlock(const __gthread_time_t& __ts) 25082: { return !__gthread_mutex_timedlock(&_M_mutex, &__ts); } 25082: }; 25082: 25082: 25082: class recursive_timed_mutex 25082: : private __recursive_mutex_base, 25082: public __timed_mutex_impl 25082: { 25082: public: 25082: typedef __native_type* native_handle_type; 25082: 25082: recursive_timed_mutex() = default; 25082: ~recursive_timed_mutex() = default; 25082: 25082: recursive_timed_mutex(const recursive_timed_mutex&) = delete; 25082: recursive_timed_mutex& operator=(const recursive_timed_mutex&) = delete; 25082: 25082: void 25082: lock() 25082: { 25082: int __e = __gthread_recursive_mutex_lock(&_M_mutex); 25082: 25082: 25082: if (__e) 25082: __throw_system_error(__e); 25082: } 25082: 25082: bool 25082: try_lock() noexcept 25082: { 25082: 25082: return !__gthread_recursive_mutex_trylock(&_M_mutex); 25082: } 25082: 25082: template 25082: bool 25082: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 25082: { return _M_try_lock_for(__rtime); } 25082: 25082: template 25082: bool 25082: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 25082: { return _M_try_lock_until(__atime); } 25082: 25082: void 25082: unlock() 25082: { 25082: 25082: __gthread_recursive_mutex_unlock(&_M_mutex); 25082: } 25082: 25082: native_handle_type 25082: native_handle() noexcept 25082: { return &_M_mutex; } 25082: 25082: private: 25082: friend class __timed_mutex_impl; 25082: 25082: bool 25082: _M_timedlock(const __gthread_time_t& __ts) 25082: { return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts); } 25082: }; 25082: # 467 "/usr/include/c++/8/mutex" 3 25082: template 25082: inline unique_lock<_Lock> 25082: __try_to_lock(_Lock& __l) 25082: { return unique_lock<_Lock>{__l, try_to_lock}; } 25082: 25082: template 25082: struct __try_lock_impl 25082: { 25082: template 25082: static void 25082: __do_try_lock(tuple<_Lock&...>& __locks, int& __idx) 25082: { 25082: __idx = _Idx; 25082: auto __lock = std::__try_to_lock(std::get<_Idx>(__locks)); 25082: if (__lock.owns_lock()) 25082: { 25082: constexpr bool __cont = _Idx + 2 < sizeof...(_Lock); 25082: using __try_locker = __try_lock_impl<_Idx + 1, __cont>; 25082: __try_locker::__do_try_lock(__locks, __idx); 25082: if (__idx == -1) 25082: __lock.release(); 25082: } 25082: } 25082: }; 25082: 25082: template 25082: struct __try_lock_impl<_Idx, false> 25082: { 25082: template 25082: static void 25082: __do_try_lock(tuple<_Lock&...>& __locks, int& __idx) 25082: { 25082: __idx = _Idx; 25082: auto __lock = std::__try_to_lock(std::get<_Idx>(__locks)); 25082: if (__lock.owns_lock()) 25082: { 25082: __idx = -1; 25082: __lock.release(); 25082: } 25082: } 25082: }; 25082: # 519 "/usr/include/c++/8/mutex" 3 25082: template 25082: int 25082: try_lock(_Lock1& __l1, _Lock2& __l2, _Lock3&... __l3) 25082: { 25082: int __idx; 25082: auto __locks = std::tie(__l1, __l2, __l3...); 25082: __try_lock_impl<0>::__do_try_lock(__locks, __idx); 25082: return __idx; 25082: } 25082: # 540 "/usr/include/c++/8/mutex" 3 25082: template 25082: void 25082: lock(_L1& __l1, _L2& __l2, _L3&... __l3) 25082: { 25082: while (true) 25082: { 25082: using __try_locker = __try_lock_impl<0, sizeof...(_L3) != 0>; 25082: unique_lock<_L1> __first(__l1); 25082: int __idx; 25082: auto __locks = std::tie(__l2, __l3...); 25082: __try_locker::__do_try_lock(__locks, __idx); 25082: if (__idx == -1) 25082: { 25082: __first.release(); 25082: return; 25082: } 25082: } 25082: } 25082: # 566 "/usr/include/c++/8/mutex" 3 25082: template 25082: class scoped_lock 25082: { 25082: public: 25082: explicit scoped_lock(_MutexTypes&... __m) : _M_devices(std::tie(__m...)) 25082: { std::lock(__m...); } 25082: 25082: explicit scoped_lock(adopt_lock_t, _MutexTypes&... __m) noexcept 25082: : _M_devices(std::tie(__m...)) 25082: { } 25082: 25082: ~scoped_lock() 25082: { 25082: std::apply([](_MutexTypes&... __m) { 25082: char __i[] __attribute__((__unused__)) = { (__m.unlock(), 0)... }; 25082: }, _M_devices); 25082: } 25082: 25082: scoped_lock(const scoped_lock&) = delete; 25082: scoped_lock& operator=(const scoped_lock&) = delete; 25082: 25082: private: 25082: tuple<_MutexTypes&...> _M_devices; 25082: }; 25082: 25082: template<> 25082: class scoped_lock<> 25082: { 25082: public: 25082: explicit scoped_lock() = default; 25082: explicit scoped_lock(adopt_lock_t) noexcept { } 25082: ~scoped_lock() = default; 25082: 25082: scoped_lock(const scoped_lock&) = delete; 25082: scoped_lock& operator=(const scoped_lock&) = delete; 25082: }; 25082: 25082: template 25082: class scoped_lock<_Mutex> 25082: { 25082: public: 25082: using mutex_type = _Mutex; 25082: 25082: explicit scoped_lock(mutex_type& __m) : _M_device(__m) 25082: { _M_device.lock(); } 25082: 25082: explicit scoped_lock(adopt_lock_t, mutex_type& __m) noexcept 25082: : _M_device(__m) 25082: { } 25082: 25082: ~scoped_lock() 25082: { _M_device.unlock(); } 25082: 25082: scoped_lock(const scoped_lock&) = delete; 25082: scoped_lock& operator=(const scoped_lock&) = delete; 25082: 25082: private: 25082: mutex_type& _M_device; 25082: }; 25082: 25082: 25082: 25082: 25082: struct once_flag 25082: { 25082: private: 25082: typedef __gthread_once_t __native_type; 25082: __native_type _M_once = 0; 25082: 25082: public: 25082: 25082: constexpr once_flag() noexcept = default; 25082: 25082: 25082: once_flag(const once_flag&) = delete; 25082: 25082: once_flag& operator=(const once_flag&) = delete; 25082: 25082: template 25082: friend void 25082: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args); 25082: }; 25082: 25082: 25082: extern __thread void* __once_callable; 25082: extern __thread void (*__once_call)(); 25082: # 662 "/usr/include/c++/8/mutex" 3 25082: extern "C" void __once_proxy(void); 25082: 25082: 25082: template 25082: void 25082: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args) 25082: { 25082: 25082: 25082: auto __callable = [&] { 25082: std::__invoke(std::forward<_Callable>(__f), 25082: std::forward<_Args>(__args)...); 25082: }; 25082: 25082: __once_callable = std::__addressof(__callable); 25082: __once_call = []{ (*(decltype(__callable)*)__once_callable)(); }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: int __e = __gthread_once(&__once._M_once, &__once_proxy); 25082: # 697 "/usr/include/c++/8/mutex" 3 25082: if (__e) 25082: __throw_system_error(__e); 25082: } 25082: 25082: 25082: 25082: 25082: } 25082: # 8 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DateLUT.h" 2 3 4 25082: # 21 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/DateLUT.h" 3 4 25082: class DateLUT : public ext::singleton 25082: { 25082: friend class ext::singleton; 25082: 25082: public: 25082: DateLUT(const DateLUT &) = delete; 25082: DateLUT & operator=(const DateLUT &) = delete; 25082: 25082: 25082: static __attribute__((__always_inline__)) const DateLUTImpl & instance() 25082: { 25082: const auto & date_lut = ext::singleton::instance(); 25082: return *date_lut.default_impl.load(std::memory_order_acquire); 25082: } 25082: 25082: 25082: static __attribute__((__always_inline__)) const DateLUTImpl & instance(const std::string & time_zone) 25082: { 25082: const auto & date_lut = ext::singleton::instance(); 25082: if (time_zone.empty()) 25082: return *date_lut.default_impl.load(std::memory_order_acquire); 25082: 25082: return date_lut.getImplementation(time_zone); 25082: } 25082: 25082: static void setDefaultTimezone(const std::string & time_zone) 25082: { 25082: auto & date_lut = ext::singleton::instance(); 25082: const auto & impl = date_lut.getImplementation(time_zone); 25082: date_lut.default_impl.store(&impl, std::memory_order_release); 25082: } 25082: 25082: protected: 25082: DateLUT(); 25082: 25082: private: 25082: const DateLUTImpl & getImplementation(const std::string & time_zone) const; 25082: 25082: using DateLUTImplPtr = std::unique_ptr; 25082: 25082: 25082: mutable std::unordered_map impls; 25082: mutable std::mutex mutex; 25082: 25082: std::atomic default_impl; 25082: }; 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/LocalDate.h" 1 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/sstream" 1 3 4 25082: # 36 "/usr/include/c++/8/sstream" 3 4 25082: 25082: # 37 "/usr/include/c++/8/sstream" 3 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: namespace __cxx11 { 25082: # 64 "/usr/include/c++/8/sstream" 3 25082: template 25082: class basic_stringbuf : public basic_streambuf<_CharT, _Traits> 25082: { 25082: struct __xfer_bufptrs; 25082: public: 25082: 25082: typedef _CharT char_type; 25082: typedef _Traits traits_type; 25082: 25082: 25082: typedef _Alloc allocator_type; 25082: typedef typename traits_type::int_type int_type; 25082: typedef typename traits_type::pos_type pos_type; 25082: typedef typename traits_type::off_type off_type; 25082: 25082: typedef basic_streambuf __streambuf_type; 25082: typedef basic_string __string_type; 25082: typedef typename __string_type::size_type __size_type; 25082: 25082: protected: 25082: 25082: ios_base::openmode _M_mode; 25082: 25082: 25082: __string_type _M_string; 25082: 25082: public: 25082: # 99 "/usr/include/c++/8/sstream" 3 25082: explicit 25082: basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out) 25082: : __streambuf_type(), _M_mode(__mode), _M_string() 25082: { } 25082: # 112 "/usr/include/c++/8/sstream" 3 25082: explicit 25082: basic_stringbuf(const __string_type& __str, 25082: ios_base::openmode __mode = ios_base::in | ios_base::out) 25082: : __streambuf_type(), _M_mode(), 25082: _M_string(__str.data(), __str.size(), __str.get_allocator()) 25082: { _M_stringbuf_init(__mode); } 25082: 25082: 25082: basic_stringbuf(const basic_stringbuf&) = delete; 25082: 25082: basic_stringbuf(basic_stringbuf&& __rhs) 25082: : basic_stringbuf(std::move(__rhs), __xfer_bufptrs(__rhs, this)) 25082: { __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); } 25082: 25082: 25082: 25082: basic_stringbuf& 25082: operator=(const basic_stringbuf&) = delete; 25082: 25082: basic_stringbuf& 25082: operator=(basic_stringbuf&& __rhs) 25082: { 25082: __xfer_bufptrs __st{__rhs, this}; 25082: const __streambuf_type& __base = __rhs; 25082: __streambuf_type::operator=(__base); 25082: this->pubimbue(__rhs.getloc()); 25082: _M_mode = __rhs._M_mode; 25082: _M_string = std::move(__rhs._M_string); 25082: __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); 25082: return *this; 25082: } 25082: 25082: void 25082: swap(basic_stringbuf& __rhs) 25082: { 25082: __xfer_bufptrs __l_st{*this, std::__addressof(__rhs)}; 25082: __xfer_bufptrs __r_st{__rhs, this}; 25082: __streambuf_type& __base = __rhs; 25082: __streambuf_type::swap(__base); 25082: __rhs.pubimbue(this->pubimbue(__rhs.getloc())); 25082: std::swap(_M_mode, __rhs._M_mode); 25082: std::swap(_M_string, __rhs._M_string); 25082: } 25082: # 166 "/usr/include/c++/8/sstream" 3 25082: __string_type 25082: str() const 25082: { 25082: __string_type __ret(_M_string.get_allocator()); 25082: if (this->pptr()) 25082: { 25082: 25082: if (this->pptr() > this->egptr()) 25082: __ret.assign(this->pbase(), this->pptr()); 25082: else 25082: __ret.assign(this->pbase(), this->egptr()); 25082: } 25082: else 25082: __ret = _M_string; 25082: return __ret; 25082: } 25082: # 190 "/usr/include/c++/8/sstream" 3 25082: void 25082: str(const __string_type& __s) 25082: { 25082: 25082: 25082: _M_string.assign(__s.data(), __s.size()); 25082: _M_stringbuf_init(_M_mode); 25082: } 25082: 25082: protected: 25082: 25082: void 25082: _M_stringbuf_init(ios_base::openmode __mode) 25082: { 25082: _M_mode = __mode; 25082: __size_type __len = 0; 25082: if (_M_mode & (ios_base::ate | ios_base::app)) 25082: __len = _M_string.size(); 25082: _M_sync(const_cast(_M_string.data()), 0, __len); 25082: } 25082: 25082: virtual streamsize 25082: showmanyc() 25082: { 25082: streamsize __ret = -1; 25082: if (_M_mode & ios_base::in) 25082: { 25082: _M_update_egptr(); 25082: __ret = this->egptr() - this->gptr(); 25082: } 25082: return __ret; 25082: } 25082: 25082: virtual int_type 25082: underflow(); 25082: 25082: virtual int_type 25082: pbackfail(int_type __c = traits_type::eof()); 25082: 25082: virtual int_type 25082: overflow(int_type __c = traits_type::eof()); 25082: # 243 "/usr/include/c++/8/sstream" 3 25082: virtual __streambuf_type* 25082: setbuf(char_type* __s, streamsize __n) 25082: { 25082: if (__s && __n >= 0) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: _M_string.clear(); 25082: 25082: 25082: _M_sync(__s, __n, 0); 25082: } 25082: return this; 25082: } 25082: 25082: virtual pos_type 25082: seekoff(off_type __off, ios_base::seekdir __way, 25082: ios_base::openmode __mode = ios_base::in | ios_base::out); 25082: 25082: virtual pos_type 25082: seekpos(pos_type __sp, 25082: ios_base::openmode __mode = ios_base::in | ios_base::out); 25082: 25082: 25082: 25082: 25082: void 25082: _M_sync(char_type* __base, __size_type __i, __size_type __o); 25082: 25082: 25082: 25082: void 25082: _M_update_egptr() 25082: { 25082: const bool __testin = _M_mode & ios_base::in; 25082: if (this->pptr() && this->pptr() > this->egptr()) 25082: { 25082: if (__testin) 25082: this->setg(this->eback(), this->gptr(), this->pptr()); 25082: else 25082: this->setg(this->pptr(), this->pptr(), this->pptr()); 25082: } 25082: } 25082: 25082: 25082: 25082: void 25082: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off); 25082: 25082: private: 25082: 25082: 25082: 25082: 25082: struct __xfer_bufptrs 25082: { 25082: __xfer_bufptrs(const basic_stringbuf& __from, basic_stringbuf* __to) 25082: : _M_to{__to}, _M_goff{-1, -1, -1}, _M_poff{-1, -1, -1} 25082: { 25082: const _CharT* const __str = __from._M_string.data(); 25082: const _CharT* __end = nullptr; 25082: if (__from.eback()) 25082: { 25082: _M_goff[0] = __from.eback() - __str; 25082: _M_goff[1] = __from.gptr() - __str; 25082: _M_goff[2] = __from.egptr() - __str; 25082: __end = __from.egptr(); 25082: } 25082: if (__from.pbase()) 25082: { 25082: _M_poff[0] = __from.pbase() - __str; 25082: _M_poff[1] = __from.pptr() - __from.pbase(); 25082: _M_poff[2] = __from.epptr() - __str; 25082: if (__from.pptr() > __end) 25082: __end = __from.pptr(); 25082: } 25082: 25082: 25082: if (__end) 25082: { 25082: 25082: 25082: auto& __mut_from = const_cast(__from); 25082: __mut_from._M_string._M_length(__end - __str); 25082: } 25082: } 25082: 25082: ~__xfer_bufptrs() 25082: { 25082: char_type* __str = const_cast(_M_to->_M_string.data()); 25082: if (_M_goff[0] != -1) 25082: _M_to->setg(__str+_M_goff[0], __str+_M_goff[1], __str+_M_goff[2]); 25082: if (_M_poff[0] != -1) 25082: _M_to->_M_pbump(__str+_M_poff[0], __str+_M_poff[2], _M_poff[1]); 25082: } 25082: 25082: basic_stringbuf* _M_to; 25082: off_type _M_goff[3]; 25082: off_type _M_poff[3]; 25082: }; 25082: # 357 "/usr/include/c++/8/sstream" 3 25082: basic_stringbuf(basic_stringbuf&& __rhs, __xfer_bufptrs&&) 25082: : __streambuf_type(static_cast(__rhs)), 25082: _M_mode(__rhs._M_mode), _M_string(std::move(__rhs._M_string)) 25082: { } 25082: 25082: }; 25082: # 380 "/usr/include/c++/8/sstream" 3 25082: template 25082: class basic_istringstream : public basic_istream<_CharT, _Traits> 25082: { 25082: public: 25082: 25082: typedef _CharT char_type; 25082: typedef _Traits traits_type; 25082: 25082: 25082: typedef _Alloc allocator_type; 25082: typedef typename traits_type::int_type int_type; 25082: typedef typename traits_type::pos_type pos_type; 25082: typedef typename traits_type::off_type off_type; 25082: 25082: 25082: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 25082: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; 25082: typedef basic_istream __istream_type; 25082: 25082: private: 25082: __stringbuf_type _M_stringbuf; 25082: 25082: public: 25082: # 416 "/usr/include/c++/8/sstream" 3 25082: explicit 25082: basic_istringstream(ios_base::openmode __mode = ios_base::in) 25082: : __istream_type(), _M_stringbuf(__mode | ios_base::in) 25082: { this->init(&_M_stringbuf); } 25082: # 434 "/usr/include/c++/8/sstream" 3 25082: explicit 25082: basic_istringstream(const __string_type& __str, 25082: ios_base::openmode __mode = ios_base::in) 25082: : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in) 25082: { this->init(&_M_stringbuf); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ~basic_istringstream() 25082: { } 25082: 25082: 25082: basic_istringstream(const basic_istringstream&) = delete; 25082: 25082: basic_istringstream(basic_istringstream&& __rhs) 25082: : __istream_type(std::move(__rhs)), 25082: _M_stringbuf(std::move(__rhs._M_stringbuf)) 25082: { __istream_type::set_rdbuf(&_M_stringbuf); } 25082: 25082: 25082: 25082: basic_istringstream& 25082: operator=(const basic_istringstream&) = delete; 25082: 25082: basic_istringstream& 25082: operator=(basic_istringstream&& __rhs) 25082: { 25082: __istream_type::operator=(std::move(__rhs)); 25082: _M_stringbuf = std::move(__rhs._M_stringbuf); 25082: return *this; 25082: } 25082: 25082: void 25082: swap(basic_istringstream& __rhs) 25082: { 25082: __istream_type::swap(__rhs); 25082: _M_stringbuf.swap(__rhs._M_stringbuf); 25082: } 25082: # 485 "/usr/include/c++/8/sstream" 3 25082: __stringbuf_type* 25082: rdbuf() const 25082: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } 25082: 25082: 25082: 25082: 25082: 25082: __string_type 25082: str() const 25082: { return _M_stringbuf.str(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: str(const __string_type& __s) 25082: { _M_stringbuf.str(__s); } 25082: }; 25082: # 524 "/usr/include/c++/8/sstream" 3 25082: template 25082: class basic_ostringstream : public basic_ostream<_CharT, _Traits> 25082: { 25082: public: 25082: 25082: typedef _CharT char_type; 25082: typedef _Traits traits_type; 25082: 25082: 25082: typedef _Alloc allocator_type; 25082: typedef typename traits_type::int_type int_type; 25082: typedef typename traits_type::pos_type pos_type; 25082: typedef typename traits_type::off_type off_type; 25082: 25082: 25082: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 25082: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; 25082: typedef basic_ostream __ostream_type; 25082: 25082: private: 25082: __stringbuf_type _M_stringbuf; 25082: 25082: public: 25082: # 560 "/usr/include/c++/8/sstream" 3 25082: explicit 25082: basic_ostringstream(ios_base::openmode __mode = ios_base::out) 25082: : __ostream_type(), _M_stringbuf(__mode | ios_base::out) 25082: { this->init(&_M_stringbuf); } 25082: # 578 "/usr/include/c++/8/sstream" 3 25082: explicit 25082: basic_ostringstream(const __string_type& __str, 25082: ios_base::openmode __mode = ios_base::out) 25082: : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out) 25082: { this->init(&_M_stringbuf); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ~basic_ostringstream() 25082: { } 25082: 25082: 25082: basic_ostringstream(const basic_ostringstream&) = delete; 25082: 25082: basic_ostringstream(basic_ostringstream&& __rhs) 25082: : __ostream_type(std::move(__rhs)), 25082: _M_stringbuf(std::move(__rhs._M_stringbuf)) 25082: { __ostream_type::set_rdbuf(&_M_stringbuf); } 25082: 25082: 25082: 25082: basic_ostringstream& 25082: operator=(const basic_ostringstream&) = delete; 25082: 25082: basic_ostringstream& 25082: operator=(basic_ostringstream&& __rhs) 25082: { 25082: __ostream_type::operator=(std::move(__rhs)); 25082: _M_stringbuf = std::move(__rhs._M_stringbuf); 25082: return *this; 25082: } 25082: 25082: void 25082: swap(basic_ostringstream& __rhs) 25082: { 25082: __ostream_type::swap(__rhs); 25082: _M_stringbuf.swap(__rhs._M_stringbuf); 25082: } 25082: # 629 "/usr/include/c++/8/sstream" 3 25082: __stringbuf_type* 25082: rdbuf() const 25082: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } 25082: 25082: 25082: 25082: 25082: 25082: __string_type 25082: str() const 25082: { return _M_stringbuf.str(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: str(const __string_type& __s) 25082: { _M_stringbuf.str(__s); } 25082: }; 25082: # 668 "/usr/include/c++/8/sstream" 3 25082: template 25082: class basic_stringstream : public basic_iostream<_CharT, _Traits> 25082: { 25082: public: 25082: 25082: typedef _CharT char_type; 25082: typedef _Traits traits_type; 25082: 25082: 25082: typedef _Alloc allocator_type; 25082: typedef typename traits_type::int_type int_type; 25082: typedef typename traits_type::pos_type pos_type; 25082: typedef typename traits_type::off_type off_type; 25082: 25082: 25082: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 25082: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; 25082: typedef basic_iostream __iostream_type; 25082: 25082: private: 25082: __stringbuf_type _M_stringbuf; 25082: 25082: public: 25082: # 703 "/usr/include/c++/8/sstream" 3 25082: explicit 25082: basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in) 25082: : __iostream_type(), _M_stringbuf(__m) 25082: { this->init(&_M_stringbuf); } 25082: # 719 "/usr/include/c++/8/sstream" 3 25082: explicit 25082: basic_stringstream(const __string_type& __str, 25082: ios_base::openmode __m = ios_base::out | ios_base::in) 25082: : __iostream_type(), _M_stringbuf(__str, __m) 25082: { this->init(&_M_stringbuf); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: ~basic_stringstream() 25082: { } 25082: 25082: 25082: basic_stringstream(const basic_stringstream&) = delete; 25082: 25082: basic_stringstream(basic_stringstream&& __rhs) 25082: : __iostream_type(std::move(__rhs)), 25082: _M_stringbuf(std::move(__rhs._M_stringbuf)) 25082: { __iostream_type::set_rdbuf(&_M_stringbuf); } 25082: 25082: 25082: 25082: basic_stringstream& 25082: operator=(const basic_stringstream&) = delete; 25082: 25082: basic_stringstream& 25082: operator=(basic_stringstream&& __rhs) 25082: { 25082: __iostream_type::operator=(std::move(__rhs)); 25082: _M_stringbuf = std::move(__rhs._M_stringbuf); 25082: return *this; 25082: } 25082: 25082: void 25082: swap(basic_stringstream& __rhs) 25082: { 25082: __iostream_type::swap(__rhs); 25082: _M_stringbuf.swap(__rhs._M_stringbuf); 25082: } 25082: # 770 "/usr/include/c++/8/sstream" 3 25082: __stringbuf_type* 25082: rdbuf() const 25082: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } 25082: 25082: 25082: 25082: 25082: 25082: __string_type 25082: str() const 25082: { return _M_stringbuf.str(); } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: void 25082: str(const __string_type& __s) 25082: { _M_stringbuf.str(__s); } 25082: }; 25082: 25082: 25082: 25082: template 25082: inline void 25082: swap(basic_stringbuf<_CharT, _Traits, _Allocator>& __x, 25082: basic_stringbuf<_CharT, _Traits, _Allocator>& __y) 25082: { __x.swap(__y); } 25082: 25082: 25082: template 25082: inline void 25082: swap(basic_istringstream<_CharT, _Traits, _Allocator>& __x, 25082: basic_istringstream<_CharT, _Traits, _Allocator>& __y) 25082: { __x.swap(__y); } 25082: 25082: 25082: template 25082: inline void 25082: swap(basic_ostringstream<_CharT, _Traits, _Allocator>& __x, 25082: basic_ostringstream<_CharT, _Traits, _Allocator>& __y) 25082: { __x.swap(__y); } 25082: 25082: 25082: template 25082: inline void 25082: swap(basic_stringstream<_CharT, _Traits, _Allocator>& __x, 25082: basic_stringstream<_CharT, _Traits, _Allocator>& __y) 25082: { __x.swap(__y); } 25082: 25082: 25082: } 25082: 25082: } 25082: 25082: # 1 "/usr/include/c++/8/bits/sstream.tcc" 1 3 25082: # 37 "/usr/include/c++/8/bits/sstream.tcc" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/sstream.tcc" 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type 25082: basic_stringbuf<_CharT, _Traits, _Alloc>:: 25082: pbackfail(int_type __c) 25082: { 25082: int_type __ret = traits_type::eof(); 25082: if (this->eback() < this->gptr()) 25082: { 25082: 25082: 25082: const bool __testeof = traits_type::eq_int_type(__c, __ret); 25082: if (!__testeof) 25082: { 25082: const bool __testeq = traits_type::eq(traits_type:: 25082: to_char_type(__c), 25082: this->gptr()[-1]); 25082: const bool __testout = this->_M_mode & ios_base::out; 25082: if (__testeq || __testout) 25082: { 25082: this->gbump(-1); 25082: if (!__testeq) 25082: *this->gptr() = traits_type::to_char_type(__c); 25082: __ret = __c; 25082: } 25082: } 25082: else 25082: { 25082: this->gbump(-1); 25082: __ret = traits_type::not_eof(__c); 25082: } 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type 25082: basic_stringbuf<_CharT, _Traits, _Alloc>:: 25082: overflow(int_type __c) 25082: { 25082: const bool __testout = this->_M_mode & ios_base::out; 25082: if (__builtin_expect(!__testout, false)) 25082: return traits_type::eof(); 25082: 25082: const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof()); 25082: if (__builtin_expect(__testeof, false)) 25082: return traits_type::not_eof(__c); 25082: 25082: const __size_type __capacity = _M_string.capacity(); 25082: 25082: 25082: if ((this->epptr() - this->pbase()) < __capacity) 25082: { 25082: 25082: char_type* __base = const_cast(_M_string.data()); 25082: _M_pbump(__base, __base + __capacity, this->pptr() - this->pbase()); 25082: if (_M_mode & ios_base::in) 25082: { 25082: const __size_type __nget = this->gptr() - this->eback(); 25082: const __size_type __eget = this->egptr() - this->eback(); 25082: this->setg(__base, __base + __nget, __base + __eget + 1); 25082: } 25082: *this->pptr() = traits_type::to_char_type(__c); 25082: this->pbump(1); 25082: return __c; 25082: } 25082: 25082: 25082: const __size_type __max_size = _M_string.max_size(); 25082: const bool __testput = this->pptr() < this->epptr(); 25082: if (__builtin_expect(!__testput && __capacity == __max_size, false)) 25082: return traits_type::eof(); 25082: 25082: 25082: 25082: const char_type __conv = traits_type::to_char_type(__c); 25082: if (!__testput) 25082: { 25082: # 129 "/usr/include/c++/8/bits/sstream.tcc" 3 25082: const __size_type __opt_len = std::max(__size_type(2 * __capacity), 25082: __size_type(512)); 25082: const __size_type __len = std::min(__opt_len, __max_size); 25082: __string_type __tmp(_M_string.get_allocator()); 25082: __tmp.reserve(__len); 25082: if (this->pbase()) 25082: __tmp.assign(this->pbase(), this->epptr() - this->pbase()); 25082: __tmp.push_back(__conv); 25082: _M_string.swap(__tmp); 25082: _M_sync(const_cast(_M_string.data()), 25082: this->gptr() - this->eback(), this->pptr() - this->pbase()); 25082: } 25082: else 25082: *this->pptr() = __conv; 25082: this->pbump(1); 25082: return __c; 25082: } 25082: 25082: template 25082: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type 25082: basic_stringbuf<_CharT, _Traits, _Alloc>:: 25082: underflow() 25082: { 25082: int_type __ret = traits_type::eof(); 25082: const bool __testin = this->_M_mode & ios_base::in; 25082: if (__testin) 25082: { 25082: 25082: _M_update_egptr(); 25082: 25082: if (this->gptr() < this->egptr()) 25082: __ret = traits_type::to_int_type(*this->gptr()); 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type 25082: basic_stringbuf<_CharT, _Traits, _Alloc>:: 25082: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) 25082: { 25082: pos_type __ret = pos_type(off_type(-1)); 25082: bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; 25082: bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; 25082: const bool __testboth = __testin && __testout && __way != ios_base::cur; 25082: __testin &= !(__mode & ios_base::out); 25082: __testout &= !(__mode & ios_base::in); 25082: 25082: 25082: 25082: const char_type* __beg = __testin ? this->eback() : this->pbase(); 25082: if ((__beg || !__off) && (__testin || __testout || __testboth)) 25082: { 25082: _M_update_egptr(); 25082: 25082: off_type __newoffi = __off; 25082: off_type __newoffo = __newoffi; 25082: if (__way == ios_base::cur) 25082: { 25082: __newoffi += this->gptr() - __beg; 25082: __newoffo += this->pptr() - __beg; 25082: } 25082: else if (__way == ios_base::end) 25082: __newoffo = __newoffi += this->egptr() - __beg; 25082: 25082: if ((__testin || __testboth) 25082: && __newoffi >= 0 25082: && this->egptr() - __beg >= __newoffi) 25082: { 25082: this->setg(this->eback(), this->eback() + __newoffi, 25082: this->egptr()); 25082: __ret = pos_type(__newoffi); 25082: } 25082: if ((__testout || __testboth) 25082: && __newoffo >= 0 25082: && this->egptr() - __beg >= __newoffo) 25082: { 25082: _M_pbump(this->pbase(), this->epptr(), __newoffo); 25082: __ret = pos_type(__newoffo); 25082: } 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type 25082: basic_stringbuf<_CharT, _Traits, _Alloc>:: 25082: seekpos(pos_type __sp, ios_base::openmode __mode) 25082: { 25082: pos_type __ret = pos_type(off_type(-1)); 25082: const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; 25082: const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; 25082: 25082: const char_type* __beg = __testin ? this->eback() : this->pbase(); 25082: if ((__beg || !off_type(__sp)) && (__testin || __testout)) 25082: { 25082: _M_update_egptr(); 25082: 25082: const off_type __pos(__sp); 25082: const bool __testpos = (0 <= __pos 25082: && __pos <= this->egptr() - __beg); 25082: if (__testpos) 25082: { 25082: if (__testin) 25082: this->setg(this->eback(), this->eback() + __pos, 25082: this->egptr()); 25082: if (__testout) 25082: _M_pbump(this->pbase(), this->epptr(), __pos); 25082: __ret = __sp; 25082: } 25082: } 25082: return __ret; 25082: } 25082: 25082: template 25082: void 25082: basic_stringbuf<_CharT, _Traits, _Alloc>:: 25082: _M_sync(char_type* __base, __size_type __i, __size_type __o) 25082: { 25082: const bool __testin = _M_mode & ios_base::in; 25082: const bool __testout = _M_mode & ios_base::out; 25082: char_type* __endg = __base + _M_string.size(); 25082: char_type* __endp = __base + _M_string.capacity(); 25082: 25082: if (__base != _M_string.data()) 25082: { 25082: 25082: __endg += __i; 25082: __i = 0; 25082: __endp = __endg; 25082: } 25082: 25082: if (__testin) 25082: this->setg(__base, __base + __i, __endg); 25082: if (__testout) 25082: { 25082: _M_pbump(__base, __endp, __o); 25082: 25082: 25082: 25082: if (!__testin) 25082: this->setg(__endg, __endg, __endg); 25082: } 25082: } 25082: 25082: template 25082: void 25082: basic_stringbuf<_CharT, _Traits, _Alloc>:: 25082: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off) 25082: { 25082: this->setp(__pbeg, __pend); 25082: while (__off > __gnu_cxx::__numeric_traits::__max) 25082: { 25082: this->pbump(__gnu_cxx::__numeric_traits::__max); 25082: __off -= __gnu_cxx::__numeric_traits::__max; 25082: } 25082: this->pbump(__off); 25082: } 25082: 25082: 25082: 25082: 25082: extern template class basic_stringbuf; 25082: extern template class basic_istringstream; 25082: extern template class basic_ostringstream; 25082: extern template class basic_stringstream; 25082: 25082: 25082: extern template class basic_stringbuf; 25082: extern template class basic_istringstream; 25082: extern template class basic_ostringstream; 25082: extern template class basic_stringstream; 25082: 25082: 25082: 25082: 25082: } 25082: # 828 "/usr/include/c++/8/sstream" 2 3 25082: # 6 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/LocalDate.h" 2 3 4 25082: # 21 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/LocalDate.h" 3 4 25082: class LocalDate 25082: { 25082: private: 25082: unsigned short m_year; 25082: unsigned char m_month; 25082: unsigned char m_day; 25082: 25082: void init(time_t time) 25082: { 25082: const auto & date_lut = DateLUT::instance(); 25082: const auto & values = date_lut.getValues(time); 25082: 25082: m_year = values.year; 25082: m_month = values.month; 25082: m_day = values.day_of_month; 25082: } 25082: 25082: void init(const char * s, size_t length) 25082: { 25082: if (length < 8) 25082: throw std::runtime_error("Cannot parse LocalDate: " + std::string(s, length)); 25082: 25082: m_year = (s[0] - '0') * 1000 + (s[1] - '0') * 100 + (s[2] - '0') * 10 + (s[3] - '0'); 25082: 25082: if (s[4] == '-') 25082: { 25082: if (length < 10) 25082: throw std::runtime_error("Cannot parse LocalDate: " + std::string(s, length)); 25082: m_month = (s[5] - '0') * 10 + (s[6] - '0'); 25082: m_day = (s[8] - '0') * 10 + (s[9] - '0'); 25082: } 25082: else 25082: { 25082: m_month = (s[4] -'0') * 10 + (s[5] -'0'); 25082: m_day = (s[6] - '0')* 10 + (s[7] -'0'); 25082: } 25082: } 25082: 25082: public: 25082: explicit LocalDate(time_t time) 25082: { 25082: init(time); 25082: } 25082: 25082: LocalDate(DayNum day_num) 25082: { 25082: const auto & values = DateLUT::instance().getValues(day_num); 25082: m_year = values.year; 25082: m_month = values.month; 25082: m_day = values.day_of_month; 25082: } 25082: 25082: LocalDate(unsigned short year_, unsigned char month_, unsigned char day_) 25082: : m_year(year_), m_month(month_), m_day(day_) 25082: { 25082: } 25082: 25082: explicit LocalDate(const std::string & s) 25082: { 25082: init(s.data(), s.size()); 25082: } 25082: 25082: LocalDate(const char * data, size_t length) 25082: { 25082: init(data, length); 25082: } 25082: 25082: LocalDate() : m_year(0), m_month(0), m_day(0) 25082: { 25082: } 25082: 25082: LocalDate(const LocalDate &) noexcept = default; 25082: LocalDate & operator= (const LocalDate &) noexcept = default; 25082: 25082: LocalDate & operator= (time_t time) 25082: { 25082: init(time); 25082: return *this; 25082: } 25082: 25082: operator time_t() const 25082: { 25082: return DateLUT::instance().makeDate(m_year, m_month, m_day); 25082: } 25082: 25082: DayNum getDayNum() const 25082: { 25082: return DateLUT::instance().makeDayNum(m_year, m_month, m_day); 25082: } 25082: 25082: operator DayNum() const 25082: { 25082: return getDayNum(); 25082: } 25082: 25082: unsigned short year() const { return m_year; } 25082: unsigned char month() const { return m_month; } 25082: unsigned char day() const { return m_day; } 25082: 25082: void year(unsigned short x) { m_year = x; } 25082: void month(unsigned char x) { m_month = x; } 25082: void day(unsigned char x) { m_day = x; } 25082: 25082: bool operator< (const LocalDate & other) const 25082: { 25082: return 0 > memcmp(this, &other, sizeof(*this)); 25082: } 25082: 25082: bool operator> (const LocalDate & other) const 25082: { 25082: return 0 < memcmp(this, &other, sizeof(*this)); 25082: } 25082: 25082: bool operator<= (const LocalDate & other) const 25082: { 25082: return 0 >= memcmp(this, &other, sizeof(*this)); 25082: } 25082: 25082: bool operator>= (const LocalDate & other) const 25082: { 25082: return 0 <= memcmp(this, &other, sizeof(*this)); 25082: } 25082: 25082: bool operator== (const LocalDate & other) const 25082: { 25082: return 0 == memcmp(this, &other, sizeof(*this)); 25082: } 25082: 25082: bool operator!= (const LocalDate & other) const 25082: { 25082: return !(*this == other); 25082: } 25082: 25082: 25082: std::string toString(char separator = '-') const 25082: { 25082: std::stringstream ss; 25082: if (separator) 25082: ss << year() << separator << (month() / 10) << (month() % 10) 25082: << separator << (day() / 10) << (day() % 10); 25082: else 25082: ss << year() << (month() / 10) << (month() % 10) 25082: << (day() / 10) << (day() % 10); 25082: return ss.str(); 25082: } 25082: }; 25082: 25082: static_assert(sizeof(LocalDate) == 4); 25082: 25082: 25082: inline std::ostream & operator<< (std::ostream & ostr, const LocalDate & date) 25082: { 25082: return ostr << date.year() 25082: << '-' << (date.month() / 10) << (date.month() % 10) 25082: << '-' << (date.day() / 10) << (date.day() % 10); 25082: } 25082: 25082: 25082: namespace std 25082: { 25082: inline string to_string(const LocalDate & date) 25082: { 25082: return date.toString(); 25082: } 25082: } 25082: # 11 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/LocalDateTime.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/iomanip" 1 3 4 25082: # 36 "/usr/include/c++/8/iomanip" 3 4 25082: 25082: # 37 "/usr/include/c++/8/iomanip" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/locale" 1 3 25082: # 36 "/usr/include/c++/8/locale" 3 25082: 25082: # 37 "/usr/include/c++/8/locale" 3 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/locale_facets_nonio.h" 1 3 25082: # 37 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: 25082: # 38 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: 25082: # 1 "/usr/include/c++/8/ctime" 1 3 25082: # 39 "/usr/include/c++/8/ctime" 3 25082: 25082: # 40 "/usr/include/c++/8/ctime" 3 25082: # 40 "/usr/include/c++/8/bits/locale_facets_nonio.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: # 52 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: class time_base 25082: { 25082: public: 25082: enum dateorder { no_order, dmy, mdy, ymd, ydm }; 25082: }; 25082: 25082: template 25082: struct __timepunct_cache : public locale::facet 25082: { 25082: 25082: static const _CharT* _S_timezones[14]; 25082: 25082: const _CharT* _M_date_format; 25082: const _CharT* _M_date_era_format; 25082: const _CharT* _M_time_format; 25082: const _CharT* _M_time_era_format; 25082: const _CharT* _M_date_time_format; 25082: const _CharT* _M_date_time_era_format; 25082: const _CharT* _M_am; 25082: const _CharT* _M_pm; 25082: const _CharT* _M_am_pm_format; 25082: 25082: 25082: const _CharT* _M_day1; 25082: const _CharT* _M_day2; 25082: const _CharT* _M_day3; 25082: const _CharT* _M_day4; 25082: const _CharT* _M_day5; 25082: const _CharT* _M_day6; 25082: const _CharT* _M_day7; 25082: 25082: 25082: const _CharT* _M_aday1; 25082: const _CharT* _M_aday2; 25082: const _CharT* _M_aday3; 25082: const _CharT* _M_aday4; 25082: const _CharT* _M_aday5; 25082: const _CharT* _M_aday6; 25082: const _CharT* _M_aday7; 25082: 25082: 25082: const _CharT* _M_month01; 25082: const _CharT* _M_month02; 25082: const _CharT* _M_month03; 25082: const _CharT* _M_month04; 25082: const _CharT* _M_month05; 25082: const _CharT* _M_month06; 25082: const _CharT* _M_month07; 25082: const _CharT* _M_month08; 25082: const _CharT* _M_month09; 25082: const _CharT* _M_month10; 25082: const _CharT* _M_month11; 25082: const _CharT* _M_month12; 25082: 25082: 25082: const _CharT* _M_amonth01; 25082: const _CharT* _M_amonth02; 25082: const _CharT* _M_amonth03; 25082: const _CharT* _M_amonth04; 25082: const _CharT* _M_amonth05; 25082: const _CharT* _M_amonth06; 25082: const _CharT* _M_amonth07; 25082: const _CharT* _M_amonth08; 25082: const _CharT* _M_amonth09; 25082: const _CharT* _M_amonth10; 25082: const _CharT* _M_amonth11; 25082: const _CharT* _M_amonth12; 25082: 25082: bool _M_allocated; 25082: 25082: __timepunct_cache(size_t __refs = 0) : facet(__refs), 25082: _M_date_format(0), _M_date_era_format(0), _M_time_format(0), 25082: _M_time_era_format(0), _M_date_time_format(0), 25082: _M_date_time_era_format(0), _M_am(0), _M_pm(0), 25082: _M_am_pm_format(0), _M_day1(0), _M_day2(0), _M_day3(0), 25082: _M_day4(0), _M_day5(0), _M_day6(0), _M_day7(0), 25082: _M_aday1(0), _M_aday2(0), _M_aday3(0), _M_aday4(0), 25082: _M_aday5(0), _M_aday6(0), _M_aday7(0), _M_month01(0), 25082: _M_month02(0), _M_month03(0), _M_month04(0), _M_month05(0), 25082: _M_month06(0), _M_month07(0), _M_month08(0), _M_month09(0), 25082: _M_month10(0), _M_month11(0), _M_month12(0), _M_amonth01(0), 25082: _M_amonth02(0), _M_amonth03(0), _M_amonth04(0), 25082: _M_amonth05(0), _M_amonth06(0), _M_amonth07(0), 25082: _M_amonth08(0), _M_amonth09(0), _M_amonth10(0), 25082: _M_amonth11(0), _M_amonth12(0), _M_allocated(false) 25082: { } 25082: 25082: ~__timepunct_cache(); 25082: 25082: private: 25082: __timepunct_cache& 25082: operator=(const __timepunct_cache&); 25082: 25082: explicit 25082: __timepunct_cache(const __timepunct_cache&); 25082: }; 25082: 25082: template 25082: __timepunct_cache<_CharT>::~__timepunct_cache() 25082: { 25082: if (_M_allocated) 25082: { 25082: 25082: } 25082: } 25082: 25082: 25082: template<> 25082: const char* 25082: __timepunct_cache::_S_timezones[14]; 25082: 25082: 25082: template<> 25082: const wchar_t* 25082: __timepunct_cache::_S_timezones[14]; 25082: 25082: 25082: 25082: template 25082: const _CharT* __timepunct_cache<_CharT>::_S_timezones[14]; 25082: 25082: template 25082: class __timepunct : public locale::facet 25082: { 25082: public: 25082: 25082: typedef _CharT __char_type; 25082: typedef __timepunct_cache<_CharT> __cache_type; 25082: 25082: protected: 25082: __cache_type* _M_data; 25082: __c_locale _M_c_locale_timepunct; 25082: const char* _M_name_timepunct; 25082: 25082: public: 25082: 25082: static locale::id id; 25082: 25082: explicit 25082: __timepunct(size_t __refs = 0); 25082: 25082: explicit 25082: __timepunct(__cache_type* __cache, size_t __refs = 0); 25082: # 206 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: explicit 25082: __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0); 25082: 25082: 25082: 25082: void 25082: _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format, 25082: const tm* __tm) const throw (); 25082: 25082: void 25082: _M_date_formats(const _CharT** __date) const 25082: { 25082: 25082: __date[0] = _M_data->_M_date_format; 25082: __date[1] = _M_data->_M_date_era_format; 25082: } 25082: 25082: void 25082: _M_time_formats(const _CharT** __time) const 25082: { 25082: 25082: __time[0] = _M_data->_M_time_format; 25082: __time[1] = _M_data->_M_time_era_format; 25082: } 25082: 25082: void 25082: _M_date_time_formats(const _CharT** __dt) const 25082: { 25082: 25082: __dt[0] = _M_data->_M_date_time_format; 25082: __dt[1] = _M_data->_M_date_time_era_format; 25082: } 25082: 25082: 25082: void 25082: _M_am_pm_format(const _CharT*) const 25082: { } 25082: 25082: 25082: void 25082: _M_am_pm(const _CharT** __ampm) const 25082: { 25082: __ampm[0] = _M_data->_M_am; 25082: __ampm[1] = _M_data->_M_pm; 25082: } 25082: 25082: void 25082: _M_days(const _CharT** __days) const 25082: { 25082: __days[0] = _M_data->_M_day1; 25082: __days[1] = _M_data->_M_day2; 25082: __days[2] = _M_data->_M_day3; 25082: __days[3] = _M_data->_M_day4; 25082: __days[4] = _M_data->_M_day5; 25082: __days[5] = _M_data->_M_day6; 25082: __days[6] = _M_data->_M_day7; 25082: } 25082: 25082: void 25082: _M_days_abbreviated(const _CharT** __days) const 25082: { 25082: __days[0] = _M_data->_M_aday1; 25082: __days[1] = _M_data->_M_aday2; 25082: __days[2] = _M_data->_M_aday3; 25082: __days[3] = _M_data->_M_aday4; 25082: __days[4] = _M_data->_M_aday5; 25082: __days[5] = _M_data->_M_aday6; 25082: __days[6] = _M_data->_M_aday7; 25082: } 25082: 25082: void 25082: _M_months(const _CharT** __months) const 25082: { 25082: __months[0] = _M_data->_M_month01; 25082: __months[1] = _M_data->_M_month02; 25082: __months[2] = _M_data->_M_month03; 25082: __months[3] = _M_data->_M_month04; 25082: __months[4] = _M_data->_M_month05; 25082: __months[5] = _M_data->_M_month06; 25082: __months[6] = _M_data->_M_month07; 25082: __months[7] = _M_data->_M_month08; 25082: __months[8] = _M_data->_M_month09; 25082: __months[9] = _M_data->_M_month10; 25082: __months[10] = _M_data->_M_month11; 25082: __months[11] = _M_data->_M_month12; 25082: } 25082: 25082: void 25082: _M_months_abbreviated(const _CharT** __months) const 25082: { 25082: __months[0] = _M_data->_M_amonth01; 25082: __months[1] = _M_data->_M_amonth02; 25082: __months[2] = _M_data->_M_amonth03; 25082: __months[3] = _M_data->_M_amonth04; 25082: __months[4] = _M_data->_M_amonth05; 25082: __months[5] = _M_data->_M_amonth06; 25082: __months[6] = _M_data->_M_amonth07; 25082: __months[7] = _M_data->_M_amonth08; 25082: __months[8] = _M_data->_M_amonth09; 25082: __months[9] = _M_data->_M_amonth10; 25082: __months[10] = _M_data->_M_amonth11; 25082: __months[11] = _M_data->_M_amonth12; 25082: } 25082: 25082: protected: 25082: virtual 25082: ~__timepunct(); 25082: 25082: 25082: void 25082: _M_initialize_timepunct(__c_locale __cloc = 0); 25082: }; 25082: 25082: template 25082: locale::id __timepunct<_CharT>::id; 25082: 25082: 25082: template<> 25082: void 25082: __timepunct::_M_initialize_timepunct(__c_locale __cloc); 25082: 25082: template<> 25082: void 25082: __timepunct::_M_put(char*, size_t, const char*, const tm*) const throw (); 25082: 25082: 25082: template<> 25082: void 25082: __timepunct::_M_initialize_timepunct(__c_locale __cloc); 25082: 25082: template<> 25082: void 25082: __timepunct::_M_put(wchar_t*, size_t, const wchar_t*, 25082: const tm*) const throw (); 25082: 25082: 25082: 25082: } 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/time_members.h" 1 3 25082: # 37 "/usr/include/aarch64-linux-gnu/c++/8/bits/time_members.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: __timepunct<_CharT>::__timepunct(size_t __refs) 25082: : facet(__refs), _M_data(0), _M_c_locale_timepunct(0), 25082: _M_name_timepunct(_S_get_c_name()) 25082: { _M_initialize_timepunct(); } 25082: 25082: template 25082: __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 25082: : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(0), 25082: _M_name_timepunct(_S_get_c_name()) 25082: { _M_initialize_timepunct(); } 25082: 25082: template 25082: __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, 25082: size_t __refs) 25082: : facet(__refs), _M_data(0), _M_c_locale_timepunct(0), 25082: _M_name_timepunct(0) 25082: { 25082: if (__builtin_strcmp(__s, _S_get_c_name()) != 0) 25082: { 25082: const size_t __len = __builtin_strlen(__s) + 1; 25082: char* __tmp = new char[__len]; 25082: __builtin_memcpy(__tmp, __s, __len); 25082: _M_name_timepunct = __tmp; 25082: } 25082: else 25082: _M_name_timepunct = _S_get_c_name(); 25082: 25082: try 25082: { _M_initialize_timepunct(__cloc); } 25082: catch(...) 25082: { 25082: if (_M_name_timepunct != _S_get_c_name()) 25082: delete [] _M_name_timepunct; 25082: throw; 25082: } 25082: } 25082: 25082: template 25082: __timepunct<_CharT>::~__timepunct() 25082: { 25082: if (_M_name_timepunct != _S_get_c_name()) 25082: delete [] _M_name_timepunct; 25082: delete _M_data; 25082: _S_destroy_c_locale(_M_c_locale_timepunct); 25082: } 25082: 25082: 25082: } 25082: # 347 "/usr/include/c++/8/bits/locale_facets_nonio.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: namespace __cxx11 { 25082: # 367 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: template 25082: class time_get : public locale::facet, public time_base 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef _InIter iter_type; 25082: 25082: 25082: 25082: static locale::id id; 25082: # 388 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: explicit 25082: time_get(size_t __refs = 0) 25082: : facet (__refs) { } 25082: # 405 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: dateorder 25082: date_order() const 25082: { return this->do_date_order(); } 25082: # 429 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: get_time(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const 25082: { return this->do_get_time(__beg, __end, __io, __err, __tm); } 25082: # 454 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: get_date(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const 25082: { return this->do_get_date(__beg, __end, __io, __err, __tm); } 25082: # 482 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: get_weekday(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const 25082: { return this->do_get_weekday(__beg, __end, __io, __err, __tm); } 25082: # 511 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: get_monthname(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const 25082: { return this->do_get_monthname(__beg, __end, __io, __err, __tm); } 25082: # 537 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: get_year(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const 25082: { return this->do_get_year(__beg, __end, __io, __err, __tm); } 25082: # 558 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: inline 25082: iter_type get(iter_type __s, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm, char __format, 25082: char __modifier = 0) const 25082: { 25082: return this->do_get(__s, __end, __io, __err, __tm, __format, 25082: __modifier); 25082: } 25082: # 585 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type get(iter_type __s, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm, const char_type* __fmt, 25082: const char_type* __fmtend) const; 25082: 25082: 25082: protected: 25082: 25082: virtual 25082: ~time_get() { } 25082: # 605 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual dateorder 25082: do_date_order() const; 25082: # 623 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual iter_type 25082: do_get_time(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const; 25082: # 642 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual iter_type 25082: do_get_date(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const; 25082: # 661 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual iter_type 25082: do_get_weekday(iter_type __beg, iter_type __end, ios_base&, 25082: ios_base::iostate& __err, tm* __tm) const; 25082: # 680 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual iter_type 25082: do_get_monthname(iter_type __beg, iter_type __end, ios_base&, 25082: ios_base::iostate& __err, tm* __tm) const; 25082: # 699 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual iter_type 25082: do_get_year(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const; 25082: # 722 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual 25082: 25082: iter_type 25082: do_get(iter_type __s, iter_type __end, ios_base& __f, 25082: ios_base::iostate& __err, tm* __tm, 25082: char __format, char __modifier) const; 25082: 25082: 25082: 25082: iter_type 25082: _M_extract_num(iter_type __beg, iter_type __end, int& __member, 25082: int __min, int __max, size_t __len, 25082: ios_base& __io, ios_base::iostate& __err) const; 25082: 25082: 25082: iter_type 25082: _M_extract_name(iter_type __beg, iter_type __end, int& __member, 25082: const _CharT** __names, size_t __indexlen, 25082: ios_base& __io, ios_base::iostate& __err) const; 25082: 25082: 25082: iter_type 25082: _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member, 25082: const _CharT** __names, size_t __indexlen, 25082: ios_base& __io, ios_base::iostate& __err) const; 25082: 25082: 25082: iter_type 25082: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm, 25082: const _CharT* __format) const; 25082: }; 25082: 25082: template 25082: locale::id time_get<_CharT, _InIter>::id; 25082: 25082: 25082: template 25082: class time_get_byname : public time_get<_CharT, _InIter> 25082: { 25082: public: 25082: 25082: typedef _CharT char_type; 25082: typedef _InIter iter_type; 25082: 25082: explicit 25082: time_get_byname(const char*, size_t __refs = 0) 25082: : time_get<_CharT, _InIter>(__refs) { } 25082: 25082: 25082: explicit 25082: time_get_byname(const string& __s, size_t __refs = 0) 25082: : time_get_byname(__s.c_str(), __refs) { } 25082: 25082: 25082: protected: 25082: virtual 25082: ~time_get_byname() { } 25082: }; 25082: 25082: } 25082: # 796 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: template 25082: class time_put : public locale::facet 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef _OutIter iter_type; 25082: 25082: 25082: 25082: static locale::id id; 25082: # 817 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: explicit 25082: time_put(size_t __refs = 0) 25082: : facet(__refs) { } 25082: # 836 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, 25082: const _CharT* __beg, const _CharT* __end) const; 25082: # 856 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: put(iter_type __s, ios_base& __io, char_type __fill, 25082: const tm* __tm, char __format, char __mod = 0) const 25082: { return this->do_put(__s, __io, __fill, __tm, __format, __mod); } 25082: 25082: protected: 25082: 25082: virtual 25082: ~time_put() 25082: { } 25082: # 883 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual iter_type 25082: do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, 25082: char __format, char __mod) const; 25082: }; 25082: 25082: template 25082: locale::id time_put<_CharT, _OutIter>::id; 25082: 25082: 25082: template 25082: class time_put_byname : public time_put<_CharT, _OutIter> 25082: { 25082: public: 25082: 25082: typedef _CharT char_type; 25082: typedef _OutIter iter_type; 25082: 25082: explicit 25082: time_put_byname(const char*, size_t __refs = 0) 25082: : time_put<_CharT, _OutIter>(__refs) 25082: { } 25082: 25082: 25082: explicit 25082: time_put_byname(const string& __s, size_t __refs = 0) 25082: : time_put_byname(__s.c_str(), __refs) { } 25082: 25082: 25082: protected: 25082: virtual 25082: ~time_put_byname() { } 25082: }; 25082: # 928 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: class money_base 25082: { 25082: public: 25082: enum part { none, space, symbol, sign, value }; 25082: struct pattern { char field[4]; }; 25082: 25082: static const pattern _S_default_pattern; 25082: 25082: enum 25082: { 25082: _S_minus, 25082: _S_zero, 25082: _S_end = 11 25082: }; 25082: 25082: 25082: 25082: static const char* _S_atoms; 25082: 25082: 25082: 25082: __attribute__ ((__const__)) static pattern 25082: _S_construct_pattern(char __precedes, char __space, char __posn) throw (); 25082: }; 25082: 25082: template 25082: struct __moneypunct_cache : public locale::facet 25082: { 25082: const char* _M_grouping; 25082: size_t _M_grouping_size; 25082: bool _M_use_grouping; 25082: _CharT _M_decimal_point; 25082: _CharT _M_thousands_sep; 25082: const _CharT* _M_curr_symbol; 25082: size_t _M_curr_symbol_size; 25082: const _CharT* _M_positive_sign; 25082: size_t _M_positive_sign_size; 25082: const _CharT* _M_negative_sign; 25082: size_t _M_negative_sign_size; 25082: int _M_frac_digits; 25082: money_base::pattern _M_pos_format; 25082: money_base::pattern _M_neg_format; 25082: 25082: 25082: 25082: 25082: _CharT _M_atoms[money_base::_S_end]; 25082: 25082: bool _M_allocated; 25082: 25082: __moneypunct_cache(size_t __refs = 0) : facet(__refs), 25082: _M_grouping(0), _M_grouping_size(0), _M_use_grouping(false), 25082: _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()), 25082: _M_curr_symbol(0), _M_curr_symbol_size(0), 25082: _M_positive_sign(0), _M_positive_sign_size(0), 25082: _M_negative_sign(0), _M_negative_sign_size(0), 25082: _M_frac_digits(0), 25082: _M_pos_format(money_base::pattern()), 25082: _M_neg_format(money_base::pattern()), _M_allocated(false) 25082: { } 25082: 25082: ~__moneypunct_cache(); 25082: 25082: void 25082: _M_cache(const locale& __loc); 25082: 25082: private: 25082: __moneypunct_cache& 25082: operator=(const __moneypunct_cache&); 25082: 25082: explicit 25082: __moneypunct_cache(const __moneypunct_cache&); 25082: }; 25082: 25082: template 25082: __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache() 25082: { 25082: if (_M_allocated) 25082: { 25082: delete [] _M_grouping; 25082: delete [] _M_curr_symbol; 25082: delete [] _M_positive_sign; 25082: delete [] _M_negative_sign; 25082: } 25082: } 25082: 25082: namespace __cxx11 { 25082: # 1023 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: template 25082: class moneypunct : public locale::facet, public money_base 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef basic_string<_CharT> string_type; 25082: 25082: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; 25082: 25082: private: 25082: __cache_type* _M_data; 25082: 25082: public: 25082: 25082: 25082: static const bool intl = _Intl; 25082: 25082: static locale::id id; 25082: # 1052 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: explicit 25082: moneypunct(size_t __refs = 0) 25082: : facet(__refs), _M_data(0) 25082: { _M_initialize_moneypunct(); } 25082: # 1065 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: explicit 25082: moneypunct(__cache_type* __cache, size_t __refs = 0) 25082: : facet(__refs), _M_data(__cache) 25082: { _M_initialize_moneypunct(); } 25082: # 1080 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: explicit 25082: moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0) 25082: : facet(__refs), _M_data(0) 25082: { _M_initialize_moneypunct(__cloc, __s); } 25082: # 1094 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: char_type 25082: decimal_point() const 25082: { return this->do_decimal_point(); } 25082: # 1107 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: char_type 25082: thousands_sep() const 25082: { return this->do_thousands_sep(); } 25082: # 1137 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: string 25082: grouping() const 25082: { return this->do_grouping(); } 25082: # 1150 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: string_type 25082: curr_symbol() const 25082: { return this->do_curr_symbol(); } 25082: # 1167 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: string_type 25082: positive_sign() const 25082: { return this->do_positive_sign(); } 25082: # 1184 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: string_type 25082: negative_sign() const 25082: { return this->do_negative_sign(); } 25082: # 1200 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: int 25082: frac_digits() const 25082: { return this->do_frac_digits(); } 25082: # 1236 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: pattern 25082: pos_format() const 25082: { return this->do_pos_format(); } 25082: 25082: pattern 25082: neg_format() const 25082: { return this->do_neg_format(); } 25082: 25082: 25082: protected: 25082: 25082: virtual 25082: ~moneypunct(); 25082: # 1258 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual char_type 25082: do_decimal_point() const 25082: { return _M_data->_M_decimal_point; } 25082: # 1270 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual char_type 25082: do_thousands_sep() const 25082: { return _M_data->_M_thousands_sep; } 25082: # 1283 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual string 25082: do_grouping() const 25082: { return _M_data->_M_grouping; } 25082: # 1296 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual string_type 25082: do_curr_symbol() const 25082: { return _M_data->_M_curr_symbol; } 25082: # 1309 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual string_type 25082: do_positive_sign() const 25082: { return _M_data->_M_positive_sign; } 25082: # 1322 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual string_type 25082: do_negative_sign() const 25082: { return _M_data->_M_negative_sign; } 25082: # 1336 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual int 25082: do_frac_digits() const 25082: { return _M_data->_M_frac_digits; } 25082: # 1350 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual pattern 25082: do_pos_format() const 25082: { return _M_data->_M_pos_format; } 25082: # 1364 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual pattern 25082: do_neg_format() const 25082: { return _M_data->_M_neg_format; } 25082: 25082: 25082: void 25082: _M_initialize_moneypunct(__c_locale __cloc = 0, 25082: const char* __name = 0); 25082: }; 25082: 25082: template 25082: locale::id moneypunct<_CharT, _Intl>::id; 25082: 25082: template 25082: const bool moneypunct<_CharT, _Intl>::intl; 25082: 25082: template<> 25082: moneypunct::~moneypunct(); 25082: 25082: template<> 25082: moneypunct::~moneypunct(); 25082: 25082: template<> 25082: void 25082: moneypunct::_M_initialize_moneypunct(__c_locale, const char*); 25082: 25082: template<> 25082: void 25082: moneypunct::_M_initialize_moneypunct(__c_locale, const char*); 25082: 25082: 25082: template<> 25082: moneypunct::~moneypunct(); 25082: 25082: template<> 25082: moneypunct::~moneypunct(); 25082: 25082: template<> 25082: void 25082: moneypunct::_M_initialize_moneypunct(__c_locale, 25082: const char*); 25082: 25082: template<> 25082: void 25082: moneypunct::_M_initialize_moneypunct(__c_locale, 25082: const char*); 25082: 25082: 25082: 25082: template 25082: class moneypunct_byname : public moneypunct<_CharT, _Intl> 25082: { 25082: public: 25082: typedef _CharT char_type; 25082: typedef basic_string<_CharT> string_type; 25082: 25082: static const bool intl = _Intl; 25082: 25082: explicit 25082: moneypunct_byname(const char* __s, size_t __refs = 0) 25082: : moneypunct<_CharT, _Intl>(__refs) 25082: { 25082: if (__builtin_strcmp(__s, "C") != 0 25082: && __builtin_strcmp(__s, "POSIX") != 0) 25082: { 25082: __c_locale __tmp; 25082: this->_S_create_c_locale(__tmp, __s); 25082: this->_M_initialize_moneypunct(__tmp); 25082: this->_S_destroy_c_locale(__tmp); 25082: } 25082: } 25082: 25082: 25082: explicit 25082: moneypunct_byname(const string& __s, size_t __refs = 0) 25082: : moneypunct_byname(__s.c_str(), __refs) { } 25082: 25082: 25082: protected: 25082: virtual 25082: ~moneypunct_byname() { } 25082: }; 25082: 25082: template 25082: const bool moneypunct_byname<_CharT, _Intl>::intl; 25082: 25082: } 25082: 25082: namespace __cxx11 { 25082: # 1467 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: template 25082: class money_get : public locale::facet 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef _InIter iter_type; 25082: typedef basic_string<_CharT> string_type; 25082: 25082: 25082: 25082: static locale::id id; 25082: # 1489 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: explicit 25082: money_get(size_t __refs = 0) : facet(__refs) { } 25082: # 1519 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 25082: ios_base::iostate& __err, long double& __units) const 25082: { return this->do_get(__s, __end, __intl, __io, __err, __units); } 25082: # 1550 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 25082: ios_base::iostate& __err, string_type& __digits) const 25082: { return this->do_get(__s, __end, __intl, __io, __err, __digits); } 25082: 25082: protected: 25082: 25082: virtual 25082: ~money_get() { } 25082: # 1574 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual iter_type 25082: do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 25082: ios_base::iostate& __err, long double& __units) const; 25082: # 1586 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual iter_type 25082: do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 25082: ios_base::iostate& __err, string_type& __digits) const; 25082: # 1598 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: template 25082: iter_type 25082: _M_extract(iter_type __s, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, string& __digits) const; 25082: }; 25082: 25082: template 25082: locale::id money_get<_CharT, _InIter>::id; 25082: # 1620 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: template 25082: class money_put : public locale::facet 25082: { 25082: public: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef _OutIter iter_type; 25082: typedef basic_string<_CharT> string_type; 25082: 25082: 25082: 25082: static locale::id id; 25082: # 1641 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: explicit 25082: money_put(size_t __refs = 0) : facet(__refs) { } 25082: # 1661 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: put(iter_type __s, bool __intl, ios_base& __io, 25082: char_type __fill, long double __units) const 25082: { return this->do_put(__s, __intl, __io, __fill, __units); } 25082: # 1684 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: iter_type 25082: put(iter_type __s, bool __intl, ios_base& __io, 25082: char_type __fill, const string_type& __digits) const 25082: { return this->do_put(__s, __intl, __io, __fill, __digits); } 25082: 25082: protected: 25082: 25082: virtual 25082: ~money_put() { } 25082: # 1719 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual iter_type 25082: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 25082: long double __units) const; 25082: # 1743 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual iter_type 25082: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 25082: const string_type& __digits) const; 25082: # 1755 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: template 25082: iter_type 25082: _M_insert(iter_type __s, ios_base& __io, char_type __fill, 25082: const string_type& __digits) const; 25082: }; 25082: 25082: template 25082: locale::id money_put<_CharT, _OutIter>::id; 25082: 25082: } 25082: 25082: 25082: 25082: 25082: 25082: struct messages_base 25082: { 25082: typedef int catalog; 25082: }; 25082: 25082: namespace __cxx11 { 25082: # 1798 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: template 25082: class messages : public locale::facet, public messages_base 25082: { 25082: public: 25082: 25082: 25082: 25082: typedef _CharT char_type; 25082: typedef basic_string<_CharT> string_type; 25082: 25082: 25082: protected: 25082: 25082: 25082: __c_locale _M_c_locale_messages; 25082: const char* _M_name_messages; 25082: 25082: public: 25082: 25082: static locale::id id; 25082: # 1826 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: explicit 25082: messages(size_t __refs = 0); 25082: # 1840 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: explicit 25082: messages(__c_locale __cloc, const char* __s, size_t __refs = 0); 25082: # 1853 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: catalog 25082: open(const basic_string& __s, const locale& __loc) const 25082: { return this->do_open(__s, __loc); } 25082: # 1871 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: catalog 25082: open(const basic_string&, const locale&, const char*) const; 25082: # 1889 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: string_type 25082: get(catalog __c, int __set, int __msgid, const string_type& __s) const 25082: { return this->do_get(__c, __set, __msgid, __s); } 25082: # 1900 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: void 25082: close(catalog __c) const 25082: { return this->do_close(__c); } 25082: 25082: protected: 25082: 25082: virtual 25082: ~messages(); 25082: # 1920 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual catalog 25082: do_open(const basic_string&, const locale&) const; 25082: # 1939 "/usr/include/c++/8/bits/locale_facets_nonio.h" 3 25082: virtual string_type 25082: do_get(catalog, int, int, const string_type& __dfault) const; 25082: 25082: 25082: 25082: 25082: 25082: 25082: virtual void 25082: do_close(catalog) const; 25082: 25082: 25082: char* 25082: _M_convert_to_char(const string_type& __msg) const 25082: { 25082: 25082: return reinterpret_cast(const_cast<_CharT*>(__msg.c_str())); 25082: } 25082: 25082: 25082: string_type 25082: _M_convert_from_char(char*) const 25082: { 25082: 25082: return string_type(); 25082: } 25082: }; 25082: 25082: template 25082: locale::id messages<_CharT>::id; 25082: 25082: 25082: template<> 25082: string 25082: messages::do_get(catalog, int, int, const string&) const; 25082: 25082: 25082: template<> 25082: wstring 25082: messages::do_get(catalog, int, int, const wstring&) const; 25082: 25082: 25082: 25082: template 25082: class messages_byname : public messages<_CharT> 25082: { 25082: public: 25082: typedef _CharT char_type; 25082: typedef basic_string<_CharT> string_type; 25082: 25082: explicit 25082: messages_byname(const char* __s, size_t __refs = 0); 25082: 25082: 25082: explicit 25082: messages_byname(const string& __s, size_t __refs = 0) 25082: : messages_byname(__s.c_str(), __refs) { } 25082: 25082: 25082: protected: 25082: virtual 25082: ~messages_byname() 25082: { } 25082: }; 25082: 25082: } 25082: 25082: 25082: } 25082: 25082: 25082: # 1 "/usr/include/aarch64-linux-gnu/c++/8/bits/messages_members.h" 1 3 25082: # 36 "/usr/include/aarch64-linux-gnu/c++/8/bits/messages_members.h" 3 25082: # 1 "/usr/include/libintl.h" 1 3 4 25082: # 34 "/usr/include/libintl.h" 3 4 25082: extern "C" { 25082: 25082: 25082: 25082: 25082: extern char *gettext (const char *__msgid) 25082: throw () __attribute__ ((__format_arg__ (1))); 25082: 25082: 25082: 25082: extern char *dgettext (const char *__domainname, const char *__msgid) 25082: throw () __attribute__ ((__format_arg__ (2))); 25082: extern char *__dgettext (const char *__domainname, const char *__msgid) 25082: throw () __attribute__ ((__format_arg__ (2))); 25082: 25082: 25082: 25082: extern char *dcgettext (const char *__domainname, 25082: const char *__msgid, int __category) 25082: throw () __attribute__ ((__format_arg__ (2))); 25082: extern char *__dcgettext (const char *__domainname, 25082: const char *__msgid, int __category) 25082: throw () __attribute__ ((__format_arg__ (2))); 25082: 25082: 25082: 25082: 25082: extern char *ngettext (const char *__msgid1, const char *__msgid2, 25082: unsigned long int __n) 25082: throw () __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2))); 25082: 25082: 25082: 25082: extern char *dngettext (const char *__domainname, const char *__msgid1, 25082: const char *__msgid2, unsigned long int __n) 25082: throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3))); 25082: 25082: 25082: 25082: extern char *dcngettext (const char *__domainname, const char *__msgid1, 25082: const char *__msgid2, unsigned long int __n, 25082: int __category) 25082: throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3))); 25082: 25082: 25082: 25082: 25082: 25082: extern char *textdomain (const char *__domainname) throw (); 25082: 25082: 25082: 25082: extern char *bindtextdomain (const char *__domainname, 25082: const char *__dirname) throw (); 25082: 25082: 25082: 25082: extern char *bind_textdomain_codeset (const char *__domainname, 25082: const char *__codeset) throw (); 25082: # 121 "/usr/include/libintl.h" 3 4 25082: } 25082: # 37 "/usr/include/aarch64-linux-gnu/c++/8/bits/messages_members.h" 2 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: template 25082: messages<_CharT>::messages(size_t __refs) 25082: : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), 25082: _M_name_messages(_S_get_c_name()) 25082: { } 25082: 25082: template 25082: messages<_CharT>::messages(__c_locale __cloc, const char* __s, 25082: size_t __refs) 25082: : facet(__refs), _M_c_locale_messages(0), _M_name_messages(0) 25082: { 25082: if (__builtin_strcmp(__s, _S_get_c_name()) != 0) 25082: { 25082: const size_t __len = __builtin_strlen(__s) + 1; 25082: char* __tmp = new char[__len]; 25082: __builtin_memcpy(__tmp, __s, __len); 25082: _M_name_messages = __tmp; 25082: } 25082: else 25082: _M_name_messages = _S_get_c_name(); 25082: 25082: 25082: _M_c_locale_messages = _S_clone_c_locale(__cloc); 25082: } 25082: 25082: template 25082: typename messages<_CharT>::catalog 25082: messages<_CharT>::open(const basic_string& __s, const locale& __loc, 25082: const char* __dir) const 25082: { 25082: bindtextdomain(__s.c_str(), __dir); 25082: return this->do_open(__s, __loc); 25082: } 25082: 25082: 25082: template 25082: messages<_CharT>::~messages() 25082: { 25082: if (_M_name_messages != _S_get_c_name()) 25082: delete [] _M_name_messages; 25082: _S_destroy_c_locale(_M_c_locale_messages); 25082: } 25082: 25082: template 25082: typename messages<_CharT>::catalog 25082: messages<_CharT>::do_open(const basic_string& __s, 25082: const locale&) const 25082: { 25082: 25082: 25082: textdomain(__s.c_str()); 25082: return 0; 25082: } 25082: 25082: template 25082: void 25082: messages<_CharT>::do_close(catalog) const 25082: { } 25082: 25082: 25082: template 25082: messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) 25082: : messages<_CharT>(__refs) 25082: { 25082: if (this->_M_name_messages != locale::facet::_S_get_c_name()) 25082: { 25082: delete [] this->_M_name_messages; 25082: if (__builtin_strcmp(__s, locale::facet::_S_get_c_name()) != 0) 25082: { 25082: const size_t __len = __builtin_strlen(__s) + 1; 25082: char* __tmp = new char[__len]; 25082: __builtin_memcpy(__tmp, __s, __len); 25082: this->_M_name_messages = __tmp; 25082: } 25082: else 25082: this->_M_name_messages = locale::facet::_S_get_c_name(); 25082: } 25082: 25082: if (__builtin_strcmp(__s, "C") != 0 25082: && __builtin_strcmp(__s, "POSIX") != 0) 25082: { 25082: this->_S_destroy_c_locale(this->_M_c_locale_messages); 25082: this->_S_create_c_locale(this->_M_c_locale_messages, __s); 25082: } 25082: } 25082: 25082: 25082: template<> 25082: typename messages::catalog 25082: messages::do_open(const basic_string&, 25082: const locale&) const; 25082: 25082: template<> 25082: void 25082: messages::do_close(catalog) const; 25082: 25082: 25082: template<> 25082: typename messages::catalog 25082: messages::do_open(const basic_string&, 25082: const locale&) const; 25082: 25082: template<> 25082: void 25082: messages::do_close(catalog) const; 25082: 25082: 25082: 25082: } 25082: # 2011 "/usr/include/c++/8/bits/locale_facets_nonio.h" 2 3 25082: 25082: 25082: # 1 "/usr/include/c++/8/bits/codecvt.h" 1 3 25082: # 39 "/usr/include/c++/8/bits/codecvt.h" 3 25082: 25082: # 40 "/usr/include/c++/8/bits/codecvt.h" 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: class codecvt_base 25082: { 25082: public: 25082: enum result 25082: { 25082: ok, 25082: partial, 25082: error, 25082: noconv 25082: }; 25082: }; 25082: # 67 "/usr/include/c++/8/bits/codecvt.h" 3 25082: template 25082: class __codecvt_abstract_base 25082: : public locale::facet, public codecvt_base 25082: { 25082: public: 25082: 25082: typedef codecvt_base::result result; 25082: typedef _InternT intern_type; 25082: typedef _ExternT extern_type; 25082: typedef _StateT state_type; 25082: # 115 "/usr/include/c++/8/bits/codecvt.h" 3 25082: result 25082: out(state_type& __state, const intern_type* __from, 25082: const intern_type* __from_end, const intern_type*& __from_next, 25082: extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const 25082: { 25082: return this->do_out(__state, __from, __from_end, __from_next, 25082: __to, __to_end, __to_next); 25082: } 25082: # 154 "/usr/include/c++/8/bits/codecvt.h" 3 25082: result 25082: unshift(state_type& __state, extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const 25082: { return this->do_unshift(__state, __to,__to_end,__to_next); } 25082: # 195 "/usr/include/c++/8/bits/codecvt.h" 3 25082: result 25082: in(state_type& __state, const extern_type* __from, 25082: const extern_type* __from_end, const extern_type*& __from_next, 25082: intern_type* __to, intern_type* __to_end, 25082: intern_type*& __to_next) const 25082: { 25082: return this->do_in(__state, __from, __from_end, __from_next, 25082: __to, __to_end, __to_next); 25082: } 25082: 25082: int 25082: encoding() const throw() 25082: { return this->do_encoding(); } 25082: 25082: bool 25082: always_noconv() const throw() 25082: { return this->do_always_noconv(); } 25082: 25082: int 25082: length(state_type& __state, const extern_type* __from, 25082: const extern_type* __end, size_t __max) const 25082: { return this->do_length(__state, __from, __end, __max); } 25082: 25082: int 25082: max_length() const throw() 25082: { return this->do_max_length(); } 25082: 25082: protected: 25082: explicit 25082: __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { } 25082: 25082: virtual 25082: ~__codecvt_abstract_base() { } 25082: # 236 "/usr/include/c++/8/bits/codecvt.h" 3 25082: virtual result 25082: do_out(state_type& __state, const intern_type* __from, 25082: const intern_type* __from_end, const intern_type*& __from_next, 25082: extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const = 0; 25082: 25082: virtual result 25082: do_unshift(state_type& __state, extern_type* __to, 25082: extern_type* __to_end, extern_type*& __to_next) const = 0; 25082: 25082: virtual result 25082: do_in(state_type& __state, const extern_type* __from, 25082: const extern_type* __from_end, const extern_type*& __from_next, 25082: intern_type* __to, intern_type* __to_end, 25082: intern_type*& __to_next) const = 0; 25082: 25082: virtual int 25082: do_encoding() const throw() = 0; 25082: 25082: virtual bool 25082: do_always_noconv() const throw() = 0; 25082: 25082: virtual int 25082: do_length(state_type&, const extern_type* __from, 25082: const extern_type* __end, size_t __max) const = 0; 25082: 25082: virtual int 25082: do_max_length() const throw() = 0; 25082: }; 25082: # 273 "/usr/include/c++/8/bits/codecvt.h" 3 25082: template 25082: class codecvt 25082: : public __codecvt_abstract_base<_InternT, _ExternT, _StateT> 25082: { 25082: public: 25082: 25082: typedef codecvt_base::result result; 25082: typedef _InternT intern_type; 25082: typedef _ExternT extern_type; 25082: typedef _StateT state_type; 25082: 25082: protected: 25082: __c_locale _M_c_locale_codecvt; 25082: 25082: public: 25082: static locale::id id; 25082: 25082: explicit 25082: codecvt(size_t __refs = 0) 25082: : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs), 25082: _M_c_locale_codecvt(0) 25082: { } 25082: 25082: explicit 25082: codecvt(__c_locale __cloc, size_t __refs = 0); 25082: 25082: protected: 25082: virtual 25082: ~codecvt() { } 25082: 25082: virtual result 25082: do_out(state_type& __state, const intern_type* __from, 25082: const intern_type* __from_end, const intern_type*& __from_next, 25082: extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const; 25082: 25082: virtual result 25082: do_unshift(state_type& __state, extern_type* __to, 25082: extern_type* __to_end, extern_type*& __to_next) const; 25082: 25082: virtual result 25082: do_in(state_type& __state, const extern_type* __from, 25082: const extern_type* __from_end, const extern_type*& __from_next, 25082: intern_type* __to, intern_type* __to_end, 25082: intern_type*& __to_next) const; 25082: 25082: virtual int 25082: do_encoding() const throw(); 25082: 25082: virtual bool 25082: do_always_noconv() const throw(); 25082: 25082: virtual int 25082: do_length(state_type&, const extern_type* __from, 25082: const extern_type* __end, size_t __max) const; 25082: 25082: virtual int 25082: do_max_length() const throw(); 25082: }; 25082: 25082: template 25082: locale::id codecvt<_InternT, _ExternT, _StateT>::id; 25082: 25082: 25082: template<> 25082: class codecvt 25082: : public __codecvt_abstract_base 25082: { 25082: friend class messages; 25082: 25082: public: 25082: 25082: typedef char intern_type; 25082: typedef char extern_type; 25082: typedef mbstate_t state_type; 25082: 25082: protected: 25082: __c_locale _M_c_locale_codecvt; 25082: 25082: public: 25082: static locale::id id; 25082: 25082: explicit 25082: codecvt(size_t __refs = 0); 25082: 25082: explicit 25082: codecvt(__c_locale __cloc, size_t __refs = 0); 25082: 25082: protected: 25082: virtual 25082: ~codecvt(); 25082: 25082: virtual result 25082: do_out(state_type& __state, const intern_type* __from, 25082: const intern_type* __from_end, const intern_type*& __from_next, 25082: extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const; 25082: 25082: virtual result 25082: do_unshift(state_type& __state, extern_type* __to, 25082: extern_type* __to_end, extern_type*& __to_next) const; 25082: 25082: virtual result 25082: do_in(state_type& __state, const extern_type* __from, 25082: const extern_type* __from_end, const extern_type*& __from_next, 25082: intern_type* __to, intern_type* __to_end, 25082: intern_type*& __to_next) const; 25082: 25082: virtual int 25082: do_encoding() const throw(); 25082: 25082: virtual bool 25082: do_always_noconv() const throw(); 25082: 25082: virtual int 25082: do_length(state_type&, const extern_type* __from, 25082: const extern_type* __end, size_t __max) const; 25082: 25082: virtual int 25082: do_max_length() const throw(); 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: class codecvt 25082: : public __codecvt_abstract_base 25082: { 25082: friend class messages; 25082: 25082: public: 25082: 25082: typedef wchar_t intern_type; 25082: typedef char extern_type; 25082: typedef mbstate_t state_type; 25082: 25082: protected: 25082: __c_locale _M_c_locale_codecvt; 25082: 25082: public: 25082: static locale::id id; 25082: 25082: explicit 25082: codecvt(size_t __refs = 0); 25082: 25082: explicit 25082: codecvt(__c_locale __cloc, size_t __refs = 0); 25082: 25082: protected: 25082: virtual 25082: ~codecvt(); 25082: 25082: virtual result 25082: do_out(state_type& __state, const intern_type* __from, 25082: const intern_type* __from_end, const intern_type*& __from_next, 25082: extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const; 25082: 25082: virtual result 25082: do_unshift(state_type& __state, 25082: extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const; 25082: 25082: virtual result 25082: do_in(state_type& __state, 25082: const extern_type* __from, const extern_type* __from_end, 25082: const extern_type*& __from_next, 25082: intern_type* __to, intern_type* __to_end, 25082: intern_type*& __to_next) const; 25082: 25082: virtual 25082: int do_encoding() const throw(); 25082: 25082: virtual 25082: bool do_always_noconv() const throw(); 25082: 25082: virtual 25082: int do_length(state_type&, const extern_type* __from, 25082: const extern_type* __end, size_t __max) const; 25082: 25082: virtual int 25082: do_max_length() const throw(); 25082: }; 25082: # 467 "/usr/include/c++/8/bits/codecvt.h" 3 25082: template<> 25082: class codecvt 25082: : public __codecvt_abstract_base 25082: { 25082: public: 25082: 25082: typedef char16_t intern_type; 25082: typedef char extern_type; 25082: typedef mbstate_t state_type; 25082: 25082: public: 25082: static locale::id id; 25082: 25082: explicit 25082: codecvt(size_t __refs = 0) 25082: : __codecvt_abstract_base(__refs) { } 25082: 25082: protected: 25082: virtual 25082: ~codecvt(); 25082: 25082: virtual result 25082: do_out(state_type& __state, const intern_type* __from, 25082: const intern_type* __from_end, const intern_type*& __from_next, 25082: extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const; 25082: 25082: virtual result 25082: do_unshift(state_type& __state, 25082: extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const; 25082: 25082: virtual result 25082: do_in(state_type& __state, 25082: const extern_type* __from, const extern_type* __from_end, 25082: const extern_type*& __from_next, 25082: intern_type* __to, intern_type* __to_end, 25082: intern_type*& __to_next) const; 25082: 25082: virtual 25082: int do_encoding() const throw(); 25082: 25082: virtual 25082: bool do_always_noconv() const throw(); 25082: 25082: virtual 25082: int do_length(state_type&, const extern_type* __from, 25082: const extern_type* __end, size_t __max) const; 25082: 25082: virtual int 25082: do_max_length() const throw(); 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template<> 25082: class codecvt 25082: : public __codecvt_abstract_base 25082: { 25082: public: 25082: 25082: typedef char32_t intern_type; 25082: typedef char extern_type; 25082: typedef mbstate_t state_type; 25082: 25082: public: 25082: static locale::id id; 25082: 25082: explicit 25082: codecvt(size_t __refs = 0) 25082: : __codecvt_abstract_base(__refs) { } 25082: 25082: protected: 25082: virtual 25082: ~codecvt(); 25082: 25082: virtual result 25082: do_out(state_type& __state, const intern_type* __from, 25082: const intern_type* __from_end, const intern_type*& __from_next, 25082: extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const; 25082: 25082: virtual result 25082: do_unshift(state_type& __state, 25082: extern_type* __to, extern_type* __to_end, 25082: extern_type*& __to_next) const; 25082: 25082: virtual result 25082: do_in(state_type& __state, 25082: const extern_type* __from, const extern_type* __from_end, 25082: const extern_type*& __from_next, 25082: intern_type* __to, intern_type* __to_end, 25082: intern_type*& __to_next) const; 25082: 25082: virtual 25082: int do_encoding() const throw(); 25082: 25082: virtual 25082: bool do_always_noconv() const throw(); 25082: 25082: virtual 25082: int do_length(state_type&, const extern_type* __from, 25082: const extern_type* __end, size_t __max) const; 25082: 25082: virtual int 25082: do_max_length() const throw(); 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: template 25082: class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> 25082: { 25082: public: 25082: explicit 25082: codecvt_byname(const char* __s, size_t __refs = 0) 25082: : codecvt<_InternT, _ExternT, _StateT>(__refs) 25082: { 25082: if (__builtin_strcmp(__s, "C") != 0 25082: && __builtin_strcmp(__s, "POSIX") != 0) 25082: { 25082: this->_S_destroy_c_locale(this->_M_c_locale_codecvt); 25082: this->_S_create_c_locale(this->_M_c_locale_codecvt, __s); 25082: } 25082: } 25082: 25082: 25082: explicit 25082: codecvt_byname(const string& __s, size_t __refs = 0) 25082: : codecvt_byname(__s.c_str(), __refs) { } 25082: 25082: 25082: protected: 25082: virtual 25082: ~codecvt_byname() { } 25082: }; 25082: 25082: 25082: template<> 25082: class codecvt_byname 25082: : public codecvt 25082: { 25082: public: 25082: explicit 25082: codecvt_byname(const char*, size_t __refs = 0) 25082: : codecvt(__refs) { } 25082: 25082: explicit 25082: codecvt_byname(const string& __s, size_t __refs = 0) 25082: : codecvt_byname(__s.c_str(), __refs) { } 25082: 25082: protected: 25082: virtual 25082: ~codecvt_byname() { } 25082: }; 25082: 25082: template<> 25082: class codecvt_byname 25082: : public codecvt 25082: { 25082: public: 25082: explicit 25082: codecvt_byname(const char*, size_t __refs = 0) 25082: : codecvt(__refs) { } 25082: 25082: explicit 25082: codecvt_byname(const string& __s, size_t __refs = 0) 25082: : codecvt_byname(__s.c_str(), __refs) { } 25082: 25082: protected: 25082: virtual 25082: ~codecvt_byname() { } 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: extern template class codecvt_byname; 25082: 25082: extern template 25082: const codecvt& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: 25082: extern template class codecvt_byname; 25082: 25082: extern template 25082: const codecvt& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: 25082: 25082: extern template class codecvt_byname; 25082: extern template class codecvt_byname; 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 2014 "/usr/include/c++/8/bits/locale_facets_nonio.h" 2 3 25082: 25082: # 1 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 1 3 25082: # 33 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 3 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: template 25082: struct __use_cache<__moneypunct_cache<_CharT, _Intl> > 25082: { 25082: const __moneypunct_cache<_CharT, _Intl>* 25082: operator() (const locale& __loc) const 25082: { 25082: const size_t __i = moneypunct<_CharT, _Intl>::id._M_id(); 25082: const locale::facet** __caches = __loc._M_impl->_M_caches; 25082: if (!__caches[__i]) 25082: { 25082: __moneypunct_cache<_CharT, _Intl>* __tmp = 0; 25082: try 25082: { 25082: __tmp = new __moneypunct_cache<_CharT, _Intl>; 25082: __tmp->_M_cache(__loc); 25082: } 25082: catch(...) 25082: { 25082: delete __tmp; 25082: throw; 25082: } 25082: __loc._M_impl->_M_install_cache(__tmp, __i); 25082: } 25082: return static_cast< 25082: const __moneypunct_cache<_CharT, _Intl>*>(__caches[__i]); 25082: } 25082: }; 25082: 25082: template 25082: void 25082: __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc) 25082: { 25082: const moneypunct<_CharT, _Intl>& __mp = 25082: use_facet >(__loc); 25082: 25082: _M_decimal_point = __mp.decimal_point(); 25082: _M_thousands_sep = __mp.thousands_sep(); 25082: _M_frac_digits = __mp.frac_digits(); 25082: 25082: char* __grouping = 0; 25082: _CharT* __curr_symbol = 0; 25082: _CharT* __positive_sign = 0; 25082: _CharT* __negative_sign = 0; 25082: try 25082: { 25082: const string& __g = __mp.grouping(); 25082: _M_grouping_size = __g.size(); 25082: __grouping = new char[_M_grouping_size]; 25082: __g.copy(__grouping, _M_grouping_size); 25082: _M_use_grouping = (_M_grouping_size 25082: && static_cast(__grouping[0]) > 0 25082: && (__grouping[0] 25082: != __gnu_cxx::__numeric_traits::__max)); 25082: 25082: const basic_string<_CharT>& __cs = __mp.curr_symbol(); 25082: _M_curr_symbol_size = __cs.size(); 25082: __curr_symbol = new _CharT[_M_curr_symbol_size]; 25082: __cs.copy(__curr_symbol, _M_curr_symbol_size); 25082: 25082: const basic_string<_CharT>& __ps = __mp.positive_sign(); 25082: _M_positive_sign_size = __ps.size(); 25082: __positive_sign = new _CharT[_M_positive_sign_size]; 25082: __ps.copy(__positive_sign, _M_positive_sign_size); 25082: 25082: const basic_string<_CharT>& __ns = __mp.negative_sign(); 25082: _M_negative_sign_size = __ns.size(); 25082: __negative_sign = new _CharT[_M_negative_sign_size]; 25082: __ns.copy(__negative_sign, _M_negative_sign_size); 25082: 25082: _M_pos_format = __mp.pos_format(); 25082: _M_neg_format = __mp.neg_format(); 25082: 25082: const ctype<_CharT>& __ct = use_facet >(__loc); 25082: __ct.widen(money_base::_S_atoms, 25082: money_base::_S_atoms + money_base::_S_end, _M_atoms); 25082: 25082: _M_grouping = __grouping; 25082: _M_curr_symbol = __curr_symbol; 25082: _M_positive_sign = __positive_sign; 25082: _M_negative_sign = __negative_sign; 25082: _M_allocated = true; 25082: } 25082: catch(...) 25082: { 25082: delete [] __grouping; 25082: delete [] __curr_symbol; 25082: delete [] __positive_sign; 25082: delete [] __negative_sign; 25082: throw; 25082: } 25082: } 25082: 25082: namespace __cxx11 { 25082: 25082: template 25082: template 25082: _InIter 25082: money_get<_CharT, _InIter>:: 25082: _M_extract(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, string& __units) const 25082: { 25082: typedef char_traits<_CharT> __traits_type; 25082: typedef typename string_type::size_type size_type; 25082: typedef money_base::part part; 25082: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; 25082: 25082: const locale& __loc = __io._M_getloc(); 25082: const ctype<_CharT>& __ctype = use_facet >(__loc); 25082: 25082: __use_cache<__cache_type> __uc; 25082: const __cache_type* __lc = __uc(__loc); 25082: const char_type* __lit = __lc->_M_atoms; 25082: 25082: 25082: bool __negative = false; 25082: 25082: size_type __sign_size = 0; 25082: 25082: const bool __mandatory_sign = (__lc->_M_positive_sign_size 25082: && __lc->_M_negative_sign_size); 25082: 25082: string __grouping_tmp; 25082: if (__lc->_M_use_grouping) 25082: __grouping_tmp.reserve(32); 25082: 25082: int __last_pos = 0; 25082: 25082: int __n = 0; 25082: 25082: bool __testvalid = true; 25082: 25082: bool __testdecfound = false; 25082: 25082: 25082: string __res; 25082: __res.reserve(32); 25082: 25082: const char_type* __lit_zero = __lit + money_base::_S_zero; 25082: const money_base::pattern __p = __lc->_M_neg_format; 25082: for (int __i = 0; __i < 4 && __testvalid; ++__i) 25082: { 25082: const part __which = static_cast(__p.field[__i]); 25082: switch (__which) 25082: { 25082: case money_base::symbol: 25082: 25082: 25082: 25082: 25082: if (__io.flags() & ios_base::showbase || __sign_size > 1 25082: || __i == 0 25082: || (__i == 1 && (__mandatory_sign 25082: || (static_cast(__p.field[0]) 25082: == money_base::sign) 25082: || (static_cast(__p.field[2]) 25082: == money_base::space))) 25082: || (__i == 2 && ((static_cast(__p.field[3]) 25082: == money_base::value) 25082: || (__mandatory_sign 25082: && (static_cast(__p.field[3]) 25082: == money_base::sign))))) 25082: { 25082: const size_type __len = __lc->_M_curr_symbol_size; 25082: size_type __j = 0; 25082: for (; __beg != __end && __j < __len 25082: && *__beg == __lc->_M_curr_symbol[__j]; 25082: ++__beg, (void)++__j); 25082: if (__j != __len 25082: && (__j || __io.flags() & ios_base::showbase)) 25082: __testvalid = false; 25082: } 25082: break; 25082: case money_base::sign: 25082: 25082: if (__lc->_M_positive_sign_size && __beg != __end 25082: && *__beg == __lc->_M_positive_sign[0]) 25082: { 25082: __sign_size = __lc->_M_positive_sign_size; 25082: ++__beg; 25082: } 25082: else if (__lc->_M_negative_sign_size && __beg != __end 25082: && *__beg == __lc->_M_negative_sign[0]) 25082: { 25082: __negative = true; 25082: __sign_size = __lc->_M_negative_sign_size; 25082: ++__beg; 25082: } 25082: else if (__lc->_M_positive_sign_size 25082: && !__lc->_M_negative_sign_size) 25082: 25082: 25082: __negative = true; 25082: else if (__mandatory_sign) 25082: __testvalid = false; 25082: break; 25082: case money_base::value: 25082: 25082: 25082: for (; __beg != __end; ++__beg) 25082: { 25082: const char_type __c = *__beg; 25082: const char_type* __q = __traits_type::find(__lit_zero, 25082: 10, __c); 25082: if (__q != 0) 25082: { 25082: __res += money_base::_S_atoms[__q - __lit]; 25082: ++__n; 25082: } 25082: else if (__c == __lc->_M_decimal_point 25082: && !__testdecfound) 25082: { 25082: if (__lc->_M_frac_digits <= 0) 25082: break; 25082: 25082: __last_pos = __n; 25082: __n = 0; 25082: __testdecfound = true; 25082: } 25082: else if (__lc->_M_use_grouping 25082: && __c == __lc->_M_thousands_sep 25082: && !__testdecfound) 25082: { 25082: if (__n) 25082: { 25082: 25082: __grouping_tmp += static_cast(__n); 25082: __n = 0; 25082: } 25082: else 25082: { 25082: __testvalid = false; 25082: break; 25082: } 25082: } 25082: else 25082: break; 25082: } 25082: if (__res.empty()) 25082: __testvalid = false; 25082: break; 25082: case money_base::space: 25082: 25082: if (__beg != __end && __ctype.is(ctype_base::space, *__beg)) 25082: ++__beg; 25082: else 25082: __testvalid = false; 25082: 25082: case money_base::none: 25082: 25082: if (__i != 3) 25082: for (; __beg != __end 25082: && __ctype.is(ctype_base::space, *__beg); ++__beg); 25082: break; 25082: } 25082: } 25082: 25082: 25082: if (__sign_size > 1 && __testvalid) 25082: { 25082: const char_type* __sign = __negative ? __lc->_M_negative_sign 25082: : __lc->_M_positive_sign; 25082: size_type __i = 1; 25082: for (; __beg != __end && __i < __sign_size 25082: && *__beg == __sign[__i]; ++__beg, (void)++__i); 25082: 25082: if (__i != __sign_size) 25082: __testvalid = false; 25082: } 25082: 25082: if (__testvalid) 25082: { 25082: 25082: if (__res.size() > 1) 25082: { 25082: const size_type __first = __res.find_first_not_of('0'); 25082: const bool __only_zeros = __first == string::npos; 25082: if (__first) 25082: __res.erase(0, __only_zeros ? __res.size() - 1 : __first); 25082: } 25082: 25082: 25082: if (__negative && __res[0] != '0') 25082: __res.insert(__res.begin(), '-'); 25082: 25082: 25082: if (__grouping_tmp.size()) 25082: { 25082: 25082: __grouping_tmp += static_cast(__testdecfound ? __last_pos 25082: : __n); 25082: if (!std::__verify_grouping(__lc->_M_grouping, 25082: __lc->_M_grouping_size, 25082: __grouping_tmp)) 25082: __err |= ios_base::failbit; 25082: } 25082: 25082: 25082: if (__testdecfound && __n != __lc->_M_frac_digits) 25082: __testvalid = false; 25082: } 25082: 25082: 25082: if (!__testvalid) 25082: __err |= ios_base::failbit; 25082: else 25082: __units.swap(__res); 25082: 25082: 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: # 368 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 3 25082: template 25082: _InIter 25082: money_get<_CharT, _InIter>:: 25082: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, 25082: ios_base::iostate& __err, long double& __units) const 25082: { 25082: string __str; 25082: __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) 25082: : _M_extract(__beg, __end, __io, __err, __str); 25082: std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale()); 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: money_get<_CharT, _InIter>:: 25082: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, 25082: ios_base::iostate& __err, string_type& __digits) const 25082: { 25082: typedef typename string::size_type size_type; 25082: 25082: const locale& __loc = __io._M_getloc(); 25082: const ctype<_CharT>& __ctype = use_facet >(__loc); 25082: 25082: string __str; 25082: __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) 25082: : _M_extract(__beg, __end, __io, __err, __str); 25082: const size_type __len = __str.size(); 25082: if (__len) 25082: { 25082: __digits.resize(__len); 25082: __ctype.widen(__str.data(), __str.data() + __len, &__digits[0]); 25082: } 25082: return __beg; 25082: } 25082: 25082: template 25082: template 25082: _OutIter 25082: money_put<_CharT, _OutIter>:: 25082: _M_insert(iter_type __s, ios_base& __io, char_type __fill, 25082: const string_type& __digits) const 25082: { 25082: typedef typename string_type::size_type size_type; 25082: typedef money_base::part part; 25082: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; 25082: 25082: const locale& __loc = __io._M_getloc(); 25082: const ctype<_CharT>& __ctype = use_facet >(__loc); 25082: 25082: __use_cache<__cache_type> __uc; 25082: const __cache_type* __lc = __uc(__loc); 25082: const char_type* __lit = __lc->_M_atoms; 25082: 25082: 25082: 25082: const char_type* __beg = __digits.data(); 25082: 25082: money_base::pattern __p; 25082: const char_type* __sign; 25082: size_type __sign_size; 25082: if (!(*__beg == __lit[money_base::_S_minus])) 25082: { 25082: __p = __lc->_M_pos_format; 25082: __sign = __lc->_M_positive_sign; 25082: __sign_size = __lc->_M_positive_sign_size; 25082: } 25082: else 25082: { 25082: __p = __lc->_M_neg_format; 25082: __sign = __lc->_M_negative_sign; 25082: __sign_size = __lc->_M_negative_sign_size; 25082: if (__digits.size()) 25082: ++__beg; 25082: } 25082: 25082: 25082: size_type __len = __ctype.scan_not(ctype_base::digit, __beg, 25082: __beg + __digits.size()) - __beg; 25082: if (__len) 25082: { 25082: 25082: 25082: 25082: string_type __value; 25082: __value.reserve(2 * __len); 25082: 25082: 25082: 25082: long __paddec = __len - __lc->_M_frac_digits; 25082: if (__paddec > 0) 25082: { 25082: if (__lc->_M_frac_digits < 0) 25082: __paddec = __len; 25082: if (__lc->_M_grouping_size) 25082: { 25082: __value.assign(2 * __paddec, char_type()); 25082: _CharT* __vend = 25082: std::__add_grouping(&__value[0], __lc->_M_thousands_sep, 25082: __lc->_M_grouping, 25082: __lc->_M_grouping_size, 25082: __beg, __beg + __paddec); 25082: __value.erase(__vend - &__value[0]); 25082: } 25082: else 25082: __value.assign(__beg, __paddec); 25082: } 25082: 25082: 25082: if (__lc->_M_frac_digits > 0) 25082: { 25082: __value += __lc->_M_decimal_point; 25082: if (__paddec >= 0) 25082: __value.append(__beg + __paddec, __lc->_M_frac_digits); 25082: else 25082: { 25082: 25082: __value.append(-__paddec, __lit[money_base::_S_zero]); 25082: __value.append(__beg, __len); 25082: } 25082: } 25082: 25082: 25082: const ios_base::fmtflags __f = __io.flags() 25082: & ios_base::adjustfield; 25082: __len = __value.size() + __sign_size; 25082: __len += ((__io.flags() & ios_base::showbase) 25082: ? __lc->_M_curr_symbol_size : 0); 25082: 25082: string_type __res; 25082: __res.reserve(2 * __len); 25082: 25082: const size_type __width = static_cast(__io.width()); 25082: const bool __testipad = (__f == ios_base::internal 25082: && __len < __width); 25082: 25082: for (int __i = 0; __i < 4; ++__i) 25082: { 25082: const part __which = static_cast(__p.field[__i]); 25082: switch (__which) 25082: { 25082: case money_base::symbol: 25082: if (__io.flags() & ios_base::showbase) 25082: __res.append(__lc->_M_curr_symbol, 25082: __lc->_M_curr_symbol_size); 25082: break; 25082: case money_base::sign: 25082: 25082: 25082: 25082: if (__sign_size) 25082: __res += __sign[0]; 25082: break; 25082: case money_base::value: 25082: __res += __value; 25082: break; 25082: case money_base::space: 25082: 25082: 25082: 25082: if (__testipad) 25082: __res.append(__width - __len, __fill); 25082: else 25082: __res += __fill; 25082: break; 25082: case money_base::none: 25082: if (__testipad) 25082: __res.append(__width - __len, __fill); 25082: break; 25082: } 25082: } 25082: 25082: 25082: if (__sign_size > 1) 25082: __res.append(__sign + 1, __sign_size - 1); 25082: 25082: 25082: __len = __res.size(); 25082: if (__width > __len) 25082: { 25082: if (__f == ios_base::left) 25082: 25082: __res.append(__width - __len, __fill); 25082: else 25082: 25082: __res.insert(0, __width - __len, __fill); 25082: __len = __width; 25082: } 25082: 25082: 25082: __s = std::__write(__s, __res.data(), __len); 25082: } 25082: __io.width(0); 25082: return __s; 25082: } 25082: # 574 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 3 25082: template 25082: _OutIter 25082: money_put<_CharT, _OutIter>:: 25082: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 25082: long double __units) const 25082: { 25082: const locale __loc = __io.getloc(); 25082: const ctype<_CharT>& __ctype = use_facet >(__loc); 25082: 25082: 25082: int __cs_size = 64; 25082: char* __cs = static_cast(__builtin_alloca(__cs_size)); 25082: 25082: 25082: int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 25082: "%.*Lf", 0, __units); 25082: 25082: if (__len >= __cs_size) 25082: { 25082: __cs_size = __len + 1; 25082: __cs = static_cast(__builtin_alloca(__cs_size)); 25082: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 25082: "%.*Lf", 0, __units); 25082: } 25082: # 606 "/usr/include/c++/8/bits/locale_facets_nonio.tcc" 3 25082: string_type __digits(__len, char_type()); 25082: __ctype.widen(__cs, __cs + __len, &__digits[0]); 25082: return __intl ? _M_insert(__s, __io, __fill, __digits) 25082: : _M_insert(__s, __io, __fill, __digits); 25082: } 25082: 25082: template 25082: _OutIter 25082: money_put<_CharT, _OutIter>:: 25082: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 25082: const string_type& __digits) const 25082: { return __intl ? _M_insert(__s, __io, __fill, __digits) 25082: : _M_insert(__s, __io, __fill, __digits); } 25082: 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: time_base::dateorder 25082: time_get<_CharT, _InIter>::do_date_order() const 25082: { return time_base::no_order; } 25082: 25082: 25082: 25082: template 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm, 25082: const _CharT* __format) const 25082: { 25082: const locale& __loc = __io._M_getloc(); 25082: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 25082: const ctype<_CharT>& __ctype = use_facet >(__loc); 25082: const size_t __len = char_traits<_CharT>::length(__format); 25082: 25082: ios_base::iostate __tmperr = ios_base::goodbit; 25082: size_t __i = 0; 25082: for (; __beg != __end && __i < __len && !__tmperr; ++__i) 25082: { 25082: if (__ctype.narrow(__format[__i], 0) == '%') 25082: { 25082: 25082: char __c = __ctype.narrow(__format[++__i], 0); 25082: int __mem = 0; 25082: if (__c == 'E' || __c == 'O') 25082: __c = __ctype.narrow(__format[++__i], 0); 25082: switch (__c) 25082: { 25082: const char* __cs; 25082: _CharT __wcs[10]; 25082: case 'a': 25082: 25082: const char_type* __days1[7]; 25082: __tp._M_days_abbreviated(__days1); 25082: __beg = _M_extract_name(__beg, __end, __mem, __days1, 25082: 7, __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_wday = __mem; 25082: break; 25082: case 'A': 25082: 25082: const char_type* __days2[7]; 25082: __tp._M_days(__days2); 25082: __beg = _M_extract_name(__beg, __end, __mem, __days2, 25082: 7, __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_wday = __mem; 25082: break; 25082: case 'h': 25082: case 'b': 25082: 25082: const char_type* __months1[12]; 25082: __tp._M_months_abbreviated(__months1); 25082: __beg = _M_extract_name(__beg, __end, __mem, 25082: __months1, 12, __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_mon = __mem; 25082: break; 25082: case 'B': 25082: 25082: const char_type* __months2[12]; 25082: __tp._M_months(__months2); 25082: __beg = _M_extract_name(__beg, __end, __mem, 25082: __months2, 12, __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_mon = __mem; 25082: break; 25082: case 'c': 25082: 25082: const char_type* __dt[2]; 25082: __tp._M_date_time_formats(__dt); 25082: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 25082: __tm, __dt[0]); 25082: break; 25082: case 'd': 25082: 25082: __beg = _M_extract_num(__beg, __end, __mem, 1, 31, 2, 25082: __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_mday = __mem; 25082: break; 25082: case 'e': 25082: 25082: 25082: if (__ctype.is(ctype_base::space, *__beg)) 25082: __beg = _M_extract_num(++__beg, __end, __mem, 1, 9, 25082: 1, __io, __tmperr); 25082: else 25082: __beg = _M_extract_num(__beg, __end, __mem, 10, 31, 25082: 2, __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_mday = __mem; 25082: break; 25082: case 'D': 25082: 25082: __cs = "%m/%d/%y"; 25082: __ctype.widen(__cs, __cs + 9, __wcs); 25082: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 25082: __tm, __wcs); 25082: break; 25082: case 'H': 25082: 25082: __beg = _M_extract_num(__beg, __end, __mem, 0, 23, 2, 25082: __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_hour = __mem; 25082: break; 25082: case 'I': 25082: 25082: __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, 25082: __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_hour = __mem; 25082: break; 25082: case 'm': 25082: 25082: __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, 25082: __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_mon = __mem - 1; 25082: break; 25082: case 'M': 25082: 25082: __beg = _M_extract_num(__beg, __end, __mem, 0, 59, 2, 25082: __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_min = __mem; 25082: break; 25082: case 'n': 25082: if (__ctype.narrow(*__beg, 0) == '\n') 25082: ++__beg; 25082: else 25082: __tmperr |= ios_base::failbit; 25082: break; 25082: case 'R': 25082: 25082: __cs = "%H:%M"; 25082: __ctype.widen(__cs, __cs + 6, __wcs); 25082: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 25082: __tm, __wcs); 25082: break; 25082: case 'S': 25082: 25082: 25082: 25082: __beg = _M_extract_num(__beg, __end, __mem, 0, 60, 2, 25082: 25082: 25082: 25082: __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_sec = __mem; 25082: break; 25082: case 't': 25082: if (__ctype.narrow(*__beg, 0) == '\t') 25082: ++__beg; 25082: else 25082: __tmperr |= ios_base::failbit; 25082: break; 25082: case 'T': 25082: 25082: __cs = "%H:%M:%S"; 25082: __ctype.widen(__cs, __cs + 9, __wcs); 25082: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 25082: __tm, __wcs); 25082: break; 25082: case 'x': 25082: 25082: const char_type* __dates[2]; 25082: __tp._M_date_formats(__dates); 25082: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 25082: __tm, __dates[0]); 25082: break; 25082: case 'X': 25082: 25082: const char_type* __times[2]; 25082: __tp._M_time_formats(__times); 25082: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 25082: __tm, __times[0]); 25082: break; 25082: case 'y': 25082: case 'C': 25082: 25082: case 'Y': 25082: 25082: 25082: 25082: 25082: __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4, 25082: __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_year = __mem < 0 ? __mem + 100 : __mem - 1900; 25082: break; 25082: case 'Z': 25082: 25082: if (__ctype.is(ctype_base::upper, *__beg)) 25082: { 25082: int __tmp; 25082: __beg = _M_extract_name(__beg, __end, __tmp, 25082: __timepunct_cache<_CharT>::_S_timezones, 25082: 14, __io, __tmperr); 25082: 25082: 25082: if (__beg != __end && !__tmperr && __tmp == 0 25082: && (*__beg == __ctype.widen('-') 25082: || *__beg == __ctype.widen('+'))) 25082: { 25082: __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2, 25082: __io, __tmperr); 25082: __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2, 25082: __io, __tmperr); 25082: } 25082: } 25082: else 25082: __tmperr |= ios_base::failbit; 25082: break; 25082: default: 25082: 25082: __tmperr |= ios_base::failbit; 25082: } 25082: } 25082: else 25082: { 25082: 25082: if (__format[__i] == *__beg) 25082: ++__beg; 25082: else 25082: __tmperr |= ios_base::failbit; 25082: } 25082: } 25082: 25082: if (__tmperr || __i != __len) 25082: __err |= ios_base::failbit; 25082: 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: _M_extract_num(iter_type __beg, iter_type __end, int& __member, 25082: int __min, int __max, size_t __len, 25082: ios_base& __io, ios_base::iostate& __err) const 25082: { 25082: const locale& __loc = __io._M_getloc(); 25082: const ctype<_CharT>& __ctype = use_facet >(__loc); 25082: 25082: 25082: int __mult = __len == 2 ? 10 : (__len == 4 ? 1000 : 1); 25082: 25082: ++__min; 25082: size_t __i = 0; 25082: int __value = 0; 25082: for (; __beg != __end && __i < __len; ++__beg, (void)++__i) 25082: { 25082: const char __c = __ctype.narrow(*__beg, '*'); 25082: if (__c >= '0' && __c <= '9') 25082: { 25082: __value = __value * 10 + (__c - '0'); 25082: const int __valuec = __value * __mult; 25082: if (__valuec > __max || __valuec + __mult < __min) 25082: break; 25082: __mult /= 10; 25082: } 25082: else 25082: break; 25082: } 25082: if (__i == __len) 25082: __member = __value; 25082: 25082: else if (__len == 4 && __i == 2) 25082: __member = __value - 100; 25082: else 25082: __err |= ios_base::failbit; 25082: 25082: return __beg; 25082: } 25082: 25082: 25082: 25082: template 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: _M_extract_name(iter_type __beg, iter_type __end, int& __member, 25082: const _CharT** __names, size_t __indexlen, 25082: ios_base& __io, ios_base::iostate& __err) const 25082: { 25082: typedef char_traits<_CharT> __traits_type; 25082: const locale& __loc = __io._M_getloc(); 25082: const ctype<_CharT>& __ctype = use_facet >(__loc); 25082: 25082: int* __matches = static_cast(__builtin_alloca(sizeof(int) 25082: * __indexlen)); 25082: size_t __nmatches = 0; 25082: size_t __pos = 0; 25082: bool __testvalid = true; 25082: const char_type* __name; 25082: 25082: 25082: 25082: 25082: 25082: if (__beg != __end) 25082: { 25082: const char_type __c = *__beg; 25082: for (size_t __i1 = 0; __i1 < __indexlen; ++__i1) 25082: if (__c == __names[__i1][0] 25082: || __c == __ctype.toupper(__names[__i1][0])) 25082: __matches[__nmatches++] = __i1; 25082: } 25082: 25082: while (__nmatches > 1) 25082: { 25082: 25082: size_t __minlen = __traits_type::length(__names[__matches[0]]); 25082: for (size_t __i2 = 1; __i2 < __nmatches; ++__i2) 25082: __minlen = std::min(__minlen, 25082: __traits_type::length(__names[__matches[__i2]])); 25082: ++__beg; 25082: ++__pos; 25082: if (__pos < __minlen && __beg != __end) 25082: for (size_t __i3 = 0; __i3 < __nmatches;) 25082: { 25082: __name = __names[__matches[__i3]]; 25082: if (!(__name[__pos] == *__beg)) 25082: __matches[__i3] = __matches[--__nmatches]; 25082: else 25082: ++__i3; 25082: } 25082: else 25082: break; 25082: } 25082: 25082: if (__nmatches == 1) 25082: { 25082: 25082: ++__beg; 25082: ++__pos; 25082: __name = __names[__matches[0]]; 25082: const size_t __len = __traits_type::length(__name); 25082: while (__pos < __len && __beg != __end && __name[__pos] == *__beg) 25082: ++__beg, (void)++__pos; 25082: 25082: if (__len == __pos) 25082: __member = __matches[0]; 25082: else 25082: __testvalid = false; 25082: } 25082: else 25082: __testvalid = false; 25082: if (!__testvalid) 25082: __err |= ios_base::failbit; 25082: 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member, 25082: const _CharT** __names, size_t __indexlen, 25082: ios_base& __io, ios_base::iostate& __err) const 25082: { 25082: typedef char_traits<_CharT> __traits_type; 25082: const locale& __loc = __io._M_getloc(); 25082: const ctype<_CharT>& __ctype = use_facet >(__loc); 25082: 25082: int* __matches = static_cast(__builtin_alloca(2 * sizeof(int) 25082: * __indexlen)); 25082: size_t __nmatches = 0; 25082: size_t* __matches_lengths = 0; 25082: size_t __pos = 0; 25082: 25082: if (__beg != __end) 25082: { 25082: const char_type __c = *__beg; 25082: for (size_t __i = 0; __i < 2 * __indexlen; ++__i) 25082: if (__c == __names[__i][0] 25082: || __c == __ctype.toupper(__names[__i][0])) 25082: __matches[__nmatches++] = __i; 25082: } 25082: 25082: if (__nmatches) 25082: { 25082: ++__beg; 25082: ++__pos; 25082: 25082: __matches_lengths 25082: = static_cast(__builtin_alloca(sizeof(size_t) 25082: * __nmatches)); 25082: for (size_t __i = 0; __i < __nmatches; ++__i) 25082: __matches_lengths[__i] 25082: = __traits_type::length(__names[__matches[__i]]); 25082: } 25082: 25082: for (; __beg != __end; ++__beg, (void)++__pos) 25082: { 25082: size_t __nskipped = 0; 25082: const char_type __c = *__beg; 25082: for (size_t __i = 0; __i < __nmatches;) 25082: { 25082: const char_type* __name = __names[__matches[__i]]; 25082: if (__pos >= __matches_lengths[__i]) 25082: ++__nskipped, ++__i; 25082: else if (!(__name[__pos] == __c)) 25082: { 25082: --__nmatches; 25082: __matches[__i] = __matches[__nmatches]; 25082: __matches_lengths[__i] = __matches_lengths[__nmatches]; 25082: } 25082: else 25082: ++__i; 25082: } 25082: if (__nskipped == __nmatches) 25082: break; 25082: } 25082: 25082: if ((__nmatches == 1 && __matches_lengths[0] == __pos) 25082: || (__nmatches == 2 && (__matches_lengths[0] == __pos 25082: || __matches_lengths[1] == __pos))) 25082: __member = (__matches[0] >= __indexlen 25082: ? __matches[0] - __indexlen : __matches[0]); 25082: else 25082: __err |= ios_base::failbit; 25082: 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: do_get_time(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const 25082: { 25082: const locale& __loc = __io._M_getloc(); 25082: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 25082: const char_type* __times[2]; 25082: __tp._M_time_formats(__times); 25082: __beg = _M_extract_via_format(__beg, __end, __io, __err, 25082: __tm, __times[0]); 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: do_get_date(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const 25082: { 25082: const locale& __loc = __io._M_getloc(); 25082: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 25082: const char_type* __dates[2]; 25082: __tp._M_date_formats(__dates); 25082: __beg = _M_extract_via_format(__beg, __end, __io, __err, 25082: __tm, __dates[0]); 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const 25082: { 25082: const locale& __loc = __io._M_getloc(); 25082: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 25082: const char_type* __days[14]; 25082: __tp._M_days_abbreviated(__days); 25082: __tp._M_days(__days + 7); 25082: int __tmpwday; 25082: ios_base::iostate __tmperr = ios_base::goodbit; 25082: 25082: __beg = _M_extract_wday_or_month(__beg, __end, __tmpwday, __days, 7, 25082: __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_wday = __tmpwday; 25082: else 25082: __err |= ios_base::failbit; 25082: 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: do_get_monthname(iter_type __beg, iter_type __end, 25082: ios_base& __io, ios_base::iostate& __err, tm* __tm) const 25082: { 25082: const locale& __loc = __io._M_getloc(); 25082: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 25082: const char_type* __months[24]; 25082: __tp._M_months_abbreviated(__months); 25082: __tp._M_months(__months + 12); 25082: int __tmpmon; 25082: ios_base::iostate __tmperr = ios_base::goodbit; 25082: 25082: __beg = _M_extract_wday_or_month(__beg, __end, __tmpmon, __months, 12, 25082: __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_mon = __tmpmon; 25082: else 25082: __err |= ios_base::failbit; 25082: 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: 25082: template 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: do_get_year(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm) const 25082: { 25082: int __tmpyear; 25082: ios_base::iostate __tmperr = ios_base::goodbit; 25082: 25082: __beg = _M_extract_num(__beg, __end, __tmpyear, 0, 9999, 4, 25082: __io, __tmperr); 25082: if (!__tmperr) 25082: __tm->tm_year = __tmpyear < 0 ? __tmpyear + 100 : __tmpyear - 1900; 25082: else 25082: __err |= ios_base::failbit; 25082: 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: 25082: 25082: template 25082: inline 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: get(iter_type __s, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm, const char_type* __fmt, 25082: const char_type* __fmtend) const 25082: { 25082: const locale& __loc = __io._M_getloc(); 25082: ctype<_CharT> const& __ctype = use_facet >(__loc); 25082: __err = ios_base::goodbit; 25082: while (__fmt != __fmtend && 25082: __err == ios_base::goodbit) 25082: { 25082: if (__s == __end) 25082: { 25082: __err = ios_base::eofbit | ios_base::failbit; 25082: break; 25082: } 25082: else if (__ctype.narrow(*__fmt, 0) == '%') 25082: { 25082: char __format; 25082: char __mod = 0; 25082: if (++__fmt == __fmtend) 25082: { 25082: __err = ios_base::failbit; 25082: break; 25082: } 25082: const char __c = __ctype.narrow(*__fmt, 0); 25082: if (__c != 'E' && __c != 'O') 25082: __format = __c; 25082: else if (++__fmt != __fmtend) 25082: { 25082: __mod = __c; 25082: __format = __ctype.narrow(*__fmt, 0); 25082: } 25082: else 25082: { 25082: __err = ios_base::failbit; 25082: break; 25082: } 25082: __s = this->do_get(__s, __end, __io, __err, __tm, __format, 25082: __mod); 25082: ++__fmt; 25082: } 25082: else if (__ctype.is(ctype_base::space, *__fmt)) 25082: { 25082: ++__fmt; 25082: while (__fmt != __fmtend && 25082: __ctype.is(ctype_base::space, *__fmt)) 25082: ++__fmt; 25082: 25082: while (__s != __end && 25082: __ctype.is(ctype_base::space, *__s)) 25082: ++__s; 25082: } 25082: 25082: else if (__ctype.tolower(*__s) == __ctype.tolower(*__fmt) || 25082: __ctype.toupper(*__s) == __ctype.toupper(*__fmt)) 25082: { 25082: ++__s; 25082: ++__fmt; 25082: } 25082: else 25082: { 25082: __err = ios_base::failbit; 25082: break; 25082: } 25082: } 25082: return __s; 25082: } 25082: 25082: template 25082: inline 25082: _InIter 25082: time_get<_CharT, _InIter>:: 25082: do_get(iter_type __beg, iter_type __end, ios_base& __io, 25082: ios_base::iostate& __err, tm* __tm, 25082: char __format, char __mod) const 25082: { 25082: const locale& __loc = __io._M_getloc(); 25082: ctype<_CharT> const& __ctype = use_facet >(__loc); 25082: __err = ios_base::goodbit; 25082: 25082: char_type __fmt[4]; 25082: __fmt[0] = __ctype.widen('%'); 25082: if (!__mod) 25082: { 25082: __fmt[1] = __format; 25082: __fmt[2] = char_type(); 25082: } 25082: else 25082: { 25082: __fmt[1] = __mod; 25082: __fmt[2] = __format; 25082: __fmt[3] = char_type(); 25082: } 25082: 25082: __beg = _M_extract_via_format(__beg, __end, __io, __err, __tm, __fmt); 25082: if (__beg == __end) 25082: __err |= ios_base::eofbit; 25082: return __beg; 25082: } 25082: 25082: 25082: 25082: template 25082: _OutIter 25082: time_put<_CharT, _OutIter>:: 25082: put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, 25082: const _CharT* __beg, const _CharT* __end) const 25082: { 25082: const locale& __loc = __io._M_getloc(); 25082: ctype<_CharT> const& __ctype = use_facet >(__loc); 25082: for (; __beg != __end; ++__beg) 25082: if (__ctype.narrow(*__beg, 0) != '%') 25082: { 25082: *__s = *__beg; 25082: ++__s; 25082: } 25082: else if (++__beg != __end) 25082: { 25082: char __format; 25082: char __mod = 0; 25082: const char __c = __ctype.narrow(*__beg, 0); 25082: if (__c != 'E' && __c != 'O') 25082: __format = __c; 25082: else if (++__beg != __end) 25082: { 25082: __mod = __c; 25082: __format = __ctype.narrow(*__beg, 0); 25082: } 25082: else 25082: break; 25082: __s = this->do_put(__s, __io, __fill, __tm, __format, __mod); 25082: } 25082: else 25082: break; 25082: return __s; 25082: } 25082: 25082: template 25082: _OutIter 25082: time_put<_CharT, _OutIter>:: 25082: do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm, 25082: char __format, char __mod) const 25082: { 25082: const locale& __loc = __io._M_getloc(); 25082: ctype<_CharT> const& __ctype = use_facet >(__loc); 25082: __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc); 25082: 25082: 25082: 25082: const size_t __maxlen = 128; 25082: char_type __res[__maxlen]; 25082: 25082: 25082: 25082: 25082: 25082: 25082: char_type __fmt[4]; 25082: __fmt[0] = __ctype.widen('%'); 25082: if (!__mod) 25082: { 25082: __fmt[1] = __format; 25082: __fmt[2] = char_type(); 25082: } 25082: else 25082: { 25082: __fmt[1] = __mod; 25082: __fmt[2] = __format; 25082: __fmt[3] = char_type(); 25082: } 25082: 25082: __tp._M_put(__res, __maxlen, __fmt, __tm); 25082: 25082: 25082: return std::__write(__s, __res, char_traits::length(__res)); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: extern template class moneypunct; 25082: extern template class moneypunct; 25082: extern template class moneypunct_byname; 25082: extern template class moneypunct_byname; 25082: extern template class __cxx11:: money_get; 25082: extern template class __cxx11:: money_put; 25082: extern template class __timepunct; 25082: extern template class time_put; 25082: extern template class time_put_byname; 25082: extern template class time_get; 25082: extern template class time_get_byname; 25082: extern template class messages; 25082: extern template class messages_byname; 25082: 25082: extern template 25082: const moneypunct& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const moneypunct& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const money_put& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const money_get& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const __timepunct& 25082: use_facet<__timepunct >(const locale&); 25082: 25082: extern template 25082: const time_put& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const time_get& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const messages& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet<__timepunct >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: 25082: extern template class moneypunct; 25082: extern template class moneypunct; 25082: extern template class moneypunct_byname; 25082: extern template class moneypunct_byname; 25082: extern template class __cxx11:: money_get; 25082: extern template class __cxx11:: money_put; 25082: extern template class __timepunct; 25082: extern template class time_put; 25082: extern template class time_put_byname; 25082: extern template class time_get; 25082: extern template class time_get_byname; 25082: extern template class messages; 25082: extern template class messages_byname; 25082: 25082: extern template 25082: const moneypunct& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const moneypunct& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const money_put& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const money_get& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const __timepunct& 25082: use_facet<__timepunct >(const locale&); 25082: 25082: extern template 25082: const time_put& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const time_get& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: const messages& 25082: use_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet<__timepunct >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: extern template 25082: bool 25082: has_facet >(const locale&); 25082: 25082: 25082: 25082: 25082: } 25082: # 2016 "/usr/include/c++/8/bits/locale_facets_nonio.h" 2 3 25082: # 42 "/usr/include/c++/8/locale" 2 3 25082: 25082: # 1 "/usr/include/c++/8/bits/locale_conv.h" 1 3 25082: # 43 "/usr/include/c++/8/bits/locale_conv.h" 3 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: bool 25082: __do_str_codecvt(const _InChar* __first, const _InChar* __last, 25082: _OutStr& __outstr, const _Codecvt& __cvt, _State& __state, 25082: size_t& __count, _Fn __fn) 25082: { 25082: if (__first == __last) 25082: { 25082: __outstr.clear(); 25082: __count = 0; 25082: return true; 25082: } 25082: 25082: size_t __outchars = 0; 25082: auto __next = __first; 25082: const auto __maxlen = __cvt.max_length() + 1; 25082: 25082: codecvt_base::result __result; 25082: do 25082: { 25082: __outstr.resize(__outstr.size() + (__last - __next) * __maxlen); 25082: auto __outnext = &__outstr.front() + __outchars; 25082: auto const __outlast = &__outstr.back() + 1; 25082: __result = (__cvt.*__fn)(__state, __next, __last, __next, 25082: __outnext, __outlast, __outnext); 25082: __outchars = __outnext - &__outstr.front(); 25082: } 25082: while (__result == codecvt_base::partial && __next != __last 25082: && (__outstr.size() - __outchars) < __maxlen); 25082: 25082: if (__result == codecvt_base::error) 25082: { 25082: __count = __next - __first; 25082: return false; 25082: } 25082: 25082: if (__result == codecvt_base::noconv) 25082: { 25082: __outstr.assign(__first, __last); 25082: __count = __last - __first; 25082: } 25082: else 25082: { 25082: __outstr.resize(__outchars); 25082: __count = __next - __first; 25082: } 25082: 25082: return true; 25082: } 25082: 25082: 25082: template 25082: inline bool 25082: __str_codecvt_in(const char* __first, const char* __last, 25082: basic_string<_CharT, _Traits, _Alloc>& __outstr, 25082: const codecvt<_CharT, char, _State>& __cvt, 25082: _State& __state, size_t& __count) 25082: { 25082: using _Codecvt = codecvt<_CharT, char, _State>; 25082: using _ConvFn 25082: = codecvt_base::result 25082: (_Codecvt::*)(_State&, const char*, const char*, const char*&, 25082: _CharT*, _CharT*, _CharT*&) const; 25082: _ConvFn __fn = &codecvt<_CharT, char, _State>::in; 25082: return __do_str_codecvt(__first, __last, __outstr, __cvt, __state, 25082: __count, __fn); 25082: } 25082: 25082: template 25082: inline bool 25082: __str_codecvt_in(const char* __first, const char* __last, 25082: basic_string<_CharT, _Traits, _Alloc>& __outstr, 25082: const codecvt<_CharT, char, _State>& __cvt) 25082: { 25082: _State __state = {}; 25082: size_t __n; 25082: return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n); 25082: } 25082: 25082: 25082: template 25082: inline bool 25082: __str_codecvt_out(const _CharT* __first, const _CharT* __last, 25082: basic_string& __outstr, 25082: const codecvt<_CharT, char, _State>& __cvt, 25082: _State& __state, size_t& __count) 25082: { 25082: using _Codecvt = codecvt<_CharT, char, _State>; 25082: using _ConvFn 25082: = codecvt_base::result 25082: (_Codecvt::*)(_State&, const _CharT*, const _CharT*, const _CharT*&, 25082: char*, char*, char*&) const; 25082: _ConvFn __fn = &codecvt<_CharT, char, _State>::out; 25082: return __do_str_codecvt(__first, __last, __outstr, __cvt, __state, 25082: __count, __fn); 25082: } 25082: 25082: template 25082: inline bool 25082: __str_codecvt_out(const _CharT* __first, const _CharT* __last, 25082: basic_string& __outstr, 25082: const codecvt<_CharT, char, _State>& __cvt) 25082: { 25082: _State __state = {}; 25082: size_t __n; 25082: return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n); 25082: } 25082: 25082: 25082: 25082: namespace __cxx11 { 25082: 25082: 25082: template, 25082: typename _Byte_alloc = allocator> 25082: class wstring_convert 25082: { 25082: public: 25082: typedef basic_string, _Byte_alloc> byte_string; 25082: typedef basic_string<_Elem, char_traits<_Elem>, _Wide_alloc> wide_string; 25082: typedef typename _Codecvt::state_type state_type; 25082: typedef typename wide_string::traits_type::int_type int_type; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: wstring_convert(_Codecvt* __pcvt = new _Codecvt()) : _M_cvt(__pcvt) 25082: { 25082: if (!_M_cvt) 25082: __throw_logic_error("wstring_convert"); 25082: } 25082: # 198 "/usr/include/c++/8/bits/locale_conv.h" 3 25082: wstring_convert(_Codecvt* __pcvt, state_type __state) 25082: : _M_cvt(__pcvt), _M_state(__state), _M_with_cvtstate(true) 25082: { 25082: if (!_M_cvt) 25082: __throw_logic_error("wstring_convert"); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: explicit 25082: wstring_convert(const byte_string& __byte_err, 25082: const wide_string& __wide_err = wide_string()) 25082: : _M_cvt(new _Codecvt), 25082: _M_byte_err_string(__byte_err), _M_wide_err_string(__wide_err), 25082: _M_with_strings(true) 25082: { 25082: if (!_M_cvt) 25082: __throw_logic_error("wstring_convert"); 25082: } 25082: 25082: ~wstring_convert() = default; 25082: 25082: 25082: 25082: wstring_convert(const wstring_convert&) = delete; 25082: wstring_convert& operator=(const wstring_convert&) = delete; 25082: 25082: 25082: wide_string 25082: from_bytes(char __byte) 25082: { 25082: char __bytes[2] = { __byte }; 25082: return from_bytes(__bytes, __bytes+1); 25082: } 25082: 25082: wide_string 25082: from_bytes(const char* __ptr) 25082: { return from_bytes(__ptr, __ptr+char_traits::length(__ptr)); } 25082: 25082: wide_string 25082: from_bytes(const byte_string& __str) 25082: { 25082: auto __ptr = __str.data(); 25082: return from_bytes(__ptr, __ptr + __str.size()); 25082: } 25082: 25082: wide_string 25082: from_bytes(const char* __first, const char* __last) 25082: { 25082: if (!_M_with_cvtstate) 25082: _M_state = state_type(); 25082: wide_string __out{ _M_wide_err_string.get_allocator() }; 25082: if (__str_codecvt_in(__first, __last, __out, *_M_cvt, _M_state, 25082: _M_count)) 25082: return __out; 25082: if (_M_with_strings) 25082: return _M_wide_err_string; 25082: __throw_range_error("wstring_convert::from_bytes"); 25082: } 25082: 25082: 25082: 25082: byte_string 25082: to_bytes(_Elem __wchar) 25082: { 25082: _Elem __wchars[2] = { __wchar }; 25082: return to_bytes(__wchars, __wchars+1); 25082: } 25082: 25082: byte_string 25082: to_bytes(const _Elem* __ptr) 25082: { 25082: return to_bytes(__ptr, __ptr+wide_string::traits_type::length(__ptr)); 25082: } 25082: 25082: byte_string 25082: to_bytes(const wide_string& __wstr) 25082: { 25082: auto __ptr = __wstr.data(); 25082: return to_bytes(__ptr, __ptr + __wstr.size()); 25082: } 25082: 25082: byte_string 25082: to_bytes(const _Elem* __first, const _Elem* __last) 25082: { 25082: if (!_M_with_cvtstate) 25082: _M_state = state_type(); 25082: byte_string __out{ _M_byte_err_string.get_allocator() }; 25082: if (__str_codecvt_out(__first, __last, __out, *_M_cvt, _M_state, 25082: _M_count)) 25082: return __out; 25082: if (_M_with_strings) 25082: return _M_byte_err_string; 25082: __throw_range_error("wstring_convert::to_bytes"); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: size_t converted() const noexcept { return _M_count; } 25082: 25082: 25082: state_type state() const { return _M_state; } 25082: 25082: private: 25082: unique_ptr<_Codecvt> _M_cvt; 25082: byte_string _M_byte_err_string; 25082: wide_string _M_wide_err_string; 25082: state_type _M_state = state_type(); 25082: size_t _M_count = 0; 25082: bool _M_with_cvtstate = false; 25082: bool _M_with_strings = false; 25082: }; 25082: 25082: } 25082: 25082: 25082: template> 25082: class wbuffer_convert : public basic_streambuf<_Elem, _Tr> 25082: { 25082: typedef basic_streambuf<_Elem, _Tr> _Wide_streambuf; 25082: 25082: public: 25082: typedef typename _Codecvt::state_type state_type; 25082: # 336 "/usr/include/c++/8/bits/locale_conv.h" 3 25082: explicit 25082: wbuffer_convert(streambuf* __bytebuf = 0, _Codecvt* __pcvt = new _Codecvt, 25082: state_type __state = state_type()) 25082: : _M_buf(__bytebuf), _M_cvt(__pcvt), _M_state(__state) 25082: { 25082: if (!_M_cvt) 25082: __throw_logic_error("wbuffer_convert"); 25082: 25082: _M_always_noconv = _M_cvt->always_noconv(); 25082: 25082: if (_M_buf) 25082: { 25082: this->setp(_M_put_area, _M_put_area + _S_buffer_length); 25082: this->setg(_M_get_area + _S_putback_length, 25082: _M_get_area + _S_putback_length, 25082: _M_get_area + _S_putback_length); 25082: } 25082: } 25082: 25082: ~wbuffer_convert() = default; 25082: 25082: 25082: 25082: wbuffer_convert(const wbuffer_convert&) = delete; 25082: wbuffer_convert& operator=(const wbuffer_convert&) = delete; 25082: 25082: streambuf* rdbuf() const noexcept { return _M_buf; } 25082: 25082: streambuf* 25082: rdbuf(streambuf *__bytebuf) noexcept 25082: { 25082: auto __prev = _M_buf; 25082: _M_buf = __bytebuf; 25082: return __prev; 25082: } 25082: 25082: 25082: state_type state() const noexcept { return _M_state; } 25082: 25082: protected: 25082: int 25082: sync() 25082: { return _M_buf && _M_conv_put() && !_M_buf->pubsync() ? 0 : -1; } 25082: 25082: typename _Wide_streambuf::int_type 25082: overflow(typename _Wide_streambuf::int_type __out) 25082: { 25082: if (!_M_buf || !_M_conv_put()) 25082: return _Tr::eof(); 25082: else if (!_Tr::eq_int_type(__out, _Tr::eof())) 25082: return this->sputc(__out); 25082: return _Tr::not_eof(__out); 25082: } 25082: 25082: typename _Wide_streambuf::int_type 25082: underflow() 25082: { 25082: if (!_M_buf) 25082: return _Tr::eof(); 25082: 25082: if (this->gptr() < this->egptr() || (_M_buf && _M_conv_get())) 25082: return _Tr::to_int_type(*this->gptr()); 25082: else 25082: return _Tr::eof(); 25082: } 25082: 25082: streamsize 25082: xsputn(const typename _Wide_streambuf::char_type* __s, streamsize __n) 25082: { 25082: if (!_M_buf || __n == 0) 25082: return 0; 25082: streamsize __done = 0; 25082: do 25082: { 25082: auto __nn = std::min(this->epptr() - this->pptr(), 25082: __n - __done); 25082: _Tr::copy(this->pptr(), __s + __done, __nn); 25082: this->pbump(__nn); 25082: __done += __nn; 25082: } while (__done < __n && _M_conv_put()); 25082: return __done; 25082: } 25082: 25082: private: 25082: 25082: bool 25082: _M_conv_get() 25082: { 25082: const streamsize __pb1 = this->gptr() - this->eback(); 25082: const streamsize __pb2 = _S_putback_length; 25082: const streamsize __npb = std::min(__pb1, __pb2); 25082: 25082: _Tr::move(_M_get_area + _S_putback_length - __npb, 25082: this->gptr() - __npb, __npb); 25082: 25082: streamsize __nbytes = sizeof(_M_get_buf) - _M_unconv; 25082: __nbytes = std::min(__nbytes, _M_buf->in_avail()); 25082: if (__nbytes < 1) 25082: __nbytes = 1; 25082: __nbytes = _M_buf->sgetn(_M_get_buf + _M_unconv, __nbytes); 25082: if (__nbytes < 1) 25082: return false; 25082: __nbytes += _M_unconv; 25082: 25082: 25082: 25082: _Elem* __outbuf = _M_get_area + _S_putback_length; 25082: _Elem* __outnext = __outbuf; 25082: const char* __bnext = _M_get_buf; 25082: 25082: codecvt_base::result __result; 25082: if (_M_always_noconv) 25082: __result = codecvt_base::noconv; 25082: else 25082: { 25082: _Elem* __outend = _M_get_area + _S_buffer_length; 25082: 25082: __result = _M_cvt->in(_M_state, 25082: __bnext, __bnext + __nbytes, __bnext, 25082: __outbuf, __outend, __outnext); 25082: } 25082: 25082: if (__result == codecvt_base::noconv) 25082: { 25082: 25082: auto __get_buf = reinterpret_cast(_M_get_buf); 25082: _Tr::copy(__outbuf, __get_buf, __nbytes); 25082: _M_unconv = 0; 25082: return true; 25082: } 25082: 25082: if ((_M_unconv = _M_get_buf + __nbytes - __bnext)) 25082: char_traits::move(_M_get_buf, __bnext, _M_unconv); 25082: 25082: this->setg(__outbuf, __outbuf, __outnext); 25082: 25082: return __result != codecvt_base::error; 25082: } 25082: 25082: 25082: bool 25082: _M_put(...) 25082: { return false; } 25082: 25082: bool 25082: _M_put(const char* __p, streamsize __n) 25082: { 25082: if (_M_buf->sputn(__p, __n) < __n) 25082: return false; 25082: return true; 25082: } 25082: 25082: 25082: bool 25082: _M_conv_put() 25082: { 25082: _Elem* const __first = this->pbase(); 25082: const _Elem* const __last = this->pptr(); 25082: const streamsize __pending = __last - __first; 25082: 25082: if (_M_always_noconv) 25082: return _M_put(__first, __pending); 25082: 25082: char __outbuf[2 * _S_buffer_length]; 25082: 25082: const _Elem* __next = __first; 25082: const _Elem* __start; 25082: do 25082: { 25082: __start = __next; 25082: char* __outnext = __outbuf; 25082: char* const __outlast = __outbuf + sizeof(__outbuf); 25082: auto __result = _M_cvt->out(_M_state, __next, __last, __next, 25082: __outnext, __outlast, __outnext); 25082: if (__result == codecvt_base::error) 25082: return false; 25082: else if (__result == codecvt_base::noconv) 25082: return _M_put(__next, __pending); 25082: 25082: if (!_M_put(__outbuf, __outnext - __outbuf)) 25082: return false; 25082: } 25082: while (__next != __last && __next != __start); 25082: 25082: if (__next != __last) 25082: _Tr::move(__first, __next, __last - __next); 25082: 25082: this->pbump(__first - __next); 25082: return __next != __first; 25082: } 25082: 25082: streambuf* _M_buf; 25082: unique_ptr<_Codecvt> _M_cvt; 25082: state_type _M_state; 25082: 25082: static const streamsize _S_buffer_length = 32; 25082: static const streamsize _S_putback_length = 3; 25082: _Elem _M_put_area[_S_buffer_length]; 25082: _Elem _M_get_area[_S_buffer_length]; 25082: streamsize _M_unconv = 0; 25082: char _M_get_buf[_S_buffer_length-_S_putback_length]; 25082: bool _M_always_noconv; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: } 25082: # 44 "/usr/include/c++/8/locale" 2 3 25082: # 44 "/usr/include/c++/8/iomanip" 2 3 25082: 25082: # 1 "/usr/include/c++/8/bits/quoted_string.h" 1 3 25082: # 33 "/usr/include/c++/8/bits/quoted_string.h" 3 25082: 25082: # 34 "/usr/include/c++/8/bits/quoted_string.h" 3 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: namespace __detail { 25082: 25082: 25082: 25082: template 25082: struct _Quoted_string 25082: { 25082: static_assert(is_reference<_String>::value 25082: || is_pointer<_String>::value, 25082: "String type must be pointer or reference"); 25082: 25082: _Quoted_string(_String __str, _CharT __del, _CharT __esc) 25082: : _M_string(__str), _M_delim{__del}, _M_escape{__esc} 25082: { } 25082: 25082: _Quoted_string& 25082: operator=(_Quoted_string&) = delete; 25082: 25082: _String _M_string; 25082: _CharT _M_delim; 25082: _CharT _M_escape; 25082: }; 25082: 25082: 25082: template 25082: struct _Quoted_string, _CharT> 25082: { 25082: _Quoted_string(basic_string_view<_CharT, _Traits> __str, 25082: _CharT __del, _CharT __esc) 25082: : _M_string(__str), _M_delim{__del}, _M_escape{__esc} 25082: { } 25082: 25082: _Quoted_string& 25082: operator=(_Quoted_string&) = delete; 25082: 25082: basic_string_view<_CharT, _Traits> _M_string; 25082: _CharT _M_delim; 25082: _CharT _M_escape; 25082: }; 25082: # 91 "/usr/include/c++/8/bits/quoted_string.h" 3 25082: template 25082: std::basic_ostream<_CharT, _Traits>& 25082: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 25082: const _Quoted_string& __str) 25082: { 25082: std::basic_ostringstream<_CharT, _Traits> __ostr; 25082: __ostr << __str._M_delim; 25082: for (const _CharT* __c = __str._M_string; *__c; ++__c) 25082: { 25082: if (*__c == __str._M_delim || *__c == __str._M_escape) 25082: __ostr << __str._M_escape; 25082: __ostr << *__c; 25082: } 25082: __ostr << __str._M_delim; 25082: 25082: return __os << __ostr.str(); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: std::basic_ostream<_CharT, _Traits>& 25082: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 25082: const _Quoted_string<_String, _CharT>& __str) 25082: { 25082: std::basic_ostringstream<_CharT, _Traits> __ostr; 25082: __ostr << __str._M_delim; 25082: for (auto __c : __str._M_string) 25082: { 25082: if (__c == __str._M_delim || __c == __str._M_escape) 25082: __ostr << __str._M_escape; 25082: __ostr << __c; 25082: } 25082: __ostr << __str._M_delim; 25082: 25082: return __os << __ostr.str(); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: template 25082: std::basic_istream<_CharT, _Traits>& 25082: operator>>(std::basic_istream<_CharT, _Traits>& __is, 25082: const _Quoted_string&, 25082: _CharT>& __str) 25082: { 25082: _CharT __c; 25082: __is >> __c; 25082: if (!__is.good()) 25082: return __is; 25082: if (__c != __str._M_delim) 25082: { 25082: __is.unget(); 25082: __is >> __str._M_string; 25082: return __is; 25082: } 25082: __str._M_string.clear(); 25082: std::ios_base::fmtflags __flags 25082: = __is.flags(__is.flags() & ~std::ios_base::skipws); 25082: do 25082: { 25082: __is >> __c; 25082: if (!__is.good()) 25082: break; 25082: if (__c == __str._M_escape) 25082: { 25082: __is >> __c; 25082: if (!__is.good()) 25082: break; 25082: } 25082: else if (__c == __str._M_delim) 25082: break; 25082: __str._M_string += __c; 25082: } 25082: while (true); 25082: __is.setf(__flags); 25082: 25082: return __is; 25082: } 25082: } 25082: 25082: 25082: } 25082: # 46 "/usr/include/c++/8/iomanip" 2 3 25082: 25082: 25082: 25082: namespace std __attribute__ ((__visibility__ ("default"))) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: struct _Resetiosflags { ios_base::fmtflags _M_mask; }; 25082: # 65 "/usr/include/c++/8/iomanip" 3 25082: inline _Resetiosflags 25082: resetiosflags(ios_base::fmtflags __mask) 25082: { return { __mask }; } 25082: 25082: template 25082: inline basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __is, _Resetiosflags __f) 25082: { 25082: __is.setf(ios_base::fmtflags(0), __f._M_mask); 25082: return __is; 25082: } 25082: 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, _Resetiosflags __f) 25082: { 25082: __os.setf(ios_base::fmtflags(0), __f._M_mask); 25082: return __os; 25082: } 25082: 25082: 25082: struct _Setiosflags { ios_base::fmtflags _M_mask; }; 25082: # 95 "/usr/include/c++/8/iomanip" 3 25082: inline _Setiosflags 25082: setiosflags(ios_base::fmtflags __mask) 25082: { return { __mask }; } 25082: 25082: template 25082: inline basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __is, _Setiosflags __f) 25082: { 25082: __is.setf(__f._M_mask); 25082: return __is; 25082: } 25082: 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setiosflags __f) 25082: { 25082: __os.setf(__f._M_mask); 25082: return __os; 25082: } 25082: 25082: 25082: struct _Setbase { int _M_base; }; 25082: # 126 "/usr/include/c++/8/iomanip" 3 25082: inline _Setbase 25082: setbase(int __base) 25082: { return { __base }; } 25082: 25082: template 25082: inline basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __is, _Setbase __f) 25082: { 25082: __is.setf(__f._M_base == 8 ? ios_base::oct : 25082: __f._M_base == 10 ? ios_base::dec : 25082: __f._M_base == 16 ? ios_base::hex : 25082: ios_base::fmtflags(0), ios_base::basefield); 25082: return __is; 25082: } 25082: 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setbase __f) 25082: { 25082: __os.setf(__f._M_base == 8 ? ios_base::oct : 25082: __f._M_base == 10 ? ios_base::dec : 25082: __f._M_base == 16 ? ios_base::hex : 25082: ios_base::fmtflags(0), ios_base::basefield); 25082: return __os; 25082: } 25082: 25082: 25082: template 25082: struct _Setfill { _CharT _M_c; }; 25082: # 163 "/usr/include/c++/8/iomanip" 3 25082: template 25082: inline _Setfill<_CharT> 25082: setfill(_CharT __c) 25082: { return { __c }; } 25082: 25082: template 25082: inline basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __is, _Setfill<_CharT> __f) 25082: { 25082: __is.fill(__f._M_c); 25082: return __is; 25082: } 25082: 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setfill<_CharT> __f) 25082: { 25082: __os.fill(__f._M_c); 25082: return __os; 25082: } 25082: 25082: 25082: struct _Setprecision { int _M_n; }; 25082: # 194 "/usr/include/c++/8/iomanip" 3 25082: inline _Setprecision 25082: setprecision(int __n) 25082: { return { __n }; } 25082: 25082: template 25082: inline basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __is, _Setprecision __f) 25082: { 25082: __is.precision(__f._M_n); 25082: return __is; 25082: } 25082: 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setprecision __f) 25082: { 25082: __os.precision(__f._M_n); 25082: return __os; 25082: } 25082: 25082: 25082: struct _Setw { int _M_n; }; 25082: # 224 "/usr/include/c++/8/iomanip" 3 25082: inline _Setw 25082: setw(int __n) 25082: { return { __n }; } 25082: 25082: template 25082: inline basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __is, _Setw __f) 25082: { 25082: __is.width(__f._M_n); 25082: return __is; 25082: } 25082: 25082: template 25082: inline basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setw __f) 25082: { 25082: __os.width(__f._M_n); 25082: return __os; 25082: } 25082: 25082: 25082: 25082: template 25082: struct _Get_money { _MoneyT& _M_mon; bool _M_intl; }; 25082: # 257 "/usr/include/c++/8/iomanip" 3 25082: template 25082: inline _Get_money<_MoneyT> 25082: get_money(_MoneyT& __mon, bool __intl = false) 25082: { return { __mon, __intl }; } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __is, _Get_money<_MoneyT> __f) 25082: { 25082: typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: typedef istreambuf_iterator<_CharT, _Traits> _Iter; 25082: typedef money_get<_CharT, _Iter> _MoneyGet; 25082: 25082: const _MoneyGet& __mg = use_facet<_MoneyGet>(__is.getloc()); 25082: __mg.get(_Iter(__is.rdbuf()), _Iter(), __f._M_intl, 25082: __is, __err, __f._M_mon); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __is._M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { __is._M_setstate(ios_base::badbit); } 25082: if (__err) 25082: __is.setstate(__err); 25082: } 25082: return __is; 25082: } 25082: 25082: 25082: template 25082: struct _Put_money { const _MoneyT& _M_mon; bool _M_intl; }; 25082: # 304 "/usr/include/c++/8/iomanip" 3 25082: template 25082: inline _Put_money<_MoneyT> 25082: put_money(const _MoneyT& __mon, bool __intl = false) 25082: { return { __mon, __intl }; } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_money<_MoneyT> __f) 25082: { 25082: typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: typedef ostreambuf_iterator<_CharT, _Traits> _Iter; 25082: typedef money_put<_CharT, _Iter> _MoneyPut; 25082: 25082: const _MoneyPut& __mp = use_facet<_MoneyPut>(__os.getloc()); 25082: if (__mp.put(_Iter(__os.rdbuf()), __f._M_intl, __os, 25082: __os.fill(), __f._M_mon).failed()) 25082: __err |= ios_base::badbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __os._M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { __os._M_setstate(ios_base::badbit); } 25082: if (__err) 25082: __os.setstate(__err); 25082: } 25082: return __os; 25082: } 25082: 25082: template 25082: struct _Put_time 25082: { 25082: const std::tm* _M_tmb; 25082: const _CharT* _M_fmt; 25082: }; 25082: # 356 "/usr/include/c++/8/iomanip" 3 25082: template 25082: inline _Put_time<_CharT> 25082: put_time(const std::tm* __tmb, const _CharT* __fmt) 25082: { return { __tmb, __fmt }; } 25082: 25082: template 25082: basic_ostream<_CharT, _Traits>& 25082: operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_time<_CharT> __f) 25082: { 25082: typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: typedef ostreambuf_iterator<_CharT, _Traits> _Iter; 25082: typedef time_put<_CharT, _Iter> _TimePut; 25082: 25082: const _CharT* const __fmt_end = __f._M_fmt + 25082: _Traits::length(__f._M_fmt); 25082: 25082: const _TimePut& __mp = use_facet<_TimePut>(__os.getloc()); 25082: if (__mp.put(_Iter(__os.rdbuf()), __os, __os.fill(), 25082: __f._M_tmb, __f._M_fmt, __fmt_end).failed()) 25082: __err |= ios_base::badbit; 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __os._M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { __os._M_setstate(ios_base::badbit); } 25082: if (__err) 25082: __os.setstate(__err); 25082: } 25082: return __os; 25082: } 25082: 25082: template 25082: struct _Get_time 25082: { 25082: std::tm* _M_tmb; 25082: const _CharT* _M_fmt; 25082: }; 25082: # 411 "/usr/include/c++/8/iomanip" 3 25082: template 25082: inline _Get_time<_CharT> 25082: get_time(std::tm* __tmb, const _CharT* __fmt) 25082: { return { __tmb, __fmt }; } 25082: 25082: template 25082: basic_istream<_CharT, _Traits>& 25082: operator>>(basic_istream<_CharT, _Traits>& __is, _Get_time<_CharT> __f) 25082: { 25082: typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false); 25082: if (__cerb) 25082: { 25082: ios_base::iostate __err = ios_base::goodbit; 25082: try 25082: { 25082: typedef istreambuf_iterator<_CharT, _Traits> _Iter; 25082: typedef time_get<_CharT, _Iter> _TimeGet; 25082: 25082: const _CharT* const __fmt_end = __f._M_fmt + 25082: _Traits::length(__f._M_fmt); 25082: 25082: const _TimeGet& __mg = use_facet<_TimeGet>(__is.getloc()); 25082: __mg.get(_Iter(__is.rdbuf()), _Iter(), __is, 25082: __err, __f._M_tmb, __f._M_fmt, __fmt_end); 25082: } 25082: catch(__cxxabiv1::__forced_unwind&) 25082: { 25082: __is._M_setstate(ios_base::badbit); 25082: throw; 25082: } 25082: catch(...) 25082: { __is._M_setstate(ios_base::badbit); } 25082: if (__err) 25082: __is.setstate(__err); 25082: } 25082: return __is; 25082: } 25082: # 459 "/usr/include/c++/8/iomanip" 3 25082: template 25082: inline auto 25082: quoted(const _CharT* __string, 25082: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) 25082: { 25082: return __detail::_Quoted_string(__string, __delim, 25082: __escape); 25082: } 25082: 25082: template 25082: inline auto 25082: quoted(const basic_string<_CharT, _Traits, _Alloc>& __string, 25082: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) 25082: { 25082: return __detail::_Quoted_string< 25082: const basic_string<_CharT, _Traits, _Alloc>&, _CharT>( 25082: __string, __delim, __escape); 25082: } 25082: 25082: template 25082: inline auto 25082: quoted(basic_string<_CharT, _Traits, _Alloc>& __string, 25082: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) 25082: { 25082: return __detail::_Quoted_string< 25082: basic_string<_CharT, _Traits, _Alloc>&, _CharT>( 25082: __string, __delim, __escape); 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: inline auto 25082: quoted(basic_string_view<_CharT, _Traits> __sv, 25082: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) 25082: { 25082: return __detail::_Quoted_string< 25082: basic_string_view<_CharT, _Traits>, _CharT>(__sv, __delim, __escape); 25082: } 25082: # 508 "/usr/include/c++/8/iomanip" 3 25082: extern template ostream& operator<<(ostream&, _Setfill); 25082: extern template ostream& operator<<(ostream&, _Setiosflags); 25082: extern template ostream& operator<<(ostream&, _Resetiosflags); 25082: extern template ostream& operator<<(ostream&, _Setbase); 25082: extern template ostream& operator<<(ostream&, _Setprecision); 25082: extern template ostream& operator<<(ostream&, _Setw); 25082: extern template istream& operator>>(istream&, _Setfill); 25082: extern template istream& operator>>(istream&, _Setiosflags); 25082: extern template istream& operator>>(istream&, _Resetiosflags); 25082: extern template istream& operator>>(istream&, _Setbase); 25082: extern template istream& operator>>(istream&, _Setprecision); 25082: extern template istream& operator>>(istream&, _Setw); 25082: 25082: 25082: extern template wostream& operator<<(wostream&, _Setfill); 25082: extern template wostream& operator<<(wostream&, _Setiosflags); 25082: extern template wostream& operator<<(wostream&, _Resetiosflags); 25082: extern template wostream& operator<<(wostream&, _Setbase); 25082: extern template wostream& operator<<(wostream&, _Setprecision); 25082: extern template wostream& operator<<(wostream&, _Setw); 25082: extern template wistream& operator>>(wistream&, _Setfill); 25082: extern template wistream& operator>>(wistream&, _Setiosflags); 25082: extern template wistream& operator>>(wistream&, _Resetiosflags); 25082: extern template wistream& operator>>(wistream&, _Setbase); 25082: extern template wistream& operator>>(wistream&, _Setprecision); 25082: extern template wistream& operator>>(wistream&, _Setw); 25082: 25082: 25082: 25082: 25082: } 25082: # 5 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/LocalDateTime.h" 2 3 4 25082: # 18 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/LocalDateTime.h" 3 4 25082: class LocalDateTime 25082: { 25082: private: 25082: unsigned short m_year; 25082: unsigned char m_month; 25082: unsigned char m_day; 25082: unsigned char m_hour; 25082: unsigned char m_minute; 25082: unsigned char m_second; 25082: 25082: 25082: 25082: unsigned char pad = 0; 25082: 25082: void init(time_t time) 25082: { 25082: if ((__builtin_expect(!!(time > (0xFFFFFFFFU - 86400) || time == 0), 0))) 25082: { 25082: m_year = 0; 25082: m_month = 0; 25082: m_day = 0; 25082: m_hour = 0; 25082: m_minute = 0; 25082: m_second = 0; 25082: 25082: return; 25082: } 25082: 25082: const auto & date_lut = DateLUT::instance(); 25082: const auto & values = date_lut.getValues(time); 25082: 25082: m_year = values.year; 25082: m_month = values.month; 25082: m_day = values.day_of_month; 25082: m_hour = date_lut.toHour(time); 25082: m_minute = date_lut.toMinute(time); 25082: m_second = date_lut.toSecond(time); 25082: 25082: (void)pad; 25082: } 25082: 25082: void init(const char * s, size_t length) 25082: { 25082: if (length < 19) 25082: throw std::runtime_error("Cannot parse LocalDateTime: " + std::string(s, length)); 25082: 25082: m_year = (s[0] - '0') * 1000 + (s[1] - '0') * 100 + (s[2] - '0') * 10 + (s[3] - '0'); 25082: m_month = (s[5] - '0') * 10 + (s[6] - '0'); 25082: m_day = (s[8] - '0') * 10 + (s[9] - '0'); 25082: 25082: m_hour = (s[11] - '0') * 10 + (s[12] - '0'); 25082: m_minute = (s[14] - '0') * 10 + (s[15] - '0'); 25082: m_second = (s[17] - '0') * 10 + (s[18] - '0'); 25082: 25082: (void)pad; 25082: } 25082: 25082: public: 25082: explicit LocalDateTime(time_t time) 25082: { 25082: init(time); 25082: } 25082: 25082: LocalDateTime(unsigned short year_, unsigned char month_, unsigned char day_, 25082: unsigned char hour_, unsigned char minute_, unsigned char second_) 25082: : m_year(year_), m_month(month_), m_day(day_), m_hour(hour_), m_minute(minute_), m_second(second_) 25082: { 25082: } 25082: 25082: explicit LocalDateTime(const std::string & s) 25082: { 25082: if (s.size() < 19) 25082: throw std::runtime_error("Cannot parse LocalDateTime: " + s); 25082: 25082: init(s.data(), s.size()); 25082: } 25082: 25082: LocalDateTime() : m_year(0), m_month(0), m_day(0), m_hour(0), m_minute(0), m_second(0) 25082: { 25082: } 25082: 25082: LocalDateTime(const char * data, size_t length) 25082: { 25082: init(data, length); 25082: } 25082: 25082: LocalDateTime(const LocalDateTime &) noexcept = default; 25082: LocalDateTime & operator= (const LocalDateTime &) noexcept = default; 25082: 25082: LocalDateTime & operator= (time_t time) 25082: { 25082: init(time); 25082: return *this; 25082: } 25082: 25082: operator time_t() const 25082: { 25082: return m_year == 0 25082: ? 0 25082: : DateLUT::instance().makeDateTime(m_year, m_month, m_day, m_hour, m_minute, m_second); 25082: } 25082: 25082: unsigned short year() const { return m_year; } 25082: unsigned char month() const { return m_month; } 25082: unsigned char day() const { return m_day; } 25082: unsigned char hour() const { return m_hour; } 25082: unsigned char minute() const { return m_minute; } 25082: unsigned char second() const { return m_second; } 25082: 25082: void year(unsigned short x) { m_year = x; } 25082: void month(unsigned char x) { m_month = x; } 25082: void day(unsigned char x) { m_day = x; } 25082: void hour(unsigned char x) { m_hour = x; } 25082: void minute(unsigned char x) { m_minute = x; } 25082: void second(unsigned char x) { m_second = x; } 25082: 25082: LocalDate toDate() const { return LocalDate(m_year, m_month, m_day); } 25082: 25082: LocalDateTime toStartOfDate() { return LocalDateTime(m_year, m_month, m_day, 0, 0, 0); } 25082: 25082: bool operator< (const LocalDateTime & other) const 25082: { 25082: return 0 > memcmp(this, &other, sizeof(*this)); 25082: } 25082: 25082: bool operator> (const LocalDateTime & other) const 25082: { 25082: return 0 < memcmp(this, &other, sizeof(*this)); 25082: } 25082: 25082: bool operator<= (const LocalDateTime & other) const 25082: { 25082: return 0 >= memcmp(this, &other, sizeof(*this)); 25082: } 25082: 25082: bool operator>= (const LocalDateTime & other) const 25082: { 25082: return 0 <= memcmp(this, &other, sizeof(*this)); 25082: } 25082: 25082: bool operator== (const LocalDateTime & other) const 25082: { 25082: return 0 == memcmp(this, &other, sizeof(*this)); 25082: } 25082: 25082: bool operator!= (const LocalDateTime & other) const 25082: { 25082: return !(*this == other); 25082: } 25082: }; 25082: 25082: static_assert(sizeof(LocalDateTime) == 8); 25082: 25082: 25082: inline std::ostream & operator<< (std::ostream & ostr, const LocalDateTime & datetime) 25082: { 25082: ostr << std::setfill('0') << std::setw(4) << datetime.year(); 25082: 25082: ostr << '-' << (datetime.month() / 10) << (datetime.month() % 10) 25082: << '-' << (datetime.day() / 10) << (datetime.day() % 10) 25082: << ' ' << (datetime.hour() / 10) << (datetime.hour() % 10) 25082: << ':' << (datetime.minute() / 10) << (datetime.minute() % 10) 25082: << ':' << (datetime.second() / 10) << (datetime.second() % 10); 25082: 25082: return ostr; 25082: } 25082: 25082: 25082: namespace std 25082: { 25082: inline string to_string(const LocalDateTime & datetime) 25082: { 25082: stringstream str; 25082: str << datetime; 25082: return str.str(); 25082: } 25082: } 25082: # 12 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/find_symbols.h" 1 3 4 25082: 25082: # 36 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/find_symbols.h" 3 4 25082: namespace detail 25082: { 25082: 25082: template 25082: inline bool is_in(char x) 25082: { 25082: return x == s0; 25082: } 25082: 25082: template 25082: inline bool is_in(char x) 25082: { 25082: return x == s0 || is_in(x); 25082: } 25082: # 69 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/find_symbols.h" 3 4 25082: template 25082: inline const char * find_first_symbols_sse2(const char * begin, const char * end) 25082: { 25082: # 85 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/find_symbols.h" 3 4 25082: for (; begin < end; ++begin) 25082: if (is_in(*begin)) 25082: return begin; 25082: return end; 25082: } 25082: 25082: 25082: template 25082: inline const char * find_last_symbols_or_null_sse2(const char * begin, const char * end) 25082: { 25082: # 108 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/find_symbols.h" 3 4 25082: --end; 25082: for (; end >= begin; --end) 25082: if (is_in(*end)) 25082: return end; 25082: 25082: return nullptr; 25082: } 25082: 25082: 25082: template 25082: inline const char * find_first_symbols_sse42_impl(const char * begin, const char * end) 25082: { 25082: # 138 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/find_symbols.h" 3 4 25082: for (; begin < end; ++begin) 25082: if ( (num_chars >= 1 && *begin == c01) 25082: || (num_chars >= 2 && *begin == c02) 25082: || (num_chars >= 3 && *begin == c03) 25082: || (num_chars >= 4 && *begin == c04) 25082: || (num_chars >= 5 && *begin == c05) 25082: || (num_chars >= 6 && *begin == c06) 25082: || (num_chars >= 7 && *begin == c07) 25082: || (num_chars >= 8 && *begin == c08) 25082: || (num_chars >= 9 && *begin == c09) 25082: || (num_chars >= 10 && *begin == c10) 25082: || (num_chars >= 11 && *begin == c11) 25082: || (num_chars >= 12 && *begin == c12) 25082: || (num_chars >= 13 && *begin == c13) 25082: || (num_chars >= 14 && *begin == c14) 25082: || (num_chars >= 15 && *begin == c15) 25082: || (num_chars >= 16 && *begin == c16)) 25082: return begin; 25082: return end; 25082: } 25082: 25082: 25082: template 25082: inline const char * find_first_symbols_sse42(const char * begin, const char * end) 25082: { 25082: return find_first_symbols_sse42_impl(begin, end); 25082: } 25082: 25082: 25082: 25082: template 25082: inline const char * find_first_symbols_dispatch(const char * begin, const char * end) 25082: { 25082: 25082: 25082: 25082: 25082: 25082: return find_first_symbols_sse2(begin, end); 25082: } 25082: 25082: } 25082: 25082: 25082: template 25082: inline const char * find_first_symbols(const char * begin, const char * end) 25082: { 25082: return detail::find_first_symbols_dispatch(begin, end); 25082: } 25082: 25082: 25082: 25082: template 25082: inline char * find_first_symbols(char * begin, char * end) 25082: { 25082: return const_cast(detail::find_first_symbols_dispatch(begin, end)); 25082: } 25082: 25082: 25082: template 25082: inline const char * find_last_symbols_or_null(const char * begin, const char * end) 25082: { 25082: return detail::find_last_symbols_or_null_sse2(begin, end); 25082: } 25082: 25082: template 25082: inline char * find_last_symbols_or_null(char * begin, char * end) 25082: { 25082: return const_cast(detail::find_last_symbols_or_null_sse2(begin, end)); 25082: } 25082: # 13 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/libs/libcommon/include/common/intExp.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: inline uint64_t intExp2(int x) 25082: { 25082: return 1ULL << x; 25082: } 25082: 25082: inline uint64_t intExp10(int x) 25082: { 25082: if (x < 0) 25082: return 0; 25082: if (x > 19) 25082: return std::numeric_limits::max(); 25082: 25082: static const uint64_t table[20] = 25082: { 25082: 1ULL, 10ULL, 100ULL, 25082: 1000ULL, 10000ULL, 100000ULL, 25082: 1000000ULL, 10000000ULL, 100000000ULL, 25082: 1000000000ULL, 10000000000ULL, 100000000000ULL, 25082: 1000000000000ULL, 10000000000000ULL, 100000000000000ULL, 25082: 1000000000000000ULL, 10000000000000000ULL, 100000000000000000ULL, 25082: 1000000000000000000ULL, 10000000000000000000ULL 25082: }; 25082: 25082: return table[x]; 25082: } 25082: 25082: namespace common { 25082: 25082: inline int exp10_i32(int x) 25082: { 25082: static const int values[] = { 25082: 1, 25082: 10, 25082: 100, 25082: 1000, 25082: 10000, 25082: 100000, 25082: 1000000, 25082: 10000000, 25082: 100000000, 25082: 1000000000 25082: }; 25082: return values[x]; 25082: } 25082: 25082: inline int64_t exp10_i64(int x) 25082: { 25082: static const int64_t values[] = { 25082: 1ll, 25082: 10ll, 25082: 100ll, 25082: 1000ll, 25082: 10000ll, 25082: 100000ll, 25082: 1000000ll, 25082: 10000000ll, 25082: 100000000ll, 25082: 1000000000ll, 25082: 10000000000ll, 25082: 100000000000ll, 25082: 1000000000000ll, 25082: 10000000000000ll, 25082: 100000000000000ll, 25082: 1000000000000000ll, 25082: 10000000000000000ll, 25082: 100000000000000000ll, 25082: 1000000000000000000ll 25082: }; 25082: return values[x]; 25082: } 25082: 25082: inline __int128 exp10_i128(int x) 25082: { 25082: static const __int128 values[] = { 25082: static_cast<__int128>(1ll), 25082: static_cast<__int128>(10ll), 25082: static_cast<__int128>(100ll), 25082: static_cast<__int128>(1000ll), 25082: static_cast<__int128>(10000ll), 25082: static_cast<__int128>(100000ll), 25082: static_cast<__int128>(1000000ll), 25082: static_cast<__int128>(10000000ll), 25082: static_cast<__int128>(100000000ll), 25082: static_cast<__int128>(1000000000ll), 25082: static_cast<__int128>(10000000000ll), 25082: static_cast<__int128>(100000000000ll), 25082: static_cast<__int128>(1000000000000ll), 25082: static_cast<__int128>(10000000000000ll), 25082: static_cast<__int128>(100000000000000ll), 25082: static_cast<__int128>(1000000000000000ll), 25082: static_cast<__int128>(10000000000000000ll), 25082: static_cast<__int128>(100000000000000000ll), 25082: static_cast<__int128>(1000000000000000000ll), 25082: static_cast<__int128>(1000000000000000000ll) * 10ll, 25082: static_cast<__int128>(1000000000000000000ll) * 100ll, 25082: static_cast<__int128>(1000000000000000000ll) * 1000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 10000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 100000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 1000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 10000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 100000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 1000000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 10000000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 100000000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 1000000000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 10000000000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 100000000000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 1000000000000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 10000000000000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 100000000000000000ll, 25082: static_cast<__int128>(1000000000000000000ll) * 100000000000000000ll * 10ll, 25082: static_cast<__int128>(1000000000000000000ll) * 100000000000000000ll * 100ll, 25082: static_cast<__int128>(1000000000000000000ll) * 100000000000000000ll * 1000ll 25082: }; 25082: return values[x]; 25082: } 25082: 25082: } 25082: # 14 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/StringUtils/StringUtils.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/usr/include/c++/8/cstring" 1 3 4 25082: # 39 "/usr/include/c++/8/cstring" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstring" 3 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/Common/StringUtils/StringUtils.h" 2 3 4 25082: 25082: 25082: 25082: 25082: namespace detail 25082: { 25082: bool startsWith(const std::string & s, const char * prefix, size_t prefix_size); 25082: bool endsWith(const std::string & s, const char * suffix, size_t suffix_size); 25082: } 25082: 25082: 25082: inline bool startsWith(const std::string & s, const std::string & prefix) 25082: { 25082: return detail::startsWith(s, prefix.data(), prefix.size()); 25082: } 25082: 25082: inline bool endsWith(const std::string & s, const std::string & suffix) 25082: { 25082: return detail::endsWith(s, suffix.data(), suffix.size()); 25082: } 25082: 25082: 25082: 25082: 25082: inline bool startsWith(const std::string & s, const char * prefix) 25082: { 25082: return detail::startsWith(s, prefix, strlen(prefix)); 25082: } 25082: 25082: inline bool endsWith(const std::string & s, const char * suffix) 25082: { 25082: return detail::endsWith(s, suffix, strlen(suffix)); 25082: } 25082: 25082: 25082: 25082: template 25082: std::string getOrdinalSuffix(T n) 25082: { 25082: static_assert(std::is_integral_v && std::is_unsigned_v, 25082: "Unsigned integer value required"); 25082: 25082: const auto last_digit = n % 10; 25082: 25082: if ((last_digit < 1 || last_digit > 3) 25082: || ((n > 10) && (((n / 10) % 10) == 1))) 25082: return "th"; 25082: 25082: switch (last_digit) 25082: { 25082: case 1: return "st"; 25082: case 2: return "nd"; 25082: case 3: return "rd"; 25082: default: return "th"; 25082: }; 25082: } 25082: 25082: 25082: 25082: inline bool isASCII(char c) 25082: { 25082: return static_cast(c) < 0x80; 25082: } 25082: 25082: inline bool isAlphaASCII(char c) 25082: { 25082: return (c >= 'a' && c <= 'z') 25082: || (c >= 'A' && c <= 'Z'); 25082: } 25082: 25082: inline bool isNumericASCII(char c) 25082: { 25082: 25082: 25082: 25082: return (c >= '0' && c <= '9'); 25082: } 25082: 25082: inline bool isHexDigit(char c) 25082: { 25082: return isNumericASCII(c) 25082: || (c >= 'a' && c <= 'f') 25082: || (c >= 'A' && c <= 'F'); 25082: } 25082: 25082: inline bool isAlphaNumericASCII(char c) 25082: { 25082: return isAlphaASCII(c) 25082: || isNumericASCII(c); 25082: } 25082: 25082: inline bool isWordCharASCII(char c) 25082: { 25082: return isAlphaNumericASCII(c) 25082: || c == '_'; 25082: } 25082: 25082: inline bool isValidIdentifierBegin(char c) 25082: { 25082: return isAlphaASCII(c) 25082: || c == '_'; 25082: } 25082: 25082: inline bool isWhitespaceASCII(char c) 25082: { 25082: return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\f' || c == '\v'; 25082: } 25082: 25082: inline bool isControlASCII(char c) 25082: { 25082: return static_cast(c) <= 31; 25082: } 25082: 25082: 25082: inline char toLowerIfAlphaASCII(char c) 25082: { 25082: return c | 0x20; 25082: } 25082: 25082: inline char toUpperIfAlphaASCII(char c) 25082: { 25082: return c & (~0x20); 25082: } 25082: 25082: inline char alternateCaseIfAlphaASCII(char c) 25082: { 25082: return c ^ 0x20; 25082: } 25082: 25082: inline bool equalsCaseInsensitive(char a, char b) 25082: { 25082: return a == b || (isAlphaASCII(a) && alternateCaseIfAlphaASCII(a) == b); 25082: } 25082: 25082: 25082: template 25082: std::string trim(const std::string & str, F && predicate) 25082: { 25082: size_t cut_front = 0; 25082: size_t cut_back = 0; 25082: size_t size = str.size(); 25082: 25082: for (size_t i = 0; i < size; ++i) 25082: { 25082: if (predicate(str[i])) 25082: ++cut_front; 25082: else 25082: break; 25082: } 25082: 25082: if (cut_front == size) 25082: return {}; 25082: 25082: for (auto it = str.rbegin(); it != str.rend(); ++it) 25082: { 25082: if (predicate(*it)) 25082: ++cut_back; 25082: else 25082: break; 25082: } 25082: 25082: return str.substr(cut_front, size - cut_front - cut_back); 25082: } 25082: # 19 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteIntText.h" 1 3 4 25082: 25082: # 15 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteIntText.h" 3 4 25082: namespace DB 25082: { 25082: 25082: namespace detail 25082: { 25082: # 28 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteIntText.h" 3 4 25082: template 25082: void writeUIntTextFallback(T x, WriteBuffer & buf) 25082: { 25082: if (x == 0) 25082: { 25082: buf.nextIfAtEnd(); 25082: *buf.position() = '0'; 25082: ++buf.position(); 25082: 25082: return; 25082: } 25082: 25082: char tmp[20U]; 25082: 25082: char * pos; 25082: for (pos = tmp + 20U - 1; x != 0; --pos) 25082: { 25082: *pos = '0' + x % 10; 25082: x /= 10; 25082: } 25082: 25082: ++pos; 25082: 25082: buf.write(pos, tmp + 20U - pos); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: UInt32 digits10(T x) 25082: { 25082: if (x < 10ULL) 25082: return 1; 25082: if (x < 100ULL) 25082: return 2; 25082: if (x < 1000ULL) 25082: return 3; 25082: 25082: if (x < 1000000000000ULL) 25082: { 25082: if (x < 100000000ULL) 25082: { 25082: if (x < 1000000ULL) 25082: { 25082: if (x < 10000ULL) 25082: return 4; 25082: else 25082: return 5 + (x >= 100000ULL); 25082: } 25082: 25082: return 7 + (x >= 10000000ULL); 25082: } 25082: 25082: if (x < 10000000000ULL) 25082: return 9 + (x >= 1000000000ULL); 25082: 25082: return 11 + (x >= 100000000000ULL); 25082: } 25082: 25082: return 12 + digits10(x / 1000000000000ULL); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: UInt32 writeUIntText(T x, char * dst) 25082: { 25082: static const char digits[201] = 25082: "00010203040506070809" 25082: "10111213141516171819" 25082: "20212223242526272829" 25082: "30313233343536373839" 25082: "40414243444546474849" 25082: "50515253545556575859" 25082: "60616263646566676869" 25082: "70717273747576777879" 25082: "80818283848586878889" 25082: "90919293949596979899"; 25082: 25082: const UInt32 length = digits10(x); 25082: UInt32 next = length - 1; 25082: 25082: while (x >= 100) 25082: { 25082: const auto i = (x % 100) * 2; 25082: x /= 100; 25082: dst[next] = digits[i + 1]; 25082: dst[next - 1] = digits[i]; 25082: next -= 2; 25082: } 25082: 25082: if (x < 10) 25082: { 25082: dst[next] = '0' + x; 25082: } 25082: else 25082: { 25082: const auto i = x * 2; 25082: dst[next] = digits[i + 1]; 25082: dst[next - 1] = digits[i]; 25082: } 25082: 25082: return length; 25082: } 25082: 25082: 25082: 25082: 25082: template 25082: void writeUIntText(T x, WriteBuffer & buf) 25082: { 25082: if ((__builtin_expect(!!(buf.position() + 20U < buf.buffer().end()), 1))) 25082: buf.position() += writeUIntText(x, buf.position()); 25082: else 25082: writeUIntTextFallback(x, buf); 25082: } 25082: 25082: 25082: inline void writeLeadingMinus(WriteBuffer & buf) 25082: { 25082: buf.nextIfAtEnd(); 25082: *buf.position() = '-'; 25082: ++buf.position(); 25082: } 25082: 25082: 25082: 25082: template 25082: void writeSIntText(T x, WriteBuffer & buf) 25082: { 25082: 25082: if ((__builtin_expect(!!(x == std::numeric_limits::min()), 0))) 25082: { 25082: if (sizeof(x) == 1) 25082: buf.write("-128", 4); 25082: else if (sizeof(x) == 2) 25082: buf.write("-32768", 6); 25082: else if (sizeof(x) == 4) 25082: buf.write("-2147483648", 11); 25082: else 25082: buf.write("-9223372036854775808", 20); 25082: return; 25082: } 25082: 25082: if (x < 0) 25082: { 25082: x = -x; 25082: writeLeadingMinus(buf); 25082: } 25082: 25082: writeUIntText(static_cast>(x), buf); 25082: } 25082: 25082: 25082: inline void writeSIntText(__int128 x, WriteBuffer & buf) 25082: { 25082: static const __int128 min_int128 = __int128(0x8000000000000000ll) << 64; 25082: 25082: if ((__builtin_expect(!!(x == min_int128), 0))) 25082: { 25082: buf.write("-170141183460469231731687303715884105728", 40); 25082: return; 25082: } 25082: 25082: if (x < 0) 25082: { 25082: x = -x; 25082: writeLeadingMinus(buf); 25082: } 25082: 25082: writeUIntText(static_cast(x), buf); 25082: } 25082: 25082: } 25082: 25082: 25082: template 25082: std::enable_if_t || std::is_same_v, void> writeIntText(T x, WriteBuffer & buf) 25082: { 25082: detail::writeSIntText(x, buf); 25082: 25082: } 25082: 25082: template 25082: std::enable_if_t, void> writeIntText(T x, WriteBuffer & buf) 25082: { 25082: detail::writeUIntText(x, buf); 25082: } 25082: 25082: } 25082: # 24 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/VarInt.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: void writeVarUInt(UInt64 x, std::ostream & ostr); 25082: void writeVarUInt(UInt64 x, WriteBuffer & ostr); 25082: char * writeVarUInt(UInt64 x, char * ostr); 25082: 25082: 25082: 25082: void readVarUInt(UInt64 & x, std::istream & istr); 25082: void readVarUInt(UInt64 & x, ReadBuffer & istr); 25082: const char * readVarUInt(UInt64 & x, const char * istr, size_t size); 25082: 25082: 25082: 25082: size_t getLengthOfVarUInt(UInt64 x); 25082: 25082: 25082: size_t getLengthOfVarInt(Int64 x); 25082: 25082: 25082: 25082: template 25082: inline void writeVarInt(Int64 x, OUT & ostr) 25082: { 25082: writeVarUInt(static_cast((x << 1) ^ (x >> 63)), ostr); 25082: } 25082: 25082: inline char * writeVarInt(Int64 x, char * ostr) 25082: { 25082: return writeVarUInt(static_cast((x << 1) ^ (x >> 63)), ostr); 25082: } 25082: 25082: 25082: 25082: template 25082: inline void readVarInt(Int64 & x, IN & istr) 25082: { 25082: readVarUInt(*reinterpret_cast(&x), istr); 25082: x = (static_cast(x) >> 1) ^ -(x & 1); 25082: } 25082: 25082: inline const char * readVarInt(Int64 & x, const char * istr, size_t size) 25082: { 25082: const char * res = readVarUInt(*reinterpret_cast(&x), istr, size); 25082: x = (static_cast(x) >> 1) ^ -(x & 1); 25082: return res; 25082: } 25082: 25082: 25082: inline void writeVarT(UInt64 x, std::ostream & ostr) { writeVarUInt(x, ostr); } 25082: inline void writeVarT(Int64 x, std::ostream & ostr) { writeVarInt(x, ostr); } 25082: inline void writeVarT(UInt64 x, WriteBuffer & ostr) { writeVarUInt(x, ostr); } 25082: inline void writeVarT(Int64 x, WriteBuffer & ostr) { writeVarInt(x, ostr); } 25082: inline char * writeVarT(UInt64 x, char * & ostr) { return writeVarUInt(x, ostr); } 25082: inline char * writeVarT(Int64 x, char * & ostr) { return writeVarInt(x, ostr); } 25082: 25082: inline void readVarT(UInt64 & x, std::istream & istr) { readVarUInt(x, istr); } 25082: inline void readVarT(Int64 & x, std::istream & istr) { readVarInt(x, istr); } 25082: inline void readVarT(UInt64 & x, ReadBuffer & istr) { readVarUInt(x, istr); } 25082: inline void readVarT(Int64 & x, ReadBuffer & istr) { readVarInt(x, istr); } 25082: inline const char * readVarT(UInt64 & x, const char * istr, size_t size) { return readVarUInt(x, istr, size); } 25082: inline const char * readVarT(Int64 & x, const char * istr, size_t size) { return readVarInt(x, istr, size); } 25082: 25082: 25082: 25082: 25082: inline void readVarUInt(UInt32 & x, ReadBuffer & istr) 25082: { 25082: UInt64 tmp; 25082: readVarUInt(tmp, istr); 25082: x = tmp; 25082: } 25082: 25082: inline void readVarInt(Int32 & x, ReadBuffer & istr) 25082: { 25082: Int64 tmp; 25082: readVarInt(tmp, istr); 25082: x = tmp; 25082: } 25082: 25082: inline void readVarUInt(UInt16 & x, ReadBuffer & istr) 25082: { 25082: UInt64 tmp; 25082: readVarUInt(tmp, istr); 25082: x = tmp; 25082: } 25082: 25082: inline void readVarInt(Int16 & x, ReadBuffer & istr) 25082: { 25082: Int64 tmp; 25082: readVarInt(tmp, istr); 25082: x = tmp; 25082: } 25082: 25082: template 25082: inline std::enable_if_t, void> 25082: readVarUInt(T & x, ReadBuffer & istr) 25082: { 25082: UInt64 tmp; 25082: readVarUInt(tmp, istr); 25082: x = tmp; 25082: } 25082: 25082: 25082: inline void throwReadAfterEOF() 25082: { 25082: throw Exception("Attempt to read after eof", ErrorCodes::ATTEMPT_TO_READ_AFTER_EOF); 25082: } 25082: 25082: template 25082: inline void readVarUIntImpl(UInt64 & x, ReadBuffer & istr) 25082: { 25082: x = 0; 25082: for (size_t i = 0; i < 9; ++i) 25082: { 25082: if constexpr (!fast) 25082: if (istr.eof()) 25082: throwReadAfterEOF(); 25082: 25082: UInt64 byte = *istr.position(); 25082: ++istr.position(); 25082: x |= (byte & 0x7F) << (7 * i); 25082: 25082: if (!(byte & 0x80)) 25082: return; 25082: } 25082: } 25082: 25082: inline void readVarUInt(UInt64 & x, ReadBuffer & istr) 25082: { 25082: if (istr.buffer().end() - istr.position() >= 9) 25082: return readVarUIntImpl(x, istr); 25082: return readVarUIntImpl(x, istr); 25082: } 25082: 25082: 25082: inline void readVarUInt(UInt64 & x, std::istream & istr) 25082: { 25082: x = 0; 25082: for (size_t i = 0; i < 9; ++i) 25082: { 25082: UInt64 byte = istr.get(); 25082: x |= (byte & 0x7F) << (7 * i); 25082: 25082: if (!(byte & 0x80)) 25082: return; 25082: } 25082: } 25082: 25082: inline const char * readVarUInt(UInt64 & x, const char * istr, size_t size) 25082: { 25082: const char * end = istr + size; 25082: 25082: x = 0; 25082: for (size_t i = 0; i < 9; ++i) 25082: { 25082: if (istr == end) 25082: throwReadAfterEOF(); 25082: 25082: UInt64 byte = *istr; 25082: ++istr; 25082: x |= (byte & 0x7F) << (7 * i); 25082: 25082: if (!(byte & 0x80)) 25082: return istr; 25082: } 25082: 25082: return istr; 25082: } 25082: 25082: 25082: inline void writeVarUInt(UInt64 x, WriteBuffer & ostr) 25082: { 25082: for (size_t i = 0; i < 9; ++i) 25082: { 25082: uint8_t byte = x & 0x7F; 25082: if (x > 0x7F) 25082: byte |= 0x80; 25082: 25082: ostr.nextIfAtEnd(); 25082: *ostr.position() = byte; 25082: ++ostr.position(); 25082: 25082: x >>= 7; 25082: if (!x) 25082: return; 25082: } 25082: } 25082: 25082: 25082: inline void writeVarUInt(UInt64 x, std::ostream & ostr) 25082: { 25082: for (size_t i = 0; i < 9; ++i) 25082: { 25082: uint8_t byte = x & 0x7F; 25082: if (x > 0x7F) 25082: byte |= 0x80; 25082: 25082: ostr.put(byte); 25082: 25082: x >>= 7; 25082: if (!x) 25082: return; 25082: } 25082: } 25082: 25082: 25082: inline char * writeVarUInt(UInt64 x, char * ostr) 25082: { 25082: for (size_t i = 0; i < 9; ++i) 25082: { 25082: uint8_t byte = x & 0x7F; 25082: if (x > 0x7F) 25082: byte |= 0x80; 25082: 25082: *ostr = byte; 25082: ++ostr; 25082: 25082: x >>= 7; 25082: if (!x) 25082: return ostr; 25082: } 25082: 25082: return ostr; 25082: } 25082: 25082: 25082: inline size_t getLengthOfVarUInt(UInt64 x) 25082: { 25082: return x < (1ULL << 7) ? 1 25082: : (x < (1ULL << 14) ? 2 25082: : (x < (1ULL << 21) ? 3 25082: : (x < (1ULL << 28) ? 4 25082: : (x < (1ULL << 35) ? 5 25082: : (x < (1ULL << 42) ? 6 25082: : (x < (1ULL << 49) ? 7 25082: : (x < (1ULL << 56) ? 8 25082: : 9))))))); 25082: } 25082: 25082: 25082: inline size_t getLengthOfVarInt(Int64 x) 25082: { 25082: return getLengthOfVarUInt(static_cast((x << 1) ^ (x >> 63))); 25082: } 25082: 25082: } 25082: # 25 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/DoubleConverter.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/usr/include/double-conversion/double-conversion.h" 1 3 4 25082: # 31 "/usr/include/double-conversion/double-conversion.h" 3 4 25082: # 1 "/usr/include/double-conversion/utils.h" 1 3 4 25082: # 31 "/usr/include/double-conversion/utils.h" 3 4 25082: # 1 "/usr/include/c++/8/cstdlib" 1 3 4 25082: # 39 "/usr/include/c++/8/cstdlib" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstdlib" 3 25082: # 32 "/usr/include/double-conversion/utils.h" 2 3 4 25082: # 1 "/usr/include/c++/8/cstring" 1 3 4 25082: # 39 "/usr/include/c++/8/cstring" 3 4 25082: 25082: # 40 "/usr/include/c++/8/cstring" 3 25082: # 33 "/usr/include/double-conversion/utils.h" 2 3 4 25082: 25082: # 1 "/usr/include/c++/8/cassert" 1 3 4 25082: # 41 "/usr/include/c++/8/cassert" 3 4 25082: 25082: # 42 "/usr/include/c++/8/cassert" 3 25082: 25082: 25082: # 1 "/usr/include/assert.h" 1 3 4 25082: # 44 "/usr/include/c++/8/cassert" 2 3 25082: # 35 "/usr/include/double-conversion/utils.h" 2 3 4 25082: # 134 "/usr/include/double-conversion/utils.h" 3 4 25082: typedef uint16_t uc16; 25082: # 172 "/usr/include/double-conversion/utils.h" 3 4 25082: namespace double_conversion { 25082: 25082: static const int kCharSize = sizeof(char); 25082: 25082: 25082: template 25082: static T Max(T a, T b) { 25082: return a < b ? b : a; 25082: } 25082: 25082: 25082: 25082: template 25082: static T Min(T a, T b) { 25082: return a < b ? a : b; 25082: } 25082: 25082: 25082: inline int StrLength(const char* string) { 25082: size_t length = strlen(string); 25082: (static_cast (0));; 25082: return static_cast(length); 25082: } 25082: 25082: 25082: template 25082: class Vector { 25082: public: 25082: Vector() : start_(__null), length_(0) {} 25082: Vector(T* data, int len) : start_(data), length_(len) { 25082: (static_cast (0));; 25082: } 25082: 25082: 25082: 25082: Vector SubVector(int from, int to) { 25082: (static_cast (0));; 25082: (static_cast (0));; 25082: (static_cast (0));; 25082: return Vector(start() + from, to - from); 25082: } 25082: 25082: 25082: int length() const { return length_; } 25082: 25082: 25082: bool is_empty() const { return length_ == 0; } 25082: 25082: 25082: T* start() const { return start_; } 25082: 25082: 25082: T& operator[](int index) const { 25082: (static_cast (0));; 25082: return start_[index]; 25082: } 25082: 25082: T& first() { return start_[0]; } 25082: 25082: T& last() { return start_[length_ - 1]; } 25082: 25082: private: 25082: T* start_; 25082: int length_; 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: class StringBuilder { 25082: public: 25082: StringBuilder(char* buffer, int buffer_size) 25082: : buffer_(buffer, buffer_size), position_(0) { } 25082: 25082: ~StringBuilder() { if (!is_finalized()) Finalize(); } 25082: 25082: int size() const { return buffer_.length(); } 25082: 25082: 25082: int position() const { 25082: (static_cast (0));; 25082: return position_; 25082: } 25082: 25082: 25082: void Reset() { position_ = 0; } 25082: 25082: 25082: 25082: 25082: void AddCharacter(char c) { 25082: (static_cast (0));; 25082: (static_cast (0));; 25082: buffer_[position_++] = c; 25082: } 25082: 25082: 25082: 25082: void AddString(const char* s) { 25082: AddSubstring(s, StrLength(s)); 25082: } 25082: 25082: 25082: 25082: void AddSubstring(const char* s, int n) { 25082: (static_cast (0));; 25082: (static_cast (0));; 25082: memmove(&buffer_[position_], s, n * kCharSize); 25082: position_ += n; 25082: } 25082: 25082: 25082: 25082: 25082: void AddPadding(char c, int count) { 25082: for (int i = 0; i < count; i++) { 25082: AddCharacter(c); 25082: } 25082: } 25082: 25082: 25082: char* Finalize() { 25082: (static_cast (0));; 25082: buffer_[position_] = '\0'; 25082: 25082: 25082: (static_cast (0));; 25082: position_ = -1; 25082: (static_cast (0));; 25082: return buffer_.start(); 25082: } 25082: 25082: private: 25082: Vector buffer_; 25082: int position_; 25082: 25082: bool is_finalized() const { return position_ < 0; } 25082: 25082: StringBuilder(); StringBuilder(const StringBuilder&); void operator=(const StringBuilder&); 25082: }; 25082: # 338 "/usr/include/double-conversion/utils.h" 3 4 25082: template 25082: inline Dest BitCast(const Source& source) { 25082: 25082: 25082: 25082: static_assert(sizeof(Dest) == sizeof(Source), 25082: "source and destination size mismatch"); 25082: 25082: 25082: 25082: 25082: Dest dest; 25082: memmove(&dest, &source, sizeof(dest)); 25082: return dest; 25082: } 25082: 25082: template 25082: inline Dest BitCast(Source* source) { 25082: return BitCast(reinterpret_cast(source)); 25082: } 25082: 25082: } 25082: # 32 "/usr/include/double-conversion/double-conversion.h" 2 3 4 25082: 25082: namespace double_conversion { 25082: 25082: class DoubleToStringConverter { 25082: public: 25082: 25082: 25082: 25082: static const int kMaxFixedDigitsBeforePoint = 60; 25082: static const int kMaxFixedDigitsAfterPoint = 60; 25082: 25082: 25082: 25082: static const int kMaxExponentialDigits = 120; 25082: 25082: 25082: 25082: 25082: static const int kMinPrecisionDigits = 1; 25082: static const int kMaxPrecisionDigits = 120; 25082: 25082: enum Flags { 25082: NO_FLAGS = 0, 25082: EMIT_POSITIVE_EXPONENT_SIGN = 1, 25082: EMIT_TRAILING_DECIMAL_POINT = 2, 25082: EMIT_TRAILING_ZERO_AFTER_POINT = 4, 25082: UNIQUE_ZERO = 8 25082: }; 25082: # 107 "/usr/include/double-conversion/double-conversion.h" 3 4 25082: DoubleToStringConverter(int flags, 25082: const char* infinity_symbol, 25082: const char* nan_symbol, 25082: char exponent_character, 25082: int decimal_in_shortest_low, 25082: int decimal_in_shortest_high, 25082: int max_leading_padding_zeroes_in_precision_mode, 25082: int max_trailing_padding_zeroes_in_precision_mode) 25082: : flags_(flags), 25082: infinity_symbol_(infinity_symbol), 25082: nan_symbol_(nan_symbol), 25082: exponent_character_(exponent_character), 25082: decimal_in_shortest_low_(decimal_in_shortest_low), 25082: decimal_in_shortest_high_(decimal_in_shortest_high), 25082: max_leading_padding_zeroes_in_precision_mode_( 25082: max_leading_padding_zeroes_in_precision_mode), 25082: max_trailing_padding_zeroes_in_precision_mode_( 25082: max_trailing_padding_zeroes_in_precision_mode) { 25082: 25082: 25082: (static_cast (0)); 25082: ; 25082: } 25082: 25082: 25082: static const DoubleToStringConverter& EcmaScriptConverter(); 25082: # 157 "/usr/include/double-conversion/double-conversion.h" 3 4 25082: bool ToShortest(double value, StringBuilder* result_builder) const { 25082: return ToShortestIeeeNumber(value, result_builder, SHORTEST); 25082: } 25082: 25082: 25082: bool ToShortestSingle(float value, StringBuilder* result_builder) const { 25082: return ToShortestIeeeNumber(value, result_builder, SHORTEST_SINGLE); 25082: } 25082: # 200 "/usr/include/double-conversion/double-conversion.h" 3 4 25082: bool ToFixed(double value, 25082: int requested_digits, 25082: StringBuilder* result_builder) const; 25082: # 232 "/usr/include/double-conversion/double-conversion.h" 3 4 25082: bool ToExponential(double value, 25082: int requested_digits, 25082: StringBuilder* result_builder) const; 25082: # 270 "/usr/include/double-conversion/double-conversion.h" 3 4 25082: bool ToPrecision(double value, 25082: int precision, 25082: StringBuilder* result_builder) const; 25082: 25082: enum DtoaMode { 25082: 25082: 25082: 25082: SHORTEST, 25082: 25082: SHORTEST_SINGLE, 25082: 25082: 25082: 25082: FIXED, 25082: 25082: PRECISION 25082: }; 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: static const int kBase10MaximalLength = 17; 25082: # 340 "/usr/include/double-conversion/double-conversion.h" 3 4 25082: static void DoubleToAscii(double v, 25082: DtoaMode mode, 25082: int requested_digits, 25082: char* buffer, 25082: int buffer_length, 25082: bool* sign, 25082: int* length, 25082: int* point); 25082: 25082: private: 25082: 25082: bool ToShortestIeeeNumber(double value, 25082: StringBuilder* result_builder, 25082: DtoaMode mode) const; 25082: 25082: 25082: 25082: 25082: 25082: bool HandleSpecialValues(double value, StringBuilder* result_builder) const; 25082: 25082: 25082: void CreateExponentialRepresentation(const char* decimal_digits, 25082: int length, 25082: int exponent, 25082: StringBuilder* result_builder) const; 25082: 25082: void CreateDecimalRepresentation(const char* decimal_digits, 25082: int length, 25082: int decimal_point, 25082: int digits_after_point, 25082: StringBuilder* result_builder) const; 25082: 25082: const int flags_; 25082: const char* const infinity_symbol_; 25082: const char* const nan_symbol_; 25082: const char exponent_character_; 25082: const int decimal_in_shortest_low_; 25082: const int decimal_in_shortest_high_; 25082: const int max_leading_padding_zeroes_in_precision_mode_; 25082: const int max_trailing_padding_zeroes_in_precision_mode_; 25082: 25082: DoubleToStringConverter(); DoubleToStringConverter(const DoubleToStringConverter&); void operator=(const DoubleToStringConverter&); 25082: }; 25082: 25082: 25082: class StringToDoubleConverter { 25082: public: 25082: 25082: 25082: enum Flags { 25082: NO_FLAGS = 0, 25082: ALLOW_HEX = 1, 25082: ALLOW_OCTALS = 2, 25082: ALLOW_TRAILING_JUNK = 4, 25082: ALLOW_LEADING_SPACES = 8, 25082: ALLOW_TRAILING_SPACES = 16, 25082: ALLOW_SPACES_AFTER_SIGN = 32, 25082: ALLOW_CASE_INSENSIBILITY = 64, 25082: ALLOW_HEX_FLOATS = 128, 25082: }; 25082: 25082: static const uc16 kNoSeparator = '\0'; 25082: # 517 "/usr/include/double-conversion/double-conversion.h" 3 4 25082: StringToDoubleConverter(int flags, 25082: double empty_string_value, 25082: double junk_string_value, 25082: const char* infinity_symbol, 25082: const char* nan_symbol, 25082: uc16 separator = kNoSeparator) 25082: : flags_(flags), 25082: empty_string_value_(empty_string_value), 25082: junk_string_value_(junk_string_value), 25082: infinity_symbol_(infinity_symbol), 25082: nan_symbol_(nan_symbol), 25082: separator_(separator) { 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: double StringToDouble(const char* buffer, 25082: int length, 25082: int* processed_characters_count) const; 25082: 25082: 25082: double StringToDouble(const uc16* buffer, 25082: int length, 25082: int* processed_characters_count) const; 25082: 25082: 25082: 25082: 25082: float StringToFloat(const char* buffer, 25082: int length, 25082: int* processed_characters_count) const; 25082: 25082: 25082: float StringToFloat(const uc16* buffer, 25082: int length, 25082: int* processed_characters_count) const; 25082: 25082: private: 25082: const int flags_; 25082: const double empty_string_value_; 25082: const double junk_string_value_; 25082: const char* const infinity_symbol_; 25082: const char* const nan_symbol_; 25082: const uc16 separator_; 25082: 25082: template 25082: double StringToIeee(Iterator start_pointer, 25082: int length, 25082: bool read_as_double, 25082: int* processed_characters_count) const; 25082: 25082: StringToDoubleConverter(); StringToDoubleConverter(const StringToDoubleConverter&); void operator=(const StringToDoubleConverter&); 25082: }; 25082: 25082: } 25082: # 9 "/build/clickhouse-18.16.1+ds/dbms/src/IO/DoubleConverter.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: template struct DoubleToStringConverterFlags 25082: { 25082: static constexpr auto flags = double_conversion::DoubleToStringConverter::NO_FLAGS; 25082: }; 25082: 25082: template <> struct DoubleToStringConverterFlags 25082: { 25082: static constexpr auto flags = double_conversion::DoubleToStringConverter::EMIT_TRAILING_DECIMAL_POINT; 25082: }; 25082: 25082: template 25082: class DoubleConverter 25082: { 25082: DoubleConverter(const DoubleConverter &) = delete; 25082: DoubleConverter & operator=(const DoubleConverter &) = delete; 25082: 25082: DoubleConverter() = default; 25082: 25082: public: 25082: 25082: 25082: static constexpr auto MAX_REPRESENTATION_LENGTH = 26; 25082: using BufferType = char[MAX_REPRESENTATION_LENGTH]; 25082: 25082: static const auto & instance() 25082: { 25082: static const double_conversion::DoubleToStringConverter instance{ 25082: DoubleToStringConverterFlags::flags, "inf", "nan", 'e', -6, 21, 6, 1 25082: }; 25082: 25082: return instance; 25082: } 25082: }; 25082: 25082: } 25082: # 26 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromString.h" 1 3 4 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromVector.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int CANNOT_WRITE_AFTER_END_OF_BUFFER; 25082: } 25082: # 23 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromVector.h" 3 4 25082: template 25082: class WriteBufferFromVector : public WriteBuffer 25082: { 25082: private: 25082: VectorType & vector; 25082: bool is_finished = false; 25082: 25082: void nextImpl() override 25082: { 25082: if (is_finished) 25082: throw Exception("WriteBufferFromVector is finished", ErrorCodes::CANNOT_WRITE_AFTER_END_OF_BUFFER); 25082: 25082: size_t old_size = vector.size(); 25082: vector.resize(old_size * 2); 25082: internal_buffer = Buffer(reinterpret_cast(&vector[old_size]), reinterpret_cast(vector.data() + vector.size())); 25082: working_buffer = internal_buffer; 25082: } 25082: 25082: public: 25082: WriteBufferFromVector(VectorType & vector_) 25082: : WriteBuffer(reinterpret_cast(vector_.data()), vector_.size()), vector(vector_) 25082: { 25082: if (vector.empty()) 25082: { 25082: static constexpr size_t initial_size = 32; 25082: vector.resize(initial_size); 25082: set(reinterpret_cast(vector.data()), vector.size()); 25082: } 25082: } 25082: 25082: void finish() 25082: { 25082: if (is_finished) 25082: return; 25082: is_finished = true; 25082: vector.resize( 25082: ((position() - reinterpret_cast(vector.data())) 25082: + sizeof(typename VectorType::value_type) - 1) 25082: / sizeof(typename VectorType::value_type)); 25082: 25082: 25082: set(nullptr, 0); 25082: } 25082: 25082: ~WriteBufferFromVector() override 25082: { 25082: if (!is_finished) 25082: finish(); 25082: } 25082: }; 25082: 25082: } 25082: # 5 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteBufferFromString.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: 25082: using WriteBufferFromString = WriteBufferFromVector; 25082: 25082: 25082: namespace detail 25082: { 25082: 25082: class StringHolder 25082: { 25082: protected: 25082: std::string value; 25082: }; 25082: } 25082: 25082: 25082: class WriteBufferFromOwnString : public detail::StringHolder, public WriteBufferFromString 25082: { 25082: public: 25082: WriteBufferFromOwnString() : WriteBufferFromString(value) {} 25082: 25082: std::string & str() 25082: { 25082: finish(); 25082: return value; 25082: } 25082: }; 25082: 25082: } 25082: # 27 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Formats/FormatSettings.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: 25082: 25082: 25082: struct FormatSettings 25082: { 25082: struct JSON 25082: { 25082: bool quote_64bit_integers = true; 25082: bool quote_denormals = true; 25082: bool escape_forward_slashes = true; 25082: }; 25082: 25082: JSON json; 25082: 25082: struct CSV 25082: { 25082: char delimiter = ','; 25082: bool allow_single_quotes = true; 25082: bool allow_double_quotes = true; 25082: }; 25082: 25082: CSV csv; 25082: 25082: struct Pretty 25082: { 25082: UInt64 max_rows = 10000; 25082: UInt64 max_column_pad_width = 250; 25082: bool color = true; 25082: }; 25082: 25082: Pretty pretty; 25082: 25082: struct Values 25082: { 25082: bool interpret_expressions = true; 25082: }; 25082: 25082: Values values; 25082: 25082: bool skip_unknown_fields = false; 25082: bool write_statistics = true; 25082: bool import_nested_json = false; 25082: 25082: enum class DateTimeInputFormat 25082: { 25082: Basic, 25082: BestEffort 25082: }; 25082: 25082: DateTimeInputFormat date_time_input_format = DateTimeInputFormat::Basic; 25082: 25082: UInt64 input_allow_errors_num = 0; 25082: Float64 input_allow_errors_ratio = 0; 25082: }; 25082: 25082: } 25082: # 28 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int CANNOT_PRINT_FLOAT_OR_DOUBLE_NUMBER; 25082: extern const int ILLEGAL_TYPE_OF_ARGUMENT; 25082: } 25082: 25082: 25082: 25082: inline void writeChar(char x, WriteBuffer & buf) 25082: { 25082: buf.nextIfAtEnd(); 25082: *buf.position() = x; 25082: ++buf.position(); 25082: } 25082: 25082: 25082: 25082: template 25082: inline void writePODBinary(const T & x, WriteBuffer & buf) 25082: { 25082: buf.write(reinterpret_cast(&x), sizeof(x)); 25082: } 25082: 25082: template 25082: inline void writeIntBinary(const T & x, WriteBuffer & buf) 25082: { 25082: writePODBinary(x, buf); 25082: } 25082: 25082: template 25082: inline void writeFloatBinary(const T & x, WriteBuffer & buf) 25082: { 25082: writePODBinary(x, buf); 25082: } 25082: 25082: 25082: inline void writeStringBinary(const std::string & s, WriteBuffer & buf) 25082: { 25082: writeVarUInt(s.size(), buf); 25082: buf.write(s.data(), s.size()); 25082: } 25082: 25082: inline void writeStringBinary(const char * s, WriteBuffer & buf) 25082: { 25082: writeVarUInt(strlen(s), buf); 25082: buf.write(s, strlen(s)); 25082: } 25082: 25082: inline void writeStringBinary(const StringRef & s, WriteBuffer & buf) 25082: { 25082: writeVarUInt(s.size, buf); 25082: buf.write(s.data, s.size); 25082: } 25082: 25082: 25082: template 25082: void writeVectorBinary(const std::vector & v, WriteBuffer & buf) 25082: { 25082: writeVarUInt(v.size(), buf); 25082: 25082: for (typename std::vector::const_iterator it = v.begin(); it != v.end(); ++it) 25082: writeBinary(*it, buf); 25082: } 25082: 25082: 25082: inline void writeBoolText(bool x, WriteBuffer & buf) 25082: { 25082: writeChar(x ? '1' : '0', buf); 25082: } 25082: 25082: template 25082: inline size_t writeFloatTextFastPath(T x, char * buffer, int len) 25082: { 25082: using Converter = DoubleConverter; 25082: double_conversion::StringBuilder builder{buffer, len}; 25082: 25082: bool result = false; 25082: if constexpr (std::is_same_v) 25082: result = Converter::instance().ToShortest(x, &builder); 25082: else 25082: result = Converter::instance().ToShortestSingle(x, &builder); 25082: 25082: if (!result) 25082: throw Exception("Cannot print floating point number", ErrorCodes::CANNOT_PRINT_FLOAT_OR_DOUBLE_NUMBER); 25082: return builder.position(); 25082: } 25082: 25082: template 25082: inline void writeFloatText(T x, WriteBuffer & buf) 25082: { 25082: static_assert(std::is_same_v || std::is_same_v, "Argument for writeFloatText must be float or double"); 25082: 25082: using Converter = DoubleConverter; 25082: if ((__builtin_expect(!!(buf.available() >= Converter::MAX_REPRESENTATION_LENGTH), 1))) 25082: { 25082: buf.position() += writeFloatTextFastPath(x, buf.position(), Converter::MAX_REPRESENTATION_LENGTH); 25082: return; 25082: } 25082: 25082: Converter::BufferType buffer; 25082: double_conversion::StringBuilder builder{buffer, sizeof(buffer)}; 25082: 25082: bool result = false; 25082: if constexpr (std::is_same_v) 25082: result = Converter::instance().ToShortest(x, &builder); 25082: else 25082: result = Converter::instance().ToShortestSingle(x, &builder); 25082: 25082: if (!result) 25082: throw Exception("Cannot print floating point number", ErrorCodes::CANNOT_PRINT_FLOAT_OR_DOUBLE_NUMBER); 25082: 25082: buf.write(buffer, builder.position()); 25082: } 25082: 25082: 25082: inline void writeString(const String & s, WriteBuffer & buf) 25082: { 25082: buf.write(s.data(), s.size()); 25082: } 25082: 25082: inline void writeString(const char * data, size_t size, WriteBuffer & buf) 25082: { 25082: buf.write(data, size); 25082: } 25082: 25082: inline void writeString(const StringRef & ref, WriteBuffer & buf) 25082: { 25082: writeString(ref.data, ref.size, buf); 25082: } 25082: # 178 "/build/clickhouse-18.16.1+ds/dbms/src/IO/WriteHelpers.h" 3 4 25082: inline void writeJSONString(const char * begin, const char * end, WriteBuffer & buf, const FormatSettings & settings) 25082: { 25082: writeChar('"', buf); 25082: for (const char * it = begin; it != end; ++it) 25082: { 25082: switch (*it) 25082: { 25082: case '\b': 25082: writeChar('\\', buf); 25082: writeChar('b', buf); 25082: break; 25082: case '\f': 25082: writeChar('\\', buf); 25082: writeChar('f', buf); 25082: break; 25082: case '\n': 25082: writeChar('\\', buf); 25082: writeChar('n', buf); 25082: break; 25082: case '\r': 25082: writeChar('\\', buf); 25082: writeChar('r', buf); 25082: break; 25082: case '\t': 25082: writeChar('\\', buf); 25082: writeChar('t', buf); 25082: break; 25082: case '\\': 25082: writeChar('\\', buf); 25082: writeChar('\\', buf); 25082: break; 25082: case '/': 25082: if (settings.json.escape_forward_slashes) 25082: writeChar('\\', buf); 25082: writeChar('/', buf); 25082: break; 25082: case '"': 25082: writeChar('\\', buf); 25082: writeChar('"', buf); 25082: break; 25082: default: 25082: UInt8 c = *it; 25082: if (c <= 0x1F) 25082: { 25082: 25082: 25082: UInt8 higher_half = c >> 4; 25082: UInt8 lower_half = c & 0xF; 25082: 25082: (buf).write(("\\u00"), strlen("\\u00")); 25082: writeChar('0' + higher_half, buf); 25082: 25082: if (lower_half <= 9) 25082: writeChar('0' + lower_half, buf); 25082: else 25082: writeChar('A' + lower_half - 10, buf); 25082: } 25082: else if (end - it >= 3 && it[0] == '\xE2' && it[1] == '\x80' && (it[2] == '\xA8' || it[2] == '\xA9')) 25082: { 25082: 25082: 25082: 25082: if (it[2] == '\xA8') 25082: (buf).write(("\\u2028"), strlen("\\u2028")); 25082: if (it[2] == '\xA9') 25082: (buf).write(("\\u2029"), strlen("\\u2029")); 25082: 25082: 25082: it += 2; 25082: } 25082: else 25082: writeChar(*it, buf); 25082: } 25082: } 25082: writeChar('"', buf); 25082: } 25082: 25082: 25082: template 25082: void writeAnyEscapedString(const char * begin, const char * end, WriteBuffer & buf) 25082: { 25082: const char * pos = begin; 25082: while (true) 25082: { 25082: 25082: const char * next_pos = find_first_symbols<'\b', '\f', '\n', '\r', '\t', '\0', '\\', c>(pos, end); 25082: 25082: if (next_pos == end) 25082: { 25082: buf.write(pos, next_pos - pos); 25082: break; 25082: } 25082: else 25082: { 25082: buf.write(pos, next_pos - pos); 25082: pos = next_pos; 25082: switch (*pos) 25082: { 25082: case '\b': 25082: writeChar('\\', buf); 25082: writeChar('b', buf); 25082: break; 25082: case '\f': 25082: writeChar('\\', buf); 25082: writeChar('f', buf); 25082: break; 25082: case '\n': 25082: writeChar('\\', buf); 25082: writeChar('n', buf); 25082: break; 25082: case '\r': 25082: writeChar('\\', buf); 25082: writeChar('r', buf); 25082: break; 25082: case '\t': 25082: writeChar('\\', buf); 25082: writeChar('t', buf); 25082: break; 25082: case '\0': 25082: writeChar('\\', buf); 25082: writeChar('0', buf); 25082: break; 25082: case '\\': 25082: writeChar('\\', buf); 25082: writeChar('\\', buf); 25082: break; 25082: case c: 25082: writeChar('\\', buf); 25082: writeChar(c, buf); 25082: break; 25082: default: 25082: writeChar(*pos, buf); 25082: } 25082: ++pos; 25082: } 25082: } 25082: } 25082: 25082: 25082: inline void writeJSONString(const String & s, WriteBuffer & buf, const FormatSettings & settings) 25082: { 25082: writeJSONString(s.data(), s.data() + s.size(), buf, settings); 25082: } 25082: 25082: 25082: inline void writeJSONString(const StringRef & ref, WriteBuffer & buf, const FormatSettings & settings) 25082: { 25082: writeJSONString(ref.data, ref.data + ref.size, buf, settings); 25082: } 25082: 25082: 25082: template 25082: void writeAnyEscapedString(const String & s, WriteBuffer & buf) 25082: { 25082: writeAnyEscapedString(s.data(), s.data() + s.size(), buf); 25082: } 25082: 25082: 25082: inline void writeEscapedString(const char * str, size_t size, WriteBuffer & buf) 25082: { 25082: writeAnyEscapedString<'\''>(str, str + size, buf); 25082: } 25082: 25082: 25082: inline void writeEscapedString(const String & s, WriteBuffer & buf) 25082: { 25082: writeEscapedString(s.data(), s.size(), buf); 25082: } 25082: 25082: 25082: inline void writeEscapedString(const StringRef & ref, WriteBuffer & buf) 25082: { 25082: writeEscapedString(ref.data, ref.size, buf); 25082: } 25082: 25082: 25082: template 25082: void writeAnyQuotedString(const char * begin, const char * end, WriteBuffer & buf) 25082: { 25082: writeChar(c, buf); 25082: writeAnyEscapedString(begin, end, buf); 25082: writeChar(c, buf); 25082: } 25082: 25082: 25082: 25082: template 25082: void writeAnyQuotedString(const String & s, WriteBuffer & buf) 25082: { 25082: writeAnyQuotedString(s.data(), s.data() + s.size(), buf); 25082: } 25082: 25082: 25082: template 25082: void writeAnyQuotedString(const StringRef & ref, WriteBuffer & buf) 25082: { 25082: writeAnyQuotedString(ref.data, ref.data + ref.size, buf); 25082: } 25082: 25082: 25082: inline void writeQuotedString(const String & s, WriteBuffer & buf) 25082: { 25082: writeAnyQuotedString<'\''>(s, buf); 25082: } 25082: 25082: 25082: inline void writeQuotedString(const StringRef & ref, WriteBuffer & buf) 25082: { 25082: writeAnyQuotedString<'\''>(ref, buf); 25082: } 25082: 25082: inline void writeDoubleQuotedString(const String & s, WriteBuffer & buf) 25082: { 25082: writeAnyQuotedString<'"'>(s, buf); 25082: } 25082: 25082: 25082: inline void writeBackQuotedString(const String & s, WriteBuffer & buf) 25082: { 25082: writeAnyQuotedString<'`'>(s, buf); 25082: } 25082: 25082: 25082: 25082: template 25082: inline void writeProbablyQuotedStringImpl(const String & s, WriteBuffer & buf, F && write_quoted_string) 25082: { 25082: if (s.empty() || !isValidIdentifierBegin(s[0])) 25082: write_quoted_string(s, buf); 25082: else 25082: { 25082: const char * pos = s.data() + 1; 25082: const char * end = s.data() + s.size(); 25082: for (; pos < end; ++pos) 25082: if (!isWordCharASCII(*pos)) 25082: break; 25082: if (pos != end) 25082: write_quoted_string(s, buf); 25082: else 25082: writeString(s, buf); 25082: } 25082: } 25082: 25082: inline void writeProbablyBackQuotedString(const String & s, WriteBuffer & buf) 25082: { 25082: writeProbablyQuotedStringImpl(s, buf, [](const String & s_, WriteBuffer & buf_) { return writeBackQuotedString(s_, buf_); }); 25082: } 25082: 25082: inline void writeProbablyDoubleQuotedString(const String & s, WriteBuffer & buf) 25082: { 25082: writeProbablyQuotedStringImpl(s, buf, [](const String & s_, WriteBuffer & buf_) { return writeDoubleQuotedString(s_, buf_); }); 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: template 25082: void writeCSVString(const char * begin, const char * end, WriteBuffer & buf) 25082: { 25082: writeChar(quote, buf); 25082: 25082: const char * pos = begin; 25082: while (true) 25082: { 25082: const char * next_pos = find_first_symbols(pos, end); 25082: 25082: if (next_pos == end) 25082: { 25082: buf.write(pos, end - pos); 25082: break; 25082: } 25082: else 25082: { 25082: ++next_pos; 25082: buf.write(pos, next_pos - pos); 25082: writeChar(quote, buf); 25082: } 25082: 25082: pos = next_pos; 25082: } 25082: 25082: writeChar(quote, buf); 25082: } 25082: 25082: template 25082: void writeCSVString(const String & s, WriteBuffer & buf) 25082: { 25082: writeCSVString(s.data(), s.data() + s.size(), buf); 25082: } 25082: 25082: template 25082: void writeCSVString(const StringRef & s, WriteBuffer & buf) 25082: { 25082: writeCSVString(s.data, s.data + s.size, buf); 25082: } 25082: 25082: 25082: 25082: inline void writeXMLString(const char * begin, const char * end, WriteBuffer & buf) 25082: { 25082: const char * pos = begin; 25082: while (true) 25082: { 25082: 25082: const char * next_pos = find_first_symbols<'<', '&'>(pos, end); 25082: 25082: if (next_pos == end) 25082: { 25082: buf.write(pos, end - pos); 25082: break; 25082: } 25082: else if (*next_pos == '<') 25082: { 25082: buf.write(pos, next_pos - pos); 25082: ++next_pos; 25082: (buf).write(("<"), strlen("<")); 25082: } 25082: else if (*next_pos == '&') 25082: { 25082: buf.write(pos, next_pos - pos); 25082: ++next_pos; 25082: (buf).write(("&"), strlen("&")); 25082: } 25082: 25082: pos = next_pos; 25082: } 25082: } 25082: 25082: inline void writeXMLString(const String & s, WriteBuffer & buf) 25082: { 25082: writeXMLString(s.data(), s.data() + s.size(), buf); 25082: } 25082: 25082: inline void writeXMLString(const StringRef & s, WriteBuffer & buf) 25082: { 25082: writeXMLString(s.data, s.data + s.size, buf); 25082: } 25082: 25082: template 25082: void formatHex(IteratorSrc src, IteratorDst dst, const size_t num_bytes); 25082: void formatUUID(const UInt8 * src16, UInt8 * dst36); 25082: void formatUUID(std::reverse_iterator dst16, UInt8 * dst36); 25082: 25082: inline void writeUUIDText(const UUID & uuid, WriteBuffer & buf) 25082: { 25082: char s[36]; 25082: 25082: formatUUID(std::reverse_iterator(reinterpret_cast(&uuid) + 16), reinterpret_cast(s)); 25082: buf.write(s, sizeof(s)); 25082: } 25082: 25082: 25082: template 25082: inline void writeDateText(const LocalDate & date, WriteBuffer & buf) 25082: { 25082: static const char digits[201] = 25082: "00010203040506070809" 25082: "10111213141516171819" 25082: "20212223242526272829" 25082: "30313233343536373839" 25082: "40414243444546474849" 25082: "50515253545556575859" 25082: "60616263646566676869" 25082: "70717273747576777879" 25082: "80818283848586878889" 25082: "90919293949596979899"; 25082: 25082: if (buf.position() + 10 <= buf.buffer().end()) 25082: { 25082: memcpy(buf.position(), &digits[date.year() / 100 * 2], 2); 25082: buf.position() += 2; 25082: memcpy(buf.position(), &digits[date.year() % 100 * 2], 2); 25082: buf.position() += 2; 25082: *buf.position() = delimiter; 25082: ++buf.position(); 25082: memcpy(buf.position(), &digits[date.month() * 2], 2); 25082: buf.position() += 2; 25082: *buf.position() = delimiter; 25082: ++buf.position(); 25082: memcpy(buf.position(), &digits[date.day() * 2], 2); 25082: buf.position() += 2; 25082: } 25082: else 25082: { 25082: buf.write(&digits[date.year() / 100 * 2], 2); 25082: buf.write(&digits[date.year() % 100 * 2], 2); 25082: buf.write(delimiter); 25082: buf.write(&digits[date.month() * 2], 2); 25082: buf.write(delimiter); 25082: buf.write(&digits[date.day() * 2], 2); 25082: } 25082: } 25082: 25082: template 25082: inline void writeDateText(DayNum date, WriteBuffer & buf) 25082: { 25082: if ((__builtin_expect(!!(!date), 0))) 25082: { 25082: static const char s[] = {'0', '0', '0', '0', delimiter, '0', '0', delimiter, '0', '0'}; 25082: buf.write(s, sizeof(s)); 25082: return; 25082: } 25082: 25082: writeDateText(LocalDate(date), buf); 25082: } 25082: 25082: 25082: 25082: template 25082: inline void writeDateTimeText(const LocalDateTime & datetime, WriteBuffer & buf) 25082: { 25082: static const char digits[201] = 25082: "00010203040506070809" 25082: "10111213141516171819" 25082: "20212223242526272829" 25082: "30313233343536373839" 25082: "40414243444546474849" 25082: "50515253545556575859" 25082: "60616263646566676869" 25082: "70717273747576777879" 25082: "80818283848586878889" 25082: "90919293949596979899"; 25082: 25082: if (buf.position() + 19 <= buf.buffer().end()) 25082: { 25082: memcpy(buf.position(), &digits[datetime.year() / 100 * 2], 2); 25082: buf.position() += 2; 25082: memcpy(buf.position(), &digits[datetime.year() % 100 * 2], 2); 25082: buf.position() += 2; 25082: *buf.position() = date_delimeter; 25082: ++buf.position(); 25082: memcpy(buf.position(), &digits[datetime.month() * 2], 2); 25082: buf.position() += 2; 25082: *buf.position() = date_delimeter; 25082: ++buf.position(); 25082: memcpy(buf.position(), &digits[datetime.day() * 2], 2); 25082: buf.position() += 2; 25082: *buf.position() = between_date_time_delimiter; 25082: ++buf.position(); 25082: memcpy(buf.position(), &digits[datetime.hour() * 2], 2); 25082: buf.position() += 2; 25082: *buf.position() = time_delimeter; 25082: ++buf.position(); 25082: memcpy(buf.position(), &digits[datetime.minute() * 2], 2); 25082: buf.position() += 2; 25082: *buf.position() = time_delimeter; 25082: ++buf.position(); 25082: memcpy(buf.position(), &digits[datetime.second() * 2], 2); 25082: buf.position() += 2; 25082: } 25082: else 25082: { 25082: buf.write(&digits[datetime.year() / 100 * 2], 2); 25082: buf.write(&digits[datetime.year() % 100 * 2], 2); 25082: buf.write(date_delimeter); 25082: buf.write(&digits[datetime.month() * 2], 2); 25082: buf.write(date_delimeter); 25082: buf.write(&digits[datetime.day() * 2], 2); 25082: buf.write(between_date_time_delimiter); 25082: buf.write(&digits[datetime.hour() * 2], 2); 25082: buf.write(time_delimeter); 25082: buf.write(&digits[datetime.minute() * 2], 2); 25082: buf.write(time_delimeter); 25082: buf.write(&digits[datetime.second() * 2], 2); 25082: } 25082: } 25082: 25082: 25082: template 25082: inline void writeDateTimeText(time_t datetime, WriteBuffer & buf, const DateLUTImpl & date_lut = DateLUT::instance()) 25082: { 25082: if ((__builtin_expect(!!(!datetime), 0))) 25082: { 25082: static const char s[] = 25082: { 25082: '0', '0', '0', '0', date_delimeter, '0', '0', date_delimeter, '0', '0', 25082: between_date_time_delimiter, 25082: '0', '0', time_delimeter, '0', '0', time_delimeter, '0', '0' 25082: }; 25082: buf.write(s, sizeof(s)); 25082: return; 25082: } 25082: 25082: const auto & values = date_lut.getValues(datetime); 25082: writeDateTimeText( 25082: LocalDateTime(values.year, values.month, values.day_of_month, 25082: date_lut.toHour(datetime), date_lut.toMinute(datetime), date_lut.toSecond(datetime)), buf); 25082: } 25082: 25082: 25082: 25082: template 25082: inline std::enable_if_t, void> 25082: writeBinary(const T & x, WriteBuffer & buf) { writePODBinary(x, buf); } 25082: 25082: inline void writeBinary(const String & x, WriteBuffer & buf) { writeStringBinary(x, buf); } 25082: inline void writeBinary(const StringRef & x, WriteBuffer & buf) { writeStringBinary(x, buf); } 25082: inline void writeBinary(const Int128 & x, WriteBuffer & buf) { writePODBinary(x, buf); } 25082: inline void writeBinary(const UInt128 & x, WriteBuffer & buf) { writePODBinary(x, buf); } 25082: inline void writeBinary(const UInt256 & x, WriteBuffer & buf) { writePODBinary(x, buf); } 25082: inline void writeBinary(const Decimal32 & x, WriteBuffer & buf) { writePODBinary(x, buf); } 25082: inline void writeBinary(const Decimal64 & x, WriteBuffer & buf) { writePODBinary(x, buf); } 25082: inline void writeBinary(const Decimal128 & x, WriteBuffer & buf) { writePODBinary(x, buf); } 25082: inline void writeBinary(const LocalDate & x, WriteBuffer & buf) { writePODBinary(x, buf); } 25082: inline void writeBinary(const LocalDateTime & x, WriteBuffer & buf) { writePODBinary(x, buf); } 25082: 25082: 25082: 25082: template 25082: inline std::enable_if_t, void> 25082: writeText(const T & x, WriteBuffer & buf) { writeIntText(x, buf); } 25082: 25082: template 25082: inline std::enable_if_t, void> 25082: writeText(const T & x, WriteBuffer & buf) { writeFloatText(x, buf); } 25082: 25082: inline void writeText(const String & x, WriteBuffer & buf) { writeEscapedString(x, buf); } 25082: 25082: 25082: template <> inline void writeText(const bool & x, WriteBuffer & buf) { writeBoolText(x, buf); } 25082: 25082: 25082: 25082: inline void writeText(const char * x, WriteBuffer & buf) { writeEscapedString(x, strlen(x), buf); } 25082: inline void writeText(const char * x, size_t size, WriteBuffer & buf) { writeEscapedString(x, size, buf); } 25082: 25082: inline void writeText(const LocalDate & x, WriteBuffer & buf) { writeDateText(x, buf); } 25082: inline void writeText(const LocalDateTime & x, WriteBuffer & buf) { writeDateTimeText(x, buf); } 25082: inline void writeText(const UUID & x, WriteBuffer & buf) { writeUUIDText(x, buf); } 25082: inline void writeText(const UInt128 & x, WriteBuffer & buf) { writeText(UUID(x), buf); } 25082: 25082: template inline T decimalScaleMultiplier(UInt32 scale); 25082: template <> inline Int32 decimalScaleMultiplier(UInt32 scale) { return common::exp10_i32(scale); } 25082: template <> inline Int64 decimalScaleMultiplier(UInt32 scale) { return common::exp10_i64(scale); } 25082: template <> inline Int128 decimalScaleMultiplier(UInt32 scale) { return common::exp10_i128(scale); } 25082: 25082: 25082: template 25082: void writeText(Decimal value, UInt32 scale, WriteBuffer & ostr) 25082: { 25082: if (value < Decimal(0)) 25082: { 25082: value *= Decimal(-1); 25082: writeChar('-', ostr); 25082: } 25082: 25082: T whole_part = value; 25082: if (scale) 25082: whole_part = value / decimalScaleMultiplier(scale); 25082: 25082: writeIntText(whole_part, ostr); 25082: if (scale) 25082: { 25082: writeChar('.', ostr); 25082: String str_fractional(scale, '0'); 25082: for (Int32 pos = scale - 1; pos >= 0; --pos, value /= Decimal(10)) 25082: str_fractional[pos] += value % Decimal(10); 25082: ostr.write(str_fractional.data(), scale); 25082: } 25082: } 25082: 25082: 25082: template 25082: inline std::enable_if_t, void> 25082: writeQuoted(const T & x, WriteBuffer & buf) { writeText(x, buf); } 25082: 25082: inline void writeQuoted(const String & x, WriteBuffer & buf) { writeQuotedString(x, buf); } 25082: 25082: inline void writeQuoted(const LocalDate & x, WriteBuffer & buf) 25082: { 25082: writeChar('\'', buf); 25082: writeDateText(x, buf); 25082: writeChar('\'', buf); 25082: } 25082: 25082: inline void writeQuoted(const LocalDateTime & x, WriteBuffer & buf) 25082: { 25082: writeChar('\'', buf); 25082: writeDateTimeText(x, buf); 25082: writeChar('\'', buf); 25082: } 25082: 25082: inline void writeQuoted(const UUID & x, WriteBuffer & buf) 25082: { 25082: writeChar('\'', buf); 25082: writeText(x, buf); 25082: writeChar('\'', buf); 25082: } 25082: 25082: 25082: template 25082: inline std::enable_if_t, void> 25082: writeDoubleQuoted(const T & x, WriteBuffer & buf) { writeText(x, buf); } 25082: 25082: inline void writeDoubleQuoted(const String & x, WriteBuffer & buf) { writeDoubleQuotedString(x, buf); } 25082: 25082: inline void writeDoubleQuoted(const LocalDate & x, WriteBuffer & buf) 25082: { 25082: writeChar('"', buf); 25082: writeDateText(x, buf); 25082: writeChar('"', buf); 25082: } 25082: 25082: inline void writeDoubleQuoted(const LocalDateTime & x, WriteBuffer & buf) 25082: { 25082: writeChar('"', buf); 25082: writeDateTimeText(x, buf); 25082: writeChar('"', buf); 25082: } 25082: 25082: inline void writeDoubleQuoted(const UUID & x, WriteBuffer & buf) 25082: { 25082: writeChar('"', buf); 25082: writeText(x, buf); 25082: writeChar('"', buf); 25082: } 25082: 25082: 25082: 25082: template 25082: inline std::enable_if_t, void> 25082: writeCSV(const T & x, WriteBuffer & buf) { writeText(x, buf); } 25082: 25082: inline void writeCSV(const String & x, WriteBuffer & buf) { writeCSVString<>(x, buf); } 25082: inline void writeCSV(const LocalDate & x, WriteBuffer & buf) { writeDoubleQuoted(x, buf); } 25082: inline void writeCSV(const LocalDateTime & x, WriteBuffer & buf) { writeDoubleQuoted(x, buf); } 25082: inline void writeCSV(const UUID & x, WriteBuffer & buf) { writeDoubleQuoted(x, buf); } 25082: inline void writeCSV(const UInt128, WriteBuffer &) 25082: { 25082: 25082: 25082: 25082: throw Exception("UInt128 cannot be write as a text", ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT); 25082: } 25082: 25082: template 25082: void writeBinary(const std::vector & x, WriteBuffer & buf) 25082: { 25082: size_t size = x.size(); 25082: writeVarUInt(size, buf); 25082: for (size_t i = 0; i < size; ++i) 25082: writeBinary(x[i], buf); 25082: } 25082: 25082: template 25082: void writeQuoted(const std::vector & x, WriteBuffer & buf) 25082: { 25082: writeChar('[', buf); 25082: for (size_t i = 0, size = x.size(); i < size; ++i) 25082: { 25082: if (i != 0) 25082: writeChar(',', buf); 25082: writeQuoted(x[i], buf); 25082: } 25082: writeChar(']', buf); 25082: } 25082: 25082: template 25082: void writeDoubleQuoted(const std::vector & x, WriteBuffer & buf) 25082: { 25082: writeChar('[', buf); 25082: for (size_t i = 0, size = x.size(); i < size; ++i) 25082: { 25082: if (i != 0) 25082: writeChar(',', buf); 25082: writeDoubleQuoted(x[i], buf); 25082: } 25082: writeChar(']', buf); 25082: } 25082: 25082: template 25082: void writeText(const std::vector & x, WriteBuffer & buf) 25082: { 25082: writeQuoted(x, buf); 25082: } 25082: 25082: 25082: 25082: 25082: void writeException(const Exception & e, WriteBuffer & buf, bool with_stack_trace); 25082: 25082: 25082: 25082: template 25082: inline String toString(const T & x) 25082: { 25082: WriteBufferFromOwnString buf; 25082: writeText(x, buf); 25082: return buf.str(); 25082: } 25082: 25082: } 25082: # 12 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/ColumnAggregateFunction.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: class Arena; 25082: using ArenaPtr = std::shared_ptr; 25082: using Arenas = std::vector; 25082: # 46 "/build/clickhouse-18.16.1+ds/dbms/src/Columns/ColumnAggregateFunction.h" 3 4 25082: class ColumnAggregateFunction final : public COWPtrHelper 25082: { 25082: public: 25082: using Container = PaddedPODArray; 25082: 25082: private: 25082: friend class COWPtrHelper; 25082: 25082: 25082: Arenas arenas; 25082: 25082: 25082: AggregateFunctionPtr func; 25082: 25082: 25082: 25082: ColumnPtr src; 25082: 25082: 25082: Container data; 25082: 25082: ColumnAggregateFunction() {} 25082: 25082: 25082: MutablePtr createView() const 25082: { 25082: MutablePtr res = create(func, arenas); 25082: res->src = getPtr(); 25082: return res; 25082: } 25082: 25082: 25082: 25082: 25082: void ensureOwnership(); 25082: 25082: ColumnAggregateFunction(const AggregateFunctionPtr & func_) 25082: : func(func_) 25082: { 25082: } 25082: 25082: ColumnAggregateFunction(const AggregateFunctionPtr & func_, const Arenas & arenas_) 25082: : arenas(arenas_), func(func_) 25082: { 25082: } 25082: 25082: ColumnAggregateFunction(const ColumnAggregateFunction & src_) 25082: : arenas(src_.arenas), func(src_.func), src(src_.getPtr()), data(src_.data.begin(), src_.data.end()) 25082: { 25082: } 25082: 25082: public: 25082: ~ColumnAggregateFunction() override; 25082: 25082: void set(const AggregateFunctionPtr & func_) 25082: { 25082: func = func_; 25082: } 25082: 25082: AggregateFunctionPtr getAggregateFunction() { return func; } 25082: AggregateFunctionPtr getAggregateFunction() const { return func; } 25082: 25082: 25082: void addArena(ArenaPtr arena_); 25082: 25082: 25082: 25082: MutableColumnPtr convertToValues() const; 25082: 25082: std::string getName() const override { return "AggregateFunction(" + func->getName() + ")"; } 25082: const char * getFamilyName() const override { return "AggregateFunction"; } 25082: 25082: size_t size() const override 25082: { 25082: return getData().size(); 25082: } 25082: 25082: MutableColumnPtr cloneEmpty() const override; 25082: 25082: Field operator[](size_t n) const override; 25082: 25082: void get(size_t n, Field & res) const override; 25082: 25082: StringRef getDataAt(size_t n) const override; 25082: 25082: void insertData(const char * pos, size_t length) override; 25082: 25082: void insertFrom(const IColumn & from, size_t n) override; 25082: 25082: void insertFrom(ConstAggregateDataPtr place); 25082: 25082: 25082: void insertMergeFrom(ConstAggregateDataPtr place); 25082: 25082: void insertMergeFrom(const IColumn & from, size_t n); 25082: 25082: Arena & createOrGetArena(); 25082: 25082: void insert(const Field & x) override; 25082: 25082: void insertDefault() override; 25082: 25082: StringRef serializeValueIntoArena(size_t n, Arena & arena, char const *& begin) const override; 25082: 25082: const char * deserializeAndInsertFromArena(const char * pos) override; 25082: 25082: void updateHashWithValue(size_t n, SipHash & hash) const override; 25082: 25082: size_t byteSize() const override; 25082: 25082: size_t allocatedBytes() const override; 25082: 25082: void insertRangeFrom(const IColumn & from, size_t start, size_t length) override; 25082: 25082: void popBack(size_t n) override; 25082: 25082: ColumnPtr filter(const Filter & filter, ssize_t result_size_hint) const override; 25082: 25082: ColumnPtr permute(const Permutation & perm, size_t limit) const override; 25082: 25082: ColumnPtr index(const IColumn & indexes, size_t limit) const override; 25082: 25082: template 25082: ColumnPtr indexImpl(const PaddedPODArray & indexes, size_t limit) const; 25082: 25082: ColumnPtr replicate(const Offsets & offsets) const override; 25082: 25082: MutableColumns scatter(ColumnIndex num_columns, const Selector & selector) const override; 25082: 25082: void gather(ColumnGathererStream & gatherer_stream) override; 25082: 25082: int compareAt(size_t, size_t, const IColumn &, int) const override 25082: { 25082: return 0; 25082: } 25082: 25082: void getPermutation(bool reverse, size_t limit, int nan_direction_hint, Permutation & res) const override; 25082: 25082: 25082: Container & getData() 25082: { 25082: return data; 25082: } 25082: 25082: const Container & getData() const 25082: { 25082: return data; 25082: } 25082: 25082: void getExtremes(Field & min, Field & max) const override; 25082: }; 25082: 25082: 25082: } 25082: # 14 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionHelpers.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Core/callOnTypeIndex.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: template 25082: struct TypePair 25082: { 25082: using LeftType = T; 25082: using RightType = U; 25082: }; 25082: 25082: 25082: 25082: template 25082: bool callOnBasicType(TypeIndex number, F && f) 25082: { 25082: if constexpr (_int) 25082: { 25082: switch (number) 25082: { 25082: case TypeIndex::UInt8: return f(TypePair()); 25082: case TypeIndex::UInt16: return f(TypePair()); 25082: case TypeIndex::UInt32: return f(TypePair()); 25082: case TypeIndex::UInt64: return f(TypePair()); 25082: 25082: 25082: case TypeIndex::Int8: return f(TypePair()); 25082: case TypeIndex::Int16: return f(TypePair()); 25082: case TypeIndex::Int32: return f(TypePair()); 25082: case TypeIndex::Int64: return f(TypePair()); 25082: case TypeIndex::Int128: return f(TypePair()); 25082: 25082: default: 25082: break; 25082: } 25082: } 25082: 25082: if constexpr (_decimal) 25082: { 25082: switch (number) 25082: { 25082: case TypeIndex::Decimal32: return f(TypePair()); 25082: case TypeIndex::Decimal64: return f(TypePair()); 25082: case TypeIndex::Decimal128: return f(TypePair()); 25082: default: 25082: break; 25082: } 25082: } 25082: 25082: if constexpr (_float) 25082: { 25082: switch (number) 25082: { 25082: case TypeIndex::Float32: return f(TypePair()); 25082: case TypeIndex::Float64: return f(TypePair()); 25082: default: 25082: break; 25082: } 25082: } 25082: 25082: if constexpr (_datetime) 25082: { 25082: switch (number) 25082: { 25082: case TypeIndex::Date: return f(TypePair()); 25082: case TypeIndex::DateTime: return f(TypePair()); 25082: default: 25082: break; 25082: } 25082: } 25082: 25082: return false; 25082: } 25082: 25082: 25082: template 25082: inline bool callOnBasicTypes(TypeIndex type_num1, TypeIndex type_num2, F && f) 25082: { 25082: if constexpr (_int) 25082: { 25082: switch (type_num1) 25082: { 25082: case TypeIndex::UInt8: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::UInt16: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::UInt32: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::UInt64: return callOnBasicType(type_num2, std::forward(f)); 25082: 25082: 25082: case TypeIndex::Int8: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::Int16: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::Int32: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::Int64: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::Int128: return callOnBasicType(type_num2, std::forward(f)); 25082: default: 25082: break; 25082: } 25082: } 25082: 25082: if constexpr (_decimal) 25082: { 25082: switch (type_num1) 25082: { 25082: case TypeIndex::Decimal32: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::Decimal64: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::Decimal128: return callOnBasicType(type_num2, std::forward(f)); 25082: default: 25082: break; 25082: } 25082: } 25082: 25082: if constexpr (_float) 25082: { 25082: switch (type_num1) 25082: { 25082: case TypeIndex::Float32: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::Float64: return callOnBasicType(type_num2, std::forward(f)); 25082: default: 25082: break; 25082: } 25082: } 25082: 25082: if constexpr (_datetime) 25082: { 25082: switch (type_num1) 25082: { 25082: case TypeIndex::Date: return callOnBasicType(type_num2, std::forward(f)); 25082: case TypeIndex::DateTime: return callOnBasicType(type_num2, std::forward(f)); 25082: default: 25082: break; 25082: } 25082: } 25082: 25082: return false; 25082: } 25082: 25082: 25082: class DataTypeDate; 25082: class DataTypeDateTime; 25082: class DataTypeString; 25082: class DataTypeFixedString; 25082: class DataTypeUUID; 25082: template class DataTypeEnum; 25082: template class DataTypeNumber; 25082: template class DataTypeDecimal; 25082: 25082: 25082: template 25082: bool callOnIndexAndDataType(TypeIndex number, F && f) 25082: { 25082: switch (number) 25082: { 25082: case TypeIndex::UInt8: return f(TypePair, T>()); 25082: case TypeIndex::UInt16: return f(TypePair, T>()); 25082: case TypeIndex::UInt32: return f(TypePair, T>()); 25082: case TypeIndex::UInt64: return f(TypePair, T>()); 25082: 25082: case TypeIndex::Int8: return f(TypePair, T>()); 25082: case TypeIndex::Int16: return f(TypePair, T>()); 25082: case TypeIndex::Int32: return f(TypePair, T>()); 25082: case TypeIndex::Int64: return f(TypePair, T>()); 25082: 25082: case TypeIndex::Float32: return f(TypePair, T>()); 25082: case TypeIndex::Float64: return f(TypePair, T>()); 25082: 25082: case TypeIndex::Decimal32: return f(TypePair, T>()); 25082: case TypeIndex::Decimal64: return f(TypePair, T>()); 25082: case TypeIndex::Decimal128: return f(TypePair, T>()); 25082: 25082: case TypeIndex::Date: return f(TypePair()); 25082: case TypeIndex::DateTime: return f(TypePair()); 25082: 25082: case TypeIndex::String: return f(TypePair()); 25082: case TypeIndex::FixedString: return f(TypePair()); 25082: 25082: case TypeIndex::Enum8: return f(TypePair, T>()); 25082: case TypeIndex::Enum16: return f(TypePair, T>()); 25082: 25082: case TypeIndex::UUID: return f(TypePair()); 25082: 25082: default: 25082: break; 25082: } 25082: 25082: return false; 25082: } 25082: 25082: } 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionHelpers.h" 2 3 4 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: template 25082: const Type * checkAndGetDataType(const IDataType * data_type) 25082: { 25082: return typeid_cast(data_type); 25082: } 25082: 25082: template 25082: const Type * checkAndGetColumn(const IColumn * column) 25082: { 25082: return typeid_cast(column); 25082: } 25082: 25082: template 25082: bool checkColumn(const IColumn * column) 25082: { 25082: return checkAndGetColumn(column); 25082: } 25082: 25082: 25082: template 25082: const ColumnConst * checkAndGetColumnConst(const IColumn * column) 25082: { 25082: if (!column || !column->isColumnConst()) 25082: return {}; 25082: 25082: const ColumnConst * res = static_cast(column); 25082: 25082: if (!checkColumn(&res->getDataColumn())) 25082: return {}; 25082: 25082: return res; 25082: } 25082: 25082: template 25082: const Type * checkAndGetColumnConstData(const IColumn * column) 25082: { 25082: const ColumnConst * res = checkAndGetColumnConst(column); 25082: 25082: if (!res) 25082: return {}; 25082: 25082: return static_cast(&res->getDataColumn()); 25082: } 25082: 25082: template 25082: bool checkColumnConst(const IColumn * column) 25082: { 25082: return checkAndGetColumnConst(column); 25082: } 25082: 25082: 25082: 25082: const ColumnConst * checkAndGetColumnConstStringOrFixedString(const IColumn * column); 25082: 25082: 25082: 25082: template 25082: inline std::enable_if_t, Field> toField(const T & x) 25082: { 25082: return Field(NearestFieldType(x)); 25082: } 25082: 25082: template 25082: inline std::enable_if_t, Field> toField(const T & x, UInt32 scale) 25082: { 25082: return Field(NearestFieldType(x, scale)); 25082: } 25082: 25082: 25082: Columns convertConstTupleToConstantElements(const ColumnConst & column); 25082: 25082: 25082: 25082: 25082: 25082: Block createBlockWithNestedColumns(const Block & block, const ColumnNumbers & args); 25082: 25082: 25082: Block createBlockWithNestedColumns(const Block & block, const ColumnNumbers & args, size_t result); 25082: 25082: } 25082: # 16 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/NumberTraits.h" 1 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: 25082: 25082: 25082: 25082: namespace NumberTraits 25082: { 25082: 25082: struct Error {}; 25082: 25082: constexpr size_t max(size_t x, size_t y) 25082: { 25082: return x > y ? x : y; 25082: } 25082: 25082: constexpr size_t min(size_t x, size_t y) 25082: { 25082: return x < y ? x : y; 25082: } 25082: 25082: constexpr size_t nextSize(size_t size) 25082: { 25082: return min(size * 2, 8); 25082: } 25082: 25082: template 25082: struct Construct 25082: { 25082: using Type = Error; 25082: }; 25082: 25082: template <> struct Construct { using Type = UInt8; }; 25082: template <> struct Construct { using Type = UInt16; }; 25082: template <> struct Construct { using Type = UInt32; }; 25082: template <> struct Construct { using Type = UInt64; }; 25082: template <> struct Construct { using Type = Float32; }; 25082: template <> struct Construct { using Type = Float32; }; 25082: template <> struct Construct { using Type = Float32; }; 25082: template <> struct Construct { using Type = Float64; }; 25082: template <> struct Construct { using Type = Int8; }; 25082: template <> struct Construct { using Type = Int16; }; 25082: template <> struct Construct { using Type = Int32; }; 25082: template <> struct Construct { using Type = Int64; }; 25082: template <> struct Construct { using Type = Float32; }; 25082: template <> struct Construct { using Type = Float32; }; 25082: template <> struct Construct { using Type = Float32; }; 25082: template <> struct Construct { using Type = Float64; }; 25082: # 66 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/NumberTraits.h" 3 4 25082: template struct ResultOfAdditionMultiplication 25082: { 25082: using Type = typename Construct< 25082: std::is_signed_v || std::is_signed_v, 25082: std::is_floating_point_v || std::is_floating_point_v, 25082: nextSize(max(sizeof(A), sizeof(B)))>::Type; 25082: }; 25082: 25082: template struct ResultOfSubtraction 25082: { 25082: using Type = typename Construct< 25082: true, 25082: std::is_floating_point_v || std::is_floating_point_v, 25082: nextSize(max(sizeof(A), sizeof(B)))>::Type; 25082: }; 25082: 25082: 25082: 25082: template struct ResultOfFloatingPointDivision 25082: { 25082: using Type = Float64; 25082: }; 25082: 25082: 25082: 25082: template struct ResultOfIntegerDivision 25082: { 25082: using Type = typename Construct< 25082: std::is_signed_v || std::is_signed_v, 25082: false, 25082: sizeof(A)>::Type; 25082: }; 25082: 25082: 25082: 25082: template struct ResultOfModulo 25082: { 25082: using Type = typename Construct< 25082: std::is_signed_v || std::is_signed_v, 25082: false, 25082: sizeof(B)>::Type; 25082: }; 25082: 25082: template struct ResultOfNegate 25082: { 25082: using Type = typename Construct< 25082: true, 25082: std::is_floating_point_v, 25082: std::is_signed_v ? sizeof(A) : nextSize(sizeof(A))>::Type; 25082: }; 25082: 25082: template struct ResultOfAbs 25082: { 25082: using Type = typename Construct< 25082: false, 25082: std::is_floating_point_v, 25082: sizeof(A)>::Type; 25082: }; 25082: 25082: 25082: 25082: template struct ResultOfBit 25082: { 25082: using Type = typename Construct< 25082: std::is_signed_v || std::is_signed_v, 25082: false, 25082: std::is_floating_point_v || std::is_floating_point_v ? 8 : max(sizeof(A), sizeof(B))>::Type; 25082: }; 25082: 25082: template struct ResultOfBitNot 25082: { 25082: using Type = typename Construct< 25082: std::is_signed_v, 25082: false, 25082: sizeof(A)>::Type; 25082: }; 25082: # 155 "/build/clickhouse-18.16.1+ds/dbms/src/DataTypes/NumberTraits.h" 3 4 25082: template 25082: struct ResultOfIf 25082: { 25082: static constexpr bool has_float = std::is_floating_point_v || std::is_floating_point_v; 25082: static constexpr bool has_integer = std::is_integral_v || std::is_integral_v; 25082: static constexpr bool has_signed = std::is_signed_v || std::is_signed_v; 25082: static constexpr bool has_unsigned = !std::is_signed_v || !std::is_signed_v; 25082: 25082: static constexpr size_t max_size_of_unsigned_integer = max(std::is_signed_v ? 0 : sizeof(A), std::is_signed_v ? 0 : sizeof(B)); 25082: static constexpr size_t max_size_of_signed_integer = max(std::is_signed_v ? sizeof(A) : 0, std::is_signed_v ? sizeof(B) : 0); 25082: static constexpr size_t max_size_of_integer = max(std::is_integral_v ? sizeof(A) : 0, std::is_integral_v ? sizeof(B) : 0); 25082: static constexpr size_t max_size_of_float = max(std::is_floating_point_v ? sizeof(A) : 0, std::is_floating_point_v ? sizeof(B) : 0); 25082: 25082: using ConstructedType = typename Construct= max_size_of_float) 25082: || (has_signed && has_unsigned && max_size_of_unsigned_integer >= max_size_of_signed_integer)) 25082: ? max(sizeof(A), sizeof(B)) * 2 25082: : max(sizeof(A), sizeof(B))>::Type; 25082: 25082: using ConstructedWithUUID = std::conditional_t && std::is_same_v, A, ConstructedType>; 25082: 25082: using Type = std::conditional_t && !IsDecimalNumber, ConstructedWithUUID, 25082: std::conditional_t && IsDecimalNumber, std::conditional_t<(sizeof(A) > sizeof(B)), A, B>, Error>>; 25082: }; 25082: 25082: 25082: template struct ToInteger 25082: { 25082: using Type = typename Construct< 25082: std::is_signed_v, 25082: false, 25082: std::is_floating_point_v ? 8 : sizeof(A)>::Type; 25082: }; 25082: 25082: 25082: 25082: 25082: template 25082: constexpr bool LeastGreatestSpecialCase = 25082: std::is_integral_v && std::is_integral_v 25082: && (8 == sizeof(A) && sizeof(A) == sizeof(B)) 25082: && (std::is_signed_v ^ std::is_signed_v); 25082: 25082: template 25082: using ResultOfLeast = std::conditional_t, 25082: typename Construct::Type, 25082: typename ResultOfIf::Type>; 25082: 25082: template 25082: using ResultOfGreatest = std::conditional_t, 25082: typename Construct::Type, 25082: typename ResultOfIf::Type>; 25082: 25082: } 25082: 25082: } 25082: # 17 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/Arena.h" 1 3 4 25082: 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Common/Arena.h" 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/ProfileEvents.h" 1 3 4 25082: 25082: 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Common/VariableContext.h" 1 3 4 25082: 25082: 25082: 25082: 25082: enum class VariableContext 25082: { 25082: Global = 0, 25082: User, 25082: Process, 25082: Thread, 25082: Snapshot 25082: }; 25082: # 4 "/build/clickhouse-18.16.1+ds/dbms/src/Common/ProfileEvents.h" 2 3 4 25082: 25082: 25082: # 1 "/usr/lib/gcc/aarch64-linux-gnu/8/include/stddef.h" 1 3 4 25082: # 7 "/build/clickhouse-18.16.1+ds/dbms/src/Common/ProfileEvents.h" 2 3 4 25082: 25082: 25082: 25082: 25082: 25082: 25082: namespace ProfileEvents 25082: { 25082: 25082: using Event = size_t; 25082: using Count = size_t; 25082: using Counter = std::atomic; 25082: class Counters; 25082: 25082: 25082: extern Counters global_counters; 25082: 25082: class Counters 25082: { 25082: Counter * counters = nullptr; 25082: std::unique_ptr counters_holder; 25082: 25082: Counters * parent = nullptr; 25082: 25082: public: 25082: 25082: VariableContext level = VariableContext::Thread; 25082: 25082: 25082: Counters(VariableContext level = VariableContext::Thread, Counters * parent = &global_counters); 25082: 25082: 25082: Counters(Counter * allocated_counters) 25082: : counters(allocated_counters), parent(nullptr), level(VariableContext::Global) {} 25082: 25082: Counter & operator[] (Event event) 25082: { 25082: return counters[event]; 25082: } 25082: 25082: const Counter & operator[] (Event event) const 25082: { 25082: return counters[event]; 25082: } 25082: 25082: inline void increment(Event event, Count amount = 1) 25082: { 25082: Counters * current = this; 25082: do 25082: { 25082: current->counters[event].fetch_add(amount, std::memory_order_relaxed); 25082: current = current->parent; 25082: } while (current != nullptr); 25082: } 25082: 25082: 25082: Counters getPartiallyAtomicSnapshot() const; 25082: 25082: 25082: void reset(); 25082: 25082: 25082: Counters * getParent() 25082: { 25082: return parent; 25082: } 25082: 25082: 25082: void setParent(Counters * parent_) 25082: { 25082: parent = parent_; 25082: } 25082: 25082: 25082: void resetCounters(); 25082: 25082: static const Event num_counters; 25082: }; 25082: 25082: 25082: void increment(Event event, Count amount = 1); 25082: 25082: 25082: const char * getName(Event event); 25082: 25082: 25082: const char * getDocumentation(Event event); 25082: 25082: 25082: Event end(); 25082: } 25082: # 11 "/build/clickhouse-18.16.1+ds/dbms/src/Common/Arena.h" 2 3 4 25082: 25082: 25082: 25082: namespace ProfileEvents 25082: { 25082: extern const Event ArenaAllocChunks; 25082: extern const Event ArenaAllocBytes; 25082: } 25082: 25082: namespace DB 25082: { 25082: # 32 "/build/clickhouse-18.16.1+ds/dbms/src/Common/Arena.h" 3 4 25082: class Arena : private boost::noncopyable 25082: { 25082: private: 25082: 25082: static constexpr size_t pad_right = 15; 25082: 25082: 25082: struct Chunk : private Allocator 25082: { 25082: char * begin; 25082: char * pos; 25082: char * end; 25082: 25082: Chunk * prev; 25082: 25082: Chunk(size_t size_, Chunk * prev_) 25082: { 25082: ProfileEvents::increment(ProfileEvents::ArenaAllocChunks); 25082: ProfileEvents::increment(ProfileEvents::ArenaAllocBytes, size_); 25082: 25082: begin = reinterpret_cast(Allocator::alloc(size_)); 25082: pos = begin; 25082: end = begin + size_ - pad_right; 25082: prev = prev_; 25082: } 25082: 25082: ~Chunk() 25082: { 25082: Allocator::free(begin, size()); 25082: 25082: if (prev) 25082: delete prev; 25082: } 25082: 25082: size_t size() const { return end + pad_right - begin; } 25082: size_t remaining() const { return end - pos; } 25082: }; 25082: 25082: size_t growth_factor; 25082: size_t linear_growth_threshold; 25082: 25082: 25082: Chunk * head; 25082: size_t size_in_bytes; 25082: 25082: static size_t roundUpToPageSize(size_t s) 25082: { 25082: return (s + 4096 - 1) / 4096 * 4096; 25082: } 25082: 25082: 25082: 25082: size_t nextSize(size_t min_next_size) const 25082: { 25082: size_t size_after_grow = 0; 25082: 25082: if (head->size() < linear_growth_threshold) 25082: size_after_grow = head->size() * growth_factor; 25082: else 25082: size_after_grow = linear_growth_threshold; 25082: 25082: if (size_after_grow < min_next_size) 25082: size_after_grow = min_next_size; 25082: 25082: return roundUpToPageSize(size_after_grow); 25082: } 25082: 25082: 25082: void __attribute__((__noinline__)) addChunk(size_t min_size) 25082: { 25082: head = new Chunk(nextSize(min_size + pad_right), head); 25082: size_in_bytes += head->size(); 25082: } 25082: 25082: friend class ArenaAllocator; 25082: template friend class AlignedArenaAllocator; 25082: 25082: public: 25082: Arena(size_t initial_size_ = 4096, size_t growth_factor_ = 2, size_t linear_growth_threshold_ = 128 * 1024 * 1024) 25082: : growth_factor(growth_factor_), linear_growth_threshold(linear_growth_threshold_), 25082: head(new Chunk(initial_size_, nullptr)), size_in_bytes(head->size()) 25082: { 25082: } 25082: 25082: ~Arena() 25082: { 25082: delete head; 25082: } 25082: 25082: 25082: char * alloc(size_t size) 25082: { 25082: if ((__builtin_expect(!!(head->pos + size > head->end), 0))) 25082: addChunk(size); 25082: 25082: char * res = head->pos; 25082: head->pos += size; 25082: return res; 25082: } 25082: 25082: 25082: char * alignedAlloc(size_t size, size_t alignment) 25082: { 25082: do 25082: { 25082: void * head_pos = head->pos; 25082: size_t space = head->end - head->pos; 25082: 25082: auto res = static_cast(std::align(alignment, size, head_pos, space)); 25082: if (res) 25082: { 25082: head->pos = static_cast(head_pos); 25082: head->pos += size; 25082: return res; 25082: } 25082: 25082: addChunk(size + alignment); 25082: } while (true); 25082: } 25082: 25082: 25082: 25082: 25082: void rollback(size_t size) 25082: { 25082: head->pos -= size; 25082: } 25082: 25082: 25082: 25082: 25082: 25082: 25082: char * allocContinue(size_t size, char const *& begin) 25082: { 25082: while ((__builtin_expect(!!(head->pos + size > head->end), 0))) 25082: { 25082: char * prev_end = head->pos; 25082: addChunk(size); 25082: 25082: if (begin) 25082: begin = insert(begin, prev_end - begin); 25082: else 25082: break; 25082: } 25082: 25082: char * res = head->pos; 25082: head->pos += size; 25082: 25082: if (!begin) 25082: begin = res; 25082: 25082: return res; 25082: } 25082: 25082: char * alignedAllocContinue(size_t size, char const *& begin, size_t alignment) 25082: { 25082: char * res; 25082: 25082: do 25082: { 25082: void * head_pos = head->pos; 25082: size_t space = head->end - head->pos; 25082: 25082: res = static_cast(std::align(alignment, size, head_pos, space)); 25082: if (res) 25082: { 25082: head->pos = static_cast(head_pos); 25082: head->pos += size; 25082: break; 25082: } 25082: 25082: char * prev_end = head->pos; 25082: addChunk(size + alignment); 25082: 25082: if (begin) 25082: begin = alignedInsert(begin, prev_end - begin, alignment); 25082: else 25082: break; 25082: } while (true); 25082: 25082: if (!begin) 25082: begin = res; 25082: return res; 25082: } 25082: 25082: 25082: char * realloc(const char * old_data, size_t old_size, size_t new_size) 25082: { 25082: char * res = alloc(new_size); 25082: if (old_data) 25082: memcpy(res, old_data, old_size); 25082: return res; 25082: } 25082: 25082: char * alignedRealloc(const char * old_data, size_t old_size, size_t new_size, size_t alignment) 25082: { 25082: char * res = alignedAlloc(new_size, alignment); 25082: if (old_data) 25082: memcpy(res, old_data, old_size); 25082: return res; 25082: } 25082: 25082: 25082: const char * insert(const char * data, size_t size) 25082: { 25082: char * res = alloc(size); 25082: memcpy(res, data, size); 25082: return res; 25082: } 25082: 25082: const char * alignedInsert(const char * data, size_t size, size_t alignment) 25082: { 25082: char * res = alignedAlloc(size, alignment); 25082: memcpy(res, data, size); 25082: return res; 25082: } 25082: 25082: 25082: size_t size() const 25082: { 25082: return size_in_bytes; 25082: } 25082: 25082: size_t remainingSpaceInCurrentChunk() const 25082: { 25082: return head->remaining(); 25082: } 25082: }; 25082: 25082: using ArenaPtr = std::shared_ptr; 25082: using Arenas = std::vector; 25082: 25082: 25082: } 25082: # 19 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/intDiv.h" 1 3 4 25082: 25082: # 10 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/intDiv.h" 3 4 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int ILLEGAL_DIVISION; 25082: } 25082: 25082: #pragma GCC diagnostic push 25082: #pragma GCC diagnostic ignored "-Wsign-compare" 25082: 25082: template 25082: inline void throwIfDivisionLeadsToFPE(A a, B b) 25082: { 25082: 25082: 25082: if ((__builtin_expect(!!(b == 0), 0))) 25082: throw Exception("Division by zero", ErrorCodes::ILLEGAL_DIVISION); 25082: 25082: 25082: if ((__builtin_expect(!!(std::is_signed_v && std::is_signed_v && a == std::numeric_limits::min() && b == -1), 0))) 25082: throw Exception("Division of minimal signed number by minus one", ErrorCodes::ILLEGAL_DIVISION); 25082: } 25082: 25082: template 25082: inline bool divisionLeadsToFPE(A a, B b) 25082: { 25082: if ((__builtin_expect(!!(b == 0), 0))) 25082: return true; 25082: 25082: if ((__builtin_expect(!!(std::is_signed_v && std::is_signed_v && a == std::numeric_limits::min() && b == -1), 0))) 25082: return true; 25082: 25082: return false; 25082: } 25082: 25082: 25082: #pragma GCC diagnostic pop 25082: 25082: template 25082: struct DivideIntegralImpl 25082: { 25082: using ResultType = typename NumberTraits::ResultOfIntegerDivision::Type; 25082: 25082: template 25082: static inline Result apply(A a, B b) 25082: { 25082: throwIfDivisionLeadsToFPE(a, b); 25082: return a / b; 25082: } 25082: 25082: 25082: 25082: 25082: }; 25082: 25082: } 25082: # 20 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 1 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/castTypeToEither.h" 1 3 4 25082: 25082: 25082: 25082: 25082: namespace DB 25082: { 25082: 25082: class IDataType; 25082: 25082: template 25082: static bool castTypeToEither(const IDataType * type, F && f) 25082: { 25082: 25082: return ((typeid_cast(type) ? f(*typeid_cast(type)) : false) || ...); 25082: } 25082: 25082: } 25082: # 21 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 2 3 4 25082: # 31 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 3 4 25082: namespace DB 25082: { 25082: 25082: namespace ErrorCodes 25082: { 25082: extern const int ILLEGAL_COLUMN; 25082: extern const int ILLEGAL_TYPE_OF_ARGUMENT; 25082: extern const int LOGICAL_ERROR; 25082: extern const int DECIMAL_OVERFLOW; 25082: extern const int CANNOT_ADD_DIFFERENT_AGGREGATE_STATES; 25082: extern const int ILLEGAL_DIVISION; 25082: } 25082: # 51 "/build/clickhouse-18.16.1+ds/dbms/src/Functions/FunctionBinaryArithmetic.h" 3 4 25082: template 25082: struct BinaryOperationImplBase 25082: { 25082: using ResultType = ResultType_; 25082: 25082: static void __attribute__((__noinline__)) vector_vector(const PaddedPODArray & a, const PaddedPODArray & b, PaddedPODArray & c) 25082: { 25082: size_t size = a.size(); 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = Op::template apply(a[i], b[i]); 25082: } 25082: 25082: static void __attribute__((__noinline__)) vector_constant(const PaddedPODArray & a, B b, PaddedPODArray & c) 25082: { 25082: size_t size = a.size(); 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = Op::template apply(a[i], b); 25082: } 25082: 25082: static void __attribute__((__noinline__)) constant_vector(A a, const PaddedPODArray & b, PaddedPODArray & c) 25082: { 25082: size_t size = b.size(); 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = Op::template apply(a, b[i]); 25082: } 25082: 25082: static ResultType constant_constant(A a, B b) 25082: { 25082: return Op::template apply(a, b); 25082: } 25082: }; 25082: 25082: template 25082: struct BinaryOperationImpl : BinaryOperationImplBase 25082: { 25082: }; 25082: 25082: 25082: template struct PlusImpl; 25082: template struct MinusImpl; 25082: template struct MultiplyImpl; 25082: template struct DivideFloatingImpl; 25082: template struct DivideIntegralImpl; 25082: template struct DivideIntegralOrZeroImpl; 25082: template struct LeastBaseImpl; 25082: template struct GreatestBaseImpl; 25082: template struct ModuloImpl; 25082: 25082: 25082: template struct NativeType { using Type = T; }; 25082: template <> struct NativeType { using Type = Int32; }; 25082: template <> struct NativeType { using Type = Int64; }; 25082: template <> struct NativeType { using Type = Int128; }; 25082: 25082: 25082: 25082: 25082: 25082: template typename Operation, typename ResultType_, bool _check_overflow = true> 25082: struct DecimalBinaryOperation 25082: { 25082: static constexpr bool is_plus_minus = std::is_same_v, PlusImpl> || 25082: std::is_same_v, MinusImpl>; 25082: static constexpr bool is_multiply = std::is_same_v, MultiplyImpl>; 25082: static constexpr bool is_float_division = std::is_same_v, DivideFloatingImpl>; 25082: static constexpr bool is_int_division = std::is_same_v, DivideIntegralImpl> || 25082: std::is_same_v, DivideIntegralOrZeroImpl>; 25082: static constexpr bool is_division = is_float_division || is_int_division; 25082: static constexpr bool is_compare = std::is_same_v, LeastBaseImpl> || 25082: std::is_same_v, GreatestBaseImpl>; 25082: static constexpr bool is_plus_minus_compare = is_plus_minus || is_compare; 25082: static constexpr bool can_overflow = is_plus_minus || is_multiply; 25082: 25082: using ResultType = ResultType_; 25082: using NativeResultType = typename NativeType::Type; 25082: using Op = std::conditional_t, 25082: Operation>; 25082: using ColVecA = std::conditional_t, ColumnDecimal, ColumnVector>; 25082: using ColVecB = std::conditional_t, ColumnDecimal, ColumnVector>; 25082: using ArrayA = typename ColVecA::Container; 25082: using ArrayB = typename ColVecB::Container; 25082: using ArrayC = typename ColumnDecimal::Container; 25082: using SelfNoOverflow = DecimalBinaryOperation; 25082: 25082: static void vector_vector(const ArrayA & a, const ArrayB & b, ArrayC & c, ResultType scale_a, ResultType scale_b, bool check_overflow) 25082: { 25082: if (check_overflow) 25082: vector_vector(a, b, c, scale_a, scale_b); 25082: else 25082: SelfNoOverflow::vector_vector(a, b, c, scale_a, scale_b); 25082: } 25082: 25082: static void vector_constant(const ArrayA & a, B b, ArrayC & c, ResultType scale_a, ResultType scale_b, bool check_overflow) 25082: { 25082: if (check_overflow) 25082: vector_constant(a, b, c, scale_a, scale_b); 25082: else 25082: SelfNoOverflow::vector_constant(a, b, c, scale_a, scale_b); 25082: } 25082: 25082: static void constant_vector(A a, const ArrayB & b, ArrayC & c, ResultType scale_a, ResultType scale_b, bool check_overflow) 25082: { 25082: if (check_overflow) 25082: constant_vector(a, b, c, scale_a, scale_b); 25082: else 25082: SelfNoOverflow::constant_vector(a, b, c, scale_a, scale_b); 25082: } 25082: 25082: static ResultType constant_constant(A a, B b, ResultType scale_a, ResultType scale_b, bool check_overflow) 25082: { 25082: if (check_overflow) 25082: return constant_constant(a, b, scale_a, scale_b); 25082: else 25082: return SelfNoOverflow::constant_constant(a, b, scale_a, scale_b); 25082: } 25082: 25082: static void __attribute__((__noinline__)) vector_vector(const ArrayA & a, const ArrayB & b, ArrayC & c, 25082: ResultType scale_a [[maybe_unused]], ResultType scale_b [[maybe_unused]]) 25082: { 25082: size_t size = a.size(); 25082: if constexpr (is_plus_minus_compare) 25082: { 25082: if (scale_a != 1) 25082: { 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = applyScaled(a[i], b[i], scale_a); 25082: return; 25082: } 25082: else if (scale_b != 1) 25082: { 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = applyScaled(a[i], b[i], scale_b); 25082: return; 25082: } 25082: } 25082: else if constexpr (is_division && IsDecimalNumber) 25082: { 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = applyScaledDiv(a[i], b[i], scale_a); 25082: return; 25082: } 25082: 25082: 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = apply(a[i], b[i]); 25082: } 25082: 25082: static void __attribute__((__noinline__)) vector_constant(const ArrayA & a, B b, ArrayC & c, 25082: ResultType scale_a [[maybe_unused]], ResultType scale_b [[maybe_unused]]) 25082: { 25082: size_t size = a.size(); 25082: if constexpr (is_plus_minus_compare) 25082: { 25082: if (scale_a != 1) 25082: { 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = applyScaled(a[i], b, scale_a); 25082: return; 25082: } 25082: else if (scale_b != 1) 25082: { 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = applyScaled(a[i], b, scale_b); 25082: return; 25082: } 25082: } 25082: else if constexpr (is_division && IsDecimalNumber) 25082: { 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = applyScaledDiv(a[i], b, scale_a); 25082: return; 25082: } 25082: 25082: 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = apply(a[i], b); 25082: } 25082: 25082: static void __attribute__((__noinline__)) constant_vector(A a, const ArrayB & b, ArrayC & c, 25082: ResultType scale_a [[maybe_unused]], ResultType scale_b [[maybe_unused]]) 25082: { 25082: size_t size = b.size(); 25082: if constexpr (is_plus_minus_compare) 25082: { 25082: if (scale_a != 1) 25082: { 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = applyScaled(a, b[i], scale_a); 25082: return; 25082: } 25082: else if (scale_b != 1) 25082: { 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = applyScaled(a, b[i], scale_b); 25082: return; 25082: } 25082: } 25082: else if constexpr (is_division && IsDecimalNumber) 25082: { 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = applyScaledDiv(a, b[i], scale_a); 25082: return; 25082: } 25082: 25082: 25082: for (size_t i = 0; i < size; ++i) 25082: c[i] = apply(a, b[i]); 25082: } 25082: 25082: static ResultType constant_constant(A a, B b, ResultType scale_a [[maybe_unused]], ResultType scale_b [[maybe_unused]]) 25082: { 25082: if constexpr (is_plus_minus_compare) 25082: { 25082: if (scale_a != 1) 25082: return applyScaled(a, b, scale_a); 25082: else if (scale_b != 1) 25082: return applyScaled(a, b, scale_b); 25082: } 25082: else if constexpr (is_division && IsDecimalNumber) 25082: return applyScaledDiv(a, b, scale_a); 25082: return apply(a, b); 25082: } 25082: 25082: private: 25082: 25082: static NativeResultType apply(NativeResultType a, NativeResultType b) 25082: { 25082: if constexpr (can_overflow && _check_overflow) 25082: { 25082: NativeResultType res; 25082: if (Op::template apply(a, b, res)) 25082: throw Exception("Decimal math overflow", ErrorCodes::DECIMAL_OVERFLOW); 25082: return res; 25082: } 25082: else 25082: return Op::template apply(a, b); 25082: } 25082: 25082: template 25082: static NativeResultType applyScaled(NativeResultType a, NativeResultType b, NativeResultType scale) 25082: { 25082: if constexpr (is_plus_minus_compare) 25082: { 25082: NativeResultType res; 25082: 25082: if constexpr (_check_overflow) 25082: { 25082: bool overflow = false; 25082: if constexpr (scale_left) 25082: overflow |= common::mulOverflow(a, scale, a); 25082: else 25082: overflow |= common::mulOverflow(b, scale, b); 25082: 25082: if constexpr (can_overflow) 25082: overflow |= Op::template apply(a, b, res); 25082: else 25082: res = Op::template apply(a, b); 25082: 25082: if (overflow) 25082: throw Exception("Decimal math overflow", ErrorCodes::DECIMAL_OVERFLOW); 25082: } 25082: else 25082: { 25082: if constexpr (scale_left) 25082: a *= scale; 25082: else 25082: b *= scale; 25082: res = Op::template apply(a, b); 25082: } 25082: 25082: return res; 25082: } 25082: } 25082: 25082: static NativeResultType applyScaledDiv(NativeResultType a, NativeResultType b, NativeResultType scale) 25082: { 25082: if constexpr (is_division) 25082: { 25082: if constexpr (_check_overflow) 25082: { 25082: bool overflow = false; 25082: if constexpr (!IsDecimalNumber) 25082: overflow |= common::mulOverflow(scale, scale, scale); 25082: overflow |= common::mulOverflow(a, scale, a); 25082: if (overflow) 25082: throw Exception("Decimal math overflow", ErrorCodes::DECIMAL_OVERFLOW); 25082: } 25082: else 25082: { 25082: if constexpr (!IsDecimalNumber) 25082: scale *= scale; 25082: a *= scale; 25082: } 25082: 25082: return Op::template apply(a, b); 25082: } 25082: } 25082: }; 25082: 25082: 25082: 25082: struct InvalidType; 25082: 25082: template struct Case : std::bool_constant { using type = T; }; 25082: 25082: 25082: template using Switch = typename std::disjunction>::type; 25082: 25082: template constexpr bool IsIntegral = false; 25082: template <> constexpr bool IsIntegral = true; 25082: template <> constexpr bool IsIntegral = true; 25082: template <> constexpr bool IsIntegral = true; 25082: template <> constexpr bool IsIntegral = true; 25082: template <> constexpr bool IsIntegral = true; 25082: template <> constexpr bool IsIntegral = true; 25082: template <> constexpr bool IsIntegral = true; 25082: template <> constexpr bool IsIntegral = true; 25082: 25082: template constexpr bool IsFloatingPoint = false; 25082: template <> constexpr bool IsFloatingPoint = true; 25082: template <> constexpr bool IsFloatingPoint = true; 25082: 25082: template constexpr bool IsDateOrDateTime = false; 25082: template <> constexpr bool IsDateOrDateTime = true; 25082: template <> constexpr bool IsDateOrDateTime = true; 25082: 25082: template constexpr bool UseLeftDecimal = false; 25082: template <> constexpr bool UseLeftDecimal, DataTypeDecimal> = true; 25082: template <> constexpr bool UseLeftDecimal, DataTypeDecimal> = true; 25082: template <> constexpr bool UseLeftDecimal, DataTypeDecimal> = true; 25082: 25082: template using DataTypeFromFieldType = std::conditional_t, InvalidType, DataTypeNumber>; 25082: 25082: template