0s autopkgtest [22:46:07]: starting date and time: 2026-02-08 22:46:07+0000 0s autopkgtest [22:46:07]: git checkout: 508d4a25 a-v-ssh wait_for_ssh: demote "ssh connection failed" to a debug message 0s autopkgtest [22:46:07]: host juju-7f2275-prod-proposed-migration-environment-9; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.yx65l90x/out --timeout-copy=6000 --setup-commands 'ln -s /dev/null /etc/systemd/system/bluetooth.service; printf "http_proxy=http://squid.internal:3128\nhttps_proxy=http://squid.internal:3128\nno_proxy=127.0.0.1,127.0.1.1,localhost,localdomain,internal,login.ubuntu.com,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com,radosgw.ps5.canonical.com\n" >> /etc/environment' --apt-pocket=proposed=src:xtl --apt-upgrade xsimd --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=xtl/0.8.1-1~0.1' -- lxd -r lxd-armhf-10.145.243.85 lxd-armhf-10.145.243.85:autopkgtest/ubuntu/resolute/armhf 25s autopkgtest [22:46:32]: testbed dpkg architecture: armhf 27s autopkgtest [22:46:34]: testbed apt version: 3.1.15 31s autopkgtest [22:46:38]: @@@@@@@@@@@@@@@@@@@@ test bed setup 33s autopkgtest [22:46:40]: testbed release detected to be: None 40s autopkgtest [22:46:47]: updating testbed package index (apt update) 42s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 42s Get:2 http://ftpmaster.internal/ubuntu resolute InRelease [124 kB] 42s Get:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease [124 kB] 43s Get:4 http://ftpmaster.internal/ubuntu resolute-security InRelease [124 kB] 43s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [30.0 kB] 43s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1574 kB] 43s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [162 kB] 43s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf Packages [236 kB] 43s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf Packages [1336 kB] 43s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse armhf Packages [7288 B] 43s Get:11 http://ftpmaster.internal/ubuntu resolute/main Sources [1412 kB] 43s Get:12 http://ftpmaster.internal/ubuntu resolute/universe Sources [21.3 MB] 45s Get:13 http://ftpmaster.internal/ubuntu resolute/multiverse Sources [311 kB] 45s Get:14 http://ftpmaster.internal/ubuntu resolute/main armhf Packages [1374 kB] 45s Get:15 http://ftpmaster.internal/ubuntu resolute/universe armhf Packages [15.0 MB] 47s Get:16 http://ftpmaster.internal/ubuntu resolute/multiverse armhf Packages [177 kB] 49s Fetched 43.4 MB in 7s (6166 kB/s) 50s Reading package lists... 56s autopkgtest [22:47:03]: upgrading testbed (apt dist-upgrade and autopurge) 58s Reading package lists... 58s Building dependency tree... 58s Reading state information... 59s Calculating upgrade... 60s The following packages will be upgraded: 60s dbus dbus-bin dbus-daemon dbus-session-bus-common dbus-system-bus-common 60s dbus-user-session ethtool libbsd0 libdbus-1-3 libgdbm-compat4t64 libgdbm6t64 60s libidn2-0 libjansson4 libnetfilter-conntrack3 libusb-1.0-0 libwrap0 libxau6 60s libxkbcommon0 shared-mime-info ubuntu-minimal ubuntu-standard 60s 21 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 60s Need to get 1743 kB of archives. 60s After this operation, 2320 kB disk space will be freed. 60s Get:1 http://ftpmaster.internal/ubuntu resolute/main armhf libbsd0 armhf 0.12.2-2build2 [36.8 kB] 60s Get:2 http://ftpmaster.internal/ubuntu resolute/main armhf dbus-system-bus-common all 1.16.2-2ubuntu3 [55.8 kB] 60s Get:3 http://ftpmaster.internal/ubuntu resolute/main armhf dbus-session-bus-common all 1.16.2-2ubuntu3 [54.4 kB] 60s Get:4 http://ftpmaster.internal/ubuntu resolute/main armhf dbus-user-session armhf 1.16.2-2ubuntu3 [9696 B] 60s Get:5 http://ftpmaster.internal/ubuntu resolute/main armhf dbus-daemon armhf 1.16.2-2ubuntu3 [111 kB] 60s Get:6 http://ftpmaster.internal/ubuntu resolute/main armhf dbus-bin armhf 1.16.2-2ubuntu3 [37.9 kB] 60s Get:7 http://ftpmaster.internal/ubuntu resolute/main armhf dbus armhf 1.16.2-2ubuntu3 [28.2 kB] 60s Get:8 http://ftpmaster.internal/ubuntu resolute/main armhf libdbus-1-3 armhf 1.16.2-2ubuntu3 [165 kB] 60s Get:9 http://ftpmaster.internal/ubuntu resolute/main armhf ethtool armhf 1:6.15-3build1 [298 kB] 60s Get:10 http://ftpmaster.internal/ubuntu resolute/main armhf libidn2-0 armhf 2.3.8-4build1 [97.6 kB] 60s Get:11 http://ftpmaster.internal/ubuntu resolute/main armhf shared-mime-info armhf 2.4-5build3 [469 kB] 60s Get:12 http://ftpmaster.internal/ubuntu resolute/main armhf ubuntu-minimal armhf 1.564 [13.3 kB] 60s Get:13 http://ftpmaster.internal/ubuntu resolute/main armhf libgdbm6t64 armhf 1.26-1build1 [32.2 kB] 60s Get:14 http://ftpmaster.internal/ubuntu resolute/main armhf libjansson4 armhf 2.14-2build4 [28.8 kB] 60s Get:15 http://ftpmaster.internal/ubuntu resolute/main armhf libnetfilter-conntrack3 armhf 1.1.1-1 [39.2 kB] 60s Get:16 http://ftpmaster.internal/ubuntu resolute/main armhf libusb-1.0-0 armhf 2:1.0.29-2build1 [50.2 kB] 60s Get:17 http://ftpmaster.internal/ubuntu resolute/main armhf libxau6 armhf 1:1.0.11-1build2 [6652 B] 60s Get:18 http://ftpmaster.internal/ubuntu resolute/main armhf libxkbcommon0 armhf 1.13.1-1 [144 kB] 60s Get:19 http://ftpmaster.internal/ubuntu resolute/main armhf ubuntu-standard armhf 1.564 [13.3 kB] 60s Get:20 http://ftpmaster.internal/ubuntu resolute/main armhf libgdbm-compat4t64 armhf 1.26-1build1 [6372 B] 60s Get:21 http://ftpmaster.internal/ubuntu resolute/main armhf libwrap0 armhf 7.6.q-36build2 [46.0 kB] 61s Fetched 1743 kB in 1s (2076 kB/s) 61s (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 ... 68753 files and directories currently installed.) 61s Preparing to unpack .../libbsd0_0.12.2-2build2_armhf.deb ... 61s Unpacking libbsd0:armhf (0.12.2-2build2) over (0.12.2-2build1) ... 61s Setting up libbsd0:armhf (0.12.2-2build2) ... 61s (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 ... 68753 files and directories currently installed.) 61s Preparing to unpack .../00-dbus-system-bus-common_1.16.2-2ubuntu3_all.deb ... 61s Unpacking dbus-system-bus-common (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 61s Preparing to unpack .../01-dbus-session-bus-common_1.16.2-2ubuntu3_all.deb ... 61s Unpacking dbus-session-bus-common (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 61s Preparing to unpack .../02-dbus-user-session_1.16.2-2ubuntu3_armhf.deb ... 61s Unpacking dbus-user-session (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 61s Preparing to unpack .../03-dbus-daemon_1.16.2-2ubuntu3_armhf.deb ... 61s Unpacking dbus-daemon (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 62s Preparing to unpack .../04-dbus-bin_1.16.2-2ubuntu3_armhf.deb ... 62s Unpacking dbus-bin (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 62s Preparing to unpack .../05-dbus_1.16.2-2ubuntu3_armhf.deb ... 62s Unpacking dbus (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 62s Preparing to unpack .../06-libdbus-1-3_1.16.2-2ubuntu3_armhf.deb ... 62s Unpacking libdbus-1-3:armhf (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 62s Preparing to unpack .../07-ethtool_1%3a6.15-3build1_armhf.deb ... 62s Unpacking ethtool (1:6.15-3build1) over (1:6.15-3) ... 62s Preparing to unpack .../08-libidn2-0_2.3.8-4build1_armhf.deb ... 62s Unpacking libidn2-0:armhf (2.3.8-4build1) over (2.3.8-4) ... 62s Preparing to unpack .../09-shared-mime-info_2.4-5build3_armhf.deb ... 62s Unpacking shared-mime-info (2.4-5build3) over (2.4-5build2) ... 62s Preparing to unpack .../10-ubuntu-minimal_1.564_armhf.deb ... 62s Unpacking ubuntu-minimal (1.564) over (1.563) ... 62s Preparing to unpack .../11-libgdbm6t64_1.26-1build1_armhf.deb ... 62s Unpacking libgdbm6t64:armhf (1.26-1build1) over (1.26-1) ... 62s Preparing to unpack .../12-libjansson4_2.14-2build4_armhf.deb ... 62s Unpacking libjansson4:armhf (2.14-2build4) over (2.14-2build3) ... 62s Preparing to unpack .../13-libnetfilter-conntrack3_1.1.1-1_armhf.deb ... 62s Unpacking libnetfilter-conntrack3:armhf (1.1.1-1) over (1.1.0-1build1) ... 62s Preparing to unpack .../14-libusb-1.0-0_2%3a1.0.29-2build1_armhf.deb ... 62s Unpacking libusb-1.0-0:armhf (2:1.0.29-2build1) over (2:1.0.29-2) ... 62s Preparing to unpack .../15-libxau6_1%3a1.0.11-1build2_armhf.deb ... 62s Unpacking libxau6:armhf (1:1.0.11-1build2) over (1:1.0.11-1build1) ... 62s Preparing to unpack .../16-libxkbcommon0_1.13.1-1_armhf.deb ... 62s Unpacking libxkbcommon0:armhf (1.13.1-1) over (1.12.3-1) ... 62s Preparing to unpack .../17-ubuntu-standard_1.564_armhf.deb ... 62s Unpacking ubuntu-standard (1.564) over (1.563) ... 62s Preparing to unpack .../18-libgdbm-compat4t64_1.26-1build1_armhf.deb ... 62s Unpacking libgdbm-compat4t64:armhf (1.26-1build1) over (1.26-1) ... 62s Preparing to unpack .../19-libwrap0_7.6.q-36build2_armhf.deb ... 62s Unpacking libwrap0:armhf (7.6.q-36build2) over (7.6.q-36build1) ... 62s Setting up libxau6:armhf (1:1.0.11-1build2) ... 62s Setting up libgdbm6t64:armhf (1.26-1build1) ... 62s Setting up ubuntu-minimal (1.564) ... 62s Setting up libgdbm-compat4t64:armhf (1.26-1build1) ... 62s Setting up libidn2-0:armhf (2.3.8-4build1) ... 62s Setting up ubuntu-standard (1.564) ... 62s Setting up libjansson4:armhf (2.14-2build4) ... 62s Setting up libwrap0:armhf (7.6.q-36build2) ... 62s Setting up libdbus-1-3:armhf (1.16.2-2ubuntu3) ... 62s Setting up shared-mime-info (2.4-5build3) ... 63s Setting up libnetfilter-conntrack3:armhf (1.1.1-1) ... 63s Setting up dbus-session-bus-common (1.16.2-2ubuntu3) ... 63s Setting up libusb-1.0-0:armhf (2:1.0.29-2build1) ... 63s Setting up dbus-system-bus-common (1.16.2-2ubuntu3) ... 63s Setting up dbus-bin (1.16.2-2ubuntu3) ... 63s Setting up ethtool (1:6.15-3build1) ... 63s Setting up libxkbcommon0:armhf (1.13.1-1) ... 63s Setting up dbus-daemon (1.16.2-2ubuntu3) ... 63s Setting up dbus-user-session (1.16.2-2ubuntu3) ... 63s Setting up dbus (1.16.2-2ubuntu3) ... 63s A reboot is required to replace the running dbus-daemon. 63s Please reboot the system when convenient. 63s Processing triggers for man-db (2.13.1-1build1) ... 65s Processing triggers for libc-bin (2.42-2ubuntu4) ... 67s Reading package lists... 67s Building dependency tree... 67s Reading state information... 68s Solving dependencies... 69s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 71s autopkgtest [22:47:18]: rebooting testbed after setup commands that affected boot 110s autopkgtest [22:47:57]: testbed running kernel: Linux 6.8.0-87-generic #88~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Oct 14 14:00:09 UTC 2 134s autopkgtest [22:48:21]: @@@@@@@@@@@@@@@@@@@@ apt-source xsimd 148s Get:1 http://ftpmaster.internal/ubuntu resolute/universe xsimd 13.2.0-1ubuntu1 (dsc) [2317 B] 148s Get:2 http://ftpmaster.internal/ubuntu resolute/universe xsimd 13.2.0-1ubuntu1 (tar) [269 kB] 148s Get:3 http://ftpmaster.internal/ubuntu resolute/universe xsimd 13.2.0-1ubuntu1 (diff) [6188 B] 148s gpgv: Signature made Thu Jan 15 15:59:03 2026 UTC 148s gpgv: using RSA key A62D2CFBD50B9B5BF360D54B159EB5C4EFC8774C 148s gpgv: Can't check signature: No public key 148s dpkg-source: warning: cannot verify inline signature for ./xsimd_13.2.0-1ubuntu1.dsc: no acceptable signature found 148s autopkgtest [22:48:35]: testing package xsimd version 13.2.0-1ubuntu1 150s autopkgtest [22:48:37]: build not needed 152s autopkgtest [22:48:39]: test xsimd-test: preparing testbed 154s Reading package lists... 154s Building dependency tree... 154s Reading state information... 155s Solving dependencies... 155s The following NEW packages will be installed: 155s cmake cmake-data cpp cpp-15 cpp-15-arm-linux-gnueabihf 155s cpp-arm-linux-gnueabihf doctest-dev g++ g++-15 g++-15-arm-linux-gnueabihf 155s g++-arm-linux-gnueabihf gcc gcc-15 gcc-15-arm-linux-gnueabihf 155s gcc-arm-linux-gnueabihf libasan8 libc-dev-bin libc6-dev libcc1-0 155s libcrypt-dev libgcc-15-dev libgomp1 libisl23 libjsoncpp26 libmpc3 librhash1 155s libstdc++-15-dev libubsan1 libxsimd-dev linux-libc-dev rpcsvc-proto xtl-dev 156s 0 upgraded, 32 newly installed, 0 to remove and 0 not upgraded. 156s Need to get 63.2 MB of archives. 156s After this operation, 193 MB of additional disk space will be used. 156s Get:1 http://ftpmaster.internal/ubuntu resolute/main armhf cmake-data all 4.1.1+really3.31.6-2ubuntu1 [2329 kB] 156s Get:2 http://ftpmaster.internal/ubuntu resolute/main armhf libjsoncpp26 armhf 1.9.6-5 [74.0 kB] 156s Get:3 http://ftpmaster.internal/ubuntu resolute/main armhf librhash1 armhf 1.4.6-1.1 [148 kB] 156s Get:4 http://ftpmaster.internal/ubuntu resolute/main armhf cmake armhf 4.1.1+really3.31.6-2ubuntu1 [6839 kB] 157s Get:5 http://ftpmaster.internal/ubuntu resolute/main armhf libisl23 armhf 0.27-1build1 [553 kB] 157s Get:6 http://ftpmaster.internal/ubuntu resolute/main armhf libmpc3 armhf 1.3.1-2 [47.0 kB] 157s Get:7 http://ftpmaster.internal/ubuntu resolute/main armhf cpp-15-arm-linux-gnueabihf armhf 15.2.0-12ubuntu1 [10.1 MB] 157s Get:8 http://ftpmaster.internal/ubuntu resolute/main armhf cpp-15 armhf 15.2.0-12ubuntu1 [1032 B] 157s Get:9 http://ftpmaster.internal/ubuntu resolute/main armhf cpp-arm-linux-gnueabihf armhf 4:15.2.0-4ubuntu1 [5756 B] 157s Get:10 http://ftpmaster.internal/ubuntu resolute/main armhf cpp armhf 4:15.2.0-4ubuntu1 [22.4 kB] 157s Get:11 http://ftpmaster.internal/ubuntu resolute/universe armhf doctest-dev all 2.4.12-1 [189 kB] 157s Get:12 http://ftpmaster.internal/ubuntu resolute/main armhf libcc1-0 armhf 15.2.0-12ubuntu1 [43.5 kB] 157s Get:13 http://ftpmaster.internal/ubuntu resolute/main armhf libgomp1 armhf 15.2.0-12ubuntu1 [129 kB] 157s Get:14 http://ftpmaster.internal/ubuntu resolute/main armhf libasan8 armhf 15.2.0-12ubuntu1 [2949 kB] 157s Get:15 http://ftpmaster.internal/ubuntu resolute/main armhf libubsan1 armhf 15.2.0-12ubuntu1 [1187 kB] 157s Get:16 http://ftpmaster.internal/ubuntu resolute/main armhf libgcc-15-dev armhf 15.2.0-12ubuntu1 [898 kB] 157s Get:17 http://ftpmaster.internal/ubuntu resolute/main armhf gcc-15-arm-linux-gnueabihf armhf 15.2.0-12ubuntu1 [19.5 MB] 158s Get:18 http://ftpmaster.internal/ubuntu resolute/main armhf gcc-15 armhf 15.2.0-12ubuntu1 [499 kB] 158s Get:19 http://ftpmaster.internal/ubuntu resolute/main armhf gcc-arm-linux-gnueabihf armhf 4:15.2.0-4ubuntu1 [1220 B] 158s Get:20 http://ftpmaster.internal/ubuntu resolute/main armhf gcc armhf 4:15.2.0-4ubuntu1 [5022 B] 158s Get:21 http://ftpmaster.internal/ubuntu resolute/main armhf libc-dev-bin armhf 2.42-2ubuntu4 [21.8 kB] 158s Get:22 http://ftpmaster.internal/ubuntu resolute/main armhf linux-libc-dev armhf 6.19.0-3.3 [1804 kB] 158s Get:23 http://ftpmaster.internal/ubuntu resolute/main armhf libcrypt-dev armhf 1:4.5.1-1 [128 kB] 158s Get:24 http://ftpmaster.internal/ubuntu resolute/main armhf rpcsvc-proto armhf 1.4.3-1build1 [62.6 kB] 158s Get:25 http://ftpmaster.internal/ubuntu resolute/main armhf libc6-dev armhf 2.42-2ubuntu4 [1416 kB] 158s Get:26 http://ftpmaster.internal/ubuntu resolute/main armhf libstdc++-15-dev armhf 15.2.0-12ubuntu1 [2638 kB] 158s Get:27 http://ftpmaster.internal/ubuntu resolute/main armhf g++-15-arm-linux-gnueabihf armhf 15.2.0-12ubuntu1 [11.4 MB] 158s Get:28 http://ftpmaster.internal/ubuntu resolute/main armhf g++-15 armhf 15.2.0-12ubuntu1 [25.3 kB] 158s Get:29 http://ftpmaster.internal/ubuntu resolute/main armhf g++-arm-linux-gnueabihf armhf 4:15.2.0-4ubuntu1 [968 B] 158s Get:30 http://ftpmaster.internal/ubuntu resolute/main armhf g++ armhf 4:15.2.0-4ubuntu1 [1086 B] 158s Get:31 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf xtl-dev all 0.8.1-1~0.1 [75.6 kB] 158s Get:32 http://ftpmaster.internal/ubuntu resolute/universe armhf libxsimd-dev armhf 13.2.0-1ubuntu1 [131 kB] 159s Fetched 63.2 MB in 3s (21.9 MB/s) 159s Selecting previously unselected package cmake-data. 159s (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 ... 68670 files and directories currently installed.) 159s Preparing to unpack .../00-cmake-data_4.1.1+really3.31.6-2ubuntu1_all.deb ... 159s Unpacking cmake-data (4.1.1+really3.31.6-2ubuntu1) ... 160s Selecting previously unselected package libjsoncpp26:armhf. 160s Preparing to unpack .../01-libjsoncpp26_1.9.6-5_armhf.deb ... 160s Unpacking libjsoncpp26:armhf (1.9.6-5) ... 160s Selecting previously unselected package librhash1:armhf. 160s Preparing to unpack .../02-librhash1_1.4.6-1.1_armhf.deb ... 160s Unpacking librhash1:armhf (1.4.6-1.1) ... 160s Selecting previously unselected package cmake. 160s Preparing to unpack .../03-cmake_4.1.1+really3.31.6-2ubuntu1_armhf.deb ... 160s Unpacking cmake (4.1.1+really3.31.6-2ubuntu1) ... 160s Selecting previously unselected package libisl23:armhf. 160s Preparing to unpack .../04-libisl23_0.27-1build1_armhf.deb ... 160s Unpacking libisl23:armhf (0.27-1build1) ... 160s Selecting previously unselected package libmpc3:armhf. 160s Preparing to unpack .../05-libmpc3_1.3.1-2_armhf.deb ... 160s Unpacking libmpc3:armhf (1.3.1-2) ... 160s Selecting previously unselected package cpp-15-arm-linux-gnueabihf. 160s Preparing to unpack .../06-cpp-15-arm-linux-gnueabihf_15.2.0-12ubuntu1_armhf.deb ... 160s Unpacking cpp-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 160s Selecting previously unselected package cpp-15. 161s Preparing to unpack .../07-cpp-15_15.2.0-12ubuntu1_armhf.deb ... 161s Unpacking cpp-15 (15.2.0-12ubuntu1) ... 161s Selecting previously unselected package cpp-arm-linux-gnueabihf. 161s Preparing to unpack .../08-cpp-arm-linux-gnueabihf_4%3a15.2.0-4ubuntu1_armhf.deb ... 161s Unpacking cpp-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 161s Selecting previously unselected package cpp. 161s Preparing to unpack .../09-cpp_4%3a15.2.0-4ubuntu1_armhf.deb ... 161s Unpacking cpp (4:15.2.0-4ubuntu1) ... 161s Selecting previously unselected package doctest-dev. 161s Preparing to unpack .../10-doctest-dev_2.4.12-1_all.deb ... 161s Unpacking doctest-dev (2.4.12-1) ... 161s Selecting previously unselected package libcc1-0:armhf. 161s Preparing to unpack .../11-libcc1-0_15.2.0-12ubuntu1_armhf.deb ... 161s Unpacking libcc1-0:armhf (15.2.0-12ubuntu1) ... 161s Selecting previously unselected package libgomp1:armhf. 161s Preparing to unpack .../12-libgomp1_15.2.0-12ubuntu1_armhf.deb ... 161s Unpacking libgomp1:armhf (15.2.0-12ubuntu1) ... 161s Selecting previously unselected package libasan8:armhf. 161s Preparing to unpack .../13-libasan8_15.2.0-12ubuntu1_armhf.deb ... 161s Unpacking libasan8:armhf (15.2.0-12ubuntu1) ... 161s Selecting previously unselected package libubsan1:armhf. 161s Preparing to unpack .../14-libubsan1_15.2.0-12ubuntu1_armhf.deb ... 161s Unpacking libubsan1:armhf (15.2.0-12ubuntu1) ... 161s Selecting previously unselected package libgcc-15-dev:armhf. 161s Preparing to unpack .../15-libgcc-15-dev_15.2.0-12ubuntu1_armhf.deb ... 161s Unpacking libgcc-15-dev:armhf (15.2.0-12ubuntu1) ... 161s Selecting previously unselected package gcc-15-arm-linux-gnueabihf. 161s Preparing to unpack .../16-gcc-15-arm-linux-gnueabihf_15.2.0-12ubuntu1_armhf.deb ... 161s Unpacking gcc-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 162s Selecting previously unselected package gcc-15. 162s Preparing to unpack .../17-gcc-15_15.2.0-12ubuntu1_armhf.deb ... 162s Unpacking gcc-15 (15.2.0-12ubuntu1) ... 162s Selecting previously unselected package gcc-arm-linux-gnueabihf. 162s Preparing to unpack .../18-gcc-arm-linux-gnueabihf_4%3a15.2.0-4ubuntu1_armhf.deb ... 162s Unpacking gcc-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 162s Selecting previously unselected package gcc. 162s Preparing to unpack .../19-gcc_4%3a15.2.0-4ubuntu1_armhf.deb ... 162s Unpacking gcc (4:15.2.0-4ubuntu1) ... 162s Selecting previously unselected package libc-dev-bin. 162s Preparing to unpack .../20-libc-dev-bin_2.42-2ubuntu4_armhf.deb ... 162s Unpacking libc-dev-bin (2.42-2ubuntu4) ... 162s Selecting previously unselected package linux-libc-dev:armhf. 162s Preparing to unpack .../21-linux-libc-dev_6.19.0-3.3_armhf.deb ... 162s Unpacking linux-libc-dev:armhf (6.19.0-3.3) ... 162s Selecting previously unselected package libcrypt-dev:armhf. 162s Preparing to unpack .../22-libcrypt-dev_1%3a4.5.1-1_armhf.deb ... 162s Unpacking libcrypt-dev:armhf (1:4.5.1-1) ... 162s Selecting previously unselected package rpcsvc-proto. 162s Preparing to unpack .../23-rpcsvc-proto_1.4.3-1build1_armhf.deb ... 162s Unpacking rpcsvc-proto (1.4.3-1build1) ... 162s Selecting previously unselected package libc6-dev:armhf. 162s Preparing to unpack .../24-libc6-dev_2.42-2ubuntu4_armhf.deb ... 162s Unpacking libc6-dev:armhf (2.42-2ubuntu4) ... 162s Selecting previously unselected package libstdc++-15-dev:armhf. 162s Preparing to unpack .../25-libstdc++-15-dev_15.2.0-12ubuntu1_armhf.deb ... 162s Unpacking libstdc++-15-dev:armhf (15.2.0-12ubuntu1) ... 163s Selecting previously unselected package g++-15-arm-linux-gnueabihf. 163s Preparing to unpack .../26-g++-15-arm-linux-gnueabihf_15.2.0-12ubuntu1_armhf.deb ... 163s Unpacking g++-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 163s Selecting previously unselected package g++-15. 163s Preparing to unpack .../27-g++-15_15.2.0-12ubuntu1_armhf.deb ... 163s Unpacking g++-15 (15.2.0-12ubuntu1) ... 163s Selecting previously unselected package g++-arm-linux-gnueabihf. 163s Preparing to unpack .../28-g++-arm-linux-gnueabihf_4%3a15.2.0-4ubuntu1_armhf.deb ... 163s Unpacking g++-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 163s Selecting previously unselected package g++. 163s Preparing to unpack .../29-g++_4%3a15.2.0-4ubuntu1_armhf.deb ... 163s Unpacking g++ (4:15.2.0-4ubuntu1) ... 163s Selecting previously unselected package xtl-dev. 163s Preparing to unpack .../30-xtl-dev_0.8.1-1~0.1_all.deb ... 163s Unpacking xtl-dev (0.8.1-1~0.1) ... 163s Selecting previously unselected package libxsimd-dev:armhf. 163s Preparing to unpack .../31-libxsimd-dev_13.2.0-1ubuntu1_armhf.deb ... 163s Unpacking libxsimd-dev:armhf (13.2.0-1ubuntu1) ... 163s Setting up linux-libc-dev:armhf (6.19.0-3.3) ... 163s Setting up libgomp1:armhf (15.2.0-12ubuntu1) ... 163s Setting up rpcsvc-proto (1.4.3-1build1) ... 163s Setting up libjsoncpp26:armhf (1.9.6-5) ... 163s Setting up libmpc3:armhf (1.3.1-2) ... 163s Setting up xtl-dev (0.8.1-1~0.1) ... 163s Setting up libubsan1:armhf (15.2.0-12ubuntu1) ... 163s Setting up libcrypt-dev:armhf (1:4.5.1-1) ... 163s Setting up libasan8:armhf (15.2.0-12ubuntu1) ... 163s Setting up cmake-data (4.1.1+really3.31.6-2ubuntu1) ... 163s Setting up librhash1:armhf (1.4.6-1.1) ... 163s Setting up libisl23:armhf (0.27-1build1) ... 163s Setting up libc-dev-bin (2.42-2ubuntu4) ... 163s Setting up doctest-dev (2.4.12-1) ... 163s Setting up cpp-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 163s Setting up libcc1-0:armhf (15.2.0-12ubuntu1) ... 163s Setting up cpp-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 163s Setting up libgcc-15-dev:armhf (15.2.0-12ubuntu1) ... 163s Setting up gcc-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 163s Setting up libxsimd-dev:armhf (13.2.0-1ubuntu1) ... 163s Setting up cpp-15 (15.2.0-12ubuntu1) ... 163s Setting up cpp (4:15.2.0-4ubuntu1) ... 163s Setting up cmake (4.1.1+really3.31.6-2ubuntu1) ... 163s Setting up libc6-dev:armhf (2.42-2ubuntu4) ... 163s Setting up gcc-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 163s Setting up gcc-15 (15.2.0-12ubuntu1) ... 163s Setting up libstdc++-15-dev:armhf (15.2.0-12ubuntu1) ... 163s Setting up g++-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 163s Setting up gcc (4:15.2.0-4ubuntu1) ... 163s Setting up g++-15 (15.2.0-12ubuntu1) ... 163s Setting up g++-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 163s Setting up g++ (4:15.2.0-4ubuntu1) ... 163s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 163s Processing triggers for man-db (2.13.1-1build1) ... 165s Processing triggers for libc-bin (2.42-2ubuntu4) ... 172s autopkgtest [22:48:59]: test xsimd-test: [----------------------- 174s 174s Running tests from test/run_test 174s CMake Deprecation Warning at CMakeLists.txt:12 (cmake_minimum_required): 174s Compatibility with CMake < 3.10 will be removed from a future version of 174s CMake. 174s 174s Update the VERSION argument value. Or, use the ... syntax 174s to tell CMake that the project requires at least but has been updated 174s to work with policies introduced by or earlier. 174s 174s 175s -- The C compiler identification is GNU 15.2.0 175s -- The CXX compiler identification is GNU 15.2.0 175s -- Detecting C compiler ABI info 175s -- Detecting C compiler ABI info - done 175s -- Check for working C compiler: /usr/bin/cc - skipped 175s -- Detecting C compile features 175s -- Detecting C compile features - done 175s -- Detecting CXX compiler ABI info 175s -- Detecting CXX compiler ABI info - done 175s -- Check for working CXX compiler: /usr/bin/c++ - skipped 175s -- Detecting CXX compile features 175s -- Detecting CXX compile features - done 175s -- Setting tests build type to Release 175s -- Performing Test HAS_CPP11_FLAG 175s -- Performing Test HAS_CPP11_FLAG - Success 175s -- Performing Test FLAG_SUPPORTED_bdver1 176s -- Performing Test FLAG_SUPPORTED_bdver1 - Failed 176s -- Performing Test FLAG_SUPPORTED_knl 176s -- Performing Test FLAG_SUPPORTED_knl - Failed 176s -- Performing Test FLAG_SUPPORTED_knm 176s -- Performing Test FLAG_SUPPORTED_knm - Failed 176s -- Performing Test FLAG_SUPPORTED_skylake-avx512 176s -- Performing Test FLAG_SUPPORTED_skylake-avx512 - Failed 176s -- Performing Test FLAG_SUPPORTED_cannonlake 176s -- Performing Test FLAG_SUPPORTED_cannonlake - Failed 176s -- Performing Test FLAG_SUPPORTED_icelake-client 176s -- Performing Test FLAG_SUPPORTED_icelake-client - Failed 176s -- Performing Test FLAG_SUPPORTED_icelake-server 176s -- Performing Test FLAG_SUPPORTED_icelake-server - Failed 176s -- Performing Test FLAG_SUPPORTED_cascadelake 176s -- Performing Test FLAG_SUPPORTED_cascadelake - Failed 176s -- Performing Test FLAG_SUPPORTED_cooperlake 176s -- Performing Test FLAG_SUPPORTED_cooperlake - Failed 176s -- Performing Test FLAG_SUPPORTED_tigerlake 176s -- Performing Test FLAG_SUPPORTED_tigerlake - Failed 176s -- Performing Test FLAG_SUPPORTED_sapphirerapids 176s -- Performing Test FLAG_SUPPORTED_sapphirerapids - Failed 176s -- Performing Test FLAG_SUPPORTED_alderlake 176s -- Performing Test FLAG_SUPPORTED_alderlake - Failed 176s -- Performing Test FLAG_SUPPORTED_rocketlake 177s -- Performing Test FLAG_SUPPORTED_rocketlake - Failed 177s -- Performing Test FLAG_SUPPORTED_graniterapids 177s -- Performing Test FLAG_SUPPORTED_graniterapids - Failed 177s -- Performing Test FLAG_SUPPORTED_graniterapids-d 177s -- Performing Test FLAG_SUPPORTED_graniterapids-d - Failed 177s -- Performing Test FLAG_SUPPORTED_znver4 177s -- Performing Test FLAG_SUPPORTED_znver4 - Failed 177s -- Configuring done (2.3s) 177s -- Generating done (0.0s) 177s -- Build files have been written to: /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test 177s /usr/bin/cmake -S/tmp/autopkgtest.kjZSsr/build.hH9/src/test -B/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test --check-build-system CMakeFiles/Makefile.cmake 0 177s /usr/bin/cmake -E cmake_progress_start /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test/CMakeFiles /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test//CMakeFiles/progress.marks 177s make -f CMakeFiles/Makefile2 all 177s make[1]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test' 177s make -f CMakeFiles/test_xsimd.dir/build.make CMakeFiles/test_xsimd.dir/depend 177s make[2]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test' 177s cd /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /tmp/autopkgtest.kjZSsr/build.hH9/src/test /tmp/autopkgtest.kjZSsr/build.hH9/src/test /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test/CMakeFiles/test_xsimd.dir/DependInfo.cmake "--color=" 177s make[2]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test' 177s make -f CMakeFiles/test_xsimd.dir/build.make CMakeFiles/test_xsimd.dir/build 177s make[2]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test' 177s [ 2%] Building CXX object CMakeFiles/test_xsimd.dir/main.cpp.o 177s /usr/bin/c++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/main.cpp.o -MF CMakeFiles/test_xsimd.dir/main.cpp.o.d -o CMakeFiles/test_xsimd.dir/main.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp 181s In file included from /tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp:13: 181s /usr/include/doctest/doctest.h: In function ‘bool doctest::operator==(double, const Approx&)’: 181s /usr/include/doctest/doctest.h:4012:1: error: unrecognizable insn: 181s 4012 | } 181s | ^ 181s (insn 18 17 19 2 (set (reg:DF 131 [ _14 ]) 181s (if_then_else:DF (gt (reg:CCFPE 100 cc) 181s (const_int 0 [0])) 181s (reg:DF 120 [ _7 ]) 181s (reg:DF 119 [ _6 ]))) "/usr/include/doctest/doctest.h":4011:41 discrim 1 -1 181s (nil)) 181s during RTL pass: vregs 181s /usr/include/doctest/doctest.h:4012:1: internal compiler error: in extract_insn, at recog.cc:2882 181s Please submit a full bug report, with preprocessed source (by using -freport-bug). 181s See for instructions. 193s Preprocessed source stored into /tmp/ccNuAfUb.out file, please attach this to your bugreport. 193s === BEGIN GCC DUMP === 193s 1515: // Target: arm-linux-gnueabihf 193s 1515: // Configured with: ../src/configure -v --with-pkgversion='Ubuntu 15.2.0-12ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-15/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust,algol68 --prefix=/usr --with-gcc-major-version-only --program-suffix=-15 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --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-libstdcxx-backtrace --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv7-a+fp --with-float=hard --with-mode=thumb --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf 193s 1515: // Thread model: posix 193s 1515: // Supported LTO compression algorithms: zlib zstd 193s 1515: // gcc version 15.2.0 (Ubuntu 15.2.0-12ubuntu1) 193s 1515: // 193s 1515: // In file included from /tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp:13: 193s 1515: // /usr/include/doctest/doctest.h: In function ‘bool doctest::operator==(double, const Approx&)’: 193s 1515: // /usr/include/doctest/doctest.h:4012:1: error: unrecognizable insn: 193s 1515: // 4012 | } 193s 1515: // | ^ 193s 1515: // (insn 18 17 19 2 (set (reg:DF 131 [ _14 ]) 193s 1515: // (if_then_else:DF (gt (reg:CCFPE 100 cc) 193s 1515: // (const_int 0 [0])) 193s 1515: // (reg:DF 120 [ _7 ]) 193s 1515: // (reg:DF 119 [ _6 ]))) "/usr/include/doctest/doctest.h":4011:41 discrim 1 -1 193s 1515: // (nil)) 193s 1515: // during RTL pass: vregs 193s 1515: // /usr/include/doctest/doctest.h:4012:1: internal compiler error: in extract_insn, at recog.cc:2882 193s 1515: // Please submit a full bug report, with preprocessed source (by using -freport-bug). 193s 1515: // See for instructions. 193s 1515: 193s 1515: // /usr/libexec/gcc/arm-linux-gnueabihf/15/cc1plus -quiet -imultilib . -imultiarch arm-linux-gnueabihf -MD CMakeFiles/test_xsimd.dir/main.cpp.d -MF CMakeFiles/test_xsimd.dir/main.cpp.o.d -MT CMakeFiles/test_xsimd.dir/main.cpp.o -D_GNU_SOURCE -D NDEBUG /tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=3 -quiet -dumpdir CMakeFiles/test_xsimd.dir/ -dumpbase main.cpp.cpp -dumpbase-ext .cpp -mfloat-abi=hard -mfpu=vfpv3 -mtls-dialect=gnu -mthumb -mlibarch=armv8.2-a+fp16+dotprod -march=armv8.2-a+fp16+dotprod -g -O3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -fPIC -fstack-protector-strong -Wformat -Wformat-security -fzero-init-padding-bits=all -Wbidi-chars=any -o - -frandom-seed=0 -fdump-noaddr 193s 1515: 193s 1515: # 0 "/tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp" 193s 1515: # 1 "/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test//" 193s 1515: # 0 "" 193s 1515: # 0 "" 193s 1515: # 1 "/usr/include/stdc-predef.h" 1 3 4 193s 1515: # 0 "" 2 193s 1515: # 1 "/tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp" 193s 1515: # 13 "/tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp" 193s 1515: # 1 "/usr/include/doctest/doctest.h" 1 3 4 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wunknown-pragmas" 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wpragmas" 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Weffc++" 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wstrict-overflow" 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wstrict-aliasing" 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wmissing-declarations" 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wuseless-cast" 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 214 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wnoexcept" 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 220 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: 193s 1515: # 221 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 193s 1515: 193s 1515: # 222 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wnon-virtual-dtor" 193s 1515: 193s 1515: # 223 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wsign-promo" 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 446 "/usr/include/doctest/doctest.h" 3 4 193s 1515: namespace doctest { namespace detail { 193s 1515: static constexpr int consume(const int*, int) noexcept { return 0; } 193s 1515: }} 193s 1515: # 462 "/usr/include/doctest/doctest.h" 3 4 193s 1515: # 1 "/usr/include/signal.h" 1 3 4 193s 1515: # 25 "/usr/include/signal.h" 3 4 193s 1515: # 1 "/usr/include/features.h" 1 3 4 193s 1515: # 415 "/usr/include/features.h" 3 4 193s 1515: # 1 "/usr/include/features-time64.h" 1 3 4 193s 1515: # 20 "/usr/include/features-time64.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 193s 1515: # 21 "/usr/include/features-time64.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 1 3 4 193s 1515: # 22 "/usr/include/features-time64.h" 2 3 4 193s 1515: # 416 "/usr/include/features.h" 2 3 4 193s 1515: # 523 "/usr/include/features.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 1 3 4 193s 1515: # 730 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 193s 1515: # 731 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4 193s 1515: # 732 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4 193s 1515: # 524 "/usr/include/features.h" 2 3 4 193s 1515: # 547 "/usr/include/features.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 1 3 4 193s 1515: # 10 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h" 1 3 4 193s 1515: # 11 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 2 3 4 193s 1515: # 548 "/usr/include/features.h" 2 3 4 193s 1515: # 26 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 193s 1515: # 28 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 1 3 4 193s 1515: # 29 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: typedef unsigned char __u_char; 193s 1515: typedef unsigned short int __u_short; 193s 1515: typedef unsigned int __u_int; 193s 1515: typedef unsigned long int __u_long; 193s 1515: 193s 1515: 193s 1515: typedef signed char __int8_t; 193s 1515: typedef unsigned char __uint8_t; 193s 1515: typedef signed short int __int16_t; 193s 1515: typedef unsigned short int __uint16_t; 193s 1515: typedef signed int __int32_t; 193s 1515: typedef unsigned int __uint32_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ typedef signed long long int __int64_t; 193s 1515: __extension__ typedef unsigned long long int __uint64_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __int8_t __int_least8_t; 193s 1515: typedef __uint8_t __uint_least8_t; 193s 1515: typedef __int16_t __int_least16_t; 193s 1515: typedef __uint16_t __uint_least16_t; 193s 1515: typedef __int32_t __int_least32_t; 193s 1515: typedef __uint32_t __uint_least32_t; 193s 1515: typedef __int64_t __int_least64_t; 193s 1515: typedef __uint64_t __uint_least64_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ typedef long long int __quad_t; 193s 1515: __extension__ typedef unsigned long long int __u_quad_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ typedef long long int __intmax_t; 193s 1515: __extension__ typedef unsigned long long int __uintmax_t; 193s 1515: # 141 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/typesizes.h" 1 3 4 193s 1515: # 142 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/time64.h" 1 3 4 193s 1515: # 143 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: __extension__ typedef __uint64_t __dev_t; 193s 1515: __extension__ typedef unsigned int __uid_t; 193s 1515: __extension__ typedef unsigned int __gid_t; 193s 1515: __extension__ typedef unsigned long int __ino_t; 193s 1515: __extension__ typedef __uint64_t __ino64_t; 193s 1515: __extension__ typedef unsigned int __mode_t; 193s 1515: __extension__ typedef unsigned int __nlink_t; 193s 1515: __extension__ typedef long int __off_t; 193s 1515: __extension__ typedef __int64_t __off64_t; 193s 1515: __extension__ typedef int __pid_t; 193s 1515: __extension__ typedef struct { int __val[2]; } __fsid_t; 193s 1515: __extension__ typedef long int __clock_t; 193s 1515: __extension__ typedef unsigned long int __rlim_t; 193s 1515: __extension__ typedef __uint64_t __rlim64_t; 193s 1515: __extension__ typedef unsigned int __id_t; 193s 1515: __extension__ typedef long int __time_t; 193s 1515: __extension__ typedef unsigned int __useconds_t; 193s 1515: __extension__ typedef long int __suseconds_t; 193s 1515: __extension__ typedef __int64_t __suseconds64_t; 193s 1515: 193s 1515: __extension__ typedef int __daddr_t; 193s 1515: __extension__ typedef int __key_t; 193s 1515: 193s 1515: 193s 1515: __extension__ typedef int __clockid_t; 193s 1515: 193s 1515: 193s 1515: __extension__ typedef void * __timer_t; 193s 1515: 193s 1515: 193s 1515: __extension__ typedef long int __blksize_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ typedef long int __blkcnt_t; 193s 1515: __extension__ typedef __int64_t __blkcnt64_t; 193s 1515: 193s 1515: 193s 1515: __extension__ typedef unsigned long int __fsblkcnt_t; 193s 1515: __extension__ typedef __uint64_t __fsblkcnt64_t; 193s 1515: 193s 1515: 193s 1515: __extension__ typedef unsigned long int __fsfilcnt_t; 193s 1515: __extension__ typedef __uint64_t __fsfilcnt64_t; 193s 1515: 193s 1515: 193s 1515: __extension__ typedef int __fsword_t; 193s 1515: 193s 1515: __extension__ typedef int __ssize_t; 193s 1515: 193s 1515: 193s 1515: __extension__ typedef long int __syscall_slong_t; 193s 1515: 193s 1515: __extension__ typedef unsigned long int __syscall_ulong_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __off64_t __loff_t; 193s 1515: typedef char *__caddr_t; 193s 1515: 193s 1515: 193s 1515: __extension__ typedef int __intptr_t; 193s 1515: 193s 1515: 193s 1515: __extension__ typedef unsigned int __socklen_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef int __sig_atomic_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ typedef __int64_t __time64_t; 193s 1515: # 30 "/usr/include/signal.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/signum-generic.h" 1 3 4 193s 1515: # 76 "/usr/include/arm-linux-gnueabihf/bits/signum-generic.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/signum-arch.h" 1 3 4 193s 1515: # 77 "/usr/include/arm-linux-gnueabihf/bits/signum-generic.h" 2 3 4 193s 1515: # 31 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sig_atomic_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __sig_atomic_t sig_atomic_t; 193s 1515: # 33 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__sigset_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef struct 193s 1515: { 193s 1515: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; 193s 1515: } __sigset_t; 193s 1515: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: typedef __sigset_t sigset_t; 193s 1515: # 36 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __pid_t pid_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __uid_t uid_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 1 3 4 193s 1515: # 35 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/endianness.h" 1 3 4 193s 1515: # 36 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 2 3 4 193s 1515: # 7 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/time_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __time64_t time_t; 193s 1515: # 8 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct timespec 193s 1515: { 193s 1515: 193s 1515: __time64_t tv_sec; 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 3 4 193s 1515: long int tv_nsec; 193s 1515: int: 32; 193s 1515: 193s 1515: 193s 1515: }; 193s 1515: # 54 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 193s 1515: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 2 3 4 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__sigval_t.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/types/__sigval_t.h" 3 4 193s 1515: union sigval 193s 1515: { 193s 1515: int sival_int; 193s 1515: void *sival_ptr; 193s 1515: }; 193s 1515: 193s 1515: typedef union sigval __sigval_t; 193s 1515: # 7 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 2 3 4 193s 1515: # 16 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/siginfo-arch.h" 1 3 4 193s 1515: # 17 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 2 3 4 193s 1515: # 36 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 3 4 193s 1515: typedef struct 193s 1515: { 193s 1515: int si_signo; 193s 1515: 193s 1515: int si_errno; 193s 1515: 193s 1515: int si_code; 193s 1515: # 51 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 3 4 193s 1515: union 193s 1515: { 193s 1515: int _pad[((128 / sizeof (int)) - 3)]; 193s 1515: 193s 1515: 193s 1515: struct 193s 1515: { 193s 1515: __pid_t si_pid; 193s 1515: __uid_t si_uid; 193s 1515: } _kill; 193s 1515: 193s 1515: 193s 1515: struct 193s 1515: { 193s 1515: int si_tid; 193s 1515: int si_overrun; 193s 1515: __sigval_t si_sigval; 193s 1515: } _timer; 193s 1515: 193s 1515: 193s 1515: struct 193s 1515: { 193s 1515: __pid_t si_pid; 193s 1515: __uid_t si_uid; 193s 1515: __sigval_t si_sigval; 193s 1515: } _rt; 193s 1515: 193s 1515: 193s 1515: struct 193s 1515: { 193s 1515: __pid_t si_pid; 193s 1515: __uid_t si_uid; 193s 1515: int si_status; 193s 1515: __clock_t si_utime; 193s 1515: __clock_t si_stime; 193s 1515: } _sigchld; 193s 1515: 193s 1515: 193s 1515: struct 193s 1515: { 193s 1515: void *si_addr; 193s 1515: 193s 1515: short int si_addr_lsb; 193s 1515: union 193s 1515: { 193s 1515: 193s 1515: struct 193s 1515: { 193s 1515: void *_lower; 193s 1515: void *_upper; 193s 1515: } _addr_bnd; 193s 1515: 193s 1515: __uint32_t _pkey; 193s 1515: } _bounds; 193s 1515: } _sigfault; 193s 1515: 193s 1515: 193s 1515: struct 193s 1515: { 193s 1515: long int si_band; 193s 1515: int si_fd; 193s 1515: } _sigpoll; 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct 193s 1515: { 193s 1515: void *_call_addr; 193s 1515: int _syscall; 193s 1515: unsigned int _arch; 193s 1515: } _sigsys; 193s 1515: 193s 1515: } _sifields; 193s 1515: } siginfo_t ; 193s 1515: # 58 "/usr/include/signal.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 1 3 4 193s 1515: # 35 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 3 4 193s 1515: enum 193s 1515: { 193s 1515: SI_ASYNCNL = -60, 193s 1515: SI_DETHREAD = -7, 193s 1515: 193s 1515: SI_TKILL, 193s 1515: SI_SIGIO, 193s 1515: 193s 1515: SI_ASYNCIO, 193s 1515: SI_MESGQ, 193s 1515: SI_TIMER, 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: SI_QUEUE, 193s 1515: SI_USER, 193s 1515: SI_KERNEL = 0x80 193s 1515: # 66 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 3 4 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: ILL_ILLOPC = 1, 193s 1515: 193s 1515: ILL_ILLOPN, 193s 1515: 193s 1515: ILL_ILLADR, 193s 1515: 193s 1515: ILL_ILLTRP, 193s 1515: 193s 1515: ILL_PRVOPC, 193s 1515: 193s 1515: ILL_PRVREG, 193s 1515: 193s 1515: ILL_COPROC, 193s 1515: 193s 1515: ILL_BADSTK, 193s 1515: 193s 1515: ILL_BADIADDR 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: FPE_INTDIV = 1, 193s 1515: 193s 1515: FPE_INTOVF, 193s 1515: 193s 1515: FPE_FLTDIV, 193s 1515: 193s 1515: FPE_FLTOVF, 193s 1515: 193s 1515: FPE_FLTUND, 193s 1515: 193s 1515: FPE_FLTRES, 193s 1515: 193s 1515: FPE_FLTINV, 193s 1515: 193s 1515: FPE_FLTSUB, 193s 1515: 193s 1515: FPE_FLTUNK = 14, 193s 1515: 193s 1515: FPE_CONDTRAP 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: SEGV_MAPERR = 1, 193s 1515: 193s 1515: SEGV_ACCERR, 193s 1515: 193s 1515: SEGV_BNDERR, 193s 1515: 193s 1515: SEGV_PKUERR, 193s 1515: 193s 1515: SEGV_ACCADI, 193s 1515: 193s 1515: SEGV_ADIDERR, 193s 1515: 193s 1515: SEGV_ADIPERR, 193s 1515: 193s 1515: SEGV_MTEAERR, 193s 1515: 193s 1515: SEGV_MTESERR, 193s 1515: 193s 1515: SEGV_CPERR 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: BUS_ADRALN = 1, 193s 1515: 193s 1515: BUS_ADRERR, 193s 1515: 193s 1515: BUS_OBJERR, 193s 1515: 193s 1515: BUS_MCEERR_AR, 193s 1515: 193s 1515: BUS_MCEERR_AO 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: TRAP_BRKPT = 1, 193s 1515: 193s 1515: TRAP_TRACE, 193s 1515: 193s 1515: TRAP_BRANCH, 193s 1515: 193s 1515: TRAP_HWBKPT, 193s 1515: 193s 1515: TRAP_UNK 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: CLD_EXITED = 1, 193s 1515: 193s 1515: CLD_KILLED, 193s 1515: 193s 1515: CLD_DUMPED, 193s 1515: 193s 1515: CLD_TRAPPED, 193s 1515: 193s 1515: CLD_STOPPED, 193s 1515: 193s 1515: CLD_CONTINUED 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: POLL_IN = 1, 193s 1515: 193s 1515: POLL_OUT, 193s 1515: 193s 1515: POLL_MSG, 193s 1515: 193s 1515: POLL_ERR, 193s 1515: 193s 1515: POLL_PRI, 193s 1515: 193s 1515: POLL_HUP 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts-arch.h" 1 3 4 193s 1515: # 216 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 2 3 4 193s 1515: # 59 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigval_t.h" 1 3 4 193s 1515: # 16 "/usr/include/arm-linux-gnueabihf/bits/types/sigval_t.h" 3 4 193s 1515: typedef __sigval_t sigval_t; 193s 1515: # 63 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigevent_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 193s 1515: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/sigevent_t.h" 2 3 4 193s 1515: # 17 "/usr/include/arm-linux-gnueabihf/bits/types/sigevent_t.h" 3 4 193s 1515: typedef union pthread_attr_t pthread_attr_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef struct sigevent 193s 1515: { 193s 1515: __sigval_t sigev_value; 193s 1515: int sigev_signo; 193s 1515: int sigev_notify; 193s 1515: 193s 1515: union 193s 1515: { 193s 1515: int _pad[((64 / sizeof (int)) - 3)]; 193s 1515: 193s 1515: 193s 1515: 193s 1515: __pid_t _tid; 193s 1515: 193s 1515: struct 193s 1515: { 193s 1515: void (*_function) (__sigval_t); 193s 1515: pthread_attr_t *_attribute; 193s 1515: } _sigev_thread; 193s 1515: } _sigev_un; 193s 1515: } sigevent_t; 193s 1515: # 67 "/usr/include/signal.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigevent-consts.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/sigevent-consts.h" 3 4 193s 1515: enum 193s 1515: { 193s 1515: SIGEV_SIGNAL = 0, 193s 1515: 193s 1515: SIGEV_NONE, 193s 1515: 193s 1515: SIGEV_THREAD, 193s 1515: 193s 1515: 193s 1515: SIGEV_THREAD_ID = 4 193s 1515: 193s 1515: 193s 1515: }; 193s 1515: # 68 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef void (*__sighandler_t) (int); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) 193s 1515: noexcept (true); 193s 1515: 193s 1515: extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __sighandler_t signal (int __sig, __sighandler_t __handler) 193s 1515: noexcept (true); 193s 1515: # 112 "/usr/include/signal.h" 3 4 193s 1515: extern int kill (__pid_t __pid, int __sig) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int killpg (__pid_t __pgrp, int __sig) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int raise (int __sig) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) 193s 1515: noexcept (true); 193s 1515: extern int gsignal (int __sig) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void psignal (int __sig, const char *__s); 193s 1515: 193s 1515: 193s 1515: extern void psiginfo (const siginfo_t *__pinfo, const char *__s); 193s 1515: # 151 "/usr/include/signal.h" 3 4 193s 1515: extern int sigpause (int __sig) __asm__ ("__xpg_sigpause") 193s 1515: __attribute__ ((__deprecated__ ("Use the sigsuspend function instead"))); 193s 1515: # 173 "/usr/include/signal.h" 3 4 193s 1515: extern int sigblock (int __mask) noexcept (true) __attribute__ ((__deprecated__)); 193s 1515: 193s 1515: 193s 1515: extern int sigsetmask (int __mask) noexcept (true) __attribute__ ((__deprecated__)); 193s 1515: 193s 1515: 193s 1515: extern int siggetmask (void) noexcept (true) __attribute__ ((__deprecated__)); 193s 1515: # 188 "/usr/include/signal.h" 3 4 193s 1515: typedef __sighandler_t sighandler_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __sighandler_t sig_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sigemptyset (sigset_t *__set) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int sigfillset (sigset_t *__set) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int sigaddset (sigset_t *__set, int __signo) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int sigdelset (sigset_t *__set, int __signo) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int sigismember (const sigset_t *__set, int __signo) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sigisemptyset (const sigset_t *__set) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int sigandset (sigset_t *__set, const sigset_t *__left, 193s 1515: const sigset_t *__right) noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); 193s 1515: 193s 1515: 193s 1515: extern int sigorset (sigset_t *__set, const sigset_t *__left, 193s 1515: const sigset_t *__right) noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigaction.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/sigaction.h" 3 4 193s 1515: struct sigaction 193s 1515: { 193s 1515: 193s 1515: 193s 1515: union 193s 1515: { 193s 1515: 193s 1515: __sighandler_t sa_handler; 193s 1515: 193s 1515: void (*sa_sigaction) (int, siginfo_t *, void *); 193s 1515: } 193s 1515: __sigaction_handler; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __sigset_t sa_mask; 193s 1515: 193s 1515: 193s 1515: int sa_flags; 193s 1515: 193s 1515: 193s 1515: void (*sa_restorer) (void); 193s 1515: }; 193s 1515: # 230 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: extern int sigprocmask (int __how, const sigset_t *__restrict __set, 193s 1515: sigset_t *__restrict __oset) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sigsuspend (const sigset_t *__set) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int sigaction (int __sig, const struct sigaction *__restrict __act, 193s 1515: struct sigaction *__restrict __oact) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int sigpending (sigset_t *__set) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig) 193s 1515: __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sigwaitinfo (const sigset_t *__restrict __set, 193s 1515: siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); 193s 1515: # 279 "/usr/include/signal.h" 3 4 193s 1515: extern int sigtimedwait (const sigset_t *__restrict __set, siginfo_t *__restrict __info, const struct timespec *__restrict __timeout) __asm__ ("" "__sigtimedwait64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 1 3 4 193s 1515: # 30 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/asm/sigcontext.h" 1 3 4 193s 1515: # 10 "/usr/include/arm-linux-gnueabihf/asm/sigcontext.h" 3 4 193s 1515: struct sigcontext { 193s 1515: unsigned long trap_no; 193s 1515: unsigned long error_code; 193s 1515: unsigned long oldmask; 193s 1515: unsigned long arm_r0; 193s 1515: unsigned long arm_r1; 193s 1515: unsigned long arm_r2; 193s 1515: unsigned long arm_r3; 193s 1515: unsigned long arm_r4; 193s 1515: unsigned long arm_r5; 193s 1515: unsigned long arm_r6; 193s 1515: unsigned long arm_r7; 193s 1515: unsigned long arm_r8; 193s 1515: unsigned long arm_r9; 193s 1515: unsigned long arm_r10; 193s 1515: unsigned long arm_fp; 193s 1515: unsigned long arm_ip; 193s 1515: unsigned long arm_sp; 193s 1515: unsigned long arm_lr; 193s 1515: unsigned long arm_pc; 193s 1515: unsigned long arm_cpsr; 193s 1515: unsigned long fault_address; 193s 1515: }; 193s 1515: # 31 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 35 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 2 3 4 193s 1515: # 302 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: extern int sigreturn (struct sigcontext *__scp) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 229 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 3 4 193s 1515: typedef unsigned int size_t; 193s 1515: # 312 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/stack_t.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/stack_t.h" 3 4 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/types/stack_t.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: typedef struct 193s 1515: { 193s 1515: void *ss_sp; 193s 1515: int ss_flags; 193s 1515: size_t ss_size; 193s 1515: } stack_t; 193s 1515: # 314 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/sys/ucontext.h" 1 3 4 193s 1515: # 36 "/usr/include/arm-linux-gnueabihf/sys/ucontext.h" 3 4 193s 1515: typedef int greg_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef greg_t gregset_t[18]; 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: REG_R0 = 0, 193s 1515: 193s 1515: REG_R1 = 1, 193s 1515: 193s 1515: REG_R2 = 2, 193s 1515: 193s 1515: REG_R3 = 3, 193s 1515: 193s 1515: REG_R4 = 4, 193s 1515: 193s 1515: REG_R5 = 5, 193s 1515: 193s 1515: REG_R6 = 6, 193s 1515: 193s 1515: REG_R7 = 7, 193s 1515: 193s 1515: REG_R8 = 8, 193s 1515: 193s 1515: REG_R9 = 9, 193s 1515: 193s 1515: REG_R10 = 10, 193s 1515: 193s 1515: REG_R11 = 11, 193s 1515: 193s 1515: REG_R12 = 12, 193s 1515: 193s 1515: REG_R13 = 13, 193s 1515: 193s 1515: REG_R14 = 14, 193s 1515: 193s 1515: REG_R15 = 15 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: struct _libc_fpstate 193s 1515: { 193s 1515: struct 193s 1515: { 193s 1515: unsigned int sign1:1; 193s 1515: unsigned int unused:15; 193s 1515: unsigned int sign2:1; 193s 1515: unsigned int exponent:14; 193s 1515: unsigned int j:1; 193s 1515: unsigned int mantissa1:31; 193s 1515: unsigned int mantissa0:32; 193s 1515: } fpregs[8]; 193s 1515: unsigned int fpsr:32; 193s 1515: unsigned int fpcr:32; 193s 1515: unsigned char ftype[8]; 193s 1515: unsigned int init_flag; 193s 1515: }; 193s 1515: 193s 1515: typedef struct _libc_fpstate fpregset_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef struct 193s 1515: { 193s 1515: unsigned long int trap_no; 193s 1515: unsigned long int error_code; 193s 1515: unsigned long int oldmask; 193s 1515: unsigned long int arm_r0; 193s 1515: unsigned long int arm_r1; 193s 1515: unsigned long int arm_r2; 193s 1515: unsigned long int arm_r3; 193s 1515: unsigned long int arm_r4; 193s 1515: unsigned long int arm_r5; 193s 1515: unsigned long int arm_r6; 193s 1515: unsigned long int arm_r7; 193s 1515: unsigned long int arm_r8; 193s 1515: unsigned long int arm_r9; 193s 1515: unsigned long int arm_r10; 193s 1515: unsigned long int arm_fp; 193s 1515: unsigned long int arm_ip; 193s 1515: unsigned long int arm_sp; 193s 1515: unsigned long int arm_lr; 193s 1515: unsigned long int arm_pc; 193s 1515: unsigned long int arm_cpsr; 193s 1515: unsigned long int fault_address; 193s 1515: } mcontext_t; 193s 1515: 193s 1515: 193s 1515: typedef struct ucontext_t 193s 1515: { 193s 1515: unsigned long uc_flags; 193s 1515: struct ucontext_t *uc_link; 193s 1515: stack_t uc_stack; 193s 1515: mcontext_t uc_mcontext; 193s 1515: sigset_t uc_sigmask; 193s 1515: unsigned long uc_regspace[128] __attribute__((__aligned__(8))); 193s 1515: } ucontext_t; 193s 1515: # 317 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int siginterrupt (int __sig, int __interrupt) noexcept (true) 193s 1515: __attribute__ ((__deprecated__ ("Use sigaction with SA_RESTART instead"))); 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigstack.h" 1 3 4 193s 1515: # 328 "/usr/include/signal.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigstksz.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/sigstksz.h" 3 4 193s 1515: # 1 "/usr/include/unistd.h" 1 3 4 193s 1515: # 27 "/usr/include/unistd.h" 3 4 193s 1515: extern "C" { 193s 1515: # 202 "/usr/include/unistd.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix_opt.h" 1 3 4 193s 1515: # 203 "/usr/include/unistd.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 1 3 4 193s 1515: # 22 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 2 3 4 193s 1515: # 207 "/usr/include/unistd.h" 2 3 4 193s 1515: # 220 "/usr/include/unistd.h" 3 4 193s 1515: typedef __ssize_t ssize_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 227 "/usr/include/unistd.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __gid_t gid_t; 193s 1515: # 245 "/usr/include/unistd.h" 3 4 193s 1515: typedef __off64_t off_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __off64_t off64_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __useconds_t useconds_t; 193s 1515: # 267 "/usr/include/unistd.h" 3 4 193s 1515: typedef __intptr_t intptr_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __socklen_t socklen_t; 193s 1515: # 287 "/usr/include/unistd.h" 3 4 193s 1515: extern int access (const char *__name, int __type) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int euidaccess (const char *__name, int __type) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int eaccess (const char *__name, int __type) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int execveat (int __fd, const char *__path, char *const __argv[], 193s 1515: char *const __envp[], int __flags) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int faccessat (int __fd, const char *__file, int __type, int __flag) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 193s 1515: # 342 "/usr/include/unistd.h" 3 4 193s 1515: extern __off64_t lseek (int __fd, __off64_t __offset, int __whence) noexcept (true) __asm__ ("" "lseek64") 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int close (int __fd); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void closefrom (int __lowfd) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__)) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__access__ (__read_only__, 2, 3))); 193s 1515: # 404 "/usr/include/unistd.h" 3 4 193s 1515: extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) 193s 1515: ; 193s 1515: extern ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pwrite64") 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__access__ (__read_only__, 2, 3))); 193s 1515: # 422 "/usr/include/unistd.h" 3 4 193s 1515: extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, 193s 1515: __off64_t __offset) __attribute__ ((__warn_unused_result__)) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, 193s 1515: __off64_t __offset) __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__access__ (__read_only__, 2, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pipe (int __pipedes[2]) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pipe2 (int __pipedes[2], int __flags) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: # 452 "/usr/include/unistd.h" 3 4 193s 1515: extern unsigned int alarm (unsigned int __seconds) noexcept (true); 193s 1515: # 464 "/usr/include/unistd.h" 3 4 193s 1515: extern unsigned int sleep (unsigned int __seconds); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int usleep (__useconds_t __useconds); 193s 1515: # 489 "/usr/include/unistd.h" 3 4 193s 1515: extern int pause (void); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int chown (const char *__file, __uid_t __owner, __gid_t __group) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fchown (int __fd, __uid_t __owner, __gid_t __group) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fchownat (int __fd, const char *__file, __uid_t __owner, 193s 1515: __gid_t __group, int __flag) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int chdir (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fchdir (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: # 531 "/usr/include/unistd.h" 3 4 193s 1515: extern char *getcwd (char *__buf, size_t __size) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *get_current_dir_name (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *getwd (char *__buf) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__access__ (__write_only__, 1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int dup (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: extern int dup2 (int __fd, int __fd2) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int dup3 (int __fd, int __fd2, int __flags) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char **__environ; 193s 1515: 193s 1515: extern char **environ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int execve (const char *__path, char *const __argv[], 193s 1515: char *const __envp[]) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fexecve (int __fd, char *const __argv[], char *const __envp[]) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int execv (const char *__path, char *const __argv[]) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int execle (const char *__path, const char *__arg, ...) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int execl (const char *__path, const char *__arg, ...) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int execvp (const char *__file, char *const __argv[]) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int execlp (const char *__file, const char *__arg, ...) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int execvpe (const char *__file, char *const __argv[], 193s 1515: char *const __envp[]) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int nice (int __inc) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void _exit (int __status) __attribute__ ((__noreturn__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 3 4 193s 1515: enum 193s 1515: { 193s 1515: _PC_LINK_MAX, 193s 1515: 193s 1515: _PC_MAX_CANON, 193s 1515: 193s 1515: _PC_MAX_INPUT, 193s 1515: 193s 1515: _PC_NAME_MAX, 193s 1515: 193s 1515: _PC_PATH_MAX, 193s 1515: 193s 1515: _PC_PIPE_BUF, 193s 1515: 193s 1515: _PC_CHOWN_RESTRICTED, 193s 1515: 193s 1515: _PC_NO_TRUNC, 193s 1515: 193s 1515: _PC_VDISABLE, 193s 1515: 193s 1515: _PC_SYNC_IO, 193s 1515: 193s 1515: _PC_ASYNC_IO, 193s 1515: 193s 1515: _PC_PRIO_IO, 193s 1515: 193s 1515: _PC_SOCK_MAXBUF, 193s 1515: 193s 1515: _PC_FILESIZEBITS, 193s 1515: 193s 1515: _PC_REC_INCR_XFER_SIZE, 193s 1515: 193s 1515: _PC_REC_MAX_XFER_SIZE, 193s 1515: 193s 1515: _PC_REC_MIN_XFER_SIZE, 193s 1515: 193s 1515: _PC_REC_XFER_ALIGN, 193s 1515: 193s 1515: _PC_ALLOC_SIZE_MIN, 193s 1515: 193s 1515: _PC_SYMLINK_MAX, 193s 1515: 193s 1515: _PC_2_SYMLINKS 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: _SC_ARG_MAX, 193s 1515: 193s 1515: _SC_CHILD_MAX, 193s 1515: 193s 1515: _SC_CLK_TCK, 193s 1515: 193s 1515: _SC_NGROUPS_MAX, 193s 1515: 193s 1515: _SC_OPEN_MAX, 193s 1515: 193s 1515: _SC_STREAM_MAX, 193s 1515: 193s 1515: _SC_TZNAME_MAX, 193s 1515: 193s 1515: _SC_JOB_CONTROL, 193s 1515: 193s 1515: _SC_SAVED_IDS, 193s 1515: 193s 1515: _SC_REALTIME_SIGNALS, 193s 1515: 193s 1515: _SC_PRIORITY_SCHEDULING, 193s 1515: 193s 1515: _SC_TIMERS, 193s 1515: 193s 1515: _SC_ASYNCHRONOUS_IO, 193s 1515: 193s 1515: _SC_PRIORITIZED_IO, 193s 1515: 193s 1515: _SC_SYNCHRONIZED_IO, 193s 1515: 193s 1515: _SC_FSYNC, 193s 1515: 193s 1515: _SC_MAPPED_FILES, 193s 1515: 193s 1515: _SC_MEMLOCK, 193s 1515: 193s 1515: _SC_MEMLOCK_RANGE, 193s 1515: 193s 1515: _SC_MEMORY_PROTECTION, 193s 1515: 193s 1515: _SC_MESSAGE_PASSING, 193s 1515: 193s 1515: _SC_SEMAPHORES, 193s 1515: 193s 1515: _SC_SHARED_MEMORY_OBJECTS, 193s 1515: 193s 1515: _SC_AIO_LISTIO_MAX, 193s 1515: 193s 1515: _SC_AIO_MAX, 193s 1515: 193s 1515: _SC_AIO_PRIO_DELTA_MAX, 193s 1515: 193s 1515: _SC_DELAYTIMER_MAX, 193s 1515: 193s 1515: _SC_MQ_OPEN_MAX, 193s 1515: 193s 1515: _SC_MQ_PRIO_MAX, 193s 1515: 193s 1515: _SC_VERSION, 193s 1515: 193s 1515: _SC_PAGESIZE, 193s 1515: 193s 1515: 193s 1515: _SC_RTSIG_MAX, 193s 1515: 193s 1515: _SC_SEM_NSEMS_MAX, 193s 1515: 193s 1515: _SC_SEM_VALUE_MAX, 193s 1515: 193s 1515: _SC_SIGQUEUE_MAX, 193s 1515: 193s 1515: _SC_TIMER_MAX, 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: _SC_BC_BASE_MAX, 193s 1515: 193s 1515: _SC_BC_DIM_MAX, 193s 1515: 193s 1515: _SC_BC_SCALE_MAX, 193s 1515: 193s 1515: _SC_BC_STRING_MAX, 193s 1515: 193s 1515: _SC_COLL_WEIGHTS_MAX, 193s 1515: 193s 1515: _SC_EQUIV_CLASS_MAX, 193s 1515: 193s 1515: _SC_EXPR_NEST_MAX, 193s 1515: 193s 1515: _SC_LINE_MAX, 193s 1515: 193s 1515: _SC_RE_DUP_MAX, 193s 1515: 193s 1515: _SC_CHARCLASS_NAME_MAX, 193s 1515: 193s 1515: 193s 1515: _SC_2_VERSION, 193s 1515: 193s 1515: _SC_2_C_BIND, 193s 1515: 193s 1515: _SC_2_C_DEV, 193s 1515: 193s 1515: _SC_2_FORT_DEV, 193s 1515: 193s 1515: _SC_2_FORT_RUN, 193s 1515: 193s 1515: _SC_2_SW_DEV, 193s 1515: 193s 1515: _SC_2_LOCALEDEF, 193s 1515: 193s 1515: 193s 1515: _SC_PII, 193s 1515: 193s 1515: _SC_PII_XTI, 193s 1515: 193s 1515: _SC_PII_SOCKET, 193s 1515: 193s 1515: _SC_PII_INTERNET, 193s 1515: 193s 1515: _SC_PII_OSI, 193s 1515: 193s 1515: _SC_POLL, 193s 1515: 193s 1515: _SC_SELECT, 193s 1515: 193s 1515: _SC_UIO_MAXIOV, 193s 1515: 193s 1515: _SC_IOV_MAX = _SC_UIO_MAXIOV, 193s 1515: 193s 1515: _SC_PII_INTERNET_STREAM, 193s 1515: 193s 1515: _SC_PII_INTERNET_DGRAM, 193s 1515: 193s 1515: _SC_PII_OSI_COTS, 193s 1515: 193s 1515: _SC_PII_OSI_CLTS, 193s 1515: 193s 1515: _SC_PII_OSI_M, 193s 1515: 193s 1515: _SC_T_IOV_MAX, 193s 1515: 193s 1515: 193s 1515: 193s 1515: _SC_THREADS, 193s 1515: 193s 1515: _SC_THREAD_SAFE_FUNCTIONS, 193s 1515: 193s 1515: _SC_GETGR_R_SIZE_MAX, 193s 1515: 193s 1515: _SC_GETPW_R_SIZE_MAX, 193s 1515: 193s 1515: _SC_LOGIN_NAME_MAX, 193s 1515: 193s 1515: _SC_TTY_NAME_MAX, 193s 1515: 193s 1515: _SC_THREAD_DESTRUCTOR_ITERATIONS, 193s 1515: 193s 1515: _SC_THREAD_KEYS_MAX, 193s 1515: 193s 1515: _SC_THREAD_STACK_MIN, 193s 1515: 193s 1515: _SC_THREAD_THREADS_MAX, 193s 1515: 193s 1515: _SC_THREAD_ATTR_STACKADDR, 193s 1515: 193s 1515: _SC_THREAD_ATTR_STACKSIZE, 193s 1515: 193s 1515: _SC_THREAD_PRIORITY_SCHEDULING, 193s 1515: 193s 1515: _SC_THREAD_PRIO_INHERIT, 193s 1515: 193s 1515: _SC_THREAD_PRIO_PROTECT, 193s 1515: 193s 1515: _SC_THREAD_PROCESS_SHARED, 193s 1515: 193s 1515: 193s 1515: _SC_NPROCESSORS_CONF, 193s 1515: 193s 1515: _SC_NPROCESSORS_ONLN, 193s 1515: 193s 1515: _SC_PHYS_PAGES, 193s 1515: 193s 1515: _SC_AVPHYS_PAGES, 193s 1515: 193s 1515: _SC_ATEXIT_MAX, 193s 1515: 193s 1515: _SC_PASS_MAX, 193s 1515: 193s 1515: 193s 1515: _SC_XOPEN_VERSION, 193s 1515: 193s 1515: _SC_XOPEN_XCU_VERSION, 193s 1515: 193s 1515: _SC_XOPEN_UNIX, 193s 1515: 193s 1515: _SC_XOPEN_CRYPT, 193s 1515: 193s 1515: _SC_XOPEN_ENH_I18N, 193s 1515: 193s 1515: _SC_XOPEN_SHM, 193s 1515: 193s 1515: 193s 1515: _SC_2_CHAR_TERM, 193s 1515: 193s 1515: _SC_2_C_VERSION, 193s 1515: 193s 1515: _SC_2_UPE, 193s 1515: 193s 1515: 193s 1515: _SC_XOPEN_XPG2, 193s 1515: 193s 1515: _SC_XOPEN_XPG3, 193s 1515: 193s 1515: _SC_XOPEN_XPG4, 193s 1515: 193s 1515: 193s 1515: _SC_CHAR_BIT, 193s 1515: 193s 1515: _SC_CHAR_MAX, 193s 1515: 193s 1515: _SC_CHAR_MIN, 193s 1515: 193s 1515: _SC_INT_MAX, 193s 1515: 193s 1515: _SC_INT_MIN, 193s 1515: 193s 1515: _SC_LONG_BIT, 193s 1515: 193s 1515: _SC_WORD_BIT, 193s 1515: 193s 1515: _SC_MB_LEN_MAX, 193s 1515: 193s 1515: _SC_NZERO, 193s 1515: 193s 1515: _SC_SSIZE_MAX, 193s 1515: 193s 1515: _SC_SCHAR_MAX, 193s 1515: 193s 1515: _SC_SCHAR_MIN, 193s 1515: 193s 1515: _SC_SHRT_MAX, 193s 1515: 193s 1515: _SC_SHRT_MIN, 193s 1515: 193s 1515: _SC_UCHAR_MAX, 193s 1515: 193s 1515: _SC_UINT_MAX, 193s 1515: 193s 1515: _SC_ULONG_MAX, 193s 1515: 193s 1515: _SC_USHRT_MAX, 193s 1515: 193s 1515: 193s 1515: _SC_NL_ARGMAX, 193s 1515: 193s 1515: _SC_NL_LANGMAX, 193s 1515: 193s 1515: _SC_NL_MSGMAX, 193s 1515: 193s 1515: _SC_NL_NMAX, 193s 1515: 193s 1515: _SC_NL_SETMAX, 193s 1515: 193s 1515: _SC_NL_TEXTMAX, 193s 1515: 193s 1515: 193s 1515: _SC_XBS5_ILP32_OFF32, 193s 1515: 193s 1515: _SC_XBS5_ILP32_OFFBIG, 193s 1515: 193s 1515: _SC_XBS5_LP64_OFF64, 193s 1515: 193s 1515: _SC_XBS5_LPBIG_OFFBIG, 193s 1515: 193s 1515: 193s 1515: _SC_XOPEN_LEGACY, 193s 1515: 193s 1515: _SC_XOPEN_REALTIME, 193s 1515: 193s 1515: _SC_XOPEN_REALTIME_THREADS, 193s 1515: 193s 1515: 193s 1515: _SC_ADVISORY_INFO, 193s 1515: 193s 1515: _SC_BARRIERS, 193s 1515: 193s 1515: _SC_BASE, 193s 1515: 193s 1515: _SC_C_LANG_SUPPORT, 193s 1515: 193s 1515: _SC_C_LANG_SUPPORT_R, 193s 1515: 193s 1515: _SC_CLOCK_SELECTION, 193s 1515: 193s 1515: _SC_CPUTIME, 193s 1515: 193s 1515: _SC_THREAD_CPUTIME, 193s 1515: 193s 1515: _SC_DEVICE_IO, 193s 1515: 193s 1515: _SC_DEVICE_SPECIFIC, 193s 1515: 193s 1515: _SC_DEVICE_SPECIFIC_R, 193s 1515: 193s 1515: _SC_FD_MGMT, 193s 1515: 193s 1515: _SC_FIFO, 193s 1515: 193s 1515: _SC_PIPE, 193s 1515: 193s 1515: _SC_FILE_ATTRIBUTES, 193s 1515: 193s 1515: _SC_FILE_LOCKING, 193s 1515: 193s 1515: _SC_FILE_SYSTEM, 193s 1515: 193s 1515: _SC_MONOTONIC_CLOCK, 193s 1515: 193s 1515: _SC_MULTI_PROCESS, 193s 1515: 193s 1515: _SC_SINGLE_PROCESS, 193s 1515: 193s 1515: _SC_NETWORKING, 193s 1515: 193s 1515: _SC_READER_WRITER_LOCKS, 193s 1515: 193s 1515: _SC_SPIN_LOCKS, 193s 1515: 193s 1515: _SC_REGEXP, 193s 1515: 193s 1515: _SC_REGEX_VERSION, 193s 1515: 193s 1515: _SC_SHELL, 193s 1515: 193s 1515: _SC_SIGNALS, 193s 1515: 193s 1515: _SC_SPAWN, 193s 1515: 193s 1515: _SC_SPORADIC_SERVER, 193s 1515: 193s 1515: _SC_THREAD_SPORADIC_SERVER, 193s 1515: 193s 1515: _SC_SYSTEM_DATABASE, 193s 1515: 193s 1515: _SC_SYSTEM_DATABASE_R, 193s 1515: 193s 1515: _SC_TIMEOUTS, 193s 1515: 193s 1515: _SC_TYPED_MEMORY_OBJECTS, 193s 1515: 193s 1515: _SC_USER_GROUPS, 193s 1515: 193s 1515: _SC_USER_GROUPS_R, 193s 1515: 193s 1515: _SC_2_PBS, 193s 1515: 193s 1515: _SC_2_PBS_ACCOUNTING, 193s 1515: 193s 1515: _SC_2_PBS_LOCATE, 193s 1515: 193s 1515: _SC_2_PBS_MESSAGE, 193s 1515: 193s 1515: _SC_2_PBS_TRACK, 193s 1515: 193s 1515: _SC_SYMLOOP_MAX, 193s 1515: 193s 1515: _SC_STREAMS, 193s 1515: 193s 1515: _SC_2_PBS_CHECKPOINT, 193s 1515: 193s 1515: 193s 1515: _SC_V6_ILP32_OFF32, 193s 1515: 193s 1515: _SC_V6_ILP32_OFFBIG, 193s 1515: 193s 1515: _SC_V6_LP64_OFF64, 193s 1515: 193s 1515: _SC_V6_LPBIG_OFFBIG, 193s 1515: 193s 1515: 193s 1515: _SC_HOST_NAME_MAX, 193s 1515: 193s 1515: _SC_TRACE, 193s 1515: 193s 1515: _SC_TRACE_EVENT_FILTER, 193s 1515: 193s 1515: _SC_TRACE_INHERIT, 193s 1515: 193s 1515: _SC_TRACE_LOG, 193s 1515: 193s 1515: 193s 1515: _SC_LEVEL1_ICACHE_SIZE, 193s 1515: 193s 1515: _SC_LEVEL1_ICACHE_ASSOC, 193s 1515: 193s 1515: _SC_LEVEL1_ICACHE_LINESIZE, 193s 1515: 193s 1515: _SC_LEVEL1_DCACHE_SIZE, 193s 1515: 193s 1515: _SC_LEVEL1_DCACHE_ASSOC, 193s 1515: 193s 1515: _SC_LEVEL1_DCACHE_LINESIZE, 193s 1515: 193s 1515: _SC_LEVEL2_CACHE_SIZE, 193s 1515: 193s 1515: _SC_LEVEL2_CACHE_ASSOC, 193s 1515: 193s 1515: _SC_LEVEL2_CACHE_LINESIZE, 193s 1515: 193s 1515: _SC_LEVEL3_CACHE_SIZE, 193s 1515: 193s 1515: _SC_LEVEL3_CACHE_ASSOC, 193s 1515: 193s 1515: _SC_LEVEL3_CACHE_LINESIZE, 193s 1515: 193s 1515: _SC_LEVEL4_CACHE_SIZE, 193s 1515: 193s 1515: _SC_LEVEL4_CACHE_ASSOC, 193s 1515: 193s 1515: _SC_LEVEL4_CACHE_LINESIZE, 193s 1515: 193s 1515: 193s 1515: 193s 1515: _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, 193s 1515: 193s 1515: _SC_RAW_SOCKETS, 193s 1515: 193s 1515: 193s 1515: _SC_V7_ILP32_OFF32, 193s 1515: 193s 1515: _SC_V7_ILP32_OFFBIG, 193s 1515: 193s 1515: _SC_V7_LP64_OFF64, 193s 1515: 193s 1515: _SC_V7_LPBIG_OFFBIG, 193s 1515: 193s 1515: 193s 1515: _SC_SS_REPL_MAX, 193s 1515: 193s 1515: 193s 1515: _SC_TRACE_EVENT_NAME_MAX, 193s 1515: 193s 1515: _SC_TRACE_NAME_MAX, 193s 1515: 193s 1515: _SC_TRACE_SYS_MAX, 193s 1515: 193s 1515: _SC_TRACE_USER_EVENT_MAX, 193s 1515: 193s 1515: 193s 1515: _SC_XOPEN_STREAMS, 193s 1515: 193s 1515: 193s 1515: _SC_THREAD_ROBUST_PRIO_INHERIT, 193s 1515: 193s 1515: _SC_THREAD_ROBUST_PRIO_PROTECT, 193s 1515: 193s 1515: 193s 1515: _SC_MINSIGSTKSZ, 193s 1515: 193s 1515: 193s 1515: _SC_SIGSTKSZ 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: _CS_PATH, 193s 1515: 193s 1515: 193s 1515: _CS_V6_WIDTH_RESTRICTED_ENVS, 193s 1515: 193s 1515: 193s 1515: 193s 1515: _CS_GNU_LIBC_VERSION, 193s 1515: 193s 1515: _CS_GNU_LIBPTHREAD_VERSION, 193s 1515: 193s 1515: 193s 1515: _CS_V5_WIDTH_RESTRICTED_ENVS, 193s 1515: 193s 1515: 193s 1515: 193s 1515: _CS_V7_WIDTH_RESTRICTED_ENVS, 193s 1515: 193s 1515: 193s 1515: 193s 1515: _CS_LFS_CFLAGS = 1000, 193s 1515: 193s 1515: _CS_LFS_LDFLAGS, 193s 1515: 193s 1515: _CS_LFS_LIBS, 193s 1515: 193s 1515: _CS_LFS_LINTFLAGS, 193s 1515: 193s 1515: _CS_LFS64_CFLAGS, 193s 1515: 193s 1515: _CS_LFS64_LDFLAGS, 193s 1515: 193s 1515: _CS_LFS64_LIBS, 193s 1515: 193s 1515: _CS_LFS64_LINTFLAGS, 193s 1515: 193s 1515: 193s 1515: _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, 193s 1515: 193s 1515: _CS_XBS5_ILP32_OFF32_LDFLAGS, 193s 1515: 193s 1515: _CS_XBS5_ILP32_OFF32_LIBS, 193s 1515: 193s 1515: _CS_XBS5_ILP32_OFF32_LINTFLAGS, 193s 1515: 193s 1515: _CS_XBS5_ILP32_OFFBIG_CFLAGS, 193s 1515: 193s 1515: _CS_XBS5_ILP32_OFFBIG_LDFLAGS, 193s 1515: 193s 1515: _CS_XBS5_ILP32_OFFBIG_LIBS, 193s 1515: 193s 1515: _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, 193s 1515: 193s 1515: _CS_XBS5_LP64_OFF64_CFLAGS, 193s 1515: 193s 1515: _CS_XBS5_LP64_OFF64_LDFLAGS, 193s 1515: 193s 1515: _CS_XBS5_LP64_OFF64_LIBS, 193s 1515: 193s 1515: _CS_XBS5_LP64_OFF64_LINTFLAGS, 193s 1515: 193s 1515: _CS_XBS5_LPBIG_OFFBIG_CFLAGS, 193s 1515: 193s 1515: _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, 193s 1515: 193s 1515: _CS_XBS5_LPBIG_OFFBIG_LIBS, 193s 1515: 193s 1515: _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, 193s 1515: 193s 1515: 193s 1515: _CS_POSIX_V6_ILP32_OFF32_CFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_ILP32_OFF32_LIBS, 193s 1515: 193s 1515: _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_ILP32_OFFBIG_LIBS, 193s 1515: 193s 1515: _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_LP64_OFF64_CFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_LP64_OFF64_LDFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_LP64_OFF64_LIBS, 193s 1515: 193s 1515: _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, 193s 1515: 193s 1515: _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, 193s 1515: 193s 1515: 193s 1515: _CS_POSIX_V7_ILP32_OFF32_CFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_ILP32_OFF32_LIBS, 193s 1515: 193s 1515: _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_ILP32_OFFBIG_LIBS, 193s 1515: 193s 1515: _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_LP64_OFF64_CFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_LP64_OFF64_LDFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_LP64_OFF64_LIBS, 193s 1515: 193s 1515: _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, 193s 1515: 193s 1515: _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, 193s 1515: 193s 1515: _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, 193s 1515: 193s 1515: 193s 1515: _CS_V6_ENV, 193s 1515: 193s 1515: _CS_V7_ENV 193s 1515: 193s 1515: }; 193s 1515: # 631 "/usr/include/unistd.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: extern long int pathconf (const char *__path, int __name) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern long int fpathconf (int __fd, int __name) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long int sysconf (int __name) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t confstr (int __name, char *__buf, size_t __len) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __pid_t getpid (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern __pid_t getppid (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern __pid_t getpgrp (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern __pid_t __getpgid (__pid_t __pid) noexcept (true); 193s 1515: 193s 1515: extern __pid_t getpgid (__pid_t __pid) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setpgid (__pid_t __pid, __pid_t __pgid) noexcept (true); 193s 1515: # 682 "/usr/include/unistd.h" 3 4 193s 1515: extern int setpgrp (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __pid_t setsid (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __pid_t getsid (__pid_t __pid) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uid_t getuid (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern __uid_t geteuid (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern __gid_t getgid (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern __gid_t getegid (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getgroups (int __size, __gid_t __list[]) noexcept (true) __attribute__ ((__warn_unused_result__)) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern int group_member (__gid_t __gid) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setuid (__uid_t __uid) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setreuid (__uid_t __ruid, __uid_t __euid) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int seteuid (__uid_t __uid) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setgid (__gid_t __gid) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setregid (__gid_t __rgid, __gid_t __egid) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setegid (__gid_t __gid) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) 193s 1515: noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) 193s 1515: noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __pid_t fork (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __pid_t vfork (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __pid_t _Fork (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *ttyname (int __fd) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ttyname_r (int __fd, char *__buf, size_t __buflen) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int isatty (int __fd) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ttyslot (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int link (const char *__from, const char *__to) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int linkat (int __fromfd, const char *__from, int __tofd, 193s 1515: const char *__to, int __flags) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int symlink (const char *__from, const char *__to) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern ssize_t readlink (const char *__restrict __path, 193s 1515: char *__restrict __buf, size_t __len) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int symlinkat (const char *__from, int __tofd, 193s 1515: const char *__to) noexcept (true) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: extern ssize_t readlinkat (int __fd, const char *__restrict __path, 193s 1515: char *__restrict __buf, size_t __len) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int unlink (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int unlinkat (int __fd, const char *__name, int __flag) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int rmdir (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __pid_t tcgetpgrp (int __fd) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *getlogin (void); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setlogin (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 1 3 4 193s 1515: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *optarg; 193s 1515: # 50 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 193s 1515: extern int optind; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int opterr; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int optopt; 193s 1515: # 91 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 193s 1515: extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 193s 1515: 193s 1515: } 193s 1515: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 2 3 4 193s 1515: 193s 1515: extern "C" { 193s 1515: # 49 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4 193s 1515: } 193s 1515: # 904 "/usr/include/unistd.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int gethostname (char *__name, size_t __len) noexcept (true) __attribute__ ((__nonnull__ (1))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sethostname (const char *__name, size_t __len) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sethostid (long int __id) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getdomainname (char *__name, size_t __len) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) 193s 1515: ; 193s 1515: extern int setdomainname (const char *__name, size_t __len) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int vhangup (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int revoke (const char *__file) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int profil (unsigned short int *__sample_buffer, size_t __size, 193s 1515: size_t __offset, unsigned int __scale) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int acct (const char *__name) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *getusershell (void) noexcept (true); 193s 1515: extern void endusershell (void) noexcept (true); 193s 1515: extern void setusershell (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int daemon (int __nochdir, int __noclose) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int chroot (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fsync (int __fd); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int syncfs (int __fd) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int gethostid (void); 193s 1515: 193s 1515: 193s 1515: extern void sync (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getpagesize (void) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getdtablesize (void) noexcept (true); 193s 1515: # 1030 "/usr/include/unistd.h" 3 4 193s 1515: extern int truncate (const char *__file, __off64_t __length) noexcept (true) __asm__ ("" "truncate64") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int truncate64 (const char *__file, __off64_t __length) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: # 1052 "/usr/include/unistd.h" 3 4 193s 1515: extern int ftruncate (int __fd, __off64_t __length) noexcept (true) __asm__ ("" "ftruncate64") 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ftruncate64 (int __fd, __off64_t __length) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: # 1070 "/usr/include/unistd.h" 3 4 193s 1515: extern int brk (void *__addr) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *sbrk (intptr_t __delta) noexcept (true); 193s 1515: # 1091 "/usr/include/unistd.h" 3 4 193s 1515: extern long int syscall (long int __sysno, ...) noexcept (true); 193s 1515: # 1117 "/usr/include/unistd.h" 3 4 193s 1515: extern int lockf (int __fd, int __cmd, __off64_t __len) __asm__ ("" "lockf64") 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__)); 193s 1515: # 1142 "/usr/include/unistd.h" 3 4 193s 1515: ssize_t copy_file_range (int __infd, __off64_t *__pinoff, 193s 1515: int __outfd, __off64_t *__poutoff, 193s 1515: size_t __length, unsigned int __flags); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fdatasync (int __fildes); 193s 1515: # 1162 "/usr/include/unistd.h" 3 4 193s 1515: extern char *crypt (const char *__key, const char *__salt) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void swab (const void *__restrict __from, void *__restrict __to, 193s 1515: ssize_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))) 193s 1515: __attribute__ ((__access__ (__read_only__, 1, 3))) 193s 1515: __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: # 1201 "/usr/include/unistd.h" 3 4 193s 1515: int getentropy (void *__buffer, size_t __length) __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: # 1211 "/usr/include/unistd.h" 3 4 193s 1515: extern int close_range (unsigned int __fd, unsigned int __max_fd, 193s 1515: int __flags) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd-decl.h" 1 3 4 193s 1515: # 26 "/usr/include/arm-linux-gnueabihf/bits/unistd-decl.h" 3 4 193s 1515: extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes, 193s 1515: size_t __buflen) 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes, 193s 1515: __off_t __offset, size_t __bufsize) 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes, 193s 1515: __off64_t __offset, size_t __bufsize) 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer"))) 193s 1515: ; 193s 1515: extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern ssize_t __readlink_chk (const char *__restrict __path, 193s 1515: char *__restrict __buf, size_t __len, 193s 1515: size_t __buflen) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) noexcept (true) __asm__ ("" "readlink") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern ssize_t __readlink_chk_warn (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) noexcept (true) __asm__ ("" "__readlink_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path, 193s 1515: char *__restrict __buf, size_t __len, 193s 1515: size_t __buflen) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); 193s 1515: extern ssize_t __readlinkat_alias (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) noexcept (true) __asm__ ("" "readlinkat") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); 193s 1515: extern ssize_t __readlinkat_chk_warn (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) noexcept (true) __asm__ ("" "__readlinkat_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer"))) 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) 193s 1515: noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: extern char *__getcwd_alias (char *__buf, size_t __size) noexcept (true) __asm__ ("" "getcwd") 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) noexcept (true) __asm__ ("" "__getcwd_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern char *__getwd_chk (char *__buf, size_t buflen) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: extern char *__getwd_warn (char *__buf) noexcept (true) __asm__ ("" "getwd") 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern size_t __confstr_chk (int __name, char *__buf, size_t __len, 193s 1515: size_t __buflen) noexcept (true) 193s 1515: __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern size_t __confstr_alias (int __name, char *__buf, size_t __len) noexcept (true) __asm__ ("" "confstr") 193s 1515: 193s 1515: __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) noexcept (true) __asm__ ("" "__confstr_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen) 193s 1515: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); 193s 1515: extern int __getgroups_alias (int __size, __gid_t __list[]) noexcept (true) __asm__ ("" "getgroups") 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); 193s 1515: extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) noexcept (true) __asm__ ("" "__getgroups_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen, 193s 1515: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) 193s 1515: __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ttyname_r") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (2))); 193s 1515: extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ttyname_r_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal) 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: extern int __gethostname_alias (char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "gethostname") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__gethostname_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: extern int __getdomainname_alias (char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "getdomainname") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))) 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__getdomainname_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer"))) 193s 1515: 193s 1515: ; 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 2 3 4 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 193s 1515: read (int __fd, void * __buf, size_t __nbytes) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 0)) && (__builtin_dynamic_object_size (__buf, 0)) == (unsigned int) -1) || (((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char)))))) ? __read_alias (__fd, __buf, __nbytes) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) ? __read_chk_warn (__fd, __buf, __nbytes, __builtin_dynamic_object_size (__buf, 0)) : __read_chk (__fd, __buf, __nbytes, __builtin_dynamic_object_size (__buf, 0)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: # 51 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 193s 1515: pread (int __fd, void * __buf, 193s 1515: size_t __nbytes, __off64_t __offset) 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 0)) && (__builtin_dynamic_object_size (__buf, 0)) == (unsigned int) -1) || (((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char)))))) ? __pread64_alias (__fd, __buf, __nbytes, __offset) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) ? __pread64_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_dynamic_object_size (__buf, 0)) : __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_dynamic_object_size (__buf, 0)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 193s 1515: pread64 (int __fd, void * __buf, 193s 1515: size_t __nbytes, __off64_t __offset) 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 0)) && (__builtin_dynamic_object_size (__buf, 0)) == (unsigned int) -1) || (((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char)))))) ? __pread64_alias (__fd, __buf, __nbytes, __offset) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) ? __pread64_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_dynamic_object_size (__buf, 0)) : __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_dynamic_object_size (__buf, 0)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t 193s 1515: __attribute__ ((__leaf__)) readlink (const char *__restrict __path, char * __restrict __buf, size_t __len) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __readlink_alias (__path, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __readlink_chk_warn (__path, __buf, __len, __builtin_dynamic_object_size (__buf, 1)) : __readlink_chk (__path, __buf, __len, __builtin_dynamic_object_size (__buf, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t 193s 1515: __attribute__ ((__leaf__)) readlinkat (int __fd, const char *__restrict __path, char * __restrict __buf, size_t __len) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __readlinkat_alias (__fd, __path, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __readlinkat_chk_warn (__fd, __path, __buf, __len, __builtin_dynamic_object_size (__buf, 1)) : __readlinkat_chk (__fd, __path, __buf, __len, __builtin_dynamic_object_size (__buf, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 193s 1515: __attribute__ ((__leaf__)) getcwd (char * __buf, size_t __size) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__size)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __getcwd_alias (__buf, __size) : ((((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__size)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __getcwd_chk_warn (__buf, __size, __builtin_dynamic_object_size (__buf, 1)) : __getcwd_chk (__buf, __size, __builtin_dynamic_object_size (__buf, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) 193s 1515: __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * 193s 1515: __attribute__ ((__leaf__)) getwd (char * __buf) noexcept (true) 193s 1515: { 193s 1515: if (__builtin_dynamic_object_size (__buf, 1) != (size_t) -1) 193s 1515: return __getwd_chk (__buf, __builtin_dynamic_object_size (__buf, 1)); 193s 1515: return __getwd_warn (__buf); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) confstr (int __name, char * __buf, size_t __len) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __confstr_alias (__name, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __confstr_chk_warn (__name, __buf, __len, __builtin_dynamic_object_size (__buf, 1)) : __confstr_chk (__name, __buf, __len, __builtin_dynamic_object_size (__buf, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) getgroups (int __size, __gid_t * __list) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__list, 1)) && (__builtin_dynamic_object_size (__list, 1)) == (unsigned int) -1) || (((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= ((__builtin_dynamic_object_size (__list, 1))) / ((sizeof (__gid_t))))) && (((unsigned int) (__size)) <= ((__builtin_dynamic_object_size (__list, 1))) / ((sizeof (__gid_t)))))) ? __getgroups_alias (__size, __list) : ((((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= (__builtin_dynamic_object_size (__list, 1)) / (sizeof (__gid_t)))) && !(((unsigned int) (__size)) <= (__builtin_dynamic_object_size (__list, 1)) / (sizeof (__gid_t)))) ? __getgroups_chk_warn (__size, __list, __builtin_dynamic_object_size (__list, 1)) : __getgroups_chk (__size, __list, __builtin_dynamic_object_size (__list, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) ttyname_r (int __fd, char * __buf, size_t __buflen) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __ttyname_r_alias (__fd, __buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_dynamic_object_size (__buf, 1)) : __ttyname_r_chk (__fd, __buf, __buflen, __builtin_dynamic_object_size (__buf, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: getlogin_r (char * __buf, size_t __buflen) 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __getlogin_r_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __getlogin_r_chk_warn (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)) : __getlogin_r_chk (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) gethostname (char * __buf, size_t __buflen) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __gethostname_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __gethostname_chk_warn (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)) : __gethostname_chk (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) getdomainname (char * __buf, size_t __buflen) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __getdomainname_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __getdomainname_chk_warn (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)) : __getdomainname_chk (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: # 1218 "/usr/include/unistd.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 1 3 4 193s 1515: # 34 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 3 4 193s 1515: extern __pid_t gettid (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/linux/close_range.h" 1 3 4 193s 1515: # 39 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 2 3 4 193s 1515: # 1222 "/usr/include/unistd.h" 2 3 4 193s 1515: 193s 1515: } 193s 1515: # 25 "/usr/include/arm-linux-gnueabihf/bits/sigstksz.h" 2 3 4 193s 1515: # 329 "/usr/include/signal.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/ss_flags.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/ss_flags.h" 3 4 193s 1515: enum 193s 1515: { 193s 1515: SS_ONSTACK = 1, 193s 1515: 193s 1515: SS_DISABLE 193s 1515: 193s 1515: }; 193s 1515: # 330 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sigaltstack (const stack_t *__restrict __ss, 193s 1515: stack_t *__restrict __oss) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sigstack.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sigstack.h" 3 4 193s 1515: struct sigstack 193s 1515: { 193s 1515: void *ss_sp; 193s 1515: int ss_onstack; 193s 1515: }; 193s 1515: # 340 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) 193s 1515: noexcept (true) __attribute__ ((__deprecated__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sighold (int __sig) noexcept (true) 193s 1515: __attribute__ ((__deprecated__ ("Use the sigprocmask function instead"))); 193s 1515: 193s 1515: 193s 1515: extern int sigrelse (int __sig) noexcept (true) 193s 1515: __attribute__ ((__deprecated__ ("Use the sigprocmask function instead"))); 193s 1515: 193s 1515: 193s 1515: extern int sigignore (int __sig) noexcept (true) 193s 1515: __attribute__ ((__deprecated__ ("Use the signal function instead"))); 193s 1515: 193s 1515: 193s 1515: extern __sighandler_t sigset (int __sig, __sighandler_t __disp) noexcept (true) 193s 1515: __attribute__ ((__deprecated__ ("Use the signal and sigprocmask functions instead"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 1 3 4 193s 1515: # 44 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 2 3 4 193s 1515: # 45 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/atomic_wide_counter.h" 1 3 4 193s 1515: # 25 "/usr/include/arm-linux-gnueabihf/bits/atomic_wide_counter.h" 3 4 193s 1515: typedef union 193s 1515: { 193s 1515: __extension__ unsigned long long int __value64; 193s 1515: struct 193s 1515: { 193s 1515: unsigned int __low; 193s 1515: unsigned int __high; 193s 1515: } __value32; 193s 1515: } __atomic_wide_counter; 193s 1515: # 47 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef struct __pthread_internal_list 193s 1515: { 193s 1515: struct __pthread_internal_list *__prev; 193s 1515: struct __pthread_internal_list *__next; 193s 1515: } __pthread_list_t; 193s 1515: 193s 1515: typedef struct __pthread_internal_slist 193s 1515: { 193s 1515: struct __pthread_internal_slist *__next; 193s 1515: } __pthread_slist_t; 193s 1515: # 76 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 3 4 193s 1515: struct __pthread_mutex_s 193s 1515: { 193s 1515: int __lock ; 193s 1515: unsigned int __count; 193s 1515: int __owner; 193s 1515: # 58 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 3 4 193s 1515: int __kind; 193s 1515: 193s 1515: unsigned int __nusers; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ union 193s 1515: { 193s 1515: int __spins; 193s 1515: __pthread_slist_t __list; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: }; 193s 1515: # 77 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 193s 1515: # 89 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 1 3 4 193s 1515: # 29 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4 193s 1515: struct __pthread_rwlock_arch_t 193s 1515: { 193s 1515: unsigned int __readers; 193s 1515: unsigned int __writers; 193s 1515: unsigned int __wrphase_futex; 193s 1515: unsigned int __writers_futex; 193s 1515: unsigned int __pad3; 193s 1515: unsigned int __pad4; 193s 1515: # 45 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4 193s 1515: unsigned char __flags; 193s 1515: unsigned char __shared; 193s 1515: unsigned char __pad1; 193s 1515: unsigned char __pad2; 193s 1515: 193s 1515: int __cur_writer; 193s 1515: }; 193s 1515: # 90 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct __pthread_cond_s 193s 1515: { 193s 1515: __atomic_wide_counter __wseq; 193s 1515: __atomic_wide_counter __g1_start; 193s 1515: unsigned int __g_size[2] ; 193s 1515: unsigned int __g1_orig_size; 193s 1515: unsigned int __wrefs; 193s 1515: unsigned int __g_signals[2]; 193s 1515: unsigned int __unused_initialized_1; 193s 1515: unsigned int __unused_initialized_2; 193s 1515: }; 193s 1515: 193s 1515: typedef unsigned int __tss_t; 193s 1515: typedef unsigned long int __thrd_t; 193s 1515: 193s 1515: typedef struct 193s 1515: { 193s 1515: int __data ; 193s 1515: } __once_flag; 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef unsigned long int pthread_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef union 193s 1515: { 193s 1515: char __size[4]; 193s 1515: int __align; 193s 1515: } pthread_mutexattr_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef union 193s 1515: { 193s 1515: char __size[4]; 193s 1515: int __align; 193s 1515: } pthread_condattr_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef unsigned int pthread_key_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef int pthread_once_t; 193s 1515: 193s 1515: 193s 1515: union pthread_attr_t 193s 1515: { 193s 1515: char __size[36]; 193s 1515: long int __align; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef union 193s 1515: { 193s 1515: struct __pthread_mutex_s __data; 193s 1515: char __size[24]; 193s 1515: long int __align; 193s 1515: } pthread_mutex_t; 193s 1515: 193s 1515: 193s 1515: typedef union 193s 1515: { 193s 1515: struct __pthread_cond_s __data; 193s 1515: char __size[48]; 193s 1515: __extension__ long long int __align; 193s 1515: } pthread_cond_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef union 193s 1515: { 193s 1515: struct __pthread_rwlock_arch_t __data; 193s 1515: char __size[32]; 193s 1515: long int __align; 193s 1515: } pthread_rwlock_t; 193s 1515: 193s 1515: typedef union 193s 1515: { 193s 1515: char __size[8]; 193s 1515: long int __align; 193s 1515: } pthread_rwlockattr_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef volatile int pthread_spinlock_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef union 193s 1515: { 193s 1515: char __size[20]; 193s 1515: long int __align; 193s 1515: } pthread_barrier_t; 193s 1515: 193s 1515: typedef union 193s 1515: { 193s 1515: char __size[4]; 193s 1515: int __align; 193s 1515: } pthread_barrierattr_t; 193s 1515: # 376 "/usr/include/signal.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigthread.h" 1 3 4 193s 1515: # 31 "/usr/include/arm-linux-gnueabihf/bits/sigthread.h" 3 4 193s 1515: extern int pthread_sigmask (int __how, 193s 1515: const __sigset_t *__restrict __newmask, 193s 1515: __sigset_t *__restrict __oldmask)noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int pthread_kill (pthread_t __threadid, int __signo) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_sigqueue (pthread_t __threadid, int __signo, 193s 1515: const union sigval __value) noexcept (true); 193s 1515: # 377 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __libc_current_sigrtmin (void) noexcept (true); 193s 1515: 193s 1515: extern int __libc_current_sigrtmax (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/signal_ext.h" 1 3 4 193s 1515: # 29 "/usr/include/arm-linux-gnueabihf/bits/signal_ext.h" 3 4 193s 1515: extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal); 193s 1515: # 392 "/usr/include/signal.h" 2 3 4 193s 1515: 193s 1515: } 193s 1515: # 463 "/usr/include/doctest/doctest.h" 2 3 4 193s 1515: # 520 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: 193s 1515: namespace std { 193s 1515: typedef decltype(nullptr) nullptr_t; 193s 1515: typedef decltype(sizeof(void*)) size_t; 193s 1515: template 193s 1515: struct char_traits; 193s 1515: template <> 193s 1515: struct char_traits; 193s 1515: template 193s 1515: class basic_ostream; 193s 1515: typedef basic_ostream> ostream; 193s 1515: template 193s 1515: 193s 1515: basic_ostream& operator<<(basic_ostream&, const char*); 193s 1515: template 193s 1515: class basic_istream; 193s 1515: typedef basic_istream> istream; 193s 1515: template 193s 1515: class tuple; 193s 1515: # 548 "/usr/include/doctest/doctest.h" 3 4 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace doctest { 193s 1515: 193s 1515: using std::size_t; 193s 1515: 193s 1515: extern bool is_running_in_test; 193s 1515: # 587 "/usr/include/doctest/doctest.h" 3 4 193s 1515: class String 193s 1515: { 193s 1515: public: 193s 1515: using size_type = unsigned; 193s 1515: 193s 1515: private: 193s 1515: static constexpr size_type len = 24; 193s 1515: static constexpr size_type last = len - 1; 193s 1515: 193s 1515: struct view 193s 1515: { 193s 1515: char* ptr; 193s 1515: size_type size; 193s 1515: size_type capacity; 193s 1515: }; 193s 1515: 193s 1515: union 193s 1515: { 193s 1515: char buf[len]; 193s 1515: view data; 193s 1515: }; 193s 1515: 193s 1515: char* allocate(size_type sz); 193s 1515: 193s 1515: bool isOnStack() const noexcept { return (buf[last] & 128) == 0; } 193s 1515: void setOnHeap() noexcept; 193s 1515: void setLast(size_type in = last) noexcept; 193s 1515: void setSize(size_type sz) noexcept; 193s 1515: 193s 1515: void copy(const String& other); 193s 1515: 193s 1515: public: 193s 1515: static constexpr size_type npos = static_cast(-1); 193s 1515: 193s 1515: String() noexcept; 193s 1515: ~String(); 193s 1515: 193s 1515: 193s 1515: String(const char* in); 193s 1515: String(const char* in, size_type in_size); 193s 1515: 193s 1515: String(std::istream& in, size_type in_size); 193s 1515: 193s 1515: String(const String& other); 193s 1515: String& operator=(const String& other); 193s 1515: 193s 1515: String& operator+=(const String& other); 193s 1515: 193s 1515: String(String&& other) noexcept; 193s 1515: String& operator=(String&& other) noexcept; 193s 1515: 193s 1515: char operator[](size_type i) const; 193s 1515: char& operator[](size_type i); 193s 1515: 193s 1515: 193s 1515: const char* c_str() const { return const_cast(this)->c_str(); } 193s 1515: char* c_str() { 193s 1515: if (isOnStack()) { 193s 1515: return reinterpret_cast(buf); 193s 1515: } 193s 1515: return data.ptr; 193s 1515: } 193s 1515: 193s 1515: size_type size() const; 193s 1515: size_type capacity() const; 193s 1515: 193s 1515: String substr(size_type pos, size_type cnt = npos) &&; 193s 1515: String substr(size_type pos, size_type cnt = npos) const &; 193s 1515: 193s 1515: size_type find(char ch, size_type pos = 0) const; 193s 1515: size_type rfind(char ch, size_type pos = npos) const; 193s 1515: 193s 1515: int compare(const char* other, bool no_case = false) const; 193s 1515: int compare(const String& other, bool no_case = false) const; 193s 1515: 193s 1515: friend std::ostream& operator<<(std::ostream& s, const String& in); 193s 1515: }; 193s 1515: 193s 1515: String operator+(const String& lhs, const String& rhs); 193s 1515: 193s 1515: bool operator==(const String& lhs, const String& rhs); 193s 1515: bool operator!=(const String& lhs, const String& rhs); 193s 1515: bool operator<(const String& lhs, const String& rhs); 193s 1515: bool operator>(const String& lhs, const String& rhs); 193s 1515: bool operator<=(const String& lhs, const String& rhs); 193s 1515: bool operator>=(const String& lhs, const String& rhs); 193s 1515: 193s 1515: class Contains { 193s 1515: public: 193s 1515: explicit Contains(const String& string); 193s 1515: 193s 1515: bool checkWith(const String& other) const; 193s 1515: 193s 1515: String string; 193s 1515: }; 193s 1515: 193s 1515: String toString(const Contains& in); 193s 1515: 193s 1515: bool operator==(const String& lhs, const Contains& rhs); 193s 1515: bool operator==(const Contains& lhs, const String& rhs); 193s 1515: bool operator!=(const String& lhs, const Contains& rhs); 193s 1515: bool operator!=(const Contains& lhs, const String& rhs); 193s 1515: 193s 1515: namespace Color { 193s 1515: enum Enum 193s 1515: { 193s 1515: None = 0, 193s 1515: White, 193s 1515: Red, 193s 1515: Green, 193s 1515: Blue, 193s 1515: Cyan, 193s 1515: Yellow, 193s 1515: Grey, 193s 1515: 193s 1515: Bright = 0x10, 193s 1515: 193s 1515: BrightRed = Bright | Red, 193s 1515: BrightGreen = Bright | Green, 193s 1515: LightGrey = Bright | Grey, 193s 1515: BrightWhite = Bright | White 193s 1515: }; 193s 1515: 193s 1515: std::ostream& operator<<(std::ostream& s, Color::Enum code); 193s 1515: } 193s 1515: 193s 1515: namespace assertType { 193s 1515: enum Enum 193s 1515: { 193s 1515: 193s 1515: 193s 1515: is_warn = 1, 193s 1515: is_check = 2 * is_warn, 193s 1515: is_require = 2 * is_check, 193s 1515: 193s 1515: is_normal = 2 * is_require, 193s 1515: is_throws = 2 * is_normal, 193s 1515: is_throws_as = 2 * is_throws, 193s 1515: is_throws_with = 2 * is_throws_as, 193s 1515: is_nothrow = 2 * is_throws_with, 193s 1515: 193s 1515: is_false = 2 * is_nothrow, 193s 1515: is_unary = 2 * is_false, 193s 1515: 193s 1515: is_eq = 2 * is_unary, 193s 1515: is_ne = 2 * is_eq, 193s 1515: 193s 1515: is_lt = 2 * is_ne, 193s 1515: is_gt = 2 * is_lt, 193s 1515: 193s 1515: is_ge = 2 * is_gt, 193s 1515: is_le = 2 * is_ge, 193s 1515: 193s 1515: 193s 1515: 193s 1515: DT_WARN = is_normal | is_warn, 193s 1515: DT_CHECK = is_normal | is_check, 193s 1515: DT_REQUIRE = is_normal | is_require, 193s 1515: 193s 1515: DT_WARN_FALSE = is_normal | is_false | is_warn, 193s 1515: DT_CHECK_FALSE = is_normal | is_false | is_check, 193s 1515: DT_REQUIRE_FALSE = is_normal | is_false | is_require, 193s 1515: 193s 1515: DT_WARN_THROWS = is_throws | is_warn, 193s 1515: DT_CHECK_THROWS = is_throws | is_check, 193s 1515: DT_REQUIRE_THROWS = is_throws | is_require, 193s 1515: 193s 1515: DT_WARN_THROWS_AS = is_throws_as | is_warn, 193s 1515: DT_CHECK_THROWS_AS = is_throws_as | is_check, 193s 1515: DT_REQUIRE_THROWS_AS = is_throws_as | is_require, 193s 1515: 193s 1515: DT_WARN_THROWS_WITH = is_throws_with | is_warn, 193s 1515: DT_CHECK_THROWS_WITH = is_throws_with | is_check, 193s 1515: DT_REQUIRE_THROWS_WITH = is_throws_with | is_require, 193s 1515: 193s 1515: DT_WARN_THROWS_WITH_AS = is_throws_with | is_throws_as | is_warn, 193s 1515: DT_CHECK_THROWS_WITH_AS = is_throws_with | is_throws_as | is_check, 193s 1515: DT_REQUIRE_THROWS_WITH_AS = is_throws_with | is_throws_as | is_require, 193s 1515: 193s 1515: DT_WARN_NOTHROW = is_nothrow | is_warn, 193s 1515: DT_CHECK_NOTHROW = is_nothrow | is_check, 193s 1515: DT_REQUIRE_NOTHROW = is_nothrow | is_require, 193s 1515: 193s 1515: DT_WARN_EQ = is_normal | is_eq | is_warn, 193s 1515: DT_CHECK_EQ = is_normal | is_eq | is_check, 193s 1515: DT_REQUIRE_EQ = is_normal | is_eq | is_require, 193s 1515: 193s 1515: DT_WARN_NE = is_normal | is_ne | is_warn, 193s 1515: DT_CHECK_NE = is_normal | is_ne | is_check, 193s 1515: DT_REQUIRE_NE = is_normal | is_ne | is_require, 193s 1515: 193s 1515: DT_WARN_GT = is_normal | is_gt | is_warn, 193s 1515: DT_CHECK_GT = is_normal | is_gt | is_check, 193s 1515: DT_REQUIRE_GT = is_normal | is_gt | is_require, 193s 1515: 193s 1515: DT_WARN_LT = is_normal | is_lt | is_warn, 193s 1515: DT_CHECK_LT = is_normal | is_lt | is_check, 193s 1515: DT_REQUIRE_LT = is_normal | is_lt | is_require, 193s 1515: 193s 1515: DT_WARN_GE = is_normal | is_ge | is_warn, 193s 1515: DT_CHECK_GE = is_normal | is_ge | is_check, 193s 1515: DT_REQUIRE_GE = is_normal | is_ge | is_require, 193s 1515: 193s 1515: DT_WARN_LE = is_normal | is_le | is_warn, 193s 1515: DT_CHECK_LE = is_normal | is_le | is_check, 193s 1515: DT_REQUIRE_LE = is_normal | is_le | is_require, 193s 1515: 193s 1515: DT_WARN_UNARY = is_normal | is_unary | is_warn, 193s 1515: DT_CHECK_UNARY = is_normal | is_unary | is_check, 193s 1515: DT_REQUIRE_UNARY = is_normal | is_unary | is_require, 193s 1515: 193s 1515: DT_WARN_UNARY_FALSE = is_normal | is_false | is_unary | is_warn, 193s 1515: DT_CHECK_UNARY_FALSE = is_normal | is_false | is_unary | is_check, 193s 1515: DT_REQUIRE_UNARY_FALSE = is_normal | is_false | is_unary | is_require, 193s 1515: }; 193s 1515: } 193s 1515: 193s 1515: const char* assertString(assertType::Enum at); 193s 1515: const char* failureString(assertType::Enum at); 193s 1515: const char* skipPathFromFilename(const char* file); 193s 1515: 193s 1515: struct TestCaseData 193s 1515: { 193s 1515: String m_file; 193s 1515: unsigned m_line; 193s 1515: const char* m_name; 193s 1515: const char* m_test_suite; 193s 1515: const char* m_description; 193s 1515: bool m_skip; 193s 1515: bool m_no_breaks; 193s 1515: bool m_no_output; 193s 1515: bool m_may_fail; 193s 1515: bool m_should_fail; 193s 1515: int m_expected_failures; 193s 1515: double m_timeout; 193s 1515: }; 193s 1515: 193s 1515: struct AssertData 193s 1515: { 193s 1515: 193s 1515: const TestCaseData* m_test_case; 193s 1515: assertType::Enum m_at; 193s 1515: const char* m_file; 193s 1515: int m_line; 193s 1515: const char* m_expr; 193s 1515: bool m_failed; 193s 1515: 193s 1515: 193s 1515: bool m_threw; 193s 1515: String m_exception; 193s 1515: 193s 1515: 193s 1515: String m_decomp; 193s 1515: 193s 1515: 193s 1515: bool m_threw_as; 193s 1515: const char* m_exception_type; 193s 1515: 193s 1515: class StringContains { 193s 1515: private: 193s 1515: Contains content; 193s 1515: bool isContains; 193s 1515: 193s 1515: public: 193s 1515: StringContains(const String& str) : content(str), isContains(false) { } 193s 1515: StringContains(Contains cntn) : content(static_cast(cntn)), isContains(true) { } 193s 1515: 193s 1515: bool check(const String& str) { return isContains ? (content == str) : (content.string == str); } 193s 1515: 193s 1515: operator const String&() const { return content.string; } 193s 1515: 193s 1515: const char* c_str() const { return content.string.c_str(); } 193s 1515: } m_exception_string; 193s 1515: 193s 1515: AssertData(assertType::Enum at, const char* file, int line, const char* expr, 193s 1515: const char* exception_type, const StringContains& exception_string); 193s 1515: }; 193s 1515: 193s 1515: struct MessageData 193s 1515: { 193s 1515: String m_string; 193s 1515: const char* m_file; 193s 1515: int m_line; 193s 1515: assertType::Enum m_severity; 193s 1515: }; 193s 1515: 193s 1515: struct SubcaseSignature 193s 1515: { 193s 1515: String m_name; 193s 1515: const char* m_file; 193s 1515: int m_line; 193s 1515: 193s 1515: bool operator==(const SubcaseSignature& other) const; 193s 1515: bool operator<(const SubcaseSignature& other) const; 193s 1515: }; 193s 1515: 193s 1515: struct IContextScope 193s 1515: { 193s 1515: virtual ~IContextScope(); IContextScope() = default; IContextScope(const IContextScope&) = delete; IContextScope(IContextScope&&) = delete; IContextScope& operator=(const IContextScope&) = delete; IContextScope& operator=(IContextScope&&) = delete; 193s 1515: virtual void stringify(std::ostream*) const = 0; 193s 1515: }; 193s 1515: 193s 1515: namespace detail { 193s 1515: struct TestCase; 193s 1515: } 193s 1515: 193s 1515: struct ContextOptions 193s 1515: { 193s 1515: std::ostream* cout = nullptr; 193s 1515: String binary_name; 193s 1515: 193s 1515: const detail::TestCase* currentTest = nullptr; 193s 1515: 193s 1515: 193s 1515: String out; 193s 1515: String order_by; 193s 1515: unsigned rand_seed; 193s 1515: 193s 1515: unsigned first; 193s 1515: unsigned last; 193s 1515: 193s 1515: int abort_after; 193s 1515: int subcase_filter_levels; 193s 1515: 193s 1515: bool success; 193s 1515: bool case_sensitive; 193s 1515: bool exit; 193s 1515: bool duration; 193s 1515: bool minimal; 193s 1515: bool quiet; 193s 1515: bool no_throw; 193s 1515: bool no_exitcode; 193s 1515: bool no_run; 193s 1515: bool no_intro; 193s 1515: bool no_version; 193s 1515: bool no_colors; 193s 1515: bool force_colors; 193s 1515: bool no_breaks; 193s 1515: bool no_skip; 193s 1515: bool gnu_file_line; 193s 1515: bool no_path_in_filenames; 193s 1515: String strip_file_prefixes; 193s 1515: bool no_line_numbers; 193s 1515: bool no_debug_output; 193s 1515: bool no_skipped_summary; 193s 1515: bool no_time_in_output; 193s 1515: 193s 1515: bool help; 193s 1515: bool version; 193s 1515: bool count; 193s 1515: bool list_test_cases; 193s 1515: bool list_test_suites; 193s 1515: bool list_reporters; 193s 1515: }; 193s 1515: 193s 1515: namespace detail { 193s 1515: namespace types { 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct enable_if { }; 193s 1515: 193s 1515: template 193s 1515: struct enable_if { using type = T; }; 193s 1515: 193s 1515: struct true_type { static constexpr bool value = true; }; 193s 1515: struct false_type { static constexpr bool value = false; }; 193s 1515: 193s 1515: template struct remove_reference { using type = T; }; 193s 1515: template struct remove_reference { using type = T; }; 193s 1515: template struct remove_reference { using type = T; }; 193s 1515: 193s 1515: template struct is_rvalue_reference : false_type { }; 193s 1515: template struct is_rvalue_reference : true_type { }; 193s 1515: 193s 1515: template struct remove_const { using type = T; }; 193s 1515: template struct remove_const { using type = T; }; 193s 1515: 193s 1515: 193s 1515: template struct is_enum { static constexpr bool value = __is_enum(T); }; 193s 1515: template struct underlying_type { using type = __underlying_type(T); }; 193s 1515: 193s 1515: template struct is_pointer : false_type { }; 193s 1515: template struct is_pointer : true_type { }; 193s 1515: 193s 1515: template struct is_array : false_type { }; 193s 1515: 193s 1515: template struct is_array : true_type { }; 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: T&& declval(); 193s 1515: 193s 1515: template 193s 1515: constexpr T&& forward(typename types::remove_reference::type& t) noexcept { 193s 1515: return static_cast(t); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr T&& forward(typename types::remove_reference::type&& t) noexcept { 193s 1515: return static_cast(t); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: struct deferred_false : types::false_type { }; 193s 1515: # 1023 "/usr/include/doctest/doctest.h" 3 4 193s 1515: template 193s 1515: struct has_insertion_operator : types::false_type { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct has_insertion_operator(), declval()), void())> : types::true_type { }; 193s 1515: 193s 1515: template 193s 1515: struct should_stringify_as_underlying_type { 193s 1515: static constexpr bool value = detail::types::is_enum::value && !doctest::detail::has_insertion_operator::value; 193s 1515: }; 193s 1515: 193s 1515: std::ostream* tlssPush(); 193s 1515: String tlssPop(); 193s 1515: 193s 1515: template 193s 1515: struct StringMakerBase { 193s 1515: template 193s 1515: static String convert(const T&) { 193s 1515: 193s 1515: 193s 1515: 193s 1515: return "{?}"; 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct filldata; 193s 1515: 193s 1515: template 193s 1515: void filloss(std::ostream* stream, const T& in) { 193s 1515: filldata::fill(stream, in); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: void filloss(std::ostream* stream, const T (&in)[N]) { 193s 1515: 193s 1515: 193s 1515: filloss::type>(stream, in); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: String toStream(const T& in) { 193s 1515: std::ostream* stream = tlssPush(); 193s 1515: filloss(stream, in); 193s 1515: return tlssPop(); 193s 1515: } 193s 1515: 193s 1515: template <> 193s 1515: struct StringMakerBase { 193s 1515: template 193s 1515: static String convert(const T& in) { 193s 1515: return toStream(in); 193s 1515: } 193s 1515: }; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: struct StringMaker : public detail::StringMakerBase< 193s 1515: detail::has_insertion_operator::value || detail::types::is_pointer::value || detail::types::is_array::value> 193s 1515: {}; 193s 1515: # 1093 "/usr/include/doctest/doctest.h" 3 4 193s 1515: template 193s 1515: String toString() { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: String ret = __PRETTY_FUNCTION__; 193s 1515: String::size_type begin = ret.find('=') + 2; 193s 1515: return ret.substr(begin, ret.size() - begin - 1); 193s 1515: 193s 1515: } 193s 1515: 193s 1515: template ::value, bool>::type = true> 193s 1515: String toString(const T& value) { 193s 1515: return StringMaker::convert(value); 193s 1515: } 193s 1515: # 1120 "/usr/include/doctest/doctest.h" 3 4 193s 1515: String toString(String in); 193s 1515: 193s 1515: String toString(std::nullptr_t); 193s 1515: 193s 1515: String toString(bool in); 193s 1515: 193s 1515: String toString(float in); 193s 1515: String toString(double in); 193s 1515: String toString(double long in); 193s 1515: 193s 1515: String toString(char in); 193s 1515: String toString(char signed in); 193s 1515: String toString(char unsigned in); 193s 1515: String toString(short in); 193s 1515: String toString(short unsigned in); 193s 1515: String toString(signed in); 193s 1515: String toString(unsigned in); 193s 1515: String toString(long in); 193s 1515: String toString(long unsigned in); 193s 1515: String toString(long long in); 193s 1515: String toString(long long unsigned in); 193s 1515: 193s 1515: template ::value, bool>::type = true> 193s 1515: String toString(const T& value) { 193s 1515: using UT = typename detail::types::underlying_type::type; 193s 1515: return (toString(static_cast(value))); 193s 1515: } 193s 1515: 193s 1515: namespace detail { 193s 1515: template 193s 1515: struct filldata 193s 1515: { 193s 1515: static void fill(std::ostream* stream, const T& in) { 193s 1515: 193s 1515: 193s 1515: 193s 1515: operator<<(*stream, in); 193s 1515: 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct filldata { 193s 1515: static void fill(std::ostream* stream, const T(&in)[N]) { 193s 1515: *stream << "["; 193s 1515: for (size_t i = 0; i < N; i++) { 193s 1515: if (i != 0) { *stream << ", "; } 193s 1515: *stream << (toString(in[i])); 193s 1515: } 193s 1515: *stream << "]"; 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct filldata { 193s 1515: static void fill(std::ostream* stream, const char (&in)[N]) { 193s 1515: *stream << String(in, in[N - 1] ? N : N - 1); 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template <> 193s 1515: struct filldata { 193s 1515: static void fill(std::ostream* stream, const void* in); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct filldata { 193s 1515: 193s 1515: static void fill(std::ostream* stream, const T* in) { 193s 1515: 193s 1515: 193s 1515: filldata::fill(stream, 193s 1515: 193s 1515: reinterpret_cast(in) 193s 1515: 193s 1515: 193s 1515: 193s 1515: ); 193s 1515: 193s 1515: } 193s 1515: }; 193s 1515: } 193s 1515: 193s 1515: struct Approx 193s 1515: { 193s 1515: Approx(double value); 193s 1515: 193s 1515: Approx operator()(double value) const; 193s 1515: # 1225 "/usr/include/doctest/doctest.h" 3 4 193s 1515: Approx& epsilon(double newEpsilon); 193s 1515: # 1236 "/usr/include/doctest/doctest.h" 3 4 193s 1515: Approx& scale(double newScale); 193s 1515: # 1248 "/usr/include/doctest/doctest.h" 3 4 193s 1515: friend bool operator==(double lhs, const Approx & rhs); 193s 1515: friend bool operator==(const Approx & lhs, double rhs); 193s 1515: friend bool operator!=(double lhs, const Approx & rhs); 193s 1515: friend bool operator!=(const Approx & lhs, double rhs); 193s 1515: friend bool operator<=(double lhs, const Approx & rhs); 193s 1515: friend bool operator<=(const Approx & lhs, double rhs); 193s 1515: friend bool operator>=(double lhs, const Approx & rhs); 193s 1515: friend bool operator>=(const Approx & lhs, double rhs); 193s 1515: friend bool operator< (double lhs, const Approx & rhs); 193s 1515: friend bool operator< (const Approx & lhs, double rhs); 193s 1515: friend bool operator> (double lhs, const Approx & rhs); 193s 1515: friend bool operator> (const Approx & lhs, double rhs); 193s 1515: # 1282 "/usr/include/doctest/doctest.h" 3 4 193s 1515: double m_epsilon; 193s 1515: double m_scale; 193s 1515: double m_value; 193s 1515: }; 193s 1515: 193s 1515: String toString(const Approx& in); 193s 1515: 193s 1515: const ContextOptions* getContextOptions(); 193s 1515: 193s 1515: template 193s 1515: struct IsNaN 193s 1515: { 193s 1515: F value; bool flipped; 193s 1515: IsNaN(F f, bool flip = false) : value(f), flipped(flip) { } 193s 1515: IsNaN operator!() const { return { value, !flipped }; } 193s 1515: operator bool() const; 193s 1515: }; 193s 1515: 193s 1515: extern template struct IsNaN; 193s 1515: extern template struct IsNaN; 193s 1515: extern template struct IsNaN; 193s 1515: 193s 1515: String toString(IsNaN in); 193s 1515: String toString(IsNaN in); 193s 1515: String toString(IsNaN in); 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace detail { 193s 1515: # 1325 "/usr/include/doctest/doctest.h" 3 4 193s 1515: struct TestFailureException 193s 1515: { 193s 1515: }; 193s 1515: 193s 1515: bool checkIfShouldThrow(assertType::Enum at); 193s 1515: 193s 1515: 193s 1515: [[noreturn]] 193s 1515: 193s 1515: void throwException(); 193s 1515: 193s 1515: struct Subcase 193s 1515: { 193s 1515: SubcaseSignature m_signature; 193s 1515: bool m_entered = false; 193s 1515: 193s 1515: Subcase(const String& name, const char* file, int line); 193s 1515: Subcase(const Subcase&) = delete; 193s 1515: Subcase(Subcase&&) = delete; 193s 1515: Subcase& operator=(const Subcase&) = delete; 193s 1515: Subcase& operator=(Subcase&&) = delete; 193s 1515: ~Subcase(); 193s 1515: 193s 1515: operator bool() const; 193s 1515: 193s 1515: private: 193s 1515: bool checkFilters(); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: String stringifyBinaryExpr(const L& lhs, const char* op, 193s 1515: const R& rhs) { 193s 1515: return (toString(lhs)) + op + (toString(rhs)); 193s 1515: } 193s 1515: # 1396 "/usr/include/doctest/doctest.h" 3 4 193s 1515: struct Result 193s 1515: { 193s 1515: bool m_passed; 193s 1515: String m_decomp; 193s 1515: 193s 1515: Result() = default; 193s 1515: Result(bool passed, const String& decomposition = String()); 193s 1515: 193s 1515: 193s 1515: template Result& operator &(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator ^(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator |(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator &&(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator ||(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator ==(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator !=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator <(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator >(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator <=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator >=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator =(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator +=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator -=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator *=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator /=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator %=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator <<=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator >>=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator &=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator ^=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Result& operator |=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1438 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: 193s 1515: # 1439 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wsign-conversion" 193s 1515: 193s 1515: # 1440 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wsign-compare" 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1475 "/usr/include/doctest/doctest.h" 3 4 193s 1515: template bool eq(const L& lhs, const R& rhs) { return lhs == rhs; } 193s 1515: template bool ne(const L& lhs, const R& rhs) { return lhs != rhs; } 193s 1515: template bool lt(const L& lhs, const R& rhs) { return lhs < rhs; } 193s 1515: template bool gt(const L& lhs, const R& rhs) { return lhs > rhs; } 193s 1515: template bool le(const L& lhs, const R& rhs) { return lhs <= rhs; } 193s 1515: template bool ge(const L& lhs, const R& rhs) { return lhs >= rhs; } 193s 1515: # 1498 "/usr/include/doctest/doctest.h" 3 4 193s 1515: template 193s 1515: 193s 1515: struct Expression_lhs 193s 1515: { 193s 1515: L lhs; 193s 1515: assertType::Enum m_at; 193s 1515: 193s 1515: explicit Expression_lhs(L&& in, assertType::Enum at) 193s 1515: : lhs(static_cast(in)) 193s 1515: , m_at(at) {} 193s 1515: 193s 1515: __attribute__((noinline)) operator Result() { 193s 1515: 193s 1515: 193s 1515: bool res = static_cast(lhs); 193s 1515: 193s 1515: if(m_at & assertType::is_false) { 193s 1515: res = !res; 193s 1515: } 193s 1515: 193s 1515: if(!res || getContextOptions()->success) { 193s 1515: return { res, (toString(lhs)) }; 193s 1515: } 193s 1515: return { res }; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: operator L() const { return lhs; } 193s 1515: 193s 1515: 193s 1515: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() == doctest::detail::declval()),Result{}) operator ==(R&& rhs) { bool res = doctest::detail::forward(lhs) == doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " == ", rhs)); return Result(res); } 193s 1515: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() != doctest::detail::declval()),Result{}) operator !=(R&& rhs) { bool res = doctest::detail::forward(lhs) != doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " != ", rhs)); return Result(res); } 193s 1515: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() > doctest::detail::declval()),Result{}) operator >(R&& rhs) { bool res = doctest::detail::forward(lhs) > doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " > ", rhs)); return Result(res); } 193s 1515: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() < doctest::detail::declval()),Result{}) operator <(R&& rhs) { bool res = doctest::detail::forward(lhs) < doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " < ", rhs)); return Result(res); } 193s 1515: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() >= doctest::detail::declval()),Result{}) operator >=(R&& rhs) { bool res = doctest::detail::forward(lhs) >= doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " >= ", rhs)); return Result(res); } 193s 1515: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() <= doctest::detail::declval()),Result{}) operator <=(R&& rhs) { bool res = doctest::detail::forward(lhs) <= doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " <= ", rhs)); return Result(res); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template Expression_lhs& operator &(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator ^(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator |(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator &&(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator ||(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator =(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator +=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator -=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator *=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator /=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator %=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator <<=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator >>=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator &=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator ^=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator |=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: 193s 1515: 193s 1515: template Expression_lhs& operator <<(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: template Expression_lhs& operator >>(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1563 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic pop 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct ExpressionDecomposer 193s 1515: { 193s 1515: assertType::Enum m_at; 193s 1515: 193s 1515: ExpressionDecomposer(assertType::Enum at); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: Expression_lhs operator<<(const L&& operand) { 193s 1515: return Expression_lhs(static_cast(operand), m_at); 193s 1515: } 193s 1515: 193s 1515: template ::value,void >::type* = nullptr> 193s 1515: Expression_lhs operator<<(const L &operand) { 193s 1515: return Expression_lhs(operand, m_at); 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: struct TestSuite 193s 1515: { 193s 1515: const char* m_test_suite = nullptr; 193s 1515: const char* m_description = nullptr; 193s 1515: bool m_skip = false; 193s 1515: bool m_no_breaks = false; 193s 1515: bool m_no_output = false; 193s 1515: bool m_may_fail = false; 193s 1515: bool m_should_fail = false; 193s 1515: int m_expected_failures = 0; 193s 1515: double m_timeout = 0; 193s 1515: 193s 1515: TestSuite& operator*(const char* in); 193s 1515: 193s 1515: template 193s 1515: TestSuite& operator*(const T& in) { 193s 1515: in.fill(*this); 193s 1515: return *this; 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: using funcType = void (*)(); 193s 1515: 193s 1515: struct TestCase : public TestCaseData 193s 1515: { 193s 1515: funcType m_test; 193s 1515: 193s 1515: String m_type; 193s 1515: int m_template_id; 193s 1515: String m_full_name; 193s 1515: 193s 1515: TestCase(funcType test, const char* file, unsigned line, const TestSuite& test_suite, 193s 1515: const String& type = String(), int template_id = -1); 193s 1515: 193s 1515: TestCase(const TestCase& other); 193s 1515: TestCase(TestCase&&) = delete; 193s 1515: 193s 1515: 193s 1515: TestCase& operator=(const TestCase& other); 193s 1515: 193s 1515: 193s 1515: TestCase& operator=(TestCase&&) = delete; 193s 1515: 193s 1515: TestCase& operator*(const char* in); 193s 1515: 193s 1515: template 193s 1515: TestCase& operator*(const T& in) { 193s 1515: in.fill(*this); 193s 1515: return *this; 193s 1515: } 193s 1515: 193s 1515: bool operator<(const TestCase& other) const; 193s 1515: 193s 1515: ~TestCase() = default; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: int regTest(const TestCase& tc); 193s 1515: int setTestSuite(const TestSuite& ts); 193s 1515: bool isDebuggerActive(); 193s 1515: 193s 1515: template 193s 1515: int instantiationHelper(const T&) { return 0; } 193s 1515: 193s 1515: namespace binaryAssertComparison { 193s 1515: enum Enum 193s 1515: { 193s 1515: eq = 0, 193s 1515: ne, 193s 1515: gt, 193s 1515: lt, 193s 1515: ge, 193s 1515: le 193s 1515: }; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: template struct RelationalComparator { bool operator()(const L&, const R& ) const { return false; } }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template struct RelationalComparator<0, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::eq(lhs, rhs); } }; 193s 1515: template struct RelationalComparator<1, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::ne(lhs, rhs); } }; 193s 1515: template struct RelationalComparator<2, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::gt(lhs, rhs); } }; 193s 1515: template struct RelationalComparator<3, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::lt(lhs, rhs); } }; 193s 1515: template struct RelationalComparator<4, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::ge(lhs, rhs); } }; 193s 1515: template struct RelationalComparator<5, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::le(lhs, rhs); } }; 193s 1515: 193s 1515: struct ResultBuilder : public AssertData 193s 1515: { 193s 1515: ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr, 193s 1515: const char* exception_type = "", const String& exception_string = ""); 193s 1515: 193s 1515: ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr, 193s 1515: const char* exception_type, const Contains& exception_string); 193s 1515: 193s 1515: void setResult(const Result& res); 193s 1515: 193s 1515: template 193s 1515: __attribute__((noinline)) bool binary_assert(const L& lhs, 193s 1515: const R& rhs) { 193s 1515: m_failed = !RelationalComparator()(lhs, rhs); 193s 1515: if (m_failed || getContextOptions()->success) { 193s 1515: m_decomp = stringifyBinaryExpr(lhs, ", ", rhs); 193s 1515: } 193s 1515: return !m_failed; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: __attribute__((noinline)) bool unary_assert(const L& val) { 193s 1515: m_failed = !val; 193s 1515: 193s 1515: if (m_at & assertType::is_false) { 193s 1515: m_failed = !m_failed; 193s 1515: } 193s 1515: 193s 1515: if (m_failed || getContextOptions()->success) { 193s 1515: m_decomp = (toString(val)); 193s 1515: } 193s 1515: 193s 1515: return !m_failed; 193s 1515: } 193s 1515: 193s 1515: void translateException(); 193s 1515: 193s 1515: bool log(); 193s 1515: void react() const; 193s 1515: }; 193s 1515: 193s 1515: namespace assertAction { 193s 1515: enum Enum 193s 1515: { 193s 1515: nothing = 0, 193s 1515: dbgbreak = 1, 193s 1515: shouldthrow = 2 193s 1515: }; 193s 1515: } 193s 1515: 193s 1515: void failed_out_of_a_testing_context(const AssertData& ad); 193s 1515: 193s 1515: bool decomp_assert(assertType::Enum at, const char* file, int line, 193s 1515: const char* expr, const Result& result); 193s 1515: # 1764 "/usr/include/doctest/doctest.h" 3 4 193s 1515: template 193s 1515: __attribute__((noinline)) bool binary_assert(assertType::Enum at, const char* file, int line, 193s 1515: const char* expr, const L& lhs, 193s 1515: const R& rhs) { 193s 1515: bool failed = !RelationalComparator()(lhs, rhs); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: do { if(!is_running_in_test) { if(failed) { ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; rb.m_decomp = stringifyBinaryExpr(lhs, ", ", rhs); failed_out_of_a_testing_context(rb); if(isDebuggerActive() && !getContextOptions()->no_breaks) raise(5); if(checkIfShouldThrow(at)) throwException(); } return !failed; } } while(false); 193s 1515: ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; if(rb.m_failed || getContextOptions()->success) rb.m_decomp = stringifyBinaryExpr(lhs, ", ", rhs); if(rb.log()) raise(5); if(rb.m_failed && checkIfShouldThrow(at)) throwException(); 193s 1515: return !failed; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: __attribute__((noinline)) bool unary_assert(assertType::Enum at, const char* file, int line, 193s 1515: const char* expr, const L& val) { 193s 1515: bool failed = !val; 193s 1515: 193s 1515: if(at & assertType::is_false) 193s 1515: failed = !failed; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: do { if(!is_running_in_test) { if(failed) { ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; rb.m_decomp = (toString(val)); failed_out_of_a_testing_context(rb); if(isDebuggerActive() && !getContextOptions()->no_breaks) raise(5); if(checkIfShouldThrow(at)) throwException(); } return !failed; } } while(false); 193s 1515: ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; if(rb.m_failed || getContextOptions()->success) rb.m_decomp = (toString(val)); if(rb.log()) raise(5); if(rb.m_failed && checkIfShouldThrow(at)) throwException(); 193s 1515: return !failed; 193s 1515: } 193s 1515: 193s 1515: struct IExceptionTranslator 193s 1515: { 193s 1515: virtual ~IExceptionTranslator(); IExceptionTranslator() = default; IExceptionTranslator(const IExceptionTranslator&) = delete; IExceptionTranslator(IExceptionTranslator&&) = delete; IExceptionTranslator& operator=(const IExceptionTranslator&) = delete; IExceptionTranslator& operator=(IExceptionTranslator&&) = delete; 193s 1515: virtual bool translate(String&) const = 0; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: class ExceptionTranslator : public IExceptionTranslator 193s 1515: { 193s 1515: public: 193s 1515: explicit ExceptionTranslator(String (*translateFunction)(T)) 193s 1515: : m_translateFunction(translateFunction) {} 193s 1515: 193s 1515: bool translate(String& res) const override { 193s 1515: 193s 1515: try { 193s 1515: throw; 193s 1515: 193s 1515: } catch(const T& ex) { 193s 1515: res = m_translateFunction(ex); 193s 1515: return true; 193s 1515: } catch(...) {} 193s 1515: 193s 1515: static_cast(res); 193s 1515: return false; 193s 1515: } 193s 1515: 193s 1515: private: 193s 1515: String (*m_translateFunction)(T); 193s 1515: }; 193s 1515: 193s 1515: void registerExceptionTranslatorImpl(const IExceptionTranslator* et); 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct ContextScopeBase : public IContextScope { 193s 1515: ContextScopeBase(const ContextScopeBase&) = delete; 193s 1515: 193s 1515: ContextScopeBase& operator=(const ContextScopeBase&) = delete; 193s 1515: ContextScopeBase& operator=(ContextScopeBase&&) = delete; 193s 1515: 193s 1515: ~ContextScopeBase() override = default; 193s 1515: 193s 1515: protected: 193s 1515: ContextScopeBase(); 193s 1515: ContextScopeBase(ContextScopeBase&& other) noexcept; 193s 1515: 193s 1515: void destroy(); 193s 1515: bool need_to_destroy{true}; 193s 1515: }; 193s 1515: 193s 1515: template class ContextScope : public ContextScopeBase 193s 1515: { 193s 1515: L lambda_; 193s 1515: 193s 1515: public: 193s 1515: explicit ContextScope(const L &lambda) : lambda_(lambda) {} 193s 1515: explicit ContextScope(L&& lambda) : lambda_(static_cast(lambda)) { } 193s 1515: 193s 1515: ContextScope(const ContextScope&) = delete; 193s 1515: ContextScope(ContextScope&&) noexcept = default; 193s 1515: 193s 1515: ContextScope& operator=(const ContextScope&) = delete; 193s 1515: ContextScope& operator=(ContextScope&&) = delete; 193s 1515: 193s 1515: void stringify(std::ostream* s) const override { lambda_(s); } 193s 1515: 193s 1515: ~ContextScope() override { 193s 1515: if (need_to_destroy) { 193s 1515: destroy(); 193s 1515: } 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: struct MessageBuilder : public MessageData 193s 1515: { 193s 1515: std::ostream* m_stream; 193s 1515: bool logged = false; 193s 1515: 193s 1515: MessageBuilder(const char* file, int line, assertType::Enum severity); 193s 1515: 193s 1515: MessageBuilder(const MessageBuilder&) = delete; 193s 1515: MessageBuilder(MessageBuilder&&) = delete; 193s 1515: 193s 1515: MessageBuilder& operator=(const MessageBuilder&) = delete; 193s 1515: MessageBuilder& operator=(MessageBuilder&&) = delete; 193s 1515: 193s 1515: ~MessageBuilder(); 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: MessageBuilder& operator,(const T& in) { 193s 1515: *m_stream << (toString(in)); 193s 1515: return *this; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: MessageBuilder& operator<<(const T& in) { return this->operator,(in); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: MessageBuilder& operator*(const T& in) { return this->operator,(in); } 193s 1515: 193s 1515: bool log(); 193s 1515: void react(); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: ContextScope MakeContextScope(const L &lambda) { 193s 1515: return ContextScope(lambda); 193s 1515: } 193s 1515: } 193s 1515: # 1925 "/usr/include/doctest/doctest.h" 3 4 193s 1515: struct test_suite { const char* data; test_suite(const char* in = "") : data(in) {} void fill(detail::TestCase& state) const { state.m_test_suite = data; } void fill(detail::TestSuite& state) const { state.m_test_suite = data; } }; 193s 1515: struct description { const char* data; description(const char* in = "") : data(in) {} void fill(detail::TestCase& state) const { state.m_description = data; } void fill(detail::TestSuite& state) const { state.m_description = data; } }; 193s 1515: struct skip { bool data; skip(bool in = true) : data(in) {} void fill(detail::TestCase& state) const { state.m_skip = data; } void fill(detail::TestSuite& state) const { state.m_skip = data; } }; 193s 1515: struct no_breaks { bool data; no_breaks(bool in = true) : data(in) {} void fill(detail::TestCase& state) const { state.m_no_breaks = data; } void fill(detail::TestSuite& state) const { state.m_no_breaks = data; } }; 193s 1515: struct no_output { bool data; no_output(bool in = true) : data(in) {} void fill(detail::TestCase& state) const { state.m_no_output = data; } void fill(detail::TestSuite& state) const { state.m_no_output = data; } }; 193s 1515: struct timeout { double data; timeout(double in = 0) : data(in) {} void fill(detail::TestCase& state) const { state.m_timeout = data; } void fill(detail::TestSuite& state) const { state.m_timeout = data; } }; 193s 1515: struct may_fail { bool data; may_fail(bool in = true) : data(in) {} void fill(detail::TestCase& state) const { state.m_may_fail = data; } void fill(detail::TestSuite& state) const { state.m_may_fail = data; } }; 193s 1515: struct should_fail { bool data; should_fail(bool in = true) : data(in) {} void fill(detail::TestCase& state) const { state.m_should_fail = data; } void fill(detail::TestSuite& state) const { state.m_should_fail = data; } }; 193s 1515: struct expected_failures { int data; expected_failures(int in = 0) : data(in) {} void fill(detail::TestCase& state) const { state.m_expected_failures = data; } void fill(detail::TestSuite& state) const { state.m_expected_failures = data; } }; 193s 1515: 193s 1515: template 193s 1515: int registerExceptionTranslator(String (*translateFunction)(T)) { 193s 1515: 193s 1515: static detail::ExceptionTranslator exceptionTranslator(translateFunction); 193s 1515: 193s 1515: detail::registerExceptionTranslatorImpl(&exceptionTranslator); 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace doctest_detail_test_suite_ns { 193s 1515: doctest::detail::TestSuite& getCurrentTestSuite(); 193s 1515: } 193s 1515: 193s 1515: namespace doctest { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace detail { 193s 1515: using assert_handler = void (*)(const AssertData&); 193s 1515: struct ContextState; 193s 1515: } 193s 1515: 193s 1515: class Context 193s 1515: { 193s 1515: detail::ContextState* p; 193s 1515: 193s 1515: void parseArgs(int argc, const char* const* argv, bool withDefaults = false); 193s 1515: 193s 1515: public: 193s 1515: explicit Context(int argc = 0, const char* const* argv = nullptr); 193s 1515: 193s 1515: Context(const Context&) = delete; 193s 1515: Context(Context&&) = delete; 193s 1515: 193s 1515: Context& operator=(const Context&) = delete; 193s 1515: Context& operator=(Context&&) = delete; 193s 1515: 193s 1515: ~Context(); 193s 1515: 193s 1515: void applyCommandLine(int argc, const char* const* argv); 193s 1515: 193s 1515: void addFilter(const char* filter, const char* value); 193s 1515: void clearFilters(); 193s 1515: void setOption(const char* option, bool value); 193s 1515: void setOption(const char* option, int value); 193s 1515: void setOption(const char* option, const char* value); 193s 1515: 193s 1515: bool shouldExit(); 193s 1515: 193s 1515: void setAsDefaultForAssertsOutOfTestCases(); 193s 1515: 193s 1515: void setAssertHandler(detail::assert_handler ah); 193s 1515: 193s 1515: void setCout(std::ostream* out); 193s 1515: 193s 1515: int run(); 193s 1515: }; 193s 1515: 193s 1515: namespace TestCaseFailureReason { 193s 1515: enum Enum 193s 1515: { 193s 1515: None = 0, 193s 1515: AssertFailure = 1, 193s 1515: Exception = 2, 193s 1515: Crash = 4, 193s 1515: TooManyFailedAsserts = 8, 193s 1515: Timeout = 16, 193s 1515: ShouldHaveFailedButDidnt = 32, 193s 1515: ShouldHaveFailedAndDid = 64, 193s 1515: DidntFailExactlyNumTimes = 128, 193s 1515: FailedExactlyNumTimes = 256, 193s 1515: CouldHaveFailedAndDid = 512 193s 1515: }; 193s 1515: } 193s 1515: 193s 1515: struct CurrentTestCaseStats 193s 1515: { 193s 1515: int numAssertsCurrentTest; 193s 1515: int numAssertsFailedCurrentTest; 193s 1515: double seconds; 193s 1515: int failure_flags; 193s 1515: bool testCaseSuccess; 193s 1515: }; 193s 1515: 193s 1515: struct TestCaseException 193s 1515: { 193s 1515: String error_string; 193s 1515: bool is_crash; 193s 1515: }; 193s 1515: 193s 1515: struct TestRunStats 193s 1515: { 193s 1515: unsigned numTestCases; 193s 1515: unsigned numTestCasesPassingFilters; 193s 1515: unsigned numTestSuitesPassingFilters; 193s 1515: unsigned numTestCasesFailed; 193s 1515: int numAsserts; 193s 1515: int numAssertsFailed; 193s 1515: }; 193s 1515: 193s 1515: struct QueryData 193s 1515: { 193s 1515: const TestRunStats* run_stats = nullptr; 193s 1515: const TestCaseData** data = nullptr; 193s 1515: unsigned num_data = 0; 193s 1515: }; 193s 1515: 193s 1515: struct IReporter 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual void report_query(const QueryData&) = 0; 193s 1515: 193s 1515: 193s 1515: virtual void test_run_start() = 0; 193s 1515: 193s 1515: virtual void test_run_end(const TestRunStats&) = 0; 193s 1515: 193s 1515: 193s 1515: virtual void test_case_start(const TestCaseData&) = 0; 193s 1515: 193s 1515: virtual void test_case_reenter(const TestCaseData&) = 0; 193s 1515: 193s 1515: virtual void test_case_end(const CurrentTestCaseStats&) = 0; 193s 1515: 193s 1515: 193s 1515: virtual void test_case_exception(const TestCaseException&) = 0; 193s 1515: 193s 1515: 193s 1515: virtual void subcase_start(const SubcaseSignature&) = 0; 193s 1515: 193s 1515: virtual void subcase_end() = 0; 193s 1515: 193s 1515: 193s 1515: virtual void log_assert(const AssertData&) = 0; 193s 1515: 193s 1515: virtual void log_message(const MessageData&) = 0; 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual void test_case_skipped(const TestCaseData&) = 0; 193s 1515: 193s 1515: virtual ~IReporter(); IReporter() = default; IReporter(const IReporter&) = delete; IReporter(IReporter&&) = delete; IReporter& operator=(const IReporter&) = delete; IReporter& operator=(IReporter&&) = delete; 193s 1515: 193s 1515: 193s 1515: static int get_num_active_contexts(); 193s 1515: static const IContextScope* const* get_active_contexts(); 193s 1515: 193s 1515: 193s 1515: static int get_num_stringified_contexts(); 193s 1515: static const String* get_stringified_contexts(); 193s 1515: }; 193s 1515: 193s 1515: namespace detail { 193s 1515: using reporterCreatorFunc = IReporter* (*)(const ContextOptions&); 193s 1515: 193s 1515: void registerReporterImpl(const char* name, int prio, reporterCreatorFunc c, bool isReporter); 193s 1515: 193s 1515: template 193s 1515: IReporter* reporterCreator(const ContextOptions& o) { 193s 1515: return new Reporter(o); 193s 1515: } 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: int registerReporter(const char* name, int priority, bool isReporter) { 193s 1515: detail::registerReporterImpl(name, priority, detail::reporterCreator, isReporter); 193s 1515: return 0; 193s 1515: } 193s 1515: } 193s 1515: # 3076 "/usr/include/doctest/doctest.h" 3 4 193s 1515: static const int DOCTEST_ANON_VAR_0 = doctest::detail::consume(&DOCTEST_ANON_VAR_0, doctest::detail::setTestSuite(doctest::detail::TestSuite() * "")); using DOCTEST_ANON_FOR_SEMICOLON_1 = int(); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 3082 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic pop 193s 1515: 193s 1515: 193s 1515: # 3084 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 3098 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wunknown-pragmas" 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wpragmas" 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Weffc++" 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wstrict-overflow" 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wstrict-aliasing" 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wmissing-declarations" 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wuseless-cast" 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: 193s 1515: # 3105 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wnoexcept" 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 3123 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: 193s 1515: # 3124 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wconversion" 193s 1515: 193s 1515: # 3125 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wsign-conversion" 193s 1515: 193s 1515: # 3126 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wmissing-field-initializers" 193s 1515: 193s 1515: # 3127 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wmissing-braces" 193s 1515: 193s 1515: # 3128 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wswitch" 193s 1515: 193s 1515: # 3129 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wswitch-enum" 193s 1515: 193s 1515: # 3130 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wswitch-default" 193s 1515: 193s 1515: # 3131 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations" 193s 1515: 193s 1515: # 3132 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wold-style-cast" 193s 1515: 193s 1515: # 3133 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wunused-function" 193s 1515: 193s 1515: # 3134 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wmultiple-inheritance" 193s 1515: 193s 1515: # 3135 "/usr/include/doctest/doctest.h" 3 4 193s 1515: #pragma GCC diagnostic ignored "-Wsuggest-attribute" 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/ctime" 1 3 4 193s 1515: # 46 "/usr/include/c++/15/ctime" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 1 3 4 193s 1515: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 193s 1515: 193s 1515: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wvariadic-macros" 193s 1515: 193s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 193s 1515: #pragma GCC diagnostic ignored "-Wc++23-extensions" 193s 1515: # 336 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: typedef unsigned int size_t; 193s 1515: typedef int ptrdiff_t; 193s 1515: 193s 1515: 193s 1515: typedef decltype(nullptr) nullptr_t; 193s 1515: 193s 1515: 193s 1515: #pragma GCC visibility push(default) 193s 1515: 193s 1515: 193s 1515: extern "C++" __attribute__ ((__noreturn__, __always_inline__)) 193s 1515: inline void __terminate() noexcept 193s 1515: { 193s 1515: void terminate() noexcept __attribute__ ((__noreturn__,__cold__)); 193s 1515: terminate(); 193s 1515: } 193s 1515: #pragma GCC visibility pop 193s 1515: } 193s 1515: # 369 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 193s 1515: } 193s 1515: namespace __gnu_cxx 193s 1515: { 193s 1515: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 193s 1515: } 193s 1515: # 573 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: #pragma GCC visibility push(default) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__always_inline__)) 193s 1515: constexpr inline bool 193s 1515: __is_constant_evaluated() noexcept 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return __builtin_is_constant_evaluated(); 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: #pragma GCC visibility pop 193s 1515: } 193s 1515: # 617 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: #pragma GCC visibility push(default) 193s 1515: 193s 1515: extern "C++" __attribute__ ((__noreturn__)) __attribute__((__cold__)) 193s 1515: void 193s 1515: __glibcxx_assert_fail 193s 1515: (const char* __file, int __line, const char* __function, 193s 1515: const char* __condition) 193s 1515: noexcept; 193s 1515: #pragma GCC visibility pop 193s 1515: } 193s 1515: # 648 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: __attribute__((__always_inline__,__visibility__("default"))) 193s 1515: inline void 193s 1515: __glibcxx_assert_fail() 193s 1515: { } 193s 1515: } 193s 1515: # 727 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/os_defines.h" 1 3 4 193s 1515: # 728 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/cpu_defines.h" 1 3 4 193s 1515: # 731 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 2 3 4 193s 1515: # 953 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 47 "/usr/include/c++/15/ctime" 2 3 4 193s 1515: # 1 "/usr/include/time.h" 1 3 4 193s 1515: # 29 "/usr/include/time.h" 3 4 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 30 "/usr/include/time.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/time.h" 1 3 4 193s 1515: # 73 "/usr/include/arm-linux-gnueabihf/bits/time.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 1 3 4 193s 1515: # 22 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timeval.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct timeval 193s 1515: { 193s 1515: 193s 1515: __time64_t tv_sec; 193s 1515: __suseconds64_t tv_usec; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: }; 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct timex 193s 1515: { 193s 1515: 193s 1515: unsigned int modes; 193s 1515: int :32; 193s 1515: long long offset; 193s 1515: long long freq; 193s 1515: long long maxerror; 193s 1515: long long esterror; 193s 1515: int status; 193s 1515: int :32; 193s 1515: long long constant; 193s 1515: long long precision; 193s 1515: long long tolerance; 193s 1515: struct timeval time; 193s 1515: long long tick; 193s 1515: long long ppsfreq; 193s 1515: long long jitter; 193s 1515: int shift; 193s 1515: int :32; 193s 1515: long long stabil; 193s 1515: long long jitcnt; 193s 1515: long long calcnt; 193s 1515: long long errcnt; 193s 1515: long long stbcnt; 193s 1515: 193s 1515: int tai; 193s 1515: 193s 1515: int :32; int :32; int :32; int :32; 193s 1515: int :32; int :32; int :32; int :32; 193s 1515: int :32; int :32; int :32; 193s 1515: # 85 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 3 4 193s 1515: }; 193s 1515: # 74 "/usr/include/arm-linux-gnueabihf/bits/time.h" 2 3 4 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __asm__ ("" "__clock_adjtime64") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 34 "/usr/include/time.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clock_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __clock_t clock_t; 193s 1515: # 38 "/usr/include/time.h" 2 3 4 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_tm.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct tm 193s 1515: { 193s 1515: int tm_sec; 193s 1515: int tm_min; 193s 1515: int tm_hour; 193s 1515: int tm_mday; 193s 1515: int tm_mon; 193s 1515: int tm_year; 193s 1515: int tm_wday; 193s 1515: int tm_yday; 193s 1515: int tm_isdst; 193s 1515: 193s 1515: 193s 1515: long int tm_gmtoff; 193s 1515: const char *tm_zone; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: }; 193s 1515: # 40 "/usr/include/time.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clockid_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __clockid_t clockid_t; 193s 1515: # 47 "/usr/include/time.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/timer_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __timer_t timer_t; 193s 1515: # 48 "/usr/include/time.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_itimerspec.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct itimerspec 193s 1515: { 193s 1515: struct timespec it_interval; 193s 1515: struct timespec it_value; 193s 1515: }; 193s 1515: # 49 "/usr/include/time.h" 2 3 4 193s 1515: struct sigevent; 193s 1515: # 60 "/usr/include/time.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 1 3 4 193s 1515: # 22 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 3 4 193s 1515: struct __locale_struct 193s 1515: { 193s 1515: 193s 1515: struct __locale_data *__locales[13]; 193s 1515: 193s 1515: 193s 1515: const unsigned short int *__ctype_b; 193s 1515: const int *__ctype_tolower; 193s 1515: const int *__ctype_toupper; 193s 1515: 193s 1515: 193s 1515: const char *__names[13]; 193s 1515: }; 193s 1515: 193s 1515: typedef struct __locale_struct *__locale_t; 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 2 3 4 193s 1515: 193s 1515: typedef __locale_t locale_t; 193s 1515: # 61 "/usr/include/time.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern clock_t clock (void) noexcept (true); 193s 1515: # 85 "/usr/include/time.h" 3 4 193s 1515: extern time_t time (time_t *__timer) noexcept (true) __asm__ ("" "__time64"); 193s 1515: extern double difftime (time_t __time1, time_t __time0) noexcept (true) __asm__ ("" "__difftime64") 193s 1515: ; 193s 1515: extern time_t mktime (struct tm *__tp) noexcept (true) __asm__ ("" "__mktime64"); 193s 1515: # 99 "/usr/include/time.h" 3 4 193s 1515: extern size_t strftime (char *__restrict __s, size_t __maxsize, 193s 1515: const char *__restrict __format, 193s 1515: const struct tm *__restrict __tp) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 3, 4))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *strptime (const char *__restrict __s, 193s 1515: const char *__restrict __fmt, struct tm *__tp) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, 193s 1515: const char *__restrict __format, 193s 1515: const struct tm *__restrict __tp, 193s 1515: locale_t __loc) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *strptime_l (const char *__restrict __s, 193s 1515: const char *__restrict __fmt, struct tm *__tp, 193s 1515: locale_t __loc) noexcept (true); 193s 1515: # 140 "/usr/include/time.h" 3 4 193s 1515: extern struct tm*gmtime (const time_t *__timer) noexcept (true) __asm__ ("" "__gmtime64"); 193s 1515: extern struct tm *localtime (const time_t *__timer) noexcept (true) __asm__ ("" "__localtime64") 193s 1515: ; 193s 1515: # 163 "/usr/include/time.h" 3 4 193s 1515: extern struct tm*gmtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp) noexcept (true) __asm__ ("" "__gmtime64_r") 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern struct tm*localtime_r (const time_t *__restrict __t, struct tm *__restrict __tp) noexcept (true) __asm__ ("" "__localtime64_r") 193s 1515: 193s 1515: ; 193s 1515: # 179 "/usr/include/time.h" 3 4 193s 1515: extern char *asctime (const struct tm *__tp) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *ctime (const time_t *__timer) noexcept (true) __asm__ ("" "__ctime64"); 193s 1515: # 197 "/usr/include/time.h" 3 4 193s 1515: extern char *asctime_r (const struct tm *__restrict __tp, 193s 1515: char *__restrict __buf) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *ctime_r (const time_t *__restrict __timer, char *__restrict __buf) noexcept (true) __asm__ ("" "__ctime64_r") 193s 1515: ; 193s 1515: # 217 "/usr/include/time.h" 3 4 193s 1515: extern char *__tzname[2]; 193s 1515: extern int __daylight; 193s 1515: extern long int __timezone; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *tzname[2]; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void tzset (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int daylight; 193s 1515: extern long int timezone; 193s 1515: # 249 "/usr/include/time.h" 3 4 193s 1515: extern time_t timegm (struct tm *__tp) noexcept (true) __asm__ ("" "__timegm64"); 193s 1515: # 266 "/usr/include/time.h" 3 4 193s 1515: extern time_t timelocal (struct tm *__tp) noexcept (true) __asm__ ("" "__mktime64"); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int dysize (int __year) noexcept (true) __attribute__ ((__const__)); 193s 1515: # 296 "/usr/include/time.h" 3 4 193s 1515: extern int nanosleep (const struct timespec *__requested_time, struct timespec *__remaining) __asm__ ("" "__nanosleep64") 193s 1515: 193s 1515: ; 193s 1515: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) noexcept (true) __asm__ ("" "__clock_getres64") 193s 1515: 193s 1515: ; 193s 1515: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) noexcept (true) __asm__ ("" "__clock_gettime64") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (2))); 193s 1515: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) noexcept (true) __asm__ ("" "__clock_settime64") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (2))); 193s 1515: # 328 "/usr/include/time.h" 3 4 193s 1515: extern int clock_nanosleep (clockid_t __clock_id, int __flags, const struct timespec *__req, struct timespec *__rem) __asm__ ("" "__clock_nanosleep_time64") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int timer_create (clockid_t __clock_id, 193s 1515: struct sigevent *__restrict __evp, 193s 1515: timer_t *__restrict __timerid) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int timer_delete (timer_t __timerid) noexcept (true); 193s 1515: # 361 "/usr/include/time.h" 3 4 193s 1515: extern int timer_settime (timer_t __timerid, int __flags, const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) noexcept (true) __asm__ ("" "__timer_settime64") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) noexcept (true) __asm__ ("" "__timer_gettime64") 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int timer_getoverrun (timer_t __timerid) noexcept (true); 193s 1515: # 387 "/usr/include/time.h" 3 4 193s 1515: extern int timespec_get (struct timespec *__ts, int __base) noexcept (true) __asm__ ("" "__timespec_get64") 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: # 403 "/usr/include/time.h" 3 4 193s 1515: extern int timespec_getres (struct timespec *__ts, int __base) noexcept (true) __asm__ ("" "__timespec_getres64") 193s 1515: 193s 1515: ; 193s 1515: # 425 "/usr/include/time.h" 3 4 193s 1515: extern int getdate_err; 193s 1515: # 434 "/usr/include/time.h" 3 4 193s 1515: extern struct tm *getdate (const char *__string); 193s 1515: # 448 "/usr/include/time.h" 3 4 193s 1515: extern int getdate_r (const char *__restrict __string, 193s 1515: struct tm *__restrict __resbufp); 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 48 "/usr/include/c++/15/ctime" 2 3 4 193s 1515: # 60 "/usr/include/c++/15/ctime" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: using ::clock_t; 193s 1515: using ::time_t; 193s 1515: using ::tm; 193s 1515: 193s 1515: using ::clock; 193s 1515: using ::difftime; 193s 1515: using ::mktime; 193s 1515: using ::time; 193s 1515: using ::asctime; 193s 1515: using ::ctime; 193s 1515: using ::gmtime; 193s 1515: using ::localtime; 193s 1515: using ::strftime; 193s 1515: } 193s 1515: # 3151 "/usr/include/doctest/doctest.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/cmath" 1 3 4 193s 1515: # 46 "/usr/include/c++/15/cmath" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/requires_hosted.h" 1 3 4 193s 1515: # 47 "/usr/include/c++/15/cmath" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/bits/cpp_type_traits.h" 1 3 4 193s 1515: # 40 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 193s 1515: # 41 "/usr/include/c++/15/bits/cpp_type_traits.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 193s 1515: # 76 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 193s 1515: extern "C++" { 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: struct __true_type { }; 193s 1515: struct __false_type { }; 193s 1515: 193s 1515: template 193s 1515: struct __truth_type 193s 1515: { typedef __false_type __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __truth_type 193s 1515: { typedef __true_type __type; }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __traitor 193s 1515: { 193s 1515: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; 193s 1515: typedef typename __truth_type<__value>::__type __type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __are_same 193s 1515: { 193s 1515: enum { __value = 0 }; 193s 1515: typedef __false_type __type; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __are_same<_Tp, _Tp> 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 0 }; 193s 1515: typedef __false_type __type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: # 176 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integer 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: # 281 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 193s 1515: template 193s 1515: struct __is_floating 193s 1515: { 193s 1515: enum { __value = 0 }; 193s 1515: typedef __false_type __type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __is_floating 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_floating 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_floating 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: # 358 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 193s 1515: template 193s 1515: struct __is_arithmetic 193s 1515: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_char 193s 1515: { 193s 1515: enum { __value = 0 }; 193s 1515: typedef __false_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_char 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __is_char 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_byte 193s 1515: { 193s 1515: enum { __value = 0 }; 193s 1515: typedef __false_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_byte 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_byte 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_byte 193s 1515: { 193s 1515: enum { __value = 1 }; 193s 1515: typedef __true_type __type; 193s 1515: }; 193s 1515: # 438 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 193s 1515: template 193s 1515: struct __is_nonvolatile_trivially_copyable 193s 1515: { 193s 1515: enum { __value = __is_trivially_copyable(_Tp) }; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_nonvolatile_trivially_copyable 193s 1515: { 193s 1515: enum { __value = 0 }; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __memcpyable 193s 1515: { 193s 1515: enum { __value = 0 }; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __memcpyable<_Tp*, _Tp*> 193s 1515: : __is_nonvolatile_trivially_copyable<_Tp> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __memcpyable<_Tp*, const _Tp*> 193s 1515: : __is_nonvolatile_trivially_copyable<_Tp> 193s 1515: { }; 193s 1515: 193s 1515: template struct __memcpyable_integer; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __memcpyable<_Tp*, _Up*> 193s 1515: { 193s 1515: enum { 193s 1515: __value = __memcpyable_integer<_Tp>::__width != 0 193s 1515: && ((int)__memcpyable_integer<_Tp>::__width 193s 1515: == (int)__memcpyable_integer<_Up>::__width) 193s 1515: }; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __memcpyable<_Tp*, const _Up*> 193s 1515: : __memcpyable<_Tp*, _Up*> 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __memcpyable_integer 193s 1515: { 193s 1515: enum { 193s 1515: __width = __is_integer<_Tp>::__value ? (sizeof(_Tp) * 8) : 0 193s 1515: }; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __memcpyable_integer 193s 1515: { enum { __width = 0 }; }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __memcpyable_integer 193s 1515: { enum { __width = 0 }; }; 193s 1515: # 567 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 193s 1515: template<> 193s 1515: struct __memcpyable { enum { __value = true }; }; 193s 1515: template<> 193s 1515: struct __memcpyable { enum { __value = true }; }; 193s 1515: # 599 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 193s 1515: template 193s 1515: struct __memcmpable 193s 1515: { 193s 1515: enum { __value = 0 }; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __memcmpable<_Tp*, _Tp*> 193s 1515: : __is_nonvolatile_trivially_copyable<_Tp> 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __memcmpable 193s 1515: : __is_nonvolatile_trivially_copyable<_Tp> 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __memcmpable<_Tp*, const _Tp*> 193s 1515: : __is_nonvolatile_trivially_copyable<_Tp> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template::__value 193s 1515: 193s 1515: > 193s 1515: struct __is_memcmp_ordered 193s 1515: { 193s 1515: static const bool __value = _Tp(-1) > _Tp(1); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __is_memcmp_ordered<_Tp, false> 193s 1515: { 193s 1515: static const bool __value = false; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_memcmp_ordered_with 193s 1515: { 193s 1515: static const bool __value = __is_memcmp_ordered<_Tp>::__value 193s 1515: && __is_memcmp_ordered<_Up>::__value; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __is_memcmp_ordered_with<_Tp, _Up, false> 193s 1515: { 193s 1515: static const bool __value = false; 193s 1515: }; 193s 1515: # 693 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 193s 1515: template 193s 1515: struct __is_move_iterator 193s 1515: { 193s 1515: enum { __value = 0 }; 193s 1515: typedef __false_type __type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: 193s 1515: inline _Iterator 193s 1515: __miter_base(_Iterator __it) 193s 1515: { return __it; } 193s 1515: 193s 1515: 193s 1515: } 193s 1515: } 193s 1515: 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 50 "/usr/include/c++/15/cmath" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/ext/type_traits.h" 1 3 4 193s 1515: # 39 "/usr/include/c++/15/ext/type_traits.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 193s 1515: 193s 1515: extern "C++" { 193s 1515: 193s 1515: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __enable_if 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __enable_if 193s 1515: { typedef _Tp __type; }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __conditional_type 193s 1515: { typedef _Iftrue __type; }; 193s 1515: 193s 1515: template 193s 1515: struct __conditional_type 193s 1515: { typedef _Iffalse __type; }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __add_unsigned 193s 1515: { 193s 1515: private: 193s 1515: typedef __enable_if::__value, _Tp> __if_type; 193s 1515: 193s 1515: public: 193s 1515: typedef typename __if_type::__type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __add_unsigned 193s 1515: { typedef unsigned char __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __add_unsigned 193s 1515: { typedef unsigned char __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __add_unsigned 193s 1515: { typedef unsigned short __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __add_unsigned 193s 1515: { typedef unsigned int __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __add_unsigned 193s 1515: { typedef unsigned long __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __add_unsigned 193s 1515: { typedef unsigned long long __type; }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __add_unsigned; 193s 1515: 193s 1515: template<> 193s 1515: struct __add_unsigned; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __remove_unsigned 193s 1515: { 193s 1515: private: 193s 1515: typedef __enable_if::__value, _Tp> __if_type; 193s 1515: 193s 1515: public: 193s 1515: typedef typename __if_type::__type __type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __remove_unsigned 193s 1515: { typedef signed char __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __remove_unsigned 193s 1515: { typedef signed char __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __remove_unsigned 193s 1515: { typedef short __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __remove_unsigned 193s 1515: { typedef int __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __remove_unsigned 193s 1515: { typedef long __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __remove_unsigned 193s 1515: { typedef long long __type; }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __remove_unsigned; 193s 1515: 193s 1515: template<> 193s 1515: struct __remove_unsigned; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr 193s 1515: inline bool 193s 1515: __is_null_pointer(_Type* __ptr) 193s 1515: { return __ptr == 0; } 193s 1515: 193s 1515: template 193s 1515: constexpr 193s 1515: inline bool 193s 1515: __is_null_pointer(_Type) 193s 1515: { return false; } 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: __is_null_pointer(std::nullptr_t) 193s 1515: { return true; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template::__value> 193s 1515: struct __promote 193s 1515: { typedef double __type; }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __promote<_Tp, false> 193s 1515: { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __promote 193s 1515: { typedef long double __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __promote 193s 1515: { typedef double __type; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __promote 193s 1515: { typedef float __type; }; 193s 1515: # 246 "/usr/include/c++/15/ext/type_traits.h" 3 4 193s 1515: template::__type, 193s 1515: typename _Up2 = typename __promote<_Up>::__type> 193s 1515: struct __promote_2 193s 1515: { 193s 1515: typedef __typeof__(_Tp2() + _Up2()) __type; 193s 1515: }; 193s 1515: 193s 1515: template::__type, 193s 1515: typename _Up2 = typename __promote<_Up>::__type, 193s 1515: typename _Vp2 = typename __promote<_Vp>::__type> 193s 1515: struct __promote_3 193s 1515: { 193s 1515: typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; 193s 1515: }; 193s 1515: 193s 1515: template::__type, 193s 1515: typename _Up2 = typename __promote<_Up>::__type, 193s 1515: typename _Vp2 = typename __promote<_Vp>::__type, 193s 1515: typename _Wp2 = typename __promote<_Wp>::__type> 193s 1515: struct __promote_4 193s 1515: { 193s 1515: typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: } 193s 1515: 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 51 "/usr/include/c++/15/cmath" 2 3 4 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wpedantic" 193s 1515: 193s 1515: # 1 "/usr/include/math.h" 1 3 4 193s 1515: # 27 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 193s 1515: # 28 "/usr/include/math.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/libm-simd-decl-stubs.h" 1 3 4 193s 1515: # 28 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 2 3 4 193s 1515: # 41 "/usr/include/math.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 193s 1515: # 52 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4 193s 1515: # 25 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 2 3 4 193s 1515: # 53 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 2 3 4 193s 1515: # 44 "/usr/include/math.h" 2 3 4 193s 1515: # 156 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/flt-eval-method.h" 1 3 4 193s 1515: # 157 "/usr/include/math.h" 2 3 4 193s 1515: # 167 "/usr/include/math.h" 3 4 193s 1515: typedef float float_t; 193s 1515: typedef double double_t; 193s 1515: # 208 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/fp-logb.h" 1 3 4 193s 1515: # 209 "/usr/include/math.h" 2 3 4 193s 1515: # 251 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/fp-fast.h" 1 3 4 193s 1515: # 252 "/usr/include/math.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: FP_INT_UPWARD = 193s 1515: 193s 1515: 0, 193s 1515: FP_INT_DOWNWARD = 193s 1515: 193s 1515: 1, 193s 1515: FP_INT_TOWARDZERO = 193s 1515: 193s 1515: 2, 193s 1515: FP_INT_TONEARESTFROMZERO = 193s 1515: 193s 1515: 3, 193s 1515: FP_INT_TONEAREST = 193s 1515: 193s 1515: 4, 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-macros.h" 1 3 4 193s 1515: # 276 "/usr/include/math.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 193s 1515: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 193s 1515: extern int __fpclassify (double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __signbit (double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __isinf (double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __finite (double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __isnan (double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __iseqsig (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int __issignaling (double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: # 282 "/usr/include/math.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 193s 1515: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern double acos (double __x) noexcept (true); extern double __acos (double __x) noexcept (true); 193s 1515: 193s 1515: extern double asin (double __x) noexcept (true); extern double __asin (double __x) noexcept (true); 193s 1515: 193s 1515: extern double atan (double __x) noexcept (true); extern double __atan (double __x) noexcept (true); 193s 1515: 193s 1515: extern double atan2 (double __y, double __x) noexcept (true); extern double __atan2 (double __y, double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double cos (double __x) noexcept (true); extern double __cos (double __x) noexcept (true); 193s 1515: 193s 1515: extern double sin (double __x) noexcept (true); extern double __sin (double __x) noexcept (true); 193s 1515: 193s 1515: extern double tan (double __x) noexcept (true); extern double __tan (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double acospi (double __x) noexcept (true); extern double __acospi (double __x) noexcept (true); 193s 1515: extern double acospi (double __x) noexcept (true); extern double __acospi (double __x) noexcept (true); 193s 1515: 193s 1515: extern double asinpi (double __x) noexcept (true); extern double __asinpi (double __x) noexcept (true); 193s 1515: extern double asinpi (double __x) noexcept (true); extern double __asinpi (double __x) noexcept (true); 193s 1515: 193s 1515: extern double atanpi (double __x) noexcept (true); extern double __atanpi (double __x) noexcept (true); 193s 1515: extern double atanpi (double __x) noexcept (true); extern double __atanpi (double __x) noexcept (true); 193s 1515: 193s 1515: extern double atan2pi (double __y, double __x) noexcept (true); extern double __atan2pi (double __y, double __x) noexcept (true); 193s 1515: extern double atan2pi (double __y, double __x) noexcept (true); extern double __atan2pi (double __y, double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double cospi (double __x) noexcept (true); extern double __cospi (double __x) noexcept (true); 193s 1515: 193s 1515: extern double sinpi (double __x) noexcept (true); extern double __sinpi (double __x) noexcept (true); 193s 1515: 193s 1515: extern double tanpi (double __x) noexcept (true); extern double __tanpi (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double cosh (double __x) noexcept (true); extern double __cosh (double __x) noexcept (true); 193s 1515: 193s 1515: extern double sinh (double __x) noexcept (true); extern double __sinh (double __x) noexcept (true); 193s 1515: 193s 1515: extern double tanh (double __x) noexcept (true); extern double __tanh (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void sincos (double __x, double *__sinx, double *__cosx) noexcept (true); extern void __sincos (double __x, double *__sinx, double *__cosx) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double acosh (double __x) noexcept (true); extern double __acosh (double __x) noexcept (true); 193s 1515: 193s 1515: extern double asinh (double __x) noexcept (true); extern double __asinh (double __x) noexcept (true); 193s 1515: 193s 1515: extern double atanh (double __x) noexcept (true); extern double __atanh (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double exp (double __x) noexcept (true); extern double __exp (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double frexp (double __x, int *__exponent) noexcept (true); extern double __frexp (double __x, int *__exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double ldexp (double __x, int __exponent) noexcept (true); extern double __ldexp (double __x, int __exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double log (double __x) noexcept (true); extern double __log (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double log10 (double __x) noexcept (true); extern double __log10 (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double modf (double __x, double *__iptr) noexcept (true); extern double __modf (double __x, double *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double exp10 (double __x) noexcept (true); extern double __exp10 (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double exp2m1 (double __x) noexcept (true); extern double __exp2m1 (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double exp10m1 (double __x) noexcept (true); extern double __exp10m1 (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double log2p1 (double __x) noexcept (true); extern double __log2p1 (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double log10p1 (double __x) noexcept (true); extern double __log10p1 (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double logp1 (double __x) noexcept (true); extern double __logp1 (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double expm1 (double __x) noexcept (true); extern double __expm1 (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double log1p (double __x) noexcept (true); extern double __log1p (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double logb (double __x) noexcept (true); extern double __logb (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double exp2 (double __x) noexcept (true); extern double __exp2 (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double log2 (double __x) noexcept (true); extern double __log2 (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double pow (double __x, double __y) noexcept (true); extern double __pow (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double sqrt (double __x) noexcept (true); extern double __sqrt (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double hypot (double __x, double __y) noexcept (true); extern double __hypot (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double cbrt (double __x) noexcept (true); extern double __cbrt (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double compoundn (double __x, long long int __y) noexcept (true); extern double __compoundn (double __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double pown (double __x, long long int __y) noexcept (true); extern double __pown (double __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double powr (double __x, double __y) noexcept (true); extern double __powr (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double rootn (double __x, long long int __y) noexcept (true); extern double __rootn (double __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double rsqrt (double __x) noexcept (true); extern double __rsqrt (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double ceil (double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fabs (double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double floor (double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fmod (double __x, double __y) noexcept (true); extern double __fmod (double __x, double __y) noexcept (true); 193s 1515: # 237 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern int finite (double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double drem (double __x, double __y) noexcept (true); extern double __drem (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double significand (double __x) noexcept (true); extern double __significand (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double copysign (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double nan (const char *__tagb) noexcept (true); extern double __nan (const char *__tagb) noexcept (true); 193s 1515: # 274 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern double j0 (double) noexcept (true); extern double __j0 (double) noexcept (true); 193s 1515: extern double j1 (double) noexcept (true); extern double __j1 (double) noexcept (true); 193s 1515: extern double jn (int, double) noexcept (true); extern double __jn (int, double) noexcept (true); 193s 1515: extern double y0 (double) noexcept (true); extern double __y0 (double) noexcept (true); 193s 1515: extern double y1 (double) noexcept (true); extern double __y1 (double) noexcept (true); 193s 1515: extern double yn (int, double) noexcept (true); extern double __yn (int, double) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double erf (double) noexcept (true); extern double __erf (double) noexcept (true); 193s 1515: extern double erfc (double) noexcept (true); extern double __erfc (double) noexcept (true); 193s 1515: extern double lgamma (double) noexcept (true); extern double __lgamma (double) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double tgamma (double) noexcept (true); extern double __tgamma (double) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double gamma (double) noexcept (true); extern double __gamma (double) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double lgamma_r (double, int *__signgamp) noexcept (true); extern double __lgamma_r (double, int *__signgamp) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double rint (double __x) noexcept (true); extern double __rint (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double nextafter (double __x, double __y) noexcept (true); extern double __nextafter (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: extern double nexttoward (double __x, long double __y) noexcept (true); extern double __nexttoward (double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double nextdown (double __x) noexcept (true); extern double __nextdown (double __x) noexcept (true); 193s 1515: 193s 1515: extern double nextup (double __x) noexcept (true); extern double __nextup (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double remainder (double __x, double __y) noexcept (true); extern double __remainder (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double scalbn (double __x, int __n) noexcept (true); extern double __scalbn (double __x, int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ilogb (double __x) noexcept (true); extern int __ilogb (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int llogb (double __x) noexcept (true); extern long int __llogb (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double scalbln (double __x, long int __n) noexcept (true); extern double __scalbln (double __x, long int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double nearbyint (double __x) noexcept (true); extern double __nearbyint (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double round (double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double trunc (double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double remquo (double __x, double __y, int *__quo) noexcept (true); extern double __remquo (double __x, double __y, int *__quo) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lrint (double __x) noexcept (true); extern long int __lrint (double __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llrint (double __x) noexcept (true); extern long long int __llrint (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lround (double __x) noexcept (true); extern long int __lround (double __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llround (double __x) noexcept (true); extern long long int __llround (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double fdim (double __x, double __y) noexcept (true); extern double __fdim (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double fmax (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fmin (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double fma (double __x, double __y, double __z) noexcept (true); extern double __fma (double __x, double __y, double __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double roundeven (double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfp (double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern int canonicalize (double *__cx, const double *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double fmaxmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fminmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double fmaximum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fminimum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fmaximum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fminimum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fmaximum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fminimum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fmaximum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern double fminimum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int totalorder (const double *__x, const double *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern int totalordermag (const double *__x, const double *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern double getpayload (const double *__x) noexcept (true); extern double __getpayload (const double *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayload (double *__x, double __payload) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadsig (double *__x, double __payload) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double scalb (double __x, double __n) noexcept (true); extern double __scalb (double __x, double __n) noexcept (true); 193s 1515: # 283 "/usr/include/math.h" 2 3 4 193s 1515: # 298 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 193s 1515: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 193s 1515: extern int __fpclassifyf (float __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __signbitf (float __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __isinff (float __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __finitef (float __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __isnanf (float __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __iseqsigf (float __x, float __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int __issignalingf (float __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: # 299 "/usr/include/math.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 193s 1515: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern float acosf (float __x) noexcept (true); extern float __acosf (float __x) noexcept (true); 193s 1515: 193s 1515: extern float asinf (float __x) noexcept (true); extern float __asinf (float __x) noexcept (true); 193s 1515: 193s 1515: extern float atanf (float __x) noexcept (true); extern float __atanf (float __x) noexcept (true); 193s 1515: 193s 1515: extern float atan2f (float __y, float __x) noexcept (true); extern float __atan2f (float __y, float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float cosf (float __x) noexcept (true); extern float __cosf (float __x) noexcept (true); 193s 1515: 193s 1515: extern float sinf (float __x) noexcept (true); extern float __sinf (float __x) noexcept (true); 193s 1515: 193s 1515: extern float tanf (float __x) noexcept (true); extern float __tanf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float acospif (float __x) noexcept (true); extern float __acospif (float __x) noexcept (true); 193s 1515: extern float acospif (float __x) noexcept (true); extern float __acospif (float __x) noexcept (true); 193s 1515: 193s 1515: extern float asinpif (float __x) noexcept (true); extern float __asinpif (float __x) noexcept (true); 193s 1515: extern float asinpif (float __x) noexcept (true); extern float __asinpif (float __x) noexcept (true); 193s 1515: 193s 1515: extern float atanpif (float __x) noexcept (true); extern float __atanpif (float __x) noexcept (true); 193s 1515: extern float atanpif (float __x) noexcept (true); extern float __atanpif (float __x) noexcept (true); 193s 1515: 193s 1515: extern float atan2pif (float __y, float __x) noexcept (true); extern float __atan2pif (float __y, float __x) noexcept (true); 193s 1515: extern float atan2pif (float __y, float __x) noexcept (true); extern float __atan2pif (float __y, float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float cospif (float __x) noexcept (true); extern float __cospif (float __x) noexcept (true); 193s 1515: 193s 1515: extern float sinpif (float __x) noexcept (true); extern float __sinpif (float __x) noexcept (true); 193s 1515: 193s 1515: extern float tanpif (float __x) noexcept (true); extern float __tanpif (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float coshf (float __x) noexcept (true); extern float __coshf (float __x) noexcept (true); 193s 1515: 193s 1515: extern float sinhf (float __x) noexcept (true); extern float __sinhf (float __x) noexcept (true); 193s 1515: 193s 1515: extern float tanhf (float __x) noexcept (true); extern float __tanhf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void sincosf (float __x, float *__sinx, float *__cosx) noexcept (true); extern void __sincosf (float __x, float *__sinx, float *__cosx) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float acoshf (float __x) noexcept (true); extern float __acoshf (float __x) noexcept (true); 193s 1515: 193s 1515: extern float asinhf (float __x) noexcept (true); extern float __asinhf (float __x) noexcept (true); 193s 1515: 193s 1515: extern float atanhf (float __x) noexcept (true); extern float __atanhf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float expf (float __x) noexcept (true); extern float __expf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float frexpf (float __x, int *__exponent) noexcept (true); extern float __frexpf (float __x, int *__exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float ldexpf (float __x, int __exponent) noexcept (true); extern float __ldexpf (float __x, int __exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float logf (float __x) noexcept (true); extern float __logf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float log10f (float __x) noexcept (true); extern float __log10f (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float modff (float __x, float *__iptr) noexcept (true); extern float __modff (float __x, float *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float exp10f (float __x) noexcept (true); extern float __exp10f (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float exp2m1f (float __x) noexcept (true); extern float __exp2m1f (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float exp10m1f (float __x) noexcept (true); extern float __exp10m1f (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float log2p1f (float __x) noexcept (true); extern float __log2p1f (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float log10p1f (float __x) noexcept (true); extern float __log10p1f (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float logp1f (float __x) noexcept (true); extern float __logp1f (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float expm1f (float __x) noexcept (true); extern float __expm1f (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float log1pf (float __x) noexcept (true); extern float __log1pf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float logbf (float __x) noexcept (true); extern float __logbf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float exp2f (float __x) noexcept (true); extern float __exp2f (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float log2f (float __x) noexcept (true); extern float __log2f (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float powf (float __x, float __y) noexcept (true); extern float __powf (float __x, float __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float sqrtf (float __x) noexcept (true); extern float __sqrtf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float hypotf (float __x, float __y) noexcept (true); extern float __hypotf (float __x, float __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float cbrtf (float __x) noexcept (true); extern float __cbrtf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float compoundnf (float __x, long long int __y) noexcept (true); extern float __compoundnf (float __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float pownf (float __x, long long int __y) noexcept (true); extern float __pownf (float __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float powrf (float __x, float __y) noexcept (true); extern float __powrf (float __x, float __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float rootnf (float __x, long long int __y) noexcept (true); extern float __rootnf (float __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float rsqrtf (float __x) noexcept (true); extern float __rsqrtf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float ceilf (float __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fabsf (float __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float floorf (float __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fmodf (float __x, float __y) noexcept (true); extern float __fmodf (float __x, float __y) noexcept (true); 193s 1515: # 231 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern int isinff (float __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int finitef (float __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float dremf (float __x, float __y) noexcept (true); extern float __dremf (float __x, float __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float significandf (float __x) noexcept (true); extern float __significandf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float copysignf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float nanf (const char *__tagb) noexcept (true); extern float __nanf (const char *__tagb) noexcept (true); 193s 1515: # 267 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern int isnanf (float __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float j0f (float) noexcept (true); extern float __j0f (float) noexcept (true); 193s 1515: extern float j1f (float) noexcept (true); extern float __j1f (float) noexcept (true); 193s 1515: extern float jnf (int, float) noexcept (true); extern float __jnf (int, float) noexcept (true); 193s 1515: extern float y0f (float) noexcept (true); extern float __y0f (float) noexcept (true); 193s 1515: extern float y1f (float) noexcept (true); extern float __y1f (float) noexcept (true); 193s 1515: extern float ynf (int, float) noexcept (true); extern float __ynf (int, float) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float erff (float) noexcept (true); extern float __erff (float) noexcept (true); 193s 1515: extern float erfcf (float) noexcept (true); extern float __erfcf (float) noexcept (true); 193s 1515: extern float lgammaf (float) noexcept (true); extern float __lgammaf (float) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float tgammaf (float) noexcept (true); extern float __tgammaf (float) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float gammaf (float) noexcept (true); extern float __gammaf (float) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float lgammaf_r (float, int *__signgamp) noexcept (true); extern float __lgammaf_r (float, int *__signgamp) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float rintf (float __x) noexcept (true); extern float __rintf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float nextafterf (float __x, float __y) noexcept (true); extern float __nextafterf (float __x, float __y) noexcept (true); 193s 1515: 193s 1515: extern float nexttowardf (float __x, long double __y) noexcept (true); extern float __nexttowardf (float __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float nextdownf (float __x) noexcept (true); extern float __nextdownf (float __x) noexcept (true); 193s 1515: 193s 1515: extern float nextupf (float __x) noexcept (true); extern float __nextupf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float remainderf (float __x, float __y) noexcept (true); extern float __remainderf (float __x, float __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float scalbnf (float __x, int __n) noexcept (true); extern float __scalbnf (float __x, int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ilogbf (float __x) noexcept (true); extern int __ilogbf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int llogbf (float __x) noexcept (true); extern long int __llogbf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float scalblnf (float __x, long int __n) noexcept (true); extern float __scalblnf (float __x, long int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float nearbyintf (float __x) noexcept (true); extern float __nearbyintf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float roundf (float __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float truncf (float __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float remquof (float __x, float __y, int *__quo) noexcept (true); extern float __remquof (float __x, float __y, int *__quo) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lrintf (float __x) noexcept (true); extern long int __lrintf (float __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llrintf (float __x) noexcept (true); extern long long int __llrintf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lroundf (float __x) noexcept (true); extern long int __lroundf (float __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llroundf (float __x) noexcept (true); extern long long int __llroundf (float __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float fdimf (float __x, float __y) noexcept (true); extern float __fdimf (float __x, float __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float fmaxf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fminf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float fmaf (float __x, float __y, float __z) noexcept (true); extern float __fmaf (float __x, float __y, float __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float roundevenf (float __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern int canonicalizef (float *__cx, const float *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float fmaxmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fminmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float fmaximumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fminimumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fmaximum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fminimum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fmaximum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fminimum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fmaximum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern float fminimum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int totalorderf (const float *__x, const float *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern int totalordermagf (const float *__x, const float *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern float getpayloadf (const float *__x) noexcept (true); extern float __getpayloadf (const float *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadf (float *__x, float __payload) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadsigf (float *__x, float __payload) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float scalbf (float __x, float __n) noexcept (true); extern float __scalbf (float __x, float __n) noexcept (true); 193s 1515: # 300 "/usr/include/math.h" 2 3 4 193s 1515: # 367 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 193s 1515: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 193s 1515: extern int __fpclassifyl (long double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __signbitl (long double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __isinfl (long double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __finitel (long double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __isnanl (long double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int __iseqsigl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int __issignalingl (long double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: # 368 "/usr/include/math.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 193s 1515: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern long double acosl (long double __x) noexcept (true); extern long double __acosl (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double asinl (long double __x) noexcept (true); extern long double __asinl (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double atanl (long double __x) noexcept (true); extern long double __atanl (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double atan2l (long double __y, long double __x) noexcept (true); extern long double __atan2l (long double __y, long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double cosl (long double __x) noexcept (true); extern long double __cosl (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double sinl (long double __x) noexcept (true); extern long double __sinl (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double tanl (long double __x) noexcept (true); extern long double __tanl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double acospil (long double __x) noexcept (true); extern long double __acospil (long double __x) noexcept (true); 193s 1515: extern long double acospil (long double __x) noexcept (true); extern long double __acospil (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double asinpil (long double __x) noexcept (true); extern long double __asinpil (long double __x) noexcept (true); 193s 1515: extern long double asinpil (long double __x) noexcept (true); extern long double __asinpil (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double atanpil (long double __x) noexcept (true); extern long double __atanpil (long double __x) noexcept (true); 193s 1515: extern long double atanpil (long double __x) noexcept (true); extern long double __atanpil (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double atan2pil (long double __y, long double __x) noexcept (true); extern long double __atan2pil (long double __y, long double __x) noexcept (true); 193s 1515: extern long double atan2pil (long double __y, long double __x) noexcept (true); extern long double __atan2pil (long double __y, long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double cospil (long double __x) noexcept (true); extern long double __cospil (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double sinpil (long double __x) noexcept (true); extern long double __sinpil (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double tanpil (long double __x) noexcept (true); extern long double __tanpil (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double coshl (long double __x) noexcept (true); extern long double __coshl (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double sinhl (long double __x) noexcept (true); extern long double __sinhl (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double tanhl (long double __x) noexcept (true); extern long double __tanhl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void sincosl (long double __x, long double *__sinx, long double *__cosx) noexcept (true); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double acoshl (long double __x) noexcept (true); extern long double __acoshl (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double asinhl (long double __x) noexcept (true); extern long double __asinhl (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double atanhl (long double __x) noexcept (true); extern long double __atanhl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double expl (long double __x) noexcept (true); extern long double __expl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double frexpl (long double __x, int *__exponent) noexcept (true); extern long double __frexpl (long double __x, int *__exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double ldexpl (long double __x, int __exponent) noexcept (true); extern long double __ldexpl (long double __x, int __exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double logl (long double __x) noexcept (true); extern long double __logl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double log10l (long double __x) noexcept (true); extern long double __log10l (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double modfl (long double __x, long double *__iptr) noexcept (true); extern long double __modfl (long double __x, long double *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double exp10l (long double __x) noexcept (true); extern long double __exp10l (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double exp2m1l (long double __x) noexcept (true); extern long double __exp2m1l (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double exp10m1l (long double __x) noexcept (true); extern long double __exp10m1l (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double log2p1l (long double __x) noexcept (true); extern long double __log2p1l (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double log10p1l (long double __x) noexcept (true); extern long double __log10p1l (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double logp1l (long double __x) noexcept (true); extern long double __logp1l (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double expm1l (long double __x) noexcept (true); extern long double __expm1l (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double log1pl (long double __x) noexcept (true); extern long double __log1pl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double logbl (long double __x) noexcept (true); extern long double __logbl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double exp2l (long double __x) noexcept (true); extern long double __exp2l (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double log2l (long double __x) noexcept (true); extern long double __log2l (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double powl (long double __x, long double __y) noexcept (true); extern long double __powl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double sqrtl (long double __x) noexcept (true); extern long double __sqrtl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double hypotl (long double __x, long double __y) noexcept (true); extern long double __hypotl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double cbrtl (long double __x) noexcept (true); extern long double __cbrtl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double compoundnl (long double __x, long long int __y) noexcept (true); extern long double __compoundnl (long double __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double pownl (long double __x, long long int __y) noexcept (true); extern long double __pownl (long double __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double powrl (long double __x, long double __y) noexcept (true); extern long double __powrl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double rootnl (long double __x, long long int __y) noexcept (true); extern long double __rootnl (long double __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double rsqrtl (long double __x) noexcept (true); extern long double __rsqrtl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double ceill (long double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fabsl (long double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double floorl (long double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fmodl (long double __x, long double __y) noexcept (true); extern long double __fmodl (long double __x, long double __y) noexcept (true); 193s 1515: # 231 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern int isinfl (long double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int finitel (long double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double dreml (long double __x, long double __y) noexcept (true); extern long double __dreml (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double significandl (long double __x) noexcept (true); extern long double __significandl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double copysignl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double nanl (const char *__tagb) noexcept (true); extern long double __nanl (const char *__tagb) noexcept (true); 193s 1515: # 267 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern int isnanl (long double __value) noexcept (true) 193s 1515: __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double j0l (long double) noexcept (true); extern long double __j0l (long double) noexcept (true); 193s 1515: extern long double j1l (long double) noexcept (true); extern long double __j1l (long double) noexcept (true); 193s 1515: extern long double jnl (int, long double) noexcept (true); extern long double __jnl (int, long double) noexcept (true); 193s 1515: extern long double y0l (long double) noexcept (true); extern long double __y0l (long double) noexcept (true); 193s 1515: extern long double y1l (long double) noexcept (true); extern long double __y1l (long double) noexcept (true); 193s 1515: extern long double ynl (int, long double) noexcept (true); extern long double __ynl (int, long double) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double erfl (long double) noexcept (true); extern long double __erfl (long double) noexcept (true); 193s 1515: extern long double erfcl (long double) noexcept (true); extern long double __erfcl (long double) noexcept (true); 193s 1515: extern long double lgammal (long double) noexcept (true); extern long double __lgammal (long double) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double tgammal (long double) noexcept (true); extern long double __tgammal (long double) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double gammal (long double) noexcept (true); extern long double __gammal (long double) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double lgammal_r (long double, int *__signgamp) noexcept (true); extern long double __lgammal_r (long double, int *__signgamp) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double rintl (long double __x) noexcept (true); extern long double __rintl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern long double nextafterl (long double __x, long double __y) noexcept (true); extern long double __nextafterl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: extern long double nexttowardl (long double __x, long double __y) noexcept (true); extern long double __nexttowardl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double nextdownl (long double __x) noexcept (true); extern long double __nextdownl (long double __x) noexcept (true); 193s 1515: 193s 1515: extern long double nextupl (long double __x) noexcept (true); extern long double __nextupl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double remainderl (long double __x, long double __y) noexcept (true); extern long double __remainderl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double scalbnl (long double __x, int __n) noexcept (true); extern long double __scalbnl (long double __x, int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ilogbl (long double __x) noexcept (true); extern int __ilogbl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int llogbl (long double __x) noexcept (true); extern long int __llogbl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double scalblnl (long double __x, long int __n) noexcept (true); extern long double __scalblnl (long double __x, long int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double nearbyintl (long double __x) noexcept (true); extern long double __nearbyintl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double roundl (long double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double truncl (long double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double remquol (long double __x, long double __y, int *__quo) noexcept (true); extern long double __remquol (long double __x, long double __y, int *__quo) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lrintl (long double __x) noexcept (true); extern long int __lrintl (long double __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llrintl (long double __x) noexcept (true); extern long long int __llrintl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lroundl (long double __x) noexcept (true); extern long int __lroundl (long double __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llroundl (long double __x) noexcept (true); extern long long int __llroundl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double fdiml (long double __x, long double __y) noexcept (true); extern long double __fdiml (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double fmaxl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fminl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double fmal (long double __x, long double __y, long double __z) noexcept (true); extern long double __fmal (long double __x, long double __y, long double __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double roundevenl (long double __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern int canonicalizel (long double *__cx, const long double *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double fmaxmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fminmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double fmaximuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fminimuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fmaximum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fminimum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fmaximum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fminimum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fmaximum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern long double fminimum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int totalorderl (const long double *__x, const long double *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern int totalordermagl (const long double *__x, const long double *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern long double getpayloadl (const long double *__x) noexcept (true); extern long double __getpayloadl (const long double *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadl (long double *__x, long double __payload) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadsigl (long double *__x, long double __payload) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long double scalbl (long double __x, long double __n) noexcept (true); extern long double __scalbl (long double __x, long double __n) noexcept (true); 193s 1515: # 369 "/usr/include/math.h" 2 3 4 193s 1515: # 419 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 193s 1515: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float32 acosf32 (_Float32 __x) noexcept (true); extern _Float32 __acosf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 asinf32 (_Float32 __x) noexcept (true); extern _Float32 __asinf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 atanf32 (_Float32 __x) noexcept (true); extern _Float32 __atanf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 cosf32 (_Float32 __x) noexcept (true); extern _Float32 __cosf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 sinf32 (_Float32 __x) noexcept (true); extern _Float32 __sinf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 tanf32 (_Float32 __x) noexcept (true); extern _Float32 __tanf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 acospif32 (_Float32 __x) noexcept (true); extern _Float32 __acospif32 (_Float32 __x) noexcept (true); 193s 1515: extern _Float32 acospif32 (_Float32 __x) noexcept (true); extern _Float32 __acospif32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 asinpif32 (_Float32 __x) noexcept (true); extern _Float32 __asinpif32 (_Float32 __x) noexcept (true); 193s 1515: extern _Float32 asinpif32 (_Float32 __x) noexcept (true); extern _Float32 __asinpif32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 atanpif32 (_Float32 __x) noexcept (true); extern _Float32 __atanpif32 (_Float32 __x) noexcept (true); 193s 1515: extern _Float32 atanpif32 (_Float32 __x) noexcept (true); extern _Float32 __atanpif32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 atan2pif32 (_Float32 __y, _Float32 __x) noexcept (true); extern _Float32 __atan2pif32 (_Float32 __y, _Float32 __x) noexcept (true); 193s 1515: extern _Float32 atan2pif32 (_Float32 __y, _Float32 __x) noexcept (true); extern _Float32 __atan2pif32 (_Float32 __y, _Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 cospif32 (_Float32 __x) noexcept (true); extern _Float32 __cospif32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 sinpif32 (_Float32 __x) noexcept (true); extern _Float32 __sinpif32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 tanpif32 (_Float32 __x) noexcept (true); extern _Float32 __tanpif32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 coshf32 (_Float32 __x) noexcept (true); extern _Float32 __coshf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 sinhf32 (_Float32 __x) noexcept (true); extern _Float32 __sinhf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 tanhf32 (_Float32 __x) noexcept (true); extern _Float32 __tanhf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 acoshf32 (_Float32 __x) noexcept (true); extern _Float32 __acoshf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 asinhf32 (_Float32 __x) noexcept (true); extern _Float32 __asinhf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 atanhf32 (_Float32 __x) noexcept (true); extern _Float32 __atanhf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 expf32 (_Float32 __x) noexcept (true); extern _Float32 __expf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 frexpf32 (_Float32 __x, int *__exponent) noexcept (true); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 ldexpf32 (_Float32 __x, int __exponent) noexcept (true); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 logf32 (_Float32 __x) noexcept (true); extern _Float32 __logf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 log10f32 (_Float32 __x) noexcept (true); extern _Float32 __log10f32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 exp10f32 (_Float32 __x) noexcept (true); extern _Float32 __exp10f32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 exp2m1f32 (_Float32 __x) noexcept (true); extern _Float32 __exp2m1f32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 exp10m1f32 (_Float32 __x) noexcept (true); extern _Float32 __exp10m1f32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 log2p1f32 (_Float32 __x) noexcept (true); extern _Float32 __log2p1f32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 log10p1f32 (_Float32 __x) noexcept (true); extern _Float32 __log10p1f32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 logp1f32 (_Float32 __x) noexcept (true); extern _Float32 __logp1f32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 expm1f32 (_Float32 __x) noexcept (true); extern _Float32 __expm1f32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 log1pf32 (_Float32 __x) noexcept (true); extern _Float32 __log1pf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 logbf32 (_Float32 __x) noexcept (true); extern _Float32 __logbf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 exp2f32 (_Float32 __x) noexcept (true); extern _Float32 __exp2f32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 log2f32 (_Float32 __x) noexcept (true); extern _Float32 __log2f32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 powf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 sqrtf32 (_Float32 __x) noexcept (true); extern _Float32 __sqrtf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 cbrtf32 (_Float32 __x) noexcept (true); extern _Float32 __cbrtf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 compoundnf32 (_Float32 __x, long long int __y) noexcept (true); extern _Float32 __compoundnf32 (_Float32 __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 pownf32 (_Float32 __x, long long int __y) noexcept (true); extern _Float32 __pownf32 (_Float32 __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 powrf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __powrf32 (_Float32 __x, _Float32 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 rootnf32 (_Float32 __x, long long int __y) noexcept (true); extern _Float32 __rootnf32 (_Float32 __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 rsqrtf32 (_Float32 __x) noexcept (true); extern _Float32 __rsqrtf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 ceilf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fabsf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 floorf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); 193s 1515: # 252 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 nanf32 (const char *__tagb) noexcept (true); extern _Float32 __nanf32 (const char *__tagb) noexcept (true); 193s 1515: # 274 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float32 j0f32 (_Float32) noexcept (true); extern _Float32 __j0f32 (_Float32) noexcept (true); 193s 1515: extern _Float32 j1f32 (_Float32) noexcept (true); extern _Float32 __j1f32 (_Float32) noexcept (true); 193s 1515: extern _Float32 jnf32 (int, _Float32) noexcept (true); extern _Float32 __jnf32 (int, _Float32) noexcept (true); 193s 1515: extern _Float32 y0f32 (_Float32) noexcept (true); extern _Float32 __y0f32 (_Float32) noexcept (true); 193s 1515: extern _Float32 y1f32 (_Float32) noexcept (true); extern _Float32 __y1f32 (_Float32) noexcept (true); 193s 1515: extern _Float32 ynf32 (int, _Float32) noexcept (true); extern _Float32 __ynf32 (int, _Float32) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 erff32 (_Float32) noexcept (true); extern _Float32 __erff32 (_Float32) noexcept (true); 193s 1515: extern _Float32 erfcf32 (_Float32) noexcept (true); extern _Float32 __erfcf32 (_Float32) noexcept (true); 193s 1515: extern _Float32 lgammaf32 (_Float32) noexcept (true); extern _Float32 __lgammaf32 (_Float32) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 tgammaf32 (_Float32) noexcept (true); extern _Float32 __tgammaf32 (_Float32) noexcept (true); 193s 1515: # 306 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float32 lgammaf32_r (_Float32, int *__signgamp) noexcept (true); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 rintf32 (_Float32 __x) noexcept (true); extern _Float32 __rintf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 nextdownf32 (_Float32 __x) noexcept (true); extern _Float32 __nextdownf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32 nextupf32 (_Float32 __x) noexcept (true); extern _Float32 __nextupf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 scalbnf32 (_Float32 __x, int __n) noexcept (true); extern _Float32 __scalbnf32 (_Float32 __x, int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ilogbf32 (_Float32 __x) noexcept (true); extern int __ilogbf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int llogbf32 (_Float32 __x) noexcept (true); extern long int __llogbf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 scalblnf32 (_Float32 __x, long int __n) noexcept (true); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 nearbyintf32 (_Float32 __x) noexcept (true); extern _Float32 __nearbyintf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 roundf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 truncf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lrintf32 (_Float32 __x) noexcept (true); extern long int __lrintf32 (_Float32 __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llrintf32 (_Float32 __x) noexcept (true); extern long long int __llrintf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lroundf32 (_Float32 __x) noexcept (true); extern long int __lroundf32 (_Float32 __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llroundf32 (_Float32 __x) noexcept (true); extern long long int __llroundf32 (_Float32 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fminf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 roundevenf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32 fmaximumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fminimumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fmaximum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fminimum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fmaximum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fminimum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 fminimum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int totalorderf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern int totalordermagf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32 getpayloadf32 (const _Float32 *__x) noexcept (true); extern _Float32 __getpayloadf32 (const _Float32 *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) noexcept (true); 193s 1515: # 420 "/usr/include/math.h" 2 3 4 193s 1515: # 436 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 193s 1515: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float64 acosf64 (_Float64 __x) noexcept (true); extern _Float64 __acosf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 asinf64 (_Float64 __x) noexcept (true); extern _Float64 __asinf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 atanf64 (_Float64 __x) noexcept (true); extern _Float64 __atanf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 cosf64 (_Float64 __x) noexcept (true); extern _Float64 __cosf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 sinf64 (_Float64 __x) noexcept (true); extern _Float64 __sinf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 tanf64 (_Float64 __x) noexcept (true); extern _Float64 __tanf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 acospif64 (_Float64 __x) noexcept (true); extern _Float64 __acospif64 (_Float64 __x) noexcept (true); 193s 1515: extern _Float64 acospif64 (_Float64 __x) noexcept (true); extern _Float64 __acospif64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 asinpif64 (_Float64 __x) noexcept (true); extern _Float64 __asinpif64 (_Float64 __x) noexcept (true); 193s 1515: extern _Float64 asinpif64 (_Float64 __x) noexcept (true); extern _Float64 __asinpif64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 atanpif64 (_Float64 __x) noexcept (true); extern _Float64 __atanpif64 (_Float64 __x) noexcept (true); 193s 1515: extern _Float64 atanpif64 (_Float64 __x) noexcept (true); extern _Float64 __atanpif64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 atan2pif64 (_Float64 __y, _Float64 __x) noexcept (true); extern _Float64 __atan2pif64 (_Float64 __y, _Float64 __x) noexcept (true); 193s 1515: extern _Float64 atan2pif64 (_Float64 __y, _Float64 __x) noexcept (true); extern _Float64 __atan2pif64 (_Float64 __y, _Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 cospif64 (_Float64 __x) noexcept (true); extern _Float64 __cospif64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 sinpif64 (_Float64 __x) noexcept (true); extern _Float64 __sinpif64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 tanpif64 (_Float64 __x) noexcept (true); extern _Float64 __tanpif64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 coshf64 (_Float64 __x) noexcept (true); extern _Float64 __coshf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 sinhf64 (_Float64 __x) noexcept (true); extern _Float64 __sinhf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 tanhf64 (_Float64 __x) noexcept (true); extern _Float64 __tanhf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 acoshf64 (_Float64 __x) noexcept (true); extern _Float64 __acoshf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 asinhf64 (_Float64 __x) noexcept (true); extern _Float64 __asinhf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 atanhf64 (_Float64 __x) noexcept (true); extern _Float64 __atanhf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 expf64 (_Float64 __x) noexcept (true); extern _Float64 __expf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 frexpf64 (_Float64 __x, int *__exponent) noexcept (true); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 ldexpf64 (_Float64 __x, int __exponent) noexcept (true); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 logf64 (_Float64 __x) noexcept (true); extern _Float64 __logf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 log10f64 (_Float64 __x) noexcept (true); extern _Float64 __log10f64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 exp10f64 (_Float64 __x) noexcept (true); extern _Float64 __exp10f64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 exp2m1f64 (_Float64 __x) noexcept (true); extern _Float64 __exp2m1f64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 exp10m1f64 (_Float64 __x) noexcept (true); extern _Float64 __exp10m1f64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 log2p1f64 (_Float64 __x) noexcept (true); extern _Float64 __log2p1f64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 log10p1f64 (_Float64 __x) noexcept (true); extern _Float64 __log10p1f64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 logp1f64 (_Float64 __x) noexcept (true); extern _Float64 __logp1f64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 expm1f64 (_Float64 __x) noexcept (true); extern _Float64 __expm1f64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 log1pf64 (_Float64 __x) noexcept (true); extern _Float64 __log1pf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 logbf64 (_Float64 __x) noexcept (true); extern _Float64 __logbf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 exp2f64 (_Float64 __x) noexcept (true); extern _Float64 __exp2f64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 log2f64 (_Float64 __x) noexcept (true); extern _Float64 __log2f64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 powf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 sqrtf64 (_Float64 __x) noexcept (true); extern _Float64 __sqrtf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 cbrtf64 (_Float64 __x) noexcept (true); extern _Float64 __cbrtf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 compoundnf64 (_Float64 __x, long long int __y) noexcept (true); extern _Float64 __compoundnf64 (_Float64 __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 pownf64 (_Float64 __x, long long int __y) noexcept (true); extern _Float64 __pownf64 (_Float64 __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 powrf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __powrf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 rootnf64 (_Float64 __x, long long int __y) noexcept (true); extern _Float64 __rootnf64 (_Float64 __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 rsqrtf64 (_Float64 __x) noexcept (true); extern _Float64 __rsqrtf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 ceilf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fabsf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 floorf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: # 252 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 nanf64 (const char *__tagb) noexcept (true); extern _Float64 __nanf64 (const char *__tagb) noexcept (true); 193s 1515: # 274 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float64 j0f64 (_Float64) noexcept (true); extern _Float64 __j0f64 (_Float64) noexcept (true); 193s 1515: extern _Float64 j1f64 (_Float64) noexcept (true); extern _Float64 __j1f64 (_Float64) noexcept (true); 193s 1515: extern _Float64 jnf64 (int, _Float64) noexcept (true); extern _Float64 __jnf64 (int, _Float64) noexcept (true); 193s 1515: extern _Float64 y0f64 (_Float64) noexcept (true); extern _Float64 __y0f64 (_Float64) noexcept (true); 193s 1515: extern _Float64 y1f64 (_Float64) noexcept (true); extern _Float64 __y1f64 (_Float64) noexcept (true); 193s 1515: extern _Float64 ynf64 (int, _Float64) noexcept (true); extern _Float64 __ynf64 (int, _Float64) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 erff64 (_Float64) noexcept (true); extern _Float64 __erff64 (_Float64) noexcept (true); 193s 1515: extern _Float64 erfcf64 (_Float64) noexcept (true); extern _Float64 __erfcf64 (_Float64) noexcept (true); 193s 1515: extern _Float64 lgammaf64 (_Float64) noexcept (true); extern _Float64 __lgammaf64 (_Float64) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 tgammaf64 (_Float64) noexcept (true); extern _Float64 __tgammaf64 (_Float64) noexcept (true); 193s 1515: # 306 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float64 lgammaf64_r (_Float64, int *__signgamp) noexcept (true); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 rintf64 (_Float64 __x) noexcept (true); extern _Float64 __rintf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 nextdownf64 (_Float64 __x) noexcept (true); extern _Float64 __nextdownf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: extern _Float64 nextupf64 (_Float64 __x) noexcept (true); extern _Float64 __nextupf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 scalbnf64 (_Float64 __x, int __n) noexcept (true); extern _Float64 __scalbnf64 (_Float64 __x, int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ilogbf64 (_Float64 __x) noexcept (true); extern int __ilogbf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int llogbf64 (_Float64 __x) noexcept (true); extern long int __llogbf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 scalblnf64 (_Float64 __x, long int __n) noexcept (true); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 nearbyintf64 (_Float64 __x) noexcept (true); extern _Float64 __nearbyintf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 roundf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 truncf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lrintf64 (_Float64 __x) noexcept (true); extern long int __lrintf64 (_Float64 __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llrintf64 (_Float64 __x) noexcept (true); extern long long int __llrintf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lroundf64 (_Float64 __x) noexcept (true); extern long int __lroundf64 (_Float64 __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llroundf64 (_Float64 __x) noexcept (true); extern long long int __llroundf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fminf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 roundevenf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 fmaximumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fminimumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fmaximum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fminimum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fmaximum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fminimum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 fminimum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int totalorderf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern int totalordermagf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern _Float64 getpayloadf64 (const _Float64 *__x) noexcept (true); extern _Float64 __getpayloadf64 (const _Float64 *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) noexcept (true); 193s 1515: # 437 "/usr/include/math.h" 2 3 4 193s 1515: # 470 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 193s 1515: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float32x acosf32x (_Float32x __x) noexcept (true); extern _Float32x __acosf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x asinf32x (_Float32x __x) noexcept (true); extern _Float32x __asinf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x atanf32x (_Float32x __x) noexcept (true); extern _Float32x __atanf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x cosf32x (_Float32x __x) noexcept (true); extern _Float32x __cosf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x sinf32x (_Float32x __x) noexcept (true); extern _Float32x __sinf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x tanf32x (_Float32x __x) noexcept (true); extern _Float32x __tanf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x acospif32x (_Float32x __x) noexcept (true); extern _Float32x __acospif32x (_Float32x __x) noexcept (true); 193s 1515: extern _Float32x acospif32x (_Float32x __x) noexcept (true); extern _Float32x __acospif32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x asinpif32x (_Float32x __x) noexcept (true); extern _Float32x __asinpif32x (_Float32x __x) noexcept (true); 193s 1515: extern _Float32x asinpif32x (_Float32x __x) noexcept (true); extern _Float32x __asinpif32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x atanpif32x (_Float32x __x) noexcept (true); extern _Float32x __atanpif32x (_Float32x __x) noexcept (true); 193s 1515: extern _Float32x atanpif32x (_Float32x __x) noexcept (true); extern _Float32x __atanpif32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x atan2pif32x (_Float32x __y, _Float32x __x) noexcept (true); extern _Float32x __atan2pif32x (_Float32x __y, _Float32x __x) noexcept (true); 193s 1515: extern _Float32x atan2pif32x (_Float32x __y, _Float32x __x) noexcept (true); extern _Float32x __atan2pif32x (_Float32x __y, _Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x cospif32x (_Float32x __x) noexcept (true); extern _Float32x __cospif32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x sinpif32x (_Float32x __x) noexcept (true); extern _Float32x __sinpif32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x tanpif32x (_Float32x __x) noexcept (true); extern _Float32x __tanpif32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x coshf32x (_Float32x __x) noexcept (true); extern _Float32x __coshf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x sinhf32x (_Float32x __x) noexcept (true); extern _Float32x __sinhf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x tanhf32x (_Float32x __x) noexcept (true); extern _Float32x __tanhf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x acoshf32x (_Float32x __x) noexcept (true); extern _Float32x __acoshf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x asinhf32x (_Float32x __x) noexcept (true); extern _Float32x __asinhf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x atanhf32x (_Float32x __x) noexcept (true); extern _Float32x __atanhf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x expf32x (_Float32x __x) noexcept (true); extern _Float32x __expf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x frexpf32x (_Float32x __x, int *__exponent) noexcept (true); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x ldexpf32x (_Float32x __x, int __exponent) noexcept (true); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x logf32x (_Float32x __x) noexcept (true); extern _Float32x __logf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x log10f32x (_Float32x __x) noexcept (true); extern _Float32x __log10f32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x exp10f32x (_Float32x __x) noexcept (true); extern _Float32x __exp10f32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x exp2m1f32x (_Float32x __x) noexcept (true); extern _Float32x __exp2m1f32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x exp10m1f32x (_Float32x __x) noexcept (true); extern _Float32x __exp10m1f32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x log2p1f32x (_Float32x __x) noexcept (true); extern _Float32x __log2p1f32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x log10p1f32x (_Float32x __x) noexcept (true); extern _Float32x __log10p1f32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x logp1f32x (_Float32x __x) noexcept (true); extern _Float32x __logp1f32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x expm1f32x (_Float32x __x) noexcept (true); extern _Float32x __expm1f32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x log1pf32x (_Float32x __x) noexcept (true); extern _Float32x __log1pf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x logbf32x (_Float32x __x) noexcept (true); extern _Float32x __logbf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x exp2f32x (_Float32x __x) noexcept (true); extern _Float32x __exp2f32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x log2f32x (_Float32x __x) noexcept (true); extern _Float32x __log2f32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x powf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x sqrtf32x (_Float32x __x) noexcept (true); extern _Float32x __sqrtf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x cbrtf32x (_Float32x __x) noexcept (true); extern _Float32x __cbrtf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x compoundnf32x (_Float32x __x, long long int __y) noexcept (true); extern _Float32x __compoundnf32x (_Float32x __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x pownf32x (_Float32x __x, long long int __y) noexcept (true); extern _Float32x __pownf32x (_Float32x __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x powrf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __powrf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x rootnf32x (_Float32x __x, long long int __y) noexcept (true); extern _Float32x __rootnf32x (_Float32x __x, long long int __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x rsqrtf32x (_Float32x __x) noexcept (true); extern _Float32x __rsqrtf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x ceilf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fabsf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x floorf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: # 252 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x nanf32x (const char *__tagb) noexcept (true); extern _Float32x __nanf32x (const char *__tagb) noexcept (true); 193s 1515: # 274 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float32x j0f32x (_Float32x) noexcept (true); extern _Float32x __j0f32x (_Float32x) noexcept (true); 193s 1515: extern _Float32x j1f32x (_Float32x) noexcept (true); extern _Float32x __j1f32x (_Float32x) noexcept (true); 193s 1515: extern _Float32x jnf32x (int, _Float32x) noexcept (true); extern _Float32x __jnf32x (int, _Float32x) noexcept (true); 193s 1515: extern _Float32x y0f32x (_Float32x) noexcept (true); extern _Float32x __y0f32x (_Float32x) noexcept (true); 193s 1515: extern _Float32x y1f32x (_Float32x) noexcept (true); extern _Float32x __y1f32x (_Float32x) noexcept (true); 193s 1515: extern _Float32x ynf32x (int, _Float32x) noexcept (true); extern _Float32x __ynf32x (int, _Float32x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x erff32x (_Float32x) noexcept (true); extern _Float32x __erff32x (_Float32x) noexcept (true); 193s 1515: extern _Float32x erfcf32x (_Float32x) noexcept (true); extern _Float32x __erfcf32x (_Float32x) noexcept (true); 193s 1515: extern _Float32x lgammaf32x (_Float32x) noexcept (true); extern _Float32x __lgammaf32x (_Float32x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x tgammaf32x (_Float32x) noexcept (true); extern _Float32x __tgammaf32x (_Float32x) noexcept (true); 193s 1515: # 306 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 193s 1515: extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x rintf32x (_Float32x __x) noexcept (true); extern _Float32x __rintf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x nextdownf32x (_Float32x __x) noexcept (true); extern _Float32x __nextdownf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: extern _Float32x nextupf32x (_Float32x __x) noexcept (true); extern _Float32x __nextupf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x scalbnf32x (_Float32x __x, int __n) noexcept (true); extern _Float32x __scalbnf32x (_Float32x __x, int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ilogbf32x (_Float32x __x) noexcept (true); extern int __ilogbf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int llogbf32x (_Float32x __x) noexcept (true); extern long int __llogbf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x scalblnf32x (_Float32x __x, long int __n) noexcept (true); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x nearbyintf32x (_Float32x __x) noexcept (true); extern _Float32x __nearbyintf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x roundf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x truncf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lrintf32x (_Float32x __x) noexcept (true); extern long int __lrintf32x (_Float32x __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llrintf32x (_Float32x __x) noexcept (true); extern long long int __llrintf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int lroundf32x (_Float32x __x) noexcept (true); extern long int __lroundf32x (_Float32x __x) noexcept (true); 193s 1515: __extension__ 193s 1515: extern long long int llroundf32x (_Float32x __x) noexcept (true); extern long long int __llroundf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fminf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x roundevenf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float32x fmaximumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fminimumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fmaximum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fminimum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fmaximum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fminimum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x fminimum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int totalorderf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern int totalordermagf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern _Float32x getpayloadf32x (const _Float32x *__x) noexcept (true); extern _Float32x __getpayloadf32x (const _Float32x *__x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) noexcept (true); 193s 1515: # 471 "/usr/include/math.h" 2 3 4 193s 1515: # 535 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 193s 1515: extern float fadd (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float fdiv (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float ffma (double __x, double __y, double __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float fmul (double __x, double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float fsqrt (double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float fsub (double __x, double __y) noexcept (true); 193s 1515: # 536 "/usr/include/math.h" 2 3 4 193s 1515: # 556 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 193s 1515: extern float faddl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float fdivl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float ffmal (long double __x, long double __y, long double __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float fmull (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float fsqrtl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern float fsubl (long double __x, long double __y) noexcept (true); 193s 1515: # 557 "/usr/include/math.h" 2 3 4 193s 1515: # 585 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 193s 1515: extern double daddl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double ddivl (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double dfmal (long double __x, long double __y, long double __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double dmull (long double __x, long double __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double dsqrtl (long double __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern double dsubl (long double __x, long double __y) noexcept (true); 193s 1515: # 586 "/usr/include/math.h" 2 3 4 193s 1515: # 666 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 193s 1515: extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 f32fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 f32sqrtf32x (_Float32x __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) noexcept (true); 193s 1515: # 667 "/usr/include/math.h" 2 3 4 193s 1515: # 676 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 193s 1515: extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 f32fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 f32sqrtf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: # 677 "/usr/include/math.h" 2 3 4 193s 1515: # 716 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 193s 1515: extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x f32xfmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x f32xsqrtf64 (_Float64 __x) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) noexcept (true); 193s 1515: # 717 "/usr/include/math.h" 2 3 4 193s 1515: # 823 "/usr/include/math.h" 3 4 193s 1515: extern int signgam; 193s 1515: # 903 "/usr/include/math.h" 3 4 193s 1515: enum 193s 1515: { 193s 1515: FP_NAN = 193s 1515: 193s 1515: 0, 193s 1515: FP_INFINITE = 193s 1515: 193s 1515: 1, 193s 1515: FP_ZERO = 193s 1515: 193s 1515: 2, 193s 1515: FP_SUBNORMAL = 193s 1515: 193s 1515: 3, 193s 1515: FP_NORMAL = 193s 1515: 193s 1515: 4 193s 1515: }; 193s 1515: # 1024 "/usr/include/math.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/iscanonical.h" 1 3 4 193s 1515: # 1025 "/usr/include/math.h" 2 3 4 193s 1515: # 1036 "/usr/include/math.h" 3 4 193s 1515: extern "C++" { 193s 1515: inline int issignaling (float __val) { return __issignalingf (__val); } 193s 1515: inline int issignaling (double __val) { return __issignaling (__val); } 193s 1515: inline int 193s 1515: issignaling (long double __val) 193s 1515: { 193s 1515: 193s 1515: return __issignaling (__val); 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 1067 "/usr/include/math.h" 3 4 193s 1515: extern "C++" { 193s 1515: # 1098 "/usr/include/math.h" 3 4 193s 1515: template inline bool 193s 1515: iszero (__T __val) 193s 1515: { 193s 1515: return __val == 0; 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: # 1333 "/usr/include/math.h" 3 4 193s 1515: extern "C++" { 193s 1515: template struct __iseqsig_type; 193s 1515: 193s 1515: template<> struct __iseqsig_type 193s 1515: { 193s 1515: static int __call (float __x, float __y) throw () 193s 1515: { 193s 1515: return __iseqsigf (__x, __y); 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: template<> struct __iseqsig_type 193s 1515: { 193s 1515: static int __call (double __x, double __y) throw () 193s 1515: { 193s 1515: return __iseqsig (__x, __y); 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: template<> struct __iseqsig_type 193s 1515: { 193s 1515: static int __call (long double __x, long double __y) throw () 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: return __iseqsig (__x, __y); 193s 1515: 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> struct __iseqsig_type<_Float32> 193s 1515: { 193s 1515: static int __call (_Float32 __x, _Float32 __y) throw () 193s 1515: { 193s 1515: return __iseqsigf (__x, __y); 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> struct __iseqsig_type<_Float64> 193s 1515: { 193s 1515: static int __call (_Float64 __x, _Float64 __y) throw () 193s 1515: { 193s 1515: return __iseqsig (__x, __y); 193s 1515: } 193s 1515: }; 193s 1515: # 1401 "/usr/include/math.h" 3 4 193s 1515: template<> struct __iseqsig_type<_Float32x> 193s 1515: { 193s 1515: static int __call (_Float32x __x, _Float32x __y) throw () 193s 1515: { 193s 1515: return __iseqsig (__x, __y); 193s 1515: } 193s 1515: }; 193s 1515: # 1424 "/usr/include/math.h" 3 4 193s 1515: template 193s 1515: inline int 193s 1515: iseqsig (_T1 __x, _T2 __y) throw () 193s 1515: { 193s 1515: 193s 1515: typedef decltype (((__x) + (__y) + 0.0f)) _T3; 193s 1515: 193s 1515: 193s 1515: 193s 1515: return __iseqsig_type<_T3>::__call (__x, __y); 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 56 "/usr/include/c++/15/cmath" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 57 "/usr/include/c++/15/cmath" 3 4 193s 1515: #pragma GCC diagnostic pop 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/bits/std_abs.h" 1 3 4 193s 1515: # 39 "/usr/include/c++/15/bits/std_abs.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wpedantic" 193s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/stdlib.h" 1 3 4 193s 1515: # 26 "/usr/include/stdlib.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 193s 1515: # 27 "/usr/include/stdlib.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 33 "/usr/include/stdlib.h" 2 3 4 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitflags.h" 1 3 4 193s 1515: # 41 "/usr/include/stdlib.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitstatus.h" 1 3 4 193s 1515: # 42 "/usr/include/stdlib.h" 2 3 4 193s 1515: # 56 "/usr/include/stdlib.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 193s 1515: # 57 "/usr/include/stdlib.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: typedef struct 193s 1515: { 193s 1515: int quot; 193s 1515: int rem; 193s 1515: } div_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef struct 193s 1515: { 193s 1515: long int quot; 193s 1515: long int rem; 193s 1515: } ldiv_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ typedef struct 193s 1515: { 193s 1515: long long int quot; 193s 1515: long long int rem; 193s 1515: } lldiv_t; 193s 1515: # 98 "/usr/include/stdlib.h" 3 4 193s 1515: extern size_t __ctype_get_mb_cur_max (void) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double atof (const char *__nptr) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: extern int atoi (const char *__nptr) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: extern long int atol (const char *__nptr) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ extern long long int atoll (const char *__nptr) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double strtod (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float strtof (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: extern long double strtold (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 141 "/usr/include/stdlib.h" 3 4 193s 1515: extern _Float32 strtof32 (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 strtof64 (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 159 "/usr/include/stdlib.h" 3 4 193s 1515: extern _Float32x strtof32x (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 177 "/usr/include/stdlib.h" 3 4 193s 1515: extern long int strtol (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, int __base) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: extern unsigned long int strtoul (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, int __base) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ 193s 1515: extern long long int strtoq (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, int __base) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: __extension__ 193s 1515: extern unsigned long long int strtouq (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, int __base) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ 193s 1515: extern long long int strtoll (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, int __base) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: __extension__ 193s 1515: extern unsigned long long int strtoull (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, int __base) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtol") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: extern unsigned long int strtoul (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoul") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: __extension__ 193s 1515: extern long long int strtoq (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoll") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: __extension__ 193s 1515: extern unsigned long long int strtouq (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoull") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: __extension__ 193s 1515: extern long long int strtoll (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoll") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: __extension__ 193s 1515: extern unsigned long long int strtoull (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoull") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: # 278 "/usr/include/stdlib.h" 3 4 193s 1515: extern int strfromd (char *__dest, size_t __size, const char *__format, 193s 1515: double __f) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))); 193s 1515: 193s 1515: extern int strfromf (char *__dest, size_t __size, const char *__format, 193s 1515: float __f) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))); 193s 1515: 193s 1515: extern int strfroml (char *__dest, size_t __size, const char *__format, 193s 1515: long double __f) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))); 193s 1515: # 298 "/usr/include/stdlib.h" 3 4 193s 1515: extern int strfromf32 (char *__dest, size_t __size, const char * __format, 193s 1515: _Float32 __f) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int strfromf64 (char *__dest, size_t __size, const char * __format, 193s 1515: _Float64 __f) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))); 193s 1515: # 316 "/usr/include/stdlib.h" 3 4 193s 1515: extern int strfromf32x (char *__dest, size_t __size, const char * __format, 193s 1515: _Float32x __f) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))); 193s 1515: # 340 "/usr/include/stdlib.h" 3 4 193s 1515: extern long int strtol_l (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, int __base, 193s 1515: locale_t __loc) noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 193s 1515: 193s 1515: extern unsigned long int strtoul_l (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, 193s 1515: int __base, locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 193s 1515: 193s 1515: __extension__ 193s 1515: extern long long int strtoll_l (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, int __base, 193s 1515: locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 193s 1515: 193s 1515: __extension__ 193s 1515: extern unsigned long long int strtoull_l (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, 193s 1515: int __base, locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int strtol_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtol_l") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 4))); 193s 1515: extern unsigned long int strtoul_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoul_l") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 4))); 193s 1515: __extension__ 193s 1515: extern long long int strtoll_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoll_l") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 4))); 193s 1515: __extension__ 193s 1515: extern unsigned long long int strtoull_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoull_l") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 4))); 193s 1515: # 415 "/usr/include/stdlib.h" 3 4 193s 1515: extern double strtod_l (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 193s 1515: 193s 1515: extern float strtof_l (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 193s 1515: 193s 1515: extern long double strtold_l (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, 193s 1515: locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 193s 1515: # 436 "/usr/include/stdlib.h" 3 4 193s 1515: extern _Float32 strtof32_l (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, 193s 1515: locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 strtof64_l (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, 193s 1515: locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 193s 1515: # 457 "/usr/include/stdlib.h" 3 4 193s 1515: extern _Float32x strtof32x_l (const char *__restrict __nptr, 193s 1515: char **__restrict __endptr, 193s 1515: locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 193s 1515: # 480 "/usr/include/stdlib.h" 3 4 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: __attribute__ ((__leaf__)) atoi (const char *__nptr) noexcept (true) 193s 1515: { 193s 1515: return (int) strtol (__nptr, (char **) __null, 10); 193s 1515: } 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) long int 193s 1515: __attribute__ ((__leaf__)) atol (const char *__nptr) noexcept (true) 193s 1515: { 193s 1515: return strtol (__nptr, (char **) __null, 10); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int 193s 1515: __attribute__ ((__leaf__)) atoll (const char *__nptr) noexcept (true) 193s 1515: { 193s 1515: return strtoll (__nptr, (char **) __null, 10); 193s 1515: } 193s 1515: # 505 "/usr/include/stdlib.h" 3 4 193s 1515: extern char *l64a (long int __n) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: extern long int a64l (const char *__s) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/sys/types.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __u_char u_char; 193s 1515: typedef __u_short u_short; 193s 1515: typedef __u_int u_int; 193s 1515: typedef __u_long u_long; 193s 1515: typedef __quad_t quad_t; 193s 1515: typedef __u_quad_t u_quad_t; 193s 1515: typedef __fsid_t fsid_t; 193s 1515: 193s 1515: 193s 1515: typedef __loff_t loff_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __ino64_t ino_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __ino64_t ino64_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __dev_t dev_t; 193s 1515: # 69 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 193s 1515: typedef __mode_t mode_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __nlink_t nlink_t; 193s 1515: # 103 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 193s 1515: typedef __id_t id_t; 193s 1515: # 114 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 193s 1515: typedef __daddr_t daddr_t; 193s 1515: typedef __caddr_t caddr_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __key_t key_t; 193s 1515: # 138 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 193s 1515: typedef __suseconds_t suseconds_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 145 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef unsigned long int ulong; 193s 1515: typedef unsigned short int ushort; 193s 1515: typedef unsigned int uint; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 3 4 193s 1515: typedef __int8_t int8_t; 193s 1515: typedef __int16_t int16_t; 193s 1515: typedef __int32_t int32_t; 193s 1515: typedef __int64_t int64_t; 193s 1515: # 156 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: typedef __uint8_t u_int8_t; 193s 1515: typedef __uint16_t u_int16_t; 193s 1515: typedef __uint32_t u_int32_t; 193s 1515: typedef __uint64_t u_int64_t; 193s 1515: 193s 1515: 193s 1515: typedef int register_t __attribute__ ((__mode__ (__word__))); 193s 1515: # 176 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 193s 1515: # 1 "/usr/include/endian.h" 1 3 4 193s 1515: # 35 "/usr/include/endian.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 1 3 4 193s 1515: # 33 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 193s 1515: static __inline __uint16_t 193s 1515: __bswap_16 (__uint16_t __bsx) 193s 1515: { 193s 1515: 193s 1515: return __builtin_bswap16 (__bsx); 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static __inline __uint32_t 193s 1515: __bswap_32 (__uint32_t __bsx) 193s 1515: { 193s 1515: 193s 1515: return __builtin_bswap32 (__bsx); 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 69 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 193s 1515: __extension__ static __inline __uint64_t 193s 1515: __bswap_64 (__uint64_t __bsx) 193s 1515: { 193s 1515: 193s 1515: return __builtin_bswap64 (__bsx); 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 36 "/usr/include/endian.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 1 3 4 193s 1515: # 32 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 3 4 193s 1515: static __inline __uint16_t 193s 1515: __uint16_identity (__uint16_t __x) 193s 1515: { 193s 1515: return __x; 193s 1515: } 193s 1515: 193s 1515: static __inline __uint32_t 193s 1515: __uint32_identity (__uint32_t __x) 193s 1515: { 193s 1515: return __x; 193s 1515: } 193s 1515: 193s 1515: static __inline __uint64_t 193s 1515: __uint64_identity (__uint64_t __x) 193s 1515: { 193s 1515: return __x; 193s 1515: } 193s 1515: # 37 "/usr/include/endian.h" 2 3 4 193s 1515: # 177 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/sys/select.h" 1 3 4 193s 1515: # 30 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/select.h" 1 3 4 193s 1515: # 31 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 193s 1515: # 49 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 193s 1515: typedef long int __fd_mask; 193s 1515: # 59 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 193s 1515: typedef struct 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } fd_set; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __fd_mask fd_mask; 193s 1515: # 91 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 193s 1515: extern "C" { 193s 1515: # 108 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 193s 1515: extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout) __asm__ ("" "__select64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: # 134 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 193s 1515: extern int pselect (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, const struct timespec *__restrict __timeout, const __sigset_t *__restrict __sigmask) __asm__ ("" "__pselect64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: # 150 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/select-decl.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/select-decl.h" 3 4 193s 1515: extern long int __fdelt_chk (long int __d); 193s 1515: extern long int __fdelt_warn (long int __d) 193s 1515: __attribute__((__warning__ ("bit outside of fd_set selected"))); 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 2 3 4 193s 1515: # 151 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 180 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __blksize_t blksize_t; 193s 1515: # 205 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 193s 1515: typedef __blkcnt64_t blkcnt_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __fsblkcnt64_t fsblkcnt_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __fsfilcnt64_t fsfilcnt_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __blkcnt64_t blkcnt64_t; 193s 1515: typedef __fsblkcnt64_t fsblkcnt64_t; 193s 1515: typedef __fsfilcnt64_t fsfilcnt64_t; 193s 1515: # 230 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 193s 1515: } 193s 1515: # 515 "/usr/include/stdlib.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int random (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern void srandom (unsigned int __seed) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *initstate (unsigned int __seed, char *__statebuf, 193s 1515: size_t __statelen) noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *setstate (char *__statebuf) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct random_data 193s 1515: { 193s 1515: int32_t *fptr; 193s 1515: int32_t *rptr; 193s 1515: int32_t *state; 193s 1515: int rand_type; 193s 1515: int rand_deg; 193s 1515: int rand_sep; 193s 1515: int32_t *end_ptr; 193s 1515: }; 193s 1515: 193s 1515: extern int random_r (struct random_data *__restrict __buf, 193s 1515: int32_t *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: extern int srandom_r (unsigned int __seed, struct random_data *__buf) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, 193s 1515: size_t __statelen, 193s 1515: struct random_data *__restrict __buf) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2, 4))); 193s 1515: 193s 1515: extern int setstate_r (char *__restrict __statebuf, 193s 1515: struct random_data *__restrict __buf) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int rand (void) noexcept (true); 193s 1515: 193s 1515: extern void srand (unsigned int __seed) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int rand_r (unsigned int *__seed) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double drand48 (void) noexcept (true); 193s 1515: extern double erand48 (unsigned short int __xsubi[3]) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern long int lrand48 (void) noexcept (true); 193s 1515: extern long int nrand48 (unsigned short int __xsubi[3]) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern long int mrand48 (void) noexcept (true); 193s 1515: extern long int jrand48 (unsigned short int __xsubi[3]) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern void srand48 (long int __seedval) noexcept (true); 193s 1515: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: extern void lcong48 (unsigned short int __param[7]) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct drand48_data 193s 1515: { 193s 1515: unsigned short int __x[3]; 193s 1515: unsigned short int __old_x[3]; 193s 1515: unsigned short int __c; 193s 1515: unsigned short int __init; 193s 1515: __extension__ unsigned long long int __a; 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: extern int drand48_r (struct drand48_data *__restrict __buffer, 193s 1515: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: extern int erand48_r (unsigned short int __xsubi[3], 193s 1515: struct drand48_data *__restrict __buffer, 193s 1515: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int lrand48_r (struct drand48_data *__restrict __buffer, 193s 1515: long int *__restrict __result) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: extern int nrand48_r (unsigned short int __xsubi[3], 193s 1515: struct drand48_data *__restrict __buffer, 193s 1515: long int *__restrict __result) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int mrand48_r (struct drand48_data *__restrict __buffer, 193s 1515: long int *__restrict __result) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: extern int jrand48_r (unsigned short int __xsubi[3], 193s 1515: struct drand48_data *__restrict __buffer, 193s 1515: long int *__restrict __result) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: extern int seed48_r (unsigned short int __seed16v[3], 193s 1515: struct drand48_data *__buffer) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: extern int lcong48_r (unsigned short int __param[7], 193s 1515: struct drand48_data *__buffer) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern __uint32_t arc4random (void) 193s 1515: noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: extern void arc4random_buf (void *__buf, size_t __size) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __uint32_t arc4random_uniform (__uint32_t __upper_bound) 193s 1515: noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *malloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) 193s 1515: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: extern void *calloc (size_t __nmemb, size_t __size) 193s 1515: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *realloc (void *__ptr, size_t __size) 193s 1515: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); 193s 1515: 193s 1515: 193s 1515: extern void free (void *__ptr) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 193s 1515: noexcept (true) __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__alloc_size__ (2, 3))) 193s 1515: __attribute__ ((__malloc__ (__builtin_free, 1))); 193s 1515: 193s 1515: 193s 1515: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 193s 1515: noexcept (true) __attribute__ ((__malloc__ (reallocarray, 1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/alloca.h" 1 3 4 193s 1515: # 24 "/usr/include/alloca.h" 3 4 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 25 "/usr/include/alloca.h" 2 3 4 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *alloca (size_t __size) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 707 "/usr/include/stdlib.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *valloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) 193s 1515: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *aligned_alloc (size_t __alignment, size_t __size) 193s 1515: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1))) 193s 1515: __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void abort (void) noexcept (true) __attribute__ ((__noreturn__)) __attribute__ ((__cold__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int atexit (void (*__func) (void)) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" int at_quick_exit (void (*__func) (void)) 193s 1515: noexcept (true) __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); 193s 1515: # 749 "/usr/include/stdlib.h" 3 4 193s 1515: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void quick_exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void _Exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *getenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *secure_getenv (const char *__name) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int putenv (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setenv (const char *__name, const char *__value, int __replace) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: extern int unsetenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int clearenv (void) noexcept (true); 193s 1515: # 814 "/usr/include/stdlib.h" 3 4 193s 1515: extern char *mktemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 830 "/usr/include/stdlib.h" 3 4 193s 1515: extern int mkstemp (char *__template) __asm__ ("" "mkstemp64") 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: # 852 "/usr/include/stdlib.h" 3 4 193s 1515: extern int mkstemps (char *__template, int __suffixlen) __asm__ ("" "mkstemps64") 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int mkstemps64 (char *__template, int __suffixlen) 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: # 870 "/usr/include/stdlib.h" 3 4 193s 1515: extern char *mkdtemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: # 884 "/usr/include/stdlib.h" 3 4 193s 1515: extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64") 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: # 905 "/usr/include/stdlib.h" 3 4 193s 1515: extern int mkostemps (char *__template, int __suffixlen, int __flags) __asm__ ("" "mkostemps64") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) 193s 1515: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: # 923 "/usr/include/stdlib.h" 3 4 193s 1515: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *canonicalize_file_name (const char *__name) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) 193s 1515: __attribute__ ((__malloc__ (__builtin_free, 1))) __attribute__ ((__warn_unused_result__)); 193s 1515: # 940 "/usr/include/stdlib.h" 3 4 193s 1515: extern char *realpath (const char *__restrict __name, 193s 1515: char *__restrict __resolved) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef int (*__compar_fn_t) (const void *, const void *); 193s 1515: 193s 1515: 193s 1515: typedef __compar_fn_t comparison_fn_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *bsearch (const void *__key, const void *__base, 193s 1515: size_t __nmemb, size_t __size, __compar_fn_t __compar) 193s 1515: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 1 3 4 193s 1515: # 19 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 3 4 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) void * 193s 1515: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, 193s 1515: __compar_fn_t __compar) 193s 1515: { 193s 1515: const void *__p; 193s 1515: int __comparison; 193s 1515: 193s 1515: while (__nmemb) 193s 1515: { 193s 1515: __p = (const void *) (((const char *) __base) + ((__nmemb >> 1) * __size)); 193s 1515: __comparison = (*__compar) (__key, __p); 193s 1515: if (__comparison == 0) 193s 1515: { 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wcast-qual" 193s 1515: 193s 1515: return (void *) __p; 193s 1515: 193s 1515: #pragma GCC diagnostic pop 193s 1515: 193s 1515: } 193s 1515: if (__comparison > 0) 193s 1515: { 193s 1515: __base = ((const char *) __p) + __size; 193s 1515: --__nmemb; 193s 1515: } 193s 1515: __nmemb >>= 1; 193s 1515: } 193s 1515: 193s 1515: return __null; 193s 1515: } 193s 1515: # 966 "/usr/include/stdlib.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void qsort (void *__base, size_t __nmemb, size_t __size, 193s 1515: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); 193s 1515: 193s 1515: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, 193s 1515: __compar_d_fn_t __compar, void *__arg) 193s 1515: __attribute__ ((__nonnull__ (1, 4))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int abs (int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 193s 1515: extern long int labs (long int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: __extension__ extern long long int llabs (long long int __x) 193s 1515: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern unsigned int uabs (int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 193s 1515: extern unsigned long int ulabs (long int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 193s 1515: __extension__ extern unsigned long long int ullabs (long long int __x) 193s 1515: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern div_t div (int __numer, int __denom) 193s 1515: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 193s 1515: extern ldiv_t ldiv (long int __numer, long int __denom) 193s 1515: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: __extension__ extern lldiv_t lldiv (long long int __numer, 193s 1515: long long int __denom) 193s 1515: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 193s 1515: # 1018 "/usr/include/stdlib.h" 3 4 193s 1515: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, 193s 1515: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, 193s 1515: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *gcvt (double __value, int __ndigit, char *__buf) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *qecvt (long double __value, int __ndigit, 193s 1515: int *__restrict __decpt, int *__restrict __sign) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 193s 1515: extern char *qfcvt (long double __value, int __ndigit, 193s 1515: int *__restrict __decpt, int *__restrict __sign) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 193s 1515: extern char *qgcvt (long double __value, int __ndigit, char *__buf) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, 193s 1515: int *__restrict __sign, char *__restrict __buf, 193s 1515: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 193s 1515: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, 193s 1515: int *__restrict __sign, char *__restrict __buf, 193s 1515: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 193s 1515: 193s 1515: extern int qecvt_r (long double __value, int __ndigit, 193s 1515: int *__restrict __decpt, int *__restrict __sign, 193s 1515: char *__restrict __buf, size_t __len) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 193s 1515: extern int qfcvt_r (long double __value, int __ndigit, 193s 1515: int *__restrict __decpt, int *__restrict __sign, 193s 1515: char *__restrict __buf, size_t __len) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int mblen (const char *__s, size_t __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int mbtowc (wchar_t *__restrict __pwc, 193s 1515: const char *__restrict __s, size_t __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int wctomb (char *__s, wchar_t __wchar) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t mbstowcs (wchar_t *__restrict __pwcs, 193s 1515: const char *__restrict __s, size_t __n) noexcept (true) 193s 1515: __attribute__ ((__access__ (__read_only__, 2))); 193s 1515: 193s 1515: extern size_t wcstombs (char *__restrict __s, 193s 1515: const wchar_t *__restrict __pwcs, size_t __n) 193s 1515: noexcept (true) 193s 1515: 193s 1515: __attribute__ ((__access__ (__read_only__, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int rpmatch (const char *__response) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 193s 1515: # 1105 "/usr/include/stdlib.h" 3 4 193s 1515: extern int getsubopt (char **__restrict __optionp, 193s 1515: char *const *__restrict __tokens, 193s 1515: char **__restrict __valuep) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int grantpt (int __fd) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int unlockpt (int __fd) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *ptsname (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))) ; 193s 1515: 193s 1515: 193s 1515: extern int getpt (void); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getloadavg (double __loadavg[], int __nelem) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 1161 "/usr/include/stdlib.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 3 4 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) double 193s 1515: __attribute__ ((__leaf__)) atof (const char *__nptr) noexcept (true) 193s 1515: { 193s 1515: return strtod (__nptr, (char **) __null); 193s 1515: } 193s 1515: # 1162 "/usr/include/stdlib.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 3 4 193s 1515: extern char *__realpath_chk (const char *__restrict __name, 193s 1515: char *__restrict __resolved, 193s 1515: size_t __resolvedlen) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) noexcept (true) __asm__ ("" "realpath") 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) noexcept (true) __asm__ ("" "__realpath_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) 193s 1515: ; 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 193s 1515: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char * __restrict __resolved) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__resolved, 1); 193s 1515: 193s 1515: if (__sz == (size_t) -1) 193s 1515: return __realpath_alias (__name, __resolved); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return __realpath_chk (__name, __resolved, __sz); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, 193s 1515: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) 193s 1515: __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ptsname_r") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ptsname_r_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) 193s 1515: ; 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) ptsname_r (int __fd, char * __buf, size_t __buflen) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __ptsname_r_alias (__fd, __buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_dynamic_object_size (__buf, 1)) : __ptsname_r_chk (__fd, __buf, __buflen, __builtin_dynamic_object_size (__buf, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) 193s 1515: noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: extern int __wctomb_alias (char *__s, wchar_t __wchar) noexcept (true) __asm__ ("" "wctomb") 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int 193s 1515: __attribute__ ((__leaf__)) wctomb (char * __s, wchar_t __wchar) noexcept (true) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: if (__builtin_dynamic_object_size (__s, 1) != (size_t) -1 193s 1515: && 16 > __builtin_dynamic_object_size (__s, 1)) 193s 1515: return __wctomb_chk (__s, __wchar, __builtin_dynamic_object_size (__s, 1)); 193s 1515: return __wctomb_alias (__s, __wchar); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, 193s 1515: const char *__restrict __src, 193s 1515: size_t __len, size_t __dstlen) noexcept (true) 193s 1515: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 193s 1515: extern size_t __mbstowcs_nulldst (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__access__ (__read_only__, 2))); 193s 1515: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 193s 1515: extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) noexcept (true) __asm__ ("" "__mbstowcs_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 193s 1515: ; 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) mbstowcs (wchar_t * __restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: if (__builtin_constant_p (__dst == __null) && __dst == __null) 193s 1515: return __mbstowcs_nulldst (__dst, __src, __len); 193s 1515: else 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t)))))) ? __mbstowcs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) ? __mbstowcs_chk_warn (__dst, __src, __len, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))) : __mbstowcs_chk (__dst, __src, __len, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))))) 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: extern size_t __wcstombs_chk (char *__restrict __dst, 193s 1515: const wchar_t *__restrict __src, 193s 1515: size_t __len, size_t __dstlen) noexcept (true) 193s 1515: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 193s 1515: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "wcstombs") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 193s 1515: extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) noexcept (true) __asm__ ("" "__wcstombs_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) wcstombs (char * __restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char)))))) ? __wcstombs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) ? __wcstombs_chk_warn (__dst, __src, __len, __builtin_dynamic_object_size (__dst, 1)) : __wcstombs_chk (__dst, __src, __len, __builtin_dynamic_object_size (__dst, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: # 1166 "/usr/include/stdlib.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 193s 1515: # 1169 "/usr/include/stdlib.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 45 "/usr/include/c++/15/bits/std_abs.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" 193s 1515: { 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: using ::abs; 193s 1515: 193s 1515: 193s 1515: inline long 193s 1515: abs(long __i) { return __builtin_labs(__i); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: inline long long 193s 1515: abs(long long __x) { return __builtin_llabs (__x); } 193s 1515: # 76 "/usr/include/c++/15/bits/std_abs.h" 3 4 193s 1515: inline constexpr double 193s 1515: abs(double __x) 193s 1515: { return __builtin_fabs(__x); } 193s 1515: 193s 1515: inline constexpr float 193s 1515: abs(float __x) 193s 1515: { return __builtin_fabsf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: abs(long double __x) 193s 1515: { return __builtin_fabsl(__x); } 193s 1515: # 156 "/usr/include/c++/15/bits/std_abs.h" 3 4 193s 1515: 193s 1515: } 193s 1515: } 193s 1515: 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 60 "/usr/include/c++/15/cmath" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 193s 1515: # 64 "/usr/include/c++/15/cmath" 2 3 4 193s 1515: # 90 "/usr/include/c++/15/cmath" 3 4 193s 1515: extern "C++" 193s 1515: { 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: using ::acos; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: acos(float __x) 193s 1515: { return __builtin_acosf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: acos(long double __x) 193s 1515: { return __builtin_acosl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: acos(_Tp __x) 193s 1515: { return __builtin_acos(__x); } 193s 1515: 193s 1515: using ::asin; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: asin(float __x) 193s 1515: { return __builtin_asinf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: asin(long double __x) 193s 1515: { return __builtin_asinl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: asin(_Tp __x) 193s 1515: { return __builtin_asin(__x); } 193s 1515: 193s 1515: using ::atan; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: atan(float __x) 193s 1515: { return __builtin_atanf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: atan(long double __x) 193s 1515: { return __builtin_atanl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: atan(_Tp __x) 193s 1515: { return __builtin_atan(__x); } 193s 1515: 193s 1515: using ::atan2; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: atan2(float __y, float __x) 193s 1515: { return __builtin_atan2f(__y, __x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: atan2(long double __y, long double __x) 193s 1515: { return __builtin_atan2l(__y, __x); } 193s 1515: 193s 1515: 193s 1515: using ::ceil; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: ceil(float __x) 193s 1515: { return __builtin_ceilf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: ceil(long double __x) 193s 1515: { return __builtin_ceill(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: ceil(_Tp __x) 193s 1515: { return __builtin_ceil(__x); } 193s 1515: 193s 1515: using ::cos; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: cos(float __x) 193s 1515: { return __builtin_cosf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: cos(long double __x) 193s 1515: { return __builtin_cosl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: cos(_Tp __x) 193s 1515: { return __builtin_cos(__x); } 193s 1515: 193s 1515: using ::cosh; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: cosh(float __x) 193s 1515: { return __builtin_coshf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: cosh(long double __x) 193s 1515: { return __builtin_coshl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: cosh(_Tp __x) 193s 1515: { return __builtin_cosh(__x); } 193s 1515: 193s 1515: using ::exp; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: exp(float __x) 193s 1515: { return __builtin_expf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: exp(long double __x) 193s 1515: { return __builtin_expl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: exp(_Tp __x) 193s 1515: { return __builtin_exp(__x); } 193s 1515: 193s 1515: using ::fabs; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: fabs(float __x) 193s 1515: { return __builtin_fabsf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: fabs(long double __x) 193s 1515: { return __builtin_fabsl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: fabs(_Tp __x) 193s 1515: { return __builtin_fabs(__x); } 193s 1515: 193s 1515: using ::floor; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: floor(float __x) 193s 1515: { return __builtin_floorf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: floor(long double __x) 193s 1515: { return __builtin_floorl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: floor(_Tp __x) 193s 1515: { return __builtin_floor(__x); } 193s 1515: 193s 1515: using ::fmod; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: fmod(float __x, float __y) 193s 1515: { return __builtin_fmodf(__x, __y); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: fmod(long double __x, long double __y) 193s 1515: { return __builtin_fmodl(__x, __y); } 193s 1515: 193s 1515: 193s 1515: using ::frexp; 193s 1515: 193s 1515: 193s 1515: inline float 193s 1515: frexp(float __x, int* __exp) 193s 1515: { return __builtin_frexpf(__x, __exp); } 193s 1515: 193s 1515: inline long double 193s 1515: frexp(long double __x, int* __exp) 193s 1515: { return __builtin_frexpl(__x, __exp); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: frexp(_Tp __x, int* __exp) 193s 1515: { return __builtin_frexp(__x, __exp); } 193s 1515: 193s 1515: using ::ldexp; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: ldexp(float __x, int __exp) 193s 1515: { return __builtin_ldexpf(__x, __exp); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: ldexp(long double __x, int __exp) 193s 1515: { return __builtin_ldexpl(__x, __exp); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: ldexp(_Tp __x, int __exp) 193s 1515: { return __builtin_ldexp(__x, __exp); } 193s 1515: 193s 1515: using ::log; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: log(float __x) 193s 1515: { return __builtin_logf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: log(long double __x) 193s 1515: { return __builtin_logl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: log(_Tp __x) 193s 1515: { return __builtin_log(__x); } 193s 1515: 193s 1515: using ::log10; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: log10(float __x) 193s 1515: { return __builtin_log10f(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: log10(long double __x) 193s 1515: { return __builtin_log10l(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: log10(_Tp __x) 193s 1515: { return __builtin_log10(__x); } 193s 1515: 193s 1515: using ::modf; 193s 1515: 193s 1515: 193s 1515: inline float 193s 1515: modf(float __x, float* __iptr) 193s 1515: { return __builtin_modff(__x, __iptr); } 193s 1515: 193s 1515: inline long double 193s 1515: modf(long double __x, long double* __iptr) 193s 1515: { return __builtin_modfl(__x, __iptr); } 193s 1515: 193s 1515: 193s 1515: using ::pow; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: pow(float __x, float __y) 193s 1515: { return __builtin_powf(__x, __y); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: pow(long double __x, long double __y) 193s 1515: { return __builtin_powl(__x, __y); } 193s 1515: # 407 "/usr/include/c++/15/cmath" 3 4 193s 1515: using ::sin; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: sin(float __x) 193s 1515: { return __builtin_sinf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: sin(long double __x) 193s 1515: { return __builtin_sinl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: sin(_Tp __x) 193s 1515: { return __builtin_sin(__x); } 193s 1515: 193s 1515: using ::sinh; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: sinh(float __x) 193s 1515: { return __builtin_sinhf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: sinh(long double __x) 193s 1515: { return __builtin_sinhl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: sinh(_Tp __x) 193s 1515: { return __builtin_sinh(__x); } 193s 1515: 193s 1515: using ::sqrt; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: sqrt(float __x) 193s 1515: { return __builtin_sqrtf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: sqrt(long double __x) 193s 1515: { return __builtin_sqrtl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: sqrt(_Tp __x) 193s 1515: { return __builtin_sqrt(__x); } 193s 1515: 193s 1515: using ::tan; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: tan(float __x) 193s 1515: { return __builtin_tanf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: tan(long double __x) 193s 1515: { return __builtin_tanl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: tan(_Tp __x) 193s 1515: { return __builtin_tan(__x); } 193s 1515: 193s 1515: using ::tanh; 193s 1515: 193s 1515: 193s 1515: inline constexpr float 193s 1515: tanh(float __x) 193s 1515: { return __builtin_tanhf(__x); } 193s 1515: 193s 1515: inline constexpr long double 193s 1515: tanh(long double __x) 193s 1515: { return __builtin_tanhl(__x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: tanh(_Tp __x) 193s 1515: { return __builtin_tanh(__x); } 193s 1515: # 1060 "/usr/include/c++/15/cmath" 3 4 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: atan2(_Tp __y, _Up __x) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return atan2(__type(__y), __type(__x)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: fmod(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return fmod(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: inline constexpr 193s 1515: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: pow(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return pow(__type(__x), __type(__y)); 193s 1515: } 193s 1515: # 1107 "/usr/include/c++/15/cmath" 3 4 193s 1515: constexpr int 193s 1515: fpclassify(float __x) 193s 1515: { return __builtin_fpclassify(0, 1, 4, 193s 1515: 3, 2, __x); } 193s 1515: 193s 1515: constexpr int 193s 1515: fpclassify(double __x) 193s 1515: { return __builtin_fpclassify(0, 1, 4, 193s 1515: 3, 2, __x); } 193s 1515: 193s 1515: constexpr int 193s 1515: fpclassify(long double __x) 193s 1515: { return __builtin_fpclassify(0, 1, 4, 193s 1515: 3, 2, __x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: int>::__type 193s 1515: fpclassify(_Tp __x) 193s 1515: { return __x != 0 ? 4 : 2; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isfinite(float __x) 193s 1515: { return __builtin_isfinite(__x); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isfinite(double __x) 193s 1515: { return __builtin_isfinite(__x); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isfinite(long double __x) 193s 1515: { return __builtin_isfinite(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: bool>::__type 193s 1515: isfinite(_Tp) 193s 1515: { return true; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isinf(float __x) 193s 1515: { return __builtin_isinf(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isinf(double __x) 193s 1515: { return __builtin_isinf(__x); } 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isinf(long double __x) 193s 1515: { return __builtin_isinf(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: bool>::__type 193s 1515: isinf(_Tp) 193s 1515: { return false; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isnan(float __x) 193s 1515: { return __builtin_isnan(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isnan(double __x) 193s 1515: { return __builtin_isnan(__x); } 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isnan(long double __x) 193s 1515: { return __builtin_isnan(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: bool>::__type 193s 1515: isnan(_Tp) 193s 1515: { return false; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isnormal(float __x) 193s 1515: { return __builtin_isnormal(__x); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isnormal(double __x) 193s 1515: { return __builtin_isnormal(__x); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isnormal(long double __x) 193s 1515: { return __builtin_isnormal(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: bool>::__type 193s 1515: isnormal(_Tp __x) 193s 1515: { return __x != 0 ? true : false; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: signbit(float __x) 193s 1515: { return __builtin_signbit(__x); } 193s 1515: 193s 1515: constexpr bool 193s 1515: signbit(double __x) 193s 1515: { return __builtin_signbit(__x); } 193s 1515: 193s 1515: constexpr bool 193s 1515: signbit(long double __x) 193s 1515: { return __builtin_signbit(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: bool>::__type 193s 1515: signbit(_Tp __x) 193s 1515: { return __x < 0 ? true : false; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isgreater(float __x, float __y) 193s 1515: { return __builtin_isgreater(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isgreater(double __x, double __y) 193s 1515: { return __builtin_isgreater(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isgreater(long double __x, long double __y) 193s 1515: { return __builtin_isgreater(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename 193s 1515: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 193s 1515: && __is_arithmetic<_Up>::__value), bool>::__type 193s 1515: isgreater(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return __builtin_isgreater(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isgreaterequal(float __x, float __y) 193s 1515: { return __builtin_isgreaterequal(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isgreaterequal(double __x, double __y) 193s 1515: { return __builtin_isgreaterequal(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isgreaterequal(long double __x, long double __y) 193s 1515: { return __builtin_isgreaterequal(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename 193s 1515: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 193s 1515: && __is_arithmetic<_Up>::__value), bool>::__type 193s 1515: isgreaterequal(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return __builtin_isgreaterequal(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isless(float __x, float __y) 193s 1515: { return __builtin_isless(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isless(double __x, double __y) 193s 1515: { return __builtin_isless(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isless(long double __x, long double __y) 193s 1515: { return __builtin_isless(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename 193s 1515: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 193s 1515: && __is_arithmetic<_Up>::__value), bool>::__type 193s 1515: isless(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return __builtin_isless(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: islessequal(float __x, float __y) 193s 1515: { return __builtin_islessequal(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: islessequal(double __x, double __y) 193s 1515: { return __builtin_islessequal(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: islessequal(long double __x, long double __y) 193s 1515: { return __builtin_islessequal(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename 193s 1515: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 193s 1515: && __is_arithmetic<_Up>::__value), bool>::__type 193s 1515: islessequal(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return __builtin_islessequal(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: islessgreater(float __x, float __y) 193s 1515: { return __builtin_islessgreater(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: islessgreater(double __x, double __y) 193s 1515: { return __builtin_islessgreater(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: islessgreater(long double __x, long double __y) 193s 1515: { return __builtin_islessgreater(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename 193s 1515: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 193s 1515: && __is_arithmetic<_Up>::__value), bool>::__type 193s 1515: islessgreater(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return __builtin_islessgreater(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr bool 193s 1515: isunordered(float __x, float __y) 193s 1515: { return __builtin_isunordered(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isunordered(double __x, double __y) 193s 1515: { return __builtin_isunordered(__x, __y); } 193s 1515: 193s 1515: constexpr bool 193s 1515: isunordered(long double __x, long double __y) 193s 1515: { return __builtin_isunordered(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename 193s 1515: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 193s 1515: && __is_arithmetic<_Up>::__value), bool>::__type 193s 1515: isunordered(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return __builtin_isunordered(__type(__x), __type(__y)); 193s 1515: } 193s 1515: # 1827 "/usr/include/c++/15/cmath" 3 4 193s 1515: using ::acosf; 193s 1515: 193s 1515: 193s 1515: using ::acosl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::asinf; 193s 1515: 193s 1515: 193s 1515: using ::asinl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::atanf; 193s 1515: 193s 1515: 193s 1515: using ::atanl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::atan2f; 193s 1515: 193s 1515: 193s 1515: using ::atan2l; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::ceilf; 193s 1515: 193s 1515: 193s 1515: using ::ceill; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::cosf; 193s 1515: 193s 1515: 193s 1515: using ::cosl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::coshf; 193s 1515: 193s 1515: 193s 1515: using ::coshl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::expf; 193s 1515: 193s 1515: 193s 1515: using ::expl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::fabsf; 193s 1515: 193s 1515: 193s 1515: using ::fabsl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::floorf; 193s 1515: 193s 1515: 193s 1515: using ::floorl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::fmodf; 193s 1515: 193s 1515: 193s 1515: using ::fmodl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::frexpf; 193s 1515: 193s 1515: 193s 1515: using ::frexpl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::ldexpf; 193s 1515: 193s 1515: 193s 1515: using ::ldexpl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::logf; 193s 1515: 193s 1515: 193s 1515: using ::logl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::log10f; 193s 1515: 193s 1515: 193s 1515: using ::log10l; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::modff; 193s 1515: 193s 1515: 193s 1515: using ::modfl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::powf; 193s 1515: 193s 1515: 193s 1515: using ::powl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::sinf; 193s 1515: 193s 1515: 193s 1515: using ::sinl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::sinhf; 193s 1515: 193s 1515: 193s 1515: using ::sinhl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::sqrtf; 193s 1515: 193s 1515: 193s 1515: using ::sqrtl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::tanf; 193s 1515: 193s 1515: 193s 1515: using ::tanl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::tanhf; 193s 1515: 193s 1515: 193s 1515: using ::tanhl; 193s 1515: # 2092 "/usr/include/c++/15/cmath" 3 4 193s 1515: using ::double_t; 193s 1515: using ::float_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::acosh; 193s 1515: using ::acoshf; 193s 1515: using ::acoshl; 193s 1515: 193s 1515: using ::asinh; 193s 1515: using ::asinhf; 193s 1515: using ::asinhl; 193s 1515: 193s 1515: using ::atanh; 193s 1515: using ::atanhf; 193s 1515: using ::atanhl; 193s 1515: 193s 1515: using ::cbrt; 193s 1515: using ::cbrtf; 193s 1515: using ::cbrtl; 193s 1515: 193s 1515: using ::copysign; 193s 1515: using ::copysignf; 193s 1515: using ::copysignl; 193s 1515: 193s 1515: using ::erf; 193s 1515: using ::erff; 193s 1515: using ::erfl; 193s 1515: 193s 1515: using ::erfc; 193s 1515: using ::erfcf; 193s 1515: using ::erfcl; 193s 1515: 193s 1515: using ::exp2; 193s 1515: using ::exp2f; 193s 1515: using ::exp2l; 193s 1515: 193s 1515: using ::expm1; 193s 1515: using ::expm1f; 193s 1515: using ::expm1l; 193s 1515: 193s 1515: using ::fdim; 193s 1515: using ::fdimf; 193s 1515: using ::fdiml; 193s 1515: 193s 1515: using ::fma; 193s 1515: using ::fmaf; 193s 1515: using ::fmal; 193s 1515: 193s 1515: using ::fmax; 193s 1515: using ::fmaxf; 193s 1515: using ::fmaxl; 193s 1515: 193s 1515: using ::fmin; 193s 1515: using ::fminf; 193s 1515: using ::fminl; 193s 1515: 193s 1515: using ::hypot; 193s 1515: using ::hypotf; 193s 1515: using ::hypotl; 193s 1515: 193s 1515: using ::ilogb; 193s 1515: using ::ilogbf; 193s 1515: using ::ilogbl; 193s 1515: 193s 1515: using ::lgamma; 193s 1515: using ::lgammaf; 193s 1515: using ::lgammal; 193s 1515: 193s 1515: 193s 1515: using ::llrint; 193s 1515: using ::llrintf; 193s 1515: using ::llrintl; 193s 1515: 193s 1515: using ::llround; 193s 1515: using ::llroundf; 193s 1515: using ::llroundl; 193s 1515: 193s 1515: 193s 1515: using ::log1p; 193s 1515: using ::log1pf; 193s 1515: using ::log1pl; 193s 1515: 193s 1515: using ::log2; 193s 1515: using ::log2f; 193s 1515: using ::log2l; 193s 1515: 193s 1515: using ::logb; 193s 1515: using ::logbf; 193s 1515: using ::logbl; 193s 1515: 193s 1515: using ::lrint; 193s 1515: using ::lrintf; 193s 1515: using ::lrintl; 193s 1515: 193s 1515: using ::lround; 193s 1515: using ::lroundf; 193s 1515: using ::lroundl; 193s 1515: 193s 1515: using ::nan; 193s 1515: using ::nanf; 193s 1515: using ::nanl; 193s 1515: 193s 1515: using ::nearbyint; 193s 1515: using ::nearbyintf; 193s 1515: using ::nearbyintl; 193s 1515: 193s 1515: using ::nextafter; 193s 1515: using ::nextafterf; 193s 1515: using ::nextafterl; 193s 1515: 193s 1515: using ::nexttoward; 193s 1515: using ::nexttowardf; 193s 1515: using ::nexttowardl; 193s 1515: 193s 1515: using ::remainder; 193s 1515: using ::remainderf; 193s 1515: using ::remainderl; 193s 1515: 193s 1515: using ::remquo; 193s 1515: using ::remquof; 193s 1515: using ::remquol; 193s 1515: 193s 1515: using ::rint; 193s 1515: using ::rintf; 193s 1515: using ::rintl; 193s 1515: 193s 1515: using ::round; 193s 1515: using ::roundf; 193s 1515: using ::roundl; 193s 1515: 193s 1515: using ::scalbln; 193s 1515: using ::scalblnf; 193s 1515: using ::scalblnl; 193s 1515: 193s 1515: using ::scalbn; 193s 1515: using ::scalbnf; 193s 1515: using ::scalbnl; 193s 1515: 193s 1515: using ::tgamma; 193s 1515: using ::tgammaf; 193s 1515: using ::tgammal; 193s 1515: 193s 1515: using ::trunc; 193s 1515: using ::truncf; 193s 1515: using ::truncl; 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: acosh(float __x) 193s 1515: { return __builtin_acoshf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: acosh(long double __x) 193s 1515: { return __builtin_acoshl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: acosh(_Tp __x) 193s 1515: { return __builtin_acosh(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: asinh(float __x) 193s 1515: { return __builtin_asinhf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: asinh(long double __x) 193s 1515: { return __builtin_asinhl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: asinh(_Tp __x) 193s 1515: { return __builtin_asinh(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: atanh(float __x) 193s 1515: { return __builtin_atanhf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: atanh(long double __x) 193s 1515: { return __builtin_atanhl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: atanh(_Tp __x) 193s 1515: { return __builtin_atanh(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: cbrt(float __x) 193s 1515: { return __builtin_cbrtf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: cbrt(long double __x) 193s 1515: { return __builtin_cbrtl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: cbrt(_Tp __x) 193s 1515: { return __builtin_cbrt(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: copysign(float __x, float __y) 193s 1515: { return __builtin_copysignf(__x, __y); } 193s 1515: 193s 1515: constexpr long double 193s 1515: copysign(long double __x, long double __y) 193s 1515: { return __builtin_copysignl(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: erf(float __x) 193s 1515: { return __builtin_erff(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: erf(long double __x) 193s 1515: { return __builtin_erfl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: erf(_Tp __x) 193s 1515: { return __builtin_erf(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: erfc(float __x) 193s 1515: { return __builtin_erfcf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: erfc(long double __x) 193s 1515: { return __builtin_erfcl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: erfc(_Tp __x) 193s 1515: { return __builtin_erfc(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: exp2(float __x) 193s 1515: { return __builtin_exp2f(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: exp2(long double __x) 193s 1515: { return __builtin_exp2l(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: exp2(_Tp __x) 193s 1515: { return __builtin_exp2(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: expm1(float __x) 193s 1515: { return __builtin_expm1f(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: expm1(long double __x) 193s 1515: { return __builtin_expm1l(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: expm1(_Tp __x) 193s 1515: { return __builtin_expm1(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: fdim(float __x, float __y) 193s 1515: { return __builtin_fdimf(__x, __y); } 193s 1515: 193s 1515: constexpr long double 193s 1515: fdim(long double __x, long double __y) 193s 1515: { return __builtin_fdiml(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: fma(float __x, float __y, float __z) 193s 1515: { return __builtin_fmaf(__x, __y, __z); } 193s 1515: 193s 1515: constexpr long double 193s 1515: fma(long double __x, long double __y, long double __z) 193s 1515: { return __builtin_fmal(__x, __y, __z); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: fmax(float __x, float __y) 193s 1515: { return __builtin_fmaxf(__x, __y); } 193s 1515: 193s 1515: constexpr long double 193s 1515: fmax(long double __x, long double __y) 193s 1515: { return __builtin_fmaxl(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: fmin(float __x, float __y) 193s 1515: { return __builtin_fminf(__x, __y); } 193s 1515: 193s 1515: constexpr long double 193s 1515: fmin(long double __x, long double __y) 193s 1515: { return __builtin_fminl(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: hypot(float __x, float __y) 193s 1515: { return __builtin_hypotf(__x, __y); } 193s 1515: 193s 1515: constexpr long double 193s 1515: hypot(long double __x, long double __y) 193s 1515: { return __builtin_hypotl(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr int 193s 1515: ilogb(float __x) 193s 1515: { return __builtin_ilogbf(__x); } 193s 1515: 193s 1515: constexpr int 193s 1515: ilogb(long double __x) 193s 1515: { return __builtin_ilogbl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr 193s 1515: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: int>::__type 193s 1515: ilogb(_Tp __x) 193s 1515: { return __builtin_ilogb(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: lgamma(float __x) 193s 1515: { return __builtin_lgammaf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: lgamma(long double __x) 193s 1515: { return __builtin_lgammal(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: lgamma(_Tp __x) 193s 1515: { return __builtin_lgamma(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr long long 193s 1515: llrint(float __x) 193s 1515: { return __builtin_llrintf(__x); } 193s 1515: 193s 1515: constexpr long long 193s 1515: llrint(long double __x) 193s 1515: { return __builtin_llrintl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: long long>::__type 193s 1515: llrint(_Tp __x) 193s 1515: { return __builtin_llrint(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr long long 193s 1515: llround(float __x) 193s 1515: { return __builtin_llroundf(__x); } 193s 1515: 193s 1515: constexpr long long 193s 1515: llround(long double __x) 193s 1515: { return __builtin_llroundl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: long long>::__type 193s 1515: llround(_Tp __x) 193s 1515: { return __builtin_llround(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: log1p(float __x) 193s 1515: { return __builtin_log1pf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: log1p(long double __x) 193s 1515: { return __builtin_log1pl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: log1p(_Tp __x) 193s 1515: { return __builtin_log1p(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: log2(float __x) 193s 1515: { return __builtin_log2f(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: log2(long double __x) 193s 1515: { return __builtin_log2l(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: log2(_Tp __x) 193s 1515: { return __builtin_log2(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: logb(float __x) 193s 1515: { return __builtin_logbf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: logb(long double __x) 193s 1515: { return __builtin_logbl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: logb(_Tp __x) 193s 1515: { return __builtin_logb(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr long 193s 1515: lrint(float __x) 193s 1515: { return __builtin_lrintf(__x); } 193s 1515: 193s 1515: constexpr long 193s 1515: lrint(long double __x) 193s 1515: { return __builtin_lrintl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: long>::__type 193s 1515: lrint(_Tp __x) 193s 1515: { return __builtin_lrint(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr long 193s 1515: lround(float __x) 193s 1515: { return __builtin_lroundf(__x); } 193s 1515: 193s 1515: constexpr long 193s 1515: lround(long double __x) 193s 1515: { return __builtin_lroundl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: long>::__type 193s 1515: lround(_Tp __x) 193s 1515: { return __builtin_lround(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: nearbyint(float __x) 193s 1515: { return __builtin_nearbyintf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: nearbyint(long double __x) 193s 1515: { return __builtin_nearbyintl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: nearbyint(_Tp __x) 193s 1515: { return __builtin_nearbyint(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: nextafter(float __x, float __y) 193s 1515: { return __builtin_nextafterf(__x, __y); } 193s 1515: 193s 1515: constexpr long double 193s 1515: nextafter(long double __x, long double __y) 193s 1515: { return __builtin_nextafterl(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: nexttoward(float __x, long double __y) 193s 1515: { return __builtin_nexttowardf(__x, __y); } 193s 1515: 193s 1515: constexpr long double 193s 1515: nexttoward(long double __x, long double __y) 193s 1515: { return __builtin_nexttowardl(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: nexttoward(_Tp __x, long double __y) 193s 1515: { return __builtin_nexttoward(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: remainder(float __x, float __y) 193s 1515: { return __builtin_remainderf(__x, __y); } 193s 1515: 193s 1515: constexpr long double 193s 1515: remainder(long double __x, long double __y) 193s 1515: { return __builtin_remainderl(__x, __y); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: inline float 193s 1515: remquo(float __x, float __y, int* __pquo) 193s 1515: { return __builtin_remquof(__x, __y, __pquo); } 193s 1515: 193s 1515: inline long double 193s 1515: remquo(long double __x, long double __y, int* __pquo) 193s 1515: { return __builtin_remquol(__x, __y, __pquo); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: rint(float __x) 193s 1515: { return __builtin_rintf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: rint(long double __x) 193s 1515: { return __builtin_rintl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: rint(_Tp __x) 193s 1515: { return __builtin_rint(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: round(float __x) 193s 1515: { return __builtin_roundf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: round(long double __x) 193s 1515: { return __builtin_roundl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: round(_Tp __x) 193s 1515: { return __builtin_round(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: scalbln(float __x, long __ex) 193s 1515: { return __builtin_scalblnf(__x, __ex); } 193s 1515: 193s 1515: constexpr long double 193s 1515: scalbln(long double __x, long __ex) 193s 1515: { return __builtin_scalblnl(__x, __ex); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: scalbln(_Tp __x, long __ex) 193s 1515: { return __builtin_scalbln(__x, __ex); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: scalbn(float __x, int __ex) 193s 1515: { return __builtin_scalbnf(__x, __ex); } 193s 1515: 193s 1515: constexpr long double 193s 1515: scalbn(long double __x, int __ex) 193s 1515: { return __builtin_scalbnl(__x, __ex); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: scalbn(_Tp __x, int __ex) 193s 1515: { return __builtin_scalbn(__x, __ex); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: tgamma(float __x) 193s 1515: { return __builtin_tgammaf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: tgamma(long double __x) 193s 1515: { return __builtin_tgammal(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: tgamma(_Tp __x) 193s 1515: { return __builtin_tgamma(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: constexpr float 193s 1515: trunc(float __x) 193s 1515: { return __builtin_truncf(__x); } 193s 1515: 193s 1515: constexpr long double 193s 1515: trunc(long double __x) 193s 1515: { return __builtin_truncl(__x); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 193s 1515: double>::__type 193s 1515: trunc(_Tp __x) 193s 1515: { return __builtin_trunc(__x); } 193s 1515: # 3689 "/usr/include/c++/15/cmath" 3 4 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: copysign(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return copysign(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: fdim(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return fdim(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: fmax(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return fmax(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: fmin(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return fmin(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: hypot(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return hypot(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: nextafter(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return nextafter(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: remainder(_Tp __x, _Up __y) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return remainder(__type(__x), __type(__y)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 193s 1515: remquo(_Tp __x, _Up __y, int* __pquo) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 193s 1515: return remquo(__type(__x), __type(__y), __pquo); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type 193s 1515: fma(_Tp __x, _Up __y, _Vp __z) 193s 1515: { 193s 1515: typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; 193s 1515: return fma(__type(__x), __type(__y), __type(__z)); 193s 1515: } 193s 1515: # 3909 "/usr/include/c++/15/cmath" 3 4 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 3152 "/usr/include/doctest/doctest.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/climits" 1 3 4 193s 1515: # 47 "/usr/include/c++/15/climits" 3 4 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 1 3 4 193s 1515: # 34 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 3 4 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/syslimits.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wpedantic" 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 1 3 4 193s 1515: # 210 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 3 4 193s 1515: # 1 "/usr/include/limits.h" 1 3 4 193s 1515: # 26 "/usr/include/limits.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 193s 1515: # 27 "/usr/include/limits.h" 2 3 4 193s 1515: # 195 "/usr/include/limits.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 193s 1515: # 28 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4 193s 1515: # 161 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 1 3 4 193s 1515: # 38 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 3 4 193s 1515: # 1 "/usr/include/linux/limits.h" 1 3 4 193s 1515: # 39 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 2 3 4 193s 1515: # 81 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthread_stack_min-dynamic.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthread_stack_min-dynamic.h" 3 4 193s 1515: extern "C" { 193s 1515: extern long int __sysconf (int __name) noexcept (true); 193s 1515: } 193s 1515: # 82 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 2 3 4 193s 1515: # 162 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4 193s 1515: # 196 "/usr/include/limits.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix2_lim.h" 1 3 4 193s 1515: # 200 "/usr/include/limits.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 1 3 4 193s 1515: # 64 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/uio_lim.h" 1 3 4 193s 1515: # 65 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 2 3 4 193s 1515: # 204 "/usr/include/limits.h" 2 3 4 193s 1515: # 211 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 2 3 4 193s 1515: # 10 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/syslimits.h" 2 3 4 193s 1515: 193s 1515: # 10 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/syslimits.h" 3 4 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 35 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 2 3 4 193s 1515: # 48 "/usr/include/c++/15/climits" 2 3 4 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 193s 1515: # 64 "/usr/include/c++/15/climits" 3 4 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 3153 "/usr/include/doctest/doctest.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/new" 1 3 4 193s 1515: # 43 "/usr/include/c++/15/new" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/exception.h" 1 3 4 193s 1515: # 40 "/usr/include/c++/15/bits/exception.h" 3 4 193s 1515: extern "C++" { 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: # 61 "/usr/include/c++/15/bits/exception.h" 3 4 193s 1515: class exception 193s 1515: { 193s 1515: public: 193s 1515: exception() noexcept { } 193s 1515: virtual ~exception() noexcept; 193s 1515: 193s 1515: exception(const exception&) = default; 193s 1515: exception& operator=(const exception&) = default; 193s 1515: exception(exception&&) = default; 193s 1515: exception& operator=(exception&&) = default; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual const char* 193s 1515: what() const noexcept; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: # 44 "/usr/include/c++/15/new" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 193s 1515: # 50 "/usr/include/c++/15/new" 2 3 4 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 193s 1515: 193s 1515: #pragma GCC visibility push(default) 193s 1515: 193s 1515: extern "C++" { 193s 1515: 193s 1515: namespace std 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: class bad_alloc : public exception 193s 1515: { 193s 1515: public: 193s 1515: bad_alloc() throw() { } 193s 1515: 193s 1515: 193s 1515: bad_alloc(const bad_alloc&) = default; 193s 1515: bad_alloc& operator=(const bad_alloc&) = default; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual ~bad_alloc() throw(); 193s 1515: 193s 1515: 193s 1515: virtual const char* what() const throw(); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: class bad_array_new_length : public bad_alloc 193s 1515: { 193s 1515: public: 193s 1515: bad_array_new_length() throw() { } 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual ~bad_array_new_length() throw(); 193s 1515: 193s 1515: 193s 1515: virtual const char* what() const throw(); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct nothrow_t 193s 1515: { 193s 1515: 193s 1515: explicit nothrow_t() = default; 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: extern const nothrow_t nothrow; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef void (*new_handler)(); 193s 1515: 193s 1515: 193s 1515: 193s 1515: new_handler set_new_handler(new_handler) throw(); 193s 1515: 193s 1515: 193s 1515: 193s 1515: new_handler get_new_handler() noexcept; 193s 1515: 193s 1515: } 193s 1515: # 137 "/usr/include/c++/15/new" 3 4 193s 1515: [[__nodiscard__]] void* operator new(std::size_t) 193s 1515: 193s 1515: __attribute__((__externally_visible__, __malloc__)); 193s 1515: [[__nodiscard__]] void* operator new[](std::size_t) 193s 1515: 193s 1515: __attribute__((__externally_visible__, __malloc__)); 193s 1515: void operator delete(void*) noexcept 193s 1515: __attribute__((__externally_visible__)); 193s 1515: void operator delete[](void*) noexcept 193s 1515: __attribute__((__externally_visible__)); 193s 1515: # 155 "/usr/include/c++/15/new" 3 4 193s 1515: [[__nodiscard__]] void* operator new(std::size_t, const std::nothrow_t&) 193s 1515: noexcept 193s 1515: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); 193s 1515: [[__nodiscard__]] void* operator new[](std::size_t, const std::nothrow_t&) 193s 1515: noexcept 193s 1515: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); 193s 1515: void operator delete(void*, const std::nothrow_t&) 193s 1515: noexcept 193s 1515: __attribute__((__externally_visible__)); 193s 1515: void operator delete[](void*, const std::nothrow_t&) 193s 1515: noexcept 193s 1515: __attribute__((__externally_visible__)); 193s 1515: # 205 "/usr/include/c++/15/new" 3 4 193s 1515: [[__nodiscard__]] inline 193s 1515: void* operator new(std::size_t, void* __p) 193s 1515: noexcept 193s 1515: { return __p; } 193s 1515: [[__nodiscard__]] inline 193s 1515: void* operator new[](std::size_t, void* __p) 193s 1515: noexcept 193s 1515: { return __p; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: inline void operator delete (void*, void*) 193s 1515: noexcept 193s 1515: { } 193s 1515: inline void operator delete[](void*, void*) 193s 1515: noexcept 193s 1515: { } 193s 1515: 193s 1515: } 193s 1515: 193s 1515: namespace std 193s 1515: { 193s 1515: # 264 "/usr/include/c++/15/new" 3 4 193s 1515: } 193s 1515: 193s 1515: #pragma GCC visibility pop 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 3158 "/usr/include/doctest/doctest.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/cstdio" 1 3 4 193s 1515: # 47 "/usr/include/c++/15/cstdio" 3 4 193s 1515: # 1 "/usr/include/stdio.h" 1 3 4 193s 1515: # 28 "/usr/include/stdio.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 193s 1515: # 29 "/usr/include/stdio.h" 2 3 4 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 35 "/usr/include/stdio.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdarg.h" 1 3 4 193s 1515: # 40 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdarg.h" 3 4 193s 1515: typedef __builtin_va_list __gnuc_va_list; 193s 1515: # 38 "/usr/include/stdio.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 1 3 4 193s 1515: # 13 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 3 4 193s 1515: typedef struct 193s 1515: { 193s 1515: int __count; 193s 1515: union 193s 1515: { 193s 1515: unsigned int __wch; 193s 1515: char __wchb[4]; 193s 1515: } __value; 193s 1515: } __mbstate_t; 193s 1515: # 6 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef struct _G_fpos_t 193s 1515: { 193s 1515: __off_t __pos; 193s 1515: __mbstate_t __state; 193s 1515: } __fpos_t; 193s 1515: # 41 "/usr/include/stdio.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h" 1 3 4 193s 1515: # 10 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h" 3 4 193s 1515: typedef struct _G_fpos64_t 193s 1515: { 193s 1515: __off64_t __pos; 193s 1515: __mbstate_t __state; 193s 1515: } __fpos64_t; 193s 1515: # 42 "/usr/include/stdio.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__FILE.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct _IO_FILE; 193s 1515: typedef struct _IO_FILE __FILE; 193s 1515: # 43 "/usr/include/stdio.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/FILE.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct _IO_FILE; 193s 1515: 193s 1515: 193s 1515: typedef struct _IO_FILE FILE; 193s 1515: # 44 "/usr/include/stdio.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 1 3 4 193s 1515: # 35 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 193s 1515: # 36 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 2 3 4 193s 1515: 193s 1515: struct _IO_FILE; 193s 1515: struct _IO_marker; 193s 1515: struct _IO_codecvt; 193s 1515: struct _IO_wide_data; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef void _IO_lock_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct _IO_FILE 193s 1515: { 193s 1515: int _flags; 193s 1515: 193s 1515: 193s 1515: char *_IO_read_ptr; 193s 1515: char *_IO_read_end; 193s 1515: char *_IO_read_base; 193s 1515: char *_IO_write_base; 193s 1515: char *_IO_write_ptr; 193s 1515: char *_IO_write_end; 193s 1515: char *_IO_buf_base; 193s 1515: char *_IO_buf_end; 193s 1515: 193s 1515: 193s 1515: char *_IO_save_base; 193s 1515: char *_IO_backup_base; 193s 1515: char *_IO_save_end; 193s 1515: 193s 1515: struct _IO_marker *_markers; 193s 1515: 193s 1515: struct _IO_FILE *_chain; 193s 1515: 193s 1515: int _fileno; 193s 1515: int _flags2:24; 193s 1515: 193s 1515: char _short_backupbuf[1]; 193s 1515: __off_t _old_offset; 193s 1515: 193s 1515: 193s 1515: unsigned short _cur_column; 193s 1515: signed char _vtable_offset; 193s 1515: char _shortbuf[1]; 193s 1515: 193s 1515: _IO_lock_t *_lock; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __off64_t _offset; 193s 1515: 193s 1515: struct _IO_codecvt *_codecvt; 193s 1515: struct _IO_wide_data *_wide_data; 193s 1515: struct _IO_FILE *_freeres_list; 193s 1515: void *_freeres_buf; 193s 1515: struct _IO_FILE **_prevchain; 193s 1515: int _mode; 193s 1515: 193s 1515: 193s 1515: 193s 1515: __uint64_t _total_written; 193s 1515: 193s 1515: int _unused3; 193s 1515: 193s 1515: 193s 1515: char _unused2[12 * sizeof (int) - 5 * sizeof (void *)]; 193s 1515: }; 193s 1515: # 45 "/usr/include/stdio.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/cookie_io_functions_t.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/cookie_io_functions_t.h" 3 4 193s 1515: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, 193s 1515: size_t __nbytes); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, 193s 1515: size_t __nbytes); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); 193s 1515: 193s 1515: 193s 1515: typedef int cookie_close_function_t (void *__cookie); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef struct _IO_cookie_io_functions_t 193s 1515: { 193s 1515: cookie_read_function_t *read; 193s 1515: cookie_write_function_t *write; 193s 1515: cookie_seek_function_t *seek; 193s 1515: cookie_close_function_t *close; 193s 1515: } cookie_io_functions_t; 193s 1515: # 48 "/usr/include/stdio.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __gnuc_va_list va_list; 193s 1515: # 87 "/usr/include/stdio.h" 3 4 193s 1515: typedef __fpos64_t fpos_t; 193s 1515: 193s 1515: 193s 1515: typedef __fpos64_t fpos64_t; 193s 1515: # 129 "/usr/include/stdio.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h" 1 3 4 193s 1515: # 130 "/usr/include/stdio.h" 2 3 4 193s 1515: # 149 "/usr/include/stdio.h" 3 4 193s 1515: extern FILE *stdin; 193s 1515: extern FILE *stdout; 193s 1515: extern FILE *stderr; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int remove (const char *__filename) noexcept (true); 193s 1515: 193s 1515: extern int rename (const char *__old, const char *__new) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int renameat (int __oldfd, const char *__old, int __newfd, 193s 1515: const char *__new) noexcept (true); 193s 1515: # 179 "/usr/include/stdio.h" 3 4 193s 1515: extern int renameat2 (int __oldfd, const char *__old, int __newfd, 193s 1515: const char *__new, unsigned int __flags) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); 193s 1515: # 201 "/usr/include/stdio.h" 3 4 193s 1515: extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") 193s 1515: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern FILE *tmpfile64 (void) 193s 1515: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *tmpnam (char[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *tmpnam_r (char __s[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: # 231 "/usr/include/stdio.h" 3 4 193s 1515: extern char *tempnam (const char *__dir, const char *__pfx) 193s 1515: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fflush (FILE *__stream); 193s 1515: # 248 "/usr/include/stdio.h" 3 4 193s 1515: extern int fflush_unlocked (FILE *__stream); 193s 1515: # 258 "/usr/include/stdio.h" 3 4 193s 1515: extern int fcloseall (void); 193s 1515: # 279 "/usr/include/stdio.h" 3 4 193s 1515: extern FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) __asm__ ("" "fopen64") 193s 1515: 193s 1515: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 193s 1515: extern FILE *freopen (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern FILE *fopen64 (const char *__restrict __filename, 193s 1515: const char *__restrict __modes) 193s 1515: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 193s 1515: extern FILE *freopen64 (const char *__restrict __filename, 193s 1515: const char *__restrict __modes, 193s 1515: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern FILE *fdopen (int __fd, const char *__modes) noexcept (true) 193s 1515: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern FILE *fopencookie (void *__restrict __magic_cookie, 193s 1515: const char *__restrict __modes, 193s 1515: cookie_io_functions_t __io_funcs) noexcept (true) 193s 1515: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) 193s 1515: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) noexcept (true) 193s 1515: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 193s 1515: # 337 "/usr/include/stdio.h" 3 4 193s 1515: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) noexcept (true) 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, 193s 1515: int __modes, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, 193s 1515: size_t __size) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern void setlinebuf (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fprintf (FILE *__restrict __stream, 193s 1515: const char *__restrict __format, ...) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int printf (const char *__restrict __format, ...); 193s 1515: 193s 1515: extern int sprintf (char *__restrict __s, 193s 1515: const char *__restrict __format, ...) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, 193s 1515: __gnuc_va_list __arg) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); 193s 1515: 193s 1515: extern int vsprintf (char *__restrict __s, const char *__restrict __format, 193s 1515: __gnuc_va_list __arg) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int snprintf (char *__restrict __s, size_t __maxlen, 193s 1515: const char *__restrict __format, ...) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); 193s 1515: 193s 1515: extern int vsnprintf (char *__restrict __s, size_t __maxlen, 193s 1515: const char *__restrict __format, __gnuc_va_list __arg) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, 193s 1515: __gnuc_va_list __arg) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 193s 1515: extern int __asprintf (char **__restrict __ptr, 193s 1515: const char *__restrict __fmt, ...) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 193s 1515: extern int asprintf (char **__restrict __ptr, 193s 1515: const char *__restrict __fmt, ...) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int vdprintf (int __fd, const char *__restrict __fmt, 193s 1515: __gnuc_va_list __arg) 193s 1515: __attribute__ ((__format__ (__printf__, 2, 0))); 193s 1515: extern int dprintf (int __fd, const char *__restrict __fmt, ...) 193s 1515: __attribute__ ((__format__ (__printf__, 2, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fscanf (FILE *__restrict __stream, 193s 1515: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: extern int sscanf (const char *__restrict __s, 193s 1515: const char *__restrict __format, ...) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 193s 1515: # 441 "/usr/include/stdio.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc23_fscanf") 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc23_scanf") 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc23_sscanf") 193s 1515: 193s 1515: ; 193s 1515: # 493 "/usr/include/stdio.h" 3 4 193s 1515: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, 193s 1515: __gnuc_va_list __arg) 193s 1515: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) 193s 1515: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: extern int vsscanf (const char *__restrict __s, 193s 1515: const char *__restrict __format, __gnuc_va_list __arg) 193s 1515: noexcept (true) __attribute__ ((__format__ (__scanf__, 2, 0))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfscanf") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vscanf") 193s 1515: 193s 1515: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 193s 1515: extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc23_vsscanf") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__format__ (__scanf__, 2, 0))); 193s 1515: # 578 "/usr/include/stdio.h" 3 4 193s 1515: extern int fgetc (FILE *__stream) __attribute__ ((__nonnull__ (1))); 193s 1515: extern int getc (FILE *__stream) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getchar (void); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getc_unlocked (FILE *__stream) __attribute__ ((__nonnull__ (1))); 193s 1515: extern int getchar_unlocked (void); 193s 1515: # 603 "/usr/include/stdio.h" 3 4 193s 1515: extern int fgetc_unlocked (FILE *__stream) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fputc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 193s 1515: extern int putc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int putchar (int __c); 193s 1515: # 627 "/usr/include/stdio.h" 3 4 193s 1515: extern int fputc_unlocked (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int putc_unlocked (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 193s 1515: extern int putchar_unlocked (int __c); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int getw (FILE *__stream) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int putw (int __w, FILE *__stream) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 193s 1515: # 667 "/usr/include/stdio.h" 3 4 193s 1515: extern char *gets (char *__s) __attribute__ ((__warn_unused_result__)) __attribute__ ((__deprecated__)); 193s 1515: # 677 "/usr/include/stdio.h" 3 4 193s 1515: extern char *fgets_unlocked (char *__restrict __s, int __n, 193s 1515: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__nonnull__ (3))); 193s 1515: # 689 "/usr/include/stdio.h" 3 4 193s 1515: extern __ssize_t __getdelim (char **__restrict __lineptr, 193s 1515: size_t *__restrict __n, int __delimiter, 193s 1515: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))); 193s 1515: extern __ssize_t getdelim (char **__restrict __lineptr, 193s 1515: size_t *__restrict __n, int __delimiter, 193s 1515: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))); 193s 1515: 193s 1515: 193s 1515: extern __ssize_t getline (char **__restrict __lineptr, 193s 1515: size_t *__restrict __n, 193s 1515: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fputs (const char *__restrict __s, FILE *__restrict __stream) 193s 1515: __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int puts (const char *__s); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ungetc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t fread (void *__restrict __ptr, size_t __size, 193s 1515: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__nonnull__ (4))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t fwrite (const void *__restrict __ptr, size_t __size, 193s 1515: size_t __n, FILE *__restrict __s) __attribute__ ((__nonnull__ (4))); 193s 1515: # 745 "/usr/include/stdio.h" 3 4 193s 1515: extern int fputs_unlocked (const char *__restrict __s, 193s 1515: FILE *__restrict __stream) __attribute__ ((__nonnull__ (2))); 193s 1515: # 756 "/usr/include/stdio.h" 3 4 193s 1515: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, 193s 1515: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__nonnull__ (4))); 193s 1515: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, 193s 1515: size_t __n, FILE *__restrict __stream) 193s 1515: __attribute__ ((__nonnull__ (4))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fseek (FILE *__stream, long int __off, int __whence) 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void rewind (FILE *__stream) __attribute__ ((__nonnull__ (1))); 193s 1515: # 802 "/usr/include/stdio.h" 3 4 193s 1515: extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64") 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: # 828 "/usr/include/stdio.h" 3 4 193s 1515: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: extern int fsetpos (FILE *__stream, const fpos_t *__pos) __asm__ ("" "fsetpos64") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void clearerr (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: extern int feof (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: extern int ferror (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void clearerr_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: extern int feof_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern int ferror_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void perror (const char *__s) __attribute__ ((__cold__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fileno (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fileno_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: # 887 "/usr/include/stdio.h" 3 4 193s 1515: extern int pclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern FILE *popen (const char *__command, const char *__modes) 193s 1515: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (pclose, 1))) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *ctermid (char *__s) noexcept (true) 193s 1515: __attribute__ ((__access__ (__write_only__, 1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *cuserid (char *__s) 193s 1515: __attribute__ ((__access__ (__write_only__, 1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct obstack; 193s 1515: 193s 1515: 193s 1515: extern int obstack_printf (struct obstack *__restrict __obstack, 193s 1515: const char *__restrict __format, ...) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))); 193s 1515: extern int obstack_vprintf (struct obstack *__restrict __obstack, 193s 1515: const char *__restrict __format, 193s 1515: __gnuc_va_list __args) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void flockfile (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ftrylockfile (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern void funlockfile (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 949 "/usr/include/stdio.h" 3 4 193s 1515: extern int __uflow (FILE *); 193s 1515: extern int __overflow (FILE *, int); 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 1 3 4 193s 1515: # 26 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 3 4 193s 1515: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, 193s 1515: const char *__restrict __format, ...) noexcept (true) 193s 1515: __attribute__ ((__access__ (__write_only__, 1, 3))); 193s 1515: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, 193s 1515: const char *__restrict __format, 193s 1515: __gnuc_va_list __ap) noexcept (true) 193s 1515: __attribute__ ((__access__ (__write_only__, 1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, 193s 1515: size_t __slen, const char *__restrict __format, 193s 1515: ...) noexcept (true) 193s 1515: __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, 193s 1515: size_t __slen, const char *__restrict __format, 193s 1515: __gnuc_va_list __ap) noexcept (true) 193s 1515: __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, 193s 1515: const char *__restrict __format, ...) 193s 1515: __attribute__ ((__nonnull__ (1))); 193s 1515: extern int __printf_chk (int __flag, const char *__restrict __format, ...); 193s 1515: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, 193s 1515: const char *__restrict __format, 193s 1515: __gnuc_va_list __ap) __attribute__ ((__nonnull__ (1))); 193s 1515: extern int __vprintf_chk (int __flag, const char *__restrict __format, 193s 1515: __gnuc_va_list __ap); 193s 1515: 193s 1515: 193s 1515: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, 193s 1515: ...) __attribute__ ((__format__ (__printf__, 3, 4))); 193s 1515: extern int __vdprintf_chk (int __fd, int __flag, 193s 1515: const char *__restrict __fmt, __gnuc_va_list __arg) 193s 1515: __attribute__ ((__format__ (__printf__, 3, 0))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __asprintf_chk (char **__restrict __ptr, int __flag, 193s 1515: const char *__restrict __fmt, ...) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); 193s 1515: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, 193s 1515: const char *__restrict __fmt, __gnuc_va_list __arg) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); 193s 1515: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, 193s 1515: int __flag, const char *__restrict __format, 193s 1515: ...) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); 193s 1515: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, 193s 1515: int __flag, 193s 1515: const char *__restrict __format, 193s 1515: __gnuc_va_list __args) 193s 1515: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *__gets_warn (char *__str) __asm__ ("" "gets") 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size"))) 193s 1515: ; 193s 1515: 193s 1515: extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: 193s 1515: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, 193s 1515: FILE *__restrict __stream) 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__nonnull__ (4))); 193s 1515: 193s 1515: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, 193s 1515: size_t __size, size_t __n, 193s 1515: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (5))); 193s 1515: 193s 1515: 193s 1515: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 193s 1515: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, 193s 1515: int __n, FILE *__restrict __stream) 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__nonnull__ (4))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: 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") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, 193s 1515: size_t __size, size_t __n, 193s 1515: FILE *__restrict __stream) 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (5))); 193s 1515: # 955 "/usr/include/stdio.h" 2 3 4 193s 1515: # 966 "/usr/include/stdio.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 1 3 4 193s 1515: # 46 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 3 4 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: getchar (void) 193s 1515: { 193s 1515: return getc (stdin); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: fgetc_unlocked (FILE *__fp) 193s 1515: { 193s 1515: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: getc_unlocked (FILE *__fp) 193s 1515: { 193s 1515: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: getchar_unlocked (void) 193s 1515: { 193s 1515: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: putchar (int __c) 193s 1515: { 193s 1515: return putc (__c, stdout); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: fputc_unlocked (int __c, FILE *__stream) 193s 1515: { 193s 1515: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: putc_unlocked (int __c, FILE *__stream) 193s 1515: { 193s 1515: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: putchar_unlocked (int __c) 193s 1515: { 193s 1515: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t 193s 1515: getline (char **__lineptr, size_t *__n, FILE *__stream) 193s 1515: { 193s 1515: return __getdelim (__lineptr, __n, '\n', __stream); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) noexcept (true) 193s 1515: { 193s 1515: return (((__stream)->_flags & 0x0010) != 0); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) noexcept (true) 193s 1515: { 193s 1515: return (((__stream)->_flags & 0x0020) != 0); 193s 1515: } 193s 1515: # 967 "/usr/include/stdio.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) noexcept (true) 193s 1515: { 193s 1515: return __builtin___sprintf_chk (__s, 3 - 1, 193s 1515: __builtin_dynamic_object_size (__s, 1), __fmt, 193s 1515: __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: # 54 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) vsprintf (char * __restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: return __builtin___vsprintf_chk (__s, 3 - 1, 193s 1515: __builtin_dynamic_object_size (__s, 1), __fmt, __ap); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: return __builtin___snprintf_chk (__s, __n, 3 - 1, 193s 1515: __builtin_dynamic_object_size (__s, 1), __fmt, 193s 1515: __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: # 92 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) vsnprintf (char * __restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return __builtin___vsnprintf_chk (__s, __n, 3 - 1, 193s 1515: __builtin_dynamic_object_size (__s, 1), __fmt, __ap); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) int 193s 1515: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) 193s 1515: { 193s 1515: return __fprintf_chk (__stream, 3 - 1, __fmt, 193s 1515: __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: printf (const char *__restrict __fmt, ...) 193s 1515: { 193s 1515: return __printf_chk (3 - 1, __fmt, __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: # 151 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: vprintf (const char * __restrict __fmt, 193s 1515: __gnuc_va_list __ap) 193s 1515: { 193s 1515: 193s 1515: return __vfprintf_chk (stdout, 3 - 1, __fmt, __ap); 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) int 193s 1515: vfprintf (FILE *__restrict __stream, 193s 1515: const char *__restrict __fmt, __gnuc_va_list __ap) 193s 1515: { 193s 1515: return __vfprintf_chk (__stream, 3 - 1, __fmt, __ap); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: dprintf (int __fd, const char *__restrict __fmt, ...) 193s 1515: { 193s 1515: return __dprintf_chk (__fd, 3 - 1, __fmt, 193s 1515: __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: # 194 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) 193s 1515: { 193s 1515: return __vdprintf_chk (__fd, 3 - 1, __fmt, __ap); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) 193s 1515: { 193s 1515: return __asprintf_chk (__ptr, 3 - 1, __fmt, 193s 1515: __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: return __asprintf_chk (__ptr, 3 - 1, __fmt, 193s 1515: __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: return __obstack_printf_chk (__obstack, 3 - 1, __fmt, 193s 1515: __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: # 271 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: return __vasprintf_chk (__ptr, 3 - 1, __fmt, __ap); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: return __obstack_vprintf_chk (__obstack, 3 - 1, __fmt, 193s 1515: __ap); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 193s 1515: gets (char * __str) 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: if (__builtin_dynamic_object_size (__str, 1) != (size_t) -1) 193s 1515: return __gets_chk (__str, __builtin_dynamic_object_size (__str, 1)); 193s 1515: return __gets_warn (__str); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__nonnull__ (3))) char * 193s 1515: fgets (char * __restrict __s, int __n, 193s 1515: FILE *__restrict __stream) 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__s, 1); 193s 1515: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((sizeof (char))))) && (((unsigned int) (__n)) <= ((__sz)) / ((sizeof (char))))))) 193s 1515: return __fgets_alias (__s, __n, __stream); 193s 1515: 193s 1515: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (sizeof (char)))) && !(((unsigned int) (__n)) <= (__sz) / (sizeof (char))))) 193s 1515: return __fgets_chk_warn (__s, __sz, __n, __stream); 193s 1515: 193s 1515: return __fgets_chk (__s, __sz, __n, __stream); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))) size_t 193s 1515: fread (void * __restrict __ptr, 193s 1515: size_t __size, size_t __n, FILE *__restrict __stream) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__ptr, 0); 193s 1515: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((__size)))) && (((unsigned int) (__n)) <= ((__sz)) / ((__size)))))) 193s 1515: return __fread_alias (__ptr, __size, __n, __stream); 193s 1515: 193s 1515: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (__size))) && !(((unsigned int) (__n)) <= (__sz) / (__size)))) 193s 1515: return __fread_chk_warn (__ptr, __sz, __size, __n, __stream); 193s 1515: 193s 1515: return __fread_chk (__ptr, __sz, __size, __n, __stream); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) 193s 1515: __attribute__ ((__nonnull__ (3))) char * 193s 1515: fgets_unlocked (char * __restrict __s, 193s 1515: int __n, FILE *__restrict __stream) 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__s, 1); 193s 1515: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((sizeof (char))))) && (((unsigned int) (__n)) <= ((__sz)) / ((sizeof (char))))))) 193s 1515: return __fgets_unlocked_alias (__s, __n, __stream); 193s 1515: 193s 1515: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (sizeof (char)))) && !(((unsigned int) (__n)) <= (__sz) / (sizeof (char))))) 193s 1515: return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream); 193s 1515: 193s 1515: return __fgets_unlocked_chk (__s, __sz, __n, __stream); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))) size_t 193s 1515: fread_unlocked (void * __restrict __ptr, 193s 1515: size_t __size, size_t __n, FILE *__restrict __stream) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__ptr, 0); 193s 1515: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((__size)))) && (((unsigned int) (__n)) <= ((__sz)) / ((__size)))))) 193s 1515: { 193s 1515: 193s 1515: if (__builtin_constant_p (__size) 193s 1515: && __builtin_constant_p (__n) 193s 1515: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) 193s 1515: && __size * __n <= 8) 193s 1515: { 193s 1515: size_t __cnt = __size * __n; 193s 1515: char *__cptr = (char *) __ptr; 193s 1515: if (__cnt == 0) 193s 1515: return 0; 193s 1515: 193s 1515: for (; __cnt > 0; --__cnt) 193s 1515: { 193s 1515: int __c = getc_unlocked (__stream); 193s 1515: if (__c == (-1)) 193s 1515: break; 193s 1515: *__cptr++ = __c; 193s 1515: } 193s 1515: return (__cptr - (char *) __ptr) / __size; 193s 1515: } 193s 1515: 193s 1515: return __fread_unlocked_alias (__ptr, __size, __n, __stream); 193s 1515: } 193s 1515: 193s 1515: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (__size))) && !(((unsigned int) (__n)) <= (__sz) / (__size)))) 193s 1515: return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream); 193s 1515: 193s 1515: return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream); 193s 1515: 193s 1515: } 193s 1515: # 971 "/usr/include/stdio.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 48 "/usr/include/c++/15/cstdio" 2 3 4 193s 1515: # 98 "/usr/include/c++/15/cstdio" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: using ::FILE; 193s 1515: using ::fpos_t; 193s 1515: 193s 1515: using ::clearerr; 193s 1515: using ::fclose; 193s 1515: using ::feof; 193s 1515: using ::ferror; 193s 1515: using ::fflush; 193s 1515: using ::fgetc; 193s 1515: using ::fgetpos; 193s 1515: using ::fgets; 193s 1515: using ::fopen; 193s 1515: using ::fprintf; 193s 1515: using ::fputc; 193s 1515: using ::fputs; 193s 1515: using ::fread; 193s 1515: using ::freopen; 193s 1515: using ::fscanf; 193s 1515: using ::fseek; 193s 1515: using ::fsetpos; 193s 1515: using ::ftell; 193s 1515: using ::fwrite; 193s 1515: using ::getc; 193s 1515: using ::getchar; 193s 1515: 193s 1515: 193s 1515: using ::gets; 193s 1515: 193s 1515: using ::perror; 193s 1515: using ::printf; 193s 1515: using ::putc; 193s 1515: using ::putchar; 193s 1515: using ::puts; 193s 1515: using ::remove; 193s 1515: using ::rename; 193s 1515: using ::rewind; 193s 1515: using ::scanf; 193s 1515: using ::setbuf; 193s 1515: using ::setvbuf; 193s 1515: using ::sprintf; 193s 1515: using ::sscanf; 193s 1515: using ::tmpfile; 193s 1515: 193s 1515: using ::tmpnam; 193s 1515: 193s 1515: using ::ungetc; 193s 1515: using ::vfprintf; 193s 1515: using ::vprintf; 193s 1515: using ::vsprintf; 193s 1515: } 193s 1515: # 159 "/usr/include/c++/15/cstdio" 3 4 193s 1515: namespace __gnu_cxx 193s 1515: { 193s 1515: # 177 "/usr/include/c++/15/cstdio" 3 4 193s 1515: using ::snprintf; 193s 1515: using ::vfscanf; 193s 1515: using ::vscanf; 193s 1515: using ::vsnprintf; 193s 1515: using ::vsscanf; 193s 1515: 193s 1515: } 193s 1515: 193s 1515: namespace std 193s 1515: { 193s 1515: using ::__gnu_cxx::snprintf; 193s 1515: using ::__gnu_cxx::vfscanf; 193s 1515: using ::__gnu_cxx::vscanf; 193s 1515: using ::__gnu_cxx::vsnprintf; 193s 1515: using ::__gnu_cxx::vsscanf; 193s 1515: } 193s 1515: # 3159 "/usr/include/doctest/doctest.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/cstdlib" 1 3 4 193s 1515: # 80 "/usr/include/c++/15/cstdlib" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wpedantic" 193s 1515: 193s 1515: 193s 1515: 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 131 "/usr/include/c++/15/cstdlib" 3 4 193s 1515: extern "C++" 193s 1515: { 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: using ::div_t; 193s 1515: using ::ldiv_t; 193s 1515: 193s 1515: using ::abort; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::atexit; 193s 1515: 193s 1515: 193s 1515: using ::at_quick_exit; 193s 1515: 193s 1515: 193s 1515: using ::atof; 193s 1515: using ::atoi; 193s 1515: using ::atol; 193s 1515: using ::bsearch; 193s 1515: using ::calloc; 193s 1515: using ::div; 193s 1515: using ::exit; 193s 1515: using ::free; 193s 1515: using ::getenv; 193s 1515: using ::labs; 193s 1515: using ::ldiv; 193s 1515: using ::malloc; 193s 1515: 193s 1515: using ::mblen; 193s 1515: using ::mbstowcs; 193s 1515: using ::mbtowc; 193s 1515: 193s 1515: using ::qsort; 193s 1515: 193s 1515: 193s 1515: using ::quick_exit; 193s 1515: 193s 1515: 193s 1515: using ::rand; 193s 1515: using ::realloc; 193s 1515: using ::srand; 193s 1515: using ::strtod; 193s 1515: using ::strtol; 193s 1515: using ::strtoul; 193s 1515: using ::system; 193s 1515: 193s 1515: using ::wcstombs; 193s 1515: using ::wctomb; 193s 1515: 193s 1515: 193s 1515: 193s 1515: inline ldiv_t 193s 1515: div(long __i, long __j) noexcept { return ldiv(__i, __j); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 205 "/usr/include/c++/15/cstdlib" 3 4 193s 1515: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::lldiv_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::_Exit; 193s 1515: 193s 1515: 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 193s 1515: using ::llabs; 193s 1515: 193s 1515: inline lldiv_t 193s 1515: div(long long __n, long long __d) 193s 1515: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } 193s 1515: 193s 1515: using ::lldiv; 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 240 "/usr/include/c++/15/cstdlib" 3 4 193s 1515: using ::atoll; 193s 1515: using ::strtoll; 193s 1515: using ::strtoull; 193s 1515: 193s 1515: using ::strtof; 193s 1515: using ::strtold; 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: namespace std 193s 1515: { 193s 1515: 193s 1515: using ::__gnu_cxx::lldiv_t; 193s 1515: 193s 1515: using ::__gnu_cxx::_Exit; 193s 1515: 193s 1515: using ::__gnu_cxx::llabs; 193s 1515: using ::__gnu_cxx::div; 193s 1515: using ::__gnu_cxx::lldiv; 193s 1515: 193s 1515: using ::__gnu_cxx::atoll; 193s 1515: using ::__gnu_cxx::strtof; 193s 1515: using ::__gnu_cxx::strtoll; 193s 1515: using ::__gnu_cxx::strtoull; 193s 1515: using ::__gnu_cxx::strtold; 193s 1515: } 193s 1515: # 284 "/usr/include/c++/15/cstdlib" 3 4 193s 1515: } 193s 1515: # 3160 "/usr/include/doctest/doctest.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/cstring" 1 3 4 193s 1515: # 47 "/usr/include/c++/15/cstring" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 193s 1515: # 48 "/usr/include/c++/15/cstring" 2 3 4 193s 1515: # 1 "/usr/include/string.h" 1 3 4 193s 1515: # 26 "/usr/include/string.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 193s 1515: # 27 "/usr/include/string.h" 2 3 4 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 34 "/usr/include/string.h" 2 3 4 193s 1515: # 43 "/usr/include/string.h" 3 4 193s 1515: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, 193s 1515: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern void *memmove (void *__dest, const void *__src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, 193s 1515: int __c, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 4))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *memset (void *__s, int __c, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int memcmp (const void *__s1, const void *__s2, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: # 80 "/usr/include/string.h" 3 4 193s 1515: extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" 193s 1515: { 193s 1515: extern void *memchr (void *__s, int __c, size_t __n) 193s 1515: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern const void *memchr (const void *__s, int __c, size_t __n) 193s 1515: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * 193s 1515: memchr (void *__s, int __c, size_t __n) noexcept (true) 193s 1515: { 193s 1515: return __builtin_memchr (__s, __c, __n); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * 193s 1515: memchr (const void *__s, int __c, size_t __n) noexcept (true) 193s 1515: { 193s 1515: return __builtin_memchr (__s, __c, __n); 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: # 115 "/usr/include/string.h" 3 4 193s 1515: extern "C++" void *rawmemchr (void *__s, int __c) 193s 1515: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern "C++" const void *rawmemchr (const void *__s, int __c) 193s 1515: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" void *memrchr (void *__s, int __c, size_t __n) 193s 1515: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) 193s 1515: __attribute__ ((__access__ (__read_only__, 1, 3))); 193s 1515: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) 193s 1515: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) 193s 1515: __attribute__ ((__access__ (__read_only__, 1, 3))); 193s 1515: # 141 "/usr/include/string.h" 3 4 193s 1515: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: extern char *strncpy (char *__restrict __dest, 193s 1515: const char *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern char *strcat (char *__restrict __dest, const char *__restrict __src) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: extern char *strncat (char *__restrict __dest, const char *__restrict __src, 193s 1515: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int strcmp (const char *__s1, const char *__s2) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: extern int strncmp (const char *__s1, const char *__s2, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int strcoll (const char *__s1, const char *__s2) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: extern size_t strxfrm (char *__restrict __dest, 193s 1515: const char *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 193s 1515: 193s 1515: 193s 1515: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, 193s 1515: locale_t __l) noexcept (true) __attribute__ ((__nonnull__ (2, 4))) 193s 1515: __attribute__ ((__access__ (__write_only__, 1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *strdup (const char *__s) 193s 1515: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *strndup (const char *__string, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 193s 1515: # 224 "/usr/include/string.h" 3 4 193s 1515: extern "C++" 193s 1515: { 193s 1515: extern char *strchr (char *__s, int __c) 193s 1515: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern const char *strchr (const char *__s, int __c) 193s 1515: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 193s 1515: strchr (char *__s, int __c) noexcept (true) 193s 1515: { 193s 1515: return __builtin_strchr (__s, __c); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 193s 1515: strchr (const char *__s, int __c) noexcept (true) 193s 1515: { 193s 1515: return __builtin_strchr (__s, __c); 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" 193s 1515: { 193s 1515: extern char *strrchr (char *__s, int __c) 193s 1515: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern const char *strrchr (const char *__s, int __c) 193s 1515: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 193s 1515: strrchr (char *__s, int __c) noexcept (true) 193s 1515: { 193s 1515: return __builtin_strrchr (__s, __c); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 193s 1515: strrchr (const char *__s, int __c) noexcept (true) 193s 1515: { 193s 1515: return __builtin_strrchr (__s, __c); 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: # 281 "/usr/include/string.h" 3 4 193s 1515: extern "C++" char *strchrnul (char *__s, int __c) 193s 1515: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern "C++" const char *strchrnul (const char *__s, int __c) 193s 1515: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: # 293 "/usr/include/string.h" 3 4 193s 1515: extern size_t strcspn (const char *__s, const char *__reject) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern size_t strspn (const char *__s, const char *__accept) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern "C++" 193s 1515: { 193s 1515: extern char *strpbrk (char *__s, const char *__accept) 193s 1515: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: extern const char *strpbrk (const char *__s, const char *__accept) 193s 1515: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 193s 1515: strpbrk (char *__s, const char *__accept) noexcept (true) 193s 1515: { 193s 1515: return __builtin_strpbrk (__s, __accept); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 193s 1515: strpbrk (const char *__s, const char *__accept) noexcept (true) 193s 1515: { 193s 1515: return __builtin_strpbrk (__s, __accept); 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" 193s 1515: { 193s 1515: extern char *strstr (char *__haystack, const char *__needle) 193s 1515: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: extern const char *strstr (const char *__haystack, const char *__needle) 193s 1515: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 193s 1515: strstr (char *__haystack, const char *__needle) noexcept (true) 193s 1515: { 193s 1515: return __builtin_strstr (__haystack, __needle); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 193s 1515: strstr (const char *__haystack, const char *__needle) noexcept (true) 193s 1515: { 193s 1515: return __builtin_strstr (__haystack, __needle); 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *strtok (char *__restrict __s, const char *__restrict __delim) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *__strtok_r (char *__restrict __s, 193s 1515: const char *__restrict __delim, 193s 1515: char **__restrict __save_ptr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 193s 1515: 193s 1515: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, 193s 1515: char **__restrict __save_ptr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" char *strcasestr (char *__haystack, const char *__needle) 193s 1515: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: extern "C++" const char *strcasestr (const char *__haystack, 193s 1515: const char *__needle) 193s 1515: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: # 389 "/usr/include/string.h" 3 4 193s 1515: extern void *memmem (const void *__haystack, size_t __haystacklen, 193s 1515: const void *__needle, size_t __needlelen) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))) 193s 1515: __attribute__ ((__access__ (__read_only__, 1, 2))) 193s 1515: __attribute__ ((__access__ (__read_only__, 3, 4))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void *__mempcpy (void *__restrict __dest, 193s 1515: const void *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: extern void *mempcpy (void *__restrict __dest, 193s 1515: const void *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t strlen (const char *__s) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t strnlen (const char *__string, size_t __maxlen) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *strerror (int __errnum) noexcept (true); 193s 1515: # 444 "/usr/include/string.h" 3 4 193s 1515: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern const char *strerrordesc_np (int __err) noexcept (true); 193s 1515: 193s 1515: extern const char *strerrorname_np (int __err) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *strerror_l (int __errnum, locale_t __l) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/strings.h" 1 3 4 193s 1515: # 23 "/usr/include/strings.h" 3 4 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 24 "/usr/include/strings.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int bcmp (const void *__s1, const void *__s2, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern void bcopy (const void *__src, void *__dest, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern void bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" 193s 1515: { 193s 1515: extern char *index (char *__s, int __c) 193s 1515: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern const char *index (const char *__s, int __c) 193s 1515: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 193s 1515: index (char *__s, int __c) noexcept (true) 193s 1515: { 193s 1515: return __builtin_index (__s, __c); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 193s 1515: index (const char *__s, int __c) noexcept (true) 193s 1515: { 193s 1515: return __builtin_index (__s, __c); 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" 193s 1515: { 193s 1515: extern char *rindex (char *__s, int __c) 193s 1515: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: extern const char *rindex (const char *__s, int __c) 193s 1515: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 193s 1515: rindex (char *__s, int __c) noexcept (true) 193s 1515: { 193s 1515: return __builtin_rindex (__s, __c); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 193s 1515: rindex (const char *__s, int __c) noexcept (true) 193s 1515: { 193s 1515: return __builtin_rindex (__s, __c); 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: # 104 "/usr/include/strings.h" 3 4 193s 1515: extern int ffs (int __i) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int ffsl (long int __l) noexcept (true) __attribute__ ((__const__)); 193s 1515: __extension__ extern int ffsll (long long int __ll) 193s 1515: noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int strcasecmp (const char *__s1, const char *__s2) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int strncasecmp_l (const char *__s1, const char *__s2, 193s 1515: size_t __n, locale_t __loc) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 1 3 4 193s 1515: # 22 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 193s 1515: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) noexcept (true) 193s 1515: { 193s 1515: (void) __builtin___memmove_chk (__dest, __src, __len, 193s 1515: __builtin_dynamic_object_size (__dest, 0)); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 193s 1515: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) noexcept (true) 193s 1515: { 193s 1515: (void) __builtin___memset_chk (__dest, '\0', __len, 193s 1515: __builtin_dynamic_object_size (__dest, 0)); 193s 1515: } 193s 1515: # 145 "/usr/include/strings.h" 2 3 4 193s 1515: # 463 "/usr/include/string.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void explicit_bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *strsep (char **__restrict __stringp, 193s 1515: const char *__restrict __delim) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *strsignal (int __sig) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern const char *sigabbrev_np (int __sig) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern const char *sigdescr_np (int __sig) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *__stpncpy (char *__restrict __dest, 193s 1515: const char *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: extern char *stpncpy (char *__restrict __dest, 193s 1515: const char *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t strlcpy (char *__restrict __dest, 193s 1515: const char *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t strlcat (char *__restrict __dest, 193s 1515: const char *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int strverscmp (const char *__s1, const char *__s2) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern char *strfry (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern void *memfrob (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) 193s 1515: __attribute__ ((__access__ (__read_write__, 1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" char *basename (char *__filename) 193s 1515: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); 193s 1515: extern "C++" const char *basename (const char *__filename) 193s 1515: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); 193s 1515: # 548 "/usr/include/string.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 1 3 4 193s 1515: # 25 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 193s 1515: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: return __builtin___memcpy_chk (__dest, __src, __len, 193s 1515: __builtin_dynamic_object_size (__dest, 0)); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 193s 1515: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) noexcept (true) 193s 1515: { 193s 1515: return __builtin___memmove_chk (__dest, __src, __len, 193s 1515: __builtin_dynamic_object_size (__dest, 0)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 193s 1515: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: return __builtin___mempcpy_chk (__dest, __src, __len, 193s 1515: __builtin_dynamic_object_size (__dest, 0)); 193s 1515: } 193s 1515: # 56 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 193s 1515: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) noexcept (true) 193s 1515: { 193s 1515: return __builtin___memset_chk (__dest, __ch, __len, 193s 1515: __builtin_dynamic_object_size (__dest, 0)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) ; 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 193s 1515: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) noexcept (true) 193s 1515: { 193s 1515: __explicit_bzero_chk (__dest, __len, __builtin_dynamic_object_size (__dest, 0)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 193s 1515: __attribute__ ((__leaf__)) strcpy (char * __restrict __dest, const char *__restrict __src) noexcept (true) 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return __builtin___strcpy_chk (__dest, __src, __builtin_dynamic_object_size (__dest, 1)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 193s 1515: __attribute__ ((__leaf__)) stpcpy (char * __restrict __dest, const char *__restrict __src) noexcept (true) 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return __builtin___stpcpy_chk (__dest, __src, __builtin_dynamic_object_size (__dest, 1)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 193s 1515: __attribute__ ((__leaf__)) strncpy (char * __restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return __builtin___strncpy_chk (__dest, __src, __len, 193s 1515: __builtin_dynamic_object_size (__dest, 1)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 193s 1515: __attribute__ ((__leaf__)) stpncpy (char * __dest, const char *__src, size_t __n) noexcept (true) 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return __builtin___stpncpy_chk (__dest, __src, __n, 193s 1515: __builtin_dynamic_object_size (__dest, 1)); 193s 1515: } 193s 1515: # 135 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 193s 1515: __attribute__ ((__leaf__)) strcat (char * __restrict __dest, const char *__restrict __src) noexcept (true) 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return __builtin___strcat_chk (__dest, __src, __builtin_dynamic_object_size (__dest, 1)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 193s 1515: __attribute__ ((__leaf__)) strncat (char * __restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return __builtin___strncat_chk (__dest, __src, __len, 193s 1515: __builtin_dynamic_object_size (__dest, 1)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern size_t __strlcpy_chk (char *__dest, const char *__src, size_t __n, 193s 1515: size_t __destlen) noexcept (true); 193s 1515: extern size_t __strlcpy_alias (char *__dest, const char *__src, size_t __n) noexcept (true) __asm__ ("" "strlcpy") 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) strlcpy (char * __restrict __dest, const char *__restrict __src, size_t __n) noexcept (true) 193s 1515: 193s 1515: 193s 1515: { 193s 1515: if (__builtin_dynamic_object_size (__dest, 1) != (size_t) -1 193s 1515: && (!__builtin_constant_p (__n > __builtin_dynamic_object_size (__dest, 1)) 193s 1515: || __n > __builtin_dynamic_object_size (__dest, 1))) 193s 1515: return __strlcpy_chk (__dest, __src, __n, __builtin_dynamic_object_size (__dest, 1)); 193s 1515: return __strlcpy_alias (__dest, __src, __n); 193s 1515: } 193s 1515: 193s 1515: extern size_t __strlcat_chk (char *__dest, const char *__src, size_t __n, 193s 1515: size_t __destlen) noexcept (true); 193s 1515: extern size_t __strlcat_alias (char *__dest, const char *__src, size_t __n) noexcept (true) __asm__ ("" "strlcat") 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) strlcat (char * __restrict __dest, const char *__restrict __src, size_t __n) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: if (__builtin_dynamic_object_size (__dest, 1) != (size_t) -1 193s 1515: && (!__builtin_constant_p (__n > __builtin_dynamic_object_size (__dest, 1)) 193s 1515: || __n > __builtin_dynamic_object_size (__dest, 1))) 193s 1515: return __strlcat_chk (__dest, __src, __n, __builtin_dynamic_object_size (__dest, 1)); 193s 1515: return __strlcat_alias (__dest, __src, __n); 193s 1515: } 193s 1515: # 549 "/usr/include/string.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 49 "/usr/include/c++/15/cstring" 2 3 4 193s 1515: # 74 "/usr/include/c++/15/cstring" 3 4 193s 1515: extern "C++" 193s 1515: { 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: using ::memchr; 193s 1515: using ::memcmp; 193s 1515: using ::memcpy; 193s 1515: using ::memmove; 193s 1515: using ::memset; 193s 1515: using ::strcat; 193s 1515: using ::strcmp; 193s 1515: using ::strcoll; 193s 1515: using ::strcpy; 193s 1515: using ::strcspn; 193s 1515: using ::strerror; 193s 1515: using ::strlen; 193s 1515: using ::strncat; 193s 1515: using ::strncmp; 193s 1515: using ::strncpy; 193s 1515: using ::strspn; 193s 1515: 193s 1515: using ::strtok; 193s 1515: 193s 1515: using ::strxfrm; 193s 1515: using ::strchr; 193s 1515: using ::strpbrk; 193s 1515: using ::strrchr; 193s 1515: using ::strstr; 193s 1515: # 127 "/usr/include/c++/15/cstring" 3 4 193s 1515: 193s 1515: } 193s 1515: } 193s 1515: # 3161 "/usr/include/doctest/doctest.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/limits" 1 3 4 193s 1515: # 44 "/usr/include/c++/15/limits" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wpedantic" 193s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 193s 1515: #pragma GCC diagnostic ignored "-Wc++23-extensions" 193s 1515: # 165 "/usr/include/c++/15/limits" 3 4 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum float_round_style 193s 1515: { 193s 1515: round_indeterminate = -1, 193s 1515: round_toward_zero = 0, 193s 1515: round_to_nearest = 1, 193s 1515: round_toward_infinity = 2, 193s 1515: round_toward_neg_infinity = 3 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum float_denorm_style 193s 1515: { 193s 1515: 193s 1515: denorm_indeterminate = -1, 193s 1515: 193s 1515: denorm_absent = 0, 193s 1515: 193s 1515: denorm_present = 1 193s 1515: }; 193s 1515: # 209 "/usr/include/c++/15/limits" 3 4 193s 1515: struct __numeric_limits_base 193s 1515: { 193s 1515: 193s 1515: 193s 1515: static constexpr bool is_specialized = false; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr int digits = 0; 193s 1515: 193s 1515: 193s 1515: static constexpr int digits10 = 0; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr bool is_signed = false; 193s 1515: 193s 1515: 193s 1515: static constexpr bool is_integer = false; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr bool is_exact = false; 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr int radix = 0; 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr int max_exponent = 0; 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: 193s 1515: 193s 1515: static constexpr float_denorm_style has_denorm = denorm_absent; 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr bool is_bounded = false; 193s 1515: # 295 "/usr/include/c++/15/limits" 3 4 193s 1515: static constexpr bool is_modulo = false; 193s 1515: 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: 193s 1515: 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr float_round_style round_style = 193s 1515: round_toward_zero; 193s 1515: }; 193s 1515: # 318 "/usr/include/c++/15/limits" 3 4 193s 1515: template 193s 1515: struct numeric_limits : public __numeric_limits_base 193s 1515: { 193s 1515: 193s 1515: 193s 1515: static constexpr _Tp 193s 1515: min() noexcept { return _Tp(); } 193s 1515: 193s 1515: 193s 1515: static constexpr _Tp 193s 1515: max() noexcept { return _Tp(); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr _Tp 193s 1515: lowest() noexcept { return _Tp(); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr _Tp 193s 1515: epsilon() noexcept { return _Tp(); } 193s 1515: 193s 1515: 193s 1515: static constexpr _Tp 193s 1515: round_error() noexcept { return _Tp(); } 193s 1515: 193s 1515: 193s 1515: static constexpr _Tp 193s 1515: infinity() noexcept { return _Tp(); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr _Tp 193s 1515: quiet_NaN() noexcept { return _Tp(); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr _Tp 193s 1515: signaling_NaN() noexcept { return _Tp(); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr _Tp 193s 1515: denorm_min() noexcept { return _Tp(); } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct numeric_limits 193s 1515: : public numeric_limits<_Tp> { }; 193s 1515: 193s 1515: template 193s 1515: struct numeric_limits 193s 1515: : public numeric_limits<_Tp> { }; 193s 1515: 193s 1515: template 193s 1515: struct numeric_limits 193s 1515: : public numeric_limits<_Tp> { }; 193s 1515: # 390 "/usr/include/c++/15/limits" 3 4 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr bool 193s 1515: min() noexcept { return false; } 193s 1515: 193s 1515: static constexpr bool 193s 1515: max() noexcept { return true; } 193s 1515: 193s 1515: 193s 1515: static constexpr bool 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: static constexpr int digits = 1; 193s 1515: static constexpr int digits10 = 0; 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = false; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr bool 193s 1515: epsilon() noexcept { return false; } 193s 1515: 193s 1515: static constexpr bool 193s 1515: round_error() noexcept { return false; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr bool 193s 1515: infinity() noexcept { return false; } 193s 1515: 193s 1515: static constexpr bool 193s 1515: quiet_NaN() noexcept { return false; } 193s 1515: 193s 1515: static constexpr bool 193s 1515: signaling_NaN() noexcept { return false; } 193s 1515: 193s 1515: static constexpr bool 193s 1515: denorm_min() noexcept { return false; } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = false; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr char 193s 1515: 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); } 193s 1515: 193s 1515: static constexpr char 193s 1515: max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } 193s 1515: 193s 1515: 193s 1515: static constexpr char 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); 193s 1515: static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = ((char)(-1) < 0); 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr char 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr char 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr 193s 1515: char infinity() noexcept { return char(); } 193s 1515: 193s 1515: static constexpr char 193s 1515: quiet_NaN() noexcept { return char(); } 193s 1515: 193s 1515: static constexpr char 193s 1515: signaling_NaN() noexcept { return char(); } 193s 1515: 193s 1515: static constexpr char 193s 1515: denorm_min() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = !is_signed; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr signed char 193s 1515: min() noexcept { return -0x7f - 1; } 193s 1515: 193s 1515: static constexpr signed char 193s 1515: max() noexcept { return 0x7f; } 193s 1515: 193s 1515: 193s 1515: static constexpr signed char 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); 193s 1515: static constexpr int digits10 193s 1515: = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = true; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr signed char 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr signed char 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr signed char 193s 1515: infinity() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr signed char 193s 1515: quiet_NaN() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr signed char 193s 1515: signaling_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr signed char 193s 1515: denorm_min() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = false; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr unsigned char 193s 1515: min() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr unsigned char 193s 1515: max() noexcept { return 0x7f * 2U + 1; } 193s 1515: 193s 1515: 193s 1515: static constexpr unsigned char 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits 193s 1515: = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); 193s 1515: static constexpr int digits10 193s 1515: = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = false; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr unsigned char 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr unsigned char 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr unsigned char 193s 1515: infinity() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned char 193s 1515: quiet_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned char 193s 1515: signaling_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned char 193s 1515: denorm_min() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = true; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr wchar_t 193s 1515: 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); } 193s 1515: 193s 1515: static constexpr wchar_t 193s 1515: 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); } 193s 1515: 193s 1515: 193s 1515: static constexpr wchar_t 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); 193s 1515: static constexpr int digits10 193s 1515: = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = ((wchar_t)(-1) < 0); 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr wchar_t 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr wchar_t 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr wchar_t 193s 1515: infinity() noexcept { return wchar_t(); } 193s 1515: 193s 1515: static constexpr wchar_t 193s 1515: quiet_NaN() noexcept { return wchar_t(); } 193s 1515: 193s 1515: static constexpr wchar_t 193s 1515: signaling_NaN() noexcept { return wchar_t(); } 193s 1515: 193s 1515: static constexpr wchar_t 193s 1515: denorm_min() noexcept { return wchar_t(); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = !is_signed; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: # 803 "/usr/include/c++/15/limits" 3 4 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr char16_t 193s 1515: 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); } 193s 1515: 193s 1515: static constexpr char16_t 193s 1515: 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); } 193s 1515: 193s 1515: static constexpr char16_t 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)); 193s 1515: static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136); 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: static constexpr bool is_signed = ((char16_t)(-1) < 0); 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr char16_t 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr char16_t 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr char16_t 193s 1515: infinity() noexcept { return char16_t(); } 193s 1515: 193s 1515: static constexpr char16_t 193s 1515: quiet_NaN() noexcept { return char16_t(); } 193s 1515: 193s 1515: static constexpr char16_t 193s 1515: signaling_NaN() noexcept { return char16_t(); } 193s 1515: 193s 1515: static constexpr char16_t 193s 1515: denorm_min() noexcept { return char16_t(); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = !is_signed; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr char32_t 193s 1515: 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); } 193s 1515: 193s 1515: static constexpr char32_t 193s 1515: 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); } 193s 1515: 193s 1515: static constexpr char32_t 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)); 193s 1515: static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136); 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: static constexpr bool is_signed = ((char32_t)(-1) < 0); 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr char32_t 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr char32_t 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr char32_t 193s 1515: infinity() noexcept { return char32_t(); } 193s 1515: 193s 1515: static constexpr char32_t 193s 1515: quiet_NaN() noexcept { return char32_t(); } 193s 1515: 193s 1515: static constexpr char32_t 193s 1515: signaling_NaN() noexcept { return char32_t(); } 193s 1515: 193s 1515: static constexpr char32_t 193s 1515: denorm_min() noexcept { return char32_t(); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = !is_signed; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr short 193s 1515: min() noexcept { return -0x7fff - 1; } 193s 1515: 193s 1515: static constexpr short 193s 1515: max() noexcept { return 0x7fff; } 193s 1515: 193s 1515: 193s 1515: static constexpr short 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); 193s 1515: static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = true; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr short 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr short 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr short 193s 1515: infinity() noexcept { return short(); } 193s 1515: 193s 1515: static constexpr short 193s 1515: quiet_NaN() noexcept { return short(); } 193s 1515: 193s 1515: static constexpr short 193s 1515: signaling_NaN() noexcept { return short(); } 193s 1515: 193s 1515: static constexpr short 193s 1515: denorm_min() noexcept { return short(); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = false; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr unsigned short 193s 1515: min() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr unsigned short 193s 1515: max() noexcept { return 0x7fff * 2U + 1; } 193s 1515: 193s 1515: 193s 1515: static constexpr unsigned short 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits 193s 1515: = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); 193s 1515: static constexpr int digits10 193s 1515: = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = false; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr unsigned short 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr unsigned short 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr unsigned short 193s 1515: infinity() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned short 193s 1515: quiet_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned short 193s 1515: signaling_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned short 193s 1515: denorm_min() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = true; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr int 193s 1515: min() noexcept { return -0x7fffffff - 1; } 193s 1515: 193s 1515: static constexpr int 193s 1515: max() noexcept { return 0x7fffffff; } 193s 1515: 193s 1515: 193s 1515: static constexpr int 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); 193s 1515: static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = true; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr int 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr int 193s 1515: infinity() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr int 193s 1515: quiet_NaN() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr int 193s 1515: signaling_NaN() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr int 193s 1515: denorm_min() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = false; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr unsigned int 193s 1515: min() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr unsigned int 193s 1515: max() noexcept { return 0x7fffffff * 2U + 1; } 193s 1515: 193s 1515: 193s 1515: static constexpr unsigned int 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits 193s 1515: = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); 193s 1515: static constexpr int digits10 193s 1515: = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = false; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr unsigned int 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr unsigned int 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr unsigned int 193s 1515: infinity() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned int 193s 1515: quiet_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned int 193s 1515: signaling_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned int 193s 1515: denorm_min() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = true; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr long 193s 1515: min() noexcept { return -0x7fffffffL - 1; } 193s 1515: 193s 1515: static constexpr long 193s 1515: max() noexcept { return 0x7fffffffL; } 193s 1515: 193s 1515: 193s 1515: static constexpr long 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); 193s 1515: static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = true; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr long 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr long 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr long 193s 1515: infinity() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr long 193s 1515: quiet_NaN() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr long 193s 1515: signaling_NaN() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr long 193s 1515: denorm_min() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = false; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr unsigned long 193s 1515: min() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr unsigned long 193s 1515: max() noexcept { return 0x7fffffffL * 2UL + 1; } 193s 1515: 193s 1515: 193s 1515: static constexpr unsigned long 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits 193s 1515: = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); 193s 1515: static constexpr int digits10 193s 1515: = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = false; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr unsigned long 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr unsigned long 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr unsigned long 193s 1515: infinity() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned long 193s 1515: quiet_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned long 193s 1515: signaling_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned long 193s 1515: denorm_min() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = true; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr long long 193s 1515: min() noexcept { return -0x7fffffffffffffffLL - 1; } 193s 1515: 193s 1515: static constexpr long long 193s 1515: max() noexcept { return 0x7fffffffffffffffLL; } 193s 1515: 193s 1515: 193s 1515: static constexpr long long 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits 193s 1515: = (sizeof(long long) * 8 - ((long long)(-1) < 0)); 193s 1515: static constexpr int digits10 193s 1515: = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = true; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr long long 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr long long 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr long long 193s 1515: infinity() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr long long 193s 1515: quiet_NaN() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr long long 193s 1515: signaling_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr long long 193s 1515: denorm_min() noexcept { return static_cast(0); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = false; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr unsigned long long 193s 1515: min() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr unsigned long long 193s 1515: max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; } 193s 1515: 193s 1515: 193s 1515: static constexpr unsigned long long 193s 1515: lowest() noexcept { return min(); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits 193s 1515: = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); 193s 1515: static constexpr int digits10 193s 1515: = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); 193s 1515: 193s 1515: static constexpr int max_digits10 = 0; 193s 1515: 193s 1515: static constexpr bool is_signed = false; 193s 1515: static constexpr bool is_integer = true; 193s 1515: static constexpr bool is_exact = true; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr unsigned long long 193s 1515: epsilon() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr unsigned long long 193s 1515: round_error() noexcept { return 0; } 193s 1515: 193s 1515: static constexpr int min_exponent = 0; 193s 1515: static constexpr int min_exponent10 = 0; 193s 1515: static constexpr int max_exponent = 0; 193s 1515: static constexpr int max_exponent10 = 0; 193s 1515: 193s 1515: static constexpr bool has_infinity = false; 193s 1515: static constexpr bool has_quiet_NaN = false; 193s 1515: static constexpr bool has_signaling_NaN = false; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = denorm_absent; 193s 1515: static constexpr bool has_denorm_loss = false; 193s 1515: 193s 1515: static constexpr unsigned long long 193s 1515: infinity() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned long long 193s 1515: quiet_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned long long 193s 1515: signaling_NaN() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr unsigned long long 193s 1515: denorm_min() noexcept 193s 1515: { return static_cast(0); } 193s 1515: 193s 1515: static constexpr bool is_iec559 = false; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = true; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_toward_zero; 193s 1515: }; 193s 1515: # 1676 "/usr/include/c++/15/limits" 3 4 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr float 193s 1515: min() noexcept { return 1.1754943508222875e-38F; } 193s 1515: 193s 1515: static constexpr float 193s 1515: max() noexcept { return 3.4028234663852886e+38F; } 193s 1515: 193s 1515: 193s 1515: static constexpr float 193s 1515: lowest() noexcept { return -3.4028234663852886e+38F; } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits = 24; 193s 1515: static constexpr int digits10 = 6; 193s 1515: 193s 1515: static constexpr int max_digits10 193s 1515: = (2 + (24) * 643L / 2136); 193s 1515: 193s 1515: static constexpr bool is_signed = true; 193s 1515: static constexpr bool is_integer = false; 193s 1515: static constexpr bool is_exact = false; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr float 193s 1515: epsilon() noexcept { return 1.1920928955078125e-7F; } 193s 1515: 193s 1515: static constexpr float 193s 1515: round_error() noexcept { return 0.5F; } 193s 1515: 193s 1515: static constexpr int min_exponent = (-125); 193s 1515: static constexpr int min_exponent10 = (-37); 193s 1515: static constexpr int max_exponent = 128; 193s 1515: static constexpr int max_exponent10 = 38; 193s 1515: 193s 1515: static constexpr bool has_infinity = 1; 193s 1515: static constexpr bool has_quiet_NaN = 1; 193s 1515: static constexpr bool has_signaling_NaN = has_quiet_NaN; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = bool(1) ? denorm_present : denorm_absent; 193s 1515: static constexpr bool has_denorm_loss 193s 1515: = false; 193s 1515: 193s 1515: static constexpr float 193s 1515: infinity() noexcept { return __builtin_huge_valf(); } 193s 1515: 193s 1515: static constexpr float 193s 1515: quiet_NaN() noexcept { return __builtin_nanf(""); } 193s 1515: 193s 1515: static constexpr float 193s 1515: signaling_NaN() noexcept { return __builtin_nansf(""); } 193s 1515: 193s 1515: static constexpr float 193s 1515: denorm_min() noexcept { return 1.4012984643248171e-45F; } 193s 1515: 193s 1515: static constexpr bool is_iec559 193s 1515: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = false; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before 193s 1515: = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_to_nearest; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr double 193s 1515: min() noexcept { return double(2.2250738585072014e-308L); } 193s 1515: 193s 1515: static constexpr double 193s 1515: max() noexcept { return double(1.7976931348623157e+308L); } 193s 1515: 193s 1515: 193s 1515: static constexpr double 193s 1515: lowest() noexcept { return -double(1.7976931348623157e+308L); } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits = 53; 193s 1515: static constexpr int digits10 = 15; 193s 1515: 193s 1515: static constexpr int max_digits10 193s 1515: = (2 + (53) * 643L / 2136); 193s 1515: 193s 1515: static constexpr bool is_signed = true; 193s 1515: static constexpr bool is_integer = false; 193s 1515: static constexpr bool is_exact = false; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr double 193s 1515: epsilon() noexcept { return double(2.2204460492503131e-16L); } 193s 1515: 193s 1515: static constexpr double 193s 1515: round_error() noexcept { return 0.5; } 193s 1515: 193s 1515: static constexpr int min_exponent = (-1021); 193s 1515: static constexpr int min_exponent10 = (-307); 193s 1515: static constexpr int max_exponent = 1024; 193s 1515: static constexpr int max_exponent10 = 308; 193s 1515: 193s 1515: static constexpr bool has_infinity = 1; 193s 1515: static constexpr bool has_quiet_NaN = 1; 193s 1515: static constexpr bool has_signaling_NaN = has_quiet_NaN; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = bool(1) ? denorm_present : denorm_absent; 193s 1515: static constexpr bool has_denorm_loss 193s 1515: = false; 193s 1515: 193s 1515: static constexpr double 193s 1515: infinity() noexcept { return __builtin_huge_val(); } 193s 1515: 193s 1515: static constexpr double 193s 1515: quiet_NaN() noexcept { return __builtin_nan(""); } 193s 1515: 193s 1515: static constexpr double 193s 1515: signaling_NaN() noexcept { return __builtin_nans(""); } 193s 1515: 193s 1515: static constexpr double 193s 1515: denorm_min() noexcept { return double(4.9406564584124654e-324L); } 193s 1515: 193s 1515: static constexpr bool is_iec559 193s 1515: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = false; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before 193s 1515: = false; 193s 1515: static constexpr float_round_style round_style 193s 1515: = round_to_nearest; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct numeric_limits 193s 1515: { 193s 1515: static constexpr bool is_specialized = true; 193s 1515: 193s 1515: static constexpr long double 193s 1515: min() noexcept { return 2.2250738585072014e-308L; } 193s 1515: 193s 1515: static constexpr long double 193s 1515: max() noexcept { return 1.7976931348623157e+308L; } 193s 1515: 193s 1515: 193s 1515: static constexpr long double 193s 1515: lowest() noexcept { return -1.7976931348623157e+308L; } 193s 1515: 193s 1515: 193s 1515: static constexpr int digits = 53; 193s 1515: static constexpr int digits10 = 15; 193s 1515: 193s 1515: static constexpr int max_digits10 193s 1515: = (2 + (53) * 643L / 2136); 193s 1515: 193s 1515: static constexpr bool is_signed = true; 193s 1515: static constexpr bool is_integer = false; 193s 1515: static constexpr bool is_exact = false; 193s 1515: static constexpr int radix = 2; 193s 1515: 193s 1515: static constexpr long double 193s 1515: epsilon() noexcept { return 2.2204460492503131e-16L; } 193s 1515: 193s 1515: static constexpr long double 193s 1515: round_error() noexcept { return 0.5L; } 193s 1515: 193s 1515: static constexpr int min_exponent = (-1021); 193s 1515: static constexpr int min_exponent10 = (-307); 193s 1515: static constexpr int max_exponent = 1024; 193s 1515: static constexpr int max_exponent10 = 308; 193s 1515: 193s 1515: static constexpr bool has_infinity = 1; 193s 1515: static constexpr bool has_quiet_NaN = 1; 193s 1515: static constexpr bool has_signaling_NaN = has_quiet_NaN; 193s 1515: static constexpr float_denorm_style has_denorm 193s 1515: = bool(1) ? denorm_present : denorm_absent; 193s 1515: static constexpr bool has_denorm_loss 193s 1515: = false; 193s 1515: 193s 1515: static constexpr long double 193s 1515: infinity() noexcept { return __builtin_huge_vall(); } 193s 1515: 193s 1515: static constexpr long double 193s 1515: quiet_NaN() noexcept { return __builtin_nanl(""); } 193s 1515: 193s 1515: static constexpr long double 193s 1515: signaling_NaN() noexcept { return __builtin_nansl(""); } 193s 1515: 193s 1515: static constexpr long double 193s 1515: denorm_min() noexcept { return 4.9406564584124654e-324L; } 193s 1515: 193s 1515: static constexpr bool is_iec559 193s 1515: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 193s 1515: static constexpr bool is_bounded = true; 193s 1515: static constexpr bool is_modulo = false; 193s 1515: 193s 1515: static constexpr bool traps = false; 193s 1515: static constexpr bool tinyness_before = 193s 1515: false; 193s 1515: static constexpr float_round_style round_style = 193s 1515: round_to_nearest; 193s 1515: }; 193s 1515: # 1996 "/usr/include/c++/15/limits" 3 4 193s 1515: __extension__ template<> struct numeric_limits<_Float32> { static constexpr bool is_specialized = true; static constexpr _Float32 min() noexcept { return 1.1754943508222875e-38F32; } static constexpr _Float32 max() noexcept { return 3.4028234663852886e+38F32; } static constexpr _Float32 lowest() noexcept { return -3.4028234663852886e+38F32; } static constexpr int digits = 24; static constexpr int digits10 = 6; static constexpr int max_digits10 = (2 + (24) * 643L / 2136); static constexpr bool is_signed = true; static constexpr bool is_integer = false; static constexpr bool is_exact = false; static constexpr int radix = 2; static constexpr _Float32 epsilon() noexcept { return 1.1920928955078125e-7F32; } static constexpr _Float32 round_error() noexcept { return 0.5F32; } static constexpr int min_exponent = (-125); static constexpr int min_exponent10 = (-37); static constexpr int max_exponent = 128; static constexpr int max_exponent10 = 38; static constexpr bool has_infinity = 1; static constexpr bool has_quiet_NaN = 1; static constexpr bool has_signaling_NaN = has_quiet_NaN; static constexpr float_denorm_style has_denorm = bool(1) ? denorm_present : denorm_absent; static constexpr bool has_denorm_loss = false; static constexpr _Float32 infinity() noexcept { return __builtin_huge_valf32(); } static constexpr _Float32 quiet_NaN() noexcept { return __builtin_nanf32(""); } static constexpr _Float32 signaling_NaN() noexcept { return __builtin_nansf32(""); } static constexpr _Float32 denorm_min() noexcept { return 1.4012984643248171e-45F32; } static constexpr bool is_iec559 = has_infinity && has_quiet_NaN && has_denorm == denorm_present; static constexpr bool is_bounded = true; static constexpr bool is_modulo = false; static constexpr bool traps = false; static constexpr bool tinyness_before = false; static constexpr float_round_style round_style = round_to_nearest; }; 193s 1515: 193s 1515: 193s 1515: __extension__ template<> struct numeric_limits<_Float64> { static constexpr bool is_specialized = true; static constexpr _Float64 min() noexcept { return 2.2250738585072014e-308F64; } static constexpr _Float64 max() noexcept { return 1.7976931348623157e+308F64; } static constexpr _Float64 lowest() noexcept { return -1.7976931348623157e+308F64; } static constexpr int digits = 53; static constexpr int digits10 = 15; static constexpr int max_digits10 = (2 + (53) * 643L / 2136); static constexpr bool is_signed = true; static constexpr bool is_integer = false; static constexpr bool is_exact = false; static constexpr int radix = 2; static constexpr _Float64 epsilon() noexcept { return 2.2204460492503131e-16F64; } static constexpr _Float64 round_error() noexcept { return 0.5F64; } static constexpr int min_exponent = (-1021); static constexpr int min_exponent10 = (-307); static constexpr int max_exponent = 1024; static constexpr int max_exponent10 = 308; static constexpr bool has_infinity = 1; static constexpr bool has_quiet_NaN = 1; static constexpr bool has_signaling_NaN = has_quiet_NaN; static constexpr float_denorm_style has_denorm = bool(1) ? denorm_present : denorm_absent; static constexpr bool has_denorm_loss = false; static constexpr _Float64 infinity() noexcept { return __builtin_huge_valf64(); } static constexpr _Float64 quiet_NaN() noexcept { return __builtin_nanf64(""); } static constexpr _Float64 signaling_NaN() noexcept { return __builtin_nansf64(""); } static constexpr _Float64 denorm_min() noexcept { return 4.9406564584124654e-324F64; } static constexpr bool is_iec559 = has_infinity && has_quiet_NaN && has_denorm == denorm_present; static constexpr bool is_bounded = true; static constexpr bool is_modulo = false; static constexpr bool traps = false; static constexpr bool tinyness_before = false; static constexpr float_round_style round_style = round_to_nearest; }; 193s 1515: # 2229 "/usr/include/c++/15/limits" 3 4 193s 1515: 193s 1515: } 193s 1515: # 2239 "/usr/include/c++/15/limits" 3 4 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 3162 "/usr/include/doctest/doctest.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/utility" 1 3 4 193s 1515: # 70 "/usr/include/c++/15/utility" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/stl_relops.h" 1 3 4 193s 1515: # 62 "/usr/include/c++/15/bits/stl_relops.h" 3 4 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: namespace rel_ops 193s 1515: { 193s 1515: # 86 "/usr/include/c++/15/bits/stl_relops.h" 3 4 193s 1515: template 193s 1515: inline bool 193s 1515: operator!=(const _Tp& __x, const _Tp& __y) 193s 1515: { return !(__x == __y); } 193s 1515: # 99 "/usr/include/c++/15/bits/stl_relops.h" 3 4 193s 1515: template 193s 1515: inline bool 193s 1515: operator>(const _Tp& __x, const _Tp& __y) 193s 1515: { return __y < __x; } 193s 1515: # 112 "/usr/include/c++/15/bits/stl_relops.h" 3 4 193s 1515: template 193s 1515: inline bool 193s 1515: operator<=(const _Tp& __x, const _Tp& __y) 193s 1515: { return !(__y < __x); } 193s 1515: # 125 "/usr/include/c++/15/bits/stl_relops.h" 3 4 193s 1515: template 193s 1515: inline bool 193s 1515: operator>=(const _Tp& __x, const _Tp& __y) 193s 1515: { return !(__x < __y); } 193s 1515: } 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 71 "/usr/include/c++/15/utility" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/stl_pair.h" 1 3 4 193s 1515: # 60 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: # 1 "/usr/include/c++/15/type_traits" 1 3 4 193s 1515: # 67 "/usr/include/c++/15/type_traits" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 193s 1515: # 68 "/usr/include/c++/15/type_traits" 2 3 4 193s 1515: 193s 1515: extern "C++" 193s 1515: { 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: template 193s 1515: class reference_wrapper; 193s 1515: # 92 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct integral_constant 193s 1515: { 193s 1515: static constexpr _Tp value = __v; 193s 1515: using value_type = _Tp; 193s 1515: using type = integral_constant<_Tp, __v>; 193s 1515: constexpr operator value_type() const noexcept { return value; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr _Tp integral_constant<_Tp, __v>::value; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __bool_constant = integral_constant; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using true_type = __bool_constant; 193s 1515: 193s 1515: 193s 1515: using false_type = __bool_constant; 193s 1515: # 133 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct enable_if 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct enable_if 193s 1515: { using type = _Tp; }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __enable_if_t = typename enable_if<_Cond, _Tp>::type; 193s 1515: 193s 1515: template 193s 1515: struct __conditional 193s 1515: { 193s 1515: template 193s 1515: using type = _Tp; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __conditional 193s 1515: { 193s 1515: template 193s 1515: using type = _Up; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __conditional_t 193s 1515: = typename __conditional<_Cond>::template type<_If, _Else>; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __type_identity 193s 1515: { using type = _Type; }; 193s 1515: 193s 1515: template 193s 1515: using __type_identity_t = typename __type_identity<_Tp>::type; 193s 1515: 193s 1515: namespace __detail 193s 1515: { 193s 1515: 193s 1515: template 193s 1515: using __first_t = _Tp; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: auto __or_fn(int) -> __first_t...>; 193s 1515: 193s 1515: template 193s 1515: auto __or_fn(...) -> true_type; 193s 1515: 193s 1515: template 193s 1515: auto __and_fn(int) -> __first_t...>; 193s 1515: 193s 1515: template 193s 1515: auto __and_fn(...) -> false_type; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __or_ 193s 1515: : decltype(__detail::__or_fn<_Bn...>(0)) 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __and_ 193s 1515: : decltype(__detail::__and_fn<_Bn...>(0)) 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __not_ 193s 1515: : __bool_constant 193s 1515: { }; 193s 1515: # 283 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_reference; 193s 1515: template 193s 1515: struct is_function; 193s 1515: template 193s 1515: struct is_void; 193s 1515: template 193s 1515: struct remove_cv; 193s 1515: template 193s 1515: struct is_const; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_array_unknown_bounds; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) 193s 1515: { return {}; } 193s 1515: 193s 1515: template 193s 1515: constexpr typename __or_< 193s 1515: is_reference<_NestedType>, 193s 1515: is_function<_NestedType>, 193s 1515: is_void<_NestedType>, 193s 1515: __is_array_unknown_bounds<_NestedType> 193s 1515: >::type __is_complete_or_unbounded(_TypeIdentity) 193s 1515: { return {}; } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __remove_cv_t = typename remove_cv<_Tp>::type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_void 193s 1515: : public false_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct is_void 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct is_void 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct is_void 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct is_void 193s 1515: : public true_type { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_integral_helper 193s 1515: : public false_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_integral_helper 193s 1515: : public true_type { }; 193s 1515: # 466 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_integral 193s 1515: : public __is_integral_helper<__remove_cv_t<_Tp>>::type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_floating_point_helper 193s 1515: : public false_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_floating_point_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_floating_point_helper 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct __is_floating_point_helper 193s 1515: : public true_type { }; 193s 1515: # 526 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_floating_point 193s 1515: : public __is_floating_point_helper<__remove_cv_t<_Tp>>::type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_array 193s 1515: : public __bool_constant<__is_array(_Tp)> 193s 1515: { }; 193s 1515: # 553 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_pointer 193s 1515: : public __bool_constant<__is_pointer(_Tp)> 193s 1515: { }; 193s 1515: # 580 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_lvalue_reference 193s 1515: : public false_type { }; 193s 1515: 193s 1515: template 193s 1515: struct is_lvalue_reference<_Tp&> 193s 1515: : public true_type { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_rvalue_reference 193s 1515: : public false_type { }; 193s 1515: 193s 1515: template 193s 1515: struct is_rvalue_reference<_Tp&&> 193s 1515: : public true_type { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_member_object_pointer 193s 1515: : public __bool_constant<__is_member_object_pointer(_Tp)> 193s 1515: { }; 193s 1515: # 621 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_member_function_pointer 193s 1515: : public __bool_constant<__is_member_function_pointer(_Tp)> 193s 1515: { }; 193s 1515: # 642 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_enum 193s 1515: : public __bool_constant<__is_enum(_Tp)> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_union 193s 1515: : public __bool_constant<__is_union(_Tp)> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_class 193s 1515: : public __bool_constant<__is_class(_Tp)> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_function 193s 1515: : public __bool_constant<__is_function(_Tp)> 193s 1515: { }; 193s 1515: # 681 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_null_pointer 193s 1515: : public false_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct is_null_pointer 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct is_null_pointer 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct is_null_pointer 193s 1515: : public true_type { }; 193s 1515: 193s 1515: template<> 193s 1515: struct is_null_pointer 193s 1515: : public true_type { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_nullptr_t 193s 1515: : public is_null_pointer<_Tp> 193s 1515: { } __attribute__ ((__deprecated__ ("use '" "std::is_null_pointer" "' instead"))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_reference 193s 1515: : public __bool_constant<__is_reference(_Tp)> 193s 1515: { }; 193s 1515: # 735 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_arithmetic 193s 1515: : public __or_, is_floating_point<_Tp>>::type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_fundamental 193s 1515: : public __or_, is_void<_Tp>, 193s 1515: is_null_pointer<_Tp>>::type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_object 193s 1515: : public __bool_constant<__is_object(_Tp)> 193s 1515: { }; 193s 1515: # 761 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_member_pointer; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_scalar 193s 1515: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, 193s 1515: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_compound 193s 1515: : public __bool_constant::value> { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_member_pointer 193s 1515: : public __bool_constant<__is_member_pointer(_Tp)> 193s 1515: { }; 193s 1515: # 799 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_same; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __is_one_of = __or_...>; 193s 1515: 193s 1515: 193s 1515: __extension__ 193s 1515: template 193s 1515: using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>, 193s 1515: signed char, signed short, signed int, signed long, 193s 1515: signed long long 193s 1515: # 824 "/usr/include/c++/15/type_traits" 3 4 193s 1515: >; 193s 1515: 193s 1515: 193s 1515: __extension__ 193s 1515: template 193s 1515: using __is_unsigned_integer = __is_one_of<__remove_cv_t<_Tp>, 193s 1515: unsigned char, unsigned short, unsigned int, unsigned long, 193s 1515: unsigned long long 193s 1515: # 844 "/usr/include/c++/15/type_traits" 3 4 193s 1515: >; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __is_standard_integer 193s 1515: = __or_<__is_signed_integer<_Tp>, __is_unsigned_integer<_Tp>>; 193s 1515: 193s 1515: 193s 1515: template using __void_t = void; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_const 193s 1515: : public __bool_constant<__is_const(_Tp)> 193s 1515: { }; 193s 1515: # 875 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_volatile 193s 1515: : public __bool_constant<__is_volatile(_Tp)> 193s 1515: { }; 193s 1515: # 896 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct 193s 1515: 193s 1515: is_trivial 193s 1515: : public __bool_constant<__is_trivial(_Tp)> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_trivially_copyable 193s 1515: : public __bool_constant<__is_trivially_copyable(_Tp)> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_standard_layout 193s 1515: : public __bool_constant<__is_standard_layout(_Tp)> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct 193s 1515: 193s 1515: is_pod 193s 1515: : public __bool_constant<__is_pod(_Tp)> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct 193s 1515: 193s 1515: is_literal_type 193s 1515: : public __bool_constant<__is_literal_type(_Tp)> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_empty 193s 1515: : public __bool_constant<__is_empty(_Tp)> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_polymorphic 193s 1515: : public __bool_constant<__is_polymorphic(_Tp)> 193s 1515: { }; 193s 1515: # 975 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_abstract 193s 1515: : public __bool_constant<__is_abstract(_Tp)> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template::value> 193s 1515: struct __is_signed_helper 193s 1515: : public false_type { }; 193s 1515: 193s 1515: template 193s 1515: struct __is_signed_helper<_Tp, true> 193s 1515: : public __bool_constant<_Tp(-1) < _Tp(0)> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_signed 193s 1515: : public __is_signed_helper<_Tp>::type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_unsigned 193s 1515: : public __and_, __not_>>::type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: _Up 193s 1515: __declval(int); 193s 1515: 193s 1515: template 193s 1515: _Tp 193s 1515: __declval(long); 193s 1515: 193s 1515: 193s 1515: template 193s 1515: auto declval() noexcept -> decltype(__declval<_Tp>(0)); 193s 1515: 193s 1515: template 193s 1515: struct remove_all_extents; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_array_known_bounds 193s 1515: : public false_type 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __is_array_known_bounds<_Tp[_Size]> 193s 1515: : public true_type 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __is_array_unknown_bounds 193s 1515: : public false_type 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __is_array_unknown_bounds<_Tp[]> 193s 1515: : public true_type 193s 1515: { }; 193s 1515: # 1048 "/usr/include/c++/15/type_traits" 3 4 193s 1515: struct __do_is_destructible_impl 193s 1515: { 193s 1515: template().~_Tp())> 193s 1515: static true_type __test(int); 193s 1515: 193s 1515: template 193s 1515: static false_type __test(...); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __is_destructible_impl 193s 1515: : public __do_is_destructible_impl 193s 1515: { 193s 1515: using type = decltype(__test<_Tp>(0)); 193s 1515: }; 193s 1515: 193s 1515: template, 193s 1515: __is_array_unknown_bounds<_Tp>, 193s 1515: is_function<_Tp>>::value, 193s 1515: bool = __or_, is_scalar<_Tp>>::value> 193s 1515: struct __is_destructible_safe; 193s 1515: 193s 1515: template 193s 1515: struct __is_destructible_safe<_Tp, false, false> 193s 1515: : public __is_destructible_impl::type>::type 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __is_destructible_safe<_Tp, true, false> 193s 1515: : public false_type { }; 193s 1515: 193s 1515: template 193s 1515: struct __is_destructible_safe<_Tp, false, true> 193s 1515: : public true_type { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_destructible 193s 1515: : public __is_destructible_safe<_Tp>::type 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct __do_is_nt_destructible_impl 193s 1515: { 193s 1515: template 193s 1515: static __bool_constant().~_Tp())> 193s 1515: __test(int); 193s 1515: 193s 1515: template 193s 1515: static false_type __test(...); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __is_nt_destructible_impl 193s 1515: : public __do_is_nt_destructible_impl 193s 1515: { 193s 1515: using type = decltype(__test<_Tp>(0)); 193s 1515: }; 193s 1515: 193s 1515: template, 193s 1515: __is_array_unknown_bounds<_Tp>, 193s 1515: is_function<_Tp>>::value, 193s 1515: bool = __or_, is_scalar<_Tp>>::value> 193s 1515: struct __is_nt_destructible_safe; 193s 1515: 193s 1515: template 193s 1515: struct __is_nt_destructible_safe<_Tp, false, false> 193s 1515: : public __is_nt_destructible_impl::type>::type 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __is_nt_destructible_safe<_Tp, true, false> 193s 1515: : public false_type { }; 193s 1515: 193s 1515: template 193s 1515: struct __is_nt_destructible_safe<_Tp, false, true> 193s 1515: : public true_type { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_nothrow_destructible 193s 1515: : public __is_nt_destructible_safe<_Tp>::type 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __is_constructible_impl 193s 1515: = __bool_constant<__is_constructible(_Tp, _Args...)>; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_constructible 193s 1515: : public __is_constructible_impl<_Tp, _Args...> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_default_constructible 193s 1515: : public __is_constructible_impl<_Tp> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __add_lval_ref_t = __add_lvalue_reference(_Tp); 193s 1515: # 1192 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_copy_constructible 193s 1515: : public __is_constructible_impl<_Tp, __add_lval_ref_t> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __add_rval_ref_t = __add_rvalue_reference(_Tp); 193s 1515: # 1219 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_move_constructible 193s 1515: : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __is_nothrow_constructible_impl 193s 1515: = __bool_constant<__is_nothrow_constructible(_Tp, _Args...)>; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_nothrow_constructible 193s 1515: : public __is_nothrow_constructible_impl<_Tp, _Args...> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_nothrow_default_constructible 193s 1515: : public __is_nothrow_constructible_impl<_Tp> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_nothrow_copy_constructible 193s 1515: : public __is_nothrow_constructible_impl<_Tp, __add_lval_ref_t> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_nothrow_move_constructible 193s 1515: : public __is_nothrow_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_assignable 193s 1515: : public __is_assignable_impl<_Tp, _Up> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_copy_assignable 193s 1515: : public __is_assignable_impl<__add_lval_ref_t<_Tp>, 193s 1515: __add_lval_ref_t> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_move_assignable 193s 1515: : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __is_nothrow_assignable_impl 193s 1515: = __bool_constant<__is_nothrow_assignable(_Tp, _Up)>; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_nothrow_assignable 193s 1515: : public __is_nothrow_assignable_impl<_Tp, _Up> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_nothrow_copy_assignable 193s 1515: : public __is_nothrow_assignable_impl<__add_lval_ref_t<_Tp>, 193s 1515: __add_lval_ref_t> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_nothrow_move_assignable 193s 1515: : public __is_nothrow_assignable_impl<__add_lval_ref_t<_Tp>, 193s 1515: __add_rval_ref_t<_Tp>> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __is_trivially_constructible_impl 193s 1515: = __bool_constant<__is_trivially_constructible(_Tp, _Args...)>; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_trivially_constructible 193s 1515: : public __is_trivially_constructible_impl<_Tp, _Args...> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_trivially_default_constructible 193s 1515: : public __is_trivially_constructible_impl<_Tp> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: # 1371 "/usr/include/c++/15/type_traits" 3 4 193s 1515: struct __do_is_implicitly_default_constructible_impl 193s 1515: { 193s 1515: template 193s 1515: static void __helper(const _Tp&); 193s 1515: 193s 1515: template 193s 1515: static true_type __test(const _Tp&, 193s 1515: decltype(__helper({}))* = 0); 193s 1515: 193s 1515: static false_type __test(...); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __is_implicitly_default_constructible_impl 193s 1515: : public __do_is_implicitly_default_constructible_impl 193s 1515: { 193s 1515: using type = decltype(__test(declval<_Tp>())); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __is_implicitly_default_constructible_safe 193s 1515: : public __is_implicitly_default_constructible_impl<_Tp>::type 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __is_implicitly_default_constructible 193s 1515: : public __and_<__is_constructible_impl<_Tp>, 193s 1515: __is_implicitly_default_constructible_safe<_Tp>>::type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_trivially_copy_constructible 193s 1515: : public __is_trivially_constructible_impl<_Tp, __add_lval_ref_t> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_trivially_move_constructible 193s 1515: : public __is_trivially_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __is_trivially_assignable_impl 193s 1515: = __bool_constant<__is_trivially_assignable(_Tp, _Up)>; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_trivially_assignable 193s 1515: : public __is_trivially_assignable_impl<_Tp, _Up> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_trivially_copy_assignable 193s 1515: : public __is_trivially_assignable_impl<__add_lval_ref_t<_Tp>, 193s 1515: __add_lval_ref_t> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_trivially_move_assignable 193s 1515: : public __is_trivially_assignable_impl<__add_lval_ref_t<_Tp>, 193s 1515: __add_rval_ref_t<_Tp>> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_trivially_destructible 193s 1515: : public __and_<__is_destructible_safe<_Tp>, 193s 1515: __bool_constant<__has_trivial_destructor(_Tp)>>::type 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct has_virtual_destructor 193s 1515: : public __bool_constant<__has_virtual_destructor(_Tp)> 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct alignment_of 193s 1515: : public integral_constant 193s 1515: { 193s 1515: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 193s 1515: "template argument must be a complete class or an unbounded array"); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct rank 193s 1515: : public integral_constant { }; 193s 1515: # 1508 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct extent 193s 1515: : public integral_constant { }; 193s 1515: 193s 1515: template 193s 1515: struct extent<_Tp[_Size], 0> 193s 1515: : public integral_constant { }; 193s 1515: 193s 1515: template 193s 1515: struct extent<_Tp[_Size], _Uint> 193s 1515: : public extent<_Tp, _Uint - 1>::type { }; 193s 1515: 193s 1515: template 193s 1515: struct extent<_Tp[], 0> 193s 1515: : public integral_constant { }; 193s 1515: 193s 1515: template 193s 1515: struct extent<_Tp[], _Uint> 193s 1515: : public extent<_Tp, _Uint - 1>::type { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct is_same 193s 1515: : public __bool_constant<__is_same(_Tp, _Up)> 193s 1515: { }; 193s 1515: # 1550 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_base_of 193s 1515: : public __bool_constant<__is_base_of(_Base, _Derived)> 193s 1515: { }; 193s 1515: # 1565 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct is_convertible 193s 1515: : public __bool_constant<__is_convertible(_From, _To)> 193s 1515: { }; 193s 1515: # 1608 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: using __is_array_convertible 193s 1515: = is_convertible<_FromElementType(*)[], _ToElementType(*)[]>; 193s 1515: # 1668 "/usr/include/c++/15/type_traits" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wc++14-extensions" 193s 1515: template 193s 1515: struct __is_nothrow_new_constructible_impl 193s 1515: : __bool_constant< 193s 1515: noexcept(::new(std::declval()) _Tp(std::declval<_Args>()...)) 193s 1515: > 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: constexpr bool __is_nothrow_new_constructible 193s 1515: = __and_, 193s 1515: __is_nothrow_new_constructible_impl<_Tp, _Args...>>::value; 193s 1515: #pragma GCC diagnostic pop 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct remove_const 193s 1515: { using type = _Tp; }; 193s 1515: 193s 1515: template 193s 1515: struct remove_const<_Tp const> 193s 1515: { using type = _Tp; }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct remove_volatile 193s 1515: { using type = _Tp; }; 193s 1515: 193s 1515: template 193s 1515: struct remove_volatile<_Tp volatile> 193s 1515: { using type = _Tp; }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct remove_cv 193s 1515: { using type = __remove_cv(_Tp); }; 193s 1515: # 1727 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct add_const 193s 1515: { using type = _Tp const; }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct add_volatile 193s 1515: { using type = _Tp volatile; }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct add_cv 193s 1515: { using type = _Tp const volatile; }; 193s 1515: # 1771 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct remove_reference 193s 1515: { using type = __remove_reference(_Tp); }; 193s 1515: # 1789 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct add_lvalue_reference 193s 1515: { using type = __add_lval_ref_t<_Tp>; }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct add_rvalue_reference 193s 1515: { using type = __add_rval_ref_t<_Tp>; }; 193s 1515: # 1817 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct __cv_selector; 193s 1515: 193s 1515: template 193s 1515: struct __cv_selector<_Unqualified, false, false> 193s 1515: { using __type = _Unqualified; }; 193s 1515: 193s 1515: template 193s 1515: struct __cv_selector<_Unqualified, false, true> 193s 1515: { using __type = volatile _Unqualified; }; 193s 1515: 193s 1515: template 193s 1515: struct __cv_selector<_Unqualified, true, false> 193s 1515: { using __type = const _Unqualified; }; 193s 1515: 193s 1515: template 193s 1515: struct __cv_selector<_Unqualified, true, true> 193s 1515: { using __type = const volatile _Unqualified; }; 193s 1515: 193s 1515: template::value, 193s 1515: bool _IsVol = is_volatile<_Qualified>::value> 193s 1515: class __match_cv_qualifiers 193s 1515: { 193s 1515: using __match = __cv_selector<_Unqualified, _IsConst, _IsVol>; 193s 1515: 193s 1515: public: 193s 1515: using __type = typename __match::__type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __make_unsigned 193s 1515: { using __type = _Tp; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_unsigned 193s 1515: { using __type = unsigned char; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_unsigned 193s 1515: { using __type = unsigned char; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_unsigned 193s 1515: { using __type = unsigned short; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_unsigned 193s 1515: { using __type = unsigned int; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_unsigned 193s 1515: { using __type = unsigned long; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_unsigned 193s 1515: { using __type = unsigned long long; }; 193s 1515: # 1902 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template::value, 193s 1515: bool _IsEnum = __is_enum(_Tp)> 193s 1515: class __make_unsigned_selector; 193s 1515: 193s 1515: template 193s 1515: class __make_unsigned_selector<_Tp, true, false> 193s 1515: { 193s 1515: using __unsigned_type 193s 1515: = typename __make_unsigned<__remove_cv_t<_Tp>>::__type; 193s 1515: 193s 1515: public: 193s 1515: using __type 193s 1515: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 193s 1515: }; 193s 1515: 193s 1515: class __make_unsigned_selector_base 193s 1515: { 193s 1515: protected: 193s 1515: template struct _List { }; 193s 1515: 193s 1515: template 193s 1515: struct _List<_Tp, _Up...> : _List<_Up...> 193s 1515: { static constexpr size_t __size = sizeof(_Tp); }; 193s 1515: 193s 1515: template 193s 1515: struct __select; 193s 1515: 193s 1515: template 193s 1515: struct __select<_Sz, _List<_Uint, _UInts...>, true> 193s 1515: { using __type = _Uint; }; 193s 1515: 193s 1515: template 193s 1515: struct __select<_Sz, _List<_Uint, _UInts...>, false> 193s 1515: : __select<_Sz, _List<_UInts...>> 193s 1515: { }; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: class __make_unsigned_selector<_Tp, false, true> 193s 1515: : __make_unsigned_selector_base 193s 1515: { 193s 1515: 193s 1515: using _UInts = _List; 193s 1515: 193s 1515: using __unsigned_type = typename __select::__type; 193s 1515: 193s 1515: public: 193s 1515: using __type 193s 1515: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __make_unsigned 193s 1515: { 193s 1515: using __type 193s 1515: = typename __make_unsigned_selector::__type; 193s 1515: }; 193s 1515: # 1976 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template<> 193s 1515: struct __make_unsigned 193s 1515: { 193s 1515: using __type 193s 1515: = typename __make_unsigned_selector::__type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_unsigned 193s 1515: { 193s 1515: using __type 193s 1515: = typename __make_unsigned_selector::__type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct make_unsigned 193s 1515: { using type = typename __make_unsigned_selector<_Tp>::__type; }; 193s 1515: 193s 1515: 193s 1515: template<> struct make_unsigned; 193s 1515: template<> struct make_unsigned; 193s 1515: template<> struct make_unsigned; 193s 1515: template<> struct make_unsigned; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __make_signed 193s 1515: { using __type = _Tp; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_signed 193s 1515: { using __type = signed char; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_signed 193s 1515: { using __type = signed char; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_signed 193s 1515: { using __type = signed short; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_signed 193s 1515: { using __type = signed int; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_signed 193s 1515: { using __type = signed long; }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_signed 193s 1515: { using __type = signed long long; }; 193s 1515: # 2062 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template::value, 193s 1515: bool _IsEnum = __is_enum(_Tp)> 193s 1515: class __make_signed_selector; 193s 1515: 193s 1515: template 193s 1515: class __make_signed_selector<_Tp, true, false> 193s 1515: { 193s 1515: using __signed_type 193s 1515: = typename __make_signed<__remove_cv_t<_Tp>>::__type; 193s 1515: 193s 1515: public: 193s 1515: using __type 193s 1515: = typename __match_cv_qualifiers<_Tp, __signed_type>::__type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: class __make_signed_selector<_Tp, false, true> 193s 1515: { 193s 1515: using __unsigned_type = typename __make_unsigned_selector<_Tp>::__type; 193s 1515: 193s 1515: public: 193s 1515: using __type = typename __make_signed_selector<__unsigned_type>::__type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct __make_signed 193s 1515: { 193s 1515: using __type 193s 1515: = typename __make_signed_selector::__type; 193s 1515: }; 193s 1515: # 2108 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template<> 193s 1515: struct __make_signed 193s 1515: { 193s 1515: using __type 193s 1515: = typename __make_signed_selector::__type; 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __make_signed 193s 1515: { 193s 1515: using __type 193s 1515: = typename __make_signed_selector::__type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct make_signed 193s 1515: { using type = typename __make_signed_selector<_Tp>::__type; }; 193s 1515: 193s 1515: 193s 1515: template<> struct make_signed; 193s 1515: template<> struct make_signed; 193s 1515: template<> struct make_signed; 193s 1515: template<> struct make_signed; 193s 1515: # 2151 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct remove_extent 193s 1515: { using type = __remove_extent(_Tp); }; 193s 1515: # 2170 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct remove_all_extents 193s 1515: { using type = __remove_all_extents(_Tp); }; 193s 1515: # 2201 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct remove_pointer 193s 1515: { using type = __remove_pointer(_Tp); }; 193s 1515: # 2221 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct add_pointer 193s 1515: { using type = __add_pointer(_Tp); }; 193s 1515: # 2260 "/usr/include/c++/15/type_traits" 3 4 193s 1515: struct __attribute__((__aligned__)) __aligned_storage_max_align_t 193s 1515: { }; 193s 1515: 193s 1515: constexpr size_t 193s 1515: __aligned_storage_default_alignment([[__maybe_unused__]] size_t __len) 193s 1515: { 193s 1515: # 2280 "/usr/include/c++/15/type_traits" 3 4 193s 1515: return alignof(__aligned_storage_max_align_t); 193s 1515: 193s 1515: } 193s 1515: # 2316 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct 193s 1515: 193s 1515: aligned_storage 193s 1515: { 193s 1515: struct type 193s 1515: { 193s 1515: alignas(_Align) unsigned char __data[_Len]; 193s 1515: }; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __strictest_alignment 193s 1515: { 193s 1515: static const size_t _S_alignment = 0; 193s 1515: static const size_t _S_size = 0; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __strictest_alignment<_Tp, _Types...> 193s 1515: { 193s 1515: static const size_t _S_alignment = 193s 1515: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment 193s 1515: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; 193s 1515: static const size_t _S_size = 193s 1515: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size 193s 1515: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; 193s 1515: }; 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 193s 1515: # 2361 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct 193s 1515: 193s 1515: aligned_union 193s 1515: { 193s 1515: private: 193s 1515: static_assert(sizeof...(_Types) != 0, "At least one type is required"); 193s 1515: 193s 1515: using __strictest = __strictest_alignment<_Types...>; 193s 1515: static const size_t _S_len = _Len > __strictest::_S_size 193s 1515: ? _Len : __strictest::_S_size; 193s 1515: public: 193s 1515: 193s 1515: static const size_t alignment_value = __strictest::_S_alignment; 193s 1515: 193s 1515: using type = typename aligned_storage<_S_len, alignment_value>::type; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: const size_t aligned_union<_Len, _Types...>::alignment_value; 193s 1515: #pragma GCC diagnostic pop 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct decay 193s 1515: { using type = __decay(_Tp); }; 193s 1515: # 2426 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct __strip_reference_wrapper 193s 1515: { 193s 1515: using __type = _Tp; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __strip_reference_wrapper > 193s 1515: { 193s 1515: using __type = _Tp&; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __decay_t = typename decay<_Tp>::type; 193s 1515: 193s 1515: template 193s 1515: using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using _Require = __enable_if_t<__and_<_Cond...>::value>; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __remove_cvref_t 193s 1515: = typename remove_cv::type>::type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct conditional 193s 1515: { using type = _Iftrue; }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct conditional 193s 1515: { using type = _Iffalse; }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct common_type; 193s 1515: # 2482 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct __success_type 193s 1515: { using type = _Tp; }; 193s 1515: 193s 1515: struct __failure_type 193s 1515: { }; 193s 1515: 193s 1515: struct __do_common_type_impl 193s 1515: { 193s 1515: template 193s 1515: using __cond_t 193s 1515: = decltype(true ? std::declval<_Tp>() : std::declval<_Up>()); 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: static __success_type<__decay_t<__cond_t<_Tp, _Up>>> 193s 1515: _S_test(int); 193s 1515: # 2509 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: static __failure_type 193s 1515: _S_test_2(...); 193s 1515: 193s 1515: template 193s 1515: static decltype(_S_test_2<_Tp, _Up>(0)) 193s 1515: _S_test(...); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct common_type<> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct common_type<_Tp0> 193s 1515: : public common_type<_Tp0, _Tp0> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template, typename _Dp2 = __decay_t<_Tp2>> 193s 1515: struct __common_type_impl 193s 1515: { 193s 1515: 193s 1515: 193s 1515: using type = common_type<_Dp1, _Dp2>; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __common_type_impl<_Tp1, _Tp2, _Tp1, _Tp2> 193s 1515: : private __do_common_type_impl 193s 1515: { 193s 1515: 193s 1515: 193s 1515: using type = decltype(_S_test<_Tp1, _Tp2>(0)); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct common_type<_Tp1, _Tp2> 193s 1515: : public __common_type_impl<_Tp1, _Tp2>::type 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __common_type_pack 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __common_type_fold; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct common_type<_Tp1, _Tp2, _Rp...> 193s 1515: : public __common_type_fold, 193s 1515: __common_type_pack<_Rp...>> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __common_type_fold<_CTp, __common_type_pack<_Rp...>, 193s 1515: __void_t> 193s 1515: : public common_type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __common_type_fold<_CTp, _Rp, void> 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __underlying_type_impl 193s 1515: { 193s 1515: using type = __underlying_type(_Tp); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __underlying_type_impl<_Tp, false> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct underlying_type 193s 1515: : public __underlying_type_impl<_Tp> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __declval_protector 193s 1515: { 193s 1515: static const bool __stop = false; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: auto declval() noexcept -> decltype(__declval<_Tp>(0)) 193s 1515: { 193s 1515: static_assert(__declval_protector<_Tp>::__stop, 193s 1515: "declval() must not be used!"); 193s 1515: return __declval<_Tp>(0); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct result_of; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct __invoke_memfun_ref { }; 193s 1515: struct __invoke_memfun_deref { }; 193s 1515: struct __invoke_memobj_ref { }; 193s 1515: struct __invoke_memobj_deref { }; 193s 1515: struct __invoke_other { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __result_of_success : __success_type<_Tp> 193s 1515: { using __invoke_type = _Tag; }; 193s 1515: 193s 1515: 193s 1515: struct __result_of_memfun_ref_impl 193s 1515: { 193s 1515: template 193s 1515: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) 193s 1515: ), __invoke_memfun_ref> _S_test(int); 193s 1515: 193s 1515: template 193s 1515: static __failure_type _S_test(...); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_memfun_ref 193s 1515: : private __result_of_memfun_ref_impl 193s 1515: { 193s 1515: using type = decltype(_S_test<_MemPtr, _Arg, _Args...>(0)); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: struct __result_of_memfun_deref_impl 193s 1515: { 193s 1515: template 193s 1515: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) 193s 1515: ), __invoke_memfun_deref> _S_test(int); 193s 1515: 193s 1515: template 193s 1515: static __failure_type _S_test(...); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_memfun_deref 193s 1515: : private __result_of_memfun_deref_impl 193s 1515: { 193s 1515: using type = decltype(_S_test<_MemPtr, _Arg, _Args...>(0)); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: struct __result_of_memobj_ref_impl 193s 1515: { 193s 1515: template 193s 1515: static __result_of_success().*std::declval<_Fp>() 193s 1515: ), __invoke_memobj_ref> _S_test(int); 193s 1515: 193s 1515: template 193s 1515: static __failure_type _S_test(...); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_memobj_ref 193s 1515: : private __result_of_memobj_ref_impl 193s 1515: { 193s 1515: using type = decltype(_S_test<_MemPtr, _Arg>(0)); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: struct __result_of_memobj_deref_impl 193s 1515: { 193s 1515: template 193s 1515: static __result_of_success()).*std::declval<_Fp>() 193s 1515: ), __invoke_memobj_deref> _S_test(int); 193s 1515: 193s 1515: template 193s 1515: static __failure_type _S_test(...); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_memobj_deref 193s 1515: : private __result_of_memobj_deref_impl 193s 1515: { 193s 1515: using type = decltype(_S_test<_MemPtr, _Arg>(0)); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_memobj; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_memobj<_Res _Class::*, _Arg> 193s 1515: { 193s 1515: using _Argval = __remove_cvref_t<_Arg>; 193s 1515: using _MemPtr = _Res _Class::*; 193s 1515: using type = typename __conditional_t<__or_, 193s 1515: is_base_of<_Class, _Argval>>::value, 193s 1515: __result_of_memobj_ref<_MemPtr, _Arg>, 193s 1515: __result_of_memobj_deref<_MemPtr, _Arg> 193s 1515: >::type; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_memfun; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> 193s 1515: { 193s 1515: using _Argval = typename remove_reference<_Arg>::type; 193s 1515: using _MemPtr = _Res _Class::*; 193s 1515: using type = typename __conditional_t::value, 193s 1515: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, 193s 1515: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> 193s 1515: >::type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template> 193s 1515: struct __inv_unwrap 193s 1515: { 193s 1515: using type = _Tp; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> 193s 1515: { 193s 1515: using type = _Up&; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_impl 193s 1515: { 193s 1515: using type = __failure_type; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_impl 193s 1515: : public __result_of_memobj<__decay_t<_MemPtr>, 193s 1515: typename __inv_unwrap<_Arg>::type> 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_impl 193s 1515: : public __result_of_memfun<__decay_t<_MemPtr>, 193s 1515: typename __inv_unwrap<_Arg>::type, _Args...> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: struct __result_of_other_impl 193s 1515: { 193s 1515: template 193s 1515: static __result_of_success()(std::declval<_Args>()...) 193s 1515: ), __invoke_other> _S_test(int); 193s 1515: 193s 1515: template 193s 1515: static __failure_type _S_test(...); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __result_of_impl 193s 1515: : private __result_of_other_impl 193s 1515: { 193s 1515: using type = decltype(_S_test<_Functor, _ArgTypes...>(0)); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __invoke_result 193s 1515: : public __result_of_impl< 193s 1515: is_member_object_pointer< 193s 1515: typename remove_reference<_Functor>::type 193s 1515: >::value, 193s 1515: is_member_function_pointer< 193s 1515: typename remove_reference<_Functor>::type 193s 1515: >::value, 193s 1515: _Functor, _ArgTypes... 193s 1515: >::type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __invoke_result_t = typename __invoke_result<_Fn, _Args...>::type; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct result_of<_Functor(_ArgTypes...)> 193s 1515: : public __invoke_result<_Functor, _ArgTypes...> 193s 1515: { } ; 193s 1515: # 2886 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template class _Op, typename... _Args> 193s 1515: struct __detector 193s 1515: { 193s 1515: using type = _Default; 193s 1515: using __is_detected = false_type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template class _Op, 193s 1515: typename... _Args> 193s 1515: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> 193s 1515: { 193s 1515: using type = _Op<_Args...>; 193s 1515: using __is_detected = true_type; 193s 1515: }; 193s 1515: 193s 1515: template class _Op, 193s 1515: typename... _Args> 193s 1515: using __detected_or = __detector<_Default, void, _Op, _Args...>; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template class _Op, 193s 1515: typename... _Args> 193s 1515: using __detected_or_t 193s 1515: = typename __detected_or<_Default, _Op, _Args...>::type; 193s 1515: # 2928 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template 193s 1515: struct __is_swappable; 193s 1515: 193s 1515: template 193s 1515: struct __is_nothrow_swappable; 193s 1515: 193s 1515: template 193s 1515: struct __is_tuple_like_impl : false_type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_tuple_like 193s 1515: : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: 193s 1515: inline 193s 1515: _Require<__not_<__is_tuple_like<_Tp>>, 193s 1515: is_move_constructible<_Tp>, 193s 1515: is_move_assignable<_Tp>> 193s 1515: swap(_Tp&, _Tp&) 193s 1515: noexcept(__and_, 193s 1515: is_nothrow_move_assignable<_Tp>>::value); 193s 1515: 193s 1515: template 193s 1515: 193s 1515: inline 193s 1515: __enable_if_t<__is_swappable<_Tp>::value> 193s 1515: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 193s 1515: noexcept(__is_nothrow_swappable<_Tp>::value); 193s 1515: 193s 1515: 193s 1515: namespace __swappable_details { 193s 1515: using std::swap; 193s 1515: 193s 1515: struct __do_is_swappable_impl 193s 1515: { 193s 1515: template(), std::declval<_Tp&>()))> 193s 1515: static true_type __test(int); 193s 1515: 193s 1515: template 193s 1515: static false_type __test(...); 193s 1515: }; 193s 1515: 193s 1515: struct __do_is_nothrow_swappable_impl 193s 1515: { 193s 1515: template 193s 1515: static __bool_constant< 193s 1515: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) 193s 1515: > __test(int); 193s 1515: 193s 1515: template 193s 1515: static false_type __test(...); 193s 1515: }; 193s 1515: 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: struct __is_swappable_impl 193s 1515: : public __swappable_details::__do_is_swappable_impl 193s 1515: { 193s 1515: using type = decltype(__test<_Tp>(0)); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __is_nothrow_swappable_impl 193s 1515: : public __swappable_details::__do_is_nothrow_swappable_impl 193s 1515: { 193s 1515: using type = decltype(__test<_Tp>(0)); 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct __is_swappable 193s 1515: : public __is_swappable_impl<_Tp>::type 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: struct __is_nothrow_swappable 193s 1515: : public __is_nothrow_swappable_impl<_Tp>::type 193s 1515: { }; 193s 1515: # 3150 "/usr/include/c++/15/type_traits" 3 4 193s 1515: template::value, typename = void> 193s 1515: struct __is_invocable_impl 193s 1515: : false_type 193s 1515: { 193s 1515: using __nothrow_conv = false_type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_invocable_impl<_Result, _Ret, 193s 1515: true, 193s 1515: __void_t> 193s 1515: : true_type 193s 1515: { 193s 1515: using __nothrow_conv = true_type; 193s 1515: }; 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 193s 1515: 193s 1515: template 193s 1515: struct __is_invocable_impl<_Result, _Ret, 193s 1515: false, 193s 1515: __void_t> 193s 1515: { 193s 1515: private: 193s 1515: 193s 1515: using _Res_t = typename _Result::type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: static _Res_t _S_get() noexcept; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: static void _S_conv(__type_identity_t<_Tp>) noexcept; 193s 1515: 193s 1515: 193s 1515: template(_S_get())), 193s 1515: typename = decltype(_S_conv<_Tp>(_S_get())), 193s 1515: 193s 1515: bool _Dangle = __reference_converts_from_temporary(_Tp, _Res_t) 193s 1515: 193s 1515: 193s 1515: 193s 1515: > 193s 1515: static __bool_constant<_Nothrow && !_Dangle> 193s 1515: _S_test(int); 193s 1515: 193s 1515: template 193s 1515: static false_type 193s 1515: _S_test(...); 193s 1515: 193s 1515: public: 193s 1515: 193s 1515: using type = decltype(_S_test<_Ret, true>(1)); 193s 1515: 193s 1515: 193s 1515: using __nothrow_conv = decltype(_S_test<_Ret>(1)); 193s 1515: }; 193s 1515: #pragma GCC diagnostic pop 193s 1515: 193s 1515: template 193s 1515: struct __is_invocable 193s 1515: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: constexpr bool __call_is_nt(__invoke_memfun_ref) 193s 1515: { 193s 1515: using _Up = typename __inv_unwrap<_Tp>::type; 193s 1515: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( 193s 1515: std::declval<_Args>()...)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr bool __call_is_nt(__invoke_memfun_deref) 193s 1515: { 193s 1515: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( 193s 1515: std::declval<_Args>()...)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr bool __call_is_nt(__invoke_memobj_ref) 193s 1515: { 193s 1515: using _Up = typename __inv_unwrap<_Tp>::type; 193s 1515: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr bool __call_is_nt(__invoke_memobj_deref) 193s 1515: { 193s 1515: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: constexpr bool __call_is_nt(__invoke_other) 193s 1515: { 193s 1515: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: struct __call_is_nothrow 193s 1515: : __bool_constant< 193s 1515: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) 193s 1515: > 193s 1515: { }; 193s 1515: 193s 1515: template 193s 1515: using __call_is_nothrow_ 193s 1515: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __is_nothrow_invocable 193s 1515: : __and_<__is_invocable<_Fn, _Args...>, 193s 1515: __call_is_nothrow_<_Fn, _Args...>>::type 193s 1515: { }; 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 193s 1515: struct __nonesuchbase {}; 193s 1515: struct __nonesuch : private __nonesuchbase { 193s 1515: ~__nonesuch() = delete; 193s 1515: __nonesuch(__nonesuch const&) = delete; 193s 1515: void operator=(__nonesuch const&) = delete; 193s 1515: }; 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 4184 "/usr/include/c++/15/type_traits" 3 4 193s 1515: 193s 1515: } 193s 1515: } 193s 1515: # 61 "/usr/include/c++/15/bits/stl_pair.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/move.h" 1 3 4 193s 1515: # 40 "/usr/include/c++/15/bits/move.h" 3 4 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: __attribute__((__always_inline__)) 193s 1515: inline constexpr _Tp* 193s 1515: __addressof(_Tp& __r) noexcept 193s 1515: { return __builtin_addressof(__r); } 193s 1515: # 69 "/usr/include/c++/15/bits/move.h" 3 4 193s 1515: template 193s 1515: [[__nodiscard__,__gnu__::__always_inline__]] 193s 1515: constexpr _Tp&& 193s 1515: forward(typename std::remove_reference<_Tp>::type& __t) noexcept 193s 1515: { return static_cast<_Tp&&>(__t); } 193s 1515: # 82 "/usr/include/c++/15/bits/move.h" 3 4 193s 1515: template 193s 1515: [[__nodiscard__,__gnu__::__always_inline__]] 193s 1515: constexpr _Tp&& 193s 1515: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept 193s 1515: { 193s 1515: static_assert(!std::is_lvalue_reference<_Tp>::value, 193s 1515: "std::forward must not be used to convert an rvalue to an lvalue"); 193s 1515: return static_cast<_Tp&&>(__t); 193s 1515: } 193s 1515: # 135 "/usr/include/c++/15/bits/move.h" 3 4 193s 1515: template 193s 1515: [[__nodiscard__,__gnu__::__always_inline__]] 193s 1515: constexpr typename std::remove_reference<_Tp>::type&& 193s 1515: move(_Tp&& __t) noexcept 193s 1515: { return static_cast::type&&>(__t); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __move_if_noexcept_cond 193s 1515: : public __and_<__not_>, 193s 1515: is_copy_constructible<_Tp>>::type { }; 193s 1515: # 156 "/usr/include/c++/15/bits/move.h" 3 4 193s 1515: template 193s 1515: [[__nodiscard__,__gnu__::__always_inline__]] 193s 1515: constexpr 193s 1515: __conditional_t<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&> 193s 1515: move_if_noexcept(_Tp& __x) noexcept 193s 1515: { return std::move(__x); } 193s 1515: # 173 "/usr/include/c++/15/bits/move.h" 3 4 193s 1515: template 193s 1515: [[__nodiscard__,__gnu__::__always_inline__]] 193s 1515: inline _Tp* 193s 1515: addressof(_Tp& __r) noexcept 193s 1515: { return std::__addressof(__r); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: const _Tp* addressof(const _Tp&&) = delete; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: 193s 1515: inline _Tp 193s 1515: __exchange(_Tp& __obj, _Up&& __new_val) 193s 1515: { 193s 1515: _Tp __old_val = std::move(__obj); 193s 1515: __obj = std::forward<_Up>(__new_val); 193s 1515: return __old_val; 193s 1515: } 193s 1515: # 217 "/usr/include/c++/15/bits/move.h" 3 4 193s 1515: template 193s 1515: 193s 1515: inline 193s 1515: 193s 1515: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 193s 1515: is_move_constructible<_Tp>, 193s 1515: is_move_assignable<_Tp>>::value>::type 193s 1515: 193s 1515: 193s 1515: 193s 1515: swap(_Tp& __a, _Tp& __b) 193s 1515: noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value) 193s 1515: 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: _Tp __tmp = std::move(__a); 193s 1515: __a = std::move(__b); 193s 1515: __b = std::move(__tmp); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: 193s 1515: inline 193s 1515: 193s 1515: typename enable_if<__is_swappable<_Tp>::value>::type 193s 1515: 193s 1515: 193s 1515: 193s 1515: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 193s 1515: noexcept(__is_nothrow_swappable<_Tp>::value) 193s 1515: { 193s 1515: for (size_t __n = 0; __n < _Nm; ++__n) 193s 1515: swap(__a[__n], __b[__n]); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 62 "/usr/include/c++/15/bits/stl_pair.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/utility.h" 1 3 4 193s 1515: # 45 "/usr/include/c++/15/bits/utility.h" 3 4 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct tuple_size; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template::type, 193s 1515: typename = typename enable_if::value>::type, 193s 1515: size_t = tuple_size<_Tp>::value> 193s 1515: using __enable_if_has_tuple_size = _Tp; 193s 1515: 193s 1515: template 193s 1515: struct tuple_size> 193s 1515: : public tuple_size<_Tp> { }; 193s 1515: 193s 1515: template 193s 1515: struct tuple_size> 193s 1515: : public tuple_size<_Tp> { }; 193s 1515: 193s 1515: template 193s 1515: struct tuple_size> 193s 1515: : public tuple_size<_Tp> { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct tuple_element; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; 193s 1515: 193s 1515: template 193s 1515: struct tuple_element<__i, const _Tp> 193s 1515: { 193s 1515: using type = const __tuple_element_t<__i, _Tp>; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct tuple_element<__i, volatile _Tp> 193s 1515: { 193s 1515: using type = volatile __tuple_element_t<__i, _Tp>; 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct tuple_element<__i, const volatile _Tp> 193s 1515: { 193s 1515: using type = const volatile __tuple_element_t<__i, _Tp>; 193s 1515: }; 193s 1515: # 142 "/usr/include/c++/15/bits/utility.h" 3 4 193s 1515: template struct _Index_tuple { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct _Build_index_tuple 193s 1515: { 193s 1515: # 156 "/usr/include/c++/15/bits/utility.h" 3 4 193s 1515: using __type = _Index_tuple<__integer_pack(_Num)...>; 193s 1515: 193s 1515: }; 193s 1515: # 234 "/usr/include/c++/15/bits/utility.h" 3 4 193s 1515: template 193s 1515: struct _Nth_type 193s 1515: { using type = __type_pack_element<_Np, _Types...>; }; 193s 1515: # 284 "/usr/include/c++/15/bits/utility.h" 3 4 193s 1515: struct _Swallow_assign 193s 1515: { 193s 1515: template 193s 1515: constexpr const _Swallow_assign& 193s 1515: operator=(const _Tp&) const noexcept 193s 1515: { return *this; } 193s 1515: }; 193s 1515: # 309 "/usr/include/c++/15/bits/utility.h" 3 4 193s 1515: constexpr _Swallow_assign ignore{}; 193s 1515: # 319 "/usr/include/c++/15/bits/utility.h" 3 4 193s 1515: 193s 1515: } 193s 1515: # 63 "/usr/include/c++/15/bits/stl_pair.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: # 79 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; 193s 1515: 193s 1515: 193s 1515: constexpr piecewise_construct_t piecewise_construct = 193s 1515: piecewise_construct_t(); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct pair; 193s 1515: 193s 1515: template 193s 1515: class tuple; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct array; 193s 1515: 193s 1515: template 193s 1515: struct _Index_tuple; 193s 1515: 193s 1515: template 193s 1515: class complex; 193s 1515: 193s 1515: template 193s 1515: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 193s 1515: get(pair<_Tp1, _Tp2>& __in) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 193s 1515: get(pair<_Tp1, _Tp2>&& __in) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 193s 1515: get(const pair<_Tp1, _Tp2>& __in) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 193s 1515: get(const pair<_Tp1, _Tp2>&& __in) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 193s 1515: get(tuple<_Elements...>& __t) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 193s 1515: get(const tuple<_Elements...>& __t) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 193s 1515: get(tuple<_Elements...>&& __t) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 193s 1515: get(const tuple<_Elements...>&& __t) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr _Tp& 193s 1515: get(array<_Tp, _Nm>&) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr _Tp&& 193s 1515: get(array<_Tp, _Nm>&&) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr const _Tp& 193s 1515: get(const array<_Tp, _Nm>&) noexcept; 193s 1515: 193s 1515: template 193s 1515: constexpr const _Tp&& 193s 1515: get(const array<_Tp, _Nm>&&) noexcept; 193s 1515: # 176 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: template 193s 1515: struct _PCC 193s 1515: { 193s 1515: template 193s 1515: static constexpr bool _ConstructiblePair() 193s 1515: { 193s 1515: return __and_, 193s 1515: is_constructible<_T2, const _U2&>>::value; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: static constexpr bool _ImplicitlyConvertiblePair() 193s 1515: { 193s 1515: return __and_, 193s 1515: is_convertible>::value; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: static constexpr bool _MoveConstructiblePair() 193s 1515: { 193s 1515: return __and_, 193s 1515: is_constructible<_T2, _U2&&>>::value; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: static constexpr bool _ImplicitlyMoveConvertiblePair() 193s 1515: { 193s 1515: return __and_, 193s 1515: is_convertible<_U2&&, _T2>>::value; 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: struct _PCC 193s 1515: { 193s 1515: template 193s 1515: static constexpr bool _ConstructiblePair() 193s 1515: { 193s 1515: return false; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: static constexpr bool _ImplicitlyConvertiblePair() 193s 1515: { 193s 1515: return false; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: static constexpr bool _MoveConstructiblePair() 193s 1515: { 193s 1515: return false; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: static constexpr bool _ImplicitlyMoveConvertiblePair() 193s 1515: { 193s 1515: return false; 193s 1515: } 193s 1515: }; 193s 1515: # 278 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: template class __pair_base 193s 1515: { 193s 1515: 193s 1515: template friend struct pair; 193s 1515: __pair_base() = default; 193s 1515: ~__pair_base() = default; 193s 1515: __pair_base(const __pair_base&) = default; 193s 1515: __pair_base& operator=(const __pair_base&) = delete; 193s 1515: 193s 1515: }; 193s 1515: # 301 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: template 193s 1515: struct pair 193s 1515: : public __pair_base<_T1, _T2> 193s 1515: { 193s 1515: typedef _T1 first_type; 193s 1515: typedef _T2 second_type; 193s 1515: 193s 1515: _T1 first; 193s 1515: _T2 second; 193s 1515: 193s 1515: 193s 1515: constexpr pair(const pair&) = default; 193s 1515: constexpr pair(pair&&) = default; 193s 1515: 193s 1515: template 193s 1515: 193s 1515: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); 193s 1515: 193s 1515: 193s 1515: void 193s 1515: swap(pair& __p) 193s 1515: noexcept(__and_<__is_nothrow_swappable<_T1>, 193s 1515: __is_nothrow_swappable<_T2>>::value) 193s 1515: { 193s 1515: using std::swap; 193s 1515: swap(first, __p.first); 193s 1515: swap(second, __p.second); 193s 1515: } 193s 1515: # 349 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: private: 193s 1515: template 193s 1515: 193s 1515: pair(tuple<_Args1...>&, tuple<_Args2...>&, 193s 1515: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); 193s 1515: public: 193s 1515: # 739 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: template , 193s 1515: __is_implicitly_default_constructible<_U2>> 193s 1515: ::value, bool>::type = true> 193s 1515: constexpr pair() 193s 1515: : first(), second() { } 193s 1515: 193s 1515: template , 193s 1515: is_default_constructible<_U2>, 193s 1515: __not_< 193s 1515: __and_<__is_implicitly_default_constructible<_U1>, 193s 1515: __is_implicitly_default_constructible<_U2>>>> 193s 1515: ::value, bool>::type = false> 193s 1515: explicit constexpr pair() 193s 1515: : first(), second() { } 193s 1515: 193s 1515: 193s 1515: 193s 1515: using _PCCP = _PCC; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template() 193s 1515: && _PCCP::template 193s 1515: _ImplicitlyConvertiblePair<_U1, _U2>(), 193s 1515: bool>::type=true> 193s 1515: constexpr pair(const _T1& __a, const _T2& __b) 193s 1515: : first(__a), second(__b) { } 193s 1515: 193s 1515: 193s 1515: template() 193s 1515: && !_PCCP::template 193s 1515: _ImplicitlyConvertiblePair<_U1, _U2>(), 193s 1515: bool>::type=false> 193s 1515: explicit constexpr pair(const _T1& __a, const _T2& __b) 193s 1515: : first(__a), second(__b) { } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: using _PCCFP = _PCC::value 193s 1515: || !is_same<_T2, _U2>::value, 193s 1515: _T1, _T2>; 193s 1515: 193s 1515: 193s 1515: template::template 193s 1515: _ConstructiblePair<_U1, _U2>() 193s 1515: && _PCCFP<_U1, _U2>::template 193s 1515: _ImplicitlyConvertiblePair<_U1, _U2>(), 193s 1515: bool>::type=true> 193s 1515: constexpr pair(const pair<_U1, _U2>& __p) 193s 1515: : first(__p.first), second(__p.second) 193s 1515: { ; } 193s 1515: 193s 1515: template::template 193s 1515: _ConstructiblePair<_U1, _U2>() 193s 1515: && !_PCCFP<_U1, _U2>::template 193s 1515: _ImplicitlyConvertiblePair<_U1, _U2>(), 193s 1515: bool>::type=false> 193s 1515: explicit constexpr pair(const pair<_U1, _U2>& __p) 193s 1515: : first(__p.first), second(__p.second) 193s 1515: { ; } 193s 1515: # 823 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: private: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct __zero_as_null_pointer_constant 193s 1515: { 193s 1515: __zero_as_null_pointer_constant(int __zero_as_null_pointer_constant::*) 193s 1515: { } 193s 1515: template::value>> 193s 1515: __zero_as_null_pointer_constant(_Tp) = delete; 193s 1515: }; 193s 1515: 193s 1515: public: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template>, 193s 1515: is_pointer<_T2>, 193s 1515: is_constructible<_T1, _U1>, 193s 1515: __not_>, 193s 1515: is_convertible<_U1, _T1>>::value, 193s 1515: bool> = true> 193s 1515: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 193s 1515: constexpr 193s 1515: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) 193s 1515: : first(std::forward<_U1>(__x)), second(nullptr) 193s 1515: { ; } 193s 1515: 193s 1515: template>, 193s 1515: is_pointer<_T2>, 193s 1515: is_constructible<_T1, _U1>, 193s 1515: __not_>, 193s 1515: __not_>>::value, 193s 1515: bool> = false> 193s 1515: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 193s 1515: explicit constexpr 193s 1515: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) 193s 1515: : first(std::forward<_U1>(__x)), second(nullptr) 193s 1515: { ; } 193s 1515: 193s 1515: template, 193s 1515: __not_>, 193s 1515: is_constructible<_T2, _U2>, 193s 1515: __not_>, 193s 1515: is_convertible<_U2, _T2>>::value, 193s 1515: bool> = true> 193s 1515: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 193s 1515: constexpr 193s 1515: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) 193s 1515: : first(nullptr), second(std::forward<_U2>(__y)) 193s 1515: { ; } 193s 1515: 193s 1515: template, 193s 1515: __not_>, 193s 1515: is_constructible<_T2, _U2>, 193s 1515: __not_>, 193s 1515: __not_>>::value, 193s 1515: bool> = false> 193s 1515: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 193s 1515: explicit constexpr 193s 1515: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) 193s 1515: : first(nullptr), second(std::forward<_U2>(__y)) 193s 1515: { ; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: template() 193s 1515: && _PCCP::template 193s 1515: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 193s 1515: bool>::type=true> 193s 1515: constexpr pair(_U1&& __x, _U2&& __y) 193s 1515: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) 193s 1515: { ; } 193s 1515: 193s 1515: template() 193s 1515: && !_PCCP::template 193s 1515: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 193s 1515: bool>::type=false> 193s 1515: explicit constexpr pair(_U1&& __x, _U2&& __y) 193s 1515: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) 193s 1515: { ; } 193s 1515: 193s 1515: 193s 1515: template::template 193s 1515: _MoveConstructiblePair<_U1, _U2>() 193s 1515: && _PCCFP<_U1, _U2>::template 193s 1515: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 193s 1515: bool>::type=true> 193s 1515: constexpr pair(pair<_U1, _U2>&& __p) 193s 1515: : first(std::forward<_U1>(__p.first)), 193s 1515: second(std::forward<_U2>(__p.second)) 193s 1515: { ; } 193s 1515: 193s 1515: template::template 193s 1515: _MoveConstructiblePair<_U1, _U2>() 193s 1515: && !_PCCFP<_U1, _U2>::template 193s 1515: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 193s 1515: bool>::type=false> 193s 1515: explicit constexpr pair(pair<_U1, _U2>&& __p) 193s 1515: : first(std::forward<_U1>(__p.first)), 193s 1515: second(std::forward<_U2>(__p.second)) 193s 1515: { ; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: pair& 193s 1515: operator=(__conditional_t<__and_, 193s 1515: is_copy_assignable<_T2>>::value, 193s 1515: const pair&, const __nonesuch&> __p) 193s 1515: { 193s 1515: first = __p.first; 193s 1515: second = __p.second; 193s 1515: return *this; 193s 1515: } 193s 1515: 193s 1515: pair& 193s 1515: operator=(__conditional_t<__and_, 193s 1515: is_move_assignable<_T2>>::value, 193s 1515: pair&&, __nonesuch&&> __p) 193s 1515: noexcept(__and_, 193s 1515: is_nothrow_move_assignable<_T2>>::value) 193s 1515: { 193s 1515: first = std::forward(__p.first); 193s 1515: second = std::forward(__p.second); 193s 1515: return *this; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: typename enable_if<__and_, 193s 1515: is_assignable<_T2&, const _U2&>>::value, 193s 1515: pair&>::type 193s 1515: operator=(const pair<_U1, _U2>& __p) 193s 1515: { 193s 1515: first = __p.first; 193s 1515: second = __p.second; 193s 1515: return *this; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: typename enable_if<__and_, 193s 1515: is_assignable<_T2&, _U2&&>>::value, 193s 1515: pair&>::type 193s 1515: operator=(pair<_U1, _U2>&& __p) 193s 1515: { 193s 1515: first = std::forward<_U1>(__p.first); 193s 1515: second = std::forward<_U2>(__p.second); 193s 1515: return *this; 193s 1515: } 193s 1515: # 1015 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: }; 193s 1515: # 1057 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: template 193s 1515: [[__nodiscard__]] 193s 1515: inline constexpr bool 193s 1515: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 193s 1515: { return __x.first == __y.first && __x.second == __y.second; } 193s 1515: # 1070 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: template 193s 1515: [[__nodiscard__]] 193s 1515: inline constexpr bool 193s 1515: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 193s 1515: { return __x.first < __y.first 193s 1515: || (!(__y.first < __x.first) && __x.second < __y.second); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: [[__nodiscard__]] 193s 1515: inline constexpr bool 193s 1515: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 193s 1515: { return !(__x == __y); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: [[__nodiscard__]] 193s 1515: inline constexpr bool 193s 1515: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 193s 1515: { return __y < __x; } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: [[__nodiscard__]] 193s 1515: inline constexpr bool 193s 1515: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 193s 1515: { return !(__y < __x); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: [[__nodiscard__]] 193s 1515: inline constexpr bool 193s 1515: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 193s 1515: { return !(__x < __y); } 193s 1515: # 1112 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: template 193s 1515: inline 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: void 193s 1515: 193s 1515: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) 193s 1515: noexcept(noexcept(__x.swap(__y))) 193s 1515: { __x.swap(__y); } 193s 1515: # 1161 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: template 193s 1515: constexpr pair::__type, 193s 1515: typename __decay_and_strip<_T2>::__type> 193s 1515: make_pair(_T1&& __x, _T2&& __y) 193s 1515: { 193s 1515: typedef typename __decay_and_strip<_T1>::__type __ds_type1; 193s 1515: typedef typename __decay_and_strip<_T2>::__type __ds_type2; 193s 1515: typedef pair<__ds_type1, __ds_type2> __pair_type; 193s 1515: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); 193s 1515: } 193s 1515: # 1184 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: template 193s 1515: struct __is_tuple_like_impl> : true_type 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct tuple_size> 193s 1515: : public integral_constant { }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct tuple_element<0, pair<_Tp1, _Tp2>> 193s 1515: { typedef _Tp1 type; }; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct tuple_element<1, pair<_Tp1, _Tp2>> 193s 1515: { typedef _Tp2 type; }; 193s 1515: # 1213 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wc++14-extensions" 193s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 193s 1515: template 193s 1515: inline constexpr bool __is_pair = false; 193s 1515: 193s 1515: template 193s 1515: inline constexpr bool __is_pair> = true; 193s 1515: #pragma GCC diagnostic pop 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct __pair_get; 193s 1515: 193s 1515: template<> 193s 1515: struct __pair_get<0> 193s 1515: { 193s 1515: template 193s 1515: static constexpr _Tp1& 193s 1515: __get(pair<_Tp1, _Tp2>& __pair) noexcept 193s 1515: { return __pair.first; } 193s 1515: 193s 1515: template 193s 1515: static constexpr _Tp1&& 193s 1515: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept 193s 1515: { return std::forward<_Tp1>(__pair.first); } 193s 1515: 193s 1515: template 193s 1515: static constexpr const _Tp1& 193s 1515: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept 193s 1515: { return __pair.first; } 193s 1515: 193s 1515: template 193s 1515: static constexpr const _Tp1&& 193s 1515: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept 193s 1515: { return std::forward(__pair.first); } 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct __pair_get<1> 193s 1515: { 193s 1515: template 193s 1515: static constexpr _Tp2& 193s 1515: __get(pair<_Tp1, _Tp2>& __pair) noexcept 193s 1515: { return __pair.second; } 193s 1515: 193s 1515: template 193s 1515: static constexpr _Tp2&& 193s 1515: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept 193s 1515: { return std::forward<_Tp2>(__pair.second); } 193s 1515: 193s 1515: template 193s 1515: static constexpr const _Tp2& 193s 1515: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept 193s 1515: { return __pair.second; } 193s 1515: 193s 1515: template 193s 1515: static constexpr const _Tp2&& 193s 1515: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept 193s 1515: { return std::forward(__pair.second); } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 193s 1515: get(pair<_Tp1, _Tp2>& __in) noexcept 193s 1515: { return __pair_get<_Int>::__get(__in); } 193s 1515: 193s 1515: template 193s 1515: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 193s 1515: get(pair<_Tp1, _Tp2>&& __in) noexcept 193s 1515: { return __pair_get<_Int>::__move_get(std::move(__in)); } 193s 1515: 193s 1515: template 193s 1515: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 193s 1515: get(const pair<_Tp1, _Tp2>& __in) noexcept 193s 1515: { return __pair_get<_Int>::__const_get(__in); } 193s 1515: 193s 1515: template 193s 1515: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 193s 1515: get(const pair<_Tp1, _Tp2>&& __in) noexcept 193s 1515: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } 193s 1515: # 1365 "/usr/include/c++/15/bits/stl_pair.h" 3 4 193s 1515: 193s 1515: } 193s 1515: # 72 "/usr/include/c++/15/utility" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/initializer_list" 1 3 4 193s 1515: # 43 "/usr/include/c++/15/initializer_list" 3 4 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: template 193s 1515: class initializer_list 193s 1515: { 193s 1515: public: 193s 1515: typedef _E value_type; 193s 1515: typedef const _E& reference; 193s 1515: typedef const _E& const_reference; 193s 1515: typedef size_t size_type; 193s 1515: typedef const _E* iterator; 193s 1515: typedef const _E* const_iterator; 193s 1515: 193s 1515: private: 193s 1515: iterator _M_array; 193s 1515: size_type _M_len; 193s 1515: 193s 1515: 193s 1515: constexpr initializer_list(const_iterator __a, size_type __l) 193s 1515: : _M_array(__a), _M_len(__l) { } 193s 1515: 193s 1515: public: 193s 1515: constexpr initializer_list() noexcept 193s 1515: : _M_array(0), _M_len(0) { } 193s 1515: 193s 1515: 193s 1515: constexpr size_type 193s 1515: size() const noexcept { return _M_len; } 193s 1515: 193s 1515: 193s 1515: constexpr const_iterator 193s 1515: begin() const noexcept { return _M_array; } 193s 1515: 193s 1515: 193s 1515: constexpr const_iterator 193s 1515: end() const noexcept { return begin() + size(); } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr const _Tp* 193s 1515: begin(initializer_list<_Tp> __ils) noexcept 193s 1515: { return __ils.begin(); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: constexpr const _Tp* 193s 1515: end(initializer_list<_Tp> __ils) noexcept 193s 1515: { return __ils.end(); } 193s 1515: } 193s 1515: # 76 "/usr/include/c++/15/utility" 2 3 4 193s 1515: # 103 "/usr/include/c++/15/utility" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 193s 1515: # 104 "/usr/include/c++/15/utility" 2 3 4 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: # 237 "/usr/include/c++/15/utility" 3 4 193s 1515: 193s 1515: } 193s 1515: # 3163 "/usr/include/doctest/doctest.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/fstream" 1 3 4 193s 1515: # 42 "/usr/include/c++/15/fstream" 3 4 193s 1515: # 1 "/usr/include/c++/15/istream" 1 3 4 193s 1515: # 42 "/usr/include/c++/15/istream" 3 4 193s 1515: # 1 "/usr/include/c++/15/ios" 1 3 4 193s 1515: # 42 "/usr/include/c++/15/ios" 3 4 193s 1515: # 1 "/usr/include/c++/15/iosfwd" 1 3 4 193s 1515: # 43 "/usr/include/c++/15/iosfwd" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/stringfwd.h" 1 3 4 193s 1515: # 42 "/usr/include/c++/15/bits/stringfwd.h" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/memoryfwd.h" 1 3 4 193s 1515: # 52 "/usr/include/c++/15/bits/memoryfwd.h" 3 4 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: # 66 "/usr/include/c++/15/bits/memoryfwd.h" 3 4 193s 1515: template 193s 1515: class allocator; 193s 1515: 193s 1515: template<> 193s 1515: class allocator; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct uses_allocator; 193s 1515: 193s 1515: template 193s 1515: struct allocator_traits; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 43 "/usr/include/c++/15/bits/stringfwd.h" 2 3 4 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct char_traits; 193s 1515: 193s 1515: template<> struct char_traits; 193s 1515: 193s 1515: template<> struct char_traits; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> struct char_traits; 193s 1515: template<> struct char_traits; 193s 1515: 193s 1515: 193s 1515: namespace __cxx11 { 193s 1515: 193s 1515: template, 193s 1515: typename _Alloc = allocator<_CharT> > 193s 1515: class basic_string; 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: typedef basic_string string; 193s 1515: 193s 1515: 193s 1515: typedef basic_string wstring; 193s 1515: # 91 "/usr/include/c++/15/bits/stringfwd.h" 3 4 193s 1515: typedef basic_string u16string; 193s 1515: 193s 1515: 193s 1515: typedef basic_string u32string; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 44 "/usr/include/c++/15/iosfwd" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/postypes.h" 1 3 4 193s 1515: # 42 "/usr/include/c++/15/bits/postypes.h" 3 4 193s 1515: # 1 "/usr/include/c++/15/cwchar" 1 3 4 193s 1515: # 49 "/usr/include/c++/15/cwchar" 3 4 193s 1515: # 1 "/usr/include/wchar.h" 1 3 4 193s 1515: # 27 "/usr/include/wchar.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 193s 1515: # 28 "/usr/include/wchar.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 193s 1515: # 31 "/usr/include/wchar.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 36 "/usr/include/wchar.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdarg.h" 1 3 4 193s 1515: # 39 "/usr/include/wchar.h" 2 3 4 193s 1515: # 51 "/usr/include/wchar.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar.h" 1 3 4 193s 1515: # 52 "/usr/include/wchar.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 1 3 4 193s 1515: # 20 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 3 4 193s 1515: typedef unsigned int wint_t; 193s 1515: # 53 "/usr/include/wchar.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/mbstate_t.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __mbstate_t mbstate_t; 193s 1515: # 54 "/usr/include/wchar.h" 2 3 4 193s 1515: # 90 "/usr/include/wchar.h" 3 4 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct tm; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *wcscpy (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t wcslcpy (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t wcslcat (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *wcscat (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: extern wchar_t *wcsncat (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, 193s 1515: size_t __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 193s 1515: locale_t __loc) noexcept (true); 193s 1515: 193s 1515: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 193s 1515: size_t __n, locale_t __loc) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t wcsxfrm (wchar_t *__restrict __s1, 193s 1515: const wchar_t *__restrict __s2, size_t __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, 193s 1515: locale_t __loc) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, 193s 1515: size_t __n, locale_t __loc) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern wchar_t *wcsdup (const wchar_t *__s) noexcept (true) 193s 1515: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (__builtin_free, 1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) 193s 1515: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); 193s 1515: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) 193s 1515: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) 193s 1515: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); 193s 1515: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) 193s 1515: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); 193s 1515: # 206 "/usr/include/wchar.h" 3 4 193s 1515: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) 193s 1515: noexcept (true) __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) 193s 1515: noexcept (true) __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) 193s 1515: noexcept (true) __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) 193s 1515: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); 193s 1515: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, 193s 1515: const wchar_t *__accept) 193s 1515: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) 193s 1515: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); 193s 1515: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, 193s 1515: const wchar_t *__needle) 193s 1515: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *wcstok (wchar_t *__restrict __s, 193s 1515: const wchar_t *__restrict __delim, 193s 1515: wchar_t **__restrict __ptr) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern size_t wcslen (const wchar_t *__s) noexcept (true) __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) 193s 1515: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); 193s 1515: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, 193s 1515: const wchar_t *__needle) 193s 1515: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); 193s 1515: # 265 "/usr/include/wchar.h" 3 4 193s 1515: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) 193s 1515: noexcept (true) __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) 193s 1515: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); 193s 1515: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, 193s 1515: size_t __n) 193s 1515: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 193s 1515: noexcept (true) __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, 193s 1515: const wchar_t *__restrict __s2, size_t __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, 193s 1515: const wchar_t *__restrict __s2, size_t __n) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wint_t btowc (int __c) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int wctob (wint_t __c) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int mbsinit (const mbstate_t *__ps) noexcept (true) __attribute__ ((__pure__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t mbrtowc (wchar_t *__restrict __pwc, 193s 1515: const char *__restrict __s, size_t __n, 193s 1515: mbstate_t *__restrict __p) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, 193s 1515: mbstate_t *__restrict __ps) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern size_t __mbrlen (const char *__restrict __s, size_t __n, 193s 1515: mbstate_t *__restrict __ps) noexcept (true); 193s 1515: extern size_t mbrlen (const char *__restrict __s, size_t __n, 193s 1515: mbstate_t *__restrict __ps) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wint_t __btowc_alias (int __c) __asm ("btowc"); 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) wint_t 193s 1515: __attribute__ ((__leaf__)) btowc (int __c) noexcept (true) 193s 1515: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' 193s 1515: ? (wint_t) __c : __btowc_alias (__c)); } 193s 1515: 193s 1515: extern int __wctob_alias (wint_t __c) __asm ("wctob"); 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: __attribute__ ((__leaf__)) wctob (wint_t __wc) noexcept (true) 193s 1515: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' 193s 1515: ? (int) __wc : __wctob_alias (__wc)); } 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) size_t 193s 1515: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) noexcept (true) 193s 1515: 193s 1515: { return (__ps != __null 193s 1515: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t mbsrtowcs (wchar_t *__restrict __dst, 193s 1515: const char **__restrict __src, size_t __len, 193s 1515: mbstate_t *__restrict __ps) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t wcsrtombs (char *__restrict __dst, 193s 1515: const wchar_t **__restrict __src, size_t __len, 193s 1515: mbstate_t *__restrict __ps) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, 193s 1515: const char **__restrict __src, size_t __nmc, 193s 1515: size_t __len, mbstate_t *__restrict __ps) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t wcsnrtombs (char *__restrict __dst, 193s 1515: const wchar_t **__restrict __src, 193s 1515: size_t __nwc, size_t __len, 193s 1515: mbstate_t *__restrict __ps) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int wcwidth (wchar_t __c) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int wcswidth (const wchar_t *__s, size_t __n) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern double wcstod (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern float wcstof (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr) noexcept (true); 193s 1515: extern long double wcstold (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr) noexcept (true); 193s 1515: # 422 "/usr/include/wchar.h" 3 4 193s 1515: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr) noexcept (true); 193s 1515: # 437 "/usr/include/wchar.h" 3 4 193s 1515: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr) noexcept (true); 193s 1515: # 455 "/usr/include/wchar.h" 3 4 193s 1515: extern long int wcstol (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, int __base) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, int __base) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ 193s 1515: extern long long int wcstoll (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, int __base) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ 193s 1515: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, 193s 1515: int __base) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ 193s 1515: extern long long int wcstoq (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, int __base) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: __extension__ 193s 1515: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, 193s 1515: int __base) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int wcstol (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstol") 193s 1515: 193s 1515: ; 193s 1515: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoul") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: __extension__ 193s 1515: extern long long int wcstoll (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoll") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: __extension__ 193s 1515: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoull") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: __extension__ 193s 1515: extern long long int wcstoq (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoll") 193s 1515: 193s 1515: ; 193s 1515: __extension__ 193s 1515: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoull") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: # 561 "/usr/include/wchar.h" 3 4 193s 1515: extern long int wcstol_l (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, int __base, 193s 1515: locale_t __loc) noexcept (true); 193s 1515: 193s 1515: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, 193s 1515: int __base, locale_t __loc) noexcept (true); 193s 1515: 193s 1515: __extension__ 193s 1515: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, 193s 1515: int __base, locale_t __loc) noexcept (true); 193s 1515: 193s 1515: __extension__ 193s 1515: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, 193s 1515: int __base, locale_t __loc) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern long int wcstol_l (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_wcstol_l") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_wcstoul_l") 193s 1515: 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: __extension__ 193s 1515: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_wcstoll_l") 193s 1515: 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: __extension__ 193s 1515: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_wcstoull_l") 193s 1515: 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: # 630 "/usr/include/wchar.h" 3 4 193s 1515: extern double wcstod_l (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, locale_t __loc) 193s 1515: noexcept (true); 193s 1515: 193s 1515: extern float wcstof_l (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, locale_t __loc) 193s 1515: noexcept (true); 193s 1515: 193s 1515: extern long double wcstold_l (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, 193s 1515: locale_t __loc) noexcept (true); 193s 1515: # 649 "/usr/include/wchar.h" 3 4 193s 1515: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, 193s 1515: locale_t __loc) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, 193s 1515: locale_t __loc) noexcept (true); 193s 1515: # 667 "/usr/include/wchar.h" 3 4 193s 1515: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr, 193s 1515: wchar_t **__restrict __endptr, 193s 1515: locale_t __loc) noexcept (true); 193s 1515: # 689 "/usr/include/wchar.h" 3 4 193s 1515: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, size_t __n) 193s 1515: noexcept (true); 193s 1515: # 718 "/usr/include/wchar.h" 3 4 193s 1515: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) noexcept (true) 193s 1515: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fwide (__FILE *__fp, int __mode) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fwprintf (__FILE *__restrict __stream, 193s 1515: const wchar_t *__restrict __format, ...) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int wprintf (const wchar_t *__restrict __format, ...) 193s 1515: ; 193s 1515: 193s 1515: extern int swprintf (wchar_t *__restrict __s, size_t __n, 193s 1515: const wchar_t *__restrict __format, ...) 193s 1515: noexcept (true) ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int vfwprintf (__FILE *__restrict __s, 193s 1515: const wchar_t *__restrict __format, 193s 1515: __gnuc_va_list __arg) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int vwprintf (const wchar_t *__restrict __format, 193s 1515: __gnuc_va_list __arg) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: extern int vswprintf (wchar_t *__restrict __s, size_t __n, 193s 1515: const wchar_t *__restrict __format, 193s 1515: __gnuc_va_list __arg) 193s 1515: noexcept (true) ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fwscanf (__FILE *__restrict __stream, 193s 1515: const wchar_t *__restrict __format, ...) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int wscanf (const wchar_t *__restrict __format, ...) 193s 1515: ; 193s 1515: 193s 1515: extern int swscanf (const wchar_t *__restrict __s, 193s 1515: const wchar_t *__restrict __format, ...) 193s 1515: noexcept (true) ; 193s 1515: # 795 "/usr/include/wchar.h" 3 4 193s 1515: extern int fwscanf (__FILE *__restrict __stream, const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc23_fwscanf") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: extern int wscanf (const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc23_wscanf") 193s 1515: 193s 1515: ; 193s 1515: extern int swscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc23_swscanf") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: # 851 "/usr/include/wchar.h" 3 4 193s 1515: extern int vfwscanf (__FILE *__restrict __s, 193s 1515: const wchar_t *__restrict __format, 193s 1515: __gnuc_va_list __arg) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int vwscanf (const wchar_t *__restrict __format, 193s 1515: __gnuc_va_list __arg) 193s 1515: ; 193s 1515: 193s 1515: extern int vswscanf (const wchar_t *__restrict __s, 193s 1515: const wchar_t *__restrict __format, 193s 1515: __gnuc_va_list __arg) 193s 1515: noexcept (true) ; 193s 1515: # 875 "/usr/include/wchar.h" 3 4 193s 1515: extern int vfwscanf (__FILE *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfwscanf") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: extern int vwscanf (const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vwscanf") 193s 1515: 193s 1515: ; 193s 1515: extern int vswscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc23_vswscanf") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: # 935 "/usr/include/wchar.h" 3 4 193s 1515: extern wint_t fgetwc (__FILE *__stream); 193s 1515: extern wint_t getwc (__FILE *__stream); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wint_t getwchar (void); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); 193s 1515: extern wint_t putwc (wchar_t __wc, __FILE *__stream); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wint_t putwchar (wchar_t __wc); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, 193s 1515: __FILE *__restrict __stream); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fputws (const wchar_t *__restrict __ws, 193s 1515: __FILE *__restrict __stream); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); 193s 1515: # 990 "/usr/include/wchar.h" 3 4 193s 1515: extern wint_t getwc_unlocked (__FILE *__stream); 193s 1515: extern wint_t getwchar_unlocked (void); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wint_t fgetwc_unlocked (__FILE *__stream); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); 193s 1515: # 1016 "/usr/include/wchar.h" 3 4 193s 1515: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); 193s 1515: extern wint_t putwchar_unlocked (wchar_t __wc); 193s 1515: # 1026 "/usr/include/wchar.h" 3 4 193s 1515: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, 193s 1515: __FILE *__restrict __stream); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int fputws_unlocked (const wchar_t *__restrict __ws, 193s 1515: __FILE *__restrict __stream); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, 193s 1515: const wchar_t *__restrict __format, 193s 1515: const struct tm *__restrict __tp) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, 193s 1515: const wchar_t *__restrict __format, 193s 1515: const struct tm *__restrict __tp, 193s 1515: locale_t __loc) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar2-decl.h" 1 3 4 193s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/wchar2-decl.h" 3 4 193s 1515: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, 193s 1515: const wchar_t *__restrict __s2, size_t __n, 193s 1515: size_t __ns1) noexcept (true); 193s 1515: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmemcpy") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: extern wchar_t *__wmemcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemcpy_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) 193s 1515: ; 193s 1515: 193s 1515: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, 193s 1515: size_t __n, size_t __ns1) noexcept (true); 193s 1515: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) noexcept (true) __asm__ ("" "wmemmove") 193s 1515: 193s 1515: ; 193s 1515: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemmove_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, 193s 1515: const wchar_t *__restrict __s2, size_t __n, 193s 1515: size_t __ns1) noexcept (true); 193s 1515: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmempcpy") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: extern wchar_t *__wmempcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmempcpy_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, 193s 1515: size_t __ns) noexcept (true); 193s 1515: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true) __asm__ ("" "wmemset") 193s 1515: ; 193s 1515: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) noexcept (true) __asm__ ("" "__wmemset_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) 193s 1515: ; 193s 1515: 193s 1515: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, 193s 1515: size_t __n) noexcept (true); 193s 1515: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscpy") 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, 193s 1515: size_t __destlen) noexcept (true); 193s 1515: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcpcpy") 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, size_t __n, 193s 1515: size_t __destlen) noexcept (true); 193s 1515: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncpy") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: extern wchar_t *__wcsncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) noexcept (true) __asm__ ("" "__wcsncpy_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) 193s 1515: ; 193s 1515: 193s 1515: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, size_t __n, 193s 1515: size_t __destlen) noexcept (true); 193s 1515: 193s 1515: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcpncpy") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: extern wchar_t *__wcpncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) noexcept (true) __asm__ ("" "__wcpncpy_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) 193s 1515: ; 193s 1515: 193s 1515: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, 193s 1515: size_t __destlen) noexcept (true); 193s 1515: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscat") 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, 193s 1515: const wchar_t *__restrict __src, 193s 1515: size_t __n, size_t __destlen) noexcept (true); 193s 1515: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncat") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, 193s 1515: int __flag, size_t __s_len, 193s 1515: const wchar_t *__restrict __format, ...) 193s 1515: noexcept (true) ; 193s 1515: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) __asm__ ("" "swprintf") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, 193s 1515: int __flag, size_t __s_len, 193s 1515: const wchar_t *__restrict __format, 193s 1515: __gnuc_va_list __arg) 193s 1515: noexcept (true) ; 193s 1515: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) __asm__ ("" "vswprintf") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, 193s 1515: const wchar_t *__restrict __format, ...); 193s 1515: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, 193s 1515: ...); 193s 1515: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, 193s 1515: const wchar_t *__restrict __format, 193s 1515: __gnuc_va_list __ap); 193s 1515: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, 193s 1515: __gnuc_va_list __ap); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, 193s 1515: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 193s 1515: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, 193s 1515: int __n, __FILE *__restrict __stream) 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, 193s 1515: mbstate_t *__restrict __p, 193s 1515: size_t __buflen) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcrtomb") 193s 1515: 193s 1515: __attribute__ ((__warn_unused_result__)); 193s 1515: 193s 1515: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, 193s 1515: const char **__restrict __src, 193s 1515: size_t __len, mbstate_t *__restrict __ps, 193s 1515: size_t __dstlen) noexcept (true); 193s 1515: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsrtowcs") 193s 1515: 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: extern size_t __mbsrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__mbsrtowcs_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 193s 1515: ; 193s 1515: 193s 1515: extern size_t __wcsrtombs_chk (char *__restrict __dst, 193s 1515: const wchar_t **__restrict __src, 193s 1515: size_t __len, mbstate_t *__restrict __ps, 193s 1515: size_t __dstlen) noexcept (true); 193s 1515: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsrtombs") 193s 1515: 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: extern size_t __wcsrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__wcsrtombs_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, 193s 1515: const char **__restrict __src, size_t __nmc, 193s 1515: size_t __len, mbstate_t *__restrict __ps, 193s 1515: size_t __dstlen) noexcept (true); 193s 1515: extern size_t __mbsnrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsnrtowcs") 193s 1515: 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: 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) noexcept (true) __asm__ ("" "__mbsnrtowcs_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 193s 1515: ; 193s 1515: 193s 1515: extern size_t __wcsnrtombs_chk (char *__restrict __dst, 193s 1515: const wchar_t **__restrict __src, 193s 1515: size_t __nwc, size_t __len, 193s 1515: mbstate_t *__restrict __ps, size_t __dstlen) 193s 1515: noexcept (true); 193s 1515: extern size_t __wcsnrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsnrtombs") 193s 1515: 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: 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) noexcept (true) __asm__ ("" "__wcsnrtombs_chk") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern size_t __wcslcpy_chk (wchar_t *__dest, const wchar_t *__src, size_t __n, 193s 1515: size_t __destlen) noexcept (true); 193s 1515: extern size_t __wcslcpy_alias (wchar_t *__dest, const wchar_t *__src, size_t __n) noexcept (true) __asm__ ("" "wcslcpy") 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern size_t __wcslcat_chk (wchar_t *__dest, const wchar_t *__src, size_t __n, 193s 1515: size_t __destlen) noexcept (true); 193s 1515: extern size_t __wcslcat_alias (wchar_t *__dest, const wchar_t *__src, size_t __n) noexcept (true) __asm__ ("" "wcslcat") 193s 1515: 193s 1515: ; 193s 1515: # 1060 "/usr/include/wchar.h" 2 3 4 193s 1515: # 1070 "/usr/include/wchar.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 193s 1515: __attribute__ ((__leaf__)) wmemcpy (wchar_t * __restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__s1, 0)) && (__builtin_dynamic_object_size (__s1, 0)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmemcpy_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemcpy_chk_warn (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemcpy_chk (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 193s 1515: __attribute__ ((__leaf__)) wmemmove (wchar_t * __s1, const wchar_t *__s2, size_t __n) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__s1, 0)) && (__builtin_dynamic_object_size (__s1, 0)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmemmove_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemmove_chk_warn (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemmove_chk (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 193s 1515: __attribute__ ((__leaf__)) wmempcpy (wchar_t * __restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__s1, 0)) && (__builtin_dynamic_object_size (__s1, 0)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmempcpy_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmempcpy_chk_warn (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmempcpy_chk (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 193s 1515: __attribute__ ((__leaf__)) wmemset (wchar_t * __s, wchar_t __c, size_t __n) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__s, 0)) && (__builtin_dynamic_object_size (__s, 0)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s, 0))) / ((sizeof (wchar_t)))))) ? __wmemset_alias (__s, __c, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s, 0)) / (sizeof (wchar_t)))) ? __wmemset_chk_warn (__s, __c, __n, (__builtin_dynamic_object_size (__s, 0)) / (sizeof (wchar_t))) : __wmemset_chk (__s, __c, __n, (__builtin_dynamic_object_size (__s, 0)) / (sizeof (wchar_t))))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 193s 1515: __attribute__ ((__leaf__)) wcscpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__dest, 1); 193s 1515: if (__sz != (size_t) -1) 193s 1515: return __wcscpy_chk (__dest, __src, __sz / sizeof (wchar_t)); 193s 1515: return __wcscpy_alias (__dest, __src); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 193s 1515: __attribute__ ((__leaf__)) wcpcpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__dest, 1); 193s 1515: if (__sz != (size_t) -1) 193s 1515: return __wcpcpy_chk (__dest, __src, __sz / sizeof (wchar_t)); 193s 1515: return __wcpcpy_alias (__dest, __src); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 193s 1515: __attribute__ ((__leaf__)) wcsncpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dest, 1)) && (__builtin_dynamic_object_size (__dest, 1)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__dest, 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__dest, 1))) / ((sizeof (wchar_t)))))) ? __wcsncpy_alias (__dest, __src, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t)))) ? __wcsncpy_chk_warn (__dest, __src, __n, (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t))) : __wcsncpy_chk (__dest, __src, __n, (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t))))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 193s 1515: __attribute__ ((__leaf__)) wcpncpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dest, 1)) && (__builtin_dynamic_object_size (__dest, 1)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__dest, 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__dest, 1))) / ((sizeof (wchar_t)))))) ? __wcpncpy_alias (__dest, __src, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t)))) ? __wcpncpy_chk_warn (__dest, __src, __n, (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t))) : __wcpncpy_chk (__dest, __src, __n, (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t))))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 193s 1515: __attribute__ ((__leaf__)) wcscat (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__dest, 1); 193s 1515: if (__sz != (size_t) -1) 193s 1515: return __wcscat_chk (__dest, __src, __sz / sizeof (wchar_t)); 193s 1515: return __wcscat_alias (__dest, __src); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 193s 1515: __attribute__ ((__leaf__)) wcsncat (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__dest, 1); 193s 1515: if (__sz != (size_t) -1) 193s 1515: return __wcsncat_chk (__dest, __src, __n, __sz / sizeof (wchar_t)); 193s 1515: return __wcsncat_alias (__dest, __src, __n); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) wcslcpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: if (__builtin_dynamic_object_size (__dest, 1) != (size_t) -1 193s 1515: && (!__builtin_constant_p (__n 193s 1515: > __builtin_dynamic_object_size (__dest, 1) / sizeof (wchar_t)) 193s 1515: || __n > __builtin_dynamic_object_size (__dest, 1) / sizeof (wchar_t))) 193s 1515: return __wcslcpy_chk (__dest, __src, __n, 193s 1515: __builtin_dynamic_object_size (__dest, 1) / sizeof (wchar_t)); 193s 1515: return __wcslcpy_alias (__dest, __src, __n); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) wcslcat (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: if (__builtin_dynamic_object_size (__dest, 1) != (size_t) -1 193s 1515: && (!__builtin_constant_p (__n > __builtin_dynamic_object_size (__dest, 1) 193s 1515: / sizeof (wchar_t)) 193s 1515: || __n > __builtin_dynamic_object_size (__dest, 1) / sizeof (wchar_t))) 193s 1515: return __wcslcat_chk (__dest, __src, __n, 193s 1515: __builtin_dynamic_object_size (__dest, 1) / sizeof (wchar_t)); 193s 1515: return __wcslcat_alias (__dest, __src, __n); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__s, 1); 193s 1515: if (__sz != (size_t) -1 || 3 > 1) 193s 1515: return __swprintf_chk (__s, __n, 3 - 1, 193s 1515: __sz / sizeof (wchar_t), __fmt, __builtin_va_arg_pack ()); 193s 1515: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: # 205 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__s, 1); 193s 1515: if (__sz != (size_t) -1 || 3 > 1) 193s 1515: return __vswprintf_chk (__s, __n, 3 - 1, 193s 1515: __sz / sizeof (wchar_t), __fmt, __ap); 193s 1515: return __vswprintf_alias (__s, __n, __fmt, __ap); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: wprintf (const wchar_t *__restrict __fmt, ...) 193s 1515: { 193s 1515: return __wprintf_chk (3 - 1, __fmt, __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) 193s 1515: { 193s 1515: return __fwprintf_chk (__stream, 3 - 1, __fmt, 193s 1515: __builtin_va_arg_pack ()); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 193s 1515: { 193s 1515: return __vwprintf_chk (3 - 1, __fmt, __ap); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 193s 1515: vfwprintf (__FILE *__restrict __stream, 193s 1515: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 193s 1515: { 193s 1515: return __vfwprintf_chk (__stream, 3 - 1, __fmt, __ap); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 193s 1515: fgetws (wchar_t * __restrict __s, int __n, 193s 1515: __FILE *__restrict __stream) 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__s, 1); 193s 1515: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__sz)) / ((sizeof (wchar_t))))))) 193s 1515: return __fgetws_alias (__s, __n, __stream); 193s 1515: 193s 1515: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__sz) / (sizeof (wchar_t))))) 193s 1515: return __fgetws_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream); 193s 1515: 193s 1515: return __fgetws_chk (__s, __sz / sizeof (wchar_t), __n, __stream); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 193s 1515: fgetws_unlocked (wchar_t * __restrict __s, 193s 1515: int __n, __FILE *__restrict __stream) 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: size_t __sz = __builtin_dynamic_object_size (__s, 1); 193s 1515: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__sz)) / ((sizeof (wchar_t))))))) 193s 1515: return __fgetws_unlocked_alias (__s, __n, __stream); 193s 1515: 193s 1515: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__sz) / (sizeof (wchar_t))))) 193s 1515: return __fgetws_unlocked_chk_warn (__s, __sz / sizeof (wchar_t), __n, 193s 1515: __stream); 193s 1515: 193s 1515: return __fgetws_unlocked_chk (__s, __sz / sizeof (wchar_t), __n, __stream); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 193s 1515: __attribute__ ((__leaf__)) wcrtomb (char * __restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) 193s 1515: 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: if (__builtin_dynamic_object_size (__s, 1) != (size_t) -1 193s 1515: && 16 > __builtin_dynamic_object_size (__s, 1)) 193s 1515: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_dynamic_object_size (__s, 1)); 193s 1515: return __wcrtomb_alias (__s, __wchar, __ps); 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t * __restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t)))))) ? __mbsrtowcs_alias (__dst, __src, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) ? __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))) : __mbsrtowcs_chk (__dst, __src, __len, __ps, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) wcsrtombs (char * __restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char)))))) ? __wcsrtombs_alias (__dst, __src, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) ? __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_dynamic_object_size (__dst, 1)) : __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_dynamic_object_size (__dst, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t * __restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t)))))) ? __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) ? __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))) : __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: 193s 1515: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 193s 1515: __attribute__ ((__leaf__)) wcsnrtombs (char * __restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: { 193s 1515: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char)))))) ? __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) ? __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, __builtin_dynamic_object_size (__dst, 1)) : __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, __builtin_dynamic_object_size (__dst, 1)))) 193s 1515: 193s 1515: ; 193s 1515: } 193s 1515: # 1071 "/usr/include/wchar.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 50 "/usr/include/c++/15/cwchar" 2 3 4 193s 1515: # 64 "/usr/include/c++/15/cwchar" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: using ::mbstate_t; 193s 1515: } 193s 1515: # 137 "/usr/include/c++/15/cwchar" 3 4 193s 1515: extern "C++" 193s 1515: { 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: using ::wint_t; 193s 1515: 193s 1515: using ::btowc; 193s 1515: using ::fgetwc; 193s 1515: using ::fgetws; 193s 1515: using ::fputwc; 193s 1515: using ::fputws; 193s 1515: using ::fwide; 193s 1515: using ::fwprintf; 193s 1515: using ::fwscanf; 193s 1515: using ::getwc; 193s 1515: using ::getwchar; 193s 1515: using ::mbrlen; 193s 1515: using ::mbrtowc; 193s 1515: using ::mbsinit; 193s 1515: using ::mbsrtowcs; 193s 1515: using ::putwc; 193s 1515: using ::putwchar; 193s 1515: 193s 1515: using ::swprintf; 193s 1515: 193s 1515: using ::swscanf; 193s 1515: using ::ungetwc; 193s 1515: using ::vfwprintf; 193s 1515: 193s 1515: using ::vfwscanf; 193s 1515: 193s 1515: 193s 1515: using ::vswprintf; 193s 1515: 193s 1515: 193s 1515: using ::vswscanf; 193s 1515: 193s 1515: using ::vwprintf; 193s 1515: 193s 1515: using ::vwscanf; 193s 1515: 193s 1515: using ::wcrtomb; 193s 1515: using ::wcscat; 193s 1515: using ::wcscmp; 193s 1515: using ::wcscoll; 193s 1515: using ::wcscpy; 193s 1515: using ::wcscspn; 193s 1515: using ::wcsftime; 193s 1515: using ::wcslen; 193s 1515: using ::wcsncat; 193s 1515: using ::wcsncmp; 193s 1515: using ::wcsncpy; 193s 1515: using ::wcsrtombs; 193s 1515: using ::wcsspn; 193s 1515: using ::wcstod; 193s 1515: 193s 1515: using ::wcstof; 193s 1515: 193s 1515: using ::wcstok; 193s 1515: using ::wcstol; 193s 1515: using ::wcstoul; 193s 1515: using ::wcsxfrm; 193s 1515: using ::wctob; 193s 1515: using ::wmemcmp; 193s 1515: using ::wmemcpy; 193s 1515: using ::wmemmove; 193s 1515: using ::wmemset; 193s 1515: using ::wprintf; 193s 1515: using ::wscanf; 193s 1515: using ::wcschr; 193s 1515: using ::wcspbrk; 193s 1515: using ::wcsrchr; 193s 1515: using ::wcsstr; 193s 1515: using ::wmemchr; 193s 1515: # 236 "/usr/include/c++/15/cwchar" 3 4 193s 1515: 193s 1515: } 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace __gnu_cxx 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: using ::wcstold; 193s 1515: # 262 "/usr/include/c++/15/cwchar" 3 4 193s 1515: using ::wcstoll; 193s 1515: using ::wcstoull; 193s 1515: 193s 1515: } 193s 1515: 193s 1515: namespace std 193s 1515: { 193s 1515: using ::__gnu_cxx::wcstold; 193s 1515: using ::__gnu_cxx::wcstoll; 193s 1515: using ::__gnu_cxx::wcstoull; 193s 1515: } 193s 1515: # 282 "/usr/include/c++/15/cwchar" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: 193s 1515: using std::wcstof; 193s 1515: 193s 1515: 193s 1515: using std::vfwscanf; 193s 1515: 193s 1515: 193s 1515: using std::vswscanf; 193s 1515: 193s 1515: 193s 1515: using std::vwscanf; 193s 1515: 193s 1515: 193s 1515: 193s 1515: using std::wcstold; 193s 1515: using std::wcstoll; 193s 1515: using std::wcstoull; 193s 1515: 193s 1515: } 193s 1515: # 43 "/usr/include/c++/15/bits/postypes.h" 2 3 4 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: # 55 "/usr/include/c++/15/bits/postypes.h" 3 4 193s 1515: 193s 1515: # 55 "/usr/include/c++/15/bits/postypes.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 193s 1515: # 66 "/usr/include/c++/15/bits/postypes.h" 3 4 193s 1515: typedef long long int streamoff; 193s 1515: 193s 1515: 193s 1515: 193s 1515: #pragma GCC diagnostic pop 193s 1515: 193s 1515: 193s 1515: typedef ptrdiff_t streamsize; 193s 1515: # 86 "/usr/include/c++/15/bits/postypes.h" 3 4 193s 1515: template 193s 1515: class fpos 193s 1515: { 193s 1515: private: 193s 1515: streamoff _M_off; 193s 1515: _StateT _M_state; 193s 1515: 193s 1515: public: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: fpos() 193s 1515: : _M_off(0), _M_state() { } 193s 1515: # 108 "/usr/include/c++/15/bits/postypes.h" 3 4 193s 1515: fpos(streamoff __off) 193s 1515: : _M_off(__off), _M_state() { } 193s 1515: 193s 1515: 193s 1515: fpos(const fpos&) = default; 193s 1515: fpos& operator=(const fpos&) = default; 193s 1515: ~fpos() = default; 193s 1515: 193s 1515: 193s 1515: 193s 1515: operator streamoff() const { return _M_off; } 193s 1515: 193s 1515: 193s 1515: void 193s 1515: state(_StateT __st) 193s 1515: { _M_state = __st; } 193s 1515: 193s 1515: 193s 1515: _StateT 193s 1515: state() const 193s 1515: { return _M_state; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: fpos& 193s 1515: operator+=(streamoff __off) 193s 1515: { 193s 1515: _M_off += __off; 193s 1515: return *this; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: fpos& 193s 1515: operator-=(streamoff __off) 193s 1515: { 193s 1515: _M_off -= __off; 193s 1515: return *this; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: fpos 193s 1515: operator+(streamoff __off) const 193s 1515: { 193s 1515: fpos __pos(*this); 193s 1515: __pos += __off; 193s 1515: return __pos; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: fpos 193s 1515: operator-(streamoff __off) const 193s 1515: { 193s 1515: fpos __pos(*this); 193s 1515: __pos -= __off; 193s 1515: return __pos; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: streamoff 193s 1515: operator-(const fpos& __other) const 193s 1515: { return _M_off - __other._M_off; } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline bool 193s 1515: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 193s 1515: { return streamoff(__lhs) == streamoff(__rhs); } 193s 1515: 193s 1515: template 193s 1515: inline bool 193s 1515: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 193s 1515: { return streamoff(__lhs) != streamoff(__rhs); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef fpos streampos; 193s 1515: 193s 1515: typedef fpos wstreampos; 193s 1515: # 220 "/usr/include/c++/15/bits/postypes.h" 3 4 193s 1515: typedef fpos u16streampos; 193s 1515: 193s 1515: typedef fpos u32streampos; 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 45 "/usr/include/c++/15/iosfwd" 2 3 4 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: # 78 "/usr/include/c++/15/iosfwd" 3 4 193s 1515: class ios_base; 193s 1515: 193s 1515: template > 193s 1515: class basic_ios; 193s 1515: 193s 1515: template > 193s 1515: class basic_streambuf; 193s 1515: 193s 1515: template > 193s 1515: class basic_istream; 193s 1515: 193s 1515: template > 193s 1515: class basic_ostream; 193s 1515: 193s 1515: template > 193s 1515: class basic_iostream; 193s 1515: 193s 1515: 193s 1515: namespace __cxx11 { 193s 1515: 193s 1515: template, 193s 1515: typename _Alloc = allocator<_CharT> > 193s 1515: class basic_stringbuf; 193s 1515: 193s 1515: template, 193s 1515: typename _Alloc = allocator<_CharT> > 193s 1515: class basic_istringstream; 193s 1515: 193s 1515: template, 193s 1515: typename _Alloc = allocator<_CharT> > 193s 1515: class basic_ostringstream; 193s 1515: 193s 1515: template, 193s 1515: typename _Alloc = allocator<_CharT> > 193s 1515: class basic_stringstream; 193s 1515: 193s 1515: } 193s 1515: 193s 1515: template > 193s 1515: class basic_filebuf; 193s 1515: 193s 1515: template > 193s 1515: class basic_ifstream; 193s 1515: 193s 1515: template > 193s 1515: class basic_ofstream; 193s 1515: 193s 1515: template > 193s 1515: class basic_fstream; 193s 1515: 193s 1515: template > 193s 1515: class istreambuf_iterator; 193s 1515: 193s 1515: template > 193s 1515: class ostreambuf_iterator; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef basic_ios ios; 193s 1515: 193s 1515: 193s 1515: typedef basic_streambuf streambuf; 193s 1515: 193s 1515: 193s 1515: typedef basic_istream istream; 193s 1515: 193s 1515: 193s 1515: typedef basic_ostream ostream; 193s 1515: 193s 1515: 193s 1515: typedef basic_iostream iostream; 193s 1515: 193s 1515: 193s 1515: typedef basic_stringbuf stringbuf; 193s 1515: 193s 1515: 193s 1515: typedef basic_istringstream istringstream; 193s 1515: 193s 1515: 193s 1515: typedef basic_ostringstream ostringstream; 193s 1515: 193s 1515: 193s 1515: typedef basic_stringstream stringstream; 193s 1515: 193s 1515: 193s 1515: typedef basic_filebuf filebuf; 193s 1515: 193s 1515: 193s 1515: typedef basic_ifstream ifstream; 193s 1515: 193s 1515: 193s 1515: typedef basic_ofstream ofstream; 193s 1515: 193s 1515: 193s 1515: typedef basic_fstream fstream; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef basic_ios wios; 193s 1515: 193s 1515: 193s 1515: typedef basic_streambuf wstreambuf; 193s 1515: 193s 1515: 193s 1515: typedef basic_istream wistream; 193s 1515: 193s 1515: 193s 1515: typedef basic_ostream wostream; 193s 1515: 193s 1515: 193s 1515: typedef basic_iostream wiostream; 193s 1515: 193s 1515: 193s 1515: typedef basic_stringbuf wstringbuf; 193s 1515: 193s 1515: 193s 1515: typedef basic_istringstream wistringstream; 193s 1515: 193s 1515: 193s 1515: typedef basic_ostringstream wostringstream; 193s 1515: 193s 1515: 193s 1515: typedef basic_stringstream wstringstream; 193s 1515: 193s 1515: 193s 1515: typedef basic_filebuf wfilebuf; 193s 1515: 193s 1515: 193s 1515: typedef basic_ifstream wifstream; 193s 1515: 193s 1515: 193s 1515: typedef basic_ofstream wofstream; 193s 1515: 193s 1515: 193s 1515: typedef basic_fstream wfstream; 193s 1515: # 257 "/usr/include/c++/15/iosfwd" 3 4 193s 1515: 193s 1515: } 193s 1515: # 43 "/usr/include/c++/15/ios" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/exception" 1 3 4 193s 1515: # 41 "/usr/include/c++/15/exception" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 193s 1515: # 42 "/usr/include/c++/15/exception" 2 3 4 193s 1515: 193s 1515: extern "C++" { 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: # 56 "/usr/include/c++/15/exception" 3 4 193s 1515: class bad_exception : public exception 193s 1515: { 193s 1515: public: 193s 1515: bad_exception() noexcept { } 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual ~bad_exception() noexcept; 193s 1515: 193s 1515: 193s 1515: virtual const char* 193s 1515: what() const noexcept; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: typedef void (*terminate_handler) (); 193s 1515: 193s 1515: 193s 1515: terminate_handler set_terminate(terminate_handler) noexcept; 193s 1515: 193s 1515: 193s 1515: 193s 1515: terminate_handler get_terminate() noexcept; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: void terminate() noexcept __attribute__ ((__noreturn__,__cold__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef void (*__attribute__ ((__deprecated__)) unexpected_handler) (); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__deprecated__)) 193s 1515: unexpected_handler set_unexpected(unexpected_handler) noexcept; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__deprecated__)) 193s 1515: unexpected_handler get_unexpected() noexcept; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__deprecated__)) 193s 1515: void unexpected() __attribute__ ((__noreturn__,__cold__)); 193s 1515: # 126 "/usr/include/c++/15/exception" 3 4 193s 1515: 193s 1515: bool uncaught_exception() noexcept __attribute__ ((__pure__)); 193s 1515: # 138 "/usr/include/c++/15/exception" 3 4 193s 1515: } 193s 1515: 193s 1515: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: # 160 "/usr/include/c++/15/exception" 3 4 193s 1515: void __verbose_terminate_handler(); 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/bits/exception_ptr.h" 1 3 4 193s 1515: # 35 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/exception_defines.h" 1 3 4 193s 1515: # 36 "/usr/include/c++/15/bits/exception_ptr.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/cxxabi_init_exception.h" 1 3 4 193s 1515: # 38 "/usr/include/c++/15/bits/cxxabi_init_exception.h" 3 4 193s 1515: #pragma GCC visibility push(default) 193s 1515: 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 160 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 3 4 193s 1515: typedef int ptrdiff_t; 193s 1515: # 440 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 3 4 193s 1515: typedef struct { 193s 1515: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); 193s 1515: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); 193s 1515: # 451 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 3 4 193s 1515: } max_align_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef decltype(nullptr) nullptr_t; 193s 1515: # 41 "/usr/include/c++/15/bits/cxxabi_init_exception.h" 2 3 4 193s 1515: # 52 "/usr/include/c++/15/bits/cxxabi_init_exception.h" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: class type_info; 193s 1515: } 193s 1515: 193s 1515: namespace __cxxabiv1 193s 1515: { 193s 1515: struct __cxa_refcounted_exception; 193s 1515: 193s 1515: extern "C" 193s 1515: { 193s 1515: 193s 1515: void* 193s 1515: __cxa_allocate_exception(size_t) noexcept; 193s 1515: 193s 1515: void 193s 1515: __cxa_free_exception(void*) noexcept; 193s 1515: 193s 1515: 193s 1515: __cxa_refcounted_exception* 193s 1515: __cxa_init_primary_exception(void *__object, std::type_info *__tinfo, 193s 1515: void ( *__dest) (void *)) 193s 1515: noexcept; 193s 1515: 193s 1515: } 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: #pragma GCC visibility pop 193s 1515: # 37 "/usr/include/c++/15/bits/exception_ptr.h" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/typeinfo" 1 3 4 193s 1515: # 38 "/usr/include/c++/15/typeinfo" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/hash_bytes.h" 1 3 4 193s 1515: # 39 "/usr/include/c++/15/bits/hash_bytes.h" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: size_t 193s 1515: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: size_t 193s 1515: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 39 "/usr/include/c++/15/typeinfo" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 193s 1515: # 43 "/usr/include/c++/15/typeinfo" 2 3 4 193s 1515: 193s 1515: #pragma GCC visibility push(default) 193s 1515: 193s 1515: extern "C++" { 193s 1515: 193s 1515: namespace __cxxabiv1 193s 1515: { 193s 1515: class __class_type_info; 193s 1515: } 193s 1515: # 85 "/usr/include/c++/15/typeinfo" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: class type_info 193s 1515: { 193s 1515: public: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual ~type_info(); 193s 1515: 193s 1515: 193s 1515: 193s 1515: const char* name() const noexcept 193s 1515: { return __name[0] == '*' ? __name + 1 : __name; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: bool before(const type_info& __arg) const noexcept; 193s 1515: 193s 1515: 193s 1515: bool operator==(const type_info& __arg) const noexcept; 193s 1515: 193s 1515: 193s 1515: bool operator!=(const type_info& __arg) const noexcept 193s 1515: { return !operator==(__arg); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: size_t hash_code() const noexcept 193s 1515: { 193s 1515: 193s 1515: return _Hash_bytes(name(), __builtin_strlen(name()), 193s 1515: static_cast(0xc70f6907UL)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual bool __is_pointer_p() const; 193s 1515: 193s 1515: 193s 1515: virtual bool __is_function_p() const; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, 193s 1515: unsigned __outer) const; 193s 1515: 193s 1515: 193s 1515: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, 193s 1515: void **__obj_ptr) const; 193s 1515: 193s 1515: protected: 193s 1515: const char *__name; 193s 1515: 193s 1515: explicit type_info(const char *__n): __name(__n) { } 193s 1515: 193s 1515: private: 193s 1515: 193s 1515: 193s 1515: type_info& operator=(const type_info&) = delete; 193s 1515: type_info(const type_info&) = delete; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: bool __equal(const type_info&) const noexcept; 193s 1515: 193s 1515: }; 193s 1515: # 224 "/usr/include/c++/15/typeinfo" 3 4 193s 1515: class bad_cast : public exception 193s 1515: { 193s 1515: public: 193s 1515: bad_cast() noexcept { } 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual ~bad_cast() noexcept; 193s 1515: 193s 1515: 193s 1515: virtual const char* what() const noexcept; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: class bad_typeid : public exception 193s 1515: { 193s 1515: public: 193s 1515: bad_typeid () noexcept { } 193s 1515: 193s 1515: 193s 1515: 193s 1515: virtual ~bad_typeid() noexcept; 193s 1515: 193s 1515: 193s 1515: virtual const char* what() const noexcept; 193s 1515: }; 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: 193s 1515: #pragma GCC visibility pop 193s 1515: # 38 "/usr/include/c++/15/bits/exception_ptr.h" 2 3 4 193s 1515: # 50 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 193s 1515: extern "C++" { 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: class type_info; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace __exception_ptr 193s 1515: { 193s 1515: class exception_ptr; 193s 1515: } 193s 1515: 193s 1515: using __exception_ptr::exception_ptr; 193s 1515: # 75 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 193s 1515: exception_ptr current_exception() noexcept; 193s 1515: 193s 1515: template 193s 1515: exception_ptr make_exception_ptr(_Ex) noexcept; 193s 1515: 193s 1515: 193s 1515: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); 193s 1515: 193s 1515: namespace __exception_ptr 193s 1515: { 193s 1515: using std::rethrow_exception; 193s 1515: # 97 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 193s 1515: class exception_ptr 193s 1515: { 193s 1515: void* _M_exception_object; 193s 1515: 193s 1515: explicit exception_ptr(void* __e) noexcept; 193s 1515: 193s 1515: void _M_addref() noexcept; 193s 1515: void _M_release() noexcept; 193s 1515: 193s 1515: void *_M_get() const noexcept __attribute__ ((__pure__)); 193s 1515: 193s 1515: friend exception_ptr std::current_exception() noexcept; 193s 1515: friend void std::rethrow_exception(exception_ptr); 193s 1515: template 193s 1515: friend exception_ptr std::make_exception_ptr(_Ex) noexcept; 193s 1515: 193s 1515: public: 193s 1515: exception_ptr() noexcept; 193s 1515: 193s 1515: exception_ptr(const exception_ptr&) noexcept; 193s 1515: 193s 1515: 193s 1515: exception_ptr(nullptr_t) noexcept 193s 1515: : _M_exception_object(nullptr) 193s 1515: { } 193s 1515: 193s 1515: exception_ptr(exception_ptr&& __o) noexcept 193s 1515: : _M_exception_object(__o._M_exception_object) 193s 1515: { __o._M_exception_object = nullptr; } 193s 1515: # 135 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 193s 1515: exception_ptr& 193s 1515: operator=(const exception_ptr&) noexcept; 193s 1515: 193s 1515: 193s 1515: exception_ptr& 193s 1515: operator=(exception_ptr&& __o) noexcept 193s 1515: { 193s 1515: exception_ptr(static_cast(__o)).swap(*this); 193s 1515: return *this; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: ~exception_ptr() noexcept; 193s 1515: 193s 1515: void 193s 1515: swap(exception_ptr&) noexcept; 193s 1515: # 161 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 193s 1515: explicit operator bool() const noexcept 193s 1515: { return _M_exception_object; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: friend bool 193s 1515: operator==(const exception_ptr& __x, const exception_ptr& __y) 193s 1515: noexcept 193s 1515: { return __x._M_exception_object == __y._M_exception_object; } 193s 1515: 193s 1515: friend bool 193s 1515: operator!=(const exception_ptr& __x, const exception_ptr& __y) 193s 1515: noexcept 193s 1515: { return __x._M_exception_object != __y._M_exception_object; } 193s 1515: 193s 1515: 193s 1515: const class std::type_info* 193s 1515: __cxa_exception_type() const noexcept 193s 1515: __attribute__ ((__pure__)); 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: inline 193s 1515: exception_ptr::exception_ptr() noexcept 193s 1515: : _M_exception_object(0) 193s 1515: { } 193s 1515: 193s 1515: 193s 1515: inline 193s 1515: exception_ptr::exception_ptr(const exception_ptr& __other) 193s 1515: noexcept 193s 1515: : _M_exception_object(__other._M_exception_object) 193s 1515: { 193s 1515: if (_M_exception_object) 193s 1515: _M_addref(); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: inline 193s 1515: exception_ptr::~exception_ptr() noexcept 193s 1515: { 193s 1515: if (_M_exception_object) 193s 1515: _M_release(); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: inline exception_ptr& 193s 1515: exception_ptr::operator=(const exception_ptr& __other) noexcept 193s 1515: { 193s 1515: exception_ptr(__other).swap(*this); 193s 1515: return *this; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: inline void 193s 1515: exception_ptr::swap(exception_ptr &__other) noexcept 193s 1515: { 193s 1515: void *__tmp = _M_exception_object; 193s 1515: _M_exception_object = __other._M_exception_object; 193s 1515: __other._M_exception_object = __tmp; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: inline void 193s 1515: swap(exception_ptr& __lhs, exception_ptr& __rhs) 193s 1515: { __lhs.swap(__rhs); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: 193s 1515: inline void 193s 1515: __dest_thunk(void* __x) 193s 1515: { static_cast<_Ex*>(__x)->~_Ex(); } 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: using __exception_ptr::swap; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: exception_ptr 193s 1515: make_exception_ptr(_Ex __ex) noexcept 193s 1515: { 193s 1515: 193s 1515: using _Ex2 = typename decay<_Ex>::type; 193s 1515: void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); 193s 1515: (void) __cxxabiv1::__cxa_init_primary_exception( 193s 1515: __e, const_cast(&typeid(_Ex)), 193s 1515: __exception_ptr::__dest_thunk<_Ex2>); 193s 1515: try 193s 1515: { 193s 1515: ::new (__e) _Ex2(__ex); 193s 1515: return exception_ptr(__e); 193s 1515: } 193s 1515: catch(...) 193s 1515: { 193s 1515: __cxxabiv1::__cxa_free_exception(__e); 193s 1515: return current_exception(); 193s 1515: } 193s 1515: # 276 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 193s 1515: } 193s 1515: # 290 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: # 169 "/usr/include/c++/15/exception" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/nested_exception.h" 1 3 4 193s 1515: # 40 "/usr/include/c++/15/bits/nested_exception.h" 3 4 193s 1515: extern "C++" { 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: # 59 "/usr/include/c++/15/bits/nested_exception.h" 3 4 193s 1515: class nested_exception 193s 1515: { 193s 1515: exception_ptr _M_ptr; 193s 1515: 193s 1515: public: 193s 1515: 193s 1515: nested_exception() noexcept : _M_ptr(current_exception()) { } 193s 1515: 193s 1515: nested_exception(const nested_exception&) noexcept = default; 193s 1515: 193s 1515: nested_exception& operator=(const nested_exception&) noexcept = default; 193s 1515: 193s 1515: virtual ~nested_exception() noexcept; 193s 1515: 193s 1515: 193s 1515: [[noreturn]] 193s 1515: void 193s 1515: rethrow_nested() const 193s 1515: { 193s 1515: if (_M_ptr) 193s 1515: rethrow_exception(_M_ptr); 193s 1515: std::terminate(); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: exception_ptr 193s 1515: nested_ptr() const noexcept 193s 1515: { return _M_ptr; } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: struct _Nested_exception : public _Except, public nested_exception 193s 1515: { 193s 1515: explicit _Nested_exception(const _Except& __ex) 193s 1515: : _Except(__ex) 193s 1515: { } 193s 1515: 193s 1515: explicit _Nested_exception(_Except&& __ex) 193s 1515: : _Except(static_cast<_Except&&>(__ex)) 193s 1515: { } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: [[noreturn]] 193s 1515: inline void 193s 1515: __throw_with_nested_impl(_Tp&& __t, true_type) 193s 1515: { 193s 1515: throw _Nested_exception<__remove_cvref_t<_Tp>>{std::forward<_Tp>(__t)}; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: [[noreturn]] 193s 1515: inline void 193s 1515: __throw_with_nested_impl(_Tp&& __t, false_type) 193s 1515: { throw std::forward<_Tp>(__t); } 193s 1515: # 145 "/usr/include/c++/15/bits/nested_exception.h" 3 4 193s 1515: template 193s 1515: [[noreturn]] 193s 1515: inline void 193s 1515: throw_with_nested(_Tp&& __t) 193s 1515: { 193s 1515: using _Up = typename decay<_Tp>::type; 193s 1515: using _CopyConstructible 193s 1515: = __and_, is_move_constructible<_Up>>; 193s 1515: static_assert(_CopyConstructible::value, 193s 1515: "throw_with_nested argument must be CopyConstructible"); 193s 1515: # 163 "/usr/include/c++/15/bits/nested_exception.h" 3 4 193s 1515: using __nest = __and_, __bool_constant, 193s 1515: __not_>>; 193s 1515: std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{}); 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline void 193s 1515: __rethrow_if_nested_impl(const _Ex* __ptr, true_type) 193s 1515: { 193s 1515: if (auto __ne_ptr = dynamic_cast(__ptr)) 193s 1515: __ne_ptr->rethrow_nested(); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: inline void 193s 1515: __rethrow_if_nested_impl(const void*, false_type) 193s 1515: { } 193s 1515: # 203 "/usr/include/c++/15/bits/nested_exception.h" 3 4 193s 1515: template 193s 1515: 193s 1515: 193s 1515: 193s 1515: inline void 193s 1515: rethrow_if_nested(const _Ex& __ex) 193s 1515: { 193s 1515: const _Ex* __ptr = __builtin_addressof(__ex); 193s 1515: 193s 1515: 193s 1515: using __cast = __and_, 193s 1515: __or_<__not_>, 193s 1515: is_convertible<_Ex*, nested_exception*>>>; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: std::__rethrow_if_nested_impl(__ptr, __cast{}); 193s 1515: # 235 "/usr/include/c++/15/bits/nested_exception.h" 3 4 193s 1515: } 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: } 193s 1515: # 170 "/usr/include/c++/15/exception" 2 3 4 193s 1515: # 44 "/usr/include/c++/15/ios" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/char_traits.h" 1 3 4 193s 1515: # 66 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 70 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wstringop-overflow" 193s 1515: #pragma GCC diagnostic ignored "-Wstringop-overread" 193s 1515: #pragma GCC diagnostic ignored "-Warray-bounds" 193s 1515: # 85 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: template 193s 1515: struct _Char_types 193s 1515: { 193s 1515: typedef unsigned long int_type; 193s 1515: 193s 1515: typedef std::streampos pos_type; 193s 1515: typedef std::streamoff off_type; 193s 1515: typedef std::mbstate_t state_type; 193s 1515: 193s 1515: }; 193s 1515: # 112 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: template 193s 1515: struct char_traits 193s 1515: { 193s 1515: typedef _CharT char_type; 193s 1515: typedef typename _Char_types<_CharT>::int_type int_type; 193s 1515: 193s 1515: typedef typename _Char_types<_CharT>::pos_type pos_type; 193s 1515: typedef typename _Char_types<_CharT>::off_type off_type; 193s 1515: typedef typename _Char_types<_CharT>::state_type state_type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static void 193s 1515: assign(char_type& __c1, const char_type& __c2) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __c1 = __c2; 193s 1515: } 193s 1515: 193s 1515: static constexpr bool 193s 1515: eq(const char_type& __c1, const char_type& __c2) 193s 1515: { return __c1 == __c2; } 193s 1515: 193s 1515: static constexpr bool 193s 1515: lt(const char_type& __c1, const char_type& __c2) 193s 1515: { return __c1 < __c2; } 193s 1515: 193s 1515: static int 193s 1515: compare(const char_type* __s1, const char_type* __s2, std::size_t __n); 193s 1515: 193s 1515: static std::size_t 193s 1515: length(const char_type* __s); 193s 1515: 193s 1515: static const char_type* 193s 1515: find(const char_type* __s, std::size_t __n, const char_type& __a); 193s 1515: 193s 1515: static char_type* 193s 1515: move(char_type* __s1, const char_type* __s2, std::size_t __n); 193s 1515: 193s 1515: static char_type* 193s 1515: copy(char_type* __s1, const char_type* __s2, std::size_t __n); 193s 1515: 193s 1515: static char_type* 193s 1515: assign(char_type* __s, std::size_t __n, char_type __a); 193s 1515: 193s 1515: static constexpr char_type 193s 1515: to_char_type(const int_type& __c) 193s 1515: { return static_cast(__c); } 193s 1515: 193s 1515: static constexpr int_type 193s 1515: to_int_type(const char_type& __c) 193s 1515: { return static_cast(__c); } 193s 1515: 193s 1515: static constexpr bool 193s 1515: eq_int_type(const int_type& __c1, const int_type& __c2) 193s 1515: { return __c1 == __c2; } 193s 1515: 193s 1515: 193s 1515: static constexpr int_type 193s 1515: eof() 193s 1515: { return static_cast(-1); } 193s 1515: 193s 1515: static constexpr int_type 193s 1515: not_eof(const int_type& __c) 193s 1515: { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: int 193s 1515: char_traits<_CharT>:: 193s 1515: compare(const char_type* __s1, const char_type* __s2, std::size_t __n) 193s 1515: { 193s 1515: for (std::size_t __i = 0; __i < __n; ++__i) 193s 1515: if (lt(__s1[__i], __s2[__i])) 193s 1515: return -1; 193s 1515: else if (lt(__s2[__i], __s1[__i])) 193s 1515: return 1; 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: std::size_t 193s 1515: char_traits<_CharT>:: 193s 1515: length(const char_type* __p) 193s 1515: { 193s 1515: std::size_t __i = 0; 193s 1515: while (!eq(__p[__i], char_type())) 193s 1515: ++__i; 193s 1515: return __i; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: const typename char_traits<_CharT>::char_type* 193s 1515: char_traits<_CharT>:: 193s 1515: find(const char_type* __s, std::size_t __n, const char_type& __a) 193s 1515: { 193s 1515: for (std::size_t __i = 0; __i < __n; ++__i) 193s 1515: if (eq(__s[__i], __a)) 193s 1515: return __s + __i; 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: 193s 1515: typename char_traits<_CharT>::char_type* 193s 1515: char_traits<_CharT>:: 193s 1515: move(char_type* __s1, const char_type* __s2, std::size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s1; 193s 1515: # 248 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: __builtin_memmove(__s1, __s2, __n * sizeof(char_type)); 193s 1515: return __s1; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: 193s 1515: typename char_traits<_CharT>::char_type* 193s 1515: char_traits<_CharT>:: 193s 1515: copy(char_type* __s1, const char_type* __s2, std::size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s1; 193s 1515: # 268 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: __builtin_memcpy(__s1, __s2, __n * sizeof(char_type)); 193s 1515: return __s1; 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: 193s 1515: typename char_traits<_CharT>::char_type* 193s 1515: char_traits<_CharT>:: 193s 1515: assign(char_type* __s, std::size_t __n, char_type __a) 193s 1515: { 193s 1515: # 287 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: if (sizeof(_CharT) == 1 && __is_trivial(_CharT)) 193s 1515: { 193s 1515: if (__n) 193s 1515: { 193s 1515: unsigned char __c; 193s 1515: __builtin_memcpy(&__c, __builtin_addressof(__a), 1); 193s 1515: __builtin_memset(__s, __c, __n); 193s 1515: } 193s 1515: } 193s 1515: else 193s 1515: { 193s 1515: for (std::size_t __i = 0; __i < __n; ++__i) 193s 1515: __s[__i] = __a; 193s 1515: } 193s 1515: return __s; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: # 324 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: template 193s 1515: struct char_traits : public __gnu_cxx::char_traits<_CharT> 193s 1515: { }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct char_traits 193s 1515: { 193s 1515: typedef char char_type; 193s 1515: typedef int int_type; 193s 1515: 193s 1515: typedef streampos pos_type; 193s 1515: typedef streamoff off_type; 193s 1515: typedef mbstate_t state_type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static void 193s 1515: assign(char_type& __c1, const char_type& __c2) noexcept 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __c1 = __c2; 193s 1515: } 193s 1515: 193s 1515: static constexpr bool 193s 1515: eq(const char_type& __c1, const char_type& __c2) noexcept 193s 1515: { return __c1 == __c2; } 193s 1515: 193s 1515: static constexpr bool 193s 1515: lt(const char_type& __c1, const char_type& __c2) noexcept 193s 1515: { 193s 1515: 193s 1515: return (static_cast(__c1) 193s 1515: < static_cast(__c2)); 193s 1515: } 193s 1515: 193s 1515: static int 193s 1515: compare(const char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return 0; 193s 1515: # 383 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: return __builtin_memcmp(__s1, __s2, __n); 193s 1515: } 193s 1515: 193s 1515: static size_t 193s 1515: length(const char_type* __s) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return __builtin_strlen(__s); 193s 1515: } 193s 1515: 193s 1515: static const char_type* 193s 1515: find(const char_type* __s, size_t __n, const char_type& __a) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return 0; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return static_cast(__builtin_memchr(__s, __a, __n)); 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: move(char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s1; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return static_cast(__builtin_memmove(__s1, __s2, __n)); 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: copy(char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s1; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return static_cast(__builtin_memcpy(__s1, __s2, __n)); 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: assign(char_type* __s, size_t __n, char_type __a) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return static_cast(__builtin_memset(__s, __a, __n)); 193s 1515: } 193s 1515: 193s 1515: static constexpr char_type 193s 1515: to_char_type(const int_type& __c) noexcept 193s 1515: { return static_cast(__c); } 193s 1515: 193s 1515: 193s 1515: 193s 1515: static constexpr int_type 193s 1515: to_int_type(const char_type& __c) noexcept 193s 1515: { return static_cast(static_cast(__c)); } 193s 1515: 193s 1515: static constexpr bool 193s 1515: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 193s 1515: { return __c1 == __c2; } 193s 1515: 193s 1515: 193s 1515: static constexpr int_type 193s 1515: eof() noexcept 193s 1515: { return static_cast(-1); } 193s 1515: 193s 1515: static constexpr int_type 193s 1515: not_eof(const int_type& __c) noexcept 193s 1515: { return (__c == eof()) ? 0 : __c; } 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct char_traits 193s 1515: { 193s 1515: typedef wchar_t char_type; 193s 1515: typedef wint_t int_type; 193s 1515: 193s 1515: typedef streamoff off_type; 193s 1515: typedef wstreampos pos_type; 193s 1515: typedef mbstate_t state_type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static void 193s 1515: assign(char_type& __c1, const char_type& __c2) noexcept 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __c1 = __c2; 193s 1515: } 193s 1515: 193s 1515: static constexpr bool 193s 1515: eq(const char_type& __c1, const char_type& __c2) noexcept 193s 1515: { return __c1 == __c2; } 193s 1515: 193s 1515: static constexpr bool 193s 1515: lt(const char_type& __c1, const char_type& __c2) noexcept 193s 1515: { return __c1 < __c2; } 193s 1515: 193s 1515: static int 193s 1515: compare(const char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return 0; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return wmemcmp(__s1, __s2, __n); 193s 1515: } 193s 1515: 193s 1515: static size_t 193s 1515: length(const char_type* __s) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return wcslen(__s); 193s 1515: } 193s 1515: 193s 1515: static const char_type* 193s 1515: find(const char_type* __s, size_t __n, const char_type& __a) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return 0; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return wmemchr(__s, __a, __n); 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: move(char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s1; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return wmemmove(__s1, __s2, __n); 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: copy(char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s1; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return wmemcpy(__s1, __s2, __n); 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: assign(char_type* __s, size_t __n, char_type __a) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return wmemset(__s, __a, __n); 193s 1515: } 193s 1515: 193s 1515: static constexpr char_type 193s 1515: to_char_type(const int_type& __c) noexcept 193s 1515: { return char_type(__c); } 193s 1515: 193s 1515: static constexpr int_type 193s 1515: to_int_type(const char_type& __c) noexcept 193s 1515: { return int_type(__c); } 193s 1515: 193s 1515: static constexpr bool 193s 1515: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 193s 1515: { return __c1 == __c2; } 193s 1515: 193s 1515: 193s 1515: static constexpr int_type 193s 1515: eof() noexcept 193s 1515: { return static_cast((0xffffffffu)); } 193s 1515: 193s 1515: static constexpr int_type 193s 1515: not_eof(const int_type& __c) noexcept 193s 1515: { return eq_int_type(__c, eof()) ? 0 : __c; } 193s 1515: 193s 1515: }; 193s 1515: # 731 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: template<> 193s 1515: struct char_traits 193s 1515: { 193s 1515: typedef char16_t char_type; 193s 1515: 193s 1515: typedef short unsigned int int_type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef streamoff off_type; 193s 1515: typedef u16streampos pos_type; 193s 1515: typedef mbstate_t state_type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static void 193s 1515: assign(char_type& __c1, const char_type& __c2) noexcept 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __c1 = __c2; 193s 1515: } 193s 1515: 193s 1515: static constexpr bool 193s 1515: eq(const char_type& __c1, const char_type& __c2) noexcept 193s 1515: { return __c1 == __c2; } 193s 1515: 193s 1515: static constexpr bool 193s 1515: lt(const char_type& __c1, const char_type& __c2) noexcept 193s 1515: { return __c1 < __c2; } 193s 1515: 193s 1515: static int 193s 1515: compare(const char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: for (size_t __i = 0; __i < __n; ++__i) 193s 1515: if (lt(__s1[__i], __s2[__i])) 193s 1515: return -1; 193s 1515: else if (lt(__s2[__i], __s1[__i])) 193s 1515: return 1; 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: static size_t 193s 1515: length(const char_type* __s) 193s 1515: { 193s 1515: size_t __i = 0; 193s 1515: while (!eq(__s[__i], char_type())) 193s 1515: ++__i; 193s 1515: return __i; 193s 1515: } 193s 1515: 193s 1515: static const char_type* 193s 1515: find(const char_type* __s, size_t __n, const char_type& __a) 193s 1515: { 193s 1515: for (size_t __i = 0; __i < __n; ++__i) 193s 1515: if (eq(__s[__i], __a)) 193s 1515: return __s + __i; 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: move(char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s1; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return (static_cast 193s 1515: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: copy(char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s1; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return (static_cast 193s 1515: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: assign(char_type* __s, size_t __n, char_type __a) 193s 1515: { 193s 1515: for (size_t __i = 0; __i < __n; ++__i) 193s 1515: assign(__s[__i], __a); 193s 1515: return __s; 193s 1515: } 193s 1515: 193s 1515: static constexpr char_type 193s 1515: to_char_type(const int_type& __c) noexcept 193s 1515: { return char_type(__c); } 193s 1515: 193s 1515: static constexpr bool 193s 1515: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 193s 1515: { return __c1 == __c2; } 193s 1515: 193s 1515: 193s 1515: static constexpr int_type 193s 1515: to_int_type(const char_type& __c) noexcept 193s 1515: { return __c == eof() ? int_type(0xfffd) : int_type(__c); } 193s 1515: 193s 1515: static constexpr int_type 193s 1515: eof() noexcept 193s 1515: { return static_cast(-1); } 193s 1515: 193s 1515: static constexpr int_type 193s 1515: not_eof(const int_type& __c) noexcept 193s 1515: { return eq_int_type(__c, eof()) ? 0 : __c; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: template<> 193s 1515: struct char_traits 193s 1515: { 193s 1515: typedef char32_t char_type; 193s 1515: 193s 1515: typedef unsigned int int_type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef streamoff off_type; 193s 1515: typedef u32streampos pos_type; 193s 1515: typedef mbstate_t state_type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: static void 193s 1515: assign(char_type& __c1, const char_type& __c2) noexcept 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __c1 = __c2; 193s 1515: } 193s 1515: 193s 1515: static constexpr bool 193s 1515: eq(const char_type& __c1, const char_type& __c2) noexcept 193s 1515: { return __c1 == __c2; } 193s 1515: 193s 1515: static constexpr bool 193s 1515: lt(const char_type& __c1, const char_type& __c2) noexcept 193s 1515: { return __c1 < __c2; } 193s 1515: 193s 1515: static int 193s 1515: compare(const char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: for (size_t __i = 0; __i < __n; ++__i) 193s 1515: if (lt(__s1[__i], __s2[__i])) 193s 1515: return -1; 193s 1515: else if (lt(__s2[__i], __s1[__i])) 193s 1515: return 1; 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: static size_t 193s 1515: length(const char_type* __s) 193s 1515: { 193s 1515: size_t __i = 0; 193s 1515: while (!eq(__s[__i], char_type())) 193s 1515: ++__i; 193s 1515: return __i; 193s 1515: } 193s 1515: 193s 1515: static const char_type* 193s 1515: find(const char_type* __s, size_t __n, const char_type& __a) 193s 1515: { 193s 1515: for (size_t __i = 0; __i < __n; ++__i) 193s 1515: if (eq(__s[__i], __a)) 193s 1515: return __s + __i; 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: move(char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s1; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return (static_cast 193s 1515: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: copy(char_type* __s1, const char_type* __s2, size_t __n) 193s 1515: { 193s 1515: if (__n == 0) 193s 1515: return __s1; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return (static_cast 193s 1515: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 193s 1515: } 193s 1515: 193s 1515: static char_type* 193s 1515: assign(char_type* __s, size_t __n, char_type __a) 193s 1515: { 193s 1515: for (size_t __i = 0; __i < __n; ++__i) 193s 1515: assign(__s[__i], __a); 193s 1515: return __s; 193s 1515: } 193s 1515: 193s 1515: static constexpr char_type 193s 1515: to_char_type(const int_type& __c) noexcept 193s 1515: { return char_type(__c); } 193s 1515: 193s 1515: static constexpr int_type 193s 1515: to_int_type(const char_type& __c) noexcept 193s 1515: { return int_type(__c); } 193s 1515: 193s 1515: static constexpr bool 193s 1515: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 193s 1515: { return __c1 == __c2; } 193s 1515: 193s 1515: 193s 1515: static constexpr int_type 193s 1515: eof() noexcept 193s 1515: { return static_cast(-1); } 193s 1515: 193s 1515: static constexpr int_type 193s 1515: not_eof(const int_type& __c) noexcept 193s 1515: { return eq_int_type(__c, eof()) ? 0 : __c; } 193s 1515: 193s 1515: }; 193s 1515: # 1009 "/usr/include/c++/15/bits/char_traits.h" 3 4 193s 1515: #pragma GCC diagnostic pop 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 45 "/usr/include/c++/15/ios" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/localefwd.h" 1 3 4 193s 1515: # 42 "/usr/include/c++/15/bits/localefwd.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 1 3 4 193s 1515: # 39 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 3 4 193s 1515: 193s 1515: # 40 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 3 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/clocale" 1 3 193s 1515: # 47 "/usr/include/c++/15/clocale" 3 193s 1515: # 1 "/usr/include/locale.h" 1 3 4 193s 1515: # 28 "/usr/include/locale.h" 3 4 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 29 "/usr/include/locale.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/locale.h" 1 3 4 193s 1515: # 30 "/usr/include/locale.h" 2 3 4 193s 1515: 193s 1515: extern "C" { 193s 1515: # 51 "/usr/include/locale.h" 3 4 193s 1515: struct lconv 193s 1515: { 193s 1515: 193s 1515: 193s 1515: char *decimal_point; 193s 1515: char *thousands_sep; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: char *grouping; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: char *int_curr_symbol; 193s 1515: char *currency_symbol; 193s 1515: char *mon_decimal_point; 193s 1515: char *mon_thousands_sep; 193s 1515: char *mon_grouping; 193s 1515: char *positive_sign; 193s 1515: char *negative_sign; 193s 1515: char int_frac_digits; 193s 1515: char frac_digits; 193s 1515: 193s 1515: char p_cs_precedes; 193s 1515: 193s 1515: char p_sep_by_space; 193s 1515: 193s 1515: char n_cs_precedes; 193s 1515: 193s 1515: char n_sep_by_space; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: char p_sign_posn; 193s 1515: char n_sign_posn; 193s 1515: 193s 1515: 193s 1515: char int_p_cs_precedes; 193s 1515: 193s 1515: char int_p_sep_by_space; 193s 1515: 193s 1515: char int_n_cs_precedes; 193s 1515: 193s 1515: char int_n_sep_by_space; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: char int_p_sign_posn; 193s 1515: char int_n_sign_posn; 193s 1515: # 118 "/usr/include/locale.h" 3 4 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char *setlocale (int __category, const char *__locale) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern struct lconv *localeconv (void) noexcept (true); 193s 1515: # 141 "/usr/include/locale.h" 3 4 193s 1515: extern locale_t newlocale (int __category_mask, const char *__locale, 193s 1515: locale_t __base) noexcept (true); 193s 1515: # 176 "/usr/include/locale.h" 3 4 193s 1515: extern locale_t duplocale (locale_t __dataset) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void freelocale (locale_t __dataset) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern locale_t uselocale (locale_t __dataset) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 48 "/usr/include/c++/15/clocale" 2 3 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace std 193s 1515: { 193s 1515: using ::lconv; 193s 1515: using ::setlocale; 193s 1515: using ::localeconv; 193s 1515: } 193s 1515: # 42 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 2 3 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: extern "C" __typeof(uselocale) __uselocale; 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: typedef __locale_t __c_locale; 193s 1515: # 73 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 3 193s 1515: inline int 193s 1515: __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), 193s 1515: char* __out, 193s 1515: const int __size __attribute__ ((__unused__)), 193s 1515: const char* __fmt, ...) 193s 1515: { 193s 1515: 193s 1515: __c_locale __old = __gnu_cxx::__uselocale(__cloc); 193s 1515: # 93 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 3 193s 1515: __builtin_va_list __args; 193s 1515: __builtin_va_start(__args, __fmt); 193s 1515: 193s 1515: 193s 1515: const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __builtin_va_end(__args); 193s 1515: 193s 1515: 193s 1515: __gnu_cxx::__uselocale(__old); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: return __ret; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 43 "/usr/include/c++/15/bits/localefwd.h" 2 3 4 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/cctype" 1 3 4 193s 1515: # 47 "/usr/include/c++/15/cctype" 3 4 193s 1515: # 1 "/usr/include/ctype.h" 1 3 4 193s 1515: # 28 "/usr/include/ctype.h" 3 4 193s 1515: extern "C" { 193s 1515: # 46 "/usr/include/ctype.h" 3 4 193s 1515: enum 193s 1515: { 193s 1515: _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), 193s 1515: _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), 193s 1515: _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), 193s 1515: _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), 193s 1515: _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), 193s 1515: _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), 193s 1515: _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), 193s 1515: _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), 193s 1515: _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), 193s 1515: _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), 193s 1515: _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), 193s 1515: _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) 193s 1515: }; 193s 1515: # 79 "/usr/include/ctype.h" 3 4 193s 1515: extern const unsigned short int **__ctype_b_loc (void) 193s 1515: noexcept (true) __attribute__ ((__const__)); 193s 1515: extern const __int32_t **__ctype_tolower_loc (void) 193s 1515: noexcept (true) __attribute__ ((__const__)); 193s 1515: extern const __int32_t **__ctype_toupper_loc (void) 193s 1515: noexcept (true) __attribute__ ((__const__)); 193s 1515: # 108 "/usr/include/ctype.h" 3 4 193s 1515: extern int isalnum (int) noexcept (true); 193s 1515: extern int isalpha (int) noexcept (true); 193s 1515: extern int iscntrl (int) noexcept (true); 193s 1515: extern int isdigit (int) noexcept (true); 193s 1515: extern int islower (int) noexcept (true); 193s 1515: extern int isgraph (int) noexcept (true); 193s 1515: extern int isprint (int) noexcept (true); 193s 1515: extern int ispunct (int) noexcept (true); 193s 1515: extern int isspace (int) noexcept (true); 193s 1515: extern int isupper (int) noexcept (true); 193s 1515: extern int isxdigit (int) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int tolower (int __c) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int toupper (int __c) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int isblank (int) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int isctype (int __c, int __mask) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int isascii (int __c) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int toascii (int __c) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int _toupper (int) noexcept (true); 193s 1515: extern int _tolower (int) noexcept (true); 193s 1515: # 251 "/usr/include/ctype.h" 3 4 193s 1515: extern int isalnum_l (int, locale_t) noexcept (true); 193s 1515: extern int isalpha_l (int, locale_t) noexcept (true); 193s 1515: extern int iscntrl_l (int, locale_t) noexcept (true); 193s 1515: extern int isdigit_l (int, locale_t) noexcept (true); 193s 1515: extern int islower_l (int, locale_t) noexcept (true); 193s 1515: extern int isgraph_l (int, locale_t) noexcept (true); 193s 1515: extern int isprint_l (int, locale_t) noexcept (true); 193s 1515: extern int ispunct_l (int, locale_t) noexcept (true); 193s 1515: extern int isspace_l (int, locale_t) noexcept (true); 193s 1515: extern int isupper_l (int, locale_t) noexcept (true); 193s 1515: extern int isxdigit_l (int, locale_t) noexcept (true); 193s 1515: 193s 1515: extern int isblank_l (int, locale_t) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int __tolower_l (int __c, locale_t __l) noexcept (true); 193s 1515: extern int tolower_l (int __c, locale_t __l) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int __toupper_l (int __c, locale_t __l) noexcept (true); 193s 1515: extern int toupper_l (int __c, locale_t __l) noexcept (true); 193s 1515: # 327 "/usr/include/ctype.h" 3 4 193s 1515: } 193s 1515: # 48 "/usr/include/c++/15/cctype" 2 3 4 193s 1515: # 64 "/usr/include/c++/15/cctype" 3 4 193s 1515: namespace std 193s 1515: { 193s 1515: using ::isalnum; 193s 1515: using ::isalpha; 193s 1515: using ::iscntrl; 193s 1515: using ::isdigit; 193s 1515: using ::isgraph; 193s 1515: using ::islower; 193s 1515: using ::isprint; 193s 1515: using ::ispunct; 193s 1515: using ::isspace; 193s 1515: using ::isupper; 193s 1515: using ::isxdigit; 193s 1515: using ::tolower; 193s 1515: using ::toupper; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace std 193s 1515: { 193s 1515: using ::isblank; 193s 1515: } 193s 1515: # 45 "/usr/include/c++/15/bits/localefwd.h" 2 3 4 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: # 57 "/usr/include/c++/15/bits/localefwd.h" 3 4 193s 1515: class locale; 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: has_facet(const locale&) throw(); 193s 1515: 193s 1515: template 193s 1515: const _Facet& 193s 1515: use_facet(const locale&); 193s 1515: 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: isspace(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: isprint(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: iscntrl(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: isupper(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: islower(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: isalpha(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: isdigit(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: ispunct(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: isxdigit(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: isalnum(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: isgraph(_CharT, const locale&); 193s 1515: 193s 1515: 193s 1515: template 193s 1515: bool 193s 1515: isblank(_CharT, const locale&); 193s 1515: 193s 1515: 193s 1515: template 193s 1515: _CharT 193s 1515: toupper(_CharT, const locale&); 193s 1515: 193s 1515: template 193s 1515: _CharT 193s 1515: tolower(_CharT, const locale&); 193s 1515: 193s 1515: 193s 1515: struct ctype_base; 193s 1515: template 193s 1515: class ctype; 193s 1515: template<> class ctype; 193s 1515: 193s 1515: template<> class ctype; 193s 1515: 193s 1515: template 193s 1515: class ctype_byname; 193s 1515: 193s 1515: 193s 1515: class codecvt_base; 193s 1515: template 193s 1515: class codecvt; 193s 1515: template<> class codecvt; 193s 1515: 193s 1515: template<> class codecvt; 193s 1515: 193s 1515: 193s 1515: template<> class codecvt; 193s 1515: template<> class codecvt; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: class codecvt_byname; 193s 1515: 193s 1515: 193s 1515: 193s 1515: template > 193s 1515: class num_get; 193s 1515: template > 193s 1515: class num_put; 193s 1515: 193s 1515: namespace __cxx11 { 193s 1515: template class numpunct; 193s 1515: template class numpunct_byname; 193s 1515: } 193s 1515: 193s 1515: namespace __cxx11 { 193s 1515: 193s 1515: template 193s 1515: class collate; 193s 1515: template 193s 1515: class collate_byname; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: class time_base; 193s 1515: namespace __cxx11 { 193s 1515: template > 193s 1515: class time_get; 193s 1515: template > 193s 1515: class time_get_byname; 193s 1515: } 193s 1515: template > 193s 1515: class time_put; 193s 1515: template > 193s 1515: class time_put_byname; 193s 1515: 193s 1515: 193s 1515: class money_base; 193s 1515: namespace __cxx11 { 193s 1515: template > 193s 1515: class money_get; 193s 1515: template > 193s 1515: class money_put; 193s 1515: } 193s 1515: namespace __cxx11 { 193s 1515: template 193s 1515: class moneypunct; 193s 1515: template 193s 1515: class moneypunct_byname; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: struct messages_base; 193s 1515: namespace __cxx11 { 193s 1515: template 193s 1515: class messages; 193s 1515: template 193s 1515: class messages_byname; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 46 "/usr/include/c++/15/ios" 2 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/ios_base.h" 1 3 4 193s 1515: # 41 "/usr/include/c++/15/bits/ios_base.h" 3 4 193s 1515: # 1 "/usr/include/c++/15/ext/atomicity.h" 1 3 4 193s 1515: # 37 "/usr/include/c++/15/ext/atomicity.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr.h" 1 3 4 193s 1515: # 30 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr.h" 3 4 193s 1515: #pragma GCC visibility push(default) 193s 1515: # 157 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 1 3 4 193s 1515: # 35 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 193s 1515: # 1 "/usr/include/pthread.h" 1 3 4 193s 1515: # 22 "/usr/include/pthread.h" 3 4 193s 1515: # 1 "/usr/include/sched.h" 1 3 4 193s 1515: # 29 "/usr/include/sched.h" 3 4 193s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 193s 1515: # 30 "/usr/include/sched.h" 2 3 4 193s 1515: # 43 "/usr/include/sched.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 1 3 4 193s 1515: # 63 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 3 4 193s 1515: # 1 "/usr/include/linux/sched/types.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/linux/types.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/asm/types.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/asm-generic/int-ll64.h" 1 3 4 193s 1515: # 12 "/usr/include/asm-generic/int-ll64.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/asm/bitsperlong.h" 1 3 4 193s 1515: # 1 "/usr/include/asm-generic/bitsperlong.h" 1 3 4 193s 1515: # 2 "/usr/include/arm-linux-gnueabihf/asm/bitsperlong.h" 2 3 4 193s 1515: # 13 "/usr/include/asm-generic/int-ll64.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __signed__ char __s8; 193s 1515: typedef unsigned char __u8; 193s 1515: 193s 1515: typedef __signed__ short __s16; 193s 1515: typedef unsigned short __u16; 193s 1515: 193s 1515: typedef __signed__ int __s32; 193s 1515: typedef unsigned int __u32; 193s 1515: 193s 1515: 193s 1515: __extension__ typedef __signed__ long long __s64; 193s 1515: __extension__ typedef unsigned long long __u64; 193s 1515: # 6 "/usr/include/arm-linux-gnueabihf/asm/types.h" 2 3 4 193s 1515: # 6 "/usr/include/linux/types.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/linux/posix_types.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/linux/stddef.h" 1 3 4 193s 1515: # 6 "/usr/include/linux/posix_types.h" 2 3 4 193s 1515: # 25 "/usr/include/linux/posix_types.h" 3 4 193s 1515: typedef struct { 193s 1515: unsigned long fds_bits[1024 / (8 * sizeof(long))]; 193s 1515: } __kernel_fd_set; 193s 1515: 193s 1515: 193s 1515: typedef void (*__kernel_sighandler_t)(int); 193s 1515: 193s 1515: 193s 1515: typedef int __kernel_key_t; 193s 1515: typedef int __kernel_mqd_t; 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/asm/posix_types.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/asm/posix_types.h" 3 4 193s 1515: typedef unsigned short __kernel_mode_t; 193s 1515: 193s 1515: 193s 1515: typedef unsigned short __kernel_ipc_pid_t; 193s 1515: 193s 1515: 193s 1515: typedef unsigned short __kernel_uid_t; 193s 1515: typedef unsigned short __kernel_gid_t; 193s 1515: 193s 1515: 193s 1515: typedef unsigned short __kernel_old_dev_t; 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/asm-generic/posix_types.h" 1 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/asm/bitsperlong.h" 1 3 4 193s 1515: # 6 "/usr/include/asm-generic/posix_types.h" 2 3 4 193s 1515: # 15 "/usr/include/asm-generic/posix_types.h" 3 4 193s 1515: typedef long __kernel_long_t; 193s 1515: typedef unsigned long __kernel_ulong_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __kernel_ulong_t __kernel_ino_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef int __kernel_pid_t; 193s 1515: # 41 "/usr/include/asm-generic/posix_types.h" 3 4 193s 1515: typedef __kernel_long_t __kernel_suseconds_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef int __kernel_daddr_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef unsigned int __kernel_uid32_t; 193s 1515: typedef unsigned int __kernel_gid32_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __kernel_uid_t __kernel_old_uid_t; 193s 1515: typedef __kernel_gid_t __kernel_old_gid_t; 193s 1515: # 68 "/usr/include/asm-generic/posix_types.h" 3 4 193s 1515: typedef unsigned int __kernel_size_t; 193s 1515: typedef int __kernel_ssize_t; 193s 1515: typedef int __kernel_ptrdiff_t; 193s 1515: # 79 "/usr/include/asm-generic/posix_types.h" 3 4 193s 1515: typedef struct { 193s 1515: int val[2]; 193s 1515: } __kernel_fsid_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef __kernel_long_t __kernel_off_t; 193s 1515: typedef long long __kernel_loff_t; 193s 1515: typedef unsigned long long __kernel_uoff_t; 193s 1515: typedef __kernel_long_t __kernel_old_time_t; 193s 1515: typedef __kernel_long_t __kernel_time_t; 193s 1515: typedef long long __kernel_time64_t; 193s 1515: typedef __kernel_long_t __kernel_clock_t; 193s 1515: typedef int __kernel_timer_t; 193s 1515: typedef int __kernel_clockid_t; 193s 1515: typedef char * __kernel_caddr_t; 193s 1515: typedef unsigned short __kernel_uid16_t; 193s 1515: typedef unsigned short __kernel_gid16_t; 193s 1515: # 37 "/usr/include/arm-linux-gnueabihf/asm/posix_types.h" 2 3 4 193s 1515: # 37 "/usr/include/linux/posix_types.h" 2 3 4 193s 1515: # 10 "/usr/include/linux/types.h" 2 3 4 193s 1515: # 31 "/usr/include/linux/types.h" 3 4 193s 1515: typedef __u16 __le16; 193s 1515: typedef __u16 __be16; 193s 1515: typedef __u32 __le32; 193s 1515: typedef __u32 __be32; 193s 1515: typedef __u64 __le64; 193s 1515: typedef __u64 __be64; 193s 1515: 193s 1515: typedef __u16 __sum16; 193s 1515: typedef __u32 __wsum; 193s 1515: # 55 "/usr/include/linux/types.h" 3 4 193s 1515: typedef unsigned __poll_t; 193s 1515: # 6 "/usr/include/linux/sched/types.h" 2 3 4 193s 1515: # 98 "/usr/include/linux/sched/types.h" 3 4 193s 1515: struct sched_attr { 193s 1515: __u32 size; 193s 1515: 193s 1515: __u32 sched_policy; 193s 1515: __u64 sched_flags; 193s 1515: 193s 1515: 193s 1515: __s32 sched_nice; 193s 1515: 193s 1515: 193s 1515: __u32 sched_priority; 193s 1515: 193s 1515: 193s 1515: __u64 sched_runtime; 193s 1515: __u64 sched_deadline; 193s 1515: __u64 sched_period; 193s 1515: 193s 1515: 193s 1515: __u32 sched_util_min; 193s 1515: __u32 sched_util_max; 193s 1515: 193s 1515: }; 193s 1515: # 64 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 2 3 4 193s 1515: # 126 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sched_param.h" 1 3 4 193s 1515: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sched_param.h" 3 4 193s 1515: struct sched_param 193s 1515: { 193s 1515: int sched_priority; 193s 1515: }; 193s 1515: # 127 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 2 3 4 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int clone (int (*__fn) (void *__arg), void *__child_stack, 193s 1515: int __flags, void *__arg, ...) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int unshare (int __flags) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int sched_getcpu (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int getcpu (unsigned int *, unsigned int *) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int setns (int __fd, int __nstype) noexcept (true); 193s 1515: 193s 1515: 193s 1515: int sched_setattr (pid_t tid, struct sched_attr *attr, unsigned int flags) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: int sched_getattr (pid_t tid, struct sched_attr *attr, unsigned int size, 193s 1515: unsigned int flags) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 44 "/usr/include/sched.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 1 3 4 193s 1515: # 32 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4 193s 1515: typedef unsigned long int __cpu_mask; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef struct 193s 1515: { 193s 1515: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; 193s 1515: } cpu_set_t; 193s 1515: # 115 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4 193s 1515: extern "C" { 193s 1515: 193s 1515: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) 193s 1515: noexcept (true); 193s 1515: extern cpu_set_t *__sched_cpualloc (size_t __count) noexcept (true) __attribute__ ((__warn_unused_result__)); 193s 1515: extern void __sched_cpufree (cpu_set_t *__set) noexcept (true); 193s 1515: 193s 1515: } 193s 1515: # 45 "/usr/include/sched.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int sched_setscheduler (__pid_t __pid, int __policy, 193s 1515: const struct sched_param *__param) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int sched_getscheduler (__pid_t __pid) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int sched_yield (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int sched_get_priority_max (int __algorithm) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int sched_get_priority_min (int __algorithm) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) noexcept (true) __asm__ ("" "__sched_rr_get_interval64") 193s 1515: 193s 1515: ; 193s 1515: # 130 "/usr/include/sched.h" 3 4 193s 1515: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, 193s 1515: const cpu_set_t *__cpuset) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, 193s 1515: cpu_set_t *__cpuset) noexcept (true); 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 23 "/usr/include/pthread.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 1 3 4 193s 1515: # 33 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 3 4 193s 1515: typedef int __jmp_buf[64] __attribute__((__aligned__ (8))); 193s 1515: # 28 "/usr/include/pthread.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 193s 1515: # 29 "/usr/include/pthread.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct___jmp_buf_tag.h" 1 3 4 193s 1515: # 26 "/usr/include/arm-linux-gnueabihf/bits/types/struct___jmp_buf_tag.h" 3 4 193s 1515: struct __jmp_buf_tag 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __jmp_buf __jmpbuf; 193s 1515: int __mask_was_saved; 193s 1515: __sigset_t __saved_mask; 193s 1515: }; 193s 1515: # 32 "/usr/include/pthread.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: PTHREAD_CREATE_JOINABLE, 193s 1515: 193s 1515: PTHREAD_CREATE_DETACHED 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: PTHREAD_MUTEX_TIMED_NP, 193s 1515: PTHREAD_MUTEX_RECURSIVE_NP, 193s 1515: PTHREAD_MUTEX_ERRORCHECK_NP, 193s 1515: PTHREAD_MUTEX_ADAPTIVE_NP 193s 1515: 193s 1515: , 193s 1515: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, 193s 1515: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, 193s 1515: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, 193s 1515: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL 193s 1515: 193s 1515: 193s 1515: 193s 1515: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: PTHREAD_MUTEX_STALLED, 193s 1515: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, 193s 1515: PTHREAD_MUTEX_ROBUST, 193s 1515: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: PTHREAD_PRIO_NONE, 193s 1515: PTHREAD_PRIO_INHERIT, 193s 1515: PTHREAD_PRIO_PROTECT 193s 1515: }; 193s 1515: # 104 "/usr/include/pthread.h" 3 4 193s 1515: enum 193s 1515: { 193s 1515: PTHREAD_RWLOCK_PREFER_READER_NP, 193s 1515: PTHREAD_RWLOCK_PREFER_WRITER_NP, 193s 1515: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, 193s 1515: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP 193s 1515: }; 193s 1515: # 124 "/usr/include/pthread.h" 3 4 193s 1515: enum 193s 1515: { 193s 1515: PTHREAD_INHERIT_SCHED, 193s 1515: 193s 1515: PTHREAD_EXPLICIT_SCHED 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: PTHREAD_SCOPE_SYSTEM, 193s 1515: 193s 1515: PTHREAD_SCOPE_PROCESS 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: PTHREAD_PROCESS_PRIVATE, 193s 1515: 193s 1515: PTHREAD_PROCESS_SHARED 193s 1515: 193s 1515: }; 193s 1515: # 159 "/usr/include/pthread.h" 3 4 193s 1515: struct _pthread_cleanup_buffer 193s 1515: { 193s 1515: void (*__routine) (void *); 193s 1515: void *__arg; 193s 1515: int __canceltype; 193s 1515: struct _pthread_cleanup_buffer *__prev; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: enum 193s 1515: { 193s 1515: PTHREAD_CANCEL_ENABLE, 193s 1515: 193s 1515: PTHREAD_CANCEL_DISABLE 193s 1515: 193s 1515: }; 193s 1515: enum 193s 1515: { 193s 1515: PTHREAD_CANCEL_DEFERRED, 193s 1515: 193s 1515: PTHREAD_CANCEL_ASYNCHRONOUS 193s 1515: 193s 1515: }; 193s 1515: # 197 "/usr/include/pthread.h" 3 4 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_create (pthread_t *__restrict __newthread, 193s 1515: const pthread_attr_t *__restrict __attr, 193s 1515: void *(*__start_routine) (void *), 193s 1515: void *__restrict __arg) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_join (pthread_t __th, void **__thread_return); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) noexcept (true); 193s 1515: # 248 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, const struct timespec *__abstime) __asm__ ("" "__pthread_timedjoin_np64") 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: 193s 1515: extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return, clockid_t __clockid, const struct timespec *__abstime) __asm__ ("" "__pthread_clockjoin_np64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: ; 193s 1515: # 269 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_detach (pthread_t __th) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern pthread_t pthread_self (void) noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) 193s 1515: noexcept (true) __attribute__ ((__const__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_init (pthread_attr_t *__attr) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_destroy (pthread_attr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, 193s 1515: int *__detachstate) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, 193s 1515: int __detachstate) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, 193s 1515: size_t *__guardsize) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, 193s 1515: size_t __guardsize) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, 193s 1515: struct sched_param *__restrict __param) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, 193s 1515: const struct sched_param *__restrict 193s 1515: __param) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict 193s 1515: __attr, int *__restrict __policy) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict 193s 1515: __attr, int *__restrict __inherit) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, 193s 1515: int __inherit) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, 193s 1515: int *__restrict __scope) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict 193s 1515: __attr, void **__restrict __stackaddr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, 193s 1515: void *__stackaddr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict 193s 1515: __attr, size_t *__restrict __stacksize) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, 193s 1515: size_t __stacksize) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, 193s 1515: void **__restrict __stackaddr, 193s 1515: size_t *__restrict __stacksize) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, 193s 1515: size_t __stacksize) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, 193s 1515: size_t __cpusetsize, 193s 1515: const cpu_set_t *__cpuset) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, 193s 1515: size_t __cpusetsize, 193s 1515: cpu_set_t *__cpuset) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_getattr_default_np (pthread_attr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr, 193s 1515: const __sigset_t *sigmask); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr, 193s 1515: __sigset_t *sigmask); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, 193s 1515: const struct sched_param *__param) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_getschedparam (pthread_t __target_thread, 193s 1515: int *__restrict __policy, 193s 1515: struct sched_param *__restrict __param) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) 193s 1515: noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, 193s 1515: size_t __buflen) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_getconcurrency (void) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int pthread_setconcurrency (int __level) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_yield (void) noexcept (true); 193s 1515: 193s 1515: extern int pthread_yield (void) noexcept (true) __asm__ ("" "sched_yield") 193s 1515: __attribute__ ((__deprecated__ ("pthread_yield is deprecated, use sched_yield instead"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, 193s 1515: const cpu_set_t *__cpuset) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, 193s 1515: cpu_set_t *__cpuset) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (3))); 193s 1515: # 509 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_once (pthread_once_t *__once_control, 193s 1515: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: # 521 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_setcancelstate (int __state, int *__oldstate); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_setcanceltype (int __type, int *__oldtype); 193s 1515: 193s 1515: 193s 1515: extern int pthread_cancel (pthread_t __th); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern void pthread_testcancel (void); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: struct __cancel_jmp_buf_tag 193s 1515: { 193s 1515: __jmp_buf __cancel_jmp_buf; 193s 1515: int __mask_was_saved; 193s 1515: }; 193s 1515: 193s 1515: typedef struct 193s 1515: { 193s 1515: struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; 193s 1515: void *__pad[4]; 193s 1515: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); 193s 1515: # 557 "/usr/include/pthread.h" 3 4 193s 1515: struct __pthread_cleanup_frame 193s 1515: { 193s 1515: void (*__cancel_routine) (void *); 193s 1515: void *__cancel_arg; 193s 1515: int __do_it; 193s 1515: int __cancel_type; 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: class __pthread_cleanup_class 193s 1515: { 193s 1515: void (*__cancel_routine) (void *); 193s 1515: void *__cancel_arg; 193s 1515: int __do_it; 193s 1515: int __cancel_type; 193s 1515: 193s 1515: public: 193s 1515: __pthread_cleanup_class (void (*__fct) (void *), void *__arg) 193s 1515: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } 193s 1515: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } 193s 1515: void __setdoit (int __newval) { __do_it = __newval; } 193s 1515: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, 193s 1515: &__cancel_type); } 193s 1515: void __restore () const { pthread_setcanceltype (__cancel_type, 0); } 193s 1515: }; 193s 1515: # 766 "/usr/include/pthread.h" 3 4 193s 1515: extern int __sigsetjmp_cancel (struct __cancel_jmp_buf_tag __env[1], int __savemask) noexcept (true) __asm__ ("" "__sigsetjmp") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__returns_twice__)); 193s 1515: # 781 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_mutex_init (pthread_mutex_t *__mutex, 193s 1515: const pthread_mutexattr_t *__mutexattr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 805 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_mutex_timedlock64") 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 2))); 193s 1515: # 823 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_mutex_clocklock64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * 193s 1515: __restrict __mutex, 193s 1515: int *__restrict __prioceiling) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, 193s 1515: int __prioceiling, 193s 1515: int *__restrict __old_ceiling) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutex_consistent_np (pthread_mutex_t *) noexcept (true) __asm__ ("" "pthread_mutex_consistent") 193s 1515: __attribute__ ((__nonnull__ (1))) 193s 1515: __attribute__ ((__deprecated__ ("pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent"))) 193s 1515: ; 193s 1515: # 874 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * 193s 1515: __restrict __attr, 193s 1515: int *__restrict __pshared) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, 193s 1515: int __pshared) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict 193s 1515: __attr, int *__restrict __kind) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * 193s 1515: __restrict __attr, 193s 1515: int *__restrict __protocol) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, 193s 1515: int __protocol) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * 193s 1515: __restrict __attr, 193s 1515: int *__restrict __prioceiling) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, 193s 1515: int __prioceiling) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, 193s 1515: int *__robustness) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_getrobust_np (pthread_mutexattr_t *, int *) noexcept (true) __asm__ ("" "pthread_mutexattr_getrobust") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))) 193s 1515: __attribute__ ((__deprecated__ ("pthread_mutexattr_getrobust_np is deprecated, use pthread_mutexattr_getrobust"))) 193s 1515: ; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, 193s 1515: int __robustness) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *, int) noexcept (true) __asm__ ("" "pthread_mutexattr_setrobust") 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1))) 193s 1515: __attribute__ ((__deprecated__ ("pthread_mutexattr_setrobust_np is deprecated, use pthread_mutexattr_setrobust"))) 193s 1515: ; 193s 1515: # 967 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, 193s 1515: const pthread_rwlockattr_t *__restrict 193s 1515: __attr) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 991 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_timedrdlock64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 2))); 193s 1515: # 1010 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_clockrdlock64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 1038 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_timedwrlock64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 2))); 193s 1515: # 1058 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_clockwrlock64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 3))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * 193s 1515: __restrict __attr, 193s 1515: int *__restrict __pshared) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, 193s 1515: int __pshared) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * 193s 1515: __restrict __attr, 193s 1515: int *__restrict __pref) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, 193s 1515: int __pref) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, 193s 1515: const pthread_condattr_t *__restrict __cond_attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_cond_destroy (pthread_cond_t *__cond) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_cond_signal (pthread_cond_t *__cond) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_cond_broadcast (pthread_cond_t *__cond) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, 193s 1515: pthread_mutex_t *__restrict __mutex) 193s 1515: __attribute__ ((__nonnull__ (1, 2))); 193s 1515: # 1151 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) __asm__ ("" "__pthread_cond_timedwait64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 2, 3))); 193s 1515: # 1178 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, __clockid_t __clock_id, const struct timespec *__restrict __abstime) __asm__ ("" "__pthread_cond_clockwait64") 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__ ((__nonnull__ (1, 2, 4))); 193s 1515: # 1194 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_condattr_init (pthread_condattr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_condattr_getpshared (const pthread_condattr_t * 193s 1515: __restrict __attr, 193s 1515: int *__restrict __pshared) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, 193s 1515: int __pshared) noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_condattr_getclock (const pthread_condattr_t * 193s 1515: __restrict __attr, 193s 1515: __clockid_t *__restrict __clock_id) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, 193s 1515: __clockid_t __clock_id) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 1230 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_spin_lock (pthread_spinlock_t *__lock) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, 193s 1515: const pthread_barrierattr_t *__restrict 193s 1515: __attr, unsigned int __count) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * 193s 1515: __restrict __attr, 193s 1515: int *__restrict __pshared) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, 193s 1515: int __pshared) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: # 1297 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_key_create (pthread_key_t *__key, 193s 1515: void (*__destr_function) (void *)) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (1))); 193s 1515: 193s 1515: 193s 1515: extern int pthread_key_delete (pthread_key_t __key) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern void *pthread_getspecific (pthread_key_t __key) noexcept (true); 193s 1515: 193s 1515: 193s 1515: extern int pthread_setspecific (pthread_key_t __key, 193s 1515: const void *__pointer) 193s 1515: noexcept (true) __attribute__ ((__access__ (__none__, 2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern int pthread_getcpuclockid (pthread_t __thread_id, 193s 1515: __clockid_t *__clock_id) 193s 1515: noexcept (true) __attribute__ ((__nonnull__ (2))); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern pid_t pthread_gettid_np (pthread_t __thread_id); 193s 1515: # 1337 "/usr/include/pthread.h" 3 4 193s 1515: extern int pthread_atfork (void (*__prepare) (void), 193s 1515: void (*__parent) (void), 193s 1515: void (*__child) (void)) noexcept (true); 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern __inline __attribute__ ((__gnu_inline__)) int 193s 1515: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) noexcept (true) 193s 1515: { 193s 1515: return __thread1 == __thread2; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 36 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 2 3 4 193s 1515: # 62 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 193s 1515: typedef pthread_t __gthread_t; 193s 1515: typedef pthread_key_t __gthread_key_t; 193s 1515: typedef pthread_once_t __gthread_once_t; 193s 1515: typedef pthread_mutex_t __gthread_mutex_t; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef pthread_mutex_t __gthread_recursive_mutex_t; 193s 1515: typedef pthread_cond_t __gthread_cond_t; 193s 1515: typedef struct timespec __gthread_time_t; 193s 1515: # 123 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: # 345 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_active_p (void) 193s 1515: { 193s 1515: return 1; 193s 1515: } 193s 1515: # 705 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), 193s 1515: void *__args) 193s 1515: { 193s 1515: return pthread_create (__threadid, __null, __func, __args); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_join (__gthread_t __threadid, void **__value_ptr) 193s 1515: { 193s 1515: return pthread_join (__threadid, __value_ptr); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_detach (__gthread_t __threadid) 193s 1515: { 193s 1515: return pthread_detach (__threadid); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_equal (__gthread_t __t1, __gthread_t __t2) 193s 1515: { 193s 1515: return pthread_equal (__t1, __t2); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) __gthread_t 193s 1515: __gthread_self (void) 193s 1515: { 193s 1515: return pthread_self (); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_yield (void) 193s 1515: { 193s 1515: return sched_yield (); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) 193s 1515: { 193s 1515: if (__gthread_active_p ()) 193s 1515: return pthread_once (__once, __func); 193s 1515: else 193s 1515: return -1; 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) 193s 1515: { 193s 1515: return pthread_key_create (__key, __dtor); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_key_delete (__gthread_key_t __key) 193s 1515: { 193s 1515: return pthread_key_delete (__key); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) void * 193s 1515: __gthread_getspecific (__gthread_key_t __key) 193s 1515: { 193s 1515: return pthread_getspecific (__key); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) 193s 1515: { 193s 1515: return pthread_setspecific (__key, __ptr); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) void 193s 1515: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) 193s 1515: { 193s 1515: if (__gthread_active_p ()) 193s 1515: pthread_mutex_init (__mutex, __null); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) 193s 1515: { 193s 1515: if (__gthread_active_p ()) 193s 1515: return pthread_mutex_destroy (__mutex); 193s 1515: else 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_mutex_lock (__gthread_mutex_t *__mutex) 193s 1515: { 193s 1515: if (__gthread_active_p ()) 193s 1515: return pthread_mutex_lock (__mutex); 193s 1515: else 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) 193s 1515: { 193s 1515: if (__gthread_active_p ()) 193s 1515: return pthread_mutex_trylock (__mutex); 193s 1515: else 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, 193s 1515: const __gthread_time_t *__abs_timeout) 193s 1515: { 193s 1515: if (__gthread_active_p ()) 193s 1515: return pthread_mutex_timedlock (__mutex, __abs_timeout); 193s 1515: else 193s 1515: return 0; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) 193s 1515: { 193s 1515: if (__gthread_active_p ()) 193s 1515: return pthread_mutex_unlock (__mutex); 193s 1515: else 193s 1515: return 0; 193s 1515: } 193s 1515: # 854 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) 193s 1515: { 193s 1515: return __gthread_mutex_lock (__mutex); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) 193s 1515: { 193s 1515: return __gthread_mutex_trylock (__mutex); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, 193s 1515: const __gthread_time_t *__abs_timeout) 193s 1515: { 193s 1515: return __gthread_mutex_timedlock (__mutex, __abs_timeout); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) 193s 1515: { 193s 1515: return __gthread_mutex_unlock (__mutex); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) 193s 1515: { 193s 1515: return __gthread_mutex_destroy (__mutex); 193s 1515: } 193s 1515: # 896 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_cond_broadcast (__gthread_cond_t *__cond) 193s 1515: { 193s 1515: return pthread_cond_broadcast (__cond); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_cond_signal (__gthread_cond_t *__cond) 193s 1515: { 193s 1515: return pthread_cond_signal (__cond); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) 193s 1515: { 193s 1515: return pthread_cond_wait (__cond, __mutex); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, 193s 1515: const __gthread_time_t *__abs_timeout) 193s 1515: { 193s 1515: return pthread_cond_timedwait (__cond, __mutex, __abs_timeout); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, 193s 1515: __gthread_recursive_mutex_t *__mutex) 193s 1515: { 193s 1515: return __gthread_cond_wait (__cond, __mutex); 193s 1515: } 193s 1515: 193s 1515: inline __attribute__((__always_inline__)) int 193s 1515: __gthread_cond_destroy (__gthread_cond_t* __cond) 193s 1515: { 193s 1515: return pthread_cond_destroy (__cond); 193s 1515: } 193s 1515: # 158 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: #pragma GCC visibility pop 193s 1515: # 38 "/usr/include/c++/15/ext/atomicity.h" 2 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/atomic_word.h" 1 3 4 193s 1515: # 32 "/usr/include/arm-linux-gnueabihf/c++/15/bits/atomic_word.h" 3 4 193s 1515: typedef int _Atomic_word; 193s 1515: # 39 "/usr/include/c++/15/ext/atomicity.h" 2 3 4 193s 1515: 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/sys/single_threaded.h" 1 3 4 193s 1515: # 24 "/usr/include/arm-linux-gnueabihf/sys/single_threaded.h" 3 4 193s 1515: extern "C" { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern char __libc_single_threaded; 193s 1515: 193s 1515: } 193s 1515: # 41 "/usr/include/c++/15/ext/atomicity.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: __attribute__((__always_inline__)) 193s 1515: inline bool 193s 1515: __is_single_threaded() noexcept 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: return ::__libc_single_threaded; 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: inline _Atomic_word 193s 1515: __attribute__((__always_inline__)) 193s 1515: __exchange_and_add(volatile _Atomic_word* __mem, int __val) 193s 1515: { return __atomic_fetch_add(__mem, __val, 4); } 193s 1515: 193s 1515: inline void 193s 1515: __attribute__((__always_inline__)) 193s 1515: __atomic_add(volatile _Atomic_word* __mem, int __val) 193s 1515: { __atomic_fetch_add(__mem, __val, 4); } 193s 1515: # 82 "/usr/include/c++/15/ext/atomicity.h" 3 4 193s 1515: inline _Atomic_word 193s 1515: __attribute__((__always_inline__)) 193s 1515: __exchange_and_add_single(_Atomic_word* __mem, int __val) 193s 1515: { 193s 1515: _Atomic_word __result = *__mem; 193s 1515: *__mem += __val; 193s 1515: return __result; 193s 1515: } 193s 1515: 193s 1515: inline void 193s 1515: __attribute__((__always_inline__)) 193s 1515: __atomic_add_single(_Atomic_word* __mem, int __val) 193s 1515: { *__mem += __val; } 193s 1515: 193s 1515: inline _Atomic_word 193s 1515: __attribute__ ((__always_inline__)) 193s 1515: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) 193s 1515: { 193s 1515: if (__is_single_threaded()) 193s 1515: return __exchange_and_add_single(__mem, __val); 193s 1515: else 193s 1515: return __exchange_and_add(__mem, __val); 193s 1515: } 193s 1515: 193s 1515: inline void 193s 1515: __attribute__ ((__always_inline__)) 193s 1515: __atomic_add_dispatch(_Atomic_word* __mem, int __val) 193s 1515: { 193s 1515: if (__is_single_threaded()) 193s 1515: __atomic_add_single(__mem, __val); 193s 1515: else 193s 1515: __atomic_add(__mem, __val); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 42 "/usr/include/c++/15/bits/ios_base.h" 2 3 4 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/bits/locale_classes.h" 1 3 4 193s 1515: # 42 "/usr/include/c++/15/bits/locale_classes.h" 3 4 193s 1515: # 1 "/usr/include/c++/15/string" 1 3 4 193s 1515: # 45 "/usr/include/c++/15/string" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/allocator.h" 1 3 4 193s 1515: # 46 "/usr/include/c++/15/bits/allocator.h" 3 4 193s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++allocator.h" 1 3 4 193s 1515: # 33 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++allocator.h" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/new_allocator.h" 1 3 4 193s 1515: # 35 "/usr/include/c++/15/bits/new_allocator.h" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/functexcept.h" 1 3 4 193s 1515: # 42 "/usr/include/c++/15/bits/functexcept.h" 3 4 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: void 193s 1515: __throw_bad_exception(void) __attribute__((__noreturn__)); 193s 1515: 193s 1515: 193s 1515: void 193s 1515: __throw_bad_alloc(void) __attribute__((__noreturn__)); 193s 1515: 193s 1515: void 193s 1515: __throw_bad_array_new_length(void) __attribute__((__noreturn__)); 193s 1515: 193s 1515: 193s 1515: void 193s 1515: __throw_bad_cast(void) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: void 193s 1515: __throw_bad_typeid(void) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: 193s 1515: void 193s 1515: __throw_logic_error(const char*) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: void 193s 1515: __throw_domain_error(const char*) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: void 193s 1515: __throw_invalid_argument(const char*) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: void 193s 1515: __throw_length_error(const char*) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: void 193s 1515: __throw_out_of_range(const char*) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: void 193s 1515: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__,__cold__)) 193s 1515: __attribute__((__format__(__gnu_printf__, 1, 2))); 193s 1515: 193s 1515: void 193s 1515: __throw_runtime_error(const char*) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: void 193s 1515: __throw_range_error(const char*) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: void 193s 1515: __throw_overflow_error(const char*) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: void 193s 1515: __throw_underflow_error(const char*) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: 193s 1515: void 193s 1515: __throw_ios_failure(const char*) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: void 193s 1515: __throw_ios_failure(const char*, int) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: 193s 1515: void 193s 1515: __throw_system_error(int) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: 193s 1515: void 193s 1515: __throw_future_error(int) __attribute__((__noreturn__,__cold__)); 193s 1515: 193s 1515: 193s 1515: void 193s 1515: __throw_bad_function_call() __attribute__((__noreturn__,__cold__)); 193s 1515: # 140 "/usr/include/c++/15/bits/functexcept.h" 3 4 193s 1515: 193s 1515: } 193s 1515: # 36 "/usr/include/c++/15/bits/new_allocator.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: # 62 "/usr/include/c++/15/bits/new_allocator.h" 3 4 193s 1515: template 193s 1515: class __new_allocator 193s 1515: { 193s 1515: public: 193s 1515: typedef _Tp value_type; 193s 1515: typedef std::size_t size_type; 193s 1515: typedef std::ptrdiff_t difference_type; 193s 1515: 193s 1515: typedef _Tp* pointer; 193s 1515: typedef const _Tp* const_pointer; 193s 1515: typedef _Tp& reference; 193s 1515: typedef const _Tp& const_reference; 193s 1515: 193s 1515: template 193s 1515: struct rebind 193s 1515: { typedef __new_allocator<_Tp1> other; }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef std::true_type propagate_on_container_move_assignment; 193s 1515: 193s 1515: 193s 1515: __attribute__((__always_inline__)) 193s 1515: 193s 1515: __new_allocator() noexcept { } 193s 1515: 193s 1515: __attribute__((__always_inline__)) 193s 1515: 193s 1515: __new_allocator(const __new_allocator&) noexcept { } 193s 1515: 193s 1515: template 193s 1515: __attribute__((__always_inline__)) 193s 1515: 193s 1515: __new_allocator(const __new_allocator<_Tp1>&) noexcept { } 193s 1515: 193s 1515: 193s 1515: __new_allocator& operator=(const __new_allocator&) = default; 193s 1515: 193s 1515: 193s 1515: 193s 1515: ~__new_allocator() noexcept { } 193s 1515: 193s 1515: pointer 193s 1515: address(reference __x) const noexcept 193s 1515: { return std::__addressof(__x); } 193s 1515: 193s 1515: const_pointer 193s 1515: address(const_reference __x) const noexcept 193s 1515: { return std::__addressof(__x); } 193s 1515: # 125 "/usr/include/c++/15/bits/new_allocator.h" 3 4 193s 1515: [[__nodiscard__]] _Tp* 193s 1515: allocate(size_type __n, const void* = static_cast(0)) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: static_assert(sizeof(_Tp) != 0, "cannot allocate incomplete types"); 193s 1515: 193s 1515: 193s 1515: if (__builtin_expect(__n > this->_M_max_size(), false)) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: if (__n > (std::size_t(-1) / sizeof(_Tp))) 193s 1515: std::__throw_bad_array_new_length(); 193s 1515: std::__throw_bad_alloc(); 193s 1515: } 193s 1515: # 151 "/usr/include/c++/15/bits/new_allocator.h" 3 4 193s 1515: return static_cast<_Tp*>(__builtin_operator_new(__n * sizeof(_Tp))); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: void 193s 1515: deallocate(_Tp* __p, size_type __n __attribute__ ((__unused__))) 193s 1515: { 193s 1515: # 172 "/usr/include/c++/15/bits/new_allocator.h" 3 4 193s 1515: __builtin_operator_delete((__p)); 193s 1515: } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__always_inline__)) 193s 1515: size_type 193s 1515: max_size() const noexcept 193s 1515: { return _M_max_size(); } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: __attribute__((__always_inline__)) 193s 1515: void 193s 1515: construct(_Up* __p, _Args&&... __args) 193s 1515: noexcept(__is_nothrow_new_constructible<_Up, _Args...>) 193s 1515: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 193s 1515: 193s 1515: template 193s 1515: __attribute__((__always_inline__)) 193s 1515: void 193s 1515: destroy(_Up* __p) 193s 1515: noexcept(std::is_nothrow_destructible<_Up>::value) 193s 1515: { __p->~_Up(); } 193s 1515: # 213 "/usr/include/c++/15/bits/new_allocator.h" 3 4 193s 1515: template 193s 1515: friend __attribute__((__always_inline__)) bool 193s 1515: operator==(const __new_allocator&, const __new_allocator<_Up>&) 193s 1515: noexcept 193s 1515: { return true; } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: friend __attribute__((__always_inline__)) bool 193s 1515: operator!=(const __new_allocator&, const __new_allocator<_Up>&) 193s 1515: noexcept 193s 1515: { return false; } 193s 1515: 193s 1515: 193s 1515: private: 193s 1515: __attribute__((__always_inline__)) 193s 1515: constexpr size_type 193s 1515: _M_max_size() const noexcept 193s 1515: { 193s 1515: 193s 1515: return std::size_t(0x7fffffff) / sizeof(_Tp); 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: } 193s 1515: # 34 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++allocator.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: namespace std 193s 1515: { 193s 1515: # 46 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++allocator.h" 3 4 193s 1515: template 193s 1515: using __allocator_base = __new_allocator<_Tp>; 193s 1515: } 193s 1515: # 47 "/usr/include/c++/15/bits/allocator.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: # 75 "/usr/include/c++/15/bits/allocator.h" 3 4 193s 1515: template<> 193s 1515: class allocator 193s 1515: { 193s 1515: public: 193s 1515: typedef void value_type; 193s 1515: typedef size_t size_type; 193s 1515: typedef ptrdiff_t difference_type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef void* pointer; 193s 1515: typedef const void* const_pointer; 193s 1515: 193s 1515: template 193s 1515: struct rebind 193s 1515: { typedef allocator<_Tp1> other; }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: using propagate_on_container_move_assignment = true_type; 193s 1515: 193s 1515: 193s 1515: using is_always_equal 193s 1515: 193s 1515: = true_type; 193s 1515: # 120 "/usr/include/c++/15/bits/allocator.h" 3 4 193s 1515: }; 193s 1515: # 132 "/usr/include/c++/15/bits/allocator.h" 3 4 193s 1515: template 193s 1515: class allocator : public __allocator_base<_Tp> 193s 1515: { 193s 1515: public: 193s 1515: typedef _Tp value_type; 193s 1515: typedef size_t size_type; 193s 1515: typedef ptrdiff_t difference_type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: typedef _Tp* pointer; 193s 1515: typedef const _Tp* const_pointer; 193s 1515: typedef _Tp& reference; 193s 1515: typedef const _Tp& const_reference; 193s 1515: 193s 1515: template 193s 1515: struct rebind 193s 1515: { typedef allocator<_Tp1> other; }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: using propagate_on_container_move_assignment = true_type; 193s 1515: 193s 1515: 193s 1515: using is_always_equal 193s 1515: 193s 1515: = true_type; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: __attribute__((__always_inline__)) 193s 1515: 193s 1515: allocator() noexcept { } 193s 1515: 193s 1515: __attribute__((__always_inline__)) 193s 1515: 193s 1515: allocator(const allocator& __a) noexcept 193s 1515: : __allocator_base<_Tp>(__a) { } 193s 1515: 193s 1515: 193s 1515: 193s 1515: allocator& operator=(const allocator&) = default; 193s 1515: 193s 1515: 193s 1515: template 193s 1515: __attribute__((__always_inline__)) 193s 1515: 193s 1515: allocator(const allocator<_Tp1>&) noexcept { } 193s 1515: 193s 1515: __attribute__((__always_inline__)) 193s 1515: 193s 1515: 193s 1515: 193s 1515: ~allocator() noexcept { } 193s 1515: # 219 "/usr/include/c++/15/bits/allocator.h" 3 4 193s 1515: friend __attribute__((__always_inline__)) 193s 1515: bool 193s 1515: operator==(const allocator&, const allocator&) noexcept 193s 1515: { return true; } 193s 1515: 193s 1515: 193s 1515: friend __attribute__((__always_inline__)) 193s 1515: bool 193s 1515: operator!=(const allocator&, const allocator&) noexcept 193s 1515: { return false; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: __attribute__((__always_inline__)) 193s 1515: inline bool 193s 1515: operator==(const allocator<_T1>&, const allocator<_T2>&) 193s 1515: noexcept 193s 1515: { return true; } 193s 1515: 193s 1515: 193s 1515: template 193s 1515: __attribute__((__always_inline__)) 193s 1515: inline bool 193s 1515: operator!=(const allocator<_T1>&, const allocator<_T2>&) 193s 1515: noexcept 193s 1515: { return false; } 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: class allocator 193s 1515: { 193s 1515: public: 193s 1515: typedef _Tp value_type; 193s 1515: allocator() { } 193s 1515: template allocator(const allocator<_Up>&) { } 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: class allocator 193s 1515: { 193s 1515: public: 193s 1515: typedef _Tp value_type; 193s 1515: allocator() { } 193s 1515: template allocator(const allocator<_Up>&) { } 193s 1515: }; 193s 1515: 193s 1515: template 193s 1515: class allocator 193s 1515: { 193s 1515: public: 193s 1515: typedef _Tp value_type; 193s 1515: allocator() { } 193s 1515: template allocator(const allocator<_Up>&) { } 193s 1515: }; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: extern template class allocator; 193s 1515: extern template class allocator; 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: } 193s 1515: 193s 1515: #pragma GCC diagnostic pop 193s 1515: # 46 "/usr/include/c++/15/string" 2 3 4 193s 1515: 193s 1515: 193s 1515: # 1 "/usr/include/c++/15/bits/ostream_insert.h" 1 3 4 193s 1515: # 38 "/usr/include/c++/15/bits/ostream_insert.h" 3 4 193s 1515: # 1 "/usr/include/c++/15/bits/cxxabi_forced.h" 1 3 4 193s 1515: # 38 "/usr/include/c++/15/bits/cxxabi_forced.h" 3 4 193s 1515: #pragma GCC visibility push(default) 193s 1515: 193s 1515: 193s 1515: namespace __cxxabiv1 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: class __forced_unwind 193s 1515: { 193s 1515: virtual ~__forced_unwind() throw(); 193s 1515: 193s 1515: 193s 1515: virtual void __pure_dummy() = 0; 193s 1515: }; 193s 1515: } 193s 1515: 193s 1515: 193s 1515: #pragma GCC visibility pop 193s 1515: # 39 "/usr/include/c++/15/bits/ostream_insert.h" 2 3 4 193s 1515: 193s 1515: 193s 1515: #pragma GCC diagnostic push 193s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 193s 1515: 193s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 193s 1515: { 193s 1515: 193s 1515: 193s 1515: 193s 1515: 193s 1515: template 193s 1515: inline void 193s 1515: __ostream_write(basic_ostream<_CharT, _Traits>& __out, 193s 1515: const _CharT* __s, streamsize __n) 193s 1515: { 193s 1515: typedef basic_ostream<_CharT, _Traits> __ostream_type; 193s 1515: typedef typename __ostream_type::ios_base __ios_base; 193s 1515: 193s 1515: const streamsize __put = __out.rdbuf()->sputn(__s, __n); 193s 1515: if (__put != __n) 193s 1515: __out.setstate(__ios_base::badbit); 193s 1515: } 193s 1515: 193s 1515: template 193s 1515: inline void 193s 1515: __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) 193s 1515: { 194s 1515: typedef basic_ostream<_CharT, _Traits> __ostream_type; 194s 1515: typedef typename __ostream_type::ios_base __ios_base; 194s 1515: 194s 1515: const _CharT __c = __out.fill(); 194s 1515: for (; __n > 0; --__n) 194s 1515: { 194s 1515: const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); 194s 1515: if (_Traits::eq_int_type(__put, _Traits::eof())) 194s 1515: { 194s 1515: __out.setstate(__ios_base::badbit); 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: __ostream_insert(basic_ostream<_CharT, _Traits>& __out, 194s 1515: const _CharT* __s, streamsize __n) 194s 1515: { 194s 1515: typedef basic_ostream<_CharT, _Traits> __ostream_type; 194s 1515: typedef typename __ostream_type::ios_base __ios_base; 194s 1515: 194s 1515: typename __ostream_type::sentry __cerb(__out); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: const streamsize __w = __out.width(); 194s 1515: if (__w > __n) 194s 1515: { 194s 1515: const bool __left = ((__out.flags() 194s 1515: & __ios_base::adjustfield) 194s 1515: == __ios_base::left); 194s 1515: if (!__left) 194s 1515: __ostream_fill(__out, __w - __n); 194s 1515: if (__out.good()) 194s 1515: __ostream_write(__out, __s, __n); 194s 1515: if (__left && __out.good()) 194s 1515: __ostream_fill(__out, __w - __n); 194s 1515: } 194s 1515: else 194s 1515: __ostream_write(__out, __s, __n); 194s 1515: __out.width(0); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __out._M_setstate(__ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { __out._M_setstate(__ios_base::badbit); } 194s 1515: } 194s 1515: return __out; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern template ostream& __ostream_insert(ostream&, const char*, streamsize); 194s 1515: 194s 1515: 194s 1515: extern template wostream& __ostream_insert(wostream&, const wchar_t*, 194s 1515: streamsize); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 49 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 1 3 4 194s 1515: # 66 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/concept_check.h" 1 3 4 194s 1515: # 39 "/usr/include/c++/15/bits/concept_check.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wvariadic-macros" 194s 1515: # 86 "/usr/include/c++/15/bits/concept_check.h" 3 4 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 67 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/debug/assertions.h" 1 3 4 194s 1515: # 68 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 1 3 4 194s 1515: # 76 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 95 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 3 4 194s 1515: struct input_iterator_tag { }; 194s 1515: 194s 1515: 194s 1515: struct output_iterator_tag { }; 194s 1515: 194s 1515: 194s 1515: struct forward_iterator_tag : public input_iterator_tag { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct bidirectional_iterator_tag : public forward_iterator_tag { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; 194s 1515: # 127 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 3 4 194s 1515: template 194s 1515: struct iterator 194s 1515: { 194s 1515: 194s 1515: typedef _Category iterator_category; 194s 1515: 194s 1515: typedef _Tp value_type; 194s 1515: 194s 1515: typedef _Distance difference_type; 194s 1515: 194s 1515: typedef _Pointer pointer; 194s 1515: 194s 1515: typedef _Reference reference; 194s 1515: }; 194s 1515: # 151 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 3 4 194s 1515: template 194s 1515: struct iterator_traits; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: struct __iterator_traits { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __iterator_traits<_Iterator, 194s 1515: __void_t> 194s 1515: { 194s 1515: typedef typename _Iterator::iterator_category iterator_category; 194s 1515: typedef typename _Iterator::value_type value_type; 194s 1515: typedef typename _Iterator::difference_type difference_type; 194s 1515: typedef typename _Iterator::pointer pointer; 194s 1515: typedef typename _Iterator::reference reference; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct iterator_traits 194s 1515: : public __iterator_traits<_Iterator> { }; 194s 1515: # 211 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 3 4 194s 1515: template 194s 1515: struct iterator_traits<_Tp*> 194s 1515: { 194s 1515: typedef random_access_iterator_tag iterator_category; 194s 1515: typedef _Tp value_type; 194s 1515: typedef ptrdiff_t difference_type; 194s 1515: typedef _Tp* pointer; 194s 1515: typedef _Tp& reference; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct iterator_traits 194s 1515: { 194s 1515: typedef random_access_iterator_tag iterator_category; 194s 1515: typedef _Tp value_type; 194s 1515: typedef ptrdiff_t difference_type; 194s 1515: typedef const _Tp* pointer; 194s 1515: typedef const _Tp& reference; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: inline constexpr 194s 1515: typename iterator_traits<_Iter>::iterator_category 194s 1515: __iterator_category(const _Iter&) 194s 1515: { return typename iterator_traits<_Iter>::iterator_category(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __iter_category_t 194s 1515: = typename iterator_traits<_Iter>::iterator_category; 194s 1515: 194s 1515: template 194s 1515: using _RequireInputIter = 194s 1515: __enable_if_t, 194s 1515: input_iterator_tag>::value>; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: struct __is_random_access_iter 194s 1515: : is_base_of 194s 1515: { 194s 1515: typedef is_base_of _Base; 194s 1515: enum { __value = _Base::value }; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 69 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template struct _List_iterator; 194s 1515: template struct _List_const_iterator; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline 194s 1515: typename iterator_traits<_InputIterator>::difference_type 194s 1515: __distance(_InputIterator __first, _InputIterator __last, 194s 1515: input_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: typename iterator_traits<_InputIterator>::difference_type __n = 0; 194s 1515: while (__first != __last) 194s 1515: { 194s 1515: ++__first; 194s 1515: ++__n; 194s 1515: } 194s 1515: return __n; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: inline 194s 1515: typename iterator_traits<_RandomAccessIterator>::difference_type 194s 1515: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: random_access_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return __last - __first; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: ptrdiff_t 194s 1515: __distance(std::_List_iterator<_Tp>, 194s 1515: std::_List_iterator<_Tp>, 194s 1515: input_iterator_tag); 194s 1515: 194s 1515: template 194s 1515: ptrdiff_t 194s 1515: __distance(std::_List_const_iterator<_Tp>, 194s 1515: std::_List_const_iterator<_Tp>, 194s 1515: input_iterator_tag); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __distance(_OutputIterator, _OutputIterator, output_iterator_tag) = delete; 194s 1515: # 146 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: inline 194s 1515: typename iterator_traits<_InputIterator>::difference_type 194s 1515: distance(_InputIterator __first, _InputIterator __last) 194s 1515: { 194s 1515: 194s 1515: return std::__distance(__first, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__n >= 0)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: while (__n--) 194s 1515: ++__i; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: __advance(_BidirectionalIterator& __i, _Distance __n, 194s 1515: bidirectional_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__n > 0) 194s 1515: while (__n--) 194s 1515: ++__i; 194s 1515: else 194s 1515: while (__n++) 194s 1515: --__i; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: __advance(_RandomAccessIterator& __i, _Distance __n, 194s 1515: random_access_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__builtin_constant_p(__n) && __n == 1) 194s 1515: ++__i; 194s 1515: else if (__builtin_constant_p(__n) && __n == -1) 194s 1515: --__i; 194s 1515: else 194s 1515: __i += __n; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __advance(_OutputIterator&, _Distance, output_iterator_tag) = delete; 194s 1515: # 219 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 3 4 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: inline void 194s 1515: advance(_InputIterator& __i, _Distance __n) 194s 1515: { 194s 1515: 194s 1515: typename iterator_traits<_InputIterator>::difference_type __d = __n; 194s 1515: std::__advance(__i, __d, std::__iterator_category(__i)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] [[__gnu__::__always_inline__]] 194s 1515: inline _InputIterator 194s 1515: next(_InputIterator __x, typename 194s 1515: iterator_traits<_InputIterator>::difference_type __n = 1) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: std::advance(__x, __n); 194s 1515: return __x; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] [[__gnu__::__always_inline__]] 194s 1515: inline _BidirectionalIterator 194s 1515: prev(_BidirectionalIterator __x, typename 194s 1515: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: std::advance(__x, -__n); 194s 1515: return __x; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 50 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_iterator.h" 1 3 4 194s 1515: # 67 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/ptr_traits.h" 1 3 4 194s 1515: # 42 "/usr/include/c++/15/bits/ptr_traits.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: class __undefined; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __get_first_arg 194s 1515: { using type = __undefined; }; 194s 1515: 194s 1515: template class _SomeTemplate, typename _Tp, 194s 1515: typename... _Types> 194s 1515: struct __get_first_arg<_SomeTemplate<_Tp, _Types...>> 194s 1515: { using type = _Tp; }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __replace_first_arg 194s 1515: { }; 194s 1515: 194s 1515: template class _SomeTemplate, typename _Up, 194s 1515: typename _Tp, typename... _Types> 194s 1515: struct __replace_first_arg<_SomeTemplate<_Tp, _Types...>, _Up> 194s 1515: { using type = _SomeTemplate<_Up, _Types...>; }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __ptr_traits_elem : __get_first_arg<_Ptr> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __ptr_traits_elem<_Ptr, __void_t> 194s 1515: { using type = typename _Ptr::element_type; }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __ptr_traits_elem_t = typename __ptr_traits_elem<_Ptr>::type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template::value> 194s 1515: struct __ptr_traits_ptr_to 194s 1515: { 194s 1515: using pointer = _Ptr; 194s 1515: using element_type = _Elt; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static pointer 194s 1515: pointer_to(element_type& __r) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return pointer::pointer_to(__r); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __ptr_traits_ptr_to<_Ptr, _Elt, true> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __ptr_traits_ptr_to<_Tp*, _Tp, false> 194s 1515: { 194s 1515: using pointer = _Tp*; 194s 1515: using element_type = _Tp; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static pointer 194s 1515: pointer_to(element_type& __r) noexcept 194s 1515: { return std::addressof(__r); } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __ptr_traits_impl : __ptr_traits_ptr_to<_Ptr, _Elt> 194s 1515: { 194s 1515: private: 194s 1515: template 194s 1515: using __diff_t = typename _Tp::difference_type; 194s 1515: 194s 1515: template 194s 1515: using __rebind = __type_identity>; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: using pointer = _Ptr; 194s 1515: 194s 1515: 194s 1515: using element_type = _Elt; 194s 1515: 194s 1515: 194s 1515: using difference_type = __detected_or_t; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using rebind = typename __detected_or_t<__replace_first_arg<_Ptr, _Up>, 194s 1515: __rebind, _Ptr, _Up>::type; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __ptr_traits_impl<_Ptr, __undefined> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct pointer_traits : __ptr_traits_impl<_Ptr, __ptr_traits_elem_t<_Ptr>> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct pointer_traits<_Tp*> : __ptr_traits_ptr_to<_Tp*, _Tp> 194s 1515: { 194s 1515: 194s 1515: typedef _Tp* pointer; 194s 1515: 194s 1515: typedef _Tp element_type; 194s 1515: 194s 1515: typedef ptrdiff_t difference_type; 194s 1515: 194s 1515: template using rebind = _Up*; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: constexpr _Tp* 194s 1515: __to_address(_Tp* __ptr) noexcept 194s 1515: { 194s 1515: static_assert(!std::is_function<_Tp>::value, "std::to_address argument " 194s 1515: "must not be a function pointer"); 194s 1515: return __ptr; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr typename std::pointer_traits<_Ptr>::element_type* 194s 1515: __to_address(const _Ptr& __ptr) 194s 1515: { return std::__to_address(__ptr.operator->()); } 194s 1515: # 268 "/usr/include/c++/15/bits/ptr_traits.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 68 "/usr/include/c++/15/bits/stl_iterator.h" 2 3 4 194s 1515: # 85 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 108 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: 194s 1515: # 108 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: # 130 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: class reverse_iterator 194s 1515: : public iterator::iterator_category, 194s 1515: typename iterator_traits<_Iterator>::value_type, 194s 1515: typename iterator_traits<_Iterator>::difference_type, 194s 1515: typename iterator_traits<_Iterator>::pointer, 194s 1515: typename iterator_traits<_Iterator>::reference> 194s 1515: { 194s 1515: template 194s 1515: friend class reverse_iterator; 194s 1515: # 149 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: protected: 194s 1515: _Iterator current; 194s 1515: 194s 1515: typedef iterator_traits<_Iterator> __traits_type; 194s 1515: 194s 1515: public: 194s 1515: typedef _Iterator iterator_type; 194s 1515: typedef typename __traits_type::pointer pointer; 194s 1515: 194s 1515: typedef typename __traits_type::difference_type difference_type; 194s 1515: typedef typename __traits_type::reference reference; 194s 1515: # 180 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: 194s 1515: reverse_iterator() 194s 1515: noexcept(noexcept(_Iterator())) 194s 1515: : current() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: reverse_iterator(iterator_type __x) 194s 1515: noexcept(noexcept(_Iterator(__x))) 194s 1515: : current(__x) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator(const reverse_iterator& __x) 194s 1515: noexcept(noexcept(_Iterator(__x.current))) 194s 1515: : current(__x.current) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: reverse_iterator& operator=(const reverse_iterator&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator(const reverse_iterator<_Iter>& __x) 194s 1515: noexcept(noexcept(_Iterator(__x.current))) 194s 1515: : current(__x.current) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator& 194s 1515: operator=(const reverse_iterator<_Iter>& __x) 194s 1515: noexcept(noexcept(current = __x.current)) 194s 1515: { 194s 1515: current = __x.current; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: iterator_type 194s 1515: base() const 194s 1515: noexcept(noexcept(_Iterator(current))) 194s 1515: { return current; } 194s 1515: # 257 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: operator*() const 194s 1515: { 194s 1515: _Iterator __tmp = current; 194s 1515: return *--__tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: pointer 194s 1515: operator->() const 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: 194s 1515: 194s 1515: _Iterator __tmp = current; 194s 1515: --__tmp; 194s 1515: return _S_to_pointer(__tmp); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator& 194s 1515: operator++() 194s 1515: { 194s 1515: --current; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: operator++(int) 194s 1515: { 194s 1515: reverse_iterator __tmp = *this; 194s 1515: --current; 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator& 194s 1515: operator--() 194s 1515: { 194s 1515: ++current; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: operator--(int) 194s 1515: { 194s 1515: reverse_iterator __tmp = *this; 194s 1515: ++current; 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reverse_iterator 194s 1515: operator+(difference_type __n) const 194s 1515: { return reverse_iterator(current - __n); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator& 194s 1515: operator+=(difference_type __n) 194s 1515: { 194s 1515: current -= __n; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reverse_iterator 194s 1515: operator-(difference_type __n) const 194s 1515: { return reverse_iterator(current + __n); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator& 194s 1515: operator-=(difference_type __n) 194s 1515: { 194s 1515: current += __n; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: operator[](difference_type __n) const 194s 1515: { return *(*this + __n); } 194s 1515: # 417 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: private: 194s 1515: template 194s 1515: static _Tp* 194s 1515: _S_to_pointer(_Tp* __p) 194s 1515: { return __p; } 194s 1515: 194s 1515: template 194s 1515: static pointer 194s 1515: _S_to_pointer(_Tp __t) 194s 1515: { return __t.operator->(); } 194s 1515: }; 194s 1515: # 440 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const reverse_iterator<_Iterator>& __x, 194s 1515: const reverse_iterator<_Iterator>& __y) 194s 1515: { return __x.base() == __y.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<(const reverse_iterator<_Iterator>& __x, 194s 1515: const reverse_iterator<_Iterator>& __y) 194s 1515: { return __y.base() < __x.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator!=(const reverse_iterator<_Iterator>& __x, 194s 1515: const reverse_iterator<_Iterator>& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>(const reverse_iterator<_Iterator>& __x, 194s 1515: const reverse_iterator<_Iterator>& __y) 194s 1515: { return __y < __x; } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<=(const reverse_iterator<_Iterator>& __x, 194s 1515: const reverse_iterator<_Iterator>& __y) 194s 1515: { return !(__y < __x); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>=(const reverse_iterator<_Iterator>& __x, 194s 1515: const reverse_iterator<_Iterator>& __y) 194s 1515: { return !(__x < __y); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const reverse_iterator<_IteratorL>& __x, 194s 1515: const reverse_iterator<_IteratorR>& __y) 194s 1515: { return __x.base() == __y.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<(const reverse_iterator<_IteratorL>& __x, 194s 1515: const reverse_iterator<_IteratorR>& __y) 194s 1515: { return __x.base() > __y.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator!=(const reverse_iterator<_IteratorL>& __x, 194s 1515: const reverse_iterator<_IteratorR>& __y) 194s 1515: { return __x.base() != __y.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>(const reverse_iterator<_IteratorL>& __x, 194s 1515: const reverse_iterator<_IteratorR>& __y) 194s 1515: { return __x.base() < __y.base(); } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator<=(const reverse_iterator<_IteratorL>& __x, 194s 1515: const reverse_iterator<_IteratorR>& __y) 194s 1515: { return __x.base() >= __y.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>=(const reverse_iterator<_IteratorL>& __x, 194s 1515: const reverse_iterator<_IteratorR>& __y) 194s 1515: { return __x.base() <= __y.base(); } 194s 1515: # 617 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline auto 194s 1515: operator-(const reverse_iterator<_IteratorL>& __x, 194s 1515: const reverse_iterator<_IteratorR>& __y) 194s 1515: -> decltype(__y.base() - __x.base()) 194s 1515: { return __y.base() - __x.base(); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline reverse_iterator<_Iterator> 194s 1515: operator+(typename reverse_iterator<_Iterator>::difference_type __n, 194s 1515: const reverse_iterator<_Iterator>& __x) 194s 1515: { return reverse_iterator<_Iterator>(__x.base() - __n); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline reverse_iterator<_Iterator> 194s 1515: __make_reverse_iterator(_Iterator __i) 194s 1515: { return reverse_iterator<_Iterator>(__i); } 194s 1515: # 659 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: struct __is_move_iterator > 194s 1515: : __is_move_iterator<_Iterator> 194s 1515: { }; 194s 1515: # 676 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: class back_insert_iterator 194s 1515: : public iterator 194s 1515: { 194s 1515: protected: 194s 1515: _Container* container; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: typedef _Container container_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: back_insert_iterator(_Container& __x) 194s 1515: : container(std::__addressof(__x)) { } 194s 1515: # 714 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: 194s 1515: back_insert_iterator& 194s 1515: operator=(const typename _Container::value_type& __value) 194s 1515: { 194s 1515: container->push_back(__value); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: back_insert_iterator& 194s 1515: operator=(typename _Container::value_type&& __value) 194s 1515: { 194s 1515: container->push_back(std::move(__value)); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: back_insert_iterator& 194s 1515: operator*() 194s 1515: { return *this; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: back_insert_iterator& 194s 1515: operator++() 194s 1515: { return *this; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: back_insert_iterator 194s 1515: operator++(int) 194s 1515: { return *this; } 194s 1515: }; 194s 1515: # 761 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline back_insert_iterator<_Container> 194s 1515: back_inserter(_Container& __x) 194s 1515: { return back_insert_iterator<_Container>(__x); } 194s 1515: # 777 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: class front_insert_iterator 194s 1515: : public iterator 194s 1515: { 194s 1515: protected: 194s 1515: _Container* container; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: typedef _Container container_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: front_insert_iterator(_Container& __x) 194s 1515: : container(std::__addressof(__x)) { } 194s 1515: # 815 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: 194s 1515: front_insert_iterator& 194s 1515: operator=(const typename _Container::value_type& __value) 194s 1515: { 194s 1515: container->push_front(__value); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: front_insert_iterator& 194s 1515: operator=(typename _Container::value_type&& __value) 194s 1515: { 194s 1515: container->push_front(std::move(__value)); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: front_insert_iterator& 194s 1515: operator*() 194s 1515: { return *this; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: front_insert_iterator& 194s 1515: operator++() 194s 1515: { return *this; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: front_insert_iterator 194s 1515: operator++(int) 194s 1515: { return *this; } 194s 1515: }; 194s 1515: # 862 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline front_insert_iterator<_Container> 194s 1515: front_inserter(_Container& __x) 194s 1515: { return front_insert_iterator<_Container>(__x); } 194s 1515: # 882 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: class insert_iterator 194s 1515: : public iterator 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename _Container::iterator _Iter; 194s 1515: 194s 1515: protected: 194s 1515: _Container* container; 194s 1515: _Iter iter; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: typedef _Container container_type; 194s 1515: # 907 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: 194s 1515: insert_iterator(_Container& __x, _Iter __i) 194s 1515: : container(std::__addressof(__x)), iter(__i) {} 194s 1515: # 943 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: 194s 1515: insert_iterator& 194s 1515: operator=(const typename _Container::value_type& __value) 194s 1515: { 194s 1515: iter = container->insert(iter, __value); 194s 1515: ++iter; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: insert_iterator& 194s 1515: operator=(typename _Container::value_type&& __value) 194s 1515: { 194s 1515: iter = container->insert(iter, std::move(__value)); 194s 1515: ++iter; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: insert_iterator& 194s 1515: operator*() 194s 1515: { return *this; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: insert_iterator& 194s 1515: operator++() 194s 1515: { return *this; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: insert_iterator& 194s 1515: operator++(int) 194s 1515: { return *this; } 194s 1515: }; 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 1002 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline insert_iterator<_Container> 194s 1515: inserter(_Container& __x, typename _Container::iterator __i) 194s 1515: { return insert_iterator<_Container>(__x, __i); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 1025 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: class __normal_iterator 194s 1515: { 194s 1515: protected: 194s 1515: _Iterator _M_current; 194s 1515: 194s 1515: typedef std::iterator_traits<_Iterator> __traits_type; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __convertible_from 194s 1515: = std::__enable_if_t::value>; 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: typedef _Iterator iterator_type; 194s 1515: typedef typename __traits_type::iterator_category iterator_category; 194s 1515: typedef typename __traits_type::value_type value_type; 194s 1515: typedef typename __traits_type::difference_type difference_type; 194s 1515: typedef typename __traits_type::reference reference; 194s 1515: typedef typename __traits_type::pointer pointer; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: constexpr 194s 1515: __normal_iterator() noexcept 194s 1515: : _M_current() { } 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: explicit constexpr 194s 1515: __normal_iterator(const _Iterator& __i) noexcept 194s 1515: : _M_current(__i) { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: constexpr 194s 1515: __normal_iterator(const __normal_iterator<_Iter, _Container>& __i) 194s 1515: noexcept 194s 1515: # 1082 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: : _M_current(__i.base()) { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: constexpr 194s 1515: reference 194s 1515: operator*() const noexcept 194s 1515: { return *_M_current; } 194s 1515: 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: constexpr 194s 1515: pointer 194s 1515: operator->() const noexcept 194s 1515: { return _M_current; } 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: __normal_iterator& 194s 1515: operator++() noexcept 194s 1515: { 194s 1515: ++_M_current; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: __normal_iterator 194s 1515: operator++(int) noexcept 194s 1515: { return __normal_iterator(_M_current++); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: __normal_iterator& 194s 1515: operator--() noexcept 194s 1515: { 194s 1515: --_M_current; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: __normal_iterator 194s 1515: operator--(int) noexcept 194s 1515: { return __normal_iterator(_M_current--); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: constexpr 194s 1515: reference 194s 1515: operator[](difference_type __n) const noexcept 194s 1515: { return _M_current[__n]; } 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: __normal_iterator& 194s 1515: operator+=(difference_type __n) noexcept 194s 1515: { _M_current += __n; return *this; } 194s 1515: 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: constexpr 194s 1515: __normal_iterator 194s 1515: operator+(difference_type __n) const noexcept 194s 1515: { return __normal_iterator(_M_current + __n); } 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: __normal_iterator& 194s 1515: operator-=(difference_type __n) noexcept 194s 1515: { _M_current -= __n; return *this; } 194s 1515: 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: constexpr 194s 1515: __normal_iterator 194s 1515: operator-(difference_type __n) const noexcept 194s 1515: { return __normal_iterator(_M_current - __n); } 194s 1515: 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: constexpr 194s 1515: const _Iterator& 194s 1515: base() const noexcept 194s 1515: { return _M_current; } 194s 1515: }; 194s 1515: # 1217 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, 194s 1515: const __normal_iterator<_IteratorR, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() == __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, 194s 1515: const __normal_iterator<_Iterator, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() == __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, 194s 1515: const __normal_iterator<_IteratorR, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() != __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, 194s 1515: const __normal_iterator<_Iterator, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() != __rhs.base(); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, 194s 1515: const __normal_iterator<_IteratorR, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() < __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: inline bool 194s 1515: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, 194s 1515: const __normal_iterator<_Iterator, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() < __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, 194s 1515: const __normal_iterator<_IteratorR, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() > __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, 194s 1515: const __normal_iterator<_Iterator, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() > __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, 194s 1515: const __normal_iterator<_IteratorR, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() <= __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, 194s 1515: const __normal_iterator<_Iterator, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() <= __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, 194s 1515: const __normal_iterator<_IteratorR, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() >= __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline bool 194s 1515: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, 194s 1515: const __normal_iterator<_Iterator, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() >= __rhs.base(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__, __gnu__::__always_inline__]] 194s 1515: constexpr auto 194s 1515: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, 194s 1515: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept 194s 1515: -> decltype(__lhs.base() - __rhs.base()) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return __lhs.base() - __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline typename __normal_iterator<_Iterator, _Container>::difference_type 194s 1515: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, 194s 1515: const __normal_iterator<_Iterator, _Container>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.base() - __rhs.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 194s 1515: inline __normal_iterator<_Iterator, _Container> 194s 1515: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type 194s 1515: __n, const __normal_iterator<_Iterator, _Container>& __i) 194s 1515: noexcept 194s 1515: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 1434 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: class move_iterator 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: _Iterator _M_current; 194s 1515: 194s 1515: using __traits_type = iterator_traits<_Iterator>; 194s 1515: 194s 1515: using __base_ref = typename __traits_type::reference; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: friend class move_iterator; 194s 1515: # 1473 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: public: 194s 1515: using iterator_type = _Iterator; 194s 1515: # 1485 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: typedef typename __traits_type::iterator_category iterator_category; 194s 1515: typedef typename __traits_type::value_type value_type; 194s 1515: typedef typename __traits_type::difference_type difference_type; 194s 1515: 194s 1515: typedef _Iterator pointer; 194s 1515: 194s 1515: 194s 1515: using reference 194s 1515: = __conditional_t::value, 194s 1515: typename remove_reference<__base_ref>::type&&, 194s 1515: __base_ref>; 194s 1515: 194s 1515: 194s 1515: 194s 1515: move_iterator() 194s 1515: : _M_current() { } 194s 1515: 194s 1515: explicit 194s 1515: move_iterator(iterator_type __i) 194s 1515: : _M_current(std::move(__i)) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: move_iterator(const move_iterator<_Iter>& __i) 194s 1515: : _M_current(__i._M_current) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: move_iterator& operator=(const move_iterator<_Iter>& __i) 194s 1515: { 194s 1515: _M_current = __i._M_current; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: iterator_type 194s 1515: base() const 194s 1515: { return _M_current; } 194s 1515: # 1543 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: operator*() const 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return static_cast(*_M_current); } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: pointer 194s 1515: operator->() const 194s 1515: { return _M_current; } 194s 1515: 194s 1515: move_iterator& 194s 1515: operator++() 194s 1515: { 194s 1515: ++_M_current; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: move_iterator 194s 1515: operator++(int) 194s 1515: { 194s 1515: move_iterator __tmp = *this; 194s 1515: ++_M_current; 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: move_iterator& 194s 1515: operator--() 194s 1515: { 194s 1515: --_M_current; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: move_iterator 194s 1515: operator--(int) 194s 1515: { 194s 1515: move_iterator __tmp = *this; 194s 1515: --_M_current; 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: move_iterator 194s 1515: operator+(difference_type __n) const 194s 1515: { return move_iterator(_M_current + __n); } 194s 1515: 194s 1515: move_iterator& 194s 1515: operator+=(difference_type __n) 194s 1515: { 194s 1515: _M_current += __n; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: move_iterator 194s 1515: operator-(difference_type __n) const 194s 1515: { return move_iterator(_M_current - __n); } 194s 1515: 194s 1515: move_iterator& 194s 1515: operator-=(difference_type __n) 194s 1515: { 194s 1515: _M_current -= __n; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: operator[](difference_type __n) const 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return std::move(_M_current[__n]); } 194s 1515: # 1657 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const move_iterator<_IteratorL>& __x, 194s 1515: const move_iterator<_IteratorR>& __y) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return __x.base() == __y.base(); } 194s 1515: # 1678 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator!=(const move_iterator<_IteratorL>& __x, 194s 1515: const move_iterator<_IteratorR>& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<(const move_iterator<_IteratorL>& __x, 194s 1515: const move_iterator<_IteratorR>& __y) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return __x.base() < __y.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<=(const move_iterator<_IteratorL>& __x, 194s 1515: const move_iterator<_IteratorR>& __y) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return !(__y < __x); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>(const move_iterator<_IteratorL>& __x, 194s 1515: const move_iterator<_IteratorR>& __y) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return __y < __x; } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>=(const move_iterator<_IteratorL>& __x, 194s 1515: const move_iterator<_IteratorR>& __y) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return !(__x < __y); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const move_iterator<_Iterator>& __x, 194s 1515: const move_iterator<_Iterator>& __y) 194s 1515: 194s 1515: { return __x.base() == __y.base(); } 194s 1515: # 1745 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator!=(const move_iterator<_Iterator>& __x, 194s 1515: const move_iterator<_Iterator>& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<(const move_iterator<_Iterator>& __x, 194s 1515: const move_iterator<_Iterator>& __y) 194s 1515: { return __x.base() < __y.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<=(const move_iterator<_Iterator>& __x, 194s 1515: const move_iterator<_Iterator>& __y) 194s 1515: { return !(__y < __x); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>(const move_iterator<_Iterator>& __x, 194s 1515: const move_iterator<_Iterator>& __y) 194s 1515: { return __y < __x; } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>=(const move_iterator<_Iterator>& __x, 194s 1515: const move_iterator<_Iterator>& __y) 194s 1515: { return !(__x < __y); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline auto 194s 1515: operator-(const move_iterator<_IteratorL>& __x, 194s 1515: const move_iterator<_IteratorR>& __y) 194s 1515: -> decltype(__x.base() - __y.base()) 194s 1515: { return __x.base() - __y.base(); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline move_iterator<_Iterator> 194s 1515: operator+(typename move_iterator<_Iterator>::difference_type __n, 194s 1515: const move_iterator<_Iterator>& __x) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return __x + __n; } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline move_iterator<_Iterator> 194s 1515: make_move_iterator(_Iterator __i) 194s 1515: { return move_iterator<_Iterator>(std::move(__i)); } 194s 1515: 194s 1515: template::value_type>::value, 194s 1515: _Iterator, move_iterator<_Iterator>>> 194s 1515: [[__nodiscard__]] 194s 1515: constexpr _ReturnType 194s 1515: __make_move_if_noexcept_iterator(_Iterator __i) 194s 1515: { return _ReturnType(__i); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template::value, 194s 1515: const _Tp*, move_iterator<_Tp*>>> 194s 1515: [[__nodiscard__]] 194s 1515: constexpr _ReturnType 194s 1515: __make_move_if_noexcept_iterator(_Tp* __i) 194s 1515: { return _ReturnType(__i); } 194s 1515: 194s 1515: template 194s 1515: struct __is_move_iterator > 194s 1515: { 194s 1515: enum { __value = 1 }; 194s 1515: typedef __true_type __type; 194s 1515: }; 194s 1515: # 2980 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: 194s 1515: } 194s 1515: 194s 1515: namespace __gnu_debug 194s 1515: { 194s 1515: template 194s 1515: class _Safe_iterator; 194s 1515: } 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _Iterator 194s 1515: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) 194s 1515: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 194s 1515: { return __it.base(); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _Iterator 194s 1515: __niter_base(_Iterator __it) 194s 1515: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 194s 1515: { return __it; } 194s 1515: # 3027 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: template 194s 1515: 194s 1515: decltype(std::__niter_base(std::declval<_Ite>())) 194s 1515: __niter_base(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, 194s 1515: std::random_access_iterator_tag>&) 194s 1515: noexcept(std::is_nothrow_copy_constructible<_Ite>::value); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline auto 194s 1515: __niter_base(reverse_iterator<_Iterator> __it) 194s 1515: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) 194s 1515: { return __make_reverse_iterator(__niter_base(__it.base())); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline auto 194s 1515: __niter_base(move_iterator<_Iterator> __it) 194s 1515: -> decltype(make_move_iterator(__niter_base(__it.base()))) 194s 1515: { return make_move_iterator(__niter_base(__it.base())); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline auto 194s 1515: __miter_base(reverse_iterator<_Iterator> __it) 194s 1515: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) 194s 1515: { return __make_reverse_iterator(__miter_base(__it.base())); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline auto 194s 1515: __miter_base(move_iterator<_Iterator> __it) 194s 1515: -> decltype(__miter_base(__it.base())) 194s 1515: { return __miter_base(__it.base()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: 194s 1515: inline _From 194s 1515: __niter_wrap(_From __from, _To __res) 194s 1515: { return __from + (std::__niter_base(__res) - std::__niter_base(__from)); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _Iterator 194s 1515: __niter_wrap(const _Iterator&, _Iterator __res) 194s 1515: { return __res; } 194s 1515: # 3113 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 51 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_function.h" 1 3 4 194s 1515: # 63 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 116 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: template 194s 1515: struct unary_function 194s 1515: { 194s 1515: 194s 1515: typedef _Arg argument_type; 194s 1515: 194s 1515: 194s 1515: typedef _Result result_type; 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct binary_function 194s 1515: { 194s 1515: 194s 1515: typedef _Arg1 first_argument_type; 194s 1515: 194s 1515: 194s 1515: typedef _Arg2 second_argument_type; 194s 1515: 194s 1515: 194s 1515: typedef _Result result_type; 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: # 179 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct plus : public binary_function<_Tp, _Tp, _Tp> 194s 1515: { 194s 1515: 194s 1515: 194s 1515: _Tp 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x + __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct minus : public binary_function<_Tp, _Tp, _Tp> 194s 1515: { 194s 1515: 194s 1515: _Tp 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x - __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct multiplies : public binary_function<_Tp, _Tp, _Tp> 194s 1515: { 194s 1515: 194s 1515: _Tp 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x * __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct divides : public binary_function<_Tp, _Tp, _Tp> 194s 1515: { 194s 1515: 194s 1515: _Tp 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x / __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct modulus : public binary_function<_Tp, _Tp, _Tp> 194s 1515: { 194s 1515: 194s 1515: _Tp 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x % __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct negate : public unary_function<_Tp, _Tp> 194s 1515: { 194s 1515: 194s 1515: _Tp 194s 1515: operator()(const _Tp& __x) const 194s 1515: { return -__x; } 194s 1515: }; 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 365 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct equal_to : public binary_function<_Tp, _Tp, bool> 194s 1515: { 194s 1515: 194s 1515: bool 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x == __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct not_equal_to : public binary_function<_Tp, _Tp, bool> 194s 1515: { 194s 1515: 194s 1515: bool 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x != __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct greater : public binary_function<_Tp, _Tp, bool> 194s 1515: { 194s 1515: 194s 1515: bool 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x > __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct less : public binary_function<_Tp, _Tp, bool> 194s 1515: { 194s 1515: 194s 1515: bool 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x < __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct greater_equal : public binary_function<_Tp, _Tp, bool> 194s 1515: { 194s 1515: 194s 1515: bool 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x >= __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct less_equal : public binary_function<_Tp, _Tp, bool> 194s 1515: { 194s 1515: 194s 1515: bool 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x <= __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 194s 1515: { 194s 1515: bool 194s 1515: operator()(_Tp* __x, _Tp* __y) const noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return (unsigned long)__x > (unsigned long)__y; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 194s 1515: { 194s 1515: bool 194s 1515: operator()(_Tp* __x, _Tp* __y) const noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return (unsigned long)__x < (unsigned long)__y; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 194s 1515: { 194s 1515: bool 194s 1515: operator()(_Tp* __x, _Tp* __y) const noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return (unsigned long)__x >= (unsigned long)__y; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 194s 1515: { 194s 1515: bool 194s 1515: operator()(_Tp* __x, _Tp* __y) const noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return (unsigned long)__x <= (unsigned long)__y; 194s 1515: } 194s 1515: }; 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 788 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct logical_and : public binary_function<_Tp, _Tp, bool> 194s 1515: { 194s 1515: 194s 1515: bool 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x && __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct logical_or : public binary_function<_Tp, _Tp, bool> 194s 1515: { 194s 1515: 194s 1515: bool 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x || __y; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct logical_not : public unary_function<_Tp, bool> 194s 1515: { 194s 1515: 194s 1515: bool 194s 1515: operator()(const _Tp& __x) const 194s 1515: { return !__x; } 194s 1515: }; 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 884 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct bit_and : public binary_function<_Tp, _Tp, _Tp> 194s 1515: { 194s 1515: 194s 1515: _Tp 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x & __y; } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct bit_or : public binary_function<_Tp, _Tp, _Tp> 194s 1515: { 194s 1515: 194s 1515: _Tp 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x | __y; } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> 194s 1515: { 194s 1515: 194s 1515: _Tp 194s 1515: operator()(const _Tp& __x, const _Tp& __y) const 194s 1515: { return __x ^ __y; } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct bit_not : public unary_function<_Tp, _Tp> 194s 1515: { 194s 1515: 194s 1515: _Tp 194s 1515: operator()(const _Tp& __x) const 194s 1515: { return ~__x; } 194s 1515: }; 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 984 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: # 1020 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: template 194s 1515: class unary_negate 194s 1515: : public unary_function 194s 1515: { 194s 1515: protected: 194s 1515: _Predicate _M_pred; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: explicit 194s 1515: unary_negate(const _Predicate& __x) : _M_pred(__x) { } 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: operator()(const typename _Predicate::argument_type& __x) const 194s 1515: { return !_M_pred(__x); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: inline unary_negate<_Predicate> 194s 1515: not1(const _Predicate& __pred) 194s 1515: { return unary_negate<_Predicate>(__pred); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class binary_negate 194s 1515: : public binary_function 194s 1515: { 194s 1515: protected: 194s 1515: _Predicate _M_pred; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: explicit 194s 1515: binary_negate(const _Predicate& __x) : _M_pred(__x) { } 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: operator()(const typename _Predicate::first_argument_type& __x, 194s 1515: const typename _Predicate::second_argument_type& __y) const 194s 1515: { return !_M_pred(__x, __y); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: inline binary_negate<_Predicate> 194s 1515: not2(const _Predicate& __pred) 194s 1515: { return binary_negate<_Predicate>(__pred); } 194s 1515: # 1101 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: template 194s 1515: class pointer_to_unary_function : public unary_function<_Arg, _Result> 194s 1515: { 194s 1515: protected: 194s 1515: _Result (*_M_ptr)(_Arg); 194s 1515: 194s 1515: public: 194s 1515: pointer_to_unary_function() { } 194s 1515: 194s 1515: explicit 194s 1515: pointer_to_unary_function(_Result (*__x)(_Arg)) 194s 1515: : _M_ptr(__x) { } 194s 1515: 194s 1515: _Result 194s 1515: operator()(_Arg __x) const 194s 1515: { return _M_ptr(__x); } 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) 194s 1515: inline pointer_to_unary_function<_Arg, _Result> 194s 1515: ptr_fun(_Result (*__x)(_Arg)) 194s 1515: { return pointer_to_unary_function<_Arg, _Result>(__x); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class pointer_to_binary_function 194s 1515: : public binary_function<_Arg1, _Arg2, _Result> 194s 1515: { 194s 1515: protected: 194s 1515: _Result (*_M_ptr)(_Arg1, _Arg2); 194s 1515: 194s 1515: public: 194s 1515: pointer_to_binary_function() { } 194s 1515: 194s 1515: explicit 194s 1515: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 194s 1515: : _M_ptr(__x) { } 194s 1515: 194s 1515: _Result 194s 1515: operator()(_Arg1 __x, _Arg2 __y) const 194s 1515: { return _M_ptr(__x, __y); } 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) 194s 1515: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> 194s 1515: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) 194s 1515: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Identity 194s 1515: : public unary_function<_Tp, _Tp> 194s 1515: { 194s 1515: _Tp& 194s 1515: operator()(_Tp& __x) const 194s 1515: { return __x; } 194s 1515: 194s 1515: const _Tp& 194s 1515: operator()(const _Tp& __x) const 194s 1515: { return __x; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template struct _Identity : _Identity<_Tp> { }; 194s 1515: 194s 1515: template 194s 1515: struct _Select1st 194s 1515: : public unary_function<_Pair, typename _Pair::first_type> 194s 1515: { 194s 1515: typename _Pair::first_type& 194s 1515: operator()(_Pair& __x) const 194s 1515: { return __x.first; } 194s 1515: 194s 1515: const typename _Pair::first_type& 194s 1515: operator()(const _Pair& __x) const 194s 1515: { return __x.first; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: typename _Pair2::first_type& 194s 1515: operator()(_Pair2& __x) const 194s 1515: { return __x.first; } 194s 1515: 194s 1515: template 194s 1515: const typename _Pair2::first_type& 194s 1515: operator()(const _Pair2& __x) const 194s 1515: { return __x.first; } 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Select2nd 194s 1515: : public unary_function<_Pair, typename _Pair::second_type> 194s 1515: { 194s 1515: typename _Pair::second_type& 194s 1515: operator()(_Pair& __x) const 194s 1515: { return __x.second; } 194s 1515: 194s 1515: const typename _Pair::second_type& 194s 1515: operator()(const _Pair& __x) const 194s 1515: { return __x.second; } 194s 1515: }; 194s 1515: # 1228 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: template 194s 1515: class mem_fun_t : public unary_function<_Tp*, _Ret> 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: mem_fun_t(_Ret (_Tp::*__pf)()) 194s 1515: : _M_f(__pf) { } 194s 1515: 194s 1515: _Ret 194s 1515: operator()(_Tp* __p) const 194s 1515: { return (__p->*_M_f)(); } 194s 1515: 194s 1515: private: 194s 1515: _Ret (_Tp::*_M_f)(); 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class const_mem_fun_t : public unary_function 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: const_mem_fun_t(_Ret (_Tp::*__pf)() const) 194s 1515: : _M_f(__pf) { } 194s 1515: 194s 1515: _Ret 194s 1515: operator()(const _Tp* __p) const 194s 1515: { return (__p->*_M_f)(); } 194s 1515: 194s 1515: private: 194s 1515: _Ret (_Tp::*_M_f)() const; 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class mem_fun_ref_t : public unary_function<_Tp, _Ret> 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: mem_fun_ref_t(_Ret (_Tp::*__pf)()) 194s 1515: : _M_f(__pf) { } 194s 1515: 194s 1515: _Ret 194s 1515: operator()(_Tp& __r) const 194s 1515: { return (__r.*_M_f)(); } 194s 1515: 194s 1515: private: 194s 1515: _Ret (_Tp::*_M_f)(); 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) 194s 1515: : _M_f(__pf) { } 194s 1515: 194s 1515: _Ret 194s 1515: operator()(const _Tp& __r) const 194s 1515: { return (__r.*_M_f)(); } 194s 1515: 194s 1515: private: 194s 1515: _Ret (_Tp::*_M_f)() const; 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) 194s 1515: : _M_f(__pf) { } 194s 1515: 194s 1515: _Ret 194s 1515: operator()(_Tp* __p, _Arg __x) const 194s 1515: { return (__p->*_M_f)(__x); } 194s 1515: 194s 1515: private: 194s 1515: _Ret (_Tp::*_M_f)(_Arg); 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class const_mem_fun1_t : public binary_function 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) 194s 1515: : _M_f(__pf) { } 194s 1515: 194s 1515: _Ret 194s 1515: operator()(const _Tp* __p, _Arg __x) const 194s 1515: { return (__p->*_M_f)(__x); } 194s 1515: 194s 1515: private: 194s 1515: _Ret (_Tp::*_M_f)(_Arg) const; 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) 194s 1515: : _M_f(__pf) { } 194s 1515: 194s 1515: _Ret 194s 1515: operator()(_Tp& __r, _Arg __x) const 194s 1515: { return (__r.*_M_f)(__x); } 194s 1515: 194s 1515: private: 194s 1515: _Ret (_Tp::*_M_f)(_Arg); 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) 194s 1515: : _M_f(__pf) { } 194s 1515: 194s 1515: _Ret 194s 1515: operator()(const _Tp& __r, _Arg __x) const 194s 1515: { return (__r.*_M_f)(__x); } 194s 1515: 194s 1515: private: 194s 1515: _Ret (_Tp::*_M_f)(_Arg) const; 194s 1515: } __attribute__ ((__deprecated__)); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 194s 1515: inline mem_fun_t<_Ret, _Tp> 194s 1515: mem_fun(_Ret (_Tp::*__f)()) 194s 1515: { return mem_fun_t<_Ret, _Tp>(__f); } 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 194s 1515: inline const_mem_fun_t<_Ret, _Tp> 194s 1515: mem_fun(_Ret (_Tp::*__f)() const) 194s 1515: { return const_mem_fun_t<_Ret, _Tp>(__f); } 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 194s 1515: inline mem_fun_ref_t<_Ret, _Tp> 194s 1515: mem_fun_ref(_Ret (_Tp::*__f)()) 194s 1515: { return mem_fun_ref_t<_Ret, _Tp>(__f); } 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 194s 1515: inline const_mem_fun_ref_t<_Ret, _Tp> 194s 1515: mem_fun_ref(_Ret (_Tp::*__f)() const) 194s 1515: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 194s 1515: inline mem_fun1_t<_Ret, _Tp, _Arg> 194s 1515: mem_fun(_Ret (_Tp::*__f)(_Arg)) 194s 1515: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 194s 1515: inline const_mem_fun1_t<_Ret, _Tp, _Arg> 194s 1515: mem_fun(_Ret (_Tp::*__f)(_Arg) const) 194s 1515: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 194s 1515: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> 194s 1515: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) 194s 1515: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 194s 1515: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> 194s 1515: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) 194s 1515: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 1437 "/usr/include/c++/15/bits/stl_function.h" 3 4 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/backward/binders.h" 1 3 4 194s 1515: # 60 "/usr/include/c++/15/backward/binders.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 107 "/usr/include/c++/15/backward/binders.h" 3 4 194s 1515: template 194s 1515: class binder1st 194s 1515: : public unary_function 194s 1515: { 194s 1515: protected: 194s 1515: _Operation op; 194s 1515: typename _Operation::first_argument_type value; 194s 1515: 194s 1515: public: 194s 1515: binder1st(const _Operation& __x, 194s 1515: const typename _Operation::first_argument_type& __y) 194s 1515: : op(__x), value(__y) { } 194s 1515: 194s 1515: typename _Operation::result_type 194s 1515: operator()(const typename _Operation::second_argument_type& __x) const 194s 1515: { return op(value, __x); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: typename _Operation::result_type 194s 1515: operator()(typename _Operation::second_argument_type& __x) const 194s 1515: { return op(value, __x); } 194s 1515: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) 194s 1515: inline binder1st<_Operation> 194s 1515: bind1st(const _Operation& __fn, const _Tp& __x) 194s 1515: { 194s 1515: typedef typename _Operation::first_argument_type _Arg1_type; 194s 1515: return binder1st<_Operation>(__fn, _Arg1_type(__x)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class binder2nd 194s 1515: : public unary_function 194s 1515: { 194s 1515: protected: 194s 1515: _Operation op; 194s 1515: typename _Operation::second_argument_type value; 194s 1515: 194s 1515: public: 194s 1515: binder2nd(const _Operation& __x, 194s 1515: const typename _Operation::second_argument_type& __y) 194s 1515: : op(__x), value(__y) { } 194s 1515: 194s 1515: typename _Operation::result_type 194s 1515: operator()(const typename _Operation::first_argument_type& __x) const 194s 1515: { return op(__x, value); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: typename _Operation::result_type 194s 1515: operator()(typename _Operation::first_argument_type& __x) const 194s 1515: { return op(__x, value); } 194s 1515: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) 194s 1515: inline binder2nd<_Operation> 194s 1515: bind2nd(const _Operation& __fn, const _Tp& __x) 194s 1515: { 194s 1515: typedef typename _Operation::second_argument_type _Arg2_type; 194s 1515: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 1442 "/usr/include/c++/15/bits/stl_function.h" 2 3 4 194s 1515: # 52 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/ext/numeric_traits.h" 1 3 4 194s 1515: # 39 "/usr/include/c++/15/ext/numeric_traits.h" 3 4 194s 1515: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 52 "/usr/include/c++/15/ext/numeric_traits.h" 3 4 194s 1515: template 194s 1515: struct __is_integer_nonstrict 194s 1515: : public std::__is_integer<_Tp> 194s 1515: { 194s 1515: using std::__is_integer<_Tp>::__value; 194s 1515: 194s 1515: 194s 1515: enum { __width = __value ? sizeof(_Tp) * 8 : 0 }; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __numeric_traits_integer 194s 1515: { 194s 1515: 194s 1515: static_assert(__is_integer_nonstrict<_Value>::__value, 194s 1515: "invalid specialization"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const bool __is_signed = (_Value)(-1) < 0; 194s 1515: static const int __digits 194s 1515: = __is_integer_nonstrict<_Value>::__width - __is_signed; 194s 1515: 194s 1515: 194s 1515: static const _Value __max = __is_signed 194s 1515: ? (((((_Value)1 << (__digits - 1)) - 1) << 1) + 1) 194s 1515: : ~(_Value)0; 194s 1515: static const _Value __min = __is_signed ? -__max - 1 : (_Value)0; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: const _Value __numeric_traits_integer<_Value>::__min; 194s 1515: 194s 1515: template 194s 1515: const _Value __numeric_traits_integer<_Value>::__max; 194s 1515: 194s 1515: template 194s 1515: const bool __numeric_traits_integer<_Value>::__is_signed; 194s 1515: 194s 1515: template 194s 1515: const int __numeric_traits_integer<_Value>::__digits; 194s 1515: # 139 "/usr/include/c++/15/ext/numeric_traits.h" 3 4 194s 1515: template 194s 1515: using __int_traits = __numeric_traits_integer<_Tp>; 194s 1515: # 159 "/usr/include/c++/15/ext/numeric_traits.h" 3 4 194s 1515: template 194s 1515: struct __numeric_traits_floating 194s 1515: { 194s 1515: 194s 1515: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 53) * 643L / 2136); 194s 1515: 194s 1515: 194s 1515: static const bool __is_signed = true; 194s 1515: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 15); 194s 1515: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 308); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: const int __numeric_traits_floating<_Value>::__max_digits10; 194s 1515: 194s 1515: template 194s 1515: const bool __numeric_traits_floating<_Value>::__is_signed; 194s 1515: 194s 1515: template 194s 1515: const int __numeric_traits_floating<_Value>::__digits10; 194s 1515: 194s 1515: template 194s 1515: const int __numeric_traits_floating<_Value>::__max_exponent10; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __numeric_traits 194s 1515: : public __numeric_traits_integer<_Value> 194s 1515: { }; 194s 1515: 194s 1515: template<> 194s 1515: struct __numeric_traits 194s 1515: : public __numeric_traits_floating 194s 1515: { }; 194s 1515: 194s 1515: template<> 194s 1515: struct __numeric_traits 194s 1515: : public __numeric_traits_floating 194s 1515: { }; 194s 1515: 194s 1515: template<> 194s 1515: struct __numeric_traits 194s 1515: : public __numeric_traits_floating 194s 1515: { }; 194s 1515: # 240 "/usr/include/c++/15/ext/numeric_traits.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 53 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_algobase.h" 1 3 4 194s 1515: # 69 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/debug/debug.h" 1 3 4 194s 1515: # 48 "/usr/include/c++/15/debug/debug.h" 3 4 194s 1515: namespace std 194s 1515: { 194s 1515: namespace __debug { } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace __gnu_debug 194s 1515: { 194s 1515: using namespace std::__debug; 194s 1515: 194s 1515: template 194s 1515: struct _Safe_iterator; 194s 1515: } 194s 1515: # 70 "/usr/include/c++/15/bits/stl_algobase.h" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/predefined_ops.h" 1 3 4 194s 1515: # 35 "/usr/include/c++/15/bits/predefined_ops.h" 3 4 194s 1515: namespace __gnu_cxx 194s 1515: { 194s 1515: namespace __ops 194s 1515: { 194s 1515: struct _Iter_less_iter 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator1 __it1, _Iterator2 __it2) const 194s 1515: { return *__it1 < *__it2; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: inline _Iter_less_iter 194s 1515: __iter_less_iter() 194s 1515: { return _Iter_less_iter(); } 194s 1515: 194s 1515: struct _Iter_less_val 194s 1515: { 194s 1515: 194s 1515: constexpr _Iter_less_val() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Iter_less_val(_Iter_less_iter) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator __it, _Value& __val) const 194s 1515: { return *__it < __val; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: inline _Iter_less_val 194s 1515: __iter_less_val() 194s 1515: { return _Iter_less_val(); } 194s 1515: 194s 1515: 194s 1515: inline _Iter_less_val 194s 1515: __iter_comp_val(_Iter_less_iter) 194s 1515: { return _Iter_less_val(); } 194s 1515: 194s 1515: struct _Val_less_iter 194s 1515: { 194s 1515: 194s 1515: constexpr _Val_less_iter() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Val_less_iter(_Iter_less_iter) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Value& __val, _Iterator __it) const 194s 1515: { return __val < *__it; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: inline _Val_less_iter 194s 1515: __val_less_iter() 194s 1515: { return _Val_less_iter(); } 194s 1515: 194s 1515: 194s 1515: inline _Val_less_iter 194s 1515: __val_comp_iter(_Iter_less_iter) 194s 1515: { return _Val_less_iter(); } 194s 1515: 194s 1515: struct _Iter_equal_to_iter 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator1 __it1, _Iterator2 __it2) const 194s 1515: { return *__it1 == *__it2; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: inline _Iter_equal_to_iter 194s 1515: __iter_equal_to_iter() 194s 1515: { return _Iter_equal_to_iter(); } 194s 1515: 194s 1515: struct _Iter_equal_to_val 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator __it, _Value& __val) const 194s 1515: { return *__it == __val; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: inline _Iter_equal_to_val 194s 1515: __iter_equal_to_val() 194s 1515: { return _Iter_equal_to_val(); } 194s 1515: 194s 1515: 194s 1515: inline _Iter_equal_to_val 194s 1515: __iter_comp_val(_Iter_equal_to_iter) 194s 1515: { return _Iter_equal_to_val(); } 194s 1515: 194s 1515: template 194s 1515: struct _Iter_comp_iter 194s 1515: { 194s 1515: _Compare _M_comp; 194s 1515: 194s 1515: explicit 194s 1515: _Iter_comp_iter(_Compare __comp) 194s 1515: : _M_comp(std::move(__comp)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator1 __it1, _Iterator2 __it2) 194s 1515: { return bool(_M_comp(*__it1, *__it2)); } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Iter_comp_iter<_Compare> 194s 1515: __iter_comp_iter(_Compare __comp) 194s 1515: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } 194s 1515: 194s 1515: template 194s 1515: struct _Iter_comp_val 194s 1515: { 194s 1515: _Compare _M_comp; 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Iter_comp_val(_Compare __comp) 194s 1515: : _M_comp(std::move(__comp)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) 194s 1515: : _M_comp(__comp._M_comp) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) 194s 1515: : _M_comp(std::move(__comp._M_comp)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator __it, _Value& __val) 194s 1515: { return bool(_M_comp(*__it, __val)); } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Iter_comp_val<_Compare> 194s 1515: __iter_comp_val(_Compare __comp) 194s 1515: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Iter_comp_val<_Compare> 194s 1515: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) 194s 1515: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 194s 1515: 194s 1515: template 194s 1515: struct _Val_comp_iter 194s 1515: { 194s 1515: _Compare _M_comp; 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Val_comp_iter(_Compare __comp) 194s 1515: : _M_comp(std::move(__comp)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) 194s 1515: : _M_comp(__comp._M_comp) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) 194s 1515: : _M_comp(std::move(__comp._M_comp)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Value& __val, _Iterator __it) 194s 1515: { return bool(_M_comp(__val, *__it)); } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Val_comp_iter<_Compare> 194s 1515: __val_comp_iter(_Compare __comp) 194s 1515: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Val_comp_iter<_Compare> 194s 1515: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) 194s 1515: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 194s 1515: 194s 1515: template 194s 1515: struct _Iter_equals_val 194s 1515: { 194s 1515: _Value& _M_value; 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Iter_equals_val(_Value& __value) 194s 1515: : _M_value(__value) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator __it) 194s 1515: { return *__it == _M_value; } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Iter_equals_val<_Value> 194s 1515: __iter_equals_val(_Value& __val) 194s 1515: { return _Iter_equals_val<_Value>(__val); } 194s 1515: 194s 1515: template 194s 1515: struct _Iter_equals_iter 194s 1515: { 194s 1515: _Iterator1 _M_it1; 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Iter_equals_iter(_Iterator1 __it1) 194s 1515: : _M_it1(__it1) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator2 __it2) 194s 1515: { return *__it2 == *_M_it1; } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Iter_equals_iter<_Iterator> 194s 1515: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) 194s 1515: { return _Iter_equals_iter<_Iterator>(__it); } 194s 1515: 194s 1515: template 194s 1515: struct _Iter_pred 194s 1515: { 194s 1515: _Predicate _M_pred; 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Iter_pred(_Predicate __pred) 194s 1515: : _M_pred(std::move(__pred)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator __it) 194s 1515: { return bool(_M_pred(*__it)); } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Iter_pred<_Predicate> 194s 1515: __pred_iter(_Predicate __pred) 194s 1515: { return _Iter_pred<_Predicate>(std::move(__pred)); } 194s 1515: 194s 1515: template 194s 1515: struct _Iter_comp_to_val 194s 1515: { 194s 1515: _Compare _M_comp; 194s 1515: _Value& _M_value; 194s 1515: 194s 1515: 194s 1515: _Iter_comp_to_val(_Compare __comp, _Value& __value) 194s 1515: : _M_comp(std::move(__comp)), _M_value(__value) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator __it) 194s 1515: { return bool(_M_comp(*__it, _M_value)); } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: _Iter_comp_to_val<_Compare, _Value> 194s 1515: 194s 1515: __iter_comp_val(_Compare __comp, _Value &__val) 194s 1515: { 194s 1515: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: struct _Iter_comp_to_iter 194s 1515: { 194s 1515: _Compare _M_comp; 194s 1515: _Iterator1 _M_it1; 194s 1515: 194s 1515: 194s 1515: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) 194s 1515: : _M_comp(std::move(__comp)), _M_it1(__it1) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator2 __it2) 194s 1515: { return bool(_M_comp(*__it2, *_M_it1)); } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Iter_comp_to_iter<_Compare, _Iterator> 194s 1515: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) 194s 1515: { 194s 1515: return _Iter_comp_to_iter<_Compare, _Iterator>( 194s 1515: std::move(__comp._M_comp), __it); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: struct _Iter_negate 194s 1515: { 194s 1515: _Predicate _M_pred; 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: _Iter_negate(_Predicate __pred) 194s 1515: : _M_pred(std::move(__pred)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: operator()(_Iterator __it) 194s 1515: { return !bool(_M_pred(*__it)); } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Iter_negate<_Predicate> 194s 1515: __negate(_Iter_pred<_Predicate> __pred) 194s 1515: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } 194s 1515: 194s 1515: } 194s 1515: } 194s 1515: # 72 "/usr/include/c++/15/bits/stl_algobase.h" 2 3 4 194s 1515: # 83 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline int 194s 1515: __memcmp(const _Tp* __first1, const _Up* __first2, size_t __num) 194s 1515: { 194s 1515: 194s 1515: static_assert(sizeof(_Tp) == sizeof(_Up), "can be compared with memcmp"); 194s 1515: # 109 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: return __builtin_memcmp(__first1, __first2, sizeof(_Tp) * __num); 194s 1515: } 194s 1515: # 153 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 186 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: swap(*__a, *__b); 194s 1515: 194s 1515: } 194s 1515: # 202 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator2 194s 1515: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 194s 1515: _ForwardIterator2 __first2) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: for (; __first1 != __last1; ++__first1, (void)++__first2) 194s 1515: std::iter_swap(__first1, __first2); 194s 1515: return __first2; 194s 1515: } 194s 1515: # 231 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline const _Tp& 194s 1515: min(const _Tp& __a, const _Tp& __b) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__b < __a) 194s 1515: return __b; 194s 1515: return __a; 194s 1515: } 194s 1515: # 255 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline const _Tp& 194s 1515: max(const _Tp& __a, const _Tp& __b) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__a < __b) 194s 1515: return __b; 194s 1515: return __a; 194s 1515: } 194s 1515: # 279 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline const _Tp& 194s 1515: min(const _Tp& __a, const _Tp& __b, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: if (__comp(__b, __a)) 194s 1515: return __b; 194s 1515: return __a; 194s 1515: } 194s 1515: # 301 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline const _Tp& 194s 1515: max(const _Tp& __a, const _Tp& __b, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: if (__comp(__a, __b)) 194s 1515: return __b; 194s 1515: return __a; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Deque_iterator; 194s 1515: 194s 1515: struct _Bit_iterator; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct char_traits; 194s 1515: 194s 1515: template 194s 1515: class istreambuf_iterator; 194s 1515: 194s 1515: template 194s 1515: class ostreambuf_iterator; 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 194s 1515: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 194s 1515: __copy_move_a2(_CharT*, _CharT*, 194s 1515: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 194s 1515: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 194s 1515: __copy_move_a2(const _CharT*, const _CharT*, 194s 1515: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 194s 1515: _CharT*>::__type 194s 1515: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, 194s 1515: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if< 194s 1515: __is_char<_CharT>::__value, 194s 1515: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type 194s 1515: __copy_move_a2( 194s 1515: istreambuf_iterator<_CharT, char_traits<_CharT> >, 194s 1515: istreambuf_iterator<_CharT, char_traits<_CharT> >, 194s 1515: std::_Deque_iterator<_CharT, _CharT&, _CharT*>); 194s 1515: # 395 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: inline void 194s 1515: __assign_one(_OutIter& __out, _InIter& __in) 194s 1515: { 194s 1515: 194s 1515: if constexpr (_IsMove) 194s 1515: *__out = std::move(*__in); 194s 1515: else 194s 1515: 194s 1515: *__out = *__in; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _OutIter 194s 1515: __copy_move_a2(_InIter __first, _Sent __last, _OutIter __result) 194s 1515: { 194s 1515: typedef __decltype(*__first) _InRef; 194s 1515: typedef __decltype(*__result) _OutRef; 194s 1515: if constexpr (!__is_trivially_assignable(_OutRef, _InRef)) 194s 1515: { } 194s 1515: else if (std::__is_constant_evaluated()) 194s 1515: { } 194s 1515: else if constexpr (__memcpyable<_OutIter, _InIter>::__value) 194s 1515: { 194s 1515: ptrdiff_t __n = std::distance(__first, __last); 194s 1515: if (__builtin_expect(__n > 1, true)) 194s 1515: { 194s 1515: __builtin_memmove(__result, 194s 1515: __first, 194s 1515: __n * sizeof(*__first)); 194s 1515: __result += __n; 194s 1515: } 194s 1515: else if (__n == 1) 194s 1515: { 194s 1515: std::__assign_one<_IsMove>(__result, __first); 194s 1515: ++__result; 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: # 461 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: for (; __first != __last; ++__result, (void)++__first) 194s 1515: std::__assign_one<_IsMove>(__result, __first); 194s 1515: return __result; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: template 194s 1515: _OI 194s 1515: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 194s 1515: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 194s 1515: _OI); 194s 1515: 194s 1515: template 194s 1515: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 194s 1515: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr>, 194s 1515: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 194s 1515: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if< 194s 1515: __is_random_access_iter<_II>::__value, 194s 1515: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 194s 1515: __copy_move_a1(_II, _II, std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _OI 194s 1515: __copy_move_a1(_II __first, _II __last, _OI __result) 194s 1515: { return std::__copy_move_a2<_IsMove>(__first, __last, __result); } 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _OI 194s 1515: __copy_move_a(_II __first, _II __last, _OI __result) 194s 1515: { 194s 1515: return std::__niter_wrap(__result, 194s 1515: std::__copy_move_a1<_IsMove>(std::__niter_base(__first), 194s 1515: std::__niter_base(__last), 194s 1515: std::__niter_base(__result))); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OI 194s 1515: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 194s 1515: _OI); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 194s 1515: __copy_move_a(_II, _II, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 194s 1515: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: __copy_n_a(_InputIterator __first, _Size __n, _OutputIterator __result, 194s 1515: bool) 194s 1515: { 194s 1515: typedef __decltype(*__first) _InRef; 194s 1515: typedef __decltype(*__result) _OutRef; 194s 1515: if constexpr (!__is_trivially_assignable(_OutRef, _InRef)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: else if constexpr (__memcpyable<_OutputIterator, 194s 1515: _InputIterator>::__value) 194s 1515: { 194s 1515: if (__builtin_expect(__n > 1, true)) 194s 1515: { 194s 1515: __builtin_memmove(__result, 194s 1515: __first, 194s 1515: __n * sizeof(*__first)); 194s 1515: __result += __n; 194s 1515: } 194s 1515: else if (__n == 1) 194s 1515: *__result++ = *__first; 194s 1515: return __result; 194s 1515: } 194s 1515: # 581 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: if (__n > 0) 194s 1515: { 194s 1515: while (true) 194s 1515: { 194s 1515: *__result = *__first; 194s 1515: ++__result; 194s 1515: if (--__n > 0) 194s 1515: ++__first; 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if< 194s 1515: __is_char<_CharT>::__value, _CharT*>::__type 194s 1515: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, 194s 1515: _Size, _CharT*, bool); 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if< 194s 1515: __is_char<_CharT>::__value, 194s 1515: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type 194s 1515: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, _Size, 194s 1515: std::_Deque_iterator<_CharT, _CharT&, _CharT*>, 194s 1515: bool); 194s 1515: # 630 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OI 194s 1515: copy(_II __first, _II __last, _OI __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__copy_move_a<__is_move_iterator<_II>::__value> 194s 1515: (std::__miter_base(__first), std::__miter_base(__last), __result); 194s 1515: } 194s 1515: # 663 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OI 194s 1515: move(_II __first, _II __last, _OI __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__copy_move_a(std::__miter_base(__first), 194s 1515: std::__miter_base(__last), __result); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template 194s 1515: 194s 1515: inline _BI2 194s 1515: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) 194s 1515: { 194s 1515: typedef __decltype(*__first) _InRef; 194s 1515: typedef __decltype(*__result) _OutRef; 194s 1515: if constexpr (!__is_trivially_assignable(_OutRef, _InRef)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: else if constexpr (__memcpyable<_BI2, _BI1>::__value) 194s 1515: { 194s 1515: ptrdiff_t __n = std::distance(__first, __last); 194s 1515: std::advance(__result, -__n); 194s 1515: if (__builtin_expect(__n > 1, true)) 194s 1515: { 194s 1515: __builtin_memmove(__result, 194s 1515: __first, 194s 1515: __n * sizeof(*__first)); 194s 1515: } 194s 1515: else if (__n == 1) 194s 1515: std::__assign_one<_IsMove>(__result, __first); 194s 1515: return __result; 194s 1515: } 194s 1515: # 735 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: while (__first != __last) 194s 1515: { 194s 1515: --__last; 194s 1515: --__result; 194s 1515: std::__assign_one<_IsMove>(__result, __last); 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _BI2 194s 1515: __copy_move_backward_a1(_BI1 __first, _BI1 __last, _BI2 __result) 194s 1515: { return std::__copy_move_backward_a2<_IsMove>(__first, __last, __result); } 194s 1515: 194s 1515: template 194s 1515: _OI 194s 1515: __copy_move_backward_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 194s 1515: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 194s 1515: _OI); 194s 1515: 194s 1515: template 194s 1515: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 194s 1515: __copy_move_backward_a1( 194s 1515: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 194s 1515: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 194s 1515: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if< 194s 1515: __is_random_access_iter<_II>::__value, 194s 1515: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 194s 1515: __copy_move_backward_a1(_II, _II, 194s 1515: std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _OI 194s 1515: __copy_move_backward_a(_II __first, _II __last, _OI __result) 194s 1515: { 194s 1515: return std::__niter_wrap(__result, 194s 1515: std::__copy_move_backward_a1<_IsMove> 194s 1515: (std::__niter_base(__first), std::__niter_base(__last), 194s 1515: std::__niter_base(__result))); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OI 194s 1515: __copy_move_backward_a( 194s 1515: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 194s 1515: _OI); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 194s 1515: __copy_move_backward_a(_II, _II, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 194s 1515: __copy_move_backward_a( 194s 1515: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 194s 1515: # 833 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _BI2 194s 1515: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__copy_move_backward_a<__is_move_iterator<_BI1>::__value> 194s 1515: (std::__miter_base(__first), std::__miter_base(__last), __result); 194s 1515: } 194s 1515: # 869 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _BI2 194s 1515: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__copy_move_backward_a(std::__miter_base(__first), 194s 1515: std::__miter_base(__last), 194s 1515: __result); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __value) 194s 1515: { 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const bool __load_outside_loop = 194s 1515: 194s 1515: 194s 1515: __is_trivially_constructible(_Tp, const _Tp&) 194s 1515: && __is_trivially_assignable(__decltype(*__first), const _Tp&) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: && sizeof(_Tp) <= sizeof(long long); 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename __gnu_cxx::__conditional_type<__load_outside_loop, 194s 1515: const _Tp, 194s 1515: const _Tp&>::__type _Up; 194s 1515: _Up __val(__value); 194s 1515: for (; __first != __last; ++__first) 194s 1515: *__first = __val; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline typename 194s 1515: __gnu_cxx::__enable_if<__is_byte<_Up>::__value 194s 1515: && (__are_same<_Up, _Tp>::__value 194s 1515: || __memcpyable_integer<_Tp>::__width), 194s 1515: void>::__type 194s 1515: __fill_a1(_Up* __first, _Up* __last, const _Tp& __x) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const _Up __val = __x; 194s 1515: # 950 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: if (const size_t __len = __last - __first) 194s 1515: __builtin_memset(__first, static_cast(__val), __len); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline void 194s 1515: __fill_a1(::__gnu_cxx::__normal_iterator<_Ite, _Cont> __first, 194s 1515: ::__gnu_cxx::__normal_iterator<_Ite, _Cont> __last, 194s 1515: const _Tp& __value) 194s 1515: { std::__fill_a1(__first.base(), __last.base(), __value); } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 194s 1515: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 194s 1515: const _VTp&); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: __fill_a1(std::_Bit_iterator, std::_Bit_iterator, 194s 1515: const bool&); 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline void 194s 1515: __fill_a(_FIte __first, _FIte __last, const _Tp& __value) 194s 1515: { std::__fill_a1(__first, __last, __value); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __fill_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 194s 1515: const _Tp&); 194s 1515: # 1000 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline void 194s 1515: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: std::__fill_a(__first, __last, __value); 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: 194s 1515: inline constexpr int 194s 1515: __size_to_integer(int __n) { return __n; } 194s 1515: inline constexpr unsigned 194s 1515: __size_to_integer(unsigned __n) { return __n; } 194s 1515: inline constexpr long 194s 1515: __size_to_integer(long __n) { return __n; } 194s 1515: inline constexpr unsigned long 194s 1515: __size_to_integer(unsigned long __n) { return __n; } 194s 1515: inline constexpr long long 194s 1515: __size_to_integer(long long __n) { return __n; } 194s 1515: inline constexpr unsigned long long 194s 1515: __size_to_integer(unsigned long long __n) { return __n; } 194s 1515: # 1055 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: inline constexpr long long 194s 1515: __size_to_integer(float __n) { return (long long)__n; } 194s 1515: inline constexpr long long 194s 1515: __size_to_integer(double __n) { return (long long)__n; } 194s 1515: inline constexpr long long 194s 1515: __size_to_integer(long double __n) { return (long long)__n; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) 194s 1515: { 194s 1515: 194s 1515: const bool __load_outside_loop = 194s 1515: 194s 1515: 194s 1515: __is_trivially_constructible(_Tp, const _Tp&) 194s 1515: && __is_trivially_assignable(__decltype(*__first), const _Tp&) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: && sizeof(_Tp) <= sizeof(long long); 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename __gnu_cxx::__conditional_type<__load_outside_loop, 194s 1515: const _Tp, 194s 1515: const _Tp&>::__type _Up; 194s 1515: _Up __val(__value); 194s 1515: for (; __n > 0; --__n, (void) ++__first) 194s 1515: *__first = __val; 194s 1515: return __first; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: template 194s 1515: 194s 1515: ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 194s 1515: __fill_n_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>& __first, 194s 1515: _Size __n, const _Tp& __value, 194s 1515: std::input_iterator_tag); 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 194s 1515: std::output_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 194s 1515: 194s 1515: return __fill_n_a1(__first, __n, __value); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 194s 1515: std::input_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 194s 1515: 194s 1515: return __fill_n_a1(__first, __n, __value); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 194s 1515: std::random_access_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 194s 1515: 194s 1515: if (__n <= 0) 194s 1515: return __first; 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: std::__fill_a(__first, __first + __n, __value); 194s 1515: return __first + __n; 194s 1515: } 194s 1515: # 1169 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline _OI 194s 1515: fill_n(_OI __first, _Size __n, const _Tp& __value) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return std::__fill_n_a(__first, std::__size_to_integer(__n), __value, 194s 1515: std::__iterator_category(__first)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: struct __equal 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static bool 194s 1515: equal(_II1 __first1, _II1 __last1, _II2 __first2) 194s 1515: { 194s 1515: for (; __first1 != __last1; ++__first1, (void) ++__first2) 194s 1515: if (!(*__first1 == *__first2)) 194s 1515: return false; 194s 1515: return true; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template<> 194s 1515: struct __equal 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static bool 194s 1515: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) 194s 1515: { 194s 1515: if (const size_t __len = (__last1 - __first1)) 194s 1515: return !std::__memcmp(__first1, __first2, __len); 194s 1515: return true; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if< 194s 1515: __is_random_access_iter<_II>::__value, bool>::__type 194s 1515: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 194s 1515: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 194s 1515: _II); 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 194s 1515: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 194s 1515: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if< 194s 1515: __is_random_access_iter<_II>::__value, bool>::__type 194s 1515: __equal_aux1(_II, _II, 194s 1515: std::_Deque_iterator<_Tp, _Ref, _Ptr>); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: __equal_aux1(_II1 __first1, _II1 __last1, _II2 __first2) 194s 1515: { 194s 1515: typedef typename iterator_traits<_II1>::value_type _ValueType1; 194s 1515: const bool __simple = ((__is_integer<_ValueType1>::__value 194s 1515: 194s 1515: || __is_pointer(_ValueType1) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ) && __memcmpable<_II1, _II2>::__value); 194s 1515: return std::__equal<__simple>::equal(__first1, __last1, __first2); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: inline bool 194s 1515: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) 194s 1515: { 194s 1515: return std::__equal_aux1(std::__niter_base(__first1), 194s 1515: std::__niter_base(__last1), 194s 1515: std::__niter_base(__first2)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 194s 1515: _II2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __equal_aux(_II1, _II1, 194s 1515: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 194s 1515: 194s 1515: template 194s 1515: struct __lc_rai 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static _II1 194s 1515: __newlast1(_II1, _II1 __last1, _II2, _II2) 194s 1515: { return __last1; } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: static bool 194s 1515: __cnd2(_II __first, _II __last) 194s 1515: { return __first != __last; } 194s 1515: }; 194s 1515: 194s 1515: template<> 194s 1515: struct __lc_rai 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static _RAI1 194s 1515: __newlast1(_RAI1 __first1, _RAI1 __last1, 194s 1515: _RAI2 __first2, _RAI2 __last2) 194s 1515: { 194s 1515: const typename iterator_traits<_RAI1>::difference_type 194s 1515: __diff1 = __last1 - __first1; 194s 1515: const typename iterator_traits<_RAI2>::difference_type 194s 1515: __diff2 = __last2 - __first2; 194s 1515: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: static bool 194s 1515: __cnd2(_RAI, _RAI) 194s 1515: { return true; } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, 194s 1515: _II2 __first2, _II2 __last2, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: typedef typename iterator_traits<_II1>::iterator_category _Category1; 194s 1515: typedef typename iterator_traits<_II2>::iterator_category _Category2; 194s 1515: typedef std::__lc_rai<_Category1, _Category2> __rai_type; 194s 1515: 194s 1515: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); 194s 1515: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); 194s 1515: ++__first1, (void)++__first2) 194s 1515: { 194s 1515: if (__comp(__first1, __first2)) 194s 1515: return true; 194s 1515: if (__comp(__first2, __first1)) 194s 1515: return false; 194s 1515: } 194s 1515: return __first1 == __last1 && __first2 != __last2; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: struct __lexicographical_compare 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static bool 194s 1515: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 194s 1515: { 194s 1515: using __gnu_cxx::__ops::__iter_less_iter; 194s 1515: return std::__lexicographical_compare_impl(__first1, __last1, 194s 1515: __first2, __last2, 194s 1515: __iter_less_iter()); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: static int 194s 1515: __3way(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 194s 1515: { 194s 1515: while (__first1 != __last1) 194s 1515: { 194s 1515: if (__first2 == __last2) 194s 1515: return +1; 194s 1515: if (*__first1 < *__first2) 194s 1515: return -1; 194s 1515: if (*__first2 < *__first1) 194s 1515: return +1; 194s 1515: ++__first1; 194s 1515: ++__first2; 194s 1515: } 194s 1515: return int(__first2 == __last2) - 1; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template<> 194s 1515: struct __lexicographical_compare 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static bool 194s 1515: __lc(const _Tp* __first1, const _Tp* __last1, 194s 1515: const _Up* __first2, const _Up* __last2) 194s 1515: { return __3way(__first1, __last1, __first2, __last2) < 0; } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: static ptrdiff_t 194s 1515: __3way(const _Tp* __first1, const _Tp* __last1, 194s 1515: const _Up* __first2, const _Up* __last2) 194s 1515: { 194s 1515: const size_t __len1 = __last1 - __first1; 194s 1515: const size_t __len2 = __last2 - __first2; 194s 1515: if (const size_t __len = std::min(__len1, __len2)) 194s 1515: if (int __result = std::__memcmp(__first1, __first2, __len)) 194s 1515: return __result; 194s 1515: return ptrdiff_t(__len1 - __len2); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: __lexicographical_compare_aux1(_II1 __first1, _II1 __last1, 194s 1515: _II2 __first2, _II2 __last2) 194s 1515: { 194s 1515: typedef typename iterator_traits<_II1>::value_type _ValueType1; 194s 1515: typedef typename iterator_traits<_II2>::value_type _ValueType2; 194s 1515: 194s 1515: const bool __simple = 194s 1515: (__is_memcmp_ordered_with<_ValueType1, _ValueType2>::__value 194s 1515: && __is_pointer(_II1) && __is_pointer(_II2) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, 194s 1515: __first2, __last2); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: __lexicographical_compare_aux1( 194s 1515: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 194s 1515: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 194s 1515: _Tp2*, _Tp2*); 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: __lexicographical_compare_aux1(_Tp1*, _Tp1*, 194s 1515: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, 194s 1515: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: __lexicographical_compare_aux1( 194s 1515: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 194s 1515: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 194s 1515: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, 194s 1515: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, 194s 1515: _II2 __first2, _II2 __last2) 194s 1515: { 194s 1515: return std::__lexicographical_compare_aux1(std::__niter_base(__first1), 194s 1515: std::__niter_base(__last1), 194s 1515: std::__niter_base(__first2), 194s 1515: std::__niter_base(__last2)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __lexicographical_compare_aux( 194s 1515: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 194s 1515: _II2, _II2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __lexicographical_compare_aux( 194s 1515: _II1, _II1, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __lexicographical_compare_aux( 194s 1515: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, 194s 1515: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val, _Compare __comp) 194s 1515: { 194s 1515: typedef typename iterator_traits<_ForwardIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: _DistanceType __len = std::distance(__first, __last); 194s 1515: 194s 1515: while (__len > 0) 194s 1515: { 194s 1515: _DistanceType __half = __len >> 1; 194s 1515: _ForwardIterator __middle = __first; 194s 1515: std::advance(__middle, __half); 194s 1515: if (__comp(__middle, __val)) 194s 1515: { 194s 1515: __first = __middle; 194s 1515: ++__first; 194s 1515: __len = __len - __half - 1; 194s 1515: } 194s 1515: else 194s 1515: __len = __half; 194s 1515: } 194s 1515: return __first; 194s 1515: } 194s 1515: # 1532 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__lower_bound(__first, __last, __val, 194s 1515: __gnu_cxx::__ops::__iter_less_val()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline constexpr _Tp 194s 1515: __lg(_Tp __n) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: 194s 1515: return (sizeof(+__n) * 8 - 1) 194s 1515: - (sizeof(+__n) == sizeof(long long) 194s 1515: ? __builtin_clzll(+__n) 194s 1515: : (sizeof(+__n) == sizeof(long) 194s 1515: ? __builtin_clzl(+__n) 194s 1515: : __builtin_clz(+__n))); 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: # 1584 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: equal(_II1 __first1, _II1 __last1, _II2 __first2) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__equal_aux(__first1, __last1, __first2); 194s 1515: } 194s 1515: # 1615 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: equal(_IIter1 __first1, _IIter1 __last1, 194s 1515: _IIter2 __first2, _BinaryPredicate __binary_pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: for (; __first1 != __last1; ++__first1, (void)++__first2) 194s 1515: if (!bool(__binary_pred(*__first1, *__first2))) 194s 1515: return false; 194s 1515: return true; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 194s 1515: { 194s 1515: using _RATag = random_access_iterator_tag; 194s 1515: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 194s 1515: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 194s 1515: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 194s 1515: if constexpr (_RAIters::value) 194s 1515: { 194s 1515: if ((__last1 - __first1) != (__last2 - __first2)) 194s 1515: return false; 194s 1515: return std::equal(__first1, __last1, __first2); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: for (; __first1 != __last1 && __first2 != __last2; 194s 1515: ++__first1, (void)++__first2) 194s 1515: if (!(*__first1 == *__first2)) 194s 1515: return false; 194s 1515: return __first1 == __last1 && __first2 == __last2; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, 194s 1515: _BinaryPredicate __binary_pred) 194s 1515: { 194s 1515: using _RATag = random_access_iterator_tag; 194s 1515: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 194s 1515: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 194s 1515: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 194s 1515: if constexpr (_RAIters::value) 194s 1515: { 194s 1515: if ((__last1 - __first1) != (__last2 - __first2)) 194s 1515: return false; 194s 1515: return std::equal(__first1, __last1, __first2, 194s 1515: __binary_pred); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: for (; __first1 != __last1 && __first2 != __last2; 194s 1515: ++__first1, (void)++__first2) 194s 1515: if (!bool(__binary_pred(*__first1, *__first2))) 194s 1515: return false; 194s 1515: return __first1 == __last1 && __first2 == __last2; 194s 1515: } 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 1771 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: lexicographical_compare(_II1 __first1, _II1 __last1, 194s 1515: _II2 __first2, _II2 __last2) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__lexicographical_compare_aux(__first1, __last1, 194s 1515: __first2, __last2); 194s 1515: } 194s 1515: # 1806 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: lexicographical_compare(_II1 __first1, _II1 __last1, 194s 1515: _II2 __first2, _II2 __last2, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__lexicographical_compare_impl 194s 1515: (__first1, __last1, __first2, __last2, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: # 1921 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: 194s 1515: pair<_InputIterator1, _InputIterator2> 194s 1515: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 194s 1515: { 194s 1515: while (__first1 != __last1 && __binary_pred(__first1, __first2)) 194s 1515: { 194s 1515: ++__first1; 194s 1515: ++__first2; 194s 1515: } 194s 1515: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 194s 1515: } 194s 1515: # 1949 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline pair<_InputIterator1, _InputIterator2> 194s 1515: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__mismatch(__first1, __last1, __first2, 194s 1515: __gnu_cxx::__ops::__iter_equal_to_iter()); 194s 1515: } 194s 1515: # 1983 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline pair<_InputIterator1, _InputIterator2> 194s 1515: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__mismatch(__first1, __last1, __first2, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 194s 1515: } 194s 1515: # 2086 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Iterator 194s 1515: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) 194s 1515: { 194s 1515: #pragma GCC unroll 4 194s 1515: while (__first != __last && !__pred(__first)) 194s 1515: ++__first; 194s 1515: return __first; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename iterator_traits<_InputIterator>::difference_type 194s 1515: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 194s 1515: { 194s 1515: typename iterator_traits<_InputIterator>::difference_type __n = 0; 194s 1515: for (; __first != __last; ++__first) 194s 1515: if (__pred(__first)) 194s 1515: ++__n; 194s 1515: return __n; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __remove_if(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: __first = std::__find_if(__first, __last, __pred); 194s 1515: if (__first == __last) 194s 1515: return __first; 194s 1515: _ForwardIterator __result = __first; 194s 1515: ++__first; 194s 1515: for (; __first != __last; ++__first) 194s 1515: if (!__pred(__first)) 194s 1515: { 194s 1515: *__result = std::move(*__first); 194s 1515: ++__result; 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator1 194s 1515: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 194s 1515: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 194s 1515: _BinaryPredicate __predicate) 194s 1515: { 194s 1515: 194s 1515: if (__first1 == __last1 || __first2 == __last2) 194s 1515: return __first1; 194s 1515: 194s 1515: 194s 1515: _ForwardIterator2 __p1(__first2); 194s 1515: if (++__p1 == __last2) 194s 1515: return std::__find_if(__first1, __last1, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 194s 1515: 194s 1515: 194s 1515: _ForwardIterator1 __current = __first1; 194s 1515: 194s 1515: for (;;) 194s 1515: { 194s 1515: __first1 = 194s 1515: std::__find_if(__first1, __last1, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 194s 1515: 194s 1515: if (__first1 == __last1) 194s 1515: return __last1; 194s 1515: 194s 1515: _ForwardIterator2 __p = __p1; 194s 1515: __current = __first1; 194s 1515: if (++__current == __last1) 194s 1515: return __last1; 194s 1515: 194s 1515: while (__predicate(__current, __p)) 194s 1515: { 194s 1515: if (++__p == __last2) 194s 1515: return __first1; 194s 1515: if (++__current == __last1) 194s 1515: return __last1; 194s 1515: } 194s 1515: ++__first1; 194s 1515: } 194s 1515: return __first1; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 194s 1515: _ForwardIterator2 __first2, _BinaryPredicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: for (; __first1 != __last1; ++__first1, (void)++__first2) 194s 1515: if (!__pred(__first1, __first2)) 194s 1515: break; 194s 1515: 194s 1515: if (__first1 == __last1) 194s 1515: return true; 194s 1515: 194s 1515: 194s 1515: 194s 1515: _ForwardIterator2 __last2 = __first2; 194s 1515: std::advance(__last2, std::distance(__first1, __last1)); 194s 1515: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 194s 1515: { 194s 1515: if (__scan != std::__find_if(__first1, __scan, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 194s 1515: continue; 194s 1515: 194s 1515: auto __matches 194s 1515: = std::__count_if(__first2, __last2, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 194s 1515: if (0 == __matches || 194s 1515: std::__count_if(__scan, __last1, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 194s 1515: != __matches) 194s 1515: return false; 194s 1515: } 194s 1515: return true; 194s 1515: } 194s 1515: # 2230 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 194s 1515: _ForwardIterator2 __first2) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__is_permutation(__first1, __last1, __first2, 194s 1515: __gnu_cxx::__ops::__iter_equal_to_iter()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 2272 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator1 194s 1515: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 194s 1515: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 194s 1515: _BinaryPredicate __predicate) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__search(__first1, __last1, __first2, __last2, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 54 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/refwrap.h" 1 3 4 194s 1515: # 40 "/usr/include/c++/15/bits/refwrap.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/invoke.h" 1 3 4 194s 1515: # 44 "/usr/include/c++/15/bits/invoke.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 55 "/usr/include/c++/15/bits/invoke.h" 3 4 194s 1515: template::type> 194s 1515: constexpr _Up&& 194s 1515: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept 194s 1515: { return static_cast<_Up&&>(__t); } 194s 1515: 194s 1515: template 194s 1515: constexpr _Res 194s 1515: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) 194s 1515: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } 194s 1515: 194s 1515: template 194s 1515: constexpr _Res 194s 1515: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, 194s 1515: _Args&&... __args) 194s 1515: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } 194s 1515: 194s 1515: template 194s 1515: constexpr _Res 194s 1515: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, 194s 1515: _Args&&... __args) 194s 1515: { 194s 1515: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: constexpr _Res 194s 1515: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) 194s 1515: { return __invfwd<_Tp>(__t).*__f; } 194s 1515: 194s 1515: template 194s 1515: constexpr _Res 194s 1515: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) 194s 1515: { return (*std::forward<_Tp>(__t)).*__f; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr typename __invoke_result<_Callable, _Args...>::type 194s 1515: __invoke(_Callable&& __fn, _Args&&... __args) 194s 1515: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) 194s 1515: { 194s 1515: using __result = __invoke_result<_Callable, _Args...>; 194s 1515: using __type = typename __result::type; 194s 1515: using __tag = typename __result::__invoke_type; 194s 1515: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: # 129 "/usr/include/c++/15/bits/invoke.h" 3 4 194s 1515: template 194s 1515: constexpr __enable_if_t::value, _Res> 194s 1515: __invoke_r(_Callable&& __fn, _Args&&... __args) 194s 1515: { 194s 1515: using __result = __invoke_result<_Callable, _Args...>; 194s 1515: using __type = typename __result::type; 194s 1515: 194s 1515: static_assert(!__reference_converts_from_temporary(_Res, __type), 194s 1515: "INVOKE must not create a dangling reference"); 194s 1515: 194s 1515: using __tag = typename __result::__invoke_type; 194s 1515: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __enable_if_t::value, _Res> 194s 1515: __invoke_r(_Callable&& __fn, _Args&&... __args) 194s 1515: { 194s 1515: using __result = __invoke_result<_Callable, _Args...>; 194s 1515: using __type = typename __result::type; 194s 1515: using __tag = typename __result::__invoke_type; 194s 1515: std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 41 "/usr/include/c++/15/bits/refwrap.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 58 "/usr/include/c++/15/bits/refwrap.h" 3 4 194s 1515: template 194s 1515: struct _Maybe_unary_or_binary_function { }; 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Maybe_unary_or_binary_function<_Res, _T1> 194s 1515: : std::unary_function<_T1, _Res> { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> 194s 1515: : std::binary_function<_T1, _T2, _Res> { }; 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: template 194s 1515: struct _Mem_fn_traits; 194s 1515: 194s 1515: template 194s 1515: struct _Mem_fn_traits_base 194s 1515: { 194s 1515: using __result_type = _Res; 194s 1515: using __maybe_type 194s 1515: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; 194s 1515: using __arity = integral_constant; 194s 1515: }; 194s 1515: # 109 "/usr/include/c++/15/bits/refwrap.h" 3 4 194s 1515: 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; }; 194s 1515: 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; }; 194s 1515: 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; }; 194s 1515: # 123 "/usr/include/c++/15/bits/refwrap.h" 3 4 194s 1515: template> 194s 1515: struct _Maybe_get_result_type 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct _Maybe_get_result_type<_Functor, 194s 1515: __void_t> 194s 1515: { typedef typename _Functor::result_type result_type; }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Weak_result_type_impl 194s 1515: : _Maybe_get_result_type<_Functor> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Weak_result_type_impl<_Res(_ArgTypes...) > 194s 1515: { typedef _Res result_type; }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Weak_result_type_impl<_Res(_ArgTypes..., 194s 1515: ...) > 194s 1515: { typedef _Res result_type; }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) > 194s 1515: { typedef _Res result_type; }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct 194s 1515: _Weak_result_type_impl<_Res(*)(_ArgTypes..., ...) > 194s 1515: { typedef _Res result_type; }; 194s 1515: 194s 1515: 194s 1515: template::value> 194s 1515: struct _Weak_result_type_memfun 194s 1515: : _Weak_result_type_impl<_Functor> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Weak_result_type_memfun<_MemFunPtr, true> 194s 1515: { 194s 1515: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Weak_result_type_memfun<_Func _Class::*, false> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Weak_result_type 194s 1515: : _Weak_result_type_memfun::type> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: struct _Refwrap_base_arg1 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Refwrap_base_arg1<_Tp, 194s 1515: __void_t> 194s 1515: { 194s 1515: typedef typename _Tp::argument_type argument_type; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: struct _Refwrap_base_arg2 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Refwrap_base_arg2<_Tp, 194s 1515: __void_t> 194s 1515: { 194s 1515: typedef typename _Tp::first_argument_type first_argument_type; 194s 1515: typedef typename _Tp::second_argument_type second_argument_type; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base 194s 1515: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base<_Res(_T1) > 194s 1515: : unary_function<_T1, _Res> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base<_Res(_T1) const> 194s 1515: : unary_function<_T1, _Res> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base<_Res(_T1) volatile> 194s 1515: : unary_function<_T1, _Res> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base<_Res(_T1) const volatile> 194s 1515: : unary_function<_T1, _Res> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base<_Res(_T1, _T2) > 194s 1515: : binary_function<_T1, _T2, _Res> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base<_Res(_T1, _T2) const> 194s 1515: : binary_function<_T1, _T2, _Res> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> 194s 1515: : binary_function<_T1, _T2, _Res> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> 194s 1515: : binary_function<_T1, _T2, _Res> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base<_Res(*)(_T1) > 194s 1515: : unary_function<_T1, _Res> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) > 194s 1515: : binary_function<_T1, _T2, _Res> 194s 1515: { }; 194s 1515: 194s 1515: template::value> 194s 1515: struct _Reference_wrapper_base_memfun 194s 1515: : _Reference_wrapper_base<_Tp> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> 194s 1515: : _Mem_fn_traits<_MemFunPtr>::__maybe_type 194s 1515: { 194s 1515: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 194s 1515: }; 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 309 "/usr/include/c++/15/bits/refwrap.h" 3 4 194s 1515: template 194s 1515: class reference_wrapper 194s 1515: 194s 1515: 194s 1515: 194s 1515: : public _Reference_wrapper_base_memfun::type> 194s 1515: 194s 1515: { 194s 1515: _Tp* _M_data; 194s 1515: 194s 1515: 194s 1515: static _Tp* _S_fun(_Tp& __r) noexcept { return std::__addressof(__r); } 194s 1515: 194s 1515: static void _S_fun(_Tp&&) = delete; 194s 1515: 194s 1515: template> 194s 1515: using __not_same 194s 1515: = typename enable_if::value>::type; 194s 1515: 194s 1515: public: 194s 1515: typedef _Tp type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template, typename 194s 1515: = decltype(reference_wrapper::_S_fun(std::declval<_Up>()))> 194s 1515: 194s 1515: reference_wrapper(_Up&& __uref) 194s 1515: noexcept(noexcept(reference_wrapper::_S_fun(std::declval<_Up>()))) 194s 1515: : _M_data(reference_wrapper::_S_fun(std::forward<_Up>(__uref))) 194s 1515: { } 194s 1515: 194s 1515: reference_wrapper(const reference_wrapper&) = default; 194s 1515: 194s 1515: reference_wrapper& 194s 1515: operator=(const reference_wrapper&) = default; 194s 1515: 194s 1515: 194s 1515: operator _Tp&() const noexcept 194s 1515: { return this->get(); } 194s 1515: 194s 1515: 194s 1515: _Tp& 194s 1515: get() const noexcept 194s 1515: { return *_M_data; } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename __invoke_result<_Tp&, _Args...>::type 194s 1515: operator()(_Args&&... __args) const 194s 1515: noexcept(__is_nothrow_invocable<_Tp&, _Args...>::value) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return std::__invoke(get(), std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: # 415 "/usr/include/c++/15/bits/refwrap.h" 3 4 194s 1515: }; 194s 1515: # 425 "/usr/include/c++/15/bits/refwrap.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline reference_wrapper<_Tp> 194s 1515: ref(_Tp& __t) noexcept 194s 1515: { return reference_wrapper<_Tp>(__t); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline reference_wrapper 194s 1515: cref(const _Tp& __t) noexcept 194s 1515: { return reference_wrapper(__t); } 194s 1515: 194s 1515: template 194s 1515: void ref(const _Tp&&) = delete; 194s 1515: 194s 1515: template 194s 1515: void cref(const _Tp&&) = delete; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline reference_wrapper<_Tp> 194s 1515: ref(reference_wrapper<_Tp> __t) noexcept 194s 1515: { return __t; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline reference_wrapper 194s 1515: cref(reference_wrapper<_Tp> __t) noexcept 194s 1515: { return { __t.get() }; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 55 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/range_access.h" 1 3 4 194s 1515: # 42 "/usr/include/c++/15/bits/range_access.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__, __gnu__::__always_inline__]] 194s 1515: inline auto 194s 1515: begin(_Container& __cont) noexcept(noexcept(__cont.begin())) 194s 1515: -> decltype(__cont.begin()) 194s 1515: { return __cont.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__, __gnu__::__always_inline__]] 194s 1515: inline auto 194s 1515: begin(const _Container& __cont) noexcept(noexcept(__cont.begin())) 194s 1515: -> decltype(__cont.begin()) 194s 1515: { return __cont.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__, __gnu__::__always_inline__]] 194s 1515: inline auto 194s 1515: end(_Container& __cont) noexcept(noexcept(__cont.end())) 194s 1515: -> decltype(__cont.end()) 194s 1515: { return __cont.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__, __gnu__::__always_inline__]] 194s 1515: inline auto 194s 1515: end(const _Container& __cont) noexcept(noexcept(__cont.end())) 194s 1515: -> decltype(__cont.end()) 194s 1515: { return __cont.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__, __gnu__::__always_inline__]] 194s 1515: inline _Tp* 194s 1515: begin(_Tp (&__arr)[_Nm]) noexcept 194s 1515: { return __arr; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__, __gnu__::__always_inline__]] 194s 1515: inline _Tp* 194s 1515: end(_Tp (&__arr)[_Nm]) noexcept 194s 1515: { return __arr + _Nm; } 194s 1515: # 377 "/usr/include/c++/15/bits/range_access.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 56 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/basic_string.h" 1 3 4 194s 1515: # 41 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/ext/alloc_traits.h" 1 3 4 194s 1515: # 36 "/usr/include/c++/15/ext/alloc_traits.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/alloc_traits.h" 1 3 4 194s 1515: # 33 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_construct.h" 1 3 4 194s 1515: # 73 "/usr/include/c++/15/bits/stl_construct.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 120 "/usr/include/c++/15/bits/stl_construct.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: _Construct(_Tp* __p, _Args&&... __args) 194s 1515: { 194s 1515: # 133 "/usr/include/c++/15/bits/stl_construct.h" 3 4 194s 1515: ::new(static_cast(__p)) _Tp(std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: # 146 "/usr/include/c++/15/bits/stl_construct.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: _Construct_novalue(_T1* __p) 194s 1515: { ::new(static_cast(__p)) _T1; } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Destroy(_ForwardIterator __first, _ForwardIterator __last); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: _Destroy(_Tp* __pointer) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: __pointer->~_Tp(); 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: # 217 "/usr/include/c++/15/bits/stl_construct.h" 3 4 194s 1515: template 194s 1515: inline void 194s 1515: _Destroy(_ForwardIterator __first, _ForwardIterator __last) 194s 1515: { 194s 1515: typedef typename iterator_traits<_ForwardIterator>::value_type 194s 1515: _Value_type; 194s 1515: 194s 1515: if constexpr (!is_trivially_destructible<_Value_type>::value) 194s 1515: for (; __first != __last; ++__first) 194s 1515: std::_Destroy(std::__addressof(*__first)); 194s 1515: # 236 "/usr/include/c++/15/bits/stl_construct.h" 3 4 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline _ForwardIterator 194s 1515: _Destroy_n(_ForwardIterator __first, _Size __count) 194s 1515: { 194s 1515: typedef typename iterator_traits<_ForwardIterator>::value_type 194s 1515: _Value_type; 194s 1515: 194s 1515: if constexpr (!is_trivially_destructible<_Value_type>::value) 194s 1515: for (; __count > 0; (void)++__first, --__count) 194s 1515: std::_Destroy(std::__addressof(*__first)); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: else 194s 1515: std::advance(__first, __count); 194s 1515: return __first; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 284 "/usr/include/c++/15/bits/stl_construct.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 34 "/usr/include/c++/15/bits/alloc_traits.h" 2 3 4 194s 1515: # 46 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 52 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++14-extensions" 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: 194s 1515: 194s 1515: struct __allocator_traits_base 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: struct __rebind : __replace_first_arg<_Tp, _Up> 194s 1515: { 194s 1515: static_assert(is_same< 194s 1515: typename __replace_first_arg<_Tp, typename _Tp::value_type>::type, 194s 1515: _Tp>::value, 194s 1515: "allocator_traits::rebind_alloc must be A"); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct __rebind<_Tp, _Up, 194s 1515: __void_t::other>> 194s 1515: 194s 1515: { 194s 1515: using type = typename _Tp::template rebind<_Up>::other; 194s 1515: 194s 1515: static_assert(is_same< 194s 1515: typename _Tp::template rebind::other, 194s 1515: _Tp>::value, 194s 1515: "allocator_traits::rebind_alloc must be A"); 194s 1515: }; 194s 1515: 194s 1515: protected: 194s 1515: template 194s 1515: using __pointer = typename _Tp::pointer; 194s 1515: template 194s 1515: using __c_pointer = typename _Tp::const_pointer; 194s 1515: template 194s 1515: using __v_pointer = typename _Tp::void_pointer; 194s 1515: template 194s 1515: using __cv_pointer = typename _Tp::const_void_pointer; 194s 1515: template 194s 1515: using __pocca = typename _Tp::propagate_on_container_copy_assignment; 194s 1515: template 194s 1515: using __pocma = typename _Tp::propagate_on_container_move_assignment; 194s 1515: template 194s 1515: using __pocs = typename _Tp::propagate_on_container_swap; 194s 1515: template 194s 1515: using __equal = __type_identity; 194s 1515: # 115 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: using __allocate_hint_t 194s 1515: = decltype(std::declval<_Alloc&>() 194s 1515: .allocate(std::declval<_Sz>(), std::declval<_Vp>())); 194s 1515: template 194s 1515: static constexpr bool __has_allocate_hint = false; 194s 1515: template 194s 1515: static constexpr bool 194s 1515: __has_allocate_hint<_Alloc, _Sz, _Vp, 194s 1515: __void_t<__allocate_hint_t<_Alloc, _Sz, _Vp>>> 194s 1515: = true; 194s 1515: # 152 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: using __construct_t 194s 1515: = decltype(std::declval<_Alloc&>().construct(std::declval<_Tp*>(), 194s 1515: std::declval<_Args>()...)); 194s 1515: template 194s 1515: static constexpr bool __has_construct_impl = false; 194s 1515: template 194s 1515: static constexpr bool 194s 1515: __has_construct_impl<_Alloc, _Tp, 194s 1515: __void_t<__construct_t<_Alloc, _Tp, _Args...>>, 194s 1515: _Args...> 194s 1515: = true; 194s 1515: template 194s 1515: static constexpr bool __has_construct 194s 1515: = __has_construct_impl<_Alloc, _Tp, void, _Args...>; 194s 1515: template 194s 1515: using __new_expr_t 194s 1515: = decltype(::new((void*)0) _Tp(std::declval<_Args>()...)); 194s 1515: template 194s 1515: static constexpr bool __has_new_expr = false; 194s 1515: template 194s 1515: static constexpr bool 194s 1515: __has_new_expr<_Tp, __void_t<__new_expr_t<_Tp, _Args...>>, _Args...> 194s 1515: = true; 194s 1515: template 194s 1515: static constexpr bool __can_construct 194s 1515: = __has_construct<_Alloc, _Tp, _Args...> 194s 1515: || __has_new_expr<_Tp, void, _Args...>; 194s 1515: # 189 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: using __destroy_t 194s 1515: = decltype(std::declval<_Alloc&>().destroy(std::declval<_Tp*>())); 194s 1515: template 194s 1515: static constexpr bool __has_destroy = false; 194s 1515: template 194s 1515: static constexpr bool __has_destroy<_Alloc, _Tp, 194s 1515: __void_t<__destroy_t<_Alloc, _Tp>>> 194s 1515: = true; 194s 1515: # 207 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: using __max_size_t = decltype(std::declval().max_size()); 194s 1515: template 194s 1515: static constexpr bool __has_max_size = false; 194s 1515: template 194s 1515: static constexpr bool __has_max_size<_Alloc, 194s 1515: __void_t<__max_size_t<_Alloc>>> 194s 1515: = true; 194s 1515: # 225 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: using __soccc_t 194s 1515: = decltype(std::declval() 194s 1515: .select_on_container_copy_construction()); 194s 1515: template 194s 1515: static constexpr bool __has_soccc = false; 194s 1515: template 194s 1515: static constexpr bool __has_soccc<_Alloc, __void_t<__soccc_t<_Alloc>>> 194s 1515: = true; 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: using __alloc_rebind 194s 1515: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; 194s 1515: # 248 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: struct allocator_traits : __allocator_traits_base 194s 1515: { 194s 1515: 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: typedef typename _Alloc::value_type value_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using pointer = __detected_or_t; 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: template class _Func, typename _Tp, typename = void> 194s 1515: struct _Ptr 194s 1515: { 194s 1515: using type = typename pointer_traits::template rebind<_Tp>; 194s 1515: }; 194s 1515: 194s 1515: template class _Func, typename _Tp> 194s 1515: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> 194s 1515: { 194s 1515: using type = _Func<_Alloc>; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Diff 194s 1515: { using type = typename pointer_traits<_PtrT>::difference_type; }; 194s 1515: 194s 1515: template 194s 1515: struct _Diff<_A2, _PtrT, __void_t> 194s 1515: { using type = typename _A2::difference_type; }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Size : make_unsigned<_DiffT> { }; 194s 1515: 194s 1515: template 194s 1515: struct _Size<_A2, _DiffT, __void_t> 194s 1515: { using type = typename _A2::size_type; }; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using void_pointer = typename _Ptr<__v_pointer, void>::type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using difference_type = typename _Diff<_Alloc, pointer>::type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using size_type = typename _Size<_Alloc, difference_type>::type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using propagate_on_container_copy_assignment 194s 1515: = __detected_or_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using propagate_on_container_move_assignment 194s 1515: = __detected_or_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using propagate_on_container_swap 194s 1515: = __detected_or_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using is_always_equal 194s 1515: = typename __detected_or_t, __equal, _Alloc>::type; 194s 1515: 194s 1515: template 194s 1515: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; 194s 1515: template 194s 1515: using rebind_traits = allocator_traits>; 194s 1515: # 383 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: [[__nodiscard__]] static pointer 194s 1515: allocate(_Alloc& __a, size_type __n) 194s 1515: { return __a.allocate(__n); } 194s 1515: # 398 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: [[__nodiscard__]] static pointer 194s 1515: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) 194s 1515: { 194s 1515: if constexpr (__has_allocate_hint<_Alloc, size_type, const_void_pointer>) 194s 1515: return __a.allocate(__n, __hint); 194s 1515: else 194s 1515: return __a.allocate(__n); 194s 1515: } 194s 1515: # 415 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: static void 194s 1515: deallocate(_Alloc& __a, pointer __p, size_type __n) 194s 1515: { __a.deallocate(__p, __n); } 194s 1515: # 430 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static __enable_if_t<__can_construct<_Alloc, _Tp, _Args...>> 194s 1515: 194s 1515: construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 194s 1515: noexcept(_S_nothrow_construct<_Tp, _Args...>()) 194s 1515: { 194s 1515: if constexpr (__has_construct<_Alloc, _Tp, _Args...>) 194s 1515: __a.construct(__p, std::forward<_Args>(__args)...); 194s 1515: else 194s 1515: std::_Construct(__p, std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: # 454 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: static void 194s 1515: destroy(_Alloc& __a, _Tp* __p) 194s 1515: noexcept(_S_nothrow_destroy<_Tp>()) 194s 1515: { 194s 1515: if constexpr (__has_destroy<_Alloc, _Tp>) 194s 1515: __a.destroy(__p); 194s 1515: else 194s 1515: std::_Destroy(__p); 194s 1515: } 194s 1515: # 473 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: static size_type 194s 1515: max_size(const _Alloc& __a) noexcept 194s 1515: { 194s 1515: if constexpr (__has_max_size<_Alloc>) 194s 1515: return __a.max_size(); 194s 1515: else 194s 1515: 194s 1515: 194s 1515: return __gnu_cxx::__numeric_traits::__max 194s 1515: / sizeof(value_type); 194s 1515: } 194s 1515: # 493 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: static _Alloc 194s 1515: select_on_container_copy_construction(const _Alloc& __rhs) 194s 1515: { 194s 1515: if constexpr (__has_soccc<_Alloc>) 194s 1515: return __rhs.select_on_container_copy_construction(); 194s 1515: else 194s 1515: return __rhs; 194s 1515: } 194s 1515: 194s 1515: private: 194s 1515: # 524 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: static constexpr 194s 1515: __enable_if_t<__has_construct<_Alloc, _Tp, _Args...>, bool> 194s 1515: _S_nothrow_construct(_Alloc* __a = nullptr, _Tp* __p = nullptr) 194s 1515: { return noexcept(__a->construct(__p, std::declval<_Args>()...)); } 194s 1515: 194s 1515: template 194s 1515: static constexpr 194s 1515: __enable_if_t, bool> 194s 1515: _S_nothrow_construct(_Alloc* = nullptr, _Tp* __p = nullptr) 194s 1515: { return __is_nothrow_new_constructible<_Tp, _Args...>; } 194s 1515: 194s 1515: template 194s 1515: static constexpr 194s 1515: __enable_if_t<__has_destroy<_Alloc, _Tp>, bool> 194s 1515: _S_nothrow_destroy(_Alloc* __a = nullptr, _Tp* __p = nullptr) 194s 1515: { return noexcept(__a->destroy(__p)); } 194s 1515: 194s 1515: template 194s 1515: static constexpr 194s 1515: __enable_if_t, bool> 194s 1515: _S_nothrow_destroy(_Alloc* = nullptr, _Tp* __p = nullptr) 194s 1515: { return is_nothrow_destructible<_Tp>::value; } 194s 1515: 194s 1515: }; 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 559 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: struct allocator_traits> 194s 1515: { 194s 1515: 194s 1515: using allocator_type = allocator<_Tp>; 194s 1515: 194s 1515: 194s 1515: using value_type = _Tp; 194s 1515: 194s 1515: 194s 1515: using pointer = _Tp*; 194s 1515: 194s 1515: 194s 1515: using const_pointer = const _Tp*; 194s 1515: 194s 1515: 194s 1515: using void_pointer = void*; 194s 1515: 194s 1515: 194s 1515: using const_void_pointer = const void*; 194s 1515: 194s 1515: 194s 1515: using difference_type = std::ptrdiff_t; 194s 1515: 194s 1515: 194s 1515: using size_type = std::size_t; 194s 1515: 194s 1515: 194s 1515: using propagate_on_container_copy_assignment = false_type; 194s 1515: 194s 1515: 194s 1515: using propagate_on_container_move_assignment = true_type; 194s 1515: 194s 1515: 194s 1515: using propagate_on_container_swap = false_type; 194s 1515: 194s 1515: 194s 1515: using is_always_equal = true_type; 194s 1515: 194s 1515: template 194s 1515: using rebind_alloc = allocator<_Up>; 194s 1515: 194s 1515: template 194s 1515: using rebind_traits = allocator_traits>; 194s 1515: # 611 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: [[__nodiscard__,__gnu__::__always_inline__]] 194s 1515: static pointer 194s 1515: allocate(allocator_type& __a, size_type __n) 194s 1515: { return __a.allocate(__n); } 194s 1515: # 626 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: [[__nodiscard__,__gnu__::__always_inline__]] 194s 1515: static pointer 194s 1515: allocate(allocator_type& __a, size_type __n, 194s 1515: [[maybe_unused]] const_void_pointer __hint) 194s 1515: { 194s 1515: 194s 1515: return __a.allocate(__n, __hint); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 646 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static void 194s 1515: deallocate(allocator_type& __a, pointer __p, size_type __n) 194s 1515: { __a.deallocate(__p, __n); } 194s 1515: # 662 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static void 194s 1515: construct(allocator_type& __a __attribute__((__unused__)), 194s 1515: _Up* __p, _Args&&... __args) 194s 1515: 194s 1515: noexcept(noexcept(__a.construct(__p, std::forward<_Args>(__args)...))) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: 194s 1515: __a.construct(__p, std::forward<_Args>(__args)...); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 689 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static void 194s 1515: destroy(allocator_type& __a __attribute__((__unused__)), _Up* __p) 194s 1515: noexcept(is_nothrow_destructible<_Up>::value) 194s 1515: { 194s 1515: 194s 1515: __a.destroy(__p); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static size_type 194s 1515: max_size(const allocator_type& __a __attribute__((__unused__))) noexcept 194s 1515: { 194s 1515: 194s 1515: return __a.max_size(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static allocator_type 194s 1515: select_on_container_copy_construction(const allocator_type& __rhs) 194s 1515: { return __rhs; } 194s 1515: }; 194s 1515: # 736 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template<> 194s 1515: struct allocator_traits> 194s 1515: { 194s 1515: 194s 1515: using allocator_type = allocator; 194s 1515: 194s 1515: 194s 1515: using value_type = void; 194s 1515: 194s 1515: 194s 1515: using pointer = void*; 194s 1515: 194s 1515: 194s 1515: using const_pointer = const void*; 194s 1515: 194s 1515: 194s 1515: using void_pointer = void*; 194s 1515: 194s 1515: 194s 1515: using const_void_pointer = const void*; 194s 1515: 194s 1515: 194s 1515: using difference_type = std::ptrdiff_t; 194s 1515: 194s 1515: 194s 1515: using size_type = std::size_t; 194s 1515: 194s 1515: 194s 1515: using propagate_on_container_copy_assignment = false_type; 194s 1515: 194s 1515: 194s 1515: using propagate_on_container_move_assignment = true_type; 194s 1515: 194s 1515: 194s 1515: using propagate_on_container_swap = false_type; 194s 1515: 194s 1515: 194s 1515: using is_always_equal = true_type; 194s 1515: 194s 1515: template 194s 1515: using rebind_alloc = allocator<_Up>; 194s 1515: 194s 1515: template 194s 1515: using rebind_traits = allocator_traits>; 194s 1515: 194s 1515: 194s 1515: static void* 194s 1515: allocate(allocator_type&, size_type, const void* = nullptr) = delete; 194s 1515: 194s 1515: 194s 1515: static void 194s 1515: deallocate(allocator_type&, void*, size_type) = delete; 194s 1515: # 800 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static void 194s 1515: construct(allocator_type&, _Up* __p, _Args&&... __args) 194s 1515: noexcept(__is_nothrow_new_constructible<_Up, _Args...>) 194s 1515: { std::_Construct(__p, std::forward<_Args>(__args)...); } 194s 1515: # 814 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static void 194s 1515: destroy(allocator_type&, _Up* __p) 194s 1515: noexcept(is_nothrow_destructible<_Up>::value) 194s 1515: { std::_Destroy(__p); } 194s 1515: 194s 1515: 194s 1515: static size_type 194s 1515: max_size(const allocator_type&) = delete; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static allocator_type 194s 1515: select_on_container_copy_construction(const allocator_type& __rhs) 194s 1515: { return __rhs; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: inline void 194s 1515: __alloc_on_copy(_Alloc& __one, const _Alloc& __two) 194s 1515: { 194s 1515: using __traits = allocator_traits<_Alloc>; 194s 1515: using __pocca = 194s 1515: typename __traits::propagate_on_container_copy_assignment::type; 194s 1515: if constexpr (__pocca::value) 194s 1515: __one = __two; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: constexpr _Alloc 194s 1515: __alloc_on_copy(const _Alloc& __a) 194s 1515: { 194s 1515: typedef allocator_traits<_Alloc> __traits; 194s 1515: return __traits::select_on_container_copy_construction(__a); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: inline void 194s 1515: __alloc_on_move(_Alloc& __one, _Alloc& __two) 194s 1515: { 194s 1515: using __traits = allocator_traits<_Alloc>; 194s 1515: using __pocma 194s 1515: = typename __traits::propagate_on_container_move_assignment::type; 194s 1515: if constexpr (__pocma::value) 194s 1515: __one = std::move(__two); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: inline void 194s 1515: __alloc_on_swap(_Alloc& __one, _Alloc& __two) 194s 1515: { 194s 1515: using __traits = allocator_traits<_Alloc>; 194s 1515: using __pocs = typename __traits::propagate_on_container_swap::type; 194s 1515: if constexpr (__pocs::value) 194s 1515: { 194s 1515: using std::swap; 194s 1515: swap(__one, __two); 194s 1515: } 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: template, 194s 1515: typename = void> 194s 1515: struct __is_alloc_insertable_impl 194s 1515: : false_type 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __is_alloc_insertable_impl<_Alloc, _Tp, _ValueT, 194s 1515: __void_t::construct( 194s 1515: std::declval<_Alloc&>(), std::declval<_ValueT*>(), 194s 1515: std::declval<_Tp>()))>> 194s 1515: : true_type 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __is_copy_insertable 194s 1515: : __is_alloc_insertable_impl<_Alloc, 194s 1515: typename _Alloc::value_type const&>::type 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __is_copy_insertable> 194s 1515: : is_copy_constructible<_Tp> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __is_move_insertable 194s 1515: : __is_alloc_insertable_impl<_Alloc, typename _Alloc::value_type>::type 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __is_move_insertable> 194s 1515: : is_move_constructible<_Tp> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __is_allocator : false_type { }; 194s 1515: 194s 1515: template 194s 1515: struct __is_allocator<_Alloc, 194s 1515: __void_t().allocate(size_t{}))>> 194s 1515: : true_type { }; 194s 1515: 194s 1515: template 194s 1515: using _RequireAllocator 194s 1515: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; 194s 1515: 194s 1515: template 194s 1515: using _RequireNotAllocator 194s 1515: = typename enable_if::value, _Alloc>::type; 194s 1515: # 970 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: struct __alloc_swap 194s 1515: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; 194s 1515: 194s 1515: template 194s 1515: struct __alloc_swap<_Alloc, false> 194s 1515: { 194s 1515: static void 194s 1515: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept 194s 1515: { 194s 1515: 194s 1515: if (__one != __two) 194s 1515: swap(__one, __two); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template, 194s 1515: is_nothrow_move_constructible>::value> 194s 1515: struct __shrink_to_fit_aux 194s 1515: { static bool _S_do_it(_Tp&) noexcept { return false; } }; 194s 1515: 194s 1515: template 194s 1515: struct __shrink_to_fit_aux<_Tp, true> 194s 1515: { 194s 1515: 194s 1515: static bool 194s 1515: _S_do_it(_Tp& __c) noexcept 194s 1515: { 194s 1515: 194s 1515: try 194s 1515: { 194s 1515: _Tp(__make_move_if_noexcept_iterator(__c.begin()), 194s 1515: __make_move_if_noexcept_iterator(__c.end()), 194s 1515: __c.get_allocator()).swap(__c); 194s 1515: return true; 194s 1515: } 194s 1515: catch(...) 194s 1515: { return false; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: }; 194s 1515: # 1023 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Allocator& __alloc) 194s 1515: { 194s 1515: for (; __first != __last; ++__first) 194s 1515: 194s 1515: 194s 1515: 194s 1515: allocator_traits<_Allocator>::destroy(__alloc, 194s 1515: std::__addressof(*__first)); 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __attribute__((__always_inline__)) 194s 1515: inline void 194s 1515: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: allocator<_Tp>&) 194s 1515: { 194s 1515: std::_Destroy(__first, __last); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 37 "/usr/include/c++/15/ext/alloc_traits.h" 2 3 4 194s 1515: 194s 1515: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __alloc_traits 194s 1515: 194s 1515: : std::allocator_traits<_Alloc> 194s 1515: 194s 1515: { 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: typedef std::allocator_traits<_Alloc> _Base_type; 194s 1515: typedef typename _Base_type::value_type value_type; 194s 1515: typedef typename _Base_type::pointer pointer; 194s 1515: typedef typename _Base_type::const_pointer const_pointer; 194s 1515: typedef typename _Base_type::size_type size_type; 194s 1515: typedef typename _Base_type::difference_type difference_type; 194s 1515: 194s 1515: typedef value_type& reference; 194s 1515: typedef const value_type& const_reference; 194s 1515: using _Base_type::allocate; 194s 1515: using _Base_type::deallocate; 194s 1515: using _Base_type::construct; 194s 1515: using _Base_type::destroy; 194s 1515: using _Base_type::max_size; 194s 1515: 194s 1515: private: 194s 1515: template 194s 1515: using __is_custom_pointer 194s 1515: = std::__and_, 194s 1515: std::__not_>>; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static 194s 1515: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 194s 1515: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) 194s 1515: noexcept(noexcept(_Base_type::construct(__a, std::__to_address(__p), 194s 1515: std::forward<_Args>(__args)...))) 194s 1515: { 194s 1515: _Base_type::construct(__a, std::__to_address(__p), 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static 194s 1515: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 194s 1515: destroy(_Alloc& __a, _Ptr __p) 194s 1515: noexcept(noexcept(_Base_type::destroy(__a, std::__to_address(__p)))) 194s 1515: { _Base_type::destroy(__a, std::__to_address(__p)); } 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static constexpr _Alloc _S_select_on_copy(const _Alloc& __a) 194s 1515: { return _Base_type::select_on_container_copy_construction(__a); } 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static void _S_on_swap(_Alloc& __a, _Alloc& __b) 194s 1515: { std::__alloc_on_swap(__a, __b); } 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static constexpr bool _S_propagate_on_copy_assign() 194s 1515: { return _Base_type::propagate_on_container_copy_assignment::value; } 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static constexpr bool _S_propagate_on_move_assign() 194s 1515: { return _Base_type::propagate_on_container_move_assignment::value; } 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static constexpr bool _S_propagate_on_swap() 194s 1515: { return _Base_type::propagate_on_container_swap::value; } 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static constexpr bool _S_always_equal() 194s 1515: { return _Base_type::is_always_equal::value; } 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: static constexpr bool _S_nothrow_move() 194s 1515: { return _S_propagate_on_move_assign() || _S_always_equal(); } 194s 1515: 194s 1515: template 194s 1515: struct rebind 194s 1515: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; 194s 1515: # 182 "/usr/include/c++/15/ext/alloc_traits.h" 3 4 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 42 "/usr/include/c++/15/bits/basic_string.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 49 "/usr/include/c++/15/bits/basic_string.h" 2 3 4 194s 1515: # 68 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: namespace __cxx11 { 194s 1515: # 93 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: class basic_string 194s 1515: { 194s 1515: # 104 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 194s 1515: rebind<_CharT>::other _Char_alloc_type; 194s 1515: 194s 1515: 194s 1515: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: typedef _Traits traits_type; 194s 1515: typedef typename _Traits::char_type value_type; 194s 1515: typedef _Char_alloc_type allocator_type; 194s 1515: typedef typename _Alloc_traits::size_type size_type; 194s 1515: typedef typename _Alloc_traits::difference_type difference_type; 194s 1515: typedef typename _Alloc_traits::reference reference; 194s 1515: typedef typename _Alloc_traits::const_reference const_reference; 194s 1515: typedef typename _Alloc_traits::pointer pointer; 194s 1515: typedef typename _Alloc_traits::const_pointer const_pointer; 194s 1515: typedef __gnu_cxx::__normal_iterator iterator; 194s 1515: typedef __gnu_cxx::__normal_iterator 194s 1515: const_iterator; 194s 1515: typedef std::reverse_iterator const_reverse_iterator; 194s 1515: typedef std::reverse_iterator reverse_iterator; 194s 1515: 194s 1515: 194s 1515: static const size_type npos = static_cast(-1); 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef const_iterator __const_iterator; 194s 1515: 194s 1515: 194s 1515: private: 194s 1515: static pointer 194s 1515: _S_allocate(_Char_alloc_type& __a, size_type __n) 194s 1515: { 194s 1515: pointer __p = _Alloc_traits::allocate(__a, __n); 194s 1515: # 152 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: return __p; 194s 1515: } 194s 1515: # 197 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: struct _Alloc_hider : allocator_type 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Alloc_hider(pointer __dat, const _Alloc& __a) 194s 1515: : allocator_type(__a), _M_p(__dat) { } 194s 1515: 194s 1515: 194s 1515: _Alloc_hider(pointer __dat, _Alloc&& __a = _Alloc()) 194s 1515: : allocator_type(std::move(__a)), _M_p(__dat) { } 194s 1515: 194s 1515: 194s 1515: pointer _M_p; 194s 1515: }; 194s 1515: 194s 1515: _Alloc_hider _M_dataplus; 194s 1515: size_type _M_string_length; 194s 1515: 194s 1515: enum { _S_local_capacity = 15 / sizeof(_CharT) }; 194s 1515: 194s 1515: union 194s 1515: { 194s 1515: _CharT _M_local_buf[_S_local_capacity + 1]; 194s 1515: size_type _M_allocated_capacity; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_data(pointer __p) 194s 1515: { _M_dataplus._M_p = __p; } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_length(size_type __length) 194s 1515: { _M_string_length = __length; } 194s 1515: 194s 1515: 194s 1515: pointer 194s 1515: _M_data() const 194s 1515: { return _M_dataplus._M_p; } 194s 1515: 194s 1515: 194s 1515: pointer 194s 1515: _M_local_data() 194s 1515: { 194s 1515: 194s 1515: return std::pointer_traits::pointer_to(*_M_local_buf); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const_pointer 194s 1515: _M_local_data() const 194s 1515: { 194s 1515: 194s 1515: return std::pointer_traits::pointer_to(*_M_local_buf); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_capacity(size_type __capacity) 194s 1515: { _M_allocated_capacity = __capacity; } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_set_length(size_type __n) 194s 1515: { 194s 1515: _M_length(__n); 194s 1515: traits_type::assign(_M_data()[__n], _CharT()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: _M_is_local() const 194s 1515: { 194s 1515: if (_M_data() == _M_local_data()) 194s 1515: { 194s 1515: if (_M_string_length > _S_local_capacity) 194s 1515: __builtin_unreachable(); 194s 1515: return true; 194s 1515: } 194s 1515: return false; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: pointer 194s 1515: _M_create(size_type&, size_type); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_dispose() 194s 1515: { 194s 1515: if (!_M_is_local()) 194s 1515: _M_destroy(_M_allocated_capacity); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_destroy(size_type __size) throw() 194s 1515: { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); } 194s 1515: # 332 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_construct(_InIterator __beg, _InIterator __end, 194s 1515: std::input_iterator_tag); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_construct(_FwdIterator __beg, _FwdIterator __end, 194s 1515: std::forward_iterator_tag); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_construct(size_type __req, _CharT __c); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_construct(const _CharT *__c, size_type __n); 194s 1515: 194s 1515: 194s 1515: allocator_type& 194s 1515: _M_get_allocator() 194s 1515: { return _M_dataplus; } 194s 1515: 194s 1515: 194s 1515: const allocator_type& 194s 1515: _M_get_allocator() const 194s 1515: { return _M_dataplus; } 194s 1515: 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: void 194s 1515: _M_init_local_buf() noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: 194s 1515: pointer 194s 1515: _M_use_local_data() noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_local_data(); 194s 1515: } 194s 1515: 194s 1515: private: 194s 1515: # 407 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: size_type 194s 1515: _M_check(size_type __pos, const char* __s) const 194s 1515: { 194s 1515: if (__pos > this->size()) 194s 1515: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") 194s 1515: , 194s 1515: __s, __pos, this->size()); 194s 1515: return __pos; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_check_length(size_type __n1, size_type __n2, const char* __s) const 194s 1515: { 194s 1515: if (this->max_size() - (this->size() - __n1) < __n2) 194s 1515: __throw_length_error((__s)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: _M_limit(size_type __pos, size_type __off) const noexcept 194s 1515: { 194s 1515: const bool __testoff = __off < this->size() - __pos; 194s 1515: return __testoff ? __off : this->size() - __pos; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: _M_disjunct(const _CharT* __s) const noexcept 194s 1515: { 194s 1515: return (less()(__s, _M_data()) 194s 1515: || less()(_M_data() + this->size(), __s)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static void 194s 1515: _S_copy(_CharT* __d, const _CharT* __s, size_type __n) 194s 1515: { 194s 1515: if (__n == 1) 194s 1515: traits_type::assign(*__d, *__s); 194s 1515: else 194s 1515: traits_type::copy(__d, __s, __n); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: static void 194s 1515: _S_move(_CharT* __d, const _CharT* __s, size_type __n) 194s 1515: { 194s 1515: if (__n == 1) 194s 1515: traits_type::assign(*__d, *__s); 194s 1515: else 194s 1515: traits_type::move(__d, __s, __n); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: static void 194s 1515: _S_assign(_CharT* __d, size_type __n, _CharT __c) 194s 1515: { 194s 1515: if (__n == 1) 194s 1515: traits_type::assign(*__d, __c); 194s 1515: else 194s 1515: traits_type::assign(__d, __n, __c); 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: static void 194s 1515: _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) 194s 1515: { 194s 1515: 194s 1515: using _IterBase = decltype(std::__niter_base(__k1)); 194s 1515: if constexpr (__or_, 194s 1515: is_same<_IterBase, const _CharT*>>::value) 194s 1515: _S_copy(__p, std::__niter_base(__k1), __k2 - __k1); 194s 1515: # 502 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: else 194s 1515: 194s 1515: for (; __k1 != __k2; ++__k1, (void)++__p) 194s 1515: traits_type::assign(*__p, static_cast<_CharT>(*__k1)); 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 549 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: static int 194s 1515: _S_compare(size_type __n1, size_type __n2) noexcept 194s 1515: { 194s 1515: const difference_type __d = difference_type(__n1 - __n2); 194s 1515: 194s 1515: if (__d > __gnu_cxx::__numeric_traits::__max) 194s 1515: return __gnu_cxx::__numeric_traits::__max; 194s 1515: else if (__d < __gnu_cxx::__numeric_traits::__min) 194s 1515: return __gnu_cxx::__numeric_traits::__min; 194s 1515: else 194s 1515: return int(__d); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_assign(const basic_string&); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 194s 1515: size_type __len2); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_erase(size_type __pos, size_type __n); 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string() 194s 1515: noexcept(is_nothrow_default_constructible<_Alloc>::value) 194s 1515: 194s 1515: 194s 1515: 194s 1515: : _M_dataplus(_M_local_data()) 194s 1515: { 194s 1515: _M_init_local_buf(); 194s 1515: _M_set_length(0); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: basic_string(const _Alloc& __a) noexcept 194s 1515: : _M_dataplus(_M_local_data(), __a) 194s 1515: { 194s 1515: _M_init_local_buf(); 194s 1515: _M_set_length(0); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string(const basic_string& __str) 194s 1515: : _M_dataplus(_M_local_data(), 194s 1515: _Alloc_traits::_S_select_on_copy(__str._M_get_allocator())) 194s 1515: { 194s 1515: _M_construct(__str._M_data(), __str.length()); 194s 1515: } 194s 1515: # 628 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string(const basic_string& __str, size_type __pos, 194s 1515: const _Alloc& __a = _Alloc()) 194s 1515: : _M_dataplus(_M_local_data(), __a) 194s 1515: { 194s 1515: const _CharT* __start = __str._M_data() 194s 1515: + __str._M_check(__pos, "basic_string::basic_string"); 194s 1515: _M_construct(__start, __start + __str._M_limit(__pos, npos), 194s 1515: std::forward_iterator_tag()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string(const basic_string& __str, size_type __pos, 194s 1515: size_type __n) 194s 1515: : _M_dataplus(_M_local_data()) 194s 1515: { 194s 1515: const _CharT* __start = __str._M_data() 194s 1515: + __str._M_check(__pos, "basic_string::basic_string"); 194s 1515: _M_construct(__start, __start + __str._M_limit(__pos, __n), 194s 1515: std::forward_iterator_tag()); 194s 1515: } 194s 1515: # 663 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string(const basic_string& __str, size_type __pos, 194s 1515: size_type __n, const _Alloc& __a) 194s 1515: : _M_dataplus(_M_local_data(), __a) 194s 1515: { 194s 1515: const _CharT* __start 194s 1515: = __str._M_data() + __str._M_check(__pos, "string::string"); 194s 1515: _M_construct(__start, __start + __str._M_limit(__pos, __n), 194s 1515: std::forward_iterator_tag()); 194s 1515: } 194s 1515: # 683 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string(const _CharT* __s, size_type __n, 194s 1515: const _Alloc& __a = _Alloc()) 194s 1515: : _M_dataplus(_M_local_data(), __a) 194s 1515: { 194s 1515: 194s 1515: if (__s == 0 && __n > 0) 194s 1515: std::__throw_logic_error(("basic_string: " "construction from null is not valid") 194s 1515: ); 194s 1515: _M_construct(__s, __s + __n, std::forward_iterator_tag()); 194s 1515: } 194s 1515: # 705 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) 194s 1515: : _M_dataplus(_M_local_data(), __a) 194s 1515: { 194s 1515: 194s 1515: if (__s == 0) 194s 1515: std::__throw_logic_error(("basic_string: " "construction from null is not valid") 194s 1515: ); 194s 1515: const _CharT* __end = __s + traits_type::length(__s); 194s 1515: _M_construct(__s, __end, forward_iterator_tag()); 194s 1515: } 194s 1515: # 728 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) 194s 1515: : _M_dataplus(_M_local_data(), __a) 194s 1515: { _M_construct(__n, __c); } 194s 1515: # 741 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string(basic_string&& __str) noexcept 194s 1515: : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator())) 194s 1515: { 194s 1515: if (__str._M_is_local()) 194s 1515: { 194s 1515: _M_init_local_buf(); 194s 1515: traits_type::copy(_M_local_buf, __str._M_local_buf, 194s 1515: __str.length() + 1); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: _M_data(__str._M_data()); 194s 1515: _M_capacity(__str._M_allocated_capacity); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_length(__str.length()); 194s 1515: __str._M_data(__str._M_use_local_data()); 194s 1515: __str._M_set_length(0); 194s 1515: } 194s 1515: # 797 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) 194s 1515: : _M_dataplus(_M_local_data(), __a) 194s 1515: { _M_construct(__l.begin(), __l.end(), std::forward_iterator_tag()); } 194s 1515: 194s 1515: 194s 1515: basic_string(const basic_string& __str, const _Alloc& __a) 194s 1515: : _M_dataplus(_M_local_data(), __a) 194s 1515: { _M_construct(__str.begin(), __str.end(), std::forward_iterator_tag()); } 194s 1515: 194s 1515: 194s 1515: basic_string(basic_string&& __str, const _Alloc& __a) 194s 1515: noexcept(_Alloc_traits::_S_always_equal()) 194s 1515: : _M_dataplus(_M_local_data(), __a) 194s 1515: { 194s 1515: if (__str._M_is_local()) 194s 1515: { 194s 1515: _M_init_local_buf(); 194s 1515: traits_type::copy(_M_local_buf, __str._M_local_buf, 194s 1515: __str.length() + 1); 194s 1515: _M_length(__str.length()); 194s 1515: __str._M_set_length(0); 194s 1515: } 194s 1515: else if (_Alloc_traits::_S_always_equal() 194s 1515: || __str.get_allocator() == __a) 194s 1515: { 194s 1515: _M_data(__str._M_data()); 194s 1515: _M_length(__str.length()); 194s 1515: _M_capacity(__str._M_allocated_capacity); 194s 1515: __str._M_data(__str._M_use_local_data()); 194s 1515: __str._M_set_length(0); 194s 1515: } 194s 1515: else 194s 1515: _M_construct(__str.begin(), __str.end(), std::forward_iterator_tag()); 194s 1515: } 194s 1515: # 846 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template> 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string(_InputIterator __beg, _InputIterator __end, 194s 1515: const _Alloc& __a = _Alloc()) 194s 1515: : _M_dataplus(_M_local_data(), __a), _M_string_length(0) 194s 1515: { 194s 1515: 194s 1515: _M_construct(__beg, __end, std::__iterator_category(__beg)); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 894 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: ~basic_string() 194s 1515: { _M_dispose(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: operator=(const basic_string& __str) 194s 1515: { 194s 1515: return this->assign(__str); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: operator=(const _CharT* __s) 194s 1515: { return this->assign(__s); } 194s 1515: # 925 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: operator=(_CharT __c) 194s 1515: { 194s 1515: this->assign(1, __c); 194s 1515: return *this; 194s 1515: } 194s 1515: # 943 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: operator=(basic_string&& __str) 194s 1515: noexcept(_Alloc_traits::_S_nothrow_move()) 194s 1515: { 194s 1515: const bool __equal_allocs = _Alloc_traits::_S_always_equal() 194s 1515: || _M_get_allocator() == __str._M_get_allocator(); 194s 1515: if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign() 194s 1515: && !__equal_allocs) 194s 1515: { 194s 1515: 194s 1515: _M_destroy(_M_allocated_capacity); 194s 1515: _M_data(_M_local_data()); 194s 1515: _M_set_length(0); 194s 1515: } 194s 1515: 194s 1515: std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); 194s 1515: 194s 1515: if (__str._M_is_local()) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__builtin_expect(std::__addressof(__str) != this, true)) 194s 1515: { 194s 1515: if (__str.size()) 194s 1515: this->_S_copy(_M_data(), __str._M_data(), __str.size()); 194s 1515: _M_set_length(__str.size()); 194s 1515: } 194s 1515: } 194s 1515: else if (_Alloc_traits::_S_propagate_on_move_assign() || __equal_allocs) 194s 1515: { 194s 1515: 194s 1515: pointer __data = nullptr; 194s 1515: size_type __capacity; 194s 1515: if (!_M_is_local()) 194s 1515: { 194s 1515: if (__equal_allocs) 194s 1515: { 194s 1515: 194s 1515: __data = _M_data(); 194s 1515: __capacity = _M_allocated_capacity; 194s 1515: } 194s 1515: else 194s 1515: _M_destroy(_M_allocated_capacity); 194s 1515: } 194s 1515: 194s 1515: _M_data(__str._M_data()); 194s 1515: _M_length(__str.length()); 194s 1515: _M_capacity(__str._M_allocated_capacity); 194s 1515: if (__data) 194s 1515: { 194s 1515: __str._M_data(__data); 194s 1515: __str._M_capacity(__capacity); 194s 1515: } 194s 1515: else 194s 1515: __str._M_data(__str._M_use_local_data()); 194s 1515: } 194s 1515: else 194s 1515: _M_assign(__str); 194s 1515: __str.clear(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: operator=(initializer_list<_CharT> __l) 194s 1515: { 194s 1515: this->assign(__l.begin(), __l.size()); 194s 1515: return *this; 194s 1515: } 194s 1515: # 1045 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: iterator 194s 1515: begin() noexcept 194s 1515: { return iterator(_M_data()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: begin() const noexcept 194s 1515: { return const_iterator(_M_data()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: iterator 194s 1515: end() noexcept 194s 1515: { return iterator(_M_data() + this->size()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: end() const noexcept 194s 1515: { return const_iterator(_M_data() + this->size()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reverse_iterator 194s 1515: rbegin() noexcept 194s 1515: { return reverse_iterator(this->end()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: rbegin() const noexcept 194s 1515: { return const_reverse_iterator(this->end()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reverse_iterator 194s 1515: rend() noexcept 194s 1515: { return reverse_iterator(this->begin()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: rend() const noexcept 194s 1515: { return const_reverse_iterator(this->begin()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: cbegin() const noexcept 194s 1515: { return const_iterator(this->_M_data()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: cend() const noexcept 194s 1515: { return const_iterator(this->_M_data() + this->size()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: crbegin() const noexcept 194s 1515: { return const_reverse_iterator(this->end()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: crend() const noexcept 194s 1515: { return const_reverse_iterator(this->begin()); } 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { 194s 1515: size_type __sz = _M_string_length; 194s 1515: if (__sz > max_size ()) 194s 1515: __builtin_unreachable (); 194s 1515: return __sz; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: length() const noexcept 194s 1515: { return size(); } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { 194s 1515: const size_t __diffmax 194s 1515: = __gnu_cxx::__numeric_traits::__max / sizeof(_CharT); 194s 1515: const size_t __allocmax = _Alloc_traits::max_size(_M_get_allocator()); 194s 1515: return (std::min)(__diffmax, __allocmax) - 1; 194s 1515: } 194s 1515: # 1199 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: void 194s 1515: resize(size_type __n, _CharT __c); 194s 1515: # 1213 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: void 194s 1515: resize(size_type __n) 194s 1515: { this->resize(__n, _CharT()); } 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: void 194s 1515: shrink_to_fit() noexcept 194s 1515: { reserve(); } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 1266 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: __resize_and_overwrite(size_type __n, _Operation __op); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: capacity() const noexcept 194s 1515: { 194s 1515: size_t __sz = _M_is_local() ? size_type(_S_local_capacity) 194s 1515: : _M_allocated_capacity; 194s 1515: if (__sz < _S_local_capacity || __sz > max_size ()) 194s 1515: __builtin_unreachable (); 194s 1515: return __sz; 194s 1515: } 194s 1515: # 1303 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: void 194s 1515: reserve(size_type __res_arg); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: reserve(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { _M_set_length(0); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: empty() const noexcept 194s 1515: { return _M_string_length == 0; } 194s 1515: # 1345 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: operator[] (size_type __pos) const noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__pos <= size())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return _M_data()[__pos]; 194s 1515: } 194s 1515: # 1363 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: operator[](size_type __pos) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__pos <= size())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: ; 194s 1515: return _M_data()[__pos]; 194s 1515: } 194s 1515: # 1385 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: at(size_type __n) const 194s 1515: { 194s 1515: if (__n >= this->size()) 194s 1515: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 194s 1515: 194s 1515: , 194s 1515: __n, this->size()); 194s 1515: return _M_data()[__n]; 194s 1515: } 194s 1515: # 1407 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: at(size_type __n) 194s 1515: { 194s 1515: if (__n >= size()) 194s 1515: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 194s 1515: 194s 1515: , 194s 1515: __n, this->size()); 194s 1515: return _M_data()[__n]; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: front() noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return operator[](0); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: front() const noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return operator[](0); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: back() noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return operator[](this->size() - 1); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: back() const noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return operator[](this->size() - 1); 194s 1515: } 194s 1515: # 1475 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: operator+=(const basic_string& __str) 194s 1515: { return this->append(__str); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: operator+=(const _CharT* __s) 194s 1515: { return this->append(__s); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: operator+=(_CharT __c) 194s 1515: { 194s 1515: this->push_back(__c); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: operator+=(initializer_list<_CharT> __l) 194s 1515: { return this->append(__l.begin(), __l.size()); } 194s 1515: # 1533 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: append(const basic_string& __str) 194s 1515: { return this->append(__str._M_data(), __str.size()); } 194s 1515: # 1551 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: append(const basic_string& __str, size_type __pos, size_type __n = npos) 194s 1515: { return this->append(__str._M_data() 194s 1515: + __str._M_check(__pos, "basic_string::append"), 194s 1515: __str._M_limit(__pos, __n)); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: append(const _CharT* __s, size_type __n) 194s 1515: { 194s 1515: ; 194s 1515: _M_check_length(size_type(0), __n, "basic_string::append"); 194s 1515: return _M_append(__s, __n); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: append(const _CharT* __s) 194s 1515: { 194s 1515: ; 194s 1515: const size_type __n = traits_type::length(__s); 194s 1515: _M_check_length(size_type(0), __n, "basic_string::append"); 194s 1515: return _M_append(__s, __n); 194s 1515: } 194s 1515: # 1596 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: append(size_type __n, _CharT __c) 194s 1515: { return _M_replace_aux(this->size(), size_type(0), __n, __c); } 194s 1515: # 1659 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: append(initializer_list<_CharT> __l) 194s 1515: { return this->append(__l.begin(), __l.size()); } 194s 1515: # 1674 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template> 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: append(_InputIterator __first, _InputIterator __last) 194s 1515: { return this->replace(end(), end(), __first, __last); } 194s 1515: # 1722 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: void 194s 1515: push_back(_CharT __c) 194s 1515: { 194s 1515: const size_type __size = this->size(); 194s 1515: if (__size + 1 > this->capacity()) 194s 1515: this->_M_mutate(__size, size_type(0), 0, size_type(1)); 194s 1515: traits_type::assign(this->_M_data()[__size], __c); 194s 1515: this->_M_set_length(__size + 1); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: assign(const basic_string& __str) 194s 1515: { 194s 1515: 194s 1515: if (_Alloc_traits::_S_propagate_on_copy_assign()) 194s 1515: { 194s 1515: if (!_Alloc_traits::_S_always_equal() && !_M_is_local() 194s 1515: && _M_get_allocator() != __str._M_get_allocator()) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (__str.size() <= _S_local_capacity) 194s 1515: { 194s 1515: _M_destroy(_M_allocated_capacity); 194s 1515: _M_data(_M_use_local_data()); 194s 1515: _M_set_length(0); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: const auto __len = __str.size(); 194s 1515: auto __alloc = __str._M_get_allocator(); 194s 1515: 194s 1515: auto __ptr = _S_allocate(__alloc, __len + 1); 194s 1515: _M_destroy(_M_allocated_capacity); 194s 1515: _M_data(__ptr); 194s 1515: _M_capacity(__len); 194s 1515: _M_set_length(__len); 194s 1515: } 194s 1515: } 194s 1515: std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator()); 194s 1515: } 194s 1515: 194s 1515: this->_M_assign(__str); 194s 1515: return *this; 194s 1515: } 194s 1515: # 1784 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: assign(basic_string&& __str) 194s 1515: noexcept(_Alloc_traits::_S_nothrow_move()) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: return *this = std::move(__str); 194s 1515: } 194s 1515: # 1808 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: assign(const basic_string& __str, size_type __pos, size_type __n = npos) 194s 1515: { return _M_replace(size_type(0), this->size(), __str._M_data() 194s 1515: + __str._M_check(__pos, "basic_string::assign"), 194s 1515: __str._M_limit(__pos, __n)); } 194s 1515: # 1825 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: assign(const _CharT* __s, size_type __n) 194s 1515: { 194s 1515: ; 194s 1515: return _M_replace(size_type(0), this->size(), __s, __n); 194s 1515: } 194s 1515: # 1842 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: assign(const _CharT* __s) 194s 1515: { 194s 1515: ; 194s 1515: return _M_replace(size_type(0), this->size(), __s, 194s 1515: traits_type::length(__s)); 194s 1515: } 194s 1515: # 1860 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: assign(size_type __n, _CharT __c) 194s 1515: { return _M_replace_aux(size_type(0), this->size(), __n, __c); } 194s 1515: # 1874 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template> 194s 1515: 194s 1515: basic_string& 194s 1515: assign(_InputIterator __first, _InputIterator __last) 194s 1515: { 194s 1515: using _IterTraits = iterator_traits<_InputIterator>; 194s 1515: if constexpr (is_pointer::value 194s 1515: && is_same::value) 194s 1515: { 194s 1515: ; 194s 1515: return _M_replace(size_type(0), size(), 194s 1515: std::__niter_base(__first), __last - __first); 194s 1515: } 194s 1515: # 1901 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: else 194s 1515: return *this = basic_string(__first, __last, get_allocator()); 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 1937 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: assign(initializer_list<_CharT> __l) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const size_type __n = __l.size(); 194s 1515: if (__n > capacity()) 194s 1515: *this = basic_string(__l.begin(), __l.end(), get_allocator()); 194s 1515: else 194s 1515: { 194s 1515: if (__n) 194s 1515: _S_copy(_M_data(), __l.begin(), __n); 194s 1515: _M_set_length(__n); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: # 2007 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __p, size_type __n, _CharT __c) 194s 1515: { 194s 1515: ; 194s 1515: const size_type __pos = __p - begin(); 194s 1515: this->replace(__p, __p, __n, __c); 194s 1515: return iterator(this->_M_data() + __pos); 194s 1515: } 194s 1515: # 2050 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template> 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __p, _InputIterator __beg, _InputIterator __end) 194s 1515: { 194s 1515: ; 194s 1515: const size_type __pos = __p - begin(); 194s 1515: this->replace(__p, __p, __beg, __end); 194s 1515: return iterator(this->_M_data() + __pos); 194s 1515: } 194s 1515: # 2118 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __p, initializer_list<_CharT> __l) 194s 1515: { return this->insert(__p, __l.begin(), __l.end()); } 194s 1515: # 2146 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: insert(size_type __pos1, const basic_string& __str) 194s 1515: { return this->replace(__pos1, size_type(0), 194s 1515: __str._M_data(), __str.size()); } 194s 1515: # 2170 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: insert(size_type __pos1, const basic_string& __str, 194s 1515: size_type __pos2, size_type __n = npos) 194s 1515: { return this->replace(__pos1, size_type(0), __str._M_data() 194s 1515: + __str._M_check(__pos2, "basic_string::insert"), 194s 1515: __str._M_limit(__pos2, __n)); } 194s 1515: # 2194 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: insert(size_type __pos, const _CharT* __s, size_type __n) 194s 1515: { return this->replace(__pos, size_type(0), __s, __n); } 194s 1515: # 2214 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: insert(size_type __pos, const _CharT* __s) 194s 1515: { 194s 1515: ; 194s 1515: return this->replace(__pos, size_type(0), __s, 194s 1515: traits_type::length(__s)); 194s 1515: } 194s 1515: # 2239 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: insert(size_type __pos, size_type __n, _CharT __c) 194s 1515: { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), 194s 1515: size_type(0), __n, __c); } 194s 1515: # 2258 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: insert(__const_iterator __p, _CharT __c) 194s 1515: { 194s 1515: ; 194s 1515: const size_type __pos = __p - begin(); 194s 1515: _M_replace_aux(__pos, size_type(0), size_type(1), __c); 194s 1515: return iterator(_M_data() + __pos); 194s 1515: } 194s 1515: # 2321 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: erase(size_type __pos = 0, size_type __n = npos) 194s 1515: { 194s 1515: _M_check(__pos, "basic_string::erase"); 194s 1515: if (__n == npos) 194s 1515: this->_M_set_length(__pos); 194s 1515: else if (__n != 0) 194s 1515: this->_M_erase(__pos, _M_limit(__pos, __n)); 194s 1515: return *this; 194s 1515: } 194s 1515: # 2341 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: erase(__const_iterator __position) 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: const size_type __pos = __position - begin(); 194s 1515: this->_M_erase(__pos, size_type(1)); 194s 1515: return iterator(_M_data() + __pos); 194s 1515: } 194s 1515: # 2361 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: erase(__const_iterator __first, __const_iterator __last) 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: const size_type __pos = __first - begin(); 194s 1515: if (__last == end()) 194s 1515: this->_M_set_length(__pos); 194s 1515: else 194s 1515: this->_M_erase(__pos, __last - __first); 194s 1515: return iterator(this->_M_data() + __pos); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: pop_back() noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: _M_erase(size() - 1, 1); 194s 1515: } 194s 1515: # 2407 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: replace(size_type __pos, size_type __n, const basic_string& __str) 194s 1515: { return this->replace(__pos, __n, __str._M_data(), __str.size()); } 194s 1515: # 2430 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: replace(size_type __pos1, size_type __n1, const basic_string& __str, 194s 1515: size_type __pos2, size_type __n2 = npos) 194s 1515: { return this->replace(__pos1, __n1, __str._M_data() 194s 1515: + __str._M_check(__pos2, "basic_string::replace"), 194s 1515: __str._M_limit(__pos2, __n2)); } 194s 1515: # 2456 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: replace(size_type __pos, size_type __n1, const _CharT* __s, 194s 1515: size_type __n2) 194s 1515: { 194s 1515: ; 194s 1515: return _M_replace(_M_check(__pos, "basic_string::replace"), 194s 1515: _M_limit(__pos, __n1), __s, __n2); 194s 1515: } 194s 1515: # 2482 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: replace(size_type __pos, size_type __n1, const _CharT* __s) 194s 1515: { 194s 1515: ; 194s 1515: return this->replace(__pos, __n1, __s, traits_type::length(__s)); 194s 1515: } 194s 1515: # 2507 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) 194s 1515: { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), 194s 1515: _M_limit(__pos, __n1), __n2, __c); } 194s 1515: # 2526 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: replace(__const_iterator __i1, __const_iterator __i2, 194s 1515: const basic_string& __str) 194s 1515: { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } 194s 1515: # 2547 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: replace(__const_iterator __i1, __const_iterator __i2, 194s 1515: const _CharT* __s, size_type __n) 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: return this->replace(__i1 - begin(), __i2 - __i1, __s, __n); 194s 1515: } 194s 1515: # 2570 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s) 194s 1515: { 194s 1515: ; 194s 1515: return this->replace(__i1, __i2, __s, traits_type::length(__s)); 194s 1515: } 194s 1515: # 2592 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: replace(__const_iterator __i1, __const_iterator __i2, size_type __n, 194s 1515: _CharT __c) 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c); 194s 1515: } 194s 1515: # 2618 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template> 194s 1515: 194s 1515: basic_string& 194s 1515: replace(const_iterator __i1, const_iterator __i2, 194s 1515: _InputIterator __k1, _InputIterator __k2) 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, 194s 1515: std::__false_type()); 194s 1515: } 194s 1515: # 2651 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& 194s 1515: replace(__const_iterator __i1, __const_iterator __i2, 194s 1515: _CharT* __k1, _CharT* __k2) 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: return this->replace(__i1 - begin(), __i2 - __i1, 194s 1515: __k1, __k2 - __k1); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: replace(__const_iterator __i1, __const_iterator __i2, 194s 1515: const _CharT* __k1, const _CharT* __k2) 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: return this->replace(__i1 - begin(), __i2 - __i1, 194s 1515: __k1, __k2 - __k1); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: replace(__const_iterator __i1, __const_iterator __i2, 194s 1515: iterator __k1, iterator __k2) 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: return this->replace(__i1 - begin(), __i2 - __i1, 194s 1515: __k1.base(), __k2 - __k1); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: replace(__const_iterator __i1, __const_iterator __i2, 194s 1515: const_iterator __k1, const_iterator __k2) 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: return this->replace(__i1 - begin(), __i2 - __i1, 194s 1515: __k1.base(), __k2 - __k1); 194s 1515: } 194s 1515: # 2738 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: basic_string& replace(const_iterator __i1, const_iterator __i2, 194s 1515: initializer_list<_CharT> __l) 194s 1515: { return this->replace(__i1, __i2, __l.begin(), __l.size()); } 194s 1515: # 2802 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: private: 194s 1515: template 194s 1515: 194s 1515: basic_string& 194s 1515: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 194s 1515: _Integer __n, _Integer __val, __true_type) 194s 1515: { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: basic_string& 194s 1515: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 194s 1515: _InputIterator __k1, _InputIterator __k2, 194s 1515: __false_type); 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 194s 1515: _CharT __c); 194s 1515: 194s 1515: __attribute__((__noinline__, __noclone__, __cold__)) void 194s 1515: _M_replace_cold(pointer __p, size_type __len1, const _CharT* __s, 194s 1515: const size_type __len2, const size_type __how_much); 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 194s 1515: const size_type __len2); 194s 1515: 194s 1515: 194s 1515: basic_string& 194s 1515: _M_append(const _CharT* __s, size_type __n); 194s 1515: 194s 1515: public: 194s 1515: # 2849 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: size_type 194s 1515: copy(_CharT* __s, size_type __n, size_type __pos = 0) const; 194s 1515: # 2860 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: void 194s 1515: swap(basic_string& __s) noexcept; 194s 1515: # 2871 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: const _CharT* 194s 1515: c_str() const noexcept 194s 1515: { return _M_data(); } 194s 1515: # 2884 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: const _CharT* 194s 1515: data() const noexcept 194s 1515: { return _M_data(); } 194s 1515: # 2905 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return _M_get_allocator(); } 194s 1515: # 2922 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find(const _CharT* __s, size_type __pos, size_type __n) const 194s 1515: noexcept; 194s 1515: # 2937 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find(const basic_string& __str, size_type __pos = 0) const 194s 1515: noexcept 194s 1515: { return this->find(__str.data(), __pos, __str.size()); } 194s 1515: # 2971 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find(const _CharT* __s, size_type __pos = 0) const noexcept 194s 1515: { 194s 1515: ; 194s 1515: return this->find(__s, __pos, traits_type::length(__s)); 194s 1515: } 194s 1515: # 2989 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find(_CharT __c, size_type __pos = 0) const noexcept; 194s 1515: # 3003 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: rfind(const basic_string& __str, size_type __pos = npos) const 194s 1515: noexcept 194s 1515: { return this->rfind(__str.data(), __pos, __str.size()); } 194s 1515: # 3039 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: rfind(const _CharT* __s, size_type __pos, size_type __n) const 194s 1515: noexcept; 194s 1515: # 3054 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: rfind(const _CharT* __s, size_type __pos = npos) const 194s 1515: { 194s 1515: ; 194s 1515: return this->rfind(__s, __pos, traits_type::length(__s)); 194s 1515: } 194s 1515: # 3072 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: rfind(_CharT __c, size_type __pos = npos) const noexcept; 194s 1515: # 3087 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_first_of(const basic_string& __str, size_type __pos = 0) const 194s 1515: noexcept 194s 1515: { return this->find_first_of(__str.data(), __pos, __str.size()); } 194s 1515: # 3124 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 194s 1515: noexcept; 194s 1515: # 3139 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_first_of(const _CharT* __s, size_type __pos = 0) const 194s 1515: noexcept 194s 1515: { 194s 1515: ; 194s 1515: return this->find_first_of(__s, __pos, traits_type::length(__s)); 194s 1515: } 194s 1515: # 3160 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_first_of(_CharT __c, size_type __pos = 0) const noexcept 194s 1515: { return this->find(__c, __pos); } 194s 1515: # 3176 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_last_of(const basic_string& __str, size_type __pos = npos) const 194s 1515: noexcept 194s 1515: { return this->find_last_of(__str.data(), __pos, __str.size()); } 194s 1515: # 3213 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 194s 1515: noexcept; 194s 1515: # 3228 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_last_of(const _CharT* __s, size_type __pos = npos) const 194s 1515: noexcept 194s 1515: { 194s 1515: ; 194s 1515: return this->find_last_of(__s, __pos, traits_type::length(__s)); 194s 1515: } 194s 1515: # 3249 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_last_of(_CharT __c, size_type __pos = npos) const noexcept 194s 1515: { return this->rfind(__c, __pos); } 194s 1515: # 3264 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_first_not_of(const basic_string& __str, size_type __pos = 0) const 194s 1515: noexcept 194s 1515: { return this->find_first_not_of(__str.data(), __pos, __str.size()); } 194s 1515: # 3301 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_first_not_of(const _CharT* __s, size_type __pos, 194s 1515: size_type __n) const noexcept; 194s 1515: # 3316 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_first_not_of(const _CharT* __s, size_type __pos = 0) const 194s 1515: noexcept 194s 1515: { 194s 1515: ; 194s 1515: return this->find_first_not_of(__s, __pos, traits_type::length(__s)); 194s 1515: } 194s 1515: # 3335 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_first_not_of(_CharT __c, size_type __pos = 0) const 194s 1515: noexcept; 194s 1515: # 3351 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_last_not_of(const basic_string& __str, size_type __pos = npos) const 194s 1515: noexcept 194s 1515: { return this->find_last_not_of(__str.data(), __pos, __str.size()); } 194s 1515: # 3388 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_last_not_of(const _CharT* __s, size_type __pos, 194s 1515: size_type __n) const noexcept; 194s 1515: # 3403 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_last_not_of(const _CharT* __s, size_type __pos = npos) const 194s 1515: noexcept 194s 1515: { 194s 1515: ; 194s 1515: return this->find_last_not_of(__s, __pos, traits_type::length(__s)); 194s 1515: } 194s 1515: # 3422 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: find_last_not_of(_CharT __c, size_type __pos = npos) const 194s 1515: noexcept; 194s 1515: # 3439 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: basic_string 194s 1515: substr(size_type __pos = 0, size_type __n = npos) const 194s 1515: { return basic_string(*this, 194s 1515: _M_check(__pos, "basic_string::substr"), __n); } 194s 1515: # 3459 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: int 194s 1515: compare(const basic_string& __str) const 194s 1515: { 194s 1515: const size_type __size = this->size(); 194s 1515: const size_type __osize = __str.size(); 194s 1515: const size_type __len = std::min(__size, __osize); 194s 1515: 194s 1515: int __r = traits_type::compare(_M_data(), __str.data(), __len); 194s 1515: if (!__r) 194s 1515: __r = _S_compare(__size, __osize); 194s 1515: return __r; 194s 1515: } 194s 1515: # 3556 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: int 194s 1515: compare(size_type __pos, size_type __n, const basic_string& __str) const 194s 1515: { 194s 1515: _M_check(__pos, "basic_string::compare"); 194s 1515: __n = _M_limit(__pos, __n); 194s 1515: const size_type __osize = __str.size(); 194s 1515: const size_type __len = std::min(__n, __osize); 194s 1515: int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); 194s 1515: if (!__r) 194s 1515: __r = _S_compare(__n, __osize); 194s 1515: return __r; 194s 1515: } 194s 1515: # 3593 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: int 194s 1515: compare(size_type __pos1, size_type __n1, const basic_string& __str, 194s 1515: size_type __pos2, size_type __n2 = npos) const 194s 1515: { 194s 1515: _M_check(__pos1, "basic_string::compare"); 194s 1515: __str._M_check(__pos2, "basic_string::compare"); 194s 1515: __n1 = _M_limit(__pos1, __n1); 194s 1515: __n2 = __str._M_limit(__pos2, __n2); 194s 1515: const size_type __len = std::min(__n1, __n2); 194s 1515: int __r = traits_type::compare(_M_data() + __pos1, 194s 1515: __str.data() + __pos2, __len); 194s 1515: if (!__r) 194s 1515: __r = _S_compare(__n1, __n2); 194s 1515: return __r; 194s 1515: } 194s 1515: # 3624 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: int 194s 1515: compare(const _CharT* __s) const noexcept 194s 1515: { 194s 1515: ; 194s 1515: const size_type __size = this->size(); 194s 1515: const size_type __osize = traits_type::length(__s); 194s 1515: const size_type __len = std::min(__size, __osize); 194s 1515: int __r = traits_type::compare(_M_data(), __s, __len); 194s 1515: if (!__r) 194s 1515: __r = _S_compare(__size, __osize); 194s 1515: return __r; 194s 1515: } 194s 1515: # 3659 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: int 194s 1515: compare(size_type __pos, size_type __n1, const _CharT* __s) const 194s 1515: { 194s 1515: ; 194s 1515: _M_check(__pos, "basic_string::compare"); 194s 1515: __n1 = _M_limit(__pos, __n1); 194s 1515: const size_type __osize = traits_type::length(__s); 194s 1515: const size_type __len = std::min(__n1, __osize); 194s 1515: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 194s 1515: if (!__r) 194s 1515: __r = _S_compare(__n1, __osize); 194s 1515: return __r; 194s 1515: } 194s 1515: # 3698 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: int 194s 1515: compare(size_type __pos, size_type __n1, const _CharT* __s, 194s 1515: size_type __n2) const 194s 1515: { 194s 1515: ; 194s 1515: _M_check(__pos, "basic_string::compare"); 194s 1515: __n1 = _M_limit(__pos, __n1); 194s 1515: const size_type __len = std::min(__n1, __n2); 194s 1515: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 194s 1515: if (!__r) 194s 1515: __r = _S_compare(__n1, __n2); 194s 1515: return __r; 194s 1515: } 194s 1515: # 3763 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template friend class basic_stringbuf; 194s 1515: }; 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 3812 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _Str 194s 1515: __str_concat(typename _Str::value_type const* __lhs, 194s 1515: typename _Str::size_type __lhs_len, 194s 1515: typename _Str::value_type const* __rhs, 194s 1515: typename _Str::size_type __rhs_len, 194s 1515: typename _Str::allocator_type const& __a) 194s 1515: { 194s 1515: typedef typename _Str::allocator_type allocator_type; 194s 1515: typedef __gnu_cxx::__alloc_traits _Alloc_traits; 194s 1515: _Str __str(_Alloc_traits::_S_select_on_copy(__a)); 194s 1515: __str.reserve(__lhs_len + __rhs_len); 194s 1515: __str.append(__lhs, __lhs_len); 194s 1515: __str.append(__rhs, __rhs_len); 194s 1515: return __str; 194s 1515: } 194s 1515: # 3837 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline basic_string<_CharT, _Traits, _Alloc> 194s 1515: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: { 194s 1515: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 194s 1515: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), 194s 1515: __rhs.c_str(), __rhs.size(), 194s 1515: __lhs.get_allocator()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline basic_string<_CharT,_Traits,_Alloc> 194s 1515: operator+(const _CharT* __lhs, 194s 1515: const basic_string<_CharT,_Traits,_Alloc>& __rhs) 194s 1515: { 194s 1515: ; 194s 1515: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 194s 1515: return std::__str_concat<_Str>(__lhs, _Traits::length(__lhs), 194s 1515: __rhs.c_str(), __rhs.size(), 194s 1515: __rhs.get_allocator()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline basic_string<_CharT,_Traits,_Alloc> 194s 1515: operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs) 194s 1515: { 194s 1515: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 194s 1515: return std::__str_concat<_Str>(__builtin_addressof(__lhs), 1, 194s 1515: __rhs.c_str(), __rhs.size(), 194s 1515: __rhs.get_allocator()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline basic_string<_CharT, _Traits, _Alloc> 194s 1515: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const _CharT* __rhs) 194s 1515: { 194s 1515: ; 194s 1515: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 194s 1515: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), 194s 1515: __rhs, _Traits::length(__rhs), 194s 1515: __lhs.get_allocator()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline basic_string<_CharT, _Traits, _Alloc> 194s 1515: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) 194s 1515: { 194s 1515: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 194s 1515: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), 194s 1515: __builtin_addressof(__rhs), 1, 194s 1515: __lhs.get_allocator()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline basic_string<_CharT, _Traits, _Alloc> 194s 1515: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: { return std::move(__lhs.append(__rhs)); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline basic_string<_CharT, _Traits, _Alloc> 194s 1515: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 194s 1515: { return std::move(__rhs.insert(0, __lhs)); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline basic_string<_CharT, _Traits, _Alloc> 194s 1515: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 194s 1515: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 194s 1515: { 194s 1515: 194s 1515: using _Alloc_traits = allocator_traits<_Alloc>; 194s 1515: bool __use_rhs = false; 194s 1515: if (typename _Alloc_traits::is_always_equal{}) 194s 1515: __use_rhs = true; 194s 1515: else if (__lhs.get_allocator() == __rhs.get_allocator()) 194s 1515: __use_rhs = true; 194s 1515: if (__use_rhs) 194s 1515: 194s 1515: { 194s 1515: const auto __size = __lhs.size() + __rhs.size(); 194s 1515: if (__size > __lhs.capacity() && __size <= __rhs.capacity()) 194s 1515: return std::move(__rhs.insert(0, __lhs)); 194s 1515: } 194s 1515: return std::move(__lhs.append(__rhs)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] [[__nodiscard__]] 194s 1515: inline basic_string<_CharT, _Traits, _Alloc> 194s 1515: operator+(const _CharT* __lhs, 194s 1515: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 194s 1515: { return std::move(__rhs.insert(0, __lhs)); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline basic_string<_CharT, _Traits, _Alloc> 194s 1515: operator+(_CharT __lhs, 194s 1515: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 194s 1515: { return std::move(__rhs.insert(0, 1, __lhs)); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline basic_string<_CharT, _Traits, _Alloc> 194s 1515: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 194s 1515: const _CharT* __rhs) 194s 1515: { return std::move(__lhs.append(__rhs)); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline basic_string<_CharT, _Traits, _Alloc> 194s 1515: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 194s 1515: _CharT __rhs) 194s 1515: { return std::move(__lhs.append(1, __rhs)); } 194s 1515: # 4042 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: noexcept 194s 1515: { 194s 1515: return __lhs.size() == __rhs.size() 194s 1515: && !_Traits::compare(__lhs.data(), __rhs.data(), __lhs.size()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const _CharT* __rhs) 194s 1515: { 194s 1515: return __lhs.size() == _Traits::length(__rhs) 194s 1515: && !_Traits::compare(__lhs.data(), __rhs, __lhs.size()); 194s 1515: } 194s 1515: # 4106 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const _CharT* __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: { return __rhs == __lhs; } 194s 1515: # 4120 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: noexcept 194s 1515: { return !(__lhs == __rhs); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator!=(const _CharT* __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: { return !(__rhs == __lhs); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const _CharT* __rhs) 194s 1515: { return !(__lhs == __rhs); } 194s 1515: # 4161 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.compare(__rhs) < 0; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const _CharT* __rhs) 194s 1515: { return __lhs.compare(__rhs) < 0; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<(const _CharT* __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: { return __rhs.compare(__lhs) > 0; } 194s 1515: # 4202 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.compare(__rhs) > 0; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const _CharT* __rhs) 194s 1515: { return __lhs.compare(__rhs) > 0; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>(const _CharT* __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: { return __rhs.compare(__lhs) < 0; } 194s 1515: # 4243 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.compare(__rhs) <= 0; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const _CharT* __rhs) 194s 1515: { return __lhs.compare(__rhs) <= 0; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator<=(const _CharT* __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: { return __rhs.compare(__lhs) >= 0; } 194s 1515: # 4284 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: noexcept 194s 1515: { return __lhs.compare(__rhs) >= 0; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: const _CharT* __rhs) 194s 1515: { return __lhs.compare(__rhs) >= 0; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator>=(const _CharT* __lhs, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: { return __rhs.compare(__lhs) <= 0; } 194s 1515: # 4326 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __rhs) 194s 1515: noexcept(noexcept(__lhs.swap(__rhs))) 194s 1515: { __lhs.swap(__rhs); } 194s 1515: # 4347 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __is, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __str); 194s 1515: 194s 1515: template<> 194s 1515: basic_istream& 194s 1515: operator>>(basic_istream& __is, basic_string& __str); 194s 1515: # 4365 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __os, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __str) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: return __ostream_insert(__os, __str.data(), __str.size()); 194s 1515: } 194s 1515: # 4388 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: getline(basic_istream<_CharT, _Traits>& __is, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); 194s 1515: # 4405 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: inline basic_istream<_CharT, _Traits>& 194s 1515: getline(basic_istream<_CharT, _Traits>& __is, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __str) 194s 1515: { return std::getline(__is, __str, __is.widen('\n')); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline basic_istream<_CharT, _Traits>& 194s 1515: getline(basic_istream<_CharT, _Traits>&& __is, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 194s 1515: { return std::getline(__is, __str, __delim); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline basic_istream<_CharT, _Traits>& 194s 1515: getline(basic_istream<_CharT, _Traits>&& __is, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __str) 194s 1515: { return std::getline(__is, __str); } 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: basic_istream& 194s 1515: getline(basic_istream& __in, basic_string& __str, 194s 1515: char __delim); 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: basic_istream& 194s 1515: getline(basic_istream& __in, basic_string& __str, 194s 1515: wchar_t __delim); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/ext/string_conversions.h" 1 3 4 194s 1515: # 48 "/usr/include/c++/15/ext/string_conversions.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/cerrno" 1 3 4 194s 1515: # 47 "/usr/include/c++/15/cerrno" 3 4 194s 1515: # 1 "/usr/include/errno.h" 1 3 4 194s 1515: # 28 "/usr/include/errno.h" 3 4 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 1 3 4 194s 1515: # 26 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 3 4 194s 1515: # 1 "/usr/include/linux/errno.h" 1 3 4 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/asm/errno.h" 1 3 4 194s 1515: # 1 "/usr/include/asm-generic/errno.h" 1 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 194s 1515: # 6 "/usr/include/asm-generic/errno.h" 2 3 4 194s 1515: # 2 "/usr/include/arm-linux-gnueabihf/asm/errno.h" 2 3 4 194s 1515: # 2 "/usr/include/linux/errno.h" 2 3 4 194s 1515: # 27 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 2 3 4 194s 1515: # 29 "/usr/include/errno.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern "C" { 194s 1515: 194s 1515: 194s 1515: extern int *__errno_location (void) noexcept (true) __attribute__ ((__const__)); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern char *program_invocation_name; 194s 1515: extern char *program_invocation_short_name; 194s 1515: 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/error_t.h" 1 3 4 194s 1515: # 22 "/usr/include/arm-linux-gnueabihf/bits/types/error_t.h" 3 4 194s 1515: typedef int error_t; 194s 1515: # 49 "/usr/include/errno.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 48 "/usr/include/c++/15/cerrno" 2 3 4 194s 1515: # 49 "/usr/include/c++/15/ext/string_conversions.h" 2 3 4 194s 1515: 194s 1515: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _Ret 194s 1515: __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...), 194s 1515: const char* __name, const _CharT* __str, std::size_t* __idx, 194s 1515: _Base... __base) 194s 1515: { 194s 1515: _Ret __ret; 194s 1515: 194s 1515: _CharT* __endptr; 194s 1515: 194s 1515: struct _Save_errno { 194s 1515: _Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; } 194s 1515: ~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; } 194s 1515: int _M_errno; 194s 1515: } const __save_errno; 194s 1515: 194s 1515: struct _Range_chk { 194s 1515: static bool 194s 1515: _S_chk(_TRet, std::false_type) { return false; } 194s 1515: 194s 1515: static bool 194s 1515: _S_chk(_TRet __val, std::true_type) 194s 1515: { 194s 1515: return __val < _TRet(__numeric_traits::__min) 194s 1515: || __val > _TRet(__numeric_traits::__max); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: const _TRet __tmp = __convf(__str, &__endptr, __base...); 194s 1515: 194s 1515: if (__endptr == __str) 194s 1515: std::__throw_invalid_argument(__name); 194s 1515: else if ((*__errno_location ()) == 34 194s 1515: || _Range_chk::_S_chk(__tmp, std::is_same<_Ret, int>{})) 194s 1515: std::__throw_out_of_range(__name); 194s 1515: else 194s 1515: __ret = __tmp; 194s 1515: 194s 1515: if (__idx) 194s 1515: *__idx = __endptr - __str; 194s 1515: 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _String 194s 1515: __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*, 194s 1515: __builtin_va_list), std::size_t __n, 194s 1515: const _CharT* __fmt, ...) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 194s 1515: * __n)); 194s 1515: 194s 1515: __builtin_va_list __args; 194s 1515: __builtin_va_start(__args, __fmt); 194s 1515: 194s 1515: const int __len = __convf(__s, __n, __fmt, __args); 194s 1515: 194s 1515: __builtin_va_end(__args); 194s 1515: 194s 1515: return _String(__s, __s + __len); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 4445 "/usr/include/c++/15/bits/basic_string.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/charconv.h" 1 3 4 194s 1515: # 42 "/usr/include/c++/15/bits/charconv.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: namespace __detail 194s 1515: { 194s 1515: # 55 "/usr/include/c++/15/bits/charconv.h" 3 4 194s 1515: template 194s 1515: unsigned 194s 1515: __to_chars_len(_Tp __value, int __base = 10) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: unsigned __n = 1; 194s 1515: const unsigned __b2 = __base * __base; 194s 1515: const unsigned __b3 = __b2 * __base; 194s 1515: const unsigned long __b4 = __b3 * __base; 194s 1515: for (;;) 194s 1515: { 194s 1515: if (__value < (unsigned)__base) return __n; 194s 1515: if (__value < __b2) return __n + 1; 194s 1515: if (__value < __b3) return __n + 2; 194s 1515: if (__value < __b4) return __n + 3; 194s 1515: __value /= __b4; 194s 1515: __n += 4; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __to_chars_10_impl(char* __first, unsigned __len, _Tp __val) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: constexpr char __digits[201] = 194s 1515: "0001020304050607080910111213141516171819" 194s 1515: "2021222324252627282930313233343536373839" 194s 1515: "4041424344454647484950515253545556575859" 194s 1515: "6061626364656667686970717273747576777879" 194s 1515: "8081828384858687888990919293949596979899"; 194s 1515: unsigned __pos = __len - 1; 194s 1515: while (__val >= 100) 194s 1515: { 194s 1515: auto const __num = (__val % 100) * 2; 194s 1515: __val /= 100; 194s 1515: __first[__pos] = __digits[__num + 1]; 194s 1515: __first[__pos - 1] = __digits[__num]; 194s 1515: __pos -= 2; 194s 1515: } 194s 1515: if (__val >= 10) 194s 1515: { 194s 1515: auto const __num = __val * 2; 194s 1515: __first[1] = __digits[__num + 1]; 194s 1515: __first[0] = __digits[__num]; 194s 1515: } 194s 1515: else 194s 1515: __first[0] = '0' + __val; 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: # 4446 "/usr/include/c++/15/bits/basic_string.h" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: namespace __cxx11 { 194s 1515: 194s 1515: 194s 1515: inline int 194s 1515: stoi(const string& __str, size_t* __idx = 0, int __base = 10) 194s 1515: { return __gnu_cxx::__stoa(&std::strtol, "stoi", __str.c_str(), 194s 1515: __idx, __base); } 194s 1515: 194s 1515: inline long 194s 1515: stol(const string& __str, size_t* __idx = 0, int __base = 10) 194s 1515: { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(), 194s 1515: __idx, __base); } 194s 1515: 194s 1515: inline unsigned long 194s 1515: stoul(const string& __str, size_t* __idx = 0, int __base = 10) 194s 1515: { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(), 194s 1515: __idx, __base); } 194s 1515: 194s 1515: 194s 1515: inline long long 194s 1515: stoll(const string& __str, size_t* __idx = 0, int __base = 10) 194s 1515: { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(), 194s 1515: __idx, __base); } 194s 1515: 194s 1515: inline unsigned long long 194s 1515: stoull(const string& __str, size_t* __idx = 0, int __base = 10) 194s 1515: { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(), 194s 1515: __idx, __base); } 194s 1515: # 4488 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: inline double 194s 1515: stod(const string& __str, size_t* __idx = 0) 194s 1515: { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline float 194s 1515: stof(const string& __str, size_t* __idx = 0) 194s 1515: { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); } 194s 1515: # 4516 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: inline long double 194s 1515: stold(const string& __str, size_t* __idx = 0) 194s 1515: { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } 194s 1515: # 4528 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: inline string 194s 1515: to_string(int __val) 194s 1515: 194s 1515: noexcept 194s 1515: 194s 1515: { 194s 1515: const bool __neg = __val < 0; 194s 1515: const unsigned __uval = __neg ? (unsigned)~__val + 1u : __val; 194s 1515: const auto __len = __detail::__to_chars_len(__uval); 194s 1515: string __str; 194s 1515: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { 194s 1515: __p[0] = '-'; 194s 1515: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); 194s 1515: return __n; 194s 1515: }); 194s 1515: return __str; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline string 194s 1515: to_string(unsigned __val) 194s 1515: 194s 1515: noexcept 194s 1515: 194s 1515: { 194s 1515: const auto __len = __detail::__to_chars_len(__val); 194s 1515: string __str; 194s 1515: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { 194s 1515: __detail::__to_chars_10_impl(__p, __n, __val); 194s 1515: return __n; 194s 1515: }); 194s 1515: return __str; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline string 194s 1515: to_string(long __val) 194s 1515: 194s 1515: noexcept 194s 1515: 194s 1515: { 194s 1515: const bool __neg = __val < 0; 194s 1515: const unsigned long __uval = __neg ? (unsigned long)~__val + 1ul : __val; 194s 1515: const auto __len = __detail::__to_chars_len(__uval); 194s 1515: string __str; 194s 1515: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { 194s 1515: __p[0] = '-'; 194s 1515: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); 194s 1515: return __n; 194s 1515: }); 194s 1515: return __str; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline string 194s 1515: to_string(unsigned long __val) 194s 1515: 194s 1515: noexcept 194s 1515: 194s 1515: { 194s 1515: const auto __len = __detail::__to_chars_len(__val); 194s 1515: string __str; 194s 1515: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { 194s 1515: __detail::__to_chars_10_impl(__p, __n, __val); 194s 1515: return __n; 194s 1515: }); 194s 1515: return __str; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline string 194s 1515: to_string(long long __val) 194s 1515: { 194s 1515: const bool __neg = __val < 0; 194s 1515: const unsigned long long __uval 194s 1515: = __neg ? (unsigned long long)~__val + 1ull : __val; 194s 1515: const auto __len = __detail::__to_chars_len(__uval); 194s 1515: string __str; 194s 1515: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { 194s 1515: __p[0] = '-'; 194s 1515: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); 194s 1515: return __n; 194s 1515: }); 194s 1515: return __str; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline string 194s 1515: to_string(unsigned long long __val) 194s 1515: { 194s 1515: const auto __len = __detail::__to_chars_len(__val); 194s 1515: string __str; 194s 1515: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { 194s 1515: __detail::__to_chars_10_impl(__p, __n, __val); 194s 1515: return __n; 194s 1515: }); 194s 1515: return __str; 194s 1515: } 194s 1515: # 4687 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wsuggest-attribute=format" 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline string 194s 1515: to_string(float __val) 194s 1515: { 194s 1515: const int __n = 194s 1515: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 194s 1515: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 194s 1515: "%f", __val); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline string 194s 1515: to_string(double __val) 194s 1515: { 194s 1515: const int __n = 194s 1515: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 194s 1515: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 194s 1515: "%f", __val); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline string 194s 1515: to_string(long double __val) 194s 1515: { 194s 1515: const int __n = 194s 1515: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 194s 1515: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 194s 1515: "%Lf", __val); 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline int 194s 1515: stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) 194s 1515: { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), 194s 1515: __idx, __base); } 194s 1515: 194s 1515: inline long 194s 1515: stol(const wstring& __str, size_t* __idx = 0, int __base = 10) 194s 1515: { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(), 194s 1515: __idx, __base); } 194s 1515: 194s 1515: inline unsigned long 194s 1515: stoul(const wstring& __str, size_t* __idx = 0, int __base = 10) 194s 1515: { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(), 194s 1515: __idx, __base); } 194s 1515: 194s 1515: inline long long 194s 1515: stoll(const wstring& __str, size_t* __idx = 0, int __base = 10) 194s 1515: { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(), 194s 1515: __idx, __base); } 194s 1515: 194s 1515: inline unsigned long long 194s 1515: stoull(const wstring& __str, size_t* __idx = 0, int __base = 10) 194s 1515: { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(), 194s 1515: __idx, __base); } 194s 1515: 194s 1515: 194s 1515: inline float 194s 1515: stof(const wstring& __str, size_t* __idx = 0) 194s 1515: { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); } 194s 1515: 194s 1515: inline double 194s 1515: stod(const wstring& __str, size_t* __idx = 0) 194s 1515: { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); } 194s 1515: 194s 1515: inline long double 194s 1515: stold(const wstring& __str, size_t* __idx = 0) 194s 1515: { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: 194s 1515: inline void 194s 1515: __to_wstring_numeric(const char* __s, int __len, wchar_t* __wout) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if constexpr (wchar_t('0') == L'0' && wchar_t('-') == L'-' 194s 1515: && wchar_t('.') == L'.' && wchar_t('e') == L'e') 194s 1515: { 194s 1515: for (int __i = 0; __i < __len; ++__i) 194s 1515: __wout[__i] = (wchar_t) __s[__i]; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: wchar_t __wc[256]; 194s 1515: for (int __i = '0'; __i <= '9'; ++__i) 194s 1515: __wc[__i] = L'0' + __i; 194s 1515: __wc['.'] = L'.'; 194s 1515: __wc['+'] = L'+'; 194s 1515: __wc['-'] = L'-'; 194s 1515: __wc['a'] = L'a'; 194s 1515: __wc['b'] = L'b'; 194s 1515: __wc['c'] = L'c'; 194s 1515: __wc['d'] = L'd'; 194s 1515: __wc['e'] = L'e'; 194s 1515: __wc['f'] = L'f'; 194s 1515: __wc['i'] = L'i'; 194s 1515: __wc['n'] = L'n'; 194s 1515: __wc['p'] = L'p'; 194s 1515: __wc['x'] = L'x'; 194s 1515: __wc['A'] = L'A'; 194s 1515: __wc['B'] = L'B'; 194s 1515: __wc['C'] = L'C'; 194s 1515: __wc['D'] = L'D'; 194s 1515: __wc['E'] = L'E'; 194s 1515: __wc['F'] = L'F'; 194s 1515: __wc['I'] = L'I'; 194s 1515: __wc['N'] = L'N'; 194s 1515: __wc['P'] = L'P'; 194s 1515: __wc['X'] = L'X'; 194s 1515: 194s 1515: for (int __i = 0; __i < __len; ++__i) 194s 1515: __wout[__i] = __wc[(int)__s[__i]]; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline wstring 194s 1515: 194s 1515: 194s 1515: 194s 1515: __to_wstring_numeric(const string& __s) 194s 1515: 194s 1515: { 194s 1515: if constexpr (wchar_t('0') == L'0' && wchar_t('-') == L'-' 194s 1515: && wchar_t('.') == L'.' && wchar_t('e') == L'e') 194s 1515: return wstring(__s.data(), __s.data() + __s.size()); 194s 1515: else 194s 1515: { 194s 1515: wstring __ws; 194s 1515: auto __f = __s.data(); 194s 1515: __ws.__resize_and_overwrite(__s.size(), 194s 1515: [__f] (wchar_t* __to, int __n) { 194s 1515: std::__to_wstring_numeric(__f, __n, __to); 194s 1515: return __n; 194s 1515: }); 194s 1515: return __ws; 194s 1515: } 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline wstring 194s 1515: to_wstring(int __val) 194s 1515: { return std::__to_wstring_numeric(std::to_string(__val)); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline wstring 194s 1515: to_wstring(unsigned __val) 194s 1515: { return std::__to_wstring_numeric(std::to_string(__val)); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline wstring 194s 1515: to_wstring(long __val) 194s 1515: { return std::__to_wstring_numeric(std::to_string(__val)); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline wstring 194s 1515: to_wstring(unsigned long __val) 194s 1515: { return std::__to_wstring_numeric(std::to_string(__val)); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline wstring 194s 1515: to_wstring(long long __val) 194s 1515: { return std::__to_wstring_numeric(std::to_string(__val)); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline wstring 194s 1515: to_wstring(unsigned long long __val) 194s 1515: { return std::__to_wstring_numeric(std::to_string(__val)); } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline wstring 194s 1515: to_wstring(float __val) 194s 1515: { return std::__to_wstring_numeric(std::to_string(__val)); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline wstring 194s 1515: to_wstring(double __val) 194s 1515: { return std::__to_wstring_numeric(std::to_string(__val)); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline wstring 194s 1515: to_wstring(long double __val) 194s 1515: { return std::__to_wstring_numeric(std::to_string(__val)); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/functional_hash.h" 1 3 4 194s 1515: # 40 "/usr/include/c++/15/bits/functional_hash.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 52 "/usr/include/c++/15/bits/functional_hash.h" 3 4 194s 1515: template 194s 1515: struct __hash_base 194s 1515: { 194s 1515: 194s 1515: typedef _Result result_type ; 194s 1515: typedef _Arg argument_type ; 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template struct __hash_empty_base { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct hash; 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++14-extensions" 194s 1515: template 194s 1515: constexpr bool __is_hash_enabled_for = false; 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: __is_hash_enabled_for<_Tp, 194s 1515: __void_t()(declval<_Tp>()))>> 194s 1515: = true; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __hash_not_enabled 194s 1515: { 194s 1515: __hash_not_enabled(__hash_not_enabled&&) = delete; 194s 1515: ~__hash_not_enabled() = delete; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __hash_enum : public __hash_base 194s 1515: { 194s 1515: size_t 194s 1515: operator()(_Tp __val) const noexcept 194s 1515: { 194s 1515: using __type = typename underlying_type<_Tp>::type; 194s 1515: return hash<__type>{}(static_cast<__type>(__val)); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct hash 194s 1515: : __conditional_t<__is_enum(_Tp), __hash_enum<_Tp>, __hash_not_enabled<_Tp>> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct hash<_Tp*> : public __hash_base 194s 1515: { 194s 1515: size_t 194s 1515: operator()(_Tp* __p) const noexcept 194s 1515: { return reinterpret_cast(__p); } 194s 1515: }; 194s 1515: # 128 "/usr/include/c++/15/bits/functional_hash.h" 3 4 194s 1515: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; 194s 1515: 194s 1515: 194s 1515: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; 194s 1515: # 204 "/usr/include/c++/15/bits/functional_hash.h" 3 4 194s 1515: struct _Hash_impl 194s 1515: { 194s 1515: static size_t 194s 1515: hash(const void* __ptr, size_t __clength, 194s 1515: size_t __seed = static_cast(0xc70f6907UL)) 194s 1515: { return _Hash_bytes(__ptr, __clength, __seed); } 194s 1515: 194s 1515: template 194s 1515: static size_t 194s 1515: hash(const _Tp& __val) 194s 1515: { return hash(&__val, sizeof(__val)); } 194s 1515: 194s 1515: template 194s 1515: static size_t 194s 1515: __hash_combine(const _Tp& __val, size_t __hash) 194s 1515: { return hash(&__val, sizeof(__val), __hash); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: struct _Fnv_hash_impl 194s 1515: { 194s 1515: static size_t 194s 1515: hash(const void* __ptr, size_t __clength, 194s 1515: size_t __seed = static_cast(2166136261UL)) 194s 1515: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } 194s 1515: 194s 1515: template 194s 1515: static size_t 194s 1515: hash(const _Tp& __val) 194s 1515: { return hash(&__val, sizeof(__val)); } 194s 1515: 194s 1515: template 194s 1515: static size_t 194s 1515: __hash_combine(const _Tp& __val, size_t __hash) 194s 1515: { return hash(&__val, sizeof(__val), __hash); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct hash : public __hash_base 194s 1515: { 194s 1515: size_t 194s 1515: operator()(float __val) const noexcept 194s 1515: { 194s 1515: 194s 1515: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct hash : public __hash_base 194s 1515: { 194s 1515: size_t 194s 1515: operator()(double __val) const noexcept 194s 1515: { 194s 1515: 194s 1515: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct hash 194s 1515: : public __hash_base 194s 1515: { 194s 1515: __attribute__ ((__pure__)) size_t 194s 1515: operator()(long double __val) const noexcept; 194s 1515: }; 194s 1515: # 297 "/usr/include/c++/15/bits/functional_hash.h" 3 4 194s 1515: template 194s 1515: struct __is_fast_hash : public std::true_type 194s 1515: { }; 194s 1515: 194s 1515: template<> 194s 1515: struct __is_fast_hash> : public std::false_type 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 4896 "/usr/include/c++/15/bits/basic_string.h" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template, _Alloc>> 194s 1515: struct __str_hash_base 194s 1515: : public __hash_base 194s 1515: { 194s 1515: [[__nodiscard__]] 194s 1515: size_t 194s 1515: operator()(const _StrT& __s) const noexcept 194s 1515: { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(_CharT)); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct hash, _Alloc>> 194s 1515: : public __str_hash_base 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct hash, _Alloc>> 194s 1515: : public __str_hash_base 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __is_fast_hash, 194s 1515: _Alloc>>> 194s 1515: : std::false_type 194s 1515: { }; 194s 1515: # 4944 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: template 194s 1515: struct hash, _Alloc>> 194s 1515: : public __str_hash_base 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct hash, _Alloc>> 194s 1515: : public __str_hash_base 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template<> struct __is_fast_hash> : std::false_type { }; 194s 1515: template<> struct __is_fast_hash> : std::false_type { }; 194s 1515: template<> struct __is_fast_hash> : std::false_type { }; 194s 1515: template<> struct __is_fast_hash> : std::false_type { }; 194s 1515: # 5036 "/usr/include/c++/15/bits/basic_string.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 57 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/basic_string.tcc" 1 3 4 194s 1515: # 46 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: const typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>::npos; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: swap(basic_string& __s) noexcept 194s 1515: { 194s 1515: if (this == std::__addressof(__s)) 194s 1515: return; 194s 1515: 194s 1515: _Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator()); 194s 1515: 194s 1515: if (_M_is_local()) 194s 1515: if (__s._M_is_local()) 194s 1515: { 194s 1515: if (length() && __s.length()) 194s 1515: { 194s 1515: _CharT __tmp_data[_S_local_capacity + 1]; 194s 1515: traits_type::copy(__tmp_data, __s._M_local_buf, 194s 1515: __s.length() + 1); 194s 1515: traits_type::copy(__s._M_local_buf, _M_local_buf, 194s 1515: length() + 1); 194s 1515: traits_type::copy(_M_local_buf, __tmp_data, 194s 1515: __s.length() + 1); 194s 1515: } 194s 1515: else if (__s.length()) 194s 1515: { 194s 1515: _M_init_local_buf(); 194s 1515: traits_type::copy(_M_local_buf, __s._M_local_buf, 194s 1515: __s.length() + 1); 194s 1515: _M_length(__s.length()); 194s 1515: __s._M_set_length(0); 194s 1515: return; 194s 1515: } 194s 1515: else if (length()) 194s 1515: { 194s 1515: __s._M_init_local_buf(); 194s 1515: traits_type::copy(__s._M_local_buf, _M_local_buf, 194s 1515: length() + 1); 194s 1515: __s._M_length(length()); 194s 1515: _M_set_length(0); 194s 1515: return; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: const size_type __tmp_capacity = __s._M_allocated_capacity; 194s 1515: __s._M_init_local_buf(); 194s 1515: traits_type::copy(__s._M_local_buf, _M_local_buf, 194s 1515: length() + 1); 194s 1515: _M_data(__s._M_data()); 194s 1515: __s._M_data(__s._M_local_buf); 194s 1515: _M_capacity(__tmp_capacity); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: const size_type __tmp_capacity = _M_allocated_capacity; 194s 1515: if (__s._M_is_local()) 194s 1515: { 194s 1515: _M_init_local_buf(); 194s 1515: traits_type::copy(_M_local_buf, __s._M_local_buf, 194s 1515: __s.length() + 1); 194s 1515: __s._M_data(_M_data()); 194s 1515: _M_data(_M_local_buf); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: pointer __tmp_ptr = _M_data(); 194s 1515: _M_data(__s._M_data()); 194s 1515: __s._M_data(__tmp_ptr); 194s 1515: _M_capacity(__s._M_allocated_capacity); 194s 1515: } 194s 1515: __s._M_capacity(__tmp_capacity); 194s 1515: } 194s 1515: 194s 1515: const size_type __tmp_length = length(); 194s 1515: _M_length(__s.length()); 194s 1515: __s._M_length(__tmp_length); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::pointer 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_create(size_type& __capacity, size_type __old_capacity) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (__capacity > max_size()) 194s 1515: std::__throw_length_error(("basic_string::_M_create")); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) 194s 1515: { 194s 1515: __capacity = 2 * __old_capacity; 194s 1515: 194s 1515: if (__capacity > max_size()) 194s 1515: __capacity = max_size(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _S_allocate(_M_get_allocator(), __capacity + 1); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_construct(_InIterator __beg, _InIterator __end, 194s 1515: std::input_iterator_tag) 194s 1515: { 194s 1515: size_type __len = 0; 194s 1515: size_type __capacity = size_type(_S_local_capacity); 194s 1515: 194s 1515: _M_init_local_buf(); 194s 1515: 194s 1515: while (__beg != __end && __len < __capacity) 194s 1515: { 194s 1515: _M_local_buf[__len++] = *__beg; 194s 1515: ++__beg; 194s 1515: } 194s 1515: 194s 1515: struct _Guard 194s 1515: { 194s 1515: 194s 1515: explicit _Guard(basic_string* __s) : _M_guarded(__s) { } 194s 1515: 194s 1515: 194s 1515: ~_Guard() { if (_M_guarded) _M_guarded->_M_dispose(); } 194s 1515: 194s 1515: basic_string* _M_guarded; 194s 1515: } __guard(this); 194s 1515: 194s 1515: while (__beg != __end) 194s 1515: { 194s 1515: if (__len == __capacity) 194s 1515: { 194s 1515: 194s 1515: __capacity = __len + 1; 194s 1515: pointer __another = _M_create(__capacity, __len); 194s 1515: this->_S_copy(__another, _M_data(), __len); 194s 1515: _M_dispose(); 194s 1515: _M_data(__another); 194s 1515: _M_capacity(__capacity); 194s 1515: } 194s 1515: traits_type::assign(_M_data()[__len++], 194s 1515: static_cast<_CharT>(*__beg)); 194s 1515: ++__beg; 194s 1515: } 194s 1515: 194s 1515: __guard._M_guarded = 0; 194s 1515: 194s 1515: _M_set_length(__len); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_construct(_InIterator __beg, _InIterator __end, 194s 1515: std::forward_iterator_tag) 194s 1515: { 194s 1515: size_type __dnew = static_cast(std::distance(__beg, __end)); 194s 1515: 194s 1515: if (__dnew > size_type(_S_local_capacity)) 194s 1515: { 194s 1515: _M_data(_M_create(__dnew, size_type(0))); 194s 1515: _M_capacity(__dnew); 194s 1515: } 194s 1515: else 194s 1515: _M_init_local_buf(); 194s 1515: 194s 1515: 194s 1515: struct _Guard 194s 1515: { 194s 1515: 194s 1515: explicit _Guard(basic_string* __s) : _M_guarded(__s) { } 194s 1515: 194s 1515: 194s 1515: ~_Guard() { if (_M_guarded) _M_guarded->_M_dispose(); } 194s 1515: 194s 1515: basic_string* _M_guarded; 194s 1515: } __guard(this); 194s 1515: 194s 1515: this->_S_copy_chars(_M_data(), __beg, __end); 194s 1515: 194s 1515: __guard._M_guarded = 0; 194s 1515: 194s 1515: _M_set_length(__dnew); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_construct(size_type __n, _CharT __c) 194s 1515: { 194s 1515: if (__n > size_type(_S_local_capacity)) 194s 1515: { 194s 1515: _M_data(_M_create(__n, size_type(0))); 194s 1515: _M_capacity(__n); 194s 1515: } 194s 1515: else 194s 1515: _M_init_local_buf(); 194s 1515: 194s 1515: if (__n) 194s 1515: this->_S_assign(_M_data(), __n, __c); 194s 1515: 194s 1515: _M_set_length(__n); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_construct(const _CharT* __str, size_type __n) 194s 1515: { 194s 1515: if (__n > size_type(_S_local_capacity)) 194s 1515: { 194s 1515: _M_data(_M_create(__n, size_type(0))); 194s 1515: _M_capacity(__n); 194s 1515: } 194s 1515: else 194s 1515: _M_init_local_buf(); 194s 1515: 194s 1515: if (__n || _Terminated) 194s 1515: this->_S_copy(_M_data(), __str, __n + _Terminated); 194s 1515: 194s 1515: _M_length(__n); 194s 1515: if (!_Terminated) 194s 1515: traits_type::assign(_M_data()[__n], _CharT()); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_assign(const basic_string& __str) 194s 1515: { 194s 1515: if (this != std::__addressof(__str)) 194s 1515: { 194s 1515: const size_type __rsize = __str.length(); 194s 1515: const size_type __capacity = capacity(); 194s 1515: 194s 1515: if (__rsize > __capacity) 194s 1515: { 194s 1515: size_type __new_capacity = __rsize; 194s 1515: pointer __tmp = _M_create(__new_capacity, __capacity); 194s 1515: _M_dispose(); 194s 1515: _M_data(__tmp); 194s 1515: _M_capacity(__new_capacity); 194s 1515: } 194s 1515: 194s 1515: if (__rsize) 194s 1515: this->_S_copy(_M_data(), __str._M_data(), __rsize); 194s 1515: 194s 1515: _M_set_length(__rsize); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: reserve(size_type __res) 194s 1515: { 194s 1515: const size_type __capacity = capacity(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__res <= __capacity) 194s 1515: return; 194s 1515: 194s 1515: pointer __tmp = _M_create(__res, __capacity); 194s 1515: this->_S_copy(__tmp, _M_data(), length() + 1); 194s 1515: _M_dispose(); 194s 1515: _M_data(__tmp); 194s 1515: _M_capacity(__res); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 194s 1515: size_type __len2) 194s 1515: { 194s 1515: const size_type __how_much = length() - __pos - __len1; 194s 1515: 194s 1515: size_type __new_capacity = length() + __len2 - __len1; 194s 1515: pointer __r = _M_create(__new_capacity, capacity()); 194s 1515: 194s 1515: if (__pos) 194s 1515: this->_S_copy(__r, _M_data(), __pos); 194s 1515: if (__s && __len2) 194s 1515: this->_S_copy(__r + __pos, __s, __len2); 194s 1515: if (__how_much) 194s 1515: this->_S_copy(__r + __pos + __len2, 194s 1515: _M_data() + __pos + __len1, __how_much); 194s 1515: 194s 1515: _M_dispose(); 194s 1515: _M_data(__r); 194s 1515: _M_capacity(__new_capacity); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_erase(size_type __pos, size_type __n) 194s 1515: { 194s 1515: const size_type __how_much = length() - __pos - __n; 194s 1515: 194s 1515: if (__how_much && __n) 194s 1515: this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); 194s 1515: 194s 1515: _M_set_length(length() - __n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: reserve() 194s 1515: { 194s 1515: if (_M_is_local()) 194s 1515: return; 194s 1515: 194s 1515: const size_type __length = length(); 194s 1515: const size_type __capacity = _M_allocated_capacity; 194s 1515: 194s 1515: if (__length <= size_type(_S_local_capacity)) 194s 1515: { 194s 1515: _M_init_local_buf(); 194s 1515: this->_S_copy(_M_local_buf, _M_data(), __length + 1); 194s 1515: _M_destroy(__capacity); 194s 1515: _M_data(_M_local_data()); 194s 1515: } 194s 1515: 194s 1515: else if (__length < __capacity) 194s 1515: try 194s 1515: { 194s 1515: pointer __tmp = _S_allocate(_M_get_allocator(), __length + 1); 194s 1515: this->_S_copy(__tmp, _M_data(), __length + 1); 194s 1515: _M_dispose(); 194s 1515: _M_data(__tmp); 194s 1515: _M_capacity(__length); 194s 1515: } 194s 1515: catch (const __cxxabiv1::__forced_unwind&) 194s 1515: { throw; } 194s 1515: catch (...) 194s 1515: { } 194s 1515: 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: resize(size_type __n, _CharT __c) 194s 1515: { 194s 1515: const size_type __size = this->size(); 194s 1515: if (__size < __n) 194s 1515: this->append(__n - __size, __c); 194s 1515: else if (__n < __size) 194s 1515: this->_M_set_length(__n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: basic_string<_CharT, _Traits, _Alloc>& 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_append(const _CharT* __s, size_type __n) 194s 1515: { 194s 1515: const size_type __len = __n + this->size(); 194s 1515: 194s 1515: if (__len <= this->capacity()) 194s 1515: { 194s 1515: if (__n) 194s 1515: this->_S_copy(this->_M_data() + this->size(), __s, __n); 194s 1515: } 194s 1515: else 194s 1515: this->_M_mutate(this->size(), size_type(0), __s, __n); 194s 1515: 194s 1515: this->_M_set_length(__len); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: basic_string<_CharT, _Traits, _Alloc>& 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 194s 1515: _InputIterator __k1, _InputIterator __k2, 194s 1515: std::__false_type) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const basic_string __s(__k1, __k2, this->get_allocator()); 194s 1515: const size_type __n1 = __i2 - __i1; 194s 1515: return _M_replace(__i1 - begin(), __n1, __s._M_data(), 194s 1515: __s.size()); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: basic_string<_CharT, _Traits, _Alloc>& 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 194s 1515: _CharT __c) 194s 1515: { 194s 1515: _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); 194s 1515: 194s 1515: const size_type __old_size = this->size(); 194s 1515: const size_type __new_size = __old_size + __n2 - __n1; 194s 1515: 194s 1515: if (__new_size <= this->capacity()) 194s 1515: { 194s 1515: pointer __p = this->_M_data() + __pos1; 194s 1515: 194s 1515: const size_type __how_much = __old_size - __pos1 - __n1; 194s 1515: if (__how_much && __n1 != __n2) 194s 1515: this->_S_move(__p + __n2, __p + __n1, __how_much); 194s 1515: } 194s 1515: else 194s 1515: this->_M_mutate(__pos1, __n1, 0, __n2); 194s 1515: 194s 1515: if (__n2) 194s 1515: this->_S_assign(this->_M_data() + __pos1, __n2, __c); 194s 1515: 194s 1515: this->_M_set_length(__new_size); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __attribute__((__noinline__, __noclone__, __cold__)) void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_replace_cold(pointer __p, size_type __len1, const _CharT* __s, 194s 1515: const size_type __len2, const size_type __how_much) 194s 1515: { 194s 1515: 194s 1515: if (__len2 && __len2 <= __len1) 194s 1515: this->_S_move(__p, __s, __len2); 194s 1515: if (__how_much && __len1 != __len2) 194s 1515: this->_S_move(__p + __len2, __p + __len1, __how_much); 194s 1515: if (__len2 > __len1) 194s 1515: { 194s 1515: if (__s + __len2 <= __p + __len1) 194s 1515: this->_S_move(__p, __s, __len2); 194s 1515: else if (__s >= __p + __len1) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const size_type __poff = (__s - __p) + (__len2 - __len1); 194s 1515: this->_S_copy(__p, __p + __poff, __len2); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: const size_type __nleft = (__p + __len1) - __s; 194s 1515: this->_S_move(__p, __s, __nleft); 194s 1515: this->_S_copy(__p + __nleft, __p + __len2, __len2 - __nleft); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: basic_string<_CharT, _Traits, _Alloc>& 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 194s 1515: const size_type __len2) 194s 1515: { 194s 1515: _M_check_length(__len1, __len2, "basic_string::_M_replace"); 194s 1515: 194s 1515: const size_type __old_size = this->size(); 194s 1515: const size_type __new_size = __old_size + __len2 - __len1; 194s 1515: 194s 1515: if (__new_size <= this->capacity()) 194s 1515: { 194s 1515: pointer __p = this->_M_data() + __pos; 194s 1515: 194s 1515: const size_type __how_much = __old_size - __pos - __len1; 194s 1515: # 568 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 194s 1515: if (__builtin_expect(_M_disjunct(__s), true)) 194s 1515: { 194s 1515: if (__how_much && __len1 != __len2) 194s 1515: this->_S_move(__p + __len2, __p + __len1, __how_much); 194s 1515: if (__len2) 194s 1515: this->_S_copy(__p, __s, __len2); 194s 1515: } 194s 1515: else 194s 1515: _M_replace_cold(__p, __len1, __s, __len2, __how_much); 194s 1515: } 194s 1515: else 194s 1515: this->_M_mutate(__pos, __len1, __s, __len2); 194s 1515: 194s 1515: this->_M_set_length(__new_size); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: copy(_CharT* __s, size_type __n, size_type __pos) const 194s 1515: { 194s 1515: _M_check(__pos, "basic_string::copy"); 194s 1515: __n = _M_limit(__pos, __n); 194s 1515: ; 194s 1515: if (__n) 194s 1515: _S_copy(__s, _M_data() + __pos, __n); 194s 1515: 194s 1515: return __n; 194s 1515: } 194s 1515: # 611 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 194s 1515: template 194s 1515: template 194s 1515: void 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __resize_and_overwrite(const size_type __n, _Operation __op) 194s 1515: 194s 1515: { 194s 1515: reserve(__n); 194s 1515: _CharT* const __p = _M_data(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct _Terminator { 194s 1515: ~_Terminator() { _M_this->_M_set_length(_M_r); } 194s 1515: basic_string* _M_this; 194s 1515: size_type _M_r; 194s 1515: }; 194s 1515: _Terminator __term{this, 0}; 194s 1515: auto __r = std::move(__op)(__p + 0, __n + 0); 194s 1515: 194s 1515: 194s 1515: 194s 1515: static_assert(__gnu_cxx::__is_integer_nonstrict::__value, 194s 1515: "resize_and_overwrite operation must return an integer"); 194s 1515: 194s 1515: ; 194s 1515: __term._M_r = size_type(__r); 194s 1515: if (__term._M_r > __n) 194s 1515: __builtin_unreachable(); 194s 1515: } 194s 1515: # 654 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: find(const _CharT* __s, size_type __pos, size_type __n) const 194s 1515: noexcept 194s 1515: { 194s 1515: ; 194s 1515: const size_type __size = this->size(); 194s 1515: 194s 1515: if (__n == 0) 194s 1515: return __pos <= __size ? __pos : npos; 194s 1515: if (__pos >= __size) 194s 1515: return npos; 194s 1515: 194s 1515: const _CharT __elem0 = __s[0]; 194s 1515: const _CharT* const __data = data(); 194s 1515: const _CharT* __first = __data + __pos; 194s 1515: const _CharT* const __last = __data + __size; 194s 1515: size_type __len = __size - __pos; 194s 1515: 194s 1515: while (__len >= __n) 194s 1515: { 194s 1515: 194s 1515: __first = traits_type::find(__first, __len - __n + 1, __elem0); 194s 1515: if (!__first) 194s 1515: return npos; 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (traits_type::compare(__first, __s, __n) == 0) 194s 1515: return __first - __data; 194s 1515: __len = __last - ++__first; 194s 1515: } 194s 1515: return npos; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: find(_CharT __c, size_type __pos) const noexcept 194s 1515: { 194s 1515: size_type __ret = npos; 194s 1515: const size_type __size = this->size(); 194s 1515: if (__pos < __size) 194s 1515: { 194s 1515: const _CharT* __data = _M_data(); 194s 1515: const size_type __n = __size - __pos; 194s 1515: const _CharT* __p = traits_type::find(__data + __pos, __n, __c); 194s 1515: if (__p) 194s 1515: __ret = __p - __data; 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: rfind(const _CharT* __s, size_type __pos, size_type __n) const 194s 1515: noexcept 194s 1515: { 194s 1515: ; 194s 1515: const size_type __size = this->size(); 194s 1515: if (__n <= __size) 194s 1515: { 194s 1515: __pos = std::min(size_type(__size - __n), __pos); 194s 1515: const _CharT* __data = _M_data(); 194s 1515: do 194s 1515: { 194s 1515: if (traits_type::compare(__data + __pos, __s, __n) == 0) 194s 1515: return __pos; 194s 1515: } 194s 1515: while (__pos-- > 0); 194s 1515: } 194s 1515: return npos; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: rfind(_CharT __c, size_type __pos) const noexcept 194s 1515: { 194s 1515: size_type __size = this->size(); 194s 1515: if (__size) 194s 1515: { 194s 1515: if (--__size > __pos) 194s 1515: __size = __pos; 194s 1515: for (++__size; __size-- > 0; ) 194s 1515: if (traits_type::eq(_M_data()[__size], __c)) 194s 1515: return __size; 194s 1515: } 194s 1515: return npos; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 194s 1515: noexcept 194s 1515: { 194s 1515: ; 194s 1515: for (; __n && __pos < this->size(); ++__pos) 194s 1515: { 194s 1515: const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); 194s 1515: if (__p) 194s 1515: return __pos; 194s 1515: } 194s 1515: return npos; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 194s 1515: noexcept 194s 1515: { 194s 1515: ; 194s 1515: size_type __size = this->size(); 194s 1515: if (__size && __n) 194s 1515: { 194s 1515: if (--__size > __pos) 194s 1515: __size = __pos; 194s 1515: do 194s 1515: { 194s 1515: if (traits_type::find(__s, __n, _M_data()[__size])) 194s 1515: return __size; 194s 1515: } 194s 1515: while (__size-- != 0); 194s 1515: } 194s 1515: return npos; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const 194s 1515: noexcept 194s 1515: { 194s 1515: ; 194s 1515: for (; __pos < this->size(); ++__pos) 194s 1515: if (!traits_type::find(__s, __n, _M_data()[__pos])) 194s 1515: return __pos; 194s 1515: return npos; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: find_first_not_of(_CharT __c, size_type __pos) const noexcept 194s 1515: { 194s 1515: for (; __pos < this->size(); ++__pos) 194s 1515: if (!traits_type::eq(_M_data()[__pos], __c)) 194s 1515: return __pos; 194s 1515: return npos; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const 194s 1515: noexcept 194s 1515: { 194s 1515: ; 194s 1515: size_type __size = this->size(); 194s 1515: if (__size) 194s 1515: { 194s 1515: if (--__size > __pos) 194s 1515: __size = __pos; 194s 1515: do 194s 1515: { 194s 1515: if (!traits_type::find(__s, __n, _M_data()[__size])) 194s 1515: return __size; 194s 1515: } 194s 1515: while (__size--); 194s 1515: } 194s 1515: return npos; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename basic_string<_CharT, _Traits, _Alloc>::size_type 194s 1515: basic_string<_CharT, _Traits, _Alloc>:: 194s 1515: find_last_not_of(_CharT __c, size_type __pos) const noexcept 194s 1515: { 194s 1515: size_type __size = this->size(); 194s 1515: if (__size) 194s 1515: { 194s 1515: if (--__size > __pos) 194s 1515: __size = __pos; 194s 1515: do 194s 1515: { 194s 1515: if (!traits_type::eq(_M_data()[__size], __c)) 194s 1515: return __size; 194s 1515: } 194s 1515: while (__size--); 194s 1515: } 194s 1515: return npos; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __in, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __str) 194s 1515: { 194s 1515: typedef basic_istream<_CharT, _Traits> __istream_type; 194s 1515: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 194s 1515: typedef typename __istream_type::ios_base __ios_base; 194s 1515: typedef typename __istream_type::int_type __int_type; 194s 1515: typedef typename __string_type::size_type __size_type; 194s 1515: typedef ctype<_CharT> __ctype_type; 194s 1515: typedef typename __ctype_type::ctype_base __ctype_base; 194s 1515: 194s 1515: __size_type __extracted = 0; 194s 1515: typename __ios_base::iostate __err = __ios_base::goodbit; 194s 1515: typename __istream_type::sentry __cerb(__in, false); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: 194s 1515: __str.erase(); 194s 1515: _CharT __buf[128]; 194s 1515: __size_type __len = 0; 194s 1515: const streamsize __w = __in.width(); 194s 1515: const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) 194s 1515: : __str.max_size(); 194s 1515: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 194s 1515: const __int_type __eof = _Traits::eof(); 194s 1515: __int_type __c = __in.rdbuf()->sgetc(); 194s 1515: 194s 1515: while (__extracted < __n 194s 1515: && !_Traits::eq_int_type(__c, __eof) 194s 1515: && !__ct.is(__ctype_base::space, 194s 1515: _Traits::to_char_type(__c))) 194s 1515: { 194s 1515: if (__len == sizeof(__buf) / sizeof(_CharT)) 194s 1515: { 194s 1515: __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); 194s 1515: __len = 0; 194s 1515: } 194s 1515: __buf[__len++] = _Traits::to_char_type(__c); 194s 1515: ++__extracted; 194s 1515: __c = __in.rdbuf()->snextc(); 194s 1515: } 194s 1515: __str.append(__buf, __len); 194s 1515: 194s 1515: if (__extracted < __n && _Traits::eq_int_type(__c, __eof)) 194s 1515: __err |= __ios_base::eofbit; 194s 1515: __in.width(0); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __in._M_setstate(__ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: __in._M_setstate(__ios_base::badbit); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: if (!__extracted) 194s 1515: __err |= __ios_base::failbit; 194s 1515: if (__err) 194s 1515: __in.setstate(__err); 194s 1515: return __in; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: getline(basic_istream<_CharT, _Traits>& __in, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 194s 1515: { 194s 1515: typedef basic_istream<_CharT, _Traits> __istream_type; 194s 1515: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 194s 1515: typedef typename __istream_type::ios_base __ios_base; 194s 1515: typedef typename __istream_type::int_type __int_type; 194s 1515: typedef typename __string_type::size_type __size_type; 194s 1515: 194s 1515: __size_type __extracted = 0; 194s 1515: const __size_type __n = __str.max_size(); 194s 1515: typename __ios_base::iostate __err = __ios_base::goodbit; 194s 1515: typename __istream_type::sentry __cerb(__in, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: __str.erase(); 194s 1515: const __int_type __idelim = _Traits::to_int_type(__delim); 194s 1515: const __int_type __eof = _Traits::eof(); 194s 1515: __int_type __c = __in.rdbuf()->sgetc(); 194s 1515: 194s 1515: while (__extracted < __n 194s 1515: && !_Traits::eq_int_type(__c, __eof) 194s 1515: && !_Traits::eq_int_type(__c, __idelim)) 194s 1515: { 194s 1515: __str += _Traits::to_char_type(__c); 194s 1515: ++__extracted; 194s 1515: __c = __in.rdbuf()->snextc(); 194s 1515: } 194s 1515: 194s 1515: if (_Traits::eq_int_type(__c, __eof)) 194s 1515: __err |= __ios_base::eofbit; 194s 1515: else if (_Traits::eq_int_type(__c, __idelim)) 194s 1515: { 194s 1515: ++__extracted; 194s 1515: __in.rdbuf()->sbumpc(); 194s 1515: } 194s 1515: else 194s 1515: __err |= __ios_base::failbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __in._M_setstate(__ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: __in._M_setstate(__ios_base::badbit); 194s 1515: } 194s 1515: } 194s 1515: if (!__extracted) 194s 1515: __err |= __ios_base::failbit; 194s 1515: if (__err) 194s 1515: __in.setstate(__err); 194s 1515: return __in; 194s 1515: } 194s 1515: # 1008 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 194s 1515: extern template class basic_string; 194s 1515: # 1021 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 194s 1515: extern template 194s 1515: basic_istream& 194s 1515: operator>>(basic_istream&, string&); 194s 1515: extern template 194s 1515: basic_ostream& 194s 1515: operator<<(basic_ostream&, const string&); 194s 1515: extern template 194s 1515: basic_istream& 194s 1515: getline(basic_istream&, string&, char); 194s 1515: extern template 194s 1515: basic_istream& 194s 1515: getline(basic_istream&, string&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern template class basic_string; 194s 1515: # 1047 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 194s 1515: extern template 194s 1515: basic_istream& 194s 1515: operator>>(basic_istream&, wstring&); 194s 1515: extern template 194s 1515: basic_ostream& 194s 1515: operator<<(basic_ostream&, const wstring&); 194s 1515: extern template 194s 1515: basic_istream& 194s 1515: getline(basic_istream&, wstring&, wchar_t); 194s 1515: extern template 194s 1515: basic_istream& 194s 1515: getline(basic_istream&, wstring&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 58 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 69 "/usr/include/c++/15/string" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 70 "/usr/include/c++/15/string" 2 3 4 194s 1515: # 43 "/usr/include/c++/15/bits/locale_classes.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 68 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: class locale 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: typedef int category; 194s 1515: 194s 1515: 194s 1515: class facet; 194s 1515: class id; 194s 1515: class _Impl; 194s 1515: 194s 1515: friend class facet; 194s 1515: friend class _Impl; 194s 1515: 194s 1515: template 194s 1515: friend bool 194s 1515: has_facet(const locale&) throw(); 194s 1515: 194s 1515: template 194s 1515: friend const _Facet& 194s 1515: use_facet(const locale&); 194s 1515: 194s 1515: template 194s 1515: friend const _Facet* 194s 1515: __try_use_facet(const locale&) noexcept; 194s 1515: 194s 1515: template 194s 1515: friend struct __use_cache; 194s 1515: # 108 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: static const category none = 0; 194s 1515: static const category ctype = 1L << 0; 194s 1515: static const category numeric = 1L << 1; 194s 1515: static const category collate = 1L << 2; 194s 1515: static const category time = 1L << 3; 194s 1515: static const category monetary = 1L << 4; 194s 1515: static const category messages = 1L << 5; 194s 1515: static const category all = (ctype | numeric | collate | 194s 1515: time | monetary | messages); 194s 1515: # 127 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: locale() throw(); 194s 1515: # 136 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: locale(const locale& __other) throw(); 194s 1515: # 146 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: explicit 194s 1515: locale(const char* __s); 194s 1515: # 161 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: locale(const locale& __base, const char* __s, category __cat); 194s 1515: # 172 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: explicit 194s 1515: locale(const std::string& __s) : locale(__s.c_str()) { } 194s 1515: # 187 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: locale(const locale& __base, const std::string& __s, category __cat) 194s 1515: : locale(__base, __s.c_str(), __cat) { } 194s 1515: # 202 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: locale(const locale& __base, const locale& __add, category __cat); 194s 1515: # 215 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: template 194s 1515: locale(const locale& __other, _Facet* __f); 194s 1515: 194s 1515: 194s 1515: ~locale() throw(); 194s 1515: # 229 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: const locale& 194s 1515: operator=(const locale& __other) throw(); 194s 1515: # 244 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: locale 194s 1515: combine(const locale& __other) const; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: string 194s 1515: name() const; 194s 1515: # 275 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: operator==(const locale& __other) const throw(); 194s 1515: # 286 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: operator!=(const locale& __other) const throw() 194s 1515: { return !(this->operator==(__other)); } 194s 1515: # 307 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, 194s 1515: const basic_string<_Char, _Traits, _Alloc>& __s2) const; 194s 1515: # 324 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: static locale 194s 1515: global(const locale& __loc); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: static const locale& 194s 1515: classic(); 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: _Impl* _M_impl; 194s 1515: 194s 1515: 194s 1515: static _Impl* _S_classic; 194s 1515: 194s 1515: 194s 1515: static _Impl* _S_global; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const char* const* const _S_categories; 194s 1515: # 360 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: enum { _S_categories_size = 6 + 6 }; 194s 1515: 194s 1515: 194s 1515: static __gthread_once_t _S_once; 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: locale(_Impl*) throw(); 194s 1515: 194s 1515: static void 194s 1515: _S_initialize(); 194s 1515: 194s 1515: static void 194s 1515: _S_initialize_once() throw(); 194s 1515: 194s 1515: static category 194s 1515: _S_normalize_category(category); 194s 1515: 194s 1515: void 194s 1515: _M_coalesce(const locale& __base, const locale& __add, category __cat); 194s 1515: 194s 1515: 194s 1515: static const id* const _S_twinned_facets[]; 194s 1515: 194s 1515: }; 194s 1515: # 404 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: class locale::facet 194s 1515: { 194s 1515: private: 194s 1515: friend class locale; 194s 1515: friend class locale::_Impl; 194s 1515: 194s 1515: mutable _Atomic_word _M_refcount; 194s 1515: 194s 1515: 194s 1515: static __c_locale _S_c_locale; 194s 1515: 194s 1515: 194s 1515: static const char _S_c_name[2]; 194s 1515: 194s 1515: 194s 1515: static __gthread_once_t _S_once; 194s 1515: 194s 1515: 194s 1515: static void 194s 1515: _S_initialize_once(); 194s 1515: 194s 1515: protected: 194s 1515: # 435 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: explicit 194s 1515: facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: virtual 194s 1515: ~facet(); 194s 1515: 194s 1515: static void 194s 1515: _S_create_c_locale(__c_locale& __cloc, const char* __s, 194s 1515: __c_locale __old = 0); 194s 1515: 194s 1515: static __c_locale 194s 1515: _S_clone_c_locale(__c_locale& __cloc) throw(); 194s 1515: 194s 1515: static void 194s 1515: _S_destroy_c_locale(__c_locale& __cloc); 194s 1515: 194s 1515: static __c_locale 194s 1515: _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s); 194s 1515: 194s 1515: 194s 1515: 194s 1515: static __c_locale 194s 1515: _S_get_c_locale(); 194s 1515: 194s 1515: __attribute__ ((__const__)) static const char* 194s 1515: _S_get_c_name() throw(); 194s 1515: # 471 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: facet(const facet&) = delete; 194s 1515: 194s 1515: facet& 194s 1515: operator=(const facet&) = delete; 194s 1515: 194s 1515: 194s 1515: private: 194s 1515: void 194s 1515: _M_add_reference() const throw() 194s 1515: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 194s 1515: 194s 1515: void 194s 1515: _M_remove_reference() const throw() 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) 194s 1515: { 194s 1515: ; 194s 1515: try 194s 1515: { delete this; } 194s 1515: catch(...) 194s 1515: { } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: const facet* _M_sso_shim(const id*) const; 194s 1515: const facet* _M_cow_shim(const id*) const; 194s 1515: 194s 1515: protected: 194s 1515: class __shim; 194s 1515: }; 194s 1515: # 516 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: class locale::id 194s 1515: { 194s 1515: private: 194s 1515: friend class locale; 194s 1515: friend class locale::_Impl; 194s 1515: 194s 1515: template 194s 1515: friend const _Facet& 194s 1515: use_facet(const locale&); 194s 1515: 194s 1515: template 194s 1515: friend bool 194s 1515: has_facet(const locale&) throw(); 194s 1515: 194s 1515: template 194s 1515: friend const _Facet* 194s 1515: __try_use_facet(const locale&) noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: mutable size_t _M_index; 194s 1515: 194s 1515: 194s 1515: static _Atomic_word _S_refcount; 194s 1515: 194s 1515: void 194s 1515: operator=(const id&); 194s 1515: 194s 1515: id(const id&); 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: id() { } 194s 1515: 194s 1515: size_t 194s 1515: _M_id() const throw(); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: class locale::_Impl 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: friend class locale; 194s 1515: friend class locale::facet; 194s 1515: 194s 1515: template 194s 1515: friend bool 194s 1515: has_facet(const locale&) throw(); 194s 1515: 194s 1515: template 194s 1515: friend const _Facet& 194s 1515: use_facet(const locale&); 194s 1515: 194s 1515: template 194s 1515: friend const _Facet* 194s 1515: __try_use_facet(const locale&) noexcept; 194s 1515: 194s 1515: template 194s 1515: friend struct __use_cache; 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: _Atomic_word _M_refcount; 194s 1515: const facet** _M_facets; 194s 1515: size_t _M_facets_size; 194s 1515: const facet** _M_caches; 194s 1515: char** _M_names; 194s 1515: static const locale::id* const _S_id_ctype[]; 194s 1515: static const locale::id* const _S_id_numeric[]; 194s 1515: static const locale::id* const _S_id_collate[]; 194s 1515: static const locale::id* const _S_id_time[]; 194s 1515: static const locale::id* const _S_id_monetary[]; 194s 1515: static const locale::id* const _S_id_messages[]; 194s 1515: static const locale::id* const* const _S_facet_categories[]; 194s 1515: 194s 1515: void 194s 1515: _M_add_reference() throw() 194s 1515: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 194s 1515: 194s 1515: void 194s 1515: _M_remove_reference() throw() 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) 194s 1515: { 194s 1515: ; 194s 1515: try 194s 1515: { delete this; } 194s 1515: catch(...) 194s 1515: { } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: _Impl(const _Impl&, size_t); 194s 1515: _Impl(const char*, size_t); 194s 1515: _Impl(size_t) throw(); 194s 1515: 194s 1515: ~_Impl() throw(); 194s 1515: 194s 1515: _Impl(const _Impl&); 194s 1515: 194s 1515: void 194s 1515: operator=(const _Impl&); 194s 1515: 194s 1515: bool 194s 1515: _M_check_same_name() 194s 1515: { 194s 1515: bool __ret = true; 194s 1515: if (_M_names[1]) 194s 1515: 194s 1515: for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) 194s 1515: __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_replace_categories(const _Impl*, category); 194s 1515: 194s 1515: void 194s 1515: _M_replace_category(const _Impl*, const locale::id* const*); 194s 1515: 194s 1515: void 194s 1515: _M_replace_facet(const _Impl*, const locale::id*); 194s 1515: 194s 1515: void 194s 1515: _M_install_facet(const locale::id*, const facet*); 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _M_init_facet(_Facet* __facet) 194s 1515: { _M_install_facet(&_Facet::id, __facet); } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _M_init_facet_unchecked(_Facet* __facet) 194s 1515: { 194s 1515: __facet->_M_add_reference(); 194s 1515: _M_facets[_Facet::id._M_id()] = __facet; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_install_cache(const facet*, size_t); 194s 1515: 194s 1515: void _M_init_extra(facet**); 194s 1515: void _M_init_extra(void*, void*, const char*, const char*); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: # 686 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: template 194s 1515: class __cxx11:: collate : public locale::facet 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef basic_string<_CharT> string_type; 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: __c_locale _M_c_locale_collate; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: static locale::id id; 194s 1515: # 713 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: explicit 194s 1515: collate(size_t __refs = 0) 194s 1515: : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) 194s 1515: { } 194s 1515: # 727 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: explicit 194s 1515: collate(__c_locale __cloc, size_t __refs = 0) 194s 1515: : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) 194s 1515: { } 194s 1515: # 744 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: int 194s 1515: compare(const _CharT* __lo1, const _CharT* __hi1, 194s 1515: const _CharT* __lo2, const _CharT* __hi2) const 194s 1515: { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } 194s 1515: # 763 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: string_type 194s 1515: transform(const _CharT* __lo, const _CharT* __hi) const 194s 1515: { return this->do_transform(__lo, __hi); } 194s 1515: # 777 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: long 194s 1515: hash(const _CharT* __lo, const _CharT* __hi) const 194s 1515: { return this->do_hash(__lo, __hi); } 194s 1515: 194s 1515: 194s 1515: int 194s 1515: _M_compare(const _CharT*, const _CharT*) const throw(); 194s 1515: 194s 1515: size_t 194s 1515: _M_transform(_CharT*, const _CharT*, size_t) const throw(); 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: virtual 194s 1515: ~collate() 194s 1515: { _S_destroy_c_locale(_M_c_locale_collate); } 194s 1515: # 806 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: virtual int 194s 1515: do_compare(const _CharT* __lo1, const _CharT* __hi1, 194s 1515: const _CharT* __lo2, const _CharT* __hi2) const; 194s 1515: # 820 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: virtual string_type 194s 1515: do_transform(const _CharT* __lo, const _CharT* __hi) const; 194s 1515: # 833 "/usr/include/c++/15/bits/locale_classes.h" 3 4 194s 1515: virtual long 194s 1515: do_hash(const _CharT* __lo, const _CharT* __hi) const; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id collate<_CharT>::id; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: int 194s 1515: collate::_M_compare(const char*, const char*) const throw(); 194s 1515: 194s 1515: template<> 194s 1515: size_t 194s 1515: collate::_M_transform(char*, const char*, size_t) const throw(); 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: int 194s 1515: collate::_M_compare(const wchar_t*, const wchar_t*) const throw(); 194s 1515: 194s 1515: template<> 194s 1515: size_t 194s 1515: collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class __cxx11:: collate_byname : public collate<_CharT> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef basic_string<_CharT> string_type; 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: collate_byname(const char* __s, size_t __refs = 0) 194s 1515: : collate<_CharT>(__refs) 194s 1515: { 194s 1515: if (__builtin_strcmp(__s, "C") != 0 194s 1515: && __builtin_strcmp(__s, "POSIX") != 0) 194s 1515: { 194s 1515: this->_S_destroy_c_locale(this->_M_c_locale_collate); 194s 1515: this->_S_create_c_locale(this->_M_c_locale_collate, __s); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: collate_byname(const string& __s, size_t __refs = 0) 194s 1515: : collate_byname(__s.c_str(), __refs) { } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~collate_byname() { } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/locale_classes.tcc" 1 3 4 194s 1515: # 43 "/usr/include/c++/15/bits/locale_classes.tcc" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: #pragma GCC diagnostic ignored "-Wvariadic-macros" 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: locale:: 194s 1515: locale(const locale& __other, _Facet* __f) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (__builtin_expect(!__f, 0)) 194s 1515: { 194s 1515: _M_impl = __other._M_impl; 194s 1515: _M_impl->_M_add_reference(); 194s 1515: return; 194s 1515: } 194s 1515: 194s 1515: _M_impl = new _Impl(*__other._M_impl, 1); 194s 1515: 194s 1515: try 194s 1515: { _M_impl->_M_install_facet(&_Facet::id, __f); } 194s 1515: catch(...) 194s 1515: { 194s 1515: _M_impl->_M_remove_reference(); 194s 1515: throw; 194s 1515: } 194s 1515: delete [] _M_impl->_M_names[0]; 194s 1515: _M_impl->_M_names[0] = 0; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: locale 194s 1515: locale:: 194s 1515: combine(const locale& __other) const 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Impl* __tmp = new _Impl(*_M_impl, 1); 194s 1515: try 194s 1515: { 194s 1515: __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: __tmp->_M_remove_reference(); 194s 1515: throw; 194s 1515: } 194s 1515: delete[] __tmp->_M_names[0]; 194s 1515: __tmp->_M_names[0] = 0; 194s 1515: return locale(__tmp); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: locale:: 194s 1515: operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, 194s 1515: const basic_string<_CharT, _Traits, _Alloc>& __s2) const 194s 1515: { 194s 1515: typedef std::collate<_CharT> __collate_type; 194s 1515: const __collate_type& __collate = use_facet<__collate_type>(*this); 194s 1515: return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), 194s 1515: __s2.data(), __s2.data() + __s2.length()) < 0); 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template 194s 1515: inline const _Facet* 194s 1515: __try_use_facet(const locale& __loc) noexcept 194s 1515: { 194s 1515: const size_t __i = _Facet::id._M_id(); 194s 1515: const locale::facet** __facets = __loc._M_impl->_M_facets; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if constexpr (__is_same(const _Facet, const ctype)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const num_get)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const num_put)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const codecvt)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const collate)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const moneypunct)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const moneypunct)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const money_get)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const money_put)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const numpunct)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const time_get)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const time_put)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const messages)) return static_cast(__facets[__i]); 194s 1515: 194s 1515: 194s 1515: if constexpr (__is_same(const _Facet, const ctype)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const num_get)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const num_put)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const codecvt)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const collate)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const moneypunct)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const moneypunct)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const money_get)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const money_put)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const numpunct)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const time_get)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const time_put)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const messages)) return static_cast(__facets[__i]); 194s 1515: 194s 1515: 194s 1515: if constexpr (__is_same(const _Facet, const codecvt)) return static_cast(__facets[__i]); 194s 1515: if constexpr (__is_same(const _Facet, const codecvt)) return static_cast(__facets[__i]); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) 194s 1515: return 0; 194s 1515: 194s 1515: 194s 1515: return dynamic_cast(__facets[__i]); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 187 "/usr/include/c++/15/bits/locale_classes.tcc" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: has_facet(const locale& __loc) noexcept 194s 1515: { 194s 1515: 194s 1515: static_assert(__is_base_of(locale::facet, _Facet), 194s 1515: "template argument must be derived from locale::facet"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: return std::__try_use_facet<_Facet>(__loc) != 0; 194s 1515: } 194s 1515: # 215 "/usr/include/c++/15/bits/locale_classes.tcc" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdangling-reference" 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline const _Facet& 194s 1515: use_facet(const locale& __loc) 194s 1515: { 194s 1515: 194s 1515: static_assert(__is_base_of(locale::facet, _Facet), 194s 1515: "template argument must be derived from locale::facet"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (const _Facet* __f = std::__try_use_facet<_Facet>(__loc)) 194s 1515: return *__f; 194s 1515: __throw_bad_cast(); 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: int 194s 1515: collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () 194s 1515: { return 0; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: size_t 194s 1515: collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () 194s 1515: { return 0; } 194s 1515: 194s 1515: template 194s 1515: int 194s 1515: collate<_CharT>:: 194s 1515: do_compare(const _CharT* __lo1, const _CharT* __hi1, 194s 1515: const _CharT* __lo2, const _CharT* __hi2) const 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const string_type __one(__lo1, __hi1); 194s 1515: const string_type __two(__lo2, __hi2); 194s 1515: 194s 1515: const _CharT* __p = __one.c_str(); 194s 1515: const _CharT* __pend = __one.data() + __one.length(); 194s 1515: const _CharT* __q = __two.c_str(); 194s 1515: const _CharT* __qend = __two.data() + __two.length(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: for (;;) 194s 1515: { 194s 1515: const int __res = _M_compare(__p, __q); 194s 1515: if (__res) 194s 1515: return __res; 194s 1515: 194s 1515: __p += char_traits<_CharT>::length(__p); 194s 1515: __q += char_traits<_CharT>::length(__q); 194s 1515: if (__p == __pend && __q == __qend) 194s 1515: return 0; 194s 1515: else if (__p == __pend) 194s 1515: return -1; 194s 1515: else if (__q == __qend) 194s 1515: return 1; 194s 1515: 194s 1515: __p++; 194s 1515: __q++; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename collate<_CharT>::string_type 194s 1515: collate<_CharT>:: 194s 1515: do_transform(const _CharT* __lo, const _CharT* __hi) const 194s 1515: { 194s 1515: string_type __ret; 194s 1515: 194s 1515: 194s 1515: const string_type __str(__lo, __hi); 194s 1515: 194s 1515: const _CharT* __p = __str.c_str(); 194s 1515: const _CharT* __pend = __str.data() + __str.length(); 194s 1515: 194s 1515: size_t __len = (__hi - __lo) * 2; 194s 1515: 194s 1515: struct _Buf 194s 1515: { 194s 1515: _Buf(size_t __n, void* __buf, int __e) 194s 1515: : _M_c(__buf ? (_CharT*)__buf : new _CharT[__n]), 194s 1515: _M_stackbuf(__buf), 194s 1515: _M_errno(__e) 194s 1515: { } 194s 1515: 194s 1515: ~_Buf() 194s 1515: { 194s 1515: if (_M_c != _M_stackbuf) 194s 1515: delete[] _M_c; 194s 1515: if ((*__errno_location ()) == 0) 194s 1515: (*__errno_location ()) = _M_errno; 194s 1515: } 194s 1515: 194s 1515: void _M_realloc(size_t __len) 194s 1515: { 194s 1515: _CharT* __p = new _CharT[__len]; 194s 1515: if (_M_c != _M_stackbuf) 194s 1515: delete[] _M_c; 194s 1515: _M_c = __p; 194s 1515: } 194s 1515: 194s 1515: _CharT* _M_c; 194s 1515: void* const _M_stackbuf; 194s 1515: int _M_errno; 194s 1515: }; 194s 1515: 194s 1515: const size_t __bytes = __len * sizeof(_CharT); 194s 1515: _Buf __buf(__len, __bytes <= 256 ? __builtin_alloca(__bytes) : 0, (*__errno_location ())); 194s 1515: (*__errno_location ()) = 0; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: for (;;) 194s 1515: { 194s 1515: 194s 1515: size_t __res = _M_transform(__buf._M_c, __p, __len); 194s 1515: 194s 1515: 194s 1515: if (__res >= __len) 194s 1515: { 194s 1515: if (__builtin_expect((*__errno_location ()), 0)) 194s 1515: { 194s 1515: 194s 1515: __throw_system_error((*__errno_location ())); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: __len = __res + 1; 194s 1515: __buf._M_realloc(__len); 194s 1515: __res = _M_transform(__buf._M_c, __p, __len); 194s 1515: } 194s 1515: 194s 1515: __ret.append(__buf._M_c, __res); 194s 1515: __p += char_traits<_CharT>::length(__p); 194s 1515: if (__p == __pend) 194s 1515: break; 194s 1515: 194s 1515: __p++; 194s 1515: __ret.push_back(_CharT()); 194s 1515: } 194s 1515: 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: long 194s 1515: collate<_CharT>:: 194s 1515: do_hash(const _CharT* __lo, const _CharT* __hi) const 194s 1515: { 194s 1515: unsigned long __val = 0; 194s 1515: for (; __lo < __hi; ++__lo) 194s 1515: __val = 194s 1515: *__lo + ((__val << 7) 194s 1515: | (__val >> (__gnu_cxx::__numeric_traits:: 194s 1515: __digits - 7))); 194s 1515: return static_cast(__val); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern template class collate; 194s 1515: extern template class collate_byname; 194s 1515: 194s 1515: extern template 194s 1515: const collate* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const collate& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: 194s 1515: extern template class collate; 194s 1515: extern template class collate_byname; 194s 1515: 194s 1515: extern template 194s 1515: const collate* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const collate& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 897 "/usr/include/c++/15/bits/locale_classes.h" 2 3 4 194s 1515: # 44 "/usr/include/c++/15/bits/ios_base.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/system_error" 1 3 4 194s 1515: # 43 "/usr/include/c++/15/system_error" 3 4 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/error_constants.h" 1 3 4 194s 1515: # 36 "/usr/include/arm-linux-gnueabihf/c++/15/bits/error_constants.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: enum class errc 194s 1515: { 194s 1515: address_family_not_supported = 97, 194s 1515: address_in_use = 98, 194s 1515: address_not_available = 99, 194s 1515: already_connected = 106, 194s 1515: argument_list_too_long = 7, 194s 1515: argument_out_of_domain = 33, 194s 1515: bad_address = 14, 194s 1515: bad_file_descriptor = 9, 194s 1515: 194s 1515: 194s 1515: bad_message = 74, 194s 1515: 194s 1515: 194s 1515: broken_pipe = 32, 194s 1515: connection_aborted = 103, 194s 1515: connection_already_in_progress = 114, 194s 1515: connection_refused = 111, 194s 1515: connection_reset = 104, 194s 1515: cross_device_link = 18, 194s 1515: destination_address_required = 89, 194s 1515: device_or_resource_busy = 16, 194s 1515: directory_not_empty = 39, 194s 1515: executable_format_error = 8, 194s 1515: file_exists = 17, 194s 1515: file_too_large = 27, 194s 1515: filename_too_long = 36, 194s 1515: function_not_supported = 38, 194s 1515: host_unreachable = 113, 194s 1515: 194s 1515: 194s 1515: identifier_removed = 43, 194s 1515: 194s 1515: 194s 1515: illegal_byte_sequence = 84, 194s 1515: inappropriate_io_control_operation = 25, 194s 1515: interrupted = 4, 194s 1515: invalid_argument = 22, 194s 1515: invalid_seek = 29, 194s 1515: io_error = 5, 194s 1515: is_a_directory = 21, 194s 1515: message_size = 90, 194s 1515: network_down = 100, 194s 1515: network_reset = 102, 194s 1515: network_unreachable = 101, 194s 1515: no_buffer_space = 105, 194s 1515: no_child_process = 10, 194s 1515: 194s 1515: 194s 1515: no_link = 67, 194s 1515: 194s 1515: 194s 1515: no_lock_available = 37, 194s 1515: 194s 1515: 194s 1515: no_message_available = 61, 194s 1515: 194s 1515: 194s 1515: no_message = 42, 194s 1515: no_protocol_option = 92, 194s 1515: no_space_on_device = 28, 194s 1515: 194s 1515: 194s 1515: no_stream_resources = 63, 194s 1515: 194s 1515: 194s 1515: no_such_device_or_address = 6, 194s 1515: no_such_device = 19, 194s 1515: no_such_file_or_directory = 2, 194s 1515: no_such_process = 3, 194s 1515: not_a_directory = 20, 194s 1515: not_a_socket = 88, 194s 1515: 194s 1515: 194s 1515: not_a_stream = 60, 194s 1515: 194s 1515: 194s 1515: not_connected = 107, 194s 1515: not_enough_memory = 12, 194s 1515: 194s 1515: 194s 1515: not_supported = 95, 194s 1515: 194s 1515: 194s 1515: 194s 1515: operation_canceled = 125, 194s 1515: 194s 1515: 194s 1515: operation_in_progress = 115, 194s 1515: operation_not_permitted = 1, 194s 1515: operation_not_supported = 95, 194s 1515: operation_would_block = 11, 194s 1515: 194s 1515: 194s 1515: owner_dead = 130, 194s 1515: 194s 1515: 194s 1515: permission_denied = 13, 194s 1515: 194s 1515: 194s 1515: protocol_error = 71, 194s 1515: 194s 1515: 194s 1515: protocol_not_supported = 93, 194s 1515: read_only_file_system = 30, 194s 1515: resource_deadlock_would_occur = 35, 194s 1515: resource_unavailable_try_again = 11, 194s 1515: result_out_of_range = 34, 194s 1515: 194s 1515: 194s 1515: state_not_recoverable = 131, 194s 1515: 194s 1515: 194s 1515: 194s 1515: stream_timeout = 62, 194s 1515: 194s 1515: 194s 1515: 194s 1515: text_file_busy = 26, 194s 1515: 194s 1515: 194s 1515: timed_out = 110, 194s 1515: too_many_files_open_in_system = 23, 194s 1515: too_many_files_open = 24, 194s 1515: too_many_links = 31, 194s 1515: too_many_symbolic_link_levels = 40, 194s 1515: 194s 1515: 194s 1515: value_too_large = 75, 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: wrong_protocol_type = 91 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 44 "/usr/include/c++/15/system_error" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/stdexcept" 1 3 4 194s 1515: # 43 "/usr/include/c++/15/stdexcept" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct __cow_string 194s 1515: { 194s 1515: union { 194s 1515: const char* _M_p; 194s 1515: char _M_bytes[sizeof(const char*)]; 194s 1515: }; 194s 1515: 194s 1515: __cow_string(); 194s 1515: __cow_string(const std::string&); 194s 1515: __cow_string(const char*, size_t); 194s 1515: __cow_string(const __cow_string&) noexcept; 194s 1515: __cow_string& operator=(const __cow_string&) noexcept; 194s 1515: ~__cow_string(); 194s 1515: 194s 1515: __cow_string(__cow_string&&) noexcept; 194s 1515: __cow_string& operator=(__cow_string&&) noexcept; 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: typedef basic_string __sso_string; 194s 1515: # 115 "/usr/include/c++/15/stdexcept" 3 4 194s 1515: class logic_error : public exception 194s 1515: { 194s 1515: __cow_string _M_msg; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: explicit 194s 1515: logic_error(const string& __arg) ; 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: logic_error(const char*) ; 194s 1515: 194s 1515: logic_error(logic_error&&) noexcept; 194s 1515: logic_error& operator=(logic_error&&) noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: logic_error(const logic_error&) noexcept; 194s 1515: logic_error& operator=(const logic_error&) noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual ~logic_error() noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual const char* 194s 1515: what() const noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: class domain_error : public logic_error 194s 1515: { 194s 1515: public: 194s 1515: explicit domain_error(const string& __arg) ; 194s 1515: 194s 1515: explicit domain_error(const char*) ; 194s 1515: domain_error(const domain_error&) = default; 194s 1515: domain_error& operator=(const domain_error&) = default; 194s 1515: domain_error(domain_error&&) = default; 194s 1515: domain_error& operator=(domain_error&&) = default; 194s 1515: 194s 1515: virtual ~domain_error() noexcept; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: class invalid_argument : public logic_error 194s 1515: { 194s 1515: public: 194s 1515: explicit invalid_argument(const string& __arg) ; 194s 1515: 194s 1515: explicit invalid_argument(const char*) ; 194s 1515: invalid_argument(const invalid_argument&) = default; 194s 1515: invalid_argument& operator=(const invalid_argument&) = default; 194s 1515: invalid_argument(invalid_argument&&) = default; 194s 1515: invalid_argument& operator=(invalid_argument&&) = default; 194s 1515: 194s 1515: virtual ~invalid_argument() noexcept; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: class length_error : public logic_error 194s 1515: { 194s 1515: public: 194s 1515: explicit length_error(const string& __arg) ; 194s 1515: 194s 1515: explicit length_error(const char*) ; 194s 1515: length_error(const length_error&) = default; 194s 1515: length_error& operator=(const length_error&) = default; 194s 1515: length_error(length_error&&) = default; 194s 1515: length_error& operator=(length_error&&) = default; 194s 1515: 194s 1515: virtual ~length_error() noexcept; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: class out_of_range : public logic_error 194s 1515: { 194s 1515: public: 194s 1515: explicit out_of_range(const string& __arg) ; 194s 1515: 194s 1515: explicit out_of_range(const char*) ; 194s 1515: out_of_range(const out_of_range&) = default; 194s 1515: out_of_range& operator=(const out_of_range&) = default; 194s 1515: out_of_range(out_of_range&&) = default; 194s 1515: out_of_range& operator=(out_of_range&&) = default; 194s 1515: 194s 1515: virtual ~out_of_range() noexcept; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: class runtime_error : public exception 194s 1515: { 194s 1515: __cow_string _M_msg; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: explicit 194s 1515: runtime_error(const string& __arg) ; 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: runtime_error(const char*) ; 194s 1515: 194s 1515: runtime_error(runtime_error&&) noexcept; 194s 1515: runtime_error& operator=(runtime_error&&) noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: runtime_error(const runtime_error&) noexcept; 194s 1515: runtime_error& operator=(const runtime_error&) noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual ~runtime_error() noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual const char* 194s 1515: what() const noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: class range_error : public runtime_error 194s 1515: { 194s 1515: public: 194s 1515: explicit range_error(const string& __arg) ; 194s 1515: 194s 1515: explicit range_error(const char*) ; 194s 1515: range_error(const range_error&) = default; 194s 1515: range_error& operator=(const range_error&) = default; 194s 1515: range_error(range_error&&) = default; 194s 1515: range_error& operator=(range_error&&) = default; 194s 1515: 194s 1515: virtual ~range_error() noexcept; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: class overflow_error : public runtime_error 194s 1515: { 194s 1515: public: 194s 1515: explicit overflow_error(const string& __arg) ; 194s 1515: 194s 1515: explicit overflow_error(const char*) ; 194s 1515: overflow_error(const overflow_error&) = default; 194s 1515: overflow_error& operator=(const overflow_error&) = default; 194s 1515: overflow_error(overflow_error&&) = default; 194s 1515: overflow_error& operator=(overflow_error&&) = default; 194s 1515: 194s 1515: virtual ~overflow_error() noexcept; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: class underflow_error : public runtime_error 194s 1515: { 194s 1515: public: 194s 1515: explicit underflow_error(const string& __arg) ; 194s 1515: 194s 1515: explicit underflow_error(const char*) ; 194s 1515: underflow_error(const underflow_error&) = default; 194s 1515: underflow_error& operator=(const underflow_error&) = default; 194s 1515: underflow_error(underflow_error&&) = default; 194s 1515: underflow_error& operator=(underflow_error&&) = default; 194s 1515: 194s 1515: virtual ~underflow_error() noexcept; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 46 "/usr/include/c++/15/system_error" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: class error_code; 194s 1515: class error_condition; 194s 1515: class system_error; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct is_error_code_enum : public false_type { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct is_error_condition_enum : public false_type { }; 194s 1515: 194s 1515: template<> 194s 1515: struct is_error_condition_enum 194s 1515: : public true_type { }; 194s 1515: # 84 "/usr/include/c++/15/system_error" 3 4 194s 1515: inline namespace _V2 { 194s 1515: # 108 "/usr/include/c++/15/system_error" 3 4 194s 1515: class error_category 194s 1515: { 194s 1515: public: 194s 1515: constexpr error_category() noexcept = default; 194s 1515: 194s 1515: virtual ~error_category(); 194s 1515: 194s 1515: error_category(const error_category&) = delete; 194s 1515: error_category& operator=(const error_category&) = delete; 194s 1515: 194s 1515: 194s 1515: virtual const char* 194s 1515: name() const noexcept = 0; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: private: 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: virtual __cow_string 194s 1515: _M_message(int) const; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: virtual string 194s 1515: message(int) const = 0; 194s 1515: # 146 "/usr/include/c++/15/system_error" 3 4 194s 1515: public: 194s 1515: 194s 1515: virtual error_condition 194s 1515: default_error_condition(int __i) const noexcept; 194s 1515: 194s 1515: 194s 1515: virtual bool 194s 1515: equivalent(int __i, const error_condition& __cond) const noexcept; 194s 1515: 194s 1515: 194s 1515: virtual bool 194s 1515: equivalent(const error_code& __code, int __i) const noexcept; 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: operator==(const error_category& __other) const noexcept 194s 1515: { return this == &__other; } 194s 1515: # 172 "/usr/include/c++/15/system_error" 3 4 194s 1515: bool 194s 1515: operator<(const error_category& __other) const noexcept 194s 1515: { return less()(this, &__other); } 194s 1515: 194s 1515: bool 194s 1515: operator!=(const error_category& __other) const noexcept 194s 1515: { return this != &__other; } 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__, __gnu__::__const__]] 194s 1515: const error_category& 194s 1515: generic_category() noexcept; 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__, __gnu__::__const__]] 194s 1515: const error_category& 194s 1515: system_category() noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace __adl_only 194s 1515: { 194s 1515: void make_error_code() = delete; 194s 1515: void make_error_condition() = delete; 194s 1515: } 194s 1515: # 225 "/usr/include/c++/15/system_error" 3 4 194s 1515: class error_code 194s 1515: { 194s 1515: template 194s 1515: using _Check 194s 1515: = __enable_if_t::value>; 194s 1515: 194s 1515: public: 194s 1515: error_code() noexcept 194s 1515: : _M_value(0), _M_cat(&system_category()) { } 194s 1515: 194s 1515: error_code(int __v, const error_category& __cat) noexcept 194s 1515: : _M_value(__v), _M_cat(&__cat) { } 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: error_code(_ErrorCodeEnum __e) noexcept 194s 1515: { 194s 1515: using __adl_only::make_error_code; 194s 1515: *this = make_error_code(__e); 194s 1515: } 194s 1515: 194s 1515: error_code(const error_code&) = default; 194s 1515: error_code& operator=(const error_code&) = default; 194s 1515: 194s 1515: void 194s 1515: assign(int __v, const error_category& __cat) noexcept 194s 1515: { 194s 1515: _M_value = __v; 194s 1515: _M_cat = &__cat; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { assign(0, system_category()); } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: int 194s 1515: value() const noexcept { return _M_value; } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const error_category& 194s 1515: category() const noexcept { return *_M_cat; } 194s 1515: 194s 1515: 194s 1515: error_condition 194s 1515: default_error_condition() const noexcept; 194s 1515: 194s 1515: 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: string 194s 1515: message() const 194s 1515: { return category().message(value()); } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: explicit operator bool() const noexcept 194s 1515: { return _M_value != 0; } 194s 1515: 194s 1515: 194s 1515: private: 194s 1515: int _M_value; 194s 1515: const error_category* _M_cat; 194s 1515: }; 194s 1515: # 302 "/usr/include/c++/15/system_error" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: inline error_code 194s 1515: make_error_code(errc __e) noexcept 194s 1515: { return error_code(static_cast(__e), generic_category()); } 194s 1515: # 325 "/usr/include/c++/15/system_error" 3 4 194s 1515: inline bool 194s 1515: operator<(const error_code& __lhs, const error_code& __rhs) noexcept 194s 1515: { 194s 1515: return (__lhs.category() < __rhs.category() 194s 1515: || (__lhs.category() == __rhs.category() 194s 1515: && __lhs.value() < __rhs.value())); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) 194s 1515: { return (__os << __e.category().name() << ':' << __e.value()); } 194s 1515: # 356 "/usr/include/c++/15/system_error" 3 4 194s 1515: class error_condition 194s 1515: { 194s 1515: template 194s 1515: using _Check 194s 1515: = __enable_if_t::value>; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: error_condition() noexcept 194s 1515: : _M_value(0), _M_cat(&generic_category()) { } 194s 1515: 194s 1515: 194s 1515: error_condition(int __v, const error_category& __cat) noexcept 194s 1515: : _M_value(__v), _M_cat(&__cat) { } 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: error_condition(_ErrorConditionEnum __e) noexcept 194s 1515: { 194s 1515: using __adl_only::make_error_condition; 194s 1515: *this = make_error_condition(__e); 194s 1515: } 194s 1515: 194s 1515: error_condition(const error_condition&) = default; 194s 1515: error_condition& operator=(const error_condition&) = default; 194s 1515: 194s 1515: 194s 1515: void 194s 1515: assign(int __v, const error_category& __cat) noexcept 194s 1515: { 194s 1515: _M_value = __v; 194s 1515: _M_cat = &__cat; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { assign(0, generic_category()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: int 194s 1515: value() const noexcept { return _M_value; } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const error_category& 194s 1515: category() const noexcept { return *_M_cat; } 194s 1515: 194s 1515: 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: string 194s 1515: message() const 194s 1515: { return category().message(value()); } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: explicit operator bool() const noexcept 194s 1515: { return _M_value != 0; } 194s 1515: 194s 1515: 194s 1515: private: 194s 1515: int _M_value; 194s 1515: const error_category* _M_cat; 194s 1515: }; 194s 1515: # 435 "/usr/include/c++/15/system_error" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: inline error_condition 194s 1515: make_error_condition(errc __e) noexcept 194s 1515: { return error_condition(static_cast(__e), generic_category()); } 194s 1515: # 449 "/usr/include/c++/15/system_error" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const error_code& __lhs, const error_code& __rhs) noexcept 194s 1515: { 194s 1515: return __lhs.category() == __rhs.category() 194s 1515: && __lhs.value() == __rhs.value(); 194s 1515: } 194s 1515: # 465 "/usr/include/c++/15/system_error" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const error_code& __lhs, const error_condition& __rhs) noexcept 194s 1515: { 194s 1515: return __lhs.category().equivalent(__lhs.value(), __rhs) 194s 1515: || __rhs.category().equivalent(__lhs, __rhs.value()); 194s 1515: } 194s 1515: # 480 "/usr/include/c++/15/system_error" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const error_condition& __lhs, 194s 1515: const error_condition& __rhs) noexcept 194s 1515: { 194s 1515: return __lhs.category() == __rhs.category() 194s 1515: && __lhs.value() == __rhs.value(); 194s 1515: } 194s 1515: # 508 "/usr/include/c++/15/system_error" 3 4 194s 1515: inline bool 194s 1515: operator<(const error_condition& __lhs, 194s 1515: const error_condition& __rhs) noexcept 194s 1515: { 194s 1515: return (__lhs.category() < __rhs.category() 194s 1515: || (__lhs.category() == __rhs.category() 194s 1515: && __lhs.value() < __rhs.value())); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline bool 194s 1515: operator==(const error_condition& __lhs, const error_code& __rhs) noexcept 194s 1515: { 194s 1515: return (__rhs.category().equivalent(__rhs.value(), __lhs) 194s 1515: || __lhs.category().equivalent(__rhs, __lhs.value())); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline bool 194s 1515: operator!=(const error_code& __lhs, const error_code& __rhs) noexcept 194s 1515: { return !(__lhs == __rhs); } 194s 1515: 194s 1515: 194s 1515: inline bool 194s 1515: operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept 194s 1515: { return !(__lhs == __rhs); } 194s 1515: 194s 1515: 194s 1515: inline bool 194s 1515: operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept 194s 1515: { return !(__lhs == __rhs); } 194s 1515: 194s 1515: 194s 1515: inline bool 194s 1515: operator!=(const error_condition& __lhs, 194s 1515: const error_condition& __rhs) noexcept 194s 1515: { return !(__lhs == __rhs); } 194s 1515: # 558 "/usr/include/c++/15/system_error" 3 4 194s 1515: class system_error : public std::runtime_error 194s 1515: { 194s 1515: private: 194s 1515: error_code _M_code; 194s 1515: 194s 1515: public: 194s 1515: system_error(error_code __ec = error_code()) 194s 1515: : runtime_error(__ec.message()), _M_code(__ec) { } 194s 1515: 194s 1515: system_error(error_code __ec, const string& __what) 194s 1515: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } 194s 1515: 194s 1515: system_error(error_code __ec, const char* __what) 194s 1515: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } 194s 1515: 194s 1515: system_error(int __v, const error_category& __ecat, const char* __what) 194s 1515: : system_error(error_code(__v, __ecat), __what) { } 194s 1515: 194s 1515: system_error(int __v, const error_category& __ecat) 194s 1515: : runtime_error(error_code(__v, __ecat).message()), 194s 1515: _M_code(__v, __ecat) { } 194s 1515: 194s 1515: system_error(int __v, const error_category& __ecat, const string& __what) 194s 1515: : runtime_error(__what + (": " + error_code(__v, __ecat).message())), 194s 1515: _M_code(__v, __ecat) { } 194s 1515: 194s 1515: 194s 1515: system_error (const system_error &) = default; 194s 1515: system_error &operator= (const system_error &) = default; 194s 1515: 194s 1515: 194s 1515: virtual ~system_error() noexcept; 194s 1515: 194s 1515: const error_code& 194s 1515: code() const noexcept { return _M_code; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct hash 194s 1515: : public __hash_base 194s 1515: { 194s 1515: size_t 194s 1515: operator()(const error_code& __e) const noexcept 194s 1515: { 194s 1515: const size_t __tmp = std::_Hash_impl::hash(__e.value()); 194s 1515: return std::_Hash_impl::__hash_combine(&__e.category(), __tmp); 194s 1515: } 194s 1515: }; 194s 1515: # 638 "/usr/include/c++/15/system_error" 3 4 194s 1515: 194s 1515: } 194s 1515: # 49 "/usr/include/c++/15/bits/ios_base.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: enum _Ios_Fmtflags 194s 1515: { 194s 1515: _S_boolalpha = 1L << 0, 194s 1515: _S_dec = 1L << 1, 194s 1515: _S_fixed = 1L << 2, 194s 1515: _S_hex = 1L << 3, 194s 1515: _S_internal = 1L << 4, 194s 1515: _S_left = 1L << 5, 194s 1515: _S_oct = 1L << 6, 194s 1515: _S_right = 1L << 7, 194s 1515: _S_scientific = 1L << 8, 194s 1515: _S_showbase = 1L << 9, 194s 1515: _S_showpoint = 1L << 10, 194s 1515: _S_showpos = 1L << 11, 194s 1515: _S_skipws = 1L << 12, 194s 1515: _S_unitbuf = 1L << 13, 194s 1515: _S_uppercase = 1L << 14, 194s 1515: _S_adjustfield = _S_left | _S_right | _S_internal, 194s 1515: _S_basefield = _S_dec | _S_oct | _S_hex, 194s 1515: _S_floatfield = _S_scientific | _S_fixed, 194s 1515: _S_ios_fmtflags_end = 1L << 16, 194s 1515: _S_ios_fmtflags_max = 0x7fffffff, 194s 1515: _S_ios_fmtflags_min = ~0x7fffffff 194s 1515: }; 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Fmtflags 194s 1515: operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept 194s 1515: { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Fmtflags 194s 1515: operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept 194s 1515: { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Fmtflags 194s 1515: operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept 194s 1515: { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Fmtflags 194s 1515: operator~(_Ios_Fmtflags __a) noexcept 194s 1515: { return _Ios_Fmtflags(~static_cast(__a)); } 194s 1515: 194s 1515: 194s 1515: inline const _Ios_Fmtflags& 194s 1515: operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept 194s 1515: { return __a = __a | __b; } 194s 1515: 194s 1515: 194s 1515: inline const _Ios_Fmtflags& 194s 1515: operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept 194s 1515: { return __a = __a & __b; } 194s 1515: 194s 1515: 194s 1515: inline const _Ios_Fmtflags& 194s 1515: operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept 194s 1515: { return __a = __a ^ __b; } 194s 1515: # 127 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: enum __attribute__((__flag_enum__)) _Ios_Openmode 194s 1515: { 194s 1515: _S_app = 1L << 0, 194s 1515: _S_ate = 1L << 1, 194s 1515: _S_bin = 1L << 2, 194s 1515: _S_in = 1L << 3, 194s 1515: _S_out = 1L << 4, 194s 1515: _S_trunc = 1L << 5, 194s 1515: _S_noreplace __attribute__((__unused__)) = 1L << 6, 194s 1515: _S_ios_openmode_end __attribute__((__unused__)) = 1L << 16, 194s 1515: _S_ios_openmode_max __attribute__((__unused__)) = 0x7fffffff, 194s 1515: _S_ios_openmode_min __attribute__((__unused__)) = ~0x7fffffff 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Openmode 194s 1515: operator&(_Ios_Openmode __a, _Ios_Openmode __b) noexcept 194s 1515: { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Openmode 194s 1515: operator|(_Ios_Openmode __a, _Ios_Openmode __b) noexcept 194s 1515: { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Openmode 194s 1515: operator^(_Ios_Openmode __a, _Ios_Openmode __b) noexcept 194s 1515: { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Openmode 194s 1515: operator~(_Ios_Openmode __a) noexcept 194s 1515: { return _Ios_Openmode(~static_cast(__a)); } 194s 1515: 194s 1515: 194s 1515: inline const _Ios_Openmode& 194s 1515: operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept 194s 1515: { return __a = __a | __b; } 194s 1515: 194s 1515: 194s 1515: inline const _Ios_Openmode& 194s 1515: operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept 194s 1515: { return __a = __a & __b; } 194s 1515: 194s 1515: 194s 1515: inline const _Ios_Openmode& 194s 1515: operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept 194s 1515: { return __a = __a ^ __b; } 194s 1515: 194s 1515: 194s 1515: enum _Ios_Iostate 194s 1515: { 194s 1515: _S_goodbit = 0, 194s 1515: _S_badbit = 1L << 0, 194s 1515: _S_eofbit = 1L << 1, 194s 1515: _S_failbit = 1L << 2, 194s 1515: _S_ios_iostate_end = 1L << 16, 194s 1515: _S_ios_iostate_max = 0x7fffffff, 194s 1515: _S_ios_iostate_min = ~0x7fffffff 194s 1515: }; 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Iostate 194s 1515: operator&(_Ios_Iostate __a, _Ios_Iostate __b) noexcept 194s 1515: { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Iostate 194s 1515: operator|(_Ios_Iostate __a, _Ios_Iostate __b) noexcept 194s 1515: { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Iostate 194s 1515: operator^(_Ios_Iostate __a, _Ios_Iostate __b) noexcept 194s 1515: { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } 194s 1515: 194s 1515: [[__nodiscard__]] constexpr 194s 1515: inline _Ios_Iostate 194s 1515: operator~(_Ios_Iostate __a) noexcept 194s 1515: { return _Ios_Iostate(~static_cast(__a)); } 194s 1515: 194s 1515: 194s 1515: inline const _Ios_Iostate& 194s 1515: operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept 194s 1515: { return __a = __a | __b; } 194s 1515: 194s 1515: 194s 1515: inline const _Ios_Iostate& 194s 1515: operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept 194s 1515: { return __a = __a & __b; } 194s 1515: 194s 1515: 194s 1515: inline const _Ios_Iostate& 194s 1515: operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept 194s 1515: { return __a = __a ^ __b; } 194s 1515: 194s 1515: 194s 1515: enum _Ios_Seekdir 194s 1515: { 194s 1515: _S_beg = 0, 194s 1515: _S_cur = 1, 194s 1515: _S_end = 2, 194s 1515: _S_ios_seekdir_end = 1L << 16 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: enum class io_errc { stream = 1 }; 194s 1515: 194s 1515: template <> struct is_error_code_enum : public true_type { }; 194s 1515: 194s 1515: [[__nodiscard__, __gnu__::__const__]] 194s 1515: const error_category& 194s 1515: iostream_category() noexcept; 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline error_code 194s 1515: make_error_code(io_errc __e) noexcept 194s 1515: { return error_code(static_cast(__e), iostream_category()); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: inline error_condition 194s 1515: make_error_condition(io_errc __e) noexcept 194s 1515: { return error_condition(static_cast(__e), iostream_category()); } 194s 1515: # 265 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: class ios_base 194s 1515: { 194s 1515: # 283 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: public: 194s 1515: # 292 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: failure(const string& __str); 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: failure(const string&, const error_code&); 194s 1515: 194s 1515: explicit 194s 1515: failure(const char*, const error_code& = io_errc::stream); 194s 1515: 194s 1515: 194s 1515: virtual 194s 1515: ~failure() throw(); 194s 1515: 194s 1515: virtual const char* 194s 1515: what() const throw(); 194s 1515: }; 194s 1515: # 378 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: typedef _Ios_Fmtflags fmtflags; 194s 1515: 194s 1515: 194s 1515: static const fmtflags boolalpha = _S_boolalpha; 194s 1515: 194s 1515: 194s 1515: static const fmtflags dec = _S_dec; 194s 1515: 194s 1515: 194s 1515: static const fmtflags fixed = _S_fixed; 194s 1515: 194s 1515: 194s 1515: static const fmtflags hex = _S_hex; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const fmtflags internal = _S_internal; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const fmtflags left = _S_left; 194s 1515: 194s 1515: 194s 1515: static const fmtflags oct = _S_oct; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const fmtflags right = _S_right; 194s 1515: 194s 1515: 194s 1515: static const fmtflags scientific = _S_scientific; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const fmtflags showbase = _S_showbase; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const fmtflags showpoint = _S_showpoint; 194s 1515: 194s 1515: 194s 1515: static const fmtflags showpos = _S_showpos; 194s 1515: 194s 1515: 194s 1515: static const fmtflags skipws = _S_skipws; 194s 1515: 194s 1515: 194s 1515: static const fmtflags unitbuf = _S_unitbuf; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const fmtflags uppercase = _S_uppercase; 194s 1515: 194s 1515: 194s 1515: static const fmtflags adjustfield = _S_adjustfield; 194s 1515: 194s 1515: 194s 1515: static const fmtflags basefield = _S_basefield; 194s 1515: 194s 1515: 194s 1515: static const fmtflags floatfield = _S_floatfield; 194s 1515: # 453 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: typedef _Ios_Iostate iostate; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const iostate badbit = _S_badbit; 194s 1515: 194s 1515: 194s 1515: static const iostate eofbit = _S_eofbit; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const iostate failbit = _S_failbit; 194s 1515: 194s 1515: 194s 1515: static const iostate goodbit = _S_goodbit; 194s 1515: # 484 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: typedef _Ios_Openmode openmode; 194s 1515: 194s 1515: 194s 1515: static const openmode app = _S_app; 194s 1515: 194s 1515: 194s 1515: static const openmode ate = _S_ate; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const openmode binary = _S_bin; 194s 1515: 194s 1515: 194s 1515: static const openmode in = _S_in; 194s 1515: 194s 1515: 194s 1515: static const openmode out = _S_out; 194s 1515: 194s 1515: 194s 1515: static const openmode trunc = _S_trunc; 194s 1515: 194s 1515: static const openmode __noreplace = _S_noreplace; 194s 1515: # 523 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: typedef _Ios_Seekdir seekdir; 194s 1515: 194s 1515: 194s 1515: static const seekdir beg = _S_beg; 194s 1515: 194s 1515: 194s 1515: static const seekdir cur = _S_cur; 194s 1515: 194s 1515: 194s 1515: static const seekdir end = _S_end; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef int io_state 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::iostate" "' instead"))); 194s 1515: typedef int open_mode 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::openmode" "' instead"))); 194s 1515: typedef int seek_dir 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::seekdir" "' instead"))); 194s 1515: 194s 1515: typedef std::streampos streampos 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::streampos" "' instead"))); 194s 1515: typedef std::streamoff streamoff 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::streamoff" "' instead"))); 194s 1515: # 556 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: enum event 194s 1515: { 194s 1515: erase_event, 194s 1515: imbue_event, 194s 1515: copyfmt_event 194s 1515: }; 194s 1515: # 573 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: typedef void (*event_callback) (event __e, ios_base& __b, int __i); 194s 1515: # 585 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: void 194s 1515: register_callback(event_callback __fn, int __index); 194s 1515: 194s 1515: protected: 194s 1515: streamsize _M_precision; 194s 1515: streamsize _M_width; 194s 1515: fmtflags _M_flags; 194s 1515: iostate _M_exception; 194s 1515: iostate _M_streambuf_state; 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct _Callback_list 194s 1515: { 194s 1515: 194s 1515: _Callback_list* _M_next; 194s 1515: ios_base::event_callback _M_fn; 194s 1515: int _M_index; 194s 1515: _Atomic_word _M_refcount; 194s 1515: 194s 1515: _Callback_list(ios_base::event_callback __fn, int __index, 194s 1515: _Callback_list* __cb) 194s 1515: : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } 194s 1515: 194s 1515: void 194s 1515: _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 194s 1515: 194s 1515: 194s 1515: int 194s 1515: _M_remove_reference() 194s 1515: { 194s 1515: 194s 1515: ; 194s 1515: int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); 194s 1515: if (__res == 0) 194s 1515: { 194s 1515: ; 194s 1515: } 194s 1515: return __res; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: _Callback_list* _M_callbacks; 194s 1515: 194s 1515: void 194s 1515: _M_call_callbacks(event __ev) throw(); 194s 1515: 194s 1515: void 194s 1515: _M_dispose_callbacks(void) throw(); 194s 1515: 194s 1515: 194s 1515: struct _Words 194s 1515: { 194s 1515: void* _M_pword; 194s 1515: long _M_iword; 194s 1515: _Words() : _M_pword(0), _M_iword(0) { } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: _Words _M_word_zero; 194s 1515: 194s 1515: 194s 1515: 194s 1515: enum { _S_local_word_size = 8 }; 194s 1515: _Words _M_local_word[_S_local_word_size]; 194s 1515: 194s 1515: 194s 1515: int _M_word_size; 194s 1515: _Words* _M_word; 194s 1515: 194s 1515: _Words& 194s 1515: _M_grow_words(int __index, bool __iword); 194s 1515: 194s 1515: 194s 1515: locale _M_ios_locale; 194s 1515: 194s 1515: void 194s 1515: _M_init() throw(); 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: class Init 194s 1515: { 194s 1515: friend class ios_base; 194s 1515: public: 194s 1515: Init(); 194s 1515: ~Init(); 194s 1515: 194s 1515: 194s 1515: Init(const Init&) = default; 194s 1515: Init& operator=(const Init&) = default; 194s 1515: 194s 1515: 194s 1515: private: 194s 1515: static _Atomic_word _S_refcount; 194s 1515: static bool _S_synced_with_stdio; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: fmtflags 194s 1515: flags() const 194s 1515: { return _M_flags; } 194s 1515: # 704 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: fmtflags 194s 1515: flags(fmtflags __fmtfl) 194s 1515: { 194s 1515: fmtflags __old = _M_flags; 194s 1515: _M_flags = __fmtfl; 194s 1515: return __old; 194s 1515: } 194s 1515: # 720 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: fmtflags 194s 1515: setf(fmtflags __fmtfl) 194s 1515: { 194s 1515: fmtflags __old = _M_flags; 194s 1515: _M_flags |= __fmtfl; 194s 1515: return __old; 194s 1515: } 194s 1515: # 737 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: fmtflags 194s 1515: setf(fmtflags __fmtfl, fmtflags __mask) 194s 1515: { 194s 1515: fmtflags __old = _M_flags; 194s 1515: _M_flags &= ~__mask; 194s 1515: _M_flags |= (__fmtfl & __mask); 194s 1515: return __old; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: unsetf(fmtflags __mask) 194s 1515: { _M_flags &= ~__mask; } 194s 1515: # 763 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: streamsize 194s 1515: precision() const 194s 1515: { return _M_precision; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: streamsize 194s 1515: precision(streamsize __prec) 194s 1515: { 194s 1515: streamsize __old = _M_precision; 194s 1515: _M_precision = __prec; 194s 1515: return __old; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: streamsize 194s 1515: width() const 194s 1515: { return _M_width; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: streamsize 194s 1515: width(streamsize __wide) 194s 1515: { 194s 1515: streamsize __old = _M_width; 194s 1515: _M_width = __wide; 194s 1515: return __old; 194s 1515: } 194s 1515: # 816 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: static bool 194s 1515: sync_with_stdio(bool __sync = true); 194s 1515: # 828 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: locale 194s 1515: imbue(const locale& __loc) throw(); 194s 1515: # 839 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: locale 194s 1515: getloc() const 194s 1515: { return _M_ios_locale; } 194s 1515: # 851 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: const locale& 194s 1515: _M_getloc() const 194s 1515: { return _M_ios_locale; } 194s 1515: # 870 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: static int 194s 1515: xalloc() throw(); 194s 1515: # 886 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: long& 194s 1515: iword(int __ix) 194s 1515: { 194s 1515: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size) 194s 1515: ? _M_word[__ix] : _M_grow_words(__ix, true); 194s 1515: return __word._M_iword; 194s 1515: } 194s 1515: # 907 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: void*& 194s 1515: pword(int __ix) 194s 1515: { 194s 1515: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size) 194s 1515: ? _M_word[__ix] : _M_grow_words(__ix, false); 194s 1515: return __word._M_pword; 194s 1515: } 194s 1515: # 924 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: virtual ~ios_base(); 194s 1515: 194s 1515: protected: 194s 1515: ios_base() throw (); 194s 1515: # 938 "/usr/include/c++/15/bits/ios_base.h" 3 4 194s 1515: public: 194s 1515: ios_base(const ios_base&) = delete; 194s 1515: 194s 1515: ios_base& 194s 1515: operator=(const ios_base&) = delete; 194s 1515: 194s 1515: protected: 194s 1515: void 194s 1515: _M_move(ios_base&) noexcept; 194s 1515: 194s 1515: void 194s 1515: _M_swap(ios_base& __rhs) noexcept; 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: boolalpha(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::boolalpha); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: noboolalpha(ios_base& __base) 194s 1515: { 194s 1515: __base.unsetf(ios_base::boolalpha); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: showbase(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::showbase); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: noshowbase(ios_base& __base) 194s 1515: { 194s 1515: __base.unsetf(ios_base::showbase); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: showpoint(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::showpoint); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: noshowpoint(ios_base& __base) 194s 1515: { 194s 1515: __base.unsetf(ios_base::showpoint); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: showpos(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::showpos); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: noshowpos(ios_base& __base) 194s 1515: { 194s 1515: __base.unsetf(ios_base::showpos); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: skipws(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::skipws); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: noskipws(ios_base& __base) 194s 1515: { 194s 1515: __base.unsetf(ios_base::skipws); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: uppercase(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::uppercase); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: nouppercase(ios_base& __base) 194s 1515: { 194s 1515: __base.unsetf(ios_base::uppercase); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: unitbuf(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::unitbuf); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: nounitbuf(ios_base& __base) 194s 1515: { 194s 1515: __base.unsetf(ios_base::unitbuf); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: internal(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::internal, ios_base::adjustfield); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: left(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::left, ios_base::adjustfield); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: right(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::right, ios_base::adjustfield); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: dec(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::dec, ios_base::basefield); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: hex(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::hex, ios_base::basefield); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: oct(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::oct, ios_base::basefield); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: fixed(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::fixed, ios_base::floatfield); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: scientific(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::scientific, ios_base::floatfield); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: hexfloat(ios_base& __base) 194s 1515: { 194s 1515: __base.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline ios_base& 194s 1515: defaultfloat(ios_base& __base) 194s 1515: { 194s 1515: __base.unsetf(ios_base::floatfield); 194s 1515: return __base; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 47 "/usr/include/c++/15/ios" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/streambuf" 1 3 4 194s 1515: # 49 "/usr/include/c++/15/streambuf" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: streamsize 194s 1515: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, 194s 1515: basic_streambuf<_CharT, _Traits>*, bool&); 194s 1515: # 125 "/usr/include/c++/15/streambuf" 3 4 194s 1515: template 194s 1515: class basic_streambuf 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: typedef typename traits_type::pos_type pos_type; 194s 1515: typedef typename traits_type::off_type off_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef basic_streambuf __streambuf_type; 194s 1515: 194s 1515: 194s 1515: friend class basic_ios; 194s 1515: friend class basic_istream; 194s 1515: friend class basic_ostream; 194s 1515: friend class istreambuf_iterator; 194s 1515: friend class ostreambuf_iterator; 194s 1515: 194s 1515: friend streamsize 194s 1515: __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); 194s 1515: 194s 1515: template 194s 1515: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 194s 1515: _CharT2*>::__type 194s 1515: __copy_move_a2(istreambuf_iterator<_CharT2>, 194s 1515: istreambuf_iterator<_CharT2>, _CharT2*); 194s 1515: 194s 1515: template 194s 1515: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 194s 1515: istreambuf_iterator<_CharT2> >::__type 194s 1515: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 194s 1515: const _CharT2&); 194s 1515: 194s 1515: template 194s 1515: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 194s 1515: void>::__type 194s 1515: advance(istreambuf_iterator<_CharT2>&, _Distance); 194s 1515: 194s 1515: friend void __istream_extract(istream&, char*, streamsize); 194s 1515: 194s 1515: template 194s 1515: friend basic_istream<_CharT2, _Traits2>& 194s 1515: operator>>(basic_istream<_CharT2, _Traits2>&, 194s 1515: basic_string<_CharT2, _Traits2, _Alloc>&); 194s 1515: 194s 1515: template 194s 1515: friend basic_istream<_CharT2, _Traits2>& 194s 1515: getline(basic_istream<_CharT2, _Traits2>&, 194s 1515: basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: char_type* _M_in_beg; 194s 1515: char_type* _M_in_cur; 194s 1515: char_type* _M_in_end; 194s 1515: char_type* _M_out_beg; 194s 1515: char_type* _M_out_cur; 194s 1515: char_type* _M_out_end; 194s 1515: 194s 1515: 194s 1515: locale _M_buf_locale; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: virtual 194s 1515: ~basic_streambuf() 194s 1515: { } 194s 1515: # 217 "/usr/include/c++/15/streambuf" 3 4 194s 1515: locale 194s 1515: pubimbue(const locale& __loc) 194s 1515: { 194s 1515: locale __tmp(this->getloc()); 194s 1515: this->imbue(__loc); 194s 1515: _M_buf_locale = __loc; 194s 1515: return __tmp; 194s 1515: } 194s 1515: # 234 "/usr/include/c++/15/streambuf" 3 4 194s 1515: locale 194s 1515: getloc() const 194s 1515: { return _M_buf_locale; } 194s 1515: # 247 "/usr/include/c++/15/streambuf" 3 4 194s 1515: basic_streambuf* 194s 1515: pubsetbuf(char_type* __s, streamsize __n) 194s 1515: { return this->setbuf(__s, __n); } 194s 1515: # 259 "/usr/include/c++/15/streambuf" 3 4 194s 1515: pos_type 194s 1515: pubseekoff(off_type __off, ios_base::seekdir __way, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out) 194s 1515: { return this->seekoff(__off, __way, __mode); } 194s 1515: # 271 "/usr/include/c++/15/streambuf" 3 4 194s 1515: pos_type 194s 1515: pubseekpos(pos_type __sp, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out) 194s 1515: { return this->seekpos(__sp, __mode); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: int 194s 1515: pubsync() { return this->sync(); } 194s 1515: # 292 "/usr/include/c++/15/streambuf" 3 4 194s 1515: streamsize 194s 1515: in_avail() 194s 1515: { 194s 1515: const streamsize __ret = this->egptr() - this->gptr(); 194s 1515: return __ret ? __ret : this->showmanyc(); 194s 1515: } 194s 1515: # 306 "/usr/include/c++/15/streambuf" 3 4 194s 1515: int_type 194s 1515: snextc() 194s 1515: { 194s 1515: int_type __ret = traits_type::eof(); 194s 1515: if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), 194s 1515: __ret), true)) 194s 1515: __ret = this->sgetc(); 194s 1515: return __ret; 194s 1515: } 194s 1515: # 324 "/usr/include/c++/15/streambuf" 3 4 194s 1515: int_type 194s 1515: sbumpc() 194s 1515: { 194s 1515: int_type __ret; 194s 1515: if (__builtin_expect(this->gptr() < this->egptr(), true)) 194s 1515: { 194s 1515: __ret = traits_type::to_int_type(*this->gptr()); 194s 1515: this->gbump(1); 194s 1515: } 194s 1515: else 194s 1515: __ret = this->uflow(); 194s 1515: return __ret; 194s 1515: } 194s 1515: # 346 "/usr/include/c++/15/streambuf" 3 4 194s 1515: int_type 194s 1515: sgetc() 194s 1515: { 194s 1515: int_type __ret; 194s 1515: if (__builtin_expect(this->gptr() < this->egptr(), true)) 194s 1515: __ret = traits_type::to_int_type(*this->gptr()); 194s 1515: else 194s 1515: __ret = this->underflow(); 194s 1515: return __ret; 194s 1515: } 194s 1515: # 365 "/usr/include/c++/15/streambuf" 3 4 194s 1515: streamsize 194s 1515: sgetn(char_type* __s, streamsize __n) 194s 1515: { return this->xsgetn(__s, __n); } 194s 1515: # 380 "/usr/include/c++/15/streambuf" 3 4 194s 1515: int_type 194s 1515: sputbackc(char_type __c) 194s 1515: { 194s 1515: int_type __ret; 194s 1515: const bool __testpos = this->eback() < this->gptr(); 194s 1515: if (__builtin_expect(!__testpos || 194s 1515: !traits_type::eq(__c, this->gptr()[-1]), false)) 194s 1515: __ret = this->pbackfail(traits_type::to_int_type(__c)); 194s 1515: else 194s 1515: { 194s 1515: this->gbump(-1); 194s 1515: __ret = traits_type::to_int_type(*this->gptr()); 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: # 405 "/usr/include/c++/15/streambuf" 3 4 194s 1515: int_type 194s 1515: sungetc() 194s 1515: { 194s 1515: int_type __ret; 194s 1515: if (__builtin_expect(this->eback() < this->gptr(), true)) 194s 1515: { 194s 1515: this->gbump(-1); 194s 1515: __ret = traits_type::to_int_type(*this->gptr()); 194s 1515: } 194s 1515: else 194s 1515: __ret = this->pbackfail(); 194s 1515: return __ret; 194s 1515: } 194s 1515: # 432 "/usr/include/c++/15/streambuf" 3 4 194s 1515: int_type 194s 1515: sputc(char_type __c) 194s 1515: { 194s 1515: int_type __ret; 194s 1515: if (__builtin_expect(this->pptr() < this->epptr(), true)) 194s 1515: { 194s 1515: *this->pptr() = __c; 194s 1515: this->pbump(1); 194s 1515: __ret = traits_type::to_int_type(__c); 194s 1515: } 194s 1515: else 194s 1515: __ret = this->overflow(traits_type::to_int_type(__c)); 194s 1515: return __ret; 194s 1515: } 194s 1515: # 458 "/usr/include/c++/15/streambuf" 3 4 194s 1515: streamsize 194s 1515: sputn(const char_type* __s, streamsize __n) 194s 1515: { return this->xsputn(__s, __n); } 194s 1515: 194s 1515: protected: 194s 1515: # 472 "/usr/include/c++/15/streambuf" 3 4 194s 1515: basic_streambuf() 194s 1515: : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), 194s 1515: _M_out_beg(0), _M_out_cur(0), _M_out_end(0), 194s 1515: _M_buf_locale(locale()) 194s 1515: { } 194s 1515: # 490 "/usr/include/c++/15/streambuf" 3 4 194s 1515: char_type* 194s 1515: eback() const { return _M_in_beg; } 194s 1515: 194s 1515: char_type* 194s 1515: gptr() const { return _M_in_cur; } 194s 1515: 194s 1515: char_type* 194s 1515: egptr() const { return _M_in_end; } 194s 1515: # 506 "/usr/include/c++/15/streambuf" 3 4 194s 1515: void 194s 1515: gbump(int __n) { _M_in_cur += __n; } 194s 1515: # 517 "/usr/include/c++/15/streambuf" 3 4 194s 1515: void 194s 1515: setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) 194s 1515: { 194s 1515: _M_in_beg = __gbeg; 194s 1515: _M_in_cur = __gnext; 194s 1515: _M_in_end = __gend; 194s 1515: } 194s 1515: # 537 "/usr/include/c++/15/streambuf" 3 4 194s 1515: char_type* 194s 1515: pbase() const { return _M_out_beg; } 194s 1515: 194s 1515: char_type* 194s 1515: pptr() const { return _M_out_cur; } 194s 1515: 194s 1515: char_type* 194s 1515: epptr() const { return _M_out_end; } 194s 1515: # 553 "/usr/include/c++/15/streambuf" 3 4 194s 1515: void 194s 1515: pbump(int __n) { _M_out_cur += __n; } 194s 1515: # 563 "/usr/include/c++/15/streambuf" 3 4 194s 1515: void 194s 1515: setp(char_type* __pbeg, char_type* __pend) 194s 1515: { 194s 1515: _M_out_beg = _M_out_cur = __pbeg; 194s 1515: _M_out_end = __pend; 194s 1515: } 194s 1515: # 584 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual void 194s 1515: imbue(const locale& __loc __attribute__ ((__unused__))) 194s 1515: { } 194s 1515: # 599 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual basic_streambuf* 194s 1515: setbuf(char_type*, streamsize) 194s 1515: { return this; } 194s 1515: # 610 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual pos_type 194s 1515: seekoff(off_type, ios_base::seekdir, 194s 1515: ios_base::openmode = ios_base::in | ios_base::out) 194s 1515: { return pos_type(off_type(-1)); } 194s 1515: # 622 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual pos_type 194s 1515: seekpos(pos_type, 194s 1515: ios_base::openmode = ios_base::in | ios_base::out) 194s 1515: { return pos_type(off_type(-1)); } 194s 1515: # 635 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual int 194s 1515: sync() { return 0; } 194s 1515: # 657 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual streamsize 194s 1515: showmanyc() { return 0; } 194s 1515: # 673 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual streamsize 194s 1515: xsgetn(char_type* __s, streamsize __n); 194s 1515: # 695 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual int_type 194s 1515: underflow() 194s 1515: { return traits_type::eof(); } 194s 1515: # 708 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual int_type 194s 1515: uflow() 194s 1515: { 194s 1515: int_type __ret = traits_type::eof(); 194s 1515: const bool __testeof = traits_type::eq_int_type(this->underflow(), 194s 1515: __ret); 194s 1515: if (!__testeof) 194s 1515: { 194s 1515: __ret = traits_type::to_int_type(*this->gptr()); 194s 1515: this->gbump(1); 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: # 732 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual int_type 194s 1515: pbackfail(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) 194s 1515: { return traits_type::eof(); } 194s 1515: # 750 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual streamsize 194s 1515: xsputn(const char_type* __s, streamsize __n); 194s 1515: # 776 "/usr/include/c++/15/streambuf" 3 4 194s 1515: virtual int_type 194s 1515: overflow(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) 194s 1515: { return traits_type::eof(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: # 791 "/usr/include/c++/15/streambuf" 3 4 194s 1515: __attribute__ ((__deprecated__ ("use '" "std::basic_streambuf::sbumpc" "' instead"))) 194s 1515: void 194s 1515: stossc() 194s 1515: { 194s 1515: if (this->gptr() < this->egptr()) 194s 1515: this->gbump(1); 194s 1515: else 194s 1515: this->uflow(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: __safe_gbump(streamsize __n) { _M_in_cur += __n; } 194s 1515: 194s 1515: void 194s 1515: __safe_pbump(streamsize __n) { _M_out_cur += __n; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: basic_streambuf(const basic_streambuf&); 194s 1515: 194s 1515: basic_streambuf& 194s 1515: operator=(const basic_streambuf&); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: swap(basic_streambuf& __sb) 194s 1515: { 194s 1515: std::swap(_M_in_beg, __sb._M_in_beg); 194s 1515: std::swap(_M_in_cur, __sb._M_in_cur); 194s 1515: std::swap(_M_in_end, __sb._M_in_end); 194s 1515: std::swap(_M_out_beg, __sb._M_out_beg); 194s 1515: std::swap(_M_out_cur, __sb._M_out_cur); 194s 1515: std::swap(_M_out_end, __sb._M_out_end); 194s 1515: std::swap(_M_buf_locale, __sb._M_buf_locale); 194s 1515: } 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: std::basic_streambuf<_CharT, _Traits>:: 194s 1515: basic_streambuf(const basic_streambuf&) = default; 194s 1515: 194s 1515: template 194s 1515: std::basic_streambuf<_CharT, _Traits>& 194s 1515: std::basic_streambuf<_CharT, _Traits>:: 194s 1515: operator=(const basic_streambuf&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: streamsize 194s 1515: __copy_streambufs_eof(basic_streambuf* __sbin, 194s 1515: basic_streambuf* __sbout, bool& __ineof); 194s 1515: 194s 1515: template<> 194s 1515: streamsize 194s 1515: __copy_streambufs_eof(basic_streambuf* __sbin, 194s 1515: basic_streambuf* __sbout, bool& __ineof); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/streambuf.tcc" 1 3 4 194s 1515: # 41 "/usr/include/c++/15/bits/streambuf.tcc" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: streamsize 194s 1515: basic_streambuf<_CharT, _Traits>:: 194s 1515: xsgetn(char_type* __s, streamsize __n) 194s 1515: { 194s 1515: streamsize __ret = 0; 194s 1515: while (__ret < __n) 194s 1515: { 194s 1515: const streamsize __buf_len = this->egptr() - this->gptr(); 194s 1515: if (__buf_len) 194s 1515: { 194s 1515: const streamsize __remaining = __n - __ret; 194s 1515: const streamsize __len = std::min(__buf_len, __remaining); 194s 1515: traits_type::copy(__s, this->gptr(), __len); 194s 1515: __ret += __len; 194s 1515: __s += __len; 194s 1515: this->__safe_gbump(__len); 194s 1515: } 194s 1515: 194s 1515: if (__ret < __n) 194s 1515: { 194s 1515: const int_type __c = this->uflow(); 194s 1515: if (!traits_type::eq_int_type(__c, traits_type::eof())) 194s 1515: { 194s 1515: traits_type::assign(*__s++, traits_type::to_char_type(__c)); 194s 1515: ++__ret; 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: streamsize 194s 1515: basic_streambuf<_CharT, _Traits>:: 194s 1515: xsputn(const char_type* __s, streamsize __n) 194s 1515: { 194s 1515: streamsize __ret = 0; 194s 1515: while (__ret < __n) 194s 1515: { 194s 1515: const streamsize __buf_len = this->epptr() - this->pptr(); 194s 1515: if (__buf_len) 194s 1515: { 194s 1515: const streamsize __remaining = __n - __ret; 194s 1515: const streamsize __len = std::min(__buf_len, __remaining); 194s 1515: traits_type::copy(this->pptr(), __s, __len); 194s 1515: __ret += __len; 194s 1515: __s += __len; 194s 1515: this->__safe_pbump(__len); 194s 1515: } 194s 1515: 194s 1515: if (__ret < __n) 194s 1515: { 194s 1515: int_type __c = this->overflow(traits_type::to_int_type(*__s)); 194s 1515: if (!traits_type::eq_int_type(__c, traits_type::eof())) 194s 1515: { 194s 1515: ++__ret; 194s 1515: ++__s; 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: streamsize 194s 1515: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, 194s 1515: basic_streambuf<_CharT, _Traits>* __sbout, 194s 1515: bool& __ineof) 194s 1515: { 194s 1515: streamsize __ret = 0; 194s 1515: __ineof = true; 194s 1515: typename _Traits::int_type __c = __sbin->sgetc(); 194s 1515: while (!_Traits::eq_int_type(__c, _Traits::eof())) 194s 1515: { 194s 1515: __c = __sbout->sputc(_Traits::to_char_type(__c)); 194s 1515: if (_Traits::eq_int_type(__c, _Traits::eof())) 194s 1515: { 194s 1515: __ineof = false; 194s 1515: break; 194s 1515: } 194s 1515: ++__ret; 194s 1515: __c = __sbin->snextc(); 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline streamsize 194s 1515: __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, 194s 1515: basic_streambuf<_CharT, _Traits>* __sbout) 194s 1515: { 194s 1515: bool __ineof; 194s 1515: return __copy_streambufs_eof(__sbin, __sbout, __ineof); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern template class basic_streambuf; 194s 1515: 194s 1515: extern template 194s 1515: streamsize 194s 1515: __copy_streambufs(basic_streambuf*, 194s 1515: basic_streambuf*); 194s 1515: 194s 1515: 194s 1515: extern template class basic_streambuf; 194s 1515: 194s 1515: extern template 194s 1515: streamsize 194s 1515: __copy_streambufs(basic_streambuf*, 194s 1515: basic_streambuf*); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 863 "/usr/include/c++/15/streambuf" 2 3 4 194s 1515: # 48 "/usr/include/c++/15/ios" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/basic_ios.h" 1 3 4 194s 1515: # 39 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/locale_facets.h" 1 3 4 194s 1515: # 41 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/cwctype" 1 3 4 194s 1515: # 55 "/usr/include/c++/15/cwctype" 3 4 194s 1515: # 1 "/usr/include/wctype.h" 1 3 4 194s 1515: # 38 "/usr/include/wctype.h" 3 4 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 1 3 4 194s 1515: # 38 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 194s 1515: typedef unsigned long int wctype_t; 194s 1515: # 56 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 194s 1515: enum 194s 1515: { 194s 1515: __ISwupper = 0, 194s 1515: __ISwlower = 1, 194s 1515: __ISwalpha = 2, 194s 1515: __ISwdigit = 3, 194s 1515: __ISwxdigit = 4, 194s 1515: __ISwspace = 5, 194s 1515: __ISwprint = 6, 194s 1515: __ISwgraph = 7, 194s 1515: __ISwblank = 8, 194s 1515: __ISwcntrl = 9, 194s 1515: __ISwpunct = 10, 194s 1515: __ISwalnum = 11, 194s 1515: 194s 1515: _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), 194s 1515: _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), 194s 1515: _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), 194s 1515: _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), 194s 1515: _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), 194s 1515: _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), 194s 1515: _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), 194s 1515: _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), 194s 1515: _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), 194s 1515: _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), 194s 1515: _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), 194s 1515: _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern "C" { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswalnum (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswalpha (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: extern int iswcntrl (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswdigit (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswgraph (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswlower (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: extern int iswprint (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswpunct (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswspace (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswupper (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswxdigit (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswblank (wint_t __wc) noexcept (true); 194s 1515: # 155 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 194s 1515: extern wctype_t wctype (const char *__property) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswctype (wint_t __wc, wctype_t __desc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern wint_t towlower (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: extern wint_t towupper (wint_t __wc) noexcept (true); 194s 1515: 194s 1515: } 194s 1515: # 39 "/usr/include/wctype.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern "C" { 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef const __int32_t *wctrans_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern wctrans_t wctrans (const char *__property) noexcept (true); 194s 1515: 194s 1515: 194s 1515: extern wint_t towctrans (wint_t __wc, wctrans_t __desc) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswalnum_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswalpha_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: extern int iswcntrl_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswdigit_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswgraph_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswlower_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: extern int iswprint_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswpunct_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswspace_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswupper_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswxdigit_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswblank_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern wctype_t wctype_l (const char *__property, locale_t __locale) 194s 1515: noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern int iswctype_l (wint_t __wc, wctype_t __desc, locale_t __locale) 194s 1515: noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern wint_t towlower_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: extern wint_t towupper_l (wint_t __wc, locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern wctrans_t wctrans_l (const char *__property, locale_t __locale) 194s 1515: noexcept (true); 194s 1515: 194s 1515: 194s 1515: extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, 194s 1515: locale_t __locale) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 56 "/usr/include/c++/15/cwctype" 2 3 4 194s 1515: # 82 "/usr/include/c++/15/cwctype" 3 4 194s 1515: namespace std 194s 1515: { 194s 1515: using ::wctrans_t; 194s 1515: using ::wctype_t; 194s 1515: using ::wint_t; 194s 1515: 194s 1515: using ::iswalnum; 194s 1515: using ::iswalpha; 194s 1515: 194s 1515: using ::iswblank; 194s 1515: 194s 1515: using ::iswcntrl; 194s 1515: using ::iswctype; 194s 1515: using ::iswdigit; 194s 1515: using ::iswgraph; 194s 1515: using ::iswlower; 194s 1515: using ::iswprint; 194s 1515: using ::iswpunct; 194s 1515: using ::iswspace; 194s 1515: using ::iswupper; 194s 1515: using ::iswxdigit; 194s 1515: using ::towctrans; 194s 1515: using ::towlower; 194s 1515: using ::towupper; 194s 1515: using ::wctrans; 194s 1515: using ::wctype; 194s 1515: } 194s 1515: # 42 "/usr/include/c++/15/bits/locale_facets.h" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/ctype_base.h" 1 3 4 194s 1515: # 36 "/usr/include/arm-linux-gnueabihf/c++/15/bits/ctype_base.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct ctype_base 194s 1515: { 194s 1515: 194s 1515: typedef const int* __to_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef unsigned short mask; 194s 1515: static const mask upper = _ISupper; 194s 1515: static const mask lower = _ISlower; 194s 1515: static const mask alpha = _ISalpha; 194s 1515: static const mask digit = _ISdigit; 194s 1515: static const mask xdigit = _ISxdigit; 194s 1515: static const mask space = _ISspace; 194s 1515: static const mask print = _ISprint; 194s 1515: static const mask graph = _ISalpha | _ISdigit | _ISpunct; 194s 1515: static const mask cntrl = _IScntrl; 194s 1515: static const mask punct = _ISpunct; 194s 1515: static const mask alnum = _ISalpha | _ISdigit; 194s 1515: 194s 1515: static const mask blank = _ISblank; 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 44 "/usr/include/c++/15/bits/locale_facets.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/streambuf_iterator.h" 1 3 4 194s 1515: # 41 "/usr/include/c++/15/bits/streambuf_iterator.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 51 "/usr/include/c++/15/bits/streambuf_iterator.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class istreambuf_iterator 194s 1515: : public iterator 194s 1515: { 194s 1515: public: 194s 1515: # 72 "/usr/include/c++/15/bits/streambuf_iterator.h" 3 4 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: typedef typename _Traits::int_type int_type; 194s 1515: typedef basic_streambuf<_CharT, _Traits> streambuf_type; 194s 1515: typedef basic_istream<_CharT, _Traits> istream_type; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 194s 1515: ostreambuf_iterator<_CharT2> >::__type 194s 1515: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 194s 1515: ostreambuf_iterator<_CharT2>); 194s 1515: 194s 1515: template 194s 1515: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 194s 1515: _CharT2*>::__type 194s 1515: __copy_move_a2(istreambuf_iterator<_CharT2>, 194s 1515: istreambuf_iterator<_CharT2>, _CharT2*); 194s 1515: 194s 1515: template 194s 1515: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 194s 1515: _CharT2*>::__type 194s 1515: __copy_n_a(istreambuf_iterator<_CharT2>, _Size, _CharT2*, bool); 194s 1515: 194s 1515: template 194s 1515: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 194s 1515: istreambuf_iterator<_CharT2> >::__type 194s 1515: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 194s 1515: const _CharT2&); 194s 1515: 194s 1515: template 194s 1515: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 194s 1515: void>::__type 194s 1515: advance(istreambuf_iterator<_CharT2>&, _Distance); 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: mutable streambuf_type* _M_sbuf; 194s 1515: int_type _M_c; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: constexpr istreambuf_iterator() noexcept 194s 1515: : _M_sbuf(0), _M_c(traits_type::eof()) { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: istreambuf_iterator(const istreambuf_iterator&) noexcept = default; 194s 1515: 194s 1515: ~istreambuf_iterator() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: istreambuf_iterator(istream_type& __s) noexcept 194s 1515: : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } 194s 1515: 194s 1515: 194s 1515: istreambuf_iterator(streambuf_type* __s) noexcept 194s 1515: : _M_sbuf(__s), _M_c(traits_type::eof()) { } 194s 1515: 194s 1515: 194s 1515: istreambuf_iterator& 194s 1515: operator=(const istreambuf_iterator&) noexcept = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: char_type 194s 1515: operator*() const 194s 1515: { 194s 1515: int_type __c = _M_get(); 194s 1515: # 163 "/usr/include/c++/15/bits/streambuf_iterator.h" 3 4 194s 1515: return traits_type::to_char_type(__c); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: istreambuf_iterator& 194s 1515: operator++() 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: _M_sbuf->sbumpc(); 194s 1515: _M_c = traits_type::eof(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: istreambuf_iterator 194s 1515: operator++(int) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: istreambuf_iterator __old = *this; 194s 1515: __old._M_c = _M_sbuf->sbumpc(); 194s 1515: _M_c = traits_type::eof(); 194s 1515: return __old; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: equal(const istreambuf_iterator& __b) const 194s 1515: { return _M_at_eof() == __b._M_at_eof(); } 194s 1515: 194s 1515: private: 194s 1515: int_type 194s 1515: _M_get() const 194s 1515: { 194s 1515: int_type __ret = _M_c; 194s 1515: if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc())) 194s 1515: _M_sbuf = 0; 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: _M_at_eof() const 194s 1515: { return _S_is_eof(_M_get()); } 194s 1515: 194s 1515: static bool 194s 1515: _S_is_eof(int_type __c) 194s 1515: { 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: return traits_type::eq_int_type(__c, __eof); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const istreambuf_iterator<_CharT, _Traits>& __a, 194s 1515: const istreambuf_iterator<_CharT, _Traits>& __b) 194s 1515: { return __a.equal(__b); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, 194s 1515: const istreambuf_iterator<_CharT, _Traits>& __b) 194s 1515: { return !__a.equal(__b); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class ostreambuf_iterator 194s 1515: : public iterator 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: typedef basic_streambuf<_CharT, _Traits> streambuf_type; 194s 1515: typedef basic_ostream<_CharT, _Traits> ostream_type; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 194s 1515: ostreambuf_iterator<_CharT2> >::__type 194s 1515: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 194s 1515: ostreambuf_iterator<_CharT2>); 194s 1515: 194s 1515: private: 194s 1515: streambuf_type* _M_sbuf; 194s 1515: bool _M_failed; 194s 1515: 194s 1515: public: 194s 1515: # 286 "/usr/include/c++/15/bits/streambuf_iterator.h" 3 4 194s 1515: ostreambuf_iterator(ostream_type& __s) noexcept 194s 1515: : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } 194s 1515: 194s 1515: 194s 1515: ostreambuf_iterator(streambuf_type* __s) noexcept 194s 1515: : _M_sbuf(__s), _M_failed(!_M_sbuf) { } 194s 1515: 194s 1515: 194s 1515: ostreambuf_iterator& 194s 1515: operator=(_CharT __c) 194s 1515: { 194s 1515: if (!_M_failed && 194s 1515: _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) 194s 1515: _M_failed = true; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: ostreambuf_iterator& 194s 1515: operator*() 194s 1515: { return *this; } 194s 1515: 194s 1515: 194s 1515: ostreambuf_iterator& 194s 1515: operator++(int) 194s 1515: { return *this; } 194s 1515: 194s 1515: 194s 1515: ostreambuf_iterator& 194s 1515: operator++() 194s 1515: { return *this; } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: failed() const noexcept 194s 1515: { return _M_failed; } 194s 1515: 194s 1515: ostreambuf_iterator& 194s 1515: _M_put(const _CharT* __ws, streamsize __len) 194s 1515: { 194s 1515: if (__builtin_expect(!_M_failed, true) 194s 1515: && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, 194s 1515: false)) 194s 1515: _M_failed = true; 194s 1515: return *this; 194s 1515: } 194s 1515: }; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 194s 1515: ostreambuf_iterator<_CharT> >::__type 194s 1515: copy(istreambuf_iterator<_CharT> __first, 194s 1515: istreambuf_iterator<_CharT> __last, 194s 1515: ostreambuf_iterator<_CharT> __result) 194s 1515: { 194s 1515: if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) 194s 1515: { 194s 1515: bool __ineof; 194s 1515: __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); 194s 1515: if (!__ineof) 194s 1515: __result._M_failed = true; 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 194s 1515: ostreambuf_iterator<_CharT> >::__type 194s 1515: __copy_move_a2(_CharT* __first, _CharT* __last, 194s 1515: ostreambuf_iterator<_CharT> __result) 194s 1515: { 194s 1515: const streamsize __num = __last - __first; 194s 1515: if (__num > 0) 194s 1515: __result._M_put(__first, __num); 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 194s 1515: ostreambuf_iterator<_CharT> >::__type 194s 1515: __copy_move_a2(const _CharT* __first, const _CharT* __last, 194s 1515: ostreambuf_iterator<_CharT> __result) 194s 1515: { 194s 1515: const streamsize __num = __last - __first; 194s 1515: if (__num > 0) 194s 1515: __result._M_put(__first, __num); 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 194s 1515: _CharT*>::__type 194s 1515: __copy_move_a2(istreambuf_iterator<_CharT> __first, 194s 1515: istreambuf_iterator<_CharT> __last, _CharT* __result) 194s 1515: { 194s 1515: typedef istreambuf_iterator<_CharT> __is_iterator_type; 194s 1515: typedef typename __is_iterator_type::traits_type traits_type; 194s 1515: typedef typename __is_iterator_type::streambuf_type streambuf_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: 194s 1515: if (__first._M_sbuf && !__last._M_sbuf) 194s 1515: { 194s 1515: streambuf_type* __sb = __first._M_sbuf; 194s 1515: int_type __c = __sb->sgetc(); 194s 1515: while (!traits_type::eq_int_type(__c, traits_type::eof())) 194s 1515: { 194s 1515: const streamsize __n = __sb->egptr() - __sb->gptr(); 194s 1515: if (__n > 1) 194s 1515: { 194s 1515: traits_type::copy(__result, __sb->gptr(), __n); 194s 1515: __sb->__safe_gbump(__n); 194s 1515: __result += __n; 194s 1515: __c = __sb->underflow(); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: *__result++ = traits_type::to_char_type(__c); 194s 1515: __c = __sb->snextc(); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 194s 1515: _CharT*>::__type 194s 1515: __copy_n_a(istreambuf_iterator<_CharT> __it, _Size __n, _CharT* __result, 194s 1515: bool __strict __attribute__((__unused__))) 194s 1515: { 194s 1515: if (__n == 0) 194s 1515: return __result; 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: _CharT* __beg = __result; 194s 1515: __result += __it._M_sbuf->sgetn(__beg, __n); 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 194s 1515: istreambuf_iterator<_CharT> >::__type 194s 1515: find(istreambuf_iterator<_CharT> __first, 194s 1515: istreambuf_iterator<_CharT> __last, const _CharT& __val) 194s 1515: { 194s 1515: typedef istreambuf_iterator<_CharT> __is_iterator_type; 194s 1515: typedef typename __is_iterator_type::traits_type traits_type; 194s 1515: typedef typename __is_iterator_type::streambuf_type streambuf_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: 194s 1515: if (__first._M_sbuf && !__last._M_sbuf) 194s 1515: { 194s 1515: const int_type __ival = traits_type::to_int_type(__val); 194s 1515: streambuf_type* __sb = __first._M_sbuf; 194s 1515: int_type __c = __sb->sgetc(); 194s 1515: while (!traits_type::eq_int_type(__c, __eof) 194s 1515: && !traits_type::eq_int_type(__c, __ival)) 194s 1515: { 194s 1515: streamsize __n = __sb->egptr() - __sb->gptr(); 194s 1515: if (__n > 1) 194s 1515: { 194s 1515: const _CharT* __p = traits_type::find(__sb->gptr(), 194s 1515: __n, __val); 194s 1515: if (__p) 194s 1515: __n = __p - __sb->gptr(); 194s 1515: __sb->__safe_gbump(__n); 194s 1515: __c = __sb->sgetc(); 194s 1515: } 194s 1515: else 194s 1515: __c = __sb->snextc(); 194s 1515: } 194s 1515: 194s 1515: __first._M_c = __eof; 194s 1515: } 194s 1515: 194s 1515: return __first; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 194s 1515: void>::__type 194s 1515: advance(istreambuf_iterator<_CharT>& __i, _Distance __n) 194s 1515: { 194s 1515: if (__n == 0) 194s 1515: return; 194s 1515: 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__n > 0)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: typedef istreambuf_iterator<_CharT> __is_iterator_type; 194s 1515: typedef typename __is_iterator_type::traits_type traits_type; 194s 1515: typedef typename __is_iterator_type::streambuf_type streambuf_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: 194s 1515: streambuf_type* __sb = __i._M_sbuf; 194s 1515: while (__n > 0) 194s 1515: { 194s 1515: streamsize __size = __sb->egptr() - __sb->gptr(); 194s 1515: if (__size > __n) 194s 1515: { 194s 1515: __sb->__safe_gbump(__n); 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: __sb->__safe_gbump(__size); 194s 1515: __n -= __size; 194s 1515: if (traits_type::eq_int_type(__sb->underflow(), __eof)) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: __i._M_c = __eof; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 51 "/usr/include/c++/15/bits/locale_facets.h" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 76 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: __convert_to_v(const char*, _Tp&, ios_base::iostate&, 194s 1515: const __c_locale&) throw(); 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: __convert_to_v(const char*, float&, ios_base::iostate&, 194s 1515: const __c_locale&) throw(); 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: __convert_to_v(const char*, double&, ios_base::iostate&, 194s 1515: const __c_locale&) throw(); 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: __convert_to_v(const char*, long double&, ios_base::iostate&, 194s 1515: const __c_locale&) throw(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __pad 194s 1515: { 194s 1515: static void 194s 1515: _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, 194s 1515: const _CharT* __olds, streamsize __newlen, streamsize __oldlen); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _CharT* 194s 1515: __add_grouping(_CharT* __s, _CharT __sep, 194s 1515: const char* __gbeg, size_t __gsize, 194s 1515: const _CharT* __first, const _CharT* __last); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline 194s 1515: ostreambuf_iterator<_CharT> 194s 1515: __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) 194s 1515: { 194s 1515: __s._M_put(__ws, __len); 194s 1515: return __s; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline 194s 1515: _OutIter 194s 1515: __write(_OutIter __s, const _CharT* __ws, int __len) 194s 1515: { 194s 1515: for (int __j = 0; __j < __len; __j++, ++__s) 194s 1515: *__s = __ws[__j]; 194s 1515: return __s; 194s 1515: } 194s 1515: # 154 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: template 194s 1515: class __ctype_abstract_base : public locale::facet, public ctype_base 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: # 173 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: bool 194s 1515: is(mask __m, char_type __c) const 194s 1515: { return this->do_is(__m, __c); } 194s 1515: # 190 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char_type* 194s 1515: is(const char_type *__lo, const char_type *__hi, mask *__vec) const 194s 1515: { return this->do_is(__lo, __hi, __vec); } 194s 1515: # 206 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char_type* 194s 1515: scan_is(mask __m, const char_type* __lo, const char_type* __hi) const 194s 1515: { return this->do_scan_is(__m, __lo, __hi); } 194s 1515: # 222 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char_type* 194s 1515: scan_not(mask __m, const char_type* __lo, const char_type* __hi) const 194s 1515: { return this->do_scan_not(__m, __lo, __hi); } 194s 1515: # 236 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: char_type 194s 1515: toupper(char_type __c) const 194s 1515: { return this->do_toupper(__c); } 194s 1515: # 251 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char_type* 194s 1515: toupper(char_type *__lo, const char_type* __hi) const 194s 1515: { return this->do_toupper(__lo, __hi); } 194s 1515: # 265 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: char_type 194s 1515: tolower(char_type __c) const 194s 1515: { return this->do_tolower(__c); } 194s 1515: # 280 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char_type* 194s 1515: tolower(char_type* __lo, const char_type* __hi) const 194s 1515: { return this->do_tolower(__lo, __hi); } 194s 1515: # 297 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: char_type 194s 1515: widen(char __c) const 194s 1515: { return this->do_widen(__c); } 194s 1515: # 316 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char* 194s 1515: widen(const char* __lo, const char* __hi, char_type* __to) const 194s 1515: { return this->do_widen(__lo, __hi, __to); } 194s 1515: # 335 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: char 194s 1515: narrow(char_type __c, char __dfault) const 194s 1515: { return this->do_narrow(__c, __dfault); } 194s 1515: # 357 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char_type* 194s 1515: narrow(const char_type* __lo, const char_type* __hi, 194s 1515: char __dfault, char* __to) const 194s 1515: { return this->do_narrow(__lo, __hi, __dfault, __to); } 194s 1515: 194s 1515: protected: 194s 1515: explicit 194s 1515: __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } 194s 1515: 194s 1515: virtual 194s 1515: ~__ctype_abstract_base() { } 194s 1515: # 382 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual bool 194s 1515: do_is(mask __m, char_type __c) const = 0; 194s 1515: # 401 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_is(const char_type* __lo, const char_type* __hi, 194s 1515: mask* __vec) const = 0; 194s 1515: # 420 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_scan_is(mask __m, const char_type* __lo, 194s 1515: const char_type* __hi) const = 0; 194s 1515: # 439 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_scan_not(mask __m, const char_type* __lo, 194s 1515: const char_type* __hi) const = 0; 194s 1515: # 457 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_toupper(char_type __c) const = 0; 194s 1515: # 474 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_toupper(char_type* __lo, const char_type* __hi) const = 0; 194s 1515: # 490 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_tolower(char_type __c) const = 0; 194s 1515: # 507 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_tolower(char_type* __lo, const char_type* __hi) const = 0; 194s 1515: # 526 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_widen(char __c) const = 0; 194s 1515: # 547 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char* 194s 1515: do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; 194s 1515: # 568 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char 194s 1515: do_narrow(char_type __c, char __dfault) const = 0; 194s 1515: # 593 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_narrow(const char_type* __lo, const char_type* __hi, 194s 1515: char __dfault, char* __to) const = 0; 194s 1515: }; 194s 1515: # 616 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: template 194s 1515: class ctype : public __ctype_abstract_base<_CharT> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef typename __ctype_abstract_base<_CharT>::mask mask; 194s 1515: 194s 1515: 194s 1515: static locale::id id; 194s 1515: 194s 1515: explicit 194s 1515: ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~ctype(); 194s 1515: 194s 1515: virtual bool 194s 1515: do_is(mask __m, char_type __c) const; 194s 1515: 194s 1515: virtual const char_type* 194s 1515: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; 194s 1515: 194s 1515: virtual const char_type* 194s 1515: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; 194s 1515: 194s 1515: virtual const char_type* 194s 1515: do_scan_not(mask __m, const char_type* __lo, 194s 1515: const char_type* __hi) const; 194s 1515: 194s 1515: virtual char_type 194s 1515: do_toupper(char_type __c) const; 194s 1515: 194s 1515: virtual const char_type* 194s 1515: do_toupper(char_type* __lo, const char_type* __hi) const; 194s 1515: 194s 1515: virtual char_type 194s 1515: do_tolower(char_type __c) const; 194s 1515: 194s 1515: virtual const char_type* 194s 1515: do_tolower(char_type* __lo, const char_type* __hi) const; 194s 1515: 194s 1515: virtual char_type 194s 1515: do_widen(char __c) const; 194s 1515: 194s 1515: virtual const char* 194s 1515: do_widen(const char* __lo, const char* __hi, char_type* __dest) const; 194s 1515: 194s 1515: virtual char 194s 1515: do_narrow(char_type, char __dfault) const; 194s 1515: 194s 1515: virtual const char_type* 194s 1515: do_narrow(const char_type* __lo, const char_type* __hi, 194s 1515: char __dfault, char* __to) const; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id ctype<_CharT>::id; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class ctype >; 194s 1515: # 690 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: template<> 194s 1515: class ctype : public locale::facet, public ctype_base 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: typedef char char_type; 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: __c_locale _M_c_locale_ctype; 194s 1515: bool _M_del; 194s 1515: __to_type _M_toupper; 194s 1515: __to_type _M_tolower; 194s 1515: const mask* _M_table; 194s 1515: mutable char _M_widen_ok; 194s 1515: mutable char _M_widen[1 + static_cast(-1)]; 194s 1515: mutable char _M_narrow[1 + static_cast(-1)]; 194s 1515: mutable char _M_narrow_ok; 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: static locale::id id; 194s 1515: 194s 1515: static const size_t table_size = 1 + static_cast(-1); 194s 1515: # 727 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: explicit 194s 1515: ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); 194s 1515: # 740 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: explicit 194s 1515: ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, 194s 1515: size_t __refs = 0); 194s 1515: # 753 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: inline bool 194s 1515: is(mask __m, char __c) const; 194s 1515: # 768 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: inline const char* 194s 1515: is(const char* __lo, const char* __hi, mask* __vec) const; 194s 1515: # 782 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: inline const char* 194s 1515: scan_is(mask __m, const char* __lo, const char* __hi) const; 194s 1515: # 796 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: inline const char* 194s 1515: scan_not(mask __m, const char* __lo, const char* __hi) const; 194s 1515: # 811 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: char_type 194s 1515: toupper(char_type __c) const 194s 1515: { return this->do_toupper(__c); } 194s 1515: # 828 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char_type* 194s 1515: toupper(char_type *__lo, const char_type* __hi) const 194s 1515: { return this->do_toupper(__lo, __hi); } 194s 1515: # 844 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: char_type 194s 1515: tolower(char_type __c) const 194s 1515: { return this->do_tolower(__c); } 194s 1515: # 861 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char_type* 194s 1515: tolower(char_type* __lo, const char_type* __hi) const 194s 1515: { return this->do_tolower(__lo, __hi); } 194s 1515: # 881 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: char_type 194s 1515: widen(char __c) const 194s 1515: { 194s 1515: if (_M_widen_ok) 194s 1515: return _M_widen[static_cast(__c)]; 194s 1515: this->_M_widen_init(); 194s 1515: return this->do_widen(__c); 194s 1515: } 194s 1515: # 908 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char* 194s 1515: widen(const char* __lo, const char* __hi, char_type* __to) const 194s 1515: { 194s 1515: if (_M_widen_ok == 1) 194s 1515: { 194s 1515: if (__builtin_expect(__hi != __lo, true)) 194s 1515: __builtin_memcpy(__to, __lo, __hi - __lo); 194s 1515: return __hi; 194s 1515: } 194s 1515: if (!_M_widen_ok) 194s 1515: _M_widen_init(); 194s 1515: return this->do_widen(__lo, __hi, __to); 194s 1515: } 194s 1515: # 940 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: char 194s 1515: narrow(char_type __c, char __dfault) const 194s 1515: { 194s 1515: if (_M_narrow[static_cast(__c)]) 194s 1515: return _M_narrow[static_cast(__c)]; 194s 1515: const char __t = do_narrow(__c, __dfault); 194s 1515: if (__t != __dfault) 194s 1515: _M_narrow[static_cast(__c)] = __t; 194s 1515: return __t; 194s 1515: } 194s 1515: # 973 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: const char_type* 194s 1515: narrow(const char_type* __lo, const char_type* __hi, 194s 1515: char __dfault, char* __to) const 194s 1515: { 194s 1515: if (__builtin_expect(_M_narrow_ok == 1, true)) 194s 1515: { 194s 1515: if (__builtin_expect(__hi != __lo, true)) 194s 1515: __builtin_memcpy(__to, __lo, __hi - __lo); 194s 1515: return __hi; 194s 1515: } 194s 1515: if (!_M_narrow_ok) 194s 1515: _M_narrow_init(); 194s 1515: return this->do_narrow(__lo, __hi, __dfault, __to); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const mask* 194s 1515: table() const throw() 194s 1515: { return _M_table; } 194s 1515: 194s 1515: 194s 1515: static const mask* 194s 1515: classic_table() throw(); 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual 194s 1515: ~ctype(); 194s 1515: # 1023 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_toupper(char_type __c) const; 194s 1515: # 1040 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_toupper(char_type* __lo, const char_type* __hi) const; 194s 1515: # 1056 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_tolower(char_type __c) const; 194s 1515: # 1073 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_tolower(char_type* __lo, const char_type* __hi) const; 194s 1515: # 1093 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_widen(char __c) const 194s 1515: { return __c; } 194s 1515: # 1116 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char* 194s 1515: do_widen(const char* __lo, const char* __hi, char_type* __to) const 194s 1515: { 194s 1515: if (__builtin_expect(__hi != __lo, true)) 194s 1515: __builtin_memcpy(__to, __lo, __hi - __lo); 194s 1515: return __hi; 194s 1515: } 194s 1515: # 1143 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char 194s 1515: do_narrow(char_type __c, char __dfault __attribute__((__unused__))) const 194s 1515: { return __c; } 194s 1515: # 1169 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_narrow(const char_type* __lo, const char_type* __hi, 194s 1515: char __dfault __attribute__((__unused__)), char* __to) const 194s 1515: { 194s 1515: if (__builtin_expect(__hi != __lo, true)) 194s 1515: __builtin_memcpy(__to, __lo, __hi - __lo); 194s 1515: return __hi; 194s 1515: } 194s 1515: 194s 1515: private: 194s 1515: void _M_narrow_init() const; 194s 1515: void _M_widen_init() const; 194s 1515: }; 194s 1515: # 1195 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: template<> 194s 1515: class ctype : public __ctype_abstract_base 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: typedef wchar_t char_type; 194s 1515: typedef wctype_t __wmask_type; 194s 1515: 194s 1515: protected: 194s 1515: __c_locale _M_c_locale_ctype; 194s 1515: 194s 1515: 194s 1515: bool _M_narrow_ok; 194s 1515: char _M_narrow[128]; 194s 1515: wint_t _M_widen[1 + static_cast(-1)]; 194s 1515: 194s 1515: 194s 1515: mask _M_bit[16]; 194s 1515: __wmask_type _M_wmask[16]; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: static locale::id id; 194s 1515: # 1228 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: explicit 194s 1515: ctype(size_t __refs = 0); 194s 1515: # 1239 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: explicit 194s 1515: ctype(__c_locale __cloc, size_t __refs = 0); 194s 1515: 194s 1515: protected: 194s 1515: __wmask_type 194s 1515: _M_convert_to_wmask(const mask __m) const throw(); 194s 1515: 194s 1515: 194s 1515: virtual 194s 1515: ~ctype(); 194s 1515: # 1263 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual bool 194s 1515: do_is(mask __m, char_type __c) const; 194s 1515: # 1282 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; 194s 1515: # 1300 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; 194s 1515: # 1318 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_scan_not(mask __m, const char_type* __lo, 194s 1515: const char_type* __hi) const; 194s 1515: # 1335 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_toupper(char_type __c) const; 194s 1515: # 1352 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_toupper(char_type* __lo, const char_type* __hi) const; 194s 1515: # 1368 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_tolower(char_type __c) const; 194s 1515: # 1385 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_tolower(char_type* __lo, const char_type* __hi) const; 194s 1515: # 1405 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_widen(char __c) const; 194s 1515: # 1427 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char* 194s 1515: do_widen(const char* __lo, const char* __hi, char_type* __to) const; 194s 1515: # 1450 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char 194s 1515: do_narrow(char_type __c, char __dfault) const; 194s 1515: # 1476 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual const char_type* 194s 1515: do_narrow(const char_type* __lo, const char_type* __hi, 194s 1515: char __dfault, char* __to) const; 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_initialize_ctype() throw(); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class ctype_byname : public ctype<_CharT> 194s 1515: { 194s 1515: public: 194s 1515: typedef typename ctype<_CharT>::mask mask; 194s 1515: 194s 1515: explicit 194s 1515: ctype_byname(const char* __s, size_t __refs = 0); 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: ctype_byname(const string& __s, size_t __refs = 0) 194s 1515: : ctype_byname(__s.c_str(), __refs) { } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~ctype_byname() { } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: class ctype_byname : public ctype 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: ctype_byname(const char* __s, size_t __refs = 0); 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: ctype_byname(const string& __s, size_t __refs = 0); 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~ctype_byname(); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: class ctype_byname : public ctype 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: ctype_byname(const char* __s, size_t __refs = 0); 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: ctype_byname(const string& __s, size_t __refs = 0); 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~ctype_byname(); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/ctype_inline.h" 1 3 4 194s 1515: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/ctype_inline.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: ctype:: 194s 1515: is(mask __m, char __c) const 194s 1515: { return _M_table[static_cast(__c)] & __m; } 194s 1515: 194s 1515: const char* 194s 1515: ctype:: 194s 1515: is(const char* __low, const char* __high, mask* __vec) const 194s 1515: { 194s 1515: while (__low < __high) 194s 1515: *__vec++ = _M_table[static_cast(*__low++)]; 194s 1515: return __high; 194s 1515: } 194s 1515: 194s 1515: const char* 194s 1515: ctype:: 194s 1515: scan_is(mask __m, const char* __low, const char* __high) const 194s 1515: { 194s 1515: while (__low < __high 194s 1515: && !(_M_table[static_cast(*__low)] & __m)) 194s 1515: ++__low; 194s 1515: return __low; 194s 1515: } 194s 1515: 194s 1515: const char* 194s 1515: ctype:: 194s 1515: scan_not(mask __m, const char* __low, const char* __high) const 194s 1515: { 194s 1515: while (__low < __high 194s 1515: && (_M_table[static_cast(*__low)] & __m) != 0) 194s 1515: ++__low; 194s 1515: return __low; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 1549 "/usr/include/c++/15/bits/locale_facets.h" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: class __num_base 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: enum 194s 1515: { 194s 1515: _S_ominus, 194s 1515: _S_oplus, 194s 1515: _S_ox, 194s 1515: _S_oX, 194s 1515: _S_odigits, 194s 1515: _S_odigits_end = _S_odigits + 16, 194s 1515: _S_oudigits = _S_odigits_end, 194s 1515: _S_oudigits_end = _S_oudigits + 16, 194s 1515: _S_oe = _S_odigits + 14, 194s 1515: _S_oE = _S_oudigits + 14, 194s 1515: _S_oend = _S_oudigits_end 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const char* _S_atoms_out; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const char* _S_atoms_in; 194s 1515: 194s 1515: enum 194s 1515: { 194s 1515: _S_iminus, 194s 1515: _S_iplus, 194s 1515: _S_ix, 194s 1515: _S_iX, 194s 1515: _S_izero, 194s 1515: _S_ie = _S_izero + 14, 194s 1515: _S_iE = _S_izero + 20, 194s 1515: _S_iend = 26 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static void 194s 1515: _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw(); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __numpunct_cache : public locale::facet 194s 1515: { 194s 1515: const char* _M_grouping; 194s 1515: size_t _M_grouping_size; 194s 1515: bool _M_use_grouping; 194s 1515: const _CharT* _M_truename; 194s 1515: size_t _M_truename_size; 194s 1515: const _CharT* _M_falsename; 194s 1515: size_t _M_falsename_size; 194s 1515: _CharT _M_decimal_point; 194s 1515: _CharT _M_thousands_sep; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _CharT _M_atoms_out[__num_base::_S_oend]; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _CharT _M_atoms_in[__num_base::_S_iend]; 194s 1515: 194s 1515: bool _M_allocated; 194s 1515: 194s 1515: __numpunct_cache(size_t __refs = 0) 194s 1515: : facet(__refs), _M_grouping(0), _M_grouping_size(0), 194s 1515: _M_use_grouping(false), 194s 1515: _M_truename(0), _M_truename_size(0), _M_falsename(0), 194s 1515: _M_falsename_size(0), _M_decimal_point(_CharT()), 194s 1515: _M_thousands_sep(_CharT()), _M_allocated(false) 194s 1515: { } 194s 1515: 194s 1515: ~__numpunct_cache(); 194s 1515: 194s 1515: void 194s 1515: _M_cache(const locale& __loc); 194s 1515: 194s 1515: private: 194s 1515: __numpunct_cache& 194s 1515: operator=(const __numpunct_cache&); 194s 1515: 194s 1515: explicit 194s 1515: __numpunct_cache(const __numpunct_cache&); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: __numpunct_cache<_CharT>::~__numpunct_cache() 194s 1515: { 194s 1515: if (_M_allocated) 194s 1515: { 194s 1515: delete [] _M_grouping; 194s 1515: delete [] _M_truename; 194s 1515: delete [] _M_falsename; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: namespace __cxx11 { 194s 1515: # 1679 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: template 194s 1515: class numpunct : public locale::facet 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef basic_string<_CharT> string_type; 194s 1515: 194s 1515: typedef __numpunct_cache<_CharT> __cache_type; 194s 1515: 194s 1515: protected: 194s 1515: __cache_type* _M_data; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: static locale::id id; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: numpunct(size_t __refs = 0) 194s 1515: : facet(__refs), _M_data(0) 194s 1515: { _M_initialize_numpunct(); } 194s 1515: # 1717 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: explicit 194s 1515: numpunct(__cache_type* __cache, size_t __refs = 0) 194s 1515: : facet(__refs), _M_data(__cache) 194s 1515: { _M_initialize_numpunct(); } 194s 1515: # 1731 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: explicit 194s 1515: numpunct(__c_locale __cloc, size_t __refs = 0) 194s 1515: : facet(__refs), _M_data(0) 194s 1515: { _M_initialize_numpunct(__cloc); } 194s 1515: # 1745 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: char_type 194s 1515: decimal_point() const 194s 1515: { return this->do_decimal_point(); } 194s 1515: # 1758 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: char_type 194s 1515: thousands_sep() const 194s 1515: { return this->do_thousands_sep(); } 194s 1515: # 1789 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: string 194s 1515: grouping() const 194s 1515: { return this->do_grouping(); } 194s 1515: # 1802 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: string_type 194s 1515: truename() const 194s 1515: { return this->do_truename(); } 194s 1515: # 1815 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: string_type 194s 1515: falsename() const 194s 1515: { return this->do_falsename(); } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: virtual 194s 1515: ~numpunct(); 194s 1515: # 1832 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_decimal_point() const 194s 1515: { return _M_data->_M_decimal_point; } 194s 1515: # 1844 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual char_type 194s 1515: do_thousands_sep() const 194s 1515: { return _M_data->_M_thousands_sep; } 194s 1515: # 1857 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual string 194s 1515: do_grouping() const 194s 1515: { return _M_data->_M_grouping; } 194s 1515: # 1870 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual string_type 194s 1515: do_truename() const 194s 1515: { return _M_data->_M_truename; } 194s 1515: # 1883 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual string_type 194s 1515: do_falsename() const 194s 1515: { return _M_data->_M_falsename; } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_initialize_numpunct(__c_locale __cloc = 0); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id numpunct<_CharT>::id; 194s 1515: 194s 1515: template<> 194s 1515: numpunct::~numpunct(); 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: numpunct::_M_initialize_numpunct(__c_locale __cloc); 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: numpunct::~numpunct(); 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: numpunct::_M_initialize_numpunct(__c_locale __cloc); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class numpunct_byname : public numpunct<_CharT> 194s 1515: { 194s 1515: public: 194s 1515: typedef _CharT char_type; 194s 1515: typedef basic_string<_CharT> string_type; 194s 1515: 194s 1515: explicit 194s 1515: numpunct_byname(const char* __s, size_t __refs = 0) 194s 1515: : numpunct<_CharT>(__refs) 194s 1515: { 194s 1515: if (__builtin_strcmp(__s, "C") != 0 194s 1515: && __builtin_strcmp(__s, "POSIX") != 0) 194s 1515: { 194s 1515: __c_locale __tmp; 194s 1515: this->_S_create_c_locale(__tmp, __s); 194s 1515: this->_M_initialize_numpunct(__tmp); 194s 1515: this->_S_destroy_c_locale(__tmp); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: numpunct_byname(const string& __s, size_t __refs = 0) 194s 1515: : numpunct_byname(__s.c_str(), __refs) { } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~numpunct_byname() { } 194s 1515: }; 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: # 1961 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: template 194s 1515: class num_get : public locale::facet 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _InIter iter_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static locale::id id; 194s 1515: # 1982 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: explicit 194s 1515: num_get(size_t __refs = 0) : facet(__refs) { } 194s 1515: # 2008 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, bool& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: # 2045 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, long& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, unsigned short& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, unsigned int& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, unsigned long& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, long long& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, unsigned long long& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 2108 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, float& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, double& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, long double& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: # 2151 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: iter_type 194s 1515: get(iter_type __in, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, void*& __v) const 194s 1515: { return this->do_get(__in, __end, __io, __err, __v); } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: virtual ~num_get() { } 194s 1515: 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iter_type 194s 1515: _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, 194s 1515: string&) const; 194s 1515: 194s 1515: template 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iter_type 194s 1515: _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, 194s 1515: _ValueT&) const; 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type 194s 1515: _M_find(const _CharT2*, size_t __len, _CharT2 __c) const 194s 1515: { 194s 1515: int __ret = -1; 194s 1515: if (__len <= 10) 194s 1515: { 194s 1515: if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) 194s 1515: __ret = __c - _CharT2('0'); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: if (__c >= _CharT2('0') && __c <= _CharT2('9')) 194s 1515: __ret = __c - _CharT2('0'); 194s 1515: else if (__c >= _CharT2('a') && __c <= _CharT2('f')) 194s 1515: __ret = 10 + (__c - _CharT2('a')); 194s 1515: else if (__c >= _CharT2('A') && __c <= _CharT2('F')) 194s 1515: __ret = 10 + (__c - _CharT2('A')); 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename __gnu_cxx::__enable_if::__value, 194s 1515: int>::__type 194s 1515: _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const 194s 1515: { 194s 1515: int __ret = -1; 194s 1515: const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); 194s 1515: if (__q) 194s 1515: { 194s 1515: __ret = __q - __zero; 194s 1515: if (__ret > 15) 194s 1515: __ret -= 6; 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: # 2224 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, long& __v) const 194s 1515: { return _M_extract_int(__beg, __end, __io, __err, __v); } 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, unsigned short& __v) const 194s 1515: { return _M_extract_int(__beg, __end, __io, __err, __v); } 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, unsigned int& __v) const 194s 1515: { return _M_extract_int(__beg, __end, __io, __err, __v); } 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, unsigned long& __v) const 194s 1515: { return _M_extract_int(__beg, __end, __io, __err, __v); } 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: virtual iter_type 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, long long& __v) const 194s 1515: { return _M_extract_int(__beg, __end, __io, __err, __v); } 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, unsigned long long& __v) const 194s 1515: { return _M_extract_int(__beg, __end, __io, __err, __v); } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const; 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, 194s 1515: double&) const; 194s 1515: # 2279 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, 194s 1515: long double&) const; 194s 1515: 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; 194s 1515: # 2307 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id num_get<_CharT, _InIter>::id; 194s 1515: # 2325 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: template 194s 1515: class num_put : public locale::facet 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _OutIter iter_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static locale::id id; 194s 1515: # 2346 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: explicit 194s 1515: num_put(size_t __refs = 0) : facet(__refs) { } 194s 1515: # 2364 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: iter_type 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const 194s 1515: { return this->do_put(__s, __io, __fill, __v); } 194s 1515: # 2406 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: iter_type 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, long __v) const 194s 1515: { return this->do_put(__s, __io, __fill, __v); } 194s 1515: 194s 1515: iter_type 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: unsigned long __v) const 194s 1515: { return this->do_put(__s, __io, __fill, __v); } 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: iter_type 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const 194s 1515: { return this->do_put(__s, __io, __fill, __v); } 194s 1515: 194s 1515: iter_type 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: unsigned long long __v) const 194s 1515: { return this->do_put(__s, __io, __fill, __v); } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 2472 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: iter_type 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, double __v) const 194s 1515: { return this->do_put(__s, __io, __fill, __v); } 194s 1515: 194s 1515: iter_type 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: long double __v) const 194s 1515: { return this->do_put(__s, __io, __fill, __v); } 194s 1515: # 2497 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: iter_type 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: const void* __v) const 194s 1515: { return this->do_put(__s, __io, __fill, __v); } 194s 1515: 194s 1515: protected: 194s 1515: template 194s 1515: iter_type 194s 1515: _M_insert_float(iter_type, ios_base& __io, char_type __fill, 194s 1515: char __mod, _ValueT __v) const; 194s 1515: 194s 1515: void 194s 1515: _M_group_float(const char* __grouping, size_t __grouping_size, 194s 1515: char_type __sep, const char_type* __p, char_type* __new, 194s 1515: char_type* __cs, int& __len) const; 194s 1515: 194s 1515: template 194s 1515: iter_type 194s 1515: _M_insert_int(iter_type, ios_base& __io, char_type __fill, 194s 1515: _ValueT __v) const; 194s 1515: 194s 1515: void 194s 1515: _M_group_int(const char* __grouping, size_t __grouping_size, 194s 1515: char_type __sep, ios_base& __io, char_type* __new, 194s 1515: char_type* __cs, int& __len) const; 194s 1515: 194s 1515: void 194s 1515: _M_pad(char_type __fill, streamsize __w, ios_base& __io, 194s 1515: char_type* __new, const char_type* __cs, int& __len) const; 194s 1515: 194s 1515: 194s 1515: virtual 194s 1515: ~num_put() { } 194s 1515: # 2545 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const; 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const 194s 1515: { return _M_insert_int(__s, __io, __fill, __v); } 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_put(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: unsigned long __v) const 194s 1515: { return _M_insert_int(__s, __io, __fill, __v); } 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: virtual iter_type 194s 1515: do_put(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: long long __v) const 194s 1515: { return _M_insert_int(__s, __io, __fill, __v); } 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_put(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: unsigned long long __v) const 194s 1515: { return _M_insert_int(__s, __io, __fill, __v); } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_put(iter_type, ios_base&, char_type, double) const; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_put(iter_type, ios_base&, char_type, long double) const; 194s 1515: 194s 1515: 194s 1515: virtual iter_type 194s 1515: do_put(iter_type, ios_base&, char_type, const void*) const; 194s 1515: # 2600 "/usr/include/c++/15/bits/locale_facets.h" 3 4 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id num_put<_CharT, _OutIter>::id; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: isspace(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::space, __c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: isprint(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::print, __c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: iscntrl(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::cntrl, __c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: isupper(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::upper, __c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: islower(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::lower, __c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: isalpha(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::alpha, __c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: isdigit(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::digit, __c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: ispunct(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::punct, __c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: isxdigit(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::xdigit, __c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: isalnum(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::alnum, __c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: isgraph(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::graph, __c); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: isblank(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).is(ctype_base::blank, __c); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline _CharT 194s 1515: toupper(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).toupper(__c); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline _CharT 194s 1515: tolower(_CharT __c, const locale& __loc) 194s 1515: { return use_facet >(__loc).tolower(__c); } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/locale_facets.tcc" 1 3 4 194s 1515: # 36 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __use_cache 194s 1515: { 194s 1515: const _Facet* 194s 1515: operator() (const locale& __loc) const; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __use_cache<__numpunct_cache<_CharT> > 194s 1515: { 194s 1515: const __numpunct_cache<_CharT>* 194s 1515: operator() (const locale& __loc) const 194s 1515: { 194s 1515: const size_t __i = numpunct<_CharT>::id._M_id(); 194s 1515: const locale::facet** __caches = __loc._M_impl->_M_caches; 194s 1515: if (!__caches[__i]) 194s 1515: { 194s 1515: __numpunct_cache<_CharT>* __tmp = 0; 194s 1515: try 194s 1515: { 194s 1515: __tmp = new __numpunct_cache<_CharT>; 194s 1515: __tmp->_M_cache(__loc); 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: delete __tmp; 194s 1515: throw; 194s 1515: } 194s 1515: __loc._M_impl->_M_install_cache(__tmp, __i); 194s 1515: } 194s 1515: return static_cast*>(__caches[__i]); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __numpunct_cache<_CharT>::_M_cache(const locale& __loc) 194s 1515: { 194s 1515: const numpunct<_CharT>& __np = use_facet >(__loc); 194s 1515: 194s 1515: char* __grouping = 0; 194s 1515: _CharT* __truename = 0; 194s 1515: _CharT* __falsename = 0; 194s 1515: try 194s 1515: { 194s 1515: const string& __g = __np.grouping(); 194s 1515: _M_grouping_size = __g.size(); 194s 1515: __grouping = new char[_M_grouping_size]; 194s 1515: __g.copy(__grouping, _M_grouping_size); 194s 1515: _M_use_grouping = (_M_grouping_size 194s 1515: && static_cast(__grouping[0]) > 0 194s 1515: && (__grouping[0] 194s 1515: != __gnu_cxx::__numeric_traits::__max)); 194s 1515: 194s 1515: const basic_string<_CharT>& __tn = __np.truename(); 194s 1515: _M_truename_size = __tn.size(); 194s 1515: __truename = new _CharT[_M_truename_size]; 194s 1515: __tn.copy(__truename, _M_truename_size); 194s 1515: 194s 1515: const basic_string<_CharT>& __fn = __np.falsename(); 194s 1515: _M_falsename_size = __fn.size(); 194s 1515: __falsename = new _CharT[_M_falsename_size]; 194s 1515: __fn.copy(__falsename, _M_falsename_size); 194s 1515: 194s 1515: _M_decimal_point = __np.decimal_point(); 194s 1515: _M_thousands_sep = __np.thousands_sep(); 194s 1515: 194s 1515: const ctype<_CharT>& __ct = use_facet >(__loc); 194s 1515: __ct.widen(__num_base::_S_atoms_out, 194s 1515: __num_base::_S_atoms_out 194s 1515: + __num_base::_S_oend, _M_atoms_out); 194s 1515: __ct.widen(__num_base::_S_atoms_in, 194s 1515: __num_base::_S_atoms_in 194s 1515: + __num_base::_S_iend, _M_atoms_in); 194s 1515: 194s 1515: _M_grouping = __grouping; 194s 1515: _M_truename = __truename; 194s 1515: _M_falsename = __falsename; 194s 1515: _M_allocated = true; 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: delete [] __grouping; 194s 1515: delete [] __truename; 194s 1515: delete [] __falsename; 194s 1515: throw; 194s 1515: } 194s 1515: } 194s 1515: # 143 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 194s 1515: __attribute__ ((__pure__)) bool 194s 1515: __verify_grouping(const char* __grouping, size_t __grouping_size, 194s 1515: const string& __grouping_tmp) throw (); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: _InIter 194s 1515: num_get<_CharT, _InIter>:: 194s 1515: _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, string& __xtrc) const 194s 1515: { 194s 1515: typedef char_traits<_CharT> __traits_type; 194s 1515: typedef __numpunct_cache<_CharT> __cache_type; 194s 1515: __use_cache<__cache_type> __uc; 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __cache_type* __lc = __uc(__loc); 194s 1515: const _CharT* __lit = __lc->_M_atoms_in; 194s 1515: char_type __c = char_type(); 194s 1515: 194s 1515: 194s 1515: bool __testeof = __beg == __end; 194s 1515: 194s 1515: 194s 1515: if (!__testeof) 194s 1515: { 194s 1515: __c = *__beg; 194s 1515: const bool __plus = __c == __lit[__num_base::_S_iplus]; 194s 1515: if ((__plus || __c == __lit[__num_base::_S_iminus]) 194s 1515: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 194s 1515: && !(__c == __lc->_M_decimal_point)) 194s 1515: { 194s 1515: __xtrc += __plus ? '+' : '-'; 194s 1515: if (++__beg != __end) 194s 1515: __c = *__beg; 194s 1515: else 194s 1515: __testeof = true; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool __found_mantissa = false; 194s 1515: int __sep_pos = 0; 194s 1515: while (!__testeof) 194s 1515: { 194s 1515: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 194s 1515: || __c == __lc->_M_decimal_point) 194s 1515: break; 194s 1515: else if (__c == __lit[__num_base::_S_izero]) 194s 1515: { 194s 1515: if (!__found_mantissa) 194s 1515: { 194s 1515: __xtrc += '0'; 194s 1515: __found_mantissa = true; 194s 1515: } 194s 1515: ++__sep_pos; 194s 1515: 194s 1515: if (++__beg != __end) 194s 1515: __c = *__beg; 194s 1515: else 194s 1515: __testeof = true; 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool __found_dec = false; 194s 1515: bool __found_sci = false; 194s 1515: string __found_grouping; 194s 1515: if (__lc->_M_use_grouping) 194s 1515: __found_grouping.reserve(32); 194s 1515: const char_type* __lit_zero = __lit + __num_base::_S_izero; 194s 1515: 194s 1515: if (!__lc->_M_allocated) 194s 1515: 194s 1515: while (!__testeof) 194s 1515: { 194s 1515: const int __digit = _M_find(__lit_zero, 10, __c); 194s 1515: if (__digit != -1) 194s 1515: { 194s 1515: __xtrc += '0' + __digit; 194s 1515: __found_mantissa = true; 194s 1515: } 194s 1515: else if (__c == __lc->_M_decimal_point 194s 1515: && !__found_dec && !__found_sci) 194s 1515: { 194s 1515: __xtrc += '.'; 194s 1515: __found_dec = true; 194s 1515: } 194s 1515: else if ((__c == __lit[__num_base::_S_ie] 194s 1515: || __c == __lit[__num_base::_S_iE]) 194s 1515: && !__found_sci && __found_mantissa) 194s 1515: { 194s 1515: 194s 1515: __xtrc += 'e'; 194s 1515: __found_sci = true; 194s 1515: 194s 1515: 194s 1515: if (++__beg != __end) 194s 1515: { 194s 1515: __c = *__beg; 194s 1515: const bool __plus = __c == __lit[__num_base::_S_iplus]; 194s 1515: if (__plus || __c == __lit[__num_base::_S_iminus]) 194s 1515: __xtrc += __plus ? '+' : '-'; 194s 1515: else 194s 1515: continue; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __testeof = true; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: 194s 1515: if (++__beg != __end) 194s 1515: __c = *__beg; 194s 1515: else 194s 1515: __testeof = true; 194s 1515: } 194s 1515: else 194s 1515: while (!__testeof) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 194s 1515: { 194s 1515: if (!__found_dec && !__found_sci) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (__sep_pos) 194s 1515: { 194s 1515: __found_grouping += static_cast(__sep_pos); 194s 1515: __sep_pos = 0; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: __xtrc.clear(); 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: else if (__c == __lc->_M_decimal_point) 194s 1515: { 194s 1515: if (!__found_dec && !__found_sci) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__found_grouping.size()) 194s 1515: __found_grouping += static_cast(__sep_pos); 194s 1515: __xtrc += '.'; 194s 1515: __found_dec = true; 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: const char_type* __q = 194s 1515: __traits_type::find(__lit_zero, 10, __c); 194s 1515: if (__q) 194s 1515: { 194s 1515: __xtrc += '0' + (__q - __lit_zero); 194s 1515: __found_mantissa = true; 194s 1515: ++__sep_pos; 194s 1515: } 194s 1515: else if ((__c == __lit[__num_base::_S_ie] 194s 1515: || __c == __lit[__num_base::_S_iE]) 194s 1515: && !__found_sci && __found_mantissa) 194s 1515: { 194s 1515: 194s 1515: if (__found_grouping.size() && !__found_dec) 194s 1515: __found_grouping += static_cast(__sep_pos); 194s 1515: __xtrc += 'e'; 194s 1515: __found_sci = true; 194s 1515: 194s 1515: 194s 1515: if (++__beg != __end) 194s 1515: { 194s 1515: __c = *__beg; 194s 1515: const bool __plus = __c == __lit[__num_base::_S_iplus]; 194s 1515: if ((__plus || __c == __lit[__num_base::_S_iminus]) 194s 1515: && !(__lc->_M_use_grouping 194s 1515: && __c == __lc->_M_thousands_sep) 194s 1515: && !(__c == __lc->_M_decimal_point)) 194s 1515: __xtrc += __plus ? '+' : '-'; 194s 1515: else 194s 1515: continue; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __testeof = true; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: if (++__beg != __end) 194s 1515: __c = *__beg; 194s 1515: else 194s 1515: __testeof = true; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__found_grouping.size()) 194s 1515: { 194s 1515: 194s 1515: if (!__found_dec && !__found_sci) 194s 1515: __found_grouping += static_cast(__sep_pos); 194s 1515: 194s 1515: if (!std::__verify_grouping(__lc->_M_grouping, 194s 1515: __lc->_M_grouping_size, 194s 1515: __found_grouping)) 194s 1515: __err = ios_base::failbit; 194s 1515: } 194s 1515: 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: _InIter 194s 1515: num_get<_CharT, _InIter>:: 194s 1515: _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, _ValueT& __v) const 194s 1515: { 194s 1515: typedef char_traits<_CharT> __traits_type; 194s 1515: using __gnu_cxx::__add_unsigned; 194s 1515: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; 194s 1515: typedef __numpunct_cache<_CharT> __cache_type; 194s 1515: __use_cache<__cache_type> __uc; 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __cache_type* __lc = __uc(__loc); 194s 1515: const _CharT* __lit = __lc->_M_atoms_in; 194s 1515: char_type __c = char_type(); 194s 1515: 194s 1515: 194s 1515: const ios_base::fmtflags __basefield = __io.flags() 194s 1515: & ios_base::basefield; 194s 1515: const bool __oct = __basefield == ios_base::oct; 194s 1515: int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); 194s 1515: 194s 1515: 194s 1515: bool __testeof = __beg == __end; 194s 1515: 194s 1515: 194s 1515: bool __negative = false; 194s 1515: if (!__testeof) 194s 1515: { 194s 1515: __c = *__beg; 194s 1515: __negative = __c == __lit[__num_base::_S_iminus]; 194s 1515: if ((__negative || __c == __lit[__num_base::_S_iplus]) 194s 1515: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 194s 1515: && !(__c == __lc->_M_decimal_point)) 194s 1515: { 194s 1515: if (++__beg != __end) 194s 1515: __c = *__beg; 194s 1515: else 194s 1515: __testeof = true; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: bool __found_zero = false; 194s 1515: int __sep_pos = 0; 194s 1515: while (!__testeof) 194s 1515: { 194s 1515: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 194s 1515: || __c == __lc->_M_decimal_point) 194s 1515: break; 194s 1515: else if (__c == __lit[__num_base::_S_izero] 194s 1515: && (!__found_zero || __base == 10)) 194s 1515: { 194s 1515: __found_zero = true; 194s 1515: ++__sep_pos; 194s 1515: if (__basefield == 0) 194s 1515: __base = 8; 194s 1515: if (__base == 8) 194s 1515: __sep_pos = 0; 194s 1515: } 194s 1515: else if (__found_zero 194s 1515: && (__c == __lit[__num_base::_S_ix] 194s 1515: || __c == __lit[__num_base::_S_iX])) 194s 1515: { 194s 1515: if (__basefield == 0) 194s 1515: __base = 16; 194s 1515: if (__base == 16) 194s 1515: { 194s 1515: __found_zero = false; 194s 1515: __sep_pos = 0; 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: 194s 1515: if (++__beg != __end) 194s 1515: { 194s 1515: __c = *__beg; 194s 1515: if (!__found_zero) 194s 1515: break; 194s 1515: } 194s 1515: else 194s 1515: __testeof = true; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: const size_t __len = (__base == 16 ? __num_base::_S_iend 194s 1515: - __num_base::_S_izero : __base); 194s 1515: 194s 1515: 194s 1515: typedef __gnu_cxx::__numeric_traits<_ValueT> __num_traits; 194s 1515: string __found_grouping; 194s 1515: if (__lc->_M_use_grouping) 194s 1515: __found_grouping.reserve(32); 194s 1515: bool __testfail = false; 194s 1515: bool __testoverflow = false; 194s 1515: const __unsigned_type __max = 194s 1515: (__negative && __num_traits::__is_signed) 194s 1515: ? -static_cast<__unsigned_type>(__num_traits::__min) 194s 1515: : __num_traits::__max; 194s 1515: const __unsigned_type __smax = __max / __base; 194s 1515: __unsigned_type __result = 0; 194s 1515: int __digit = 0; 194s 1515: const char_type* __lit_zero = __lit + __num_base::_S_izero; 194s 1515: 194s 1515: if (!__lc->_M_allocated) 194s 1515: 194s 1515: while (!__testeof) 194s 1515: { 194s 1515: __digit = _M_find(__lit_zero, __len, __c); 194s 1515: if (__digit == -1) 194s 1515: break; 194s 1515: 194s 1515: if (__result > __smax) 194s 1515: __testoverflow = true; 194s 1515: else 194s 1515: { 194s 1515: __result *= __base; 194s 1515: __testoverflow |= __result > __max - __digit; 194s 1515: __result += __digit; 194s 1515: ++__sep_pos; 194s 1515: } 194s 1515: 194s 1515: if (++__beg != __end) 194s 1515: __c = *__beg; 194s 1515: else 194s 1515: __testeof = true; 194s 1515: } 194s 1515: else 194s 1515: while (!__testeof) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (__sep_pos) 194s 1515: { 194s 1515: __found_grouping += static_cast(__sep_pos); 194s 1515: __sep_pos = 0; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __testfail = true; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: else if (__c == __lc->_M_decimal_point) 194s 1515: break; 194s 1515: else 194s 1515: { 194s 1515: const char_type* __q = 194s 1515: __traits_type::find(__lit_zero, __len, __c); 194s 1515: if (!__q) 194s 1515: break; 194s 1515: 194s 1515: __digit = __q - __lit_zero; 194s 1515: if (__digit > 15) 194s 1515: __digit -= 6; 194s 1515: if (__result > __smax) 194s 1515: __testoverflow = true; 194s 1515: else 194s 1515: { 194s 1515: __result *= __base; 194s 1515: __testoverflow |= __result > __max - __digit; 194s 1515: __result += __digit; 194s 1515: ++__sep_pos; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: if (++__beg != __end) 194s 1515: __c = *__beg; 194s 1515: else 194s 1515: __testeof = true; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__found_grouping.size()) 194s 1515: { 194s 1515: 194s 1515: __found_grouping += static_cast(__sep_pos); 194s 1515: 194s 1515: if (!std::__verify_grouping(__lc->_M_grouping, 194s 1515: __lc->_M_grouping_size, 194s 1515: __found_grouping)) 194s 1515: __err = ios_base::failbit; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: if ((!__sep_pos && !__found_zero && !__found_grouping.size()) 194s 1515: || __testfail) 194s 1515: { 194s 1515: __v = 0; 194s 1515: __err = ios_base::failbit; 194s 1515: } 194s 1515: else if (__testoverflow) 194s 1515: { 194s 1515: if (__negative && __num_traits::__is_signed) 194s 1515: __v = __num_traits::__min; 194s 1515: else 194s 1515: __v = __num_traits::__max; 194s 1515: __err = ios_base::failbit; 194s 1515: } 194s 1515: else 194s 1515: __v = __negative ? -__result : __result; 194s 1515: 194s 1515: if (__testeof) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: num_get<_CharT, _InIter>:: 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, bool& __v) const 194s 1515: { 194s 1515: if (!(__io.flags() & ios_base::boolalpha)) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: long __l = -1; 194s 1515: __beg = _M_extract_int(__beg, __end, __io, __err, __l); 194s 1515: if (__l == 0 || __l == 1) 194s 1515: __v = bool(__l); 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: __v = true; 194s 1515: __err = ios_base::failbit; 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: typedef __numpunct_cache<_CharT> __cache_type; 194s 1515: __use_cache<__cache_type> __uc; 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __cache_type* __lc = __uc(__loc); 194s 1515: 194s 1515: bool __testf = true; 194s 1515: bool __testt = true; 194s 1515: bool __donef = __lc->_M_falsename_size == 0; 194s 1515: bool __donet = __lc->_M_truename_size == 0; 194s 1515: bool __testeof = false; 194s 1515: size_t __n = 0; 194s 1515: while (!__donef || !__donet) 194s 1515: { 194s 1515: if (__beg == __end) 194s 1515: { 194s 1515: __testeof = true; 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: const char_type __c = *__beg; 194s 1515: 194s 1515: if (!__donef) 194s 1515: __testf = __c == __lc->_M_falsename[__n]; 194s 1515: 194s 1515: if (!__testf && __donet) 194s 1515: break; 194s 1515: 194s 1515: if (!__donet) 194s 1515: __testt = __c == __lc->_M_truename[__n]; 194s 1515: 194s 1515: if (!__testt && __donef) 194s 1515: break; 194s 1515: 194s 1515: if (!__testt && !__testf) 194s 1515: break; 194s 1515: 194s 1515: ++__n; 194s 1515: ++__beg; 194s 1515: 194s 1515: __donef = !__testf || __n >= __lc->_M_falsename_size; 194s 1515: __donet = !__testt || __n >= __lc->_M_truename_size; 194s 1515: } 194s 1515: if (__testf && __n == __lc->_M_falsename_size && __n) 194s 1515: { 194s 1515: __v = false; 194s 1515: if (__testt && __n == __lc->_M_truename_size) 194s 1515: __err = ios_base::failbit; 194s 1515: else 194s 1515: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; 194s 1515: } 194s 1515: else if (__testt && __n == __lc->_M_truename_size && __n) 194s 1515: { 194s 1515: __v = true; 194s 1515: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: __v = false; 194s 1515: __err = ios_base::failbit; 194s 1515: if (__testeof) 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: } 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: num_get<_CharT, _InIter>:: 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, float& __v) const 194s 1515: { 194s 1515: string __xtrc; 194s 1515: __xtrc.reserve(32); 194s 1515: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 194s 1515: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: num_get<_CharT, _InIter>:: 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, double& __v) const 194s 1515: { 194s 1515: string __xtrc; 194s 1515: __xtrc.reserve(32); 194s 1515: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 194s 1515: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: # 739 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 194s 1515: template 194s 1515: _InIter 194s 1515: num_get<_CharT, _InIter>:: 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, long double& __v) const 194s 1515: { 194s 1515: string __xtrc; 194s 1515: __xtrc.reserve(32); 194s 1515: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 194s 1515: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: num_get<_CharT, _InIter>:: 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, void*& __v) const 194s 1515: { 194s 1515: 194s 1515: typedef ios_base::fmtflags fmtflags; 194s 1515: const fmtflags __fmt = __io.flags(); 194s 1515: __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex); 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: typedef __gnu_cxx::__conditional_type<(sizeof(void*) 194s 1515: <= sizeof(unsigned long)), 194s 1515: unsigned long, unsigned long long>::__type _UIntPtrType; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: _UIntPtrType __ul; 194s 1515: __beg = _M_extract_int(__beg, __end, __io, __err, __ul); 194s 1515: 194s 1515: 194s 1515: __io.flags(__fmt); 194s 1515: 194s 1515: __v = reinterpret_cast(__ul); 194s 1515: return __beg; 194s 1515: } 194s 1515: # 802 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 194s 1515: template 194s 1515: void 194s 1515: num_put<_CharT, _OutIter>:: 194s 1515: _M_pad(_CharT __fill, streamsize __w, ios_base& __io, 194s 1515: _CharT* __new, const _CharT* __cs, int& __len) const 194s 1515: { 194s 1515: 194s 1515: 194s 1515: __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, 194s 1515: __cs, __w, __len); 194s 1515: __len = static_cast(__w); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: int 194s 1515: __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, 194s 1515: ios_base::fmtflags __flags, bool __dec) 194s 1515: { 194s 1515: _CharT* __buf = __bufend; 194s 1515: if (__builtin_expect(__dec, true)) 194s 1515: { 194s 1515: 194s 1515: do 194s 1515: { 194s 1515: *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; 194s 1515: __v /= 10; 194s 1515: } 194s 1515: while (__v != 0); 194s 1515: } 194s 1515: else if ((__flags & ios_base::basefield) == ios_base::oct) 194s 1515: { 194s 1515: 194s 1515: do 194s 1515: { 194s 1515: *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; 194s 1515: __v >>= 3; 194s 1515: } 194s 1515: while (__v != 0); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: const bool __uppercase = __flags & ios_base::uppercase; 194s 1515: const int __case_offset = __uppercase ? __num_base::_S_oudigits 194s 1515: : __num_base::_S_odigits; 194s 1515: do 194s 1515: { 194s 1515: *--__buf = __lit[(__v & 0xf) + __case_offset]; 194s 1515: __v >>= 4; 194s 1515: } 194s 1515: while (__v != 0); 194s 1515: } 194s 1515: return __bufend - __buf; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: num_put<_CharT, _OutIter>:: 194s 1515: _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, 194s 1515: ios_base&, _CharT* __new, _CharT* __cs, int& __len) const 194s 1515: { 194s 1515: _CharT* __p = std::__add_grouping(__new, __sep, __grouping, 194s 1515: __grouping_size, __cs, __cs + __len); 194s 1515: __len = __p - __new; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: _OutIter 194s 1515: num_put<_CharT, _OutIter>:: 194s 1515: _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, 194s 1515: _ValueT __v) const 194s 1515: { 194s 1515: using __gnu_cxx::__add_unsigned; 194s 1515: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; 194s 1515: typedef __numpunct_cache<_CharT> __cache_type; 194s 1515: __use_cache<__cache_type> __uc; 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __cache_type* __lc = __uc(__loc); 194s 1515: const _CharT* __lit = __lc->_M_atoms_out; 194s 1515: const ios_base::fmtflags __flags = __io.flags(); 194s 1515: 194s 1515: 194s 1515: const int __ilen = 5 * sizeof(_ValueT); 194s 1515: _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 194s 1515: * __ilen)); 194s 1515: 194s 1515: 194s 1515: 194s 1515: const ios_base::fmtflags __basefield = __flags & ios_base::basefield; 194s 1515: const bool __dec = (__basefield != ios_base::oct 194s 1515: && __basefield != ios_base::hex); 194s 1515: const __unsigned_type __u = ((__v > 0 || !__dec) 194s 1515: ? __unsigned_type(__v) 194s 1515: : -__unsigned_type(__v)); 194s 1515: int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); 194s 1515: __cs += __ilen - __len; 194s 1515: 194s 1515: 194s 1515: if (__lc->_M_use_grouping) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 194s 1515: * (__len + 1) 194s 1515: * 2)); 194s 1515: _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, 194s 1515: __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); 194s 1515: __cs = __cs2 + 2; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (__builtin_expect(__dec, true)) 194s 1515: { 194s 1515: 194s 1515: if (__v >= 0) 194s 1515: { 194s 1515: if (bool(__flags & ios_base::showpos) 194s 1515: && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) 194s 1515: *--__cs = __lit[__num_base::_S_oplus], ++__len; 194s 1515: } 194s 1515: else 194s 1515: *--__cs = __lit[__num_base::_S_ominus], ++__len; 194s 1515: } 194s 1515: else if (bool(__flags & ios_base::showbase) && __v) 194s 1515: { 194s 1515: if (__basefield == ios_base::oct) 194s 1515: *--__cs = __lit[__num_base::_S_odigits], ++__len; 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: const bool __uppercase = __flags & ios_base::uppercase; 194s 1515: *--__cs = __lit[__num_base::_S_ox + __uppercase]; 194s 1515: 194s 1515: *--__cs = __lit[__num_base::_S_odigits]; 194s 1515: __len += 2; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const streamsize __w = __io.width(); 194s 1515: if (__w > static_cast(__len)) 194s 1515: { 194s 1515: _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 194s 1515: * __w)); 194s 1515: _M_pad(__fill, __w, __io, __cs3, __cs, __len); 194s 1515: __cs = __cs3; 194s 1515: } 194s 1515: __io.width(0); 194s 1515: 194s 1515: 194s 1515: 194s 1515: return std::__write(__s, __cs, __len); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: num_put<_CharT, _OutIter>:: 194s 1515: _M_group_float(const char* __grouping, size_t __grouping_size, 194s 1515: _CharT __sep, const _CharT* __p, _CharT* __new, 194s 1515: _CharT* __cs, int& __len) const 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: const int __declen = __p ? __p - __cs : __len; 194s 1515: _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, 194s 1515: __grouping_size, 194s 1515: __cs, __cs + __declen); 194s 1515: 194s 1515: 194s 1515: int __newlen = __p2 - __new; 194s 1515: if (__p) 194s 1515: { 194s 1515: char_traits<_CharT>::copy(__p2, __p, __len - __declen); 194s 1515: __newlen += __len - __declen; 194s 1515: } 194s 1515: __len = __newlen; 194s 1515: } 194s 1515: # 996 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 194s 1515: template 194s 1515: template 194s 1515: _OutIter 194s 1515: num_put<_CharT, _OutIter>:: 194s 1515: _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, 194s 1515: _ValueT __v) const 194s 1515: { 194s 1515: typedef __numpunct_cache<_CharT> __cache_type; 194s 1515: __use_cache<__cache_type> __uc; 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __cache_type* __lc = __uc(__loc); 194s 1515: 194s 1515: 194s 1515: const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); 194s 1515: 194s 1515: const int __max_digits = 194s 1515: __gnu_cxx::__numeric_traits<_ValueT>::__digits10; 194s 1515: 194s 1515: 194s 1515: int __len; 194s 1515: 194s 1515: char __fbuf[16]; 194s 1515: __num_base::_S_format_float(__io, __fbuf, __mod); 194s 1515: 194s 1515: 194s 1515: 194s 1515: const bool __use_prec = 194s 1515: (__io.flags() & ios_base::floatfield) != ios_base::floatfield; 194s 1515: 194s 1515: 194s 1515: 194s 1515: int __cs_size = __max_digits * 3; 194s 1515: char* __cs = static_cast(__builtin_alloca(__cs_size)); 194s 1515: if (__use_prec) 194s 1515: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 194s 1515: __fbuf, __prec, __v); 194s 1515: else 194s 1515: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 194s 1515: __fbuf, __v); 194s 1515: 194s 1515: 194s 1515: if (__len >= __cs_size) 194s 1515: { 194s 1515: __cs_size = __len + 1; 194s 1515: __cs = static_cast(__builtin_alloca(__cs_size)); 194s 1515: if (__use_prec) 194s 1515: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 194s 1515: __fbuf, __prec, __v); 194s 1515: else 194s 1515: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 194s 1515: __fbuf, __v); 194s 1515: } 194s 1515: # 1069 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: 194s 1515: _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 194s 1515: * __len)); 194s 1515: __ctype.widen(__cs, __cs + __len, __ws); 194s 1515: 194s 1515: 194s 1515: _CharT* __wp = 0; 194s 1515: const char* __p = char_traits::find(__cs, __len, '.'); 194s 1515: if (__p) 194s 1515: { 194s 1515: __wp = __ws + (__p - __cs); 194s 1515: *__wp = __lc->_M_decimal_point; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__lc->_M_use_grouping 194s 1515: && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' 194s 1515: && __cs[1] >= '0' && __cs[2] >= '0'))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 194s 1515: * __len * 2)); 194s 1515: 194s 1515: streamsize __off = 0; 194s 1515: if (__cs[0] == '-' || __cs[0] == '+') 194s 1515: { 194s 1515: __off = 1; 194s 1515: __ws2[0] = __ws[0]; 194s 1515: __len -= 1; 194s 1515: } 194s 1515: 194s 1515: _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, 194s 1515: __lc->_M_thousands_sep, __wp, __ws2 + __off, 194s 1515: __ws + __off, __len); 194s 1515: __len += __off; 194s 1515: 194s 1515: __ws = __ws2; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const streamsize __w = __io.width(); 194s 1515: if (__w > static_cast(__len)) 194s 1515: { 194s 1515: _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 194s 1515: * __w)); 194s 1515: _M_pad(__fill, __w, __io, __ws3, __ws, __len); 194s 1515: __ws = __ws3; 194s 1515: } 194s 1515: __io.width(0); 194s 1515: 194s 1515: 194s 1515: 194s 1515: return std::__write(__s, __ws, __len); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _OutIter 194s 1515: num_put<_CharT, _OutIter>:: 194s 1515: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const 194s 1515: { 194s 1515: const ios_base::fmtflags __flags = __io.flags(); 194s 1515: if ((__flags & ios_base::boolalpha) == 0) 194s 1515: { 194s 1515: const long __l = __v; 194s 1515: __s = _M_insert_int(__s, __io, __fill, __l); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: typedef __numpunct_cache<_CharT> __cache_type; 194s 1515: __use_cache<__cache_type> __uc; 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __cache_type* __lc = __uc(__loc); 194s 1515: 194s 1515: const _CharT* __name = __v ? __lc->_M_truename 194s 1515: : __lc->_M_falsename; 194s 1515: int __len = __v ? __lc->_M_truename_size 194s 1515: : __lc->_M_falsename_size; 194s 1515: 194s 1515: const streamsize __w = __io.width(); 194s 1515: if (__w > static_cast(__len)) 194s 1515: { 194s 1515: const streamsize __plen = __w - __len; 194s 1515: _CharT* __ps 194s 1515: = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 194s 1515: * __plen)); 194s 1515: 194s 1515: char_traits<_CharT>::assign(__ps, __plen, __fill); 194s 1515: __io.width(0); 194s 1515: 194s 1515: if ((__flags & ios_base::adjustfield) == ios_base::left) 194s 1515: { 194s 1515: __s = std::__write(__s, __name, __len); 194s 1515: __s = std::__write(__s, __ps, __plen); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __s = std::__write(__s, __ps, __plen); 194s 1515: __s = std::__write(__s, __name, __len); 194s 1515: } 194s 1515: return __s; 194s 1515: } 194s 1515: __io.width(0); 194s 1515: __s = std::__write(__s, __name, __len); 194s 1515: } 194s 1515: return __s; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _OutIter 194s 1515: num_put<_CharT, _OutIter>:: 194s 1515: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const 194s 1515: { return _M_insert_float(__s, __io, __fill, char(), __v); } 194s 1515: # 1194 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 194s 1515: template 194s 1515: _OutIter 194s 1515: num_put<_CharT, _OutIter>:: 194s 1515: do_put(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: long double __v) const 194s 1515: { return _M_insert_float(__s, __io, __fill, 'L', __v); } 194s 1515: 194s 1515: template 194s 1515: _OutIter 194s 1515: num_put<_CharT, _OutIter>:: 194s 1515: do_put(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: const void* __v) const 194s 1515: { 194s 1515: const ios_base::fmtflags __flags = __io.flags(); 194s 1515: const ios_base::fmtflags __fmt = ~(ios_base::basefield 194s 1515: | ios_base::uppercase); 194s 1515: __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase)); 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: typedef __gnu_cxx::__conditional_type<(sizeof(const void*) 194s 1515: <= sizeof(unsigned long)), 194s 1515: unsigned long, unsigned long long>::__type _UIntPtrType; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: __s = _M_insert_int(__s, __io, __fill, 194s 1515: reinterpret_cast<_UIntPtrType>(__v)); 194s 1515: __io.flags(__flags); 194s 1515: return __s; 194s 1515: } 194s 1515: # 1234 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 194s 1515: 194s 1515: # 1243 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 194s 1515: template 194s 1515: void 194s 1515: __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, 194s 1515: _CharT* __news, const _CharT* __olds, 194s 1515: streamsize __newlen, streamsize __oldlen) 194s 1515: { 194s 1515: const size_t __plen = static_cast(__newlen - __oldlen); 194s 1515: const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; 194s 1515: 194s 1515: 194s 1515: if (__adjust == ios_base::left) 194s 1515: { 194s 1515: _Traits::copy(__news, __olds, __oldlen); 194s 1515: _Traits::assign(__news + __oldlen, __plen, __fill); 194s 1515: return; 194s 1515: } 194s 1515: 194s 1515: size_t __mod = 0; 194s 1515: if (__adjust == ios_base::internal) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: 194s 1515: if (__ctype.widen('-') == __olds[0] 194s 1515: || __ctype.widen('+') == __olds[0]) 194s 1515: { 194s 1515: __news[0] = __olds[0]; 194s 1515: __mod = 1; 194s 1515: ++__news; 194s 1515: } 194s 1515: else if (__ctype.widen('0') == __olds[0] 194s 1515: && __oldlen > 1 194s 1515: && (__ctype.widen('x') == __olds[1] 194s 1515: || __ctype.widen('X') == __olds[1])) 194s 1515: { 194s 1515: __news[0] = __olds[0]; 194s 1515: __news[1] = __olds[1]; 194s 1515: __mod = 2; 194s 1515: __news += 2; 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: _Traits::assign(__news, __plen, __fill); 194s 1515: _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _CharT* 194s 1515: __add_grouping(_CharT* __s, _CharT __sep, 194s 1515: const char* __gbeg, size_t __gsize, 194s 1515: const _CharT* __first, const _CharT* __last) 194s 1515: { 194s 1515: size_t __idx = 0; 194s 1515: size_t __ctr = 0; 194s 1515: 194s 1515: while (__last - __first > __gbeg[__idx] 194s 1515: && static_cast(__gbeg[__idx]) > 0 194s 1515: && __gbeg[__idx] != __gnu_cxx::__numeric_traits::__max) 194s 1515: { 194s 1515: __last -= __gbeg[__idx]; 194s 1515: __idx < __gsize - 1 ? ++__idx : ++__ctr; 194s 1515: } 194s 1515: 194s 1515: while (__first != __last) 194s 1515: *__s++ = *__first++; 194s 1515: 194s 1515: while (__ctr--) 194s 1515: { 194s 1515: *__s++ = __sep; 194s 1515: for (char __i = __gbeg[__idx]; __i > 0; --__i) 194s 1515: *__s++ = *__first++; 194s 1515: } 194s 1515: 194s 1515: while (__idx--) 194s 1515: { 194s 1515: *__s++ = __sep; 194s 1515: for (char __i = __gbeg[__idx]; __i > 0; --__i) 194s 1515: *__s++ = *__first++; 194s 1515: } 194s 1515: 194s 1515: return __s; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern template class __cxx11:: numpunct; 194s 1515: extern template class __cxx11:: numpunct_byname; 194s 1515: extern template class num_get; 194s 1515: extern template class num_put; 194s 1515: extern template class ctype_byname; 194s 1515: 194s 1515: extern template 194s 1515: const ctype* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const numpunct* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const num_put* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const num_get* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const ctype& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const numpunct& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const num_put& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const num_get& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: 194s 1515: extern template class __cxx11:: numpunct; 194s 1515: extern template class __cxx11:: numpunct_byname; 194s 1515: extern template class num_get; 194s 1515: extern template class num_put; 194s 1515: extern template class ctype_byname; 194s 1515: 194s 1515: extern template 194s 1515: const ctype* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const numpunct* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const num_put* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const num_get* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const ctype& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const numpunct& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const num_put& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const num_get& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 2702 "/usr/include/c++/15/bits/locale_facets.h" 2 3 4 194s 1515: # 40 "/usr/include/c++/15/bits/basic_ios.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline const _Facet& 194s 1515: __check_facet(const _Facet* __f) 194s 1515: { 194s 1515: if (!__f) 194s 1515: __throw_bad_cast(); 194s 1515: return *__f; 194s 1515: } 194s 1515: # 68 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: template 194s 1515: class basic_ios : public ios_base 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef typename _Traits::int_type int_type; 194s 1515: typedef typename _Traits::pos_type pos_type; 194s 1515: typedef typename _Traits::off_type off_type; 194s 1515: typedef _Traits traits_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef ctype<_CharT> __ctype_type; 194s 1515: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > 194s 1515: __num_put_type; 194s 1515: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > 194s 1515: __num_get_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: basic_ostream<_CharT, _Traits>* _M_tie; 194s 1515: mutable char_type _M_fill; 194s 1515: mutable bool _M_fill_init; 194s 1515: basic_streambuf<_CharT, _Traits>* _M_streambuf; 194s 1515: 194s 1515: 194s 1515: const __ctype_type* _M_ctype; 194s 1515: 194s 1515: const __num_put_type* _M_num_put; 194s 1515: 194s 1515: const __num_get_type* _M_num_get; 194s 1515: 194s 1515: public: 194s 1515: # 123 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: explicit operator bool() const 194s 1515: { return !this->fail(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: operator!() const 194s 1515: { return this->fail(); } 194s 1515: # 144 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: iostate 194s 1515: rdstate() const 194s 1515: { return _M_streambuf_state; } 194s 1515: # 156 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: void 194s 1515: clear(iostate __state = goodbit); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: setstate(iostate __state) 194s 1515: { this->clear(this->rdstate() | __state); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_setstate(iostate __state) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: _M_streambuf_state |= __state; 194s 1515: if (this->exceptions() & __state) 194s 1515: { throw; } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: good() const 194s 1515: { return this->rdstate() == 0; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: eof() const 194s 1515: { return (this->rdstate() & eofbit) != 0; } 194s 1515: # 211 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: fail() const 194s 1515: { return (this->rdstate() & (badbit | failbit)) != 0; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: bad() const 194s 1515: { return (this->rdstate() & badbit) != 0; } 194s 1515: # 234 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: iostate 194s 1515: exceptions() const 194s 1515: { return _M_exception; } 194s 1515: # 270 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: void 194s 1515: exceptions(iostate __except) 194s 1515: { 194s 1515: _M_exception = __except; 194s 1515: this->clear(_M_streambuf_state); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: basic_ios(basic_streambuf<_CharT, _Traits>* __sb) 194s 1515: : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), 194s 1515: _M_ctype(0), _M_num_put(0), _M_num_get(0) 194s 1515: { this->init(__sb); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual 194s 1515: ~basic_ios() { } 194s 1515: # 308 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: basic_ostream<_CharT, _Traits>* 194s 1515: tie() const 194s 1515: { return _M_tie; } 194s 1515: # 321 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: basic_ostream<_CharT, _Traits>* 194s 1515: tie(basic_ostream<_CharT, _Traits>* __tiestr) 194s 1515: { 194s 1515: basic_ostream<_CharT, _Traits>* __old = _M_tie; 194s 1515: _M_tie = __tiestr; 194s 1515: return __old; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: basic_streambuf<_CharT, _Traits>* 194s 1515: rdbuf() const 194s 1515: { return _M_streambuf; } 194s 1515: # 362 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: basic_streambuf<_CharT, _Traits>* 194s 1515: rdbuf(basic_streambuf<_CharT, _Traits>* __sb); 194s 1515: # 376 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: basic_ios& 194s 1515: copyfmt(const basic_ios& __rhs); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: char_type 194s 1515: fill() const 194s 1515: { 194s 1515: if (__builtin_expect(!_M_fill_init, false)) 194s 1515: return this->widen(' '); 194s 1515: return _M_fill; 194s 1515: } 194s 1515: # 403 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: char_type 194s 1515: fill(char_type __ch) 194s 1515: { 194s 1515: char_type __old = _M_fill; 194s 1515: _M_fill = __ch; 194s 1515: _M_fill_init = true; 194s 1515: return __old; 194s 1515: } 194s 1515: # 424 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: locale 194s 1515: imbue(const locale& __loc); 194s 1515: # 444 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: char 194s 1515: narrow(char_type __c, char __dfault) const 194s 1515: { return __check_facet(_M_ctype).narrow(__c, __dfault); } 194s 1515: # 463 "/usr/include/c++/15/bits/basic_ios.h" 3 4 194s 1515: char_type 194s 1515: widen(char __c) const 194s 1515: { return __check_facet(_M_ctype).widen(__c); } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_ios() 194s 1515: : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), 194s 1515: _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: init(basic_streambuf<_CharT, _Traits>* __sb); 194s 1515: 194s 1515: 194s 1515: basic_ios(const basic_ios&) = delete; 194s 1515: basic_ios& operator=(const basic_ios&) = delete; 194s 1515: 194s 1515: void 194s 1515: move(basic_ios& __rhs) 194s 1515: { 194s 1515: ios_base::_M_move(__rhs); 194s 1515: _M_cache_locale(_M_ios_locale); 194s 1515: this->tie(__rhs.tie(nullptr)); 194s 1515: _M_fill = __rhs._M_fill; 194s 1515: _M_fill_init = __rhs._M_fill_init; 194s 1515: _M_streambuf = nullptr; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: move(basic_ios&& __rhs) 194s 1515: { this->move(__rhs); } 194s 1515: 194s 1515: void 194s 1515: swap(basic_ios& __rhs) noexcept 194s 1515: { 194s 1515: ios_base::_M_swap(__rhs); 194s 1515: _M_cache_locale(_M_ios_locale); 194s 1515: __rhs._M_cache_locale(__rhs._M_ios_locale); 194s 1515: std::swap(_M_tie, __rhs._M_tie); 194s 1515: std::swap(_M_fill, __rhs._M_fill); 194s 1515: std::swap(_M_fill_init, __rhs._M_fill_init); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb) 194s 1515: { _M_streambuf = __sb; } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_cache_locale(const locale& __loc); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/basic_ios.tcc" 1 3 4 194s 1515: # 37 "/usr/include/c++/15/bits/basic_ios.tcc" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: basic_ios<_CharT, _Traits>::clear(iostate __state) 194s 1515: { 194s 1515: if (this->rdbuf()) 194s 1515: _M_streambuf_state = __state; 194s 1515: else 194s 1515: _M_streambuf_state = __state | badbit; 194s 1515: if (this->exceptions() & this->rdstate()) 194s 1515: __throw_ios_failure(("basic_ios::clear")); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_streambuf<_CharT, _Traits>* 194s 1515: basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) 194s 1515: { 194s 1515: basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; 194s 1515: _M_streambuf = __sb; 194s 1515: this->clear(); 194s 1515: return __old; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ios<_CharT, _Traits>& 194s 1515: basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (this != std::__addressof(__rhs)) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? 194s 1515: _M_local_word : new _Words[__rhs._M_word_size]; 194s 1515: 194s 1515: 194s 1515: _Callback_list* __cb = __rhs._M_callbacks; 194s 1515: if (__cb) 194s 1515: __cb->_M_add_reference(); 194s 1515: _M_call_callbacks(erase_event); 194s 1515: if (_M_word != _M_local_word) 194s 1515: { 194s 1515: delete [] _M_word; 194s 1515: _M_word = 0; 194s 1515: } 194s 1515: _M_dispose_callbacks(); 194s 1515: 194s 1515: 194s 1515: _M_callbacks = __cb; 194s 1515: for (int __i = 0; __i < __rhs._M_word_size; ++__i) 194s 1515: __words[__i] = __rhs._M_word[__i]; 194s 1515: _M_word = __words; 194s 1515: _M_word_size = __rhs._M_word_size; 194s 1515: 194s 1515: this->flags(__rhs.flags()); 194s 1515: this->width(__rhs.width()); 194s 1515: this->precision(__rhs.precision()); 194s 1515: this->tie(__rhs.tie()); 194s 1515: this->fill(__rhs.fill()); 194s 1515: _M_ios_locale = __rhs.getloc(); 194s 1515: _M_cache_locale(_M_ios_locale); 194s 1515: 194s 1515: _M_call_callbacks(copyfmt_event); 194s 1515: 194s 1515: 194s 1515: this->exceptions(__rhs.exceptions()); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: locale 194s 1515: basic_ios<_CharT, _Traits>::imbue(const locale& __loc) 194s 1515: { 194s 1515: locale __old(this->getloc()); 194s 1515: ios_base::imbue(__loc); 194s 1515: _M_cache_locale(__loc); 194s 1515: if (this->rdbuf() != 0) 194s 1515: this->rdbuf()->pubimbue(__loc); 194s 1515: return __old; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) 194s 1515: { 194s 1515: 194s 1515: ios_base::_M_init(); 194s 1515: 194s 1515: 194s 1515: _M_cache_locale(_M_ios_locale); 194s 1515: # 153 "/usr/include/c++/15/bits/basic_ios.tcc" 3 4 194s 1515: if (_M_ctype) 194s 1515: { 194s 1515: _M_fill = _M_ctype->widen(' '); 194s 1515: _M_fill_init = true; 194s 1515: } 194s 1515: else 194s 1515: _M_fill_init = false; 194s 1515: 194s 1515: _M_tie = 0; 194s 1515: _M_exception = goodbit; 194s 1515: _M_streambuf = __sb; 194s 1515: _M_streambuf_state = __sb ? goodbit : badbit; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) 194s 1515: { 194s 1515: _M_ctype = std::__try_use_facet<__ctype_type>(__loc); 194s 1515: _M_num_put = std::__try_use_facet<__num_put_type>(__loc); 194s 1515: _M_num_get = std::__try_use_facet<__num_get_type>(__loc); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern template class basic_ios; 194s 1515: 194s 1515: 194s 1515: extern template class basic_ios; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 532 "/usr/include/c++/15/bits/basic_ios.h" 2 3 4 194s 1515: # 49 "/usr/include/c++/15/ios" 2 3 4 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 52 "/usr/include/c++/15/ios" 2 3 4 194s 1515: # 43 "/usr/include/c++/15/istream" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/ostream" 1 3 4 194s 1515: # 42 "/usr/include/c++/15/ostream" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/ostream.h" 1 3 4 194s 1515: # 47 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 48 "/usr/include/c++/15/bits/ostream.h" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 65 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: template 194s 1515: class basic_ostream : virtual public basic_ios<_CharT, _Traits> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef typename _Traits::int_type int_type; 194s 1515: typedef typename _Traits::pos_type pos_type; 194s 1515: typedef typename _Traits::off_type off_type; 194s 1515: typedef _Traits traits_type; 194s 1515: 194s 1515: 194s 1515: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 194s 1515: typedef basic_ios<_CharT, _Traits> __ios_type; 194s 1515: typedef basic_ostream<_CharT, _Traits> __ostream_type; 194s 1515: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > 194s 1515: __num_put_type; 194s 1515: typedef ctype<_CharT> __ctype_type; 194s 1515: # 91 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: explicit 194s 1515: basic_ostream(__streambuf_type* __sb) 194s 1515: { this->init(__sb); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual 194s 1515: ~basic_ostream() { } 194s 1515: 194s 1515: 194s 1515: class sentry; 194s 1515: friend class sentry; 194s 1515: # 115 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: __ostream_type& 194s 1515: operator<<(__ostream_type& (*__pf)(__ostream_type&)) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return __pf(*this); 194s 1515: } 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(__ios_type& (*__pf)(__ios_type&)) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: __pf(*this); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(ios_base& (*__pf) (ios_base&)) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: __pf(*this); 194s 1515: return *this; 194s 1515: } 194s 1515: # 173 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: __ostream_type& 194s 1515: operator<<(long __n) 194s 1515: { return _M_insert(__n); } 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(unsigned long __n) 194s 1515: { return _M_insert(__n); } 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(bool __n) 194s 1515: { return _M_insert(__n); } 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(short __n); 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(unsigned short __n) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: return _M_insert(static_cast(__n)); 194s 1515: } 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(int __n); 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(unsigned int __n) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: return _M_insert(static_cast(__n)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: __ostream_type& 194s 1515: operator<<(long long __n) 194s 1515: { return _M_insert(__n); } 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(unsigned long long __n) 194s 1515: { return _M_insert(__n); } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 230 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: __ostream_type& 194s 1515: operator<<(double __f) 194s 1515: { return _M_insert(__f); } 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(float __f) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: return _M_insert(_S_cast_flt(__f)); 194s 1515: } 194s 1515: 194s 1515: __ostream_type& 194s 1515: operator<<(long double __f) 194s 1515: { return _M_insert(__f); } 194s 1515: # 300 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: __ostream_type& 194s 1515: operator<<(const void* __p) 194s 1515: { return _M_insert(__p); } 194s 1515: # 338 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: __ostream_type& 194s 1515: operator<<(__streambuf_type* __sb); 194s 1515: # 371 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: __ostream_type& 194s 1515: put(char_type __c); 194s 1515: # 390 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: __ostream_type& 194s 1515: write(const char_type* __s, streamsize __n); 194s 1515: # 403 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: __ostream_type& 194s 1515: flush(); 194s 1515: # 413 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: pos_type 194s 1515: tellp(); 194s 1515: # 424 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: __ostream_type& 194s 1515: seekp(pos_type); 194s 1515: # 436 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: __ostream_type& 194s 1515: seekp(off_type, ios_base::seekdir); 194s 1515: 194s 1515: protected: 194s 1515: basic_ostream() 194s 1515: { this->init(0); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_ostream(basic_iostream<_CharT, _Traits>&) { } 194s 1515: 194s 1515: basic_ostream(const basic_ostream&) = delete; 194s 1515: 194s 1515: basic_ostream(basic_ostream&& __rhs) 194s 1515: : __ios_type() 194s 1515: { __ios_type::move(__rhs); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_ostream& operator=(const basic_ostream&) = delete; 194s 1515: 194s 1515: basic_ostream& 194s 1515: operator=(basic_ostream&& __rhs) 194s 1515: { 194s 1515: swap(__rhs); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(basic_ostream& __rhs) 194s 1515: { __ios_type::swap(__rhs); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __ostream_type& 194s 1515: _M_insert(_ValueT __v); 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: void 194s 1515: _M_write(const char_type* __s, streamsize __n) 194s 1515: { std::__ostream_insert(*this, __s, __n); } 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template 194s 1515: static _To 194s 1515: _S_cast_flt(_From __f) 194s 1515: { 194s 1515: _To __d = static_cast<_To>(__f); 194s 1515: # 507 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: return __d; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: struct _Disable_exceptions 194s 1515: { 194s 1515: _Disable_exceptions(basic_ostream& __os) 194s 1515: : _M_os(__os), _M_exception(_M_os._M_exception) 194s 1515: { _M_os._M_exception = ios_base::goodbit; } 194s 1515: 194s 1515: ~_Disable_exceptions() 194s 1515: { _M_os._M_exception = _M_exception; } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: _Disable_exceptions(const _Disable_exceptions&) = delete; 194s 1515: _Disable_exceptions& operator=(const _Disable_exceptions&) = delete; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: private: 194s 1515: basic_ostream& _M_os; 194s 1515: const ios_base::iostate _M_exception; 194s 1515: }; 194s 1515: }; 194s 1515: # 540 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: template 194s 1515: class basic_ostream<_CharT, _Traits>::sentry 194s 1515: { 194s 1515: 194s 1515: bool _M_ok; 194s 1515: basic_ostream<_CharT, _Traits>& _M_os; 194s 1515: 194s 1515: public: 194s 1515: # 559 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: explicit 194s 1515: sentry(basic_ostream<_CharT, _Traits>& __os); 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ~sentry() 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (bool(_M_os.flags() & ios_base::unitbuf) && _M_os.good() 194s 1515: && !uncaught_exception()) 194s 1515: { 194s 1515: _Disable_exceptions __noex(_M_os); 194s 1515: try 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) 194s 1515: _M_os.setstate(ios_base::badbit); 194s 1515: } 194s 1515: catch(...) 194s 1515: { _M_os.setstate(ios_base::badbit); } 194s 1515: } 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 602 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: explicit 194s 1515: 194s 1515: operator bool() const 194s 1515: { return _M_ok; } 194s 1515: }; 194s 1515: # 624 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) 194s 1515: { 194s 1515: if (__out.width() != 0) 194s 1515: return __ostream_insert(__out, &__c, 1); 194s 1515: __out.put(__c); 194s 1515: return __out; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) 194s 1515: { return (__out << __out.widen(__c)); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream& 194s 1515: operator<<(basic_ostream& __out, char __c) 194s 1515: { 194s 1515: if (__out.width() != 0) 194s 1515: return __ostream_insert(__out, &__c, 1); 194s 1515: __out.put(__c); 194s 1515: return __out; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream& 194s 1515: operator<<(basic_ostream& __out, signed char __c) 194s 1515: { return (__out << static_cast(__c)); } 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream& 194s 1515: operator<<(basic_ostream& __out, unsigned char __c) 194s 1515: { return (__out << static_cast(__c)); } 194s 1515: # 715 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) 194s 1515: { 194s 1515: if (!__s) 194s 1515: __out.setstate(ios_base::badbit); 194s 1515: else 194s 1515: __ostream_insert(__out, __s, 194s 1515: static_cast(_Traits::length(__s))); 194s 1515: return __out; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits> & 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream& 194s 1515: operator<<(basic_ostream& __out, const char* __s) 194s 1515: { 194s 1515: if (!__s) 194s 1515: __out.setstate(ios_base::badbit); 194s 1515: else 194s 1515: __ostream_insert(__out, __s, 194s 1515: static_cast(_Traits::length(__s))); 194s 1515: return __out; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream& 194s 1515: operator<<(basic_ostream& __out, const signed char* __s) 194s 1515: { return (__out << reinterpret_cast(__s)); } 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream & 194s 1515: operator<<(basic_ostream& __out, const unsigned char* __s) 194s 1515: { return (__out << reinterpret_cast(__s)); } 194s 1515: # 812 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: template 194s 1515: using _Require_derived_from_ios_base 194s 1515: = _Require, __not_>, 194s 1515: is_convertible::type, ios_base*>>; 194s 1515: 194s 1515: template, 194s 1515: typename 194s 1515: = decltype(std::declval<_Os&>() << std::declval())> 194s 1515: using __rvalue_stream_insertion_t = _Os&&; 194s 1515: # 834 "/usr/include/c++/15/bits/ostream.h" 3 4 194s 1515: template 194s 1515: inline __rvalue_stream_insertion_t<_Ostream, _Tp> 194s 1515: operator<<(_Ostream&& __os, const _Tp& __x) 194s 1515: { 194s 1515: __os << __x; 194s 1515: return std::move(__os); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 43 "/usr/include/c++/15/ostream" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 49 "/usr/include/c++/15/ostream" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 64 "/usr/include/c++/15/ostream" 3 4 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: endl(basic_ostream<_CharT, _Traits>& __os) 194s 1515: { return flush(__os.put(__os.widen('\n'))); } 194s 1515: # 76 "/usr/include/c++/15/ostream" 3 4 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: ends(basic_ostream<_CharT, _Traits>& __os) 194s 1515: { return __os.put(_CharT()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: flush(basic_ostream<_CharT, _Traits>& __os) 194s 1515: { return __os.flush(); } 194s 1515: # 291 "/usr/include/c++/15/ostream" 3 4 194s 1515: 194s 1515: } 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/ostream.tcc" 1 3 4 194s 1515: # 40 "/usr/include/c++/15/bits/ostream.tcc" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>::sentry:: 194s 1515: sentry(basic_ostream<_CharT, _Traits>& __os) 194s 1515: : _M_ok(false), _M_os(__os) 194s 1515: { 194s 1515: 194s 1515: if (__os.tie() && __os.good()) 194s 1515: __os.tie()->flush(); 194s 1515: 194s 1515: if (__os.good()) 194s 1515: _M_ok = true; 194s 1515: else if (__os.bad()) 194s 1515: __os.setstate(ios_base::failbit); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: basic_ostream<_CharT, _Traits>:: 194s 1515: _M_insert(_ValueT __v) 194s 1515: { 194s 1515: sentry __cerb(*this); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: 194s 1515: const __num_put_type& __np = __check_facet(this->_M_num_put); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__np.put(*this, *this, this->fill(), __v).failed()) 194s 1515: __err |= ios_base::badbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: basic_ostream<_CharT, _Traits>:: 194s 1515: operator<<(short __n) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; 194s 1515: if (__fmt == ios_base::oct || __fmt == ios_base::hex) 194s 1515: return _M_insert(static_cast(static_cast(__n))); 194s 1515: else 194s 1515: return _M_insert(static_cast(__n)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: basic_ostream<_CharT, _Traits>:: 194s 1515: operator<<(int __n) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; 194s 1515: if (__fmt == ios_base::oct || __fmt == ios_base::hex) 194s 1515: return _M_insert(static_cast(static_cast(__n))); 194s 1515: else 194s 1515: return _M_insert(static_cast(__n)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: basic_ostream<_CharT, _Traits>:: 194s 1515: operator<<(__streambuf_type* __sbin) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: sentry __cerb(*this); 194s 1515: if (__cerb && __sbin) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: if (!__copy_streambufs(__sbin, this->rdbuf())) 194s 1515: __err |= ios_base::failbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::failbit); } 194s 1515: } 194s 1515: else if (!__sbin) 194s 1515: __err |= ios_base::badbit; 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: basic_ostream<_CharT, _Traits>:: 194s 1515: put(char_type __c) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: sentry __cerb(*this); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: const int_type __put = this->rdbuf()->sputc(__c); 194s 1515: if (traits_type::eq_int_type(__put, traits_type::eof())) 194s 1515: __err |= ios_base::badbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: basic_ostream<_CharT, _Traits>:: 194s 1515: write(const _CharT* __s, streamsize __n) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: sentry __cerb(*this); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: if (this->rdbuf()->sputn(__s, __n) != __n) 194s 1515: __err = ios_base::badbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(ios_base::badbit); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: basic_ostream<_CharT, _Traits>:: 194s 1515: flush() 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__streambuf_type* __buf = this->rdbuf()) 194s 1515: { 194s 1515: sentry __cerb(*this); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: if (this->rdbuf()->pubsync() == -1) 194s 1515: __err |= ios_base::badbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_ostream<_CharT, _Traits>::pos_type 194s 1515: basic_ostream<_CharT, _Traits>:: 194s 1515: tellp() 194s 1515: { 194s 1515: sentry __cerb(*this); 194s 1515: pos_type __ret = pos_type(-1); 194s 1515: if (!this->fail()) 194s 1515: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: basic_ostream<_CharT, _Traits>:: 194s 1515: seekp(pos_type __pos) 194s 1515: { 194s 1515: sentry __cerb(*this); 194s 1515: if (!this->fail()) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const pos_type __p = this->rdbuf()->pubseekpos(__pos, ios_base::out); 194s 1515: 194s 1515: 194s 1515: if (__p == pos_type(off_type(-1))) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: basic_ostream<_CharT, _Traits>:: 194s 1515: seekp(off_type __off, ios_base::seekdir __dir) 194s 1515: { 194s 1515: sentry __cerb(*this); 194s 1515: if (!this->fail()) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, 194s 1515: ios_base::out); 194s 1515: 194s 1515: 194s 1515: if (__p == pos_type(off_type(-1))) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) 194s 1515: { 194s 1515: if (!__s) 194s 1515: __out.setstate(ios_base::badbit); 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const size_t __clen = char_traits::length(__s); 194s 1515: try 194s 1515: { 194s 1515: struct __ptr_guard 194s 1515: { 194s 1515: _CharT *__p; 194s 1515: __ptr_guard (_CharT *__ip): __p(__ip) { } 194s 1515: ~__ptr_guard() { delete[] __p; } 194s 1515: _CharT* __get() { return __p; } 194s 1515: } __pg (new _CharT[__clen]); 194s 1515: 194s 1515: _CharT *__ws = __pg.__get(); 194s 1515: for (size_t __i = 0; __i < __clen; ++__i) 194s 1515: __ws[__i] = __out.widen(__s[__i]); 194s 1515: __ostream_insert(__out, __ws, __clen); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __out._M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { __out._M_setstate(ios_base::badbit); } 194s 1515: } 194s 1515: return __out; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern template class basic_ostream; 194s 1515: extern template ostream& endl(ostream&); 194s 1515: extern template ostream& ends(ostream&); 194s 1515: extern template ostream& flush(ostream&); 194s 1515: extern template ostream& operator<<(ostream&, char); 194s 1515: extern template ostream& operator<<(ostream&, unsigned char); 194s 1515: extern template ostream& operator<<(ostream&, signed char); 194s 1515: extern template ostream& operator<<(ostream&, const char*); 194s 1515: extern template ostream& operator<<(ostream&, const unsigned char*); 194s 1515: extern template ostream& operator<<(ostream&, const signed char*); 194s 1515: 194s 1515: extern template ostream& ostream::_M_insert(long); 194s 1515: extern template ostream& ostream::_M_insert(unsigned long); 194s 1515: extern template ostream& ostream::_M_insert(bool); 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: extern template ostream& ostream::_M_insert(long long); 194s 1515: extern template ostream& ostream::_M_insert(unsigned long long); 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: extern template ostream& ostream::_M_insert(double); 194s 1515: extern template ostream& ostream::_M_insert(long double); 194s 1515: extern template ostream& ostream::_M_insert(const void*); 194s 1515: 194s 1515: 194s 1515: extern template class basic_ostream; 194s 1515: extern template wostream& endl(wostream&); 194s 1515: extern template wostream& ends(wostream&); 194s 1515: extern template wostream& flush(wostream&); 194s 1515: extern template wostream& operator<<(wostream&, wchar_t); 194s 1515: extern template wostream& operator<<(wostream&, char); 194s 1515: extern template wostream& operator<<(wostream&, const wchar_t*); 194s 1515: extern template wostream& operator<<(wostream&, const char*); 194s 1515: 194s 1515: extern template wostream& wostream::_M_insert(long); 194s 1515: extern template wostream& wostream::_M_insert(unsigned long); 194s 1515: extern template wostream& wostream::_M_insert(bool); 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: extern template wostream& wostream::_M_insert(long long); 194s 1515: extern template wostream& wostream::_M_insert(unsigned long long); 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: extern template wostream& wostream::_M_insert(double); 194s 1515: extern template wostream& wostream::_M_insert(long double); 194s 1515: extern template wostream& wostream::_M_insert(const void*); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 295 "/usr/include/c++/15/ostream" 2 3 4 194s 1515: # 44 "/usr/include/c++/15/istream" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 61 "/usr/include/c++/15/istream" 3 4 194s 1515: template 194s 1515: class basic_istream : virtual public basic_ios<_CharT, _Traits> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef typename _Traits::int_type int_type; 194s 1515: typedef typename _Traits::pos_type pos_type; 194s 1515: typedef typename _Traits::off_type off_type; 194s 1515: typedef _Traits traits_type; 194s 1515: 194s 1515: 194s 1515: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 194s 1515: typedef basic_ios<_CharT, _Traits> __ios_type; 194s 1515: typedef basic_istream<_CharT, _Traits> __istream_type; 194s 1515: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > 194s 1515: __num_get_type; 194s 1515: typedef ctype<_CharT> __ctype_type; 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: streamsize _M_gcount; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: basic_istream(__streambuf_type* __sb) 194s 1515: : _M_gcount(streamsize(0)) 194s 1515: { this->init(__sb); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual 194s 1515: ~basic_istream() 194s 1515: { _M_gcount = streamsize(0); } 194s 1515: 194s 1515: 194s 1515: class sentry; 194s 1515: friend class sentry; 194s 1515: # 123 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: operator>>(__istream_type& (*__pf)(__istream_type&)) 194s 1515: { return __pf(*this); } 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(__ios_type& (*__pf)(__ios_type&)) 194s 1515: { 194s 1515: __pf(*this); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(ios_base& (*__pf)(ios_base&)) 194s 1515: { 194s 1515: __pf(*this); 194s 1515: return *this; 194s 1515: } 194s 1515: # 171 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: operator>>(bool& __n) 194s 1515: { return _M_extract(__n); } 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(short& __n); 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(unsigned short& __n) 194s 1515: { return _M_extract(__n); } 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(int& __n); 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(unsigned int& __n) 194s 1515: { return _M_extract(__n); } 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(long& __n) 194s 1515: { return _M_extract(__n); } 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(unsigned long& __n) 194s 1515: { return _M_extract(__n); } 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: __istream_type& 194s 1515: operator>>(long long& __n) 194s 1515: { return _M_extract(__n); } 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(unsigned long long& __n) 194s 1515: { return _M_extract(__n); } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 220 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: operator>>(float& __f) 194s 1515: { return _M_extract(__f); } 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(double& __f) 194s 1515: { return _M_extract(__f); } 194s 1515: 194s 1515: __istream_type& 194s 1515: operator>>(long double& __f) 194s 1515: { return _M_extract(__f); } 194s 1515: # 329 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: operator>>(void*& __p) 194s 1515: { return _M_extract(__p); } 194s 1515: # 353 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: operator>>(__streambuf_type* __sb); 194s 1515: # 363 "/usr/include/c++/15/istream" 3 4 194s 1515: streamsize 194s 1515: gcount() const 194s 1515: { return _M_gcount; } 194s 1515: # 396 "/usr/include/c++/15/istream" 3 4 194s 1515: int_type 194s 1515: get(); 194s 1515: # 410 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: get(char_type& __c); 194s 1515: # 437 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: get(char_type* __s, streamsize __n, char_type __delim); 194s 1515: # 448 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: get(char_type* __s, streamsize __n) 194s 1515: { return this->get(__s, __n, this->widen('\n')); } 194s 1515: # 471 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: get(__streambuf_type& __sb, char_type __delim); 194s 1515: # 481 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: get(__streambuf_type& __sb) 194s 1515: { return this->get(__sb, this->widen('\n')); } 194s 1515: # 510 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: getline(char_type* __s, streamsize __n, char_type __delim); 194s 1515: # 521 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: getline(char_type* __s, streamsize __n) 194s 1515: { return this->getline(__s, __n, this->widen('\n')); } 194s 1515: # 545 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: ignore(streamsize __n, int_type __delim); 194s 1515: 194s 1515: __istream_type& 194s 1515: ignore(streamsize __n); 194s 1515: 194s 1515: __istream_type& 194s 1515: ignore(); 194s 1515: # 562 "/usr/include/c++/15/istream" 3 4 194s 1515: int_type 194s 1515: peek(); 194s 1515: # 580 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: read(char_type* __s, streamsize __n); 194s 1515: # 599 "/usr/include/c++/15/istream" 3 4 194s 1515: streamsize 194s 1515: readsome(char_type* __s, streamsize __n); 194s 1515: # 616 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: putback(char_type __c); 194s 1515: # 632 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: unget(); 194s 1515: # 650 "/usr/include/c++/15/istream" 3 4 194s 1515: int 194s 1515: sync(); 194s 1515: # 665 "/usr/include/c++/15/istream" 3 4 194s 1515: pos_type 194s 1515: tellg(); 194s 1515: # 680 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: seekg(pos_type); 194s 1515: # 696 "/usr/include/c++/15/istream" 3 4 194s 1515: __istream_type& 194s 1515: seekg(off_type, ios_base::seekdir); 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: basic_istream() 194s 1515: : _M_gcount(streamsize(0)) 194s 1515: { this->init(0); } 194s 1515: 194s 1515: 194s 1515: basic_istream(const basic_istream&) = delete; 194s 1515: 194s 1515: basic_istream(basic_istream&& __rhs) 194s 1515: : __ios_type(), _M_gcount(__rhs._M_gcount) 194s 1515: { 194s 1515: __ios_type::move(__rhs); 194s 1515: __rhs._M_gcount = 0; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_istream& operator=(const basic_istream&) = delete; 194s 1515: 194s 1515: basic_istream& 194s 1515: operator=(basic_istream&& __rhs) 194s 1515: { 194s 1515: swap(__rhs); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(basic_istream& __rhs) 194s 1515: { 194s 1515: __ios_type::swap(__rhs); 194s 1515: std::swap(_M_gcount, __rhs._M_gcount); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __istream_type& 194s 1515: _M_extract(_ValueT& __v); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: basic_istream& 194s 1515: basic_istream:: 194s 1515: getline(char_type* __s, streamsize __n, char_type __delim); 194s 1515: 194s 1515: template<> 194s 1515: basic_istream& 194s 1515: basic_istream:: 194s 1515: ignore(streamsize __n); 194s 1515: 194s 1515: template<> 194s 1515: basic_istream& 194s 1515: basic_istream:: 194s 1515: ignore(streamsize __n, int_type __delim); 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: basic_istream& 194s 1515: basic_istream:: 194s 1515: getline(char_type* __s, streamsize __n, char_type __delim); 194s 1515: 194s 1515: template<> 194s 1515: basic_istream& 194s 1515: basic_istream:: 194s 1515: ignore(streamsize __n); 194s 1515: 194s 1515: template<> 194s 1515: basic_istream& 194s 1515: basic_istream:: 194s 1515: ignore(streamsize __n, int_type __delim); 194s 1515: # 780 "/usr/include/c++/15/istream" 3 4 194s 1515: template 194s 1515: class basic_istream<_CharT, _Traits>::sentry 194s 1515: { 194s 1515: 194s 1515: bool _M_ok; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: typedef _Traits traits_type; 194s 1515: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 194s 1515: typedef basic_istream<_CharT, _Traits> __istream_type; 194s 1515: typedef typename __istream_type::__ctype_type __ctype_type; 194s 1515: typedef typename _Traits::int_type __int_type; 194s 1515: # 816 "/usr/include/c++/15/istream" 3 4 194s 1515: explicit 194s 1515: sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); 194s 1515: # 827 "/usr/include/c++/15/istream" 3 4 194s 1515: explicit 194s 1515: 194s 1515: operator bool() const 194s 1515: { return _M_ok; } 194s 1515: }; 194s 1515: # 845 "/usr/include/c++/15/istream" 3 4 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); 194s 1515: 194s 1515: template 194s 1515: inline basic_istream& 194s 1515: operator>>(basic_istream& __in, unsigned char& __c) 194s 1515: { return (__in >> reinterpret_cast(__c)); } 194s 1515: 194s 1515: template 194s 1515: inline basic_istream& 194s 1515: operator>>(basic_istream& __in, signed char& __c) 194s 1515: { return (__in >> reinterpret_cast(__c)); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __istream_extract(basic_istream<_CharT, _Traits>&, _CharT*, streamsize); 194s 1515: 194s 1515: void __istream_extract(istream&, char*, streamsize); 194s 1515: # 895 "/usr/include/c++/15/istream" 3 4 194s 1515: template 194s 1515: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) 194s 1515: inline basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_t __n = __builtin_object_size(__s, 0); 194s 1515: if (__n < sizeof(_CharT)) 194s 1515: { 194s 1515: 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__n >= sizeof(_CharT))) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: __in.width(0); 194s 1515: __in.setstate(ios_base::failbit); 194s 1515: } 194s 1515: else if (__n != (size_t)-1) 194s 1515: { 194s 1515: __n /= sizeof(_CharT); 194s 1515: streamsize __w = __in.width(); 194s 1515: std::__istream_extract(__in, __s, __n); 194s 1515: if (__in.good() && (__w <= 0 || __n < (size_t)__w)) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const typename _Traits::int_type __c = __in.rdbuf()->sgetc(); 194s 1515: const bool __eof = _Traits::eq_int_type(__c, _Traits::eof()); 194s 1515: if (__builtin_expect(__eof, true)) 194s 1515: __in.setstate(ios_base::eofbit); 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: 194s 1515: { 194s 1515: 194s 1515: streamsize __n = __gnu_cxx::__numeric_traits::__max; 194s 1515: __n /= sizeof(_CharT); 194s 1515: std::__istream_extract(__in, __s, __n); 194s 1515: } 194s 1515: return __in; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) 194s 1515: inline basic_istream& 194s 1515: operator>>(basic_istream& __in, unsigned char* __s) 194s 1515: { return __in >> reinterpret_cast(__s); } 194s 1515: 194s 1515: template 194s 1515: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) 194s 1515: inline basic_istream& 194s 1515: operator>>(basic_istream& __in, signed char* __s) 194s 1515: { return __in >> reinterpret_cast(__s); } 194s 1515: # 984 "/usr/include/c++/15/istream" 3 4 194s 1515: template 194s 1515: class basic_iostream 194s 1515: : public basic_istream<_CharT, _Traits>, 194s 1515: public basic_ostream<_CharT, _Traits> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef typename _Traits::int_type int_type; 194s 1515: typedef typename _Traits::pos_type pos_type; 194s 1515: typedef typename _Traits::off_type off_type; 194s 1515: typedef _Traits traits_type; 194s 1515: 194s 1515: 194s 1515: typedef basic_istream<_CharT, _Traits> __istream_type; 194s 1515: typedef basic_ostream<_CharT, _Traits> __ostream_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) 194s 1515: : __istream_type(__sb), __ostream_type(__sb) { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual 194s 1515: ~basic_iostream() { } 194s 1515: 194s 1515: protected: 194s 1515: basic_iostream() 194s 1515: : __istream_type(), __ostream_type() { } 194s 1515: 194s 1515: 194s 1515: basic_iostream(const basic_iostream&) = delete; 194s 1515: 194s 1515: basic_iostream(basic_iostream&& __rhs) 194s 1515: : __istream_type(std::move(__rhs)), __ostream_type(*this) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_iostream& operator=(const basic_iostream&) = delete; 194s 1515: 194s 1515: basic_iostream& 194s 1515: operator=(basic_iostream&& __rhs) 194s 1515: { 194s 1515: swap(__rhs); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(basic_iostream& __rhs) 194s 1515: { __istream_type::swap(__rhs); } 194s 1515: 194s 1515: }; 194s 1515: # 1067 "/usr/include/c++/15/istream" 3 4 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: ws(basic_istream<_CharT, _Traits>& __is); 194s 1515: # 1083 "/usr/include/c++/15/istream" 3 4 194s 1515: template, 194s 1515: typename = decltype(std::declval<_Is&>() >> std::declval<_Tp>())> 194s 1515: using __rvalue_stream_extraction_t = _Is&&; 194s 1515: # 1099 "/usr/include/c++/15/istream" 3 4 194s 1515: template 194s 1515: inline __rvalue_stream_extraction_t<_Istream, _Tp> 194s 1515: operator>>(_Istream&& __is, _Tp&& __x) 194s 1515: { 194s 1515: __is >> std::forward<_Tp>(__x); 194s 1515: return std::move(__is); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/istream.tcc" 1 3 4 194s 1515: # 41 "/usr/include/c++/15/bits/istream.tcc" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>::sentry:: 194s 1515: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: if (__in.good()) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: if (__in.tie()) 194s 1515: __in.tie()->flush(); 194s 1515: if (!__noskip && bool(__in.flags() & ios_base::skipws)) 194s 1515: { 194s 1515: const __int_type __eof = traits_type::eof(); 194s 1515: __streambuf_type* __sb = __in.rdbuf(); 194s 1515: __int_type __c = __sb->sgetc(); 194s 1515: 194s 1515: const __ctype_type& __ct = __check_facet(__in._M_ctype); 194s 1515: while (!traits_type::eq_int_type(__c, __eof) 194s 1515: && __ct.is(ctype_base::space, 194s 1515: traits_type::to_char_type(__c))) 194s 1515: __c = __sb->snextc(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (traits_type::eq_int_type(__c, __eof)) 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __in._M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { __in._M_setstate(ios_base::badbit); } 194s 1515: } 194s 1515: 194s 1515: if (__in.good() && __err == ios_base::goodbit) 194s 1515: _M_ok = true; 194s 1515: else 194s 1515: { 194s 1515: __err |= ios_base::failbit; 194s 1515: __in.setstate(__err); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: _M_extract(_ValueT& __v) 194s 1515: { 194s 1515: sentry __cerb(*this, false); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: 194s 1515: const __num_get_type& __ng = __check_facet(this->_M_num_get); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __ng.get(*this, 0, *this, __err, __v); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: operator>>(short& __n) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: sentry __cerb(*this, false); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: long __l; 194s 1515: 194s 1515: const __num_get_type& __ng = __check_facet(this->_M_num_get); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __ng.get(*this, 0, *this, __err, __l); 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__l < __gnu_cxx::__numeric_traits::__min) 194s 1515: { 194s 1515: __err |= ios_base::failbit; 194s 1515: __n = __gnu_cxx::__numeric_traits::__min; 194s 1515: } 194s 1515: else if (__l > __gnu_cxx::__numeric_traits::__max) 194s 1515: { 194s 1515: __err |= ios_base::failbit; 194s 1515: __n = __gnu_cxx::__numeric_traits::__max; 194s 1515: } 194s 1515: else 194s 1515: __n = short(__l); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: operator>>(int& __n) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: sentry __cerb(*this, false); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: long __l; 194s 1515: 194s 1515: const __num_get_type& __ng = __check_facet(this->_M_num_get); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __ng.get(*this, 0, *this, __err, __l); 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__l < __gnu_cxx::__numeric_traits::__min) 194s 1515: { 194s 1515: __err |= ios_base::failbit; 194s 1515: __n = __gnu_cxx::__numeric_traits::__min; 194s 1515: } 194s 1515: else if (__l > __gnu_cxx::__numeric_traits::__max) 194s 1515: { 194s 1515: __err |= ios_base::failbit; 194s 1515: __n = __gnu_cxx::__numeric_traits::__max; 194s 1515: } 194s 1515: else 194s 1515: __n = int(__l); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: operator>>(__streambuf_type* __sbout) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: sentry __cerb(*this, false); 194s 1515: if (__cerb && __sbout) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: bool __ineof; 194s 1515: if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) 194s 1515: __err |= ios_base::failbit; 194s 1515: if (__ineof) 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::failbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::failbit); } 194s 1515: } 194s 1515: else if (!__sbout) 194s 1515: __err |= ios_base::failbit; 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_istream<_CharT, _Traits>::int_type 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: get(void) 194s 1515: { 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: int_type __c = __eof; 194s 1515: _M_gcount = 0; 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: __c = this->rdbuf()->sbumpc(); 194s 1515: 194s 1515: if (!traits_type::eq_int_type(__c, __eof)) 194s 1515: _M_gcount = 1; 194s 1515: else 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: } 194s 1515: if (!_M_gcount) 194s 1515: __err |= ios_base::failbit; 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: return __c; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: get(char_type& __c) 194s 1515: { 194s 1515: _M_gcount = 0; 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: const int_type __cb = this->rdbuf()->sbumpc(); 194s 1515: 194s 1515: if (!traits_type::eq_int_type(__cb, traits_type::eof())) 194s 1515: { 194s 1515: _M_gcount = 1; 194s 1515: __c = traits_type::to_char_type(__cb); 194s 1515: } 194s 1515: else 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: } 194s 1515: if (!_M_gcount) 194s 1515: __err |= ios_base::failbit; 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: get(char_type* __s, streamsize __n, char_type __delim) 194s 1515: { 194s 1515: _M_gcount = 0; 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: const int_type __idelim = traits_type::to_int_type(__delim); 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: __streambuf_type* __sb = this->rdbuf(); 194s 1515: int_type __c = __sb->sgetc(); 194s 1515: 194s 1515: while (_M_gcount + 1 < __n 194s 1515: && !traits_type::eq_int_type(__c, __eof) 194s 1515: && !traits_type::eq_int_type(__c, __idelim)) 194s 1515: { 194s 1515: *__s++ = traits_type::to_char_type(__c); 194s 1515: ++_M_gcount; 194s 1515: __c = __sb->snextc(); 194s 1515: } 194s 1515: if (traits_type::eq_int_type(__c, __eof)) 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (__n > 0) 194s 1515: *__s = char_type(); 194s 1515: if (!_M_gcount) 194s 1515: __err |= ios_base::failbit; 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: get(__streambuf_type& __sb, char_type __delim) 194s 1515: { 194s 1515: _M_gcount = 0; 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: const int_type __idelim = traits_type::to_int_type(__delim); 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: __streambuf_type* __this_sb = this->rdbuf(); 194s 1515: int_type __c = __this_sb->sgetc(); 194s 1515: char_type __c2 = traits_type::to_char_type(__c); 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: unsigned long long __gcount = 0; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: while (!traits_type::eq_int_type(__c, __eof) 194s 1515: && !traits_type::eq_int_type(__c, __idelim) 194s 1515: && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) 194s 1515: { 194s 1515: ++__gcount; 194s 1515: __c = __this_sb->snextc(); 194s 1515: __c2 = traits_type::to_char_type(__c); 194s 1515: } 194s 1515: if (traits_type::eq_int_type(__c, __eof)) 194s 1515: __err |= ios_base::eofbit; 194s 1515: 194s 1515: 194s 1515: if (__gcount <= __gnu_cxx::__numeric_traits::__max) 194s 1515: _M_gcount = __gcount; 194s 1515: else 194s 1515: _M_gcount = __gnu_cxx::__numeric_traits::__max; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: } 194s 1515: if (!_M_gcount) 194s 1515: __err |= ios_base::failbit; 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: getline(char_type* __s, streamsize __n, char_type __delim) 194s 1515: { 194s 1515: _M_gcount = 0; 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: const int_type __idelim = traits_type::to_int_type(__delim); 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: __streambuf_type* __sb = this->rdbuf(); 194s 1515: int_type __c = __sb->sgetc(); 194s 1515: 194s 1515: while (_M_gcount + 1 < __n 194s 1515: && !traits_type::eq_int_type(__c, __eof) 194s 1515: && !traits_type::eq_int_type(__c, __idelim)) 194s 1515: { 194s 1515: *__s++ = traits_type::to_char_type(__c); 194s 1515: __c = __sb->snextc(); 194s 1515: ++_M_gcount; 194s 1515: } 194s 1515: if (traits_type::eq_int_type(__c, __eof)) 194s 1515: __err |= ios_base::eofbit; 194s 1515: else 194s 1515: { 194s 1515: if (traits_type::eq_int_type(__c, __idelim)) 194s 1515: { 194s 1515: __sb->sbumpc(); 194s 1515: ++_M_gcount; 194s 1515: } 194s 1515: else 194s 1515: __err |= ios_base::failbit; 194s 1515: } 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (__n > 0) 194s 1515: *__s = char_type(); 194s 1515: if (!_M_gcount) 194s 1515: __err |= ios_base::failbit; 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: ignore(void) 194s 1515: { 194s 1515: _M_gcount = 0; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: __streambuf_type* __sb = this->rdbuf(); 194s 1515: 194s 1515: if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) 194s 1515: __err |= ios_base::eofbit; 194s 1515: else 194s 1515: _M_gcount = 1; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: ignore(streamsize __n) 194s 1515: { 194s 1515: _M_gcount = 0; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb && __n > 0) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: __streambuf_type* __sb = this->rdbuf(); 194s 1515: int_type __c = __sb->sgetc(); 194s 1515: # 553 "/usr/include/c++/15/bits/istream.tcc" 3 4 194s 1515: bool __large_ignore = false; 194s 1515: while (true) 194s 1515: { 194s 1515: while (_M_gcount < __n 194s 1515: && !traits_type::eq_int_type(__c, __eof)) 194s 1515: { 194s 1515: ++_M_gcount; 194s 1515: __c = __sb->snextc(); 194s 1515: } 194s 1515: if (__n == __gnu_cxx::__numeric_traits::__max 194s 1515: && !traits_type::eq_int_type(__c, __eof)) 194s 1515: { 194s 1515: _M_gcount = 194s 1515: __gnu_cxx::__numeric_traits::__min; 194s 1515: __large_ignore = true; 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: if (__n == __gnu_cxx::__numeric_traits::__max) 194s 1515: { 194s 1515: if (__large_ignore) 194s 1515: _M_gcount = __gnu_cxx::__numeric_traits::__max; 194s 1515: 194s 1515: if (traits_type::eq_int_type(__c, __eof)) 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: else if (_M_gcount < __n) 194s 1515: { 194s 1515: if (traits_type::eq_int_type(__c, __eof)) 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: ignore(streamsize __n, int_type __delim) 194s 1515: { 194s 1515: _M_gcount = 0; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb && __n > 0) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: __streambuf_type* __sb = this->rdbuf(); 194s 1515: int_type __c = __sb->sgetc(); 194s 1515: 194s 1515: 194s 1515: bool __large_ignore = false; 194s 1515: while (true) 194s 1515: { 194s 1515: while (_M_gcount < __n 194s 1515: && !traits_type::eq_int_type(__c, __eof) 194s 1515: && !traits_type::eq_int_type(__c, __delim)) 194s 1515: { 194s 1515: ++_M_gcount; 194s 1515: __c = __sb->snextc(); 194s 1515: } 194s 1515: if (__n == __gnu_cxx::__numeric_traits::__max 194s 1515: && !traits_type::eq_int_type(__c, __eof) 194s 1515: && !traits_type::eq_int_type(__c, __delim)) 194s 1515: { 194s 1515: _M_gcount = 194s 1515: __gnu_cxx::__numeric_traits::__min; 194s 1515: __large_ignore = true; 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: if (__n == __gnu_cxx::__numeric_traits::__max) 194s 1515: { 194s 1515: if (__large_ignore) 194s 1515: _M_gcount = __gnu_cxx::__numeric_traits::__max; 194s 1515: 194s 1515: if (traits_type::eq_int_type(__c, __eof)) 194s 1515: __err |= ios_base::eofbit; 194s 1515: else 194s 1515: { 194s 1515: if (_M_gcount != __n) 194s 1515: ++_M_gcount; 194s 1515: __sb->sbumpc(); 194s 1515: } 194s 1515: } 194s 1515: else if (_M_gcount < __n) 194s 1515: { 194s 1515: if (traits_type::eq_int_type(__c, __eof)) 194s 1515: __err |= ios_base::eofbit; 194s 1515: else 194s 1515: { 194s 1515: ++_M_gcount; 194s 1515: __sb->sbumpc(); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_istream<_CharT, _Traits>::int_type 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: peek(void) 194s 1515: { 194s 1515: int_type __c = traits_type::eof(); 194s 1515: _M_gcount = 0; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: __c = this->rdbuf()->sgetc(); 194s 1515: if (traits_type::eq_int_type(__c, traits_type::eof())) 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return __c; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: read(char_type* __s, streamsize __n) 194s 1515: { 194s 1515: _M_gcount = 0; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: _M_gcount = this->rdbuf()->sgetn(__s, __n); 194s 1515: if (_M_gcount != __n) 194s 1515: __err |= (ios_base::eofbit | ios_base::failbit); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: streamsize 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: readsome(char_type* __s, streamsize __n) 194s 1515: { 194s 1515: _M_gcount = 0; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: 194s 1515: const streamsize __num = this->rdbuf()->in_avail(); 194s 1515: if (__num > 0) 194s 1515: _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); 194s 1515: else if (__num == -1) 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return _M_gcount; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: putback(char_type __c) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: _M_gcount = 0; 194s 1515: 194s 1515: this->clear(this->rdstate() & ~ios_base::eofbit); 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: __streambuf_type* __sb = this->rdbuf(); 194s 1515: if (!__sb 194s 1515: || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) 194s 1515: __err |= ios_base::badbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: unget(void) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: _M_gcount = 0; 194s 1515: 194s 1515: this->clear(this->rdstate() & ~ios_base::eofbit); 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: const int_type __eof = traits_type::eof(); 194s 1515: __streambuf_type* __sb = this->rdbuf(); 194s 1515: if (!__sb 194s 1515: || traits_type::eq_int_type(__sb->sungetc(), __eof)) 194s 1515: __err |= ios_base::badbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: int 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: sync(void) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: int __ret = -1; 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: __streambuf_type* __sb = this->rdbuf(); 194s 1515: if (__sb) 194s 1515: { 194s 1515: if (__sb->pubsync() == -1) 194s 1515: __err |= ios_base::badbit; 194s 1515: else 194s 1515: __ret = 0; 194s 1515: } 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_istream<_CharT, _Traits>::pos_type 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: tellg(void) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: pos_type __ret = pos_type(-1); 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: if (!this->fail()) 194s 1515: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, 194s 1515: ios_base::in); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: seekg(pos_type __pos) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: this->clear(this->rdstate() & ~ios_base::eofbit); 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: if (!this->fail()) 194s 1515: { 194s 1515: 194s 1515: const pos_type __p = this->rdbuf()->pubseekpos(__pos, 194s 1515: ios_base::in); 194s 1515: 194s 1515: 194s 1515: if (__p == pos_type(off_type(-1))) 194s 1515: __err |= ios_base::failbit; 194s 1515: } 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: basic_istream<_CharT, _Traits>:: 194s 1515: seekg(off_type __off, ios_base::seekdir __dir) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: this->clear(this->rdstate() & ~ios_base::eofbit); 194s 1515: sentry __cerb(*this, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: if (!this->fail()) 194s 1515: { 194s 1515: 194s 1515: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, 194s 1515: ios_base::in); 194s 1515: 194s 1515: 194s 1515: if (__p == pos_type(off_type(-1))) 194s 1515: __err |= ios_base::failbit; 194s 1515: } 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: this->_M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { this->_M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: this->setstate(__err); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) 194s 1515: { 194s 1515: typedef basic_istream<_CharT, _Traits> __istream_type; 194s 1515: typedef typename __istream_type::int_type __int_type; 194s 1515: 194s 1515: typename __istream_type::sentry __cerb(__in, false); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: const __int_type __cb = __in.rdbuf()->sbumpc(); 194s 1515: if (!_Traits::eq_int_type(__cb, _Traits::eof())) 194s 1515: __c = _Traits::to_char_type(__cb); 194s 1515: else 194s 1515: __err |= (ios_base::eofbit | ios_base::failbit); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __in._M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { __in._M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: __in.setstate(__err); 194s 1515: } 194s 1515: return __in; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __istream_extract(basic_istream<_CharT, _Traits>& __in, _CharT* __s, 194s 1515: streamsize __num) 194s 1515: { 194s 1515: typedef basic_istream<_CharT, _Traits> __istream_type; 194s 1515: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 194s 1515: typedef typename _Traits::int_type int_type; 194s 1515: typedef _CharT char_type; 194s 1515: typedef ctype<_CharT> __ctype_type; 194s 1515: 194s 1515: streamsize __extracted = 0; 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: typename __istream_type::sentry __cerb(__in, false); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: 194s 1515: streamsize __width = __in.width(); 194s 1515: if (0 < __width && __width < __num) 194s 1515: __num = __width; 194s 1515: 194s 1515: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 194s 1515: 194s 1515: const int_type __eof = _Traits::eof(); 194s 1515: __streambuf_type* __sb = __in.rdbuf(); 194s 1515: int_type __c = __sb->sgetc(); 194s 1515: 194s 1515: while (__extracted < __num - 1 194s 1515: && !_Traits::eq_int_type(__c, __eof) 194s 1515: && !__ct.is(ctype_base::space, 194s 1515: _Traits::to_char_type(__c))) 194s 1515: { 194s 1515: *__s++ = _Traits::to_char_type(__c); 194s 1515: ++__extracted; 194s 1515: __c = __sb->snextc(); 194s 1515: } 194s 1515: 194s 1515: if (__extracted < __num - 1 194s 1515: && _Traits::eq_int_type(__c, __eof)) 194s 1515: __err |= ios_base::eofbit; 194s 1515: 194s 1515: 194s 1515: 194s 1515: *__s = char_type(); 194s 1515: __in.width(0); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __in._M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { __in._M_setstate(ios_base::badbit); } 194s 1515: } 194s 1515: if (!__extracted) 194s 1515: __err |= ios_base::failbit; 194s 1515: if (__err) 194s 1515: __in.setstate(__err); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: ws(basic_istream<_CharT, _Traits>& __in) 194s 1515: { 194s 1515: typedef basic_istream<_CharT, _Traits> __istream_type; 194s 1515: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 194s 1515: typedef typename __istream_type::int_type __int_type; 194s 1515: typedef ctype<_CharT> __ctype_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typename __istream_type::sentry __cerb(__in, true); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 194s 1515: const __int_type __eof = _Traits::eof(); 194s 1515: __streambuf_type* __sb = __in.rdbuf(); 194s 1515: __int_type __c = __sb->sgetc(); 194s 1515: 194s 1515: while (true) 194s 1515: { 194s 1515: if (_Traits::eq_int_type(__c, __eof)) 194s 1515: { 194s 1515: __err = ios_base::eofbit; 194s 1515: break; 194s 1515: } 194s 1515: if (!__ct.is(ctype_base::space, _Traits::to_char_type(__c))) 194s 1515: break; 194s 1515: __c = __sb->snextc(); 194s 1515: } 194s 1515: } 194s 1515: catch(const __cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __in._M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: __in._M_setstate(ios_base::badbit); 194s 1515: } 194s 1515: if (__err) 194s 1515: __in.setstate(__err); 194s 1515: } 194s 1515: return __in; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: extern template class basic_istream; 194s 1515: extern template istream& ws(istream&); 194s 1515: extern template istream& operator>>(istream&, char&); 194s 1515: extern template istream& operator>>(istream&, unsigned char&); 194s 1515: extern template istream& operator>>(istream&, signed char&); 194s 1515: 194s 1515: extern template istream& istream::_M_extract(unsigned short&); 194s 1515: extern template istream& istream::_M_extract(unsigned int&); 194s 1515: extern template istream& istream::_M_extract(long&); 194s 1515: extern template istream& istream::_M_extract(unsigned long&); 194s 1515: extern template istream& istream::_M_extract(bool&); 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: extern template istream& istream::_M_extract(long long&); 194s 1515: extern template istream& istream::_M_extract(unsigned long long&); 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: extern template istream& istream::_M_extract(float&); 194s 1515: extern template istream& istream::_M_extract(double&); 194s 1515: extern template istream& istream::_M_extract(long double&); 194s 1515: extern template istream& istream::_M_extract(void*&); 194s 1515: 194s 1515: extern template class basic_iostream; 194s 1515: 194s 1515: 194s 1515: extern template class basic_istream; 194s 1515: extern template wistream& ws(wistream&); 194s 1515: extern template wistream& operator>>(wistream&, wchar_t&); 194s 1515: extern template void __istream_extract(wistream&, wchar_t*, streamsize); 194s 1515: 194s 1515: extern template wistream& wistream::_M_extract(unsigned short&); 194s 1515: extern template wistream& wistream::_M_extract(unsigned int&); 194s 1515: extern template wistream& wistream::_M_extract(long&); 194s 1515: extern template wistream& wistream::_M_extract(unsigned long&); 194s 1515: extern template wistream& wistream::_M_extract(bool&); 194s 1515: 194s 1515: extern template wistream& wistream::_M_extract(long long&); 194s 1515: extern template wistream& wistream::_M_extract(unsigned long long&); 194s 1515: 194s 1515: extern template wistream& wistream::_M_extract(float&); 194s 1515: extern template wistream& wistream::_M_extract(double&); 194s 1515: extern template wistream& wistream::_M_extract(long double&); 194s 1515: extern template wistream& wistream::_M_extract(void*&); 194s 1515: 194s 1515: extern template class basic_iostream; 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 1112 "/usr/include/c++/15/istream" 2 3 4 194s 1515: # 43 "/usr/include/c++/15/fstream" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/codecvt.h" 1 3 4 194s 1515: # 46 "/usr/include/c++/15/bits/codecvt.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: class codecvt_base 194s 1515: { 194s 1515: public: 194s 1515: enum result 194s 1515: { 194s 1515: ok, 194s 1515: partial, 194s 1515: error, 194s 1515: noconv 194s 1515: }; 194s 1515: }; 194s 1515: # 75 "/usr/include/c++/15/bits/codecvt.h" 3 4 194s 1515: template 194s 1515: class __codecvt_abstract_base 194s 1515: : public locale::facet, public codecvt_base 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef codecvt_base::result result; 194s 1515: typedef _InternT intern_type; 194s 1515: typedef _ExternT extern_type; 194s 1515: typedef _StateT state_type; 194s 1515: # 123 "/usr/include/c++/15/bits/codecvt.h" 3 4 194s 1515: result 194s 1515: out(state_type& __state, const intern_type* __from, 194s 1515: const intern_type* __from_end, const intern_type*& __from_next, 194s 1515: extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const 194s 1515: { 194s 1515: return this->do_out(__state, __from, __from_end, __from_next, 194s 1515: __to, __to_end, __to_next); 194s 1515: } 194s 1515: # 162 "/usr/include/c++/15/bits/codecvt.h" 3 4 194s 1515: result 194s 1515: unshift(state_type& __state, extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const 194s 1515: { return this->do_unshift(__state, __to,__to_end,__to_next); } 194s 1515: # 203 "/usr/include/c++/15/bits/codecvt.h" 3 4 194s 1515: result 194s 1515: in(state_type& __state, const extern_type* __from, 194s 1515: const extern_type* __from_end, const extern_type*& __from_next, 194s 1515: intern_type* __to, intern_type* __to_end, 194s 1515: intern_type*& __to_next) const 194s 1515: { 194s 1515: return this->do_in(__state, __from, __from_end, __from_next, 194s 1515: __to, __to_end, __to_next); 194s 1515: } 194s 1515: 194s 1515: int 194s 1515: encoding() const throw() 194s 1515: { return this->do_encoding(); } 194s 1515: 194s 1515: bool 194s 1515: always_noconv() const throw() 194s 1515: { return this->do_always_noconv(); } 194s 1515: 194s 1515: int 194s 1515: length(state_type& __state, const extern_type* __from, 194s 1515: const extern_type* __end, size_t __max) const 194s 1515: { return this->do_length(__state, __from, __end, __max); } 194s 1515: 194s 1515: int 194s 1515: max_length() const throw() 194s 1515: { return this->do_max_length(); } 194s 1515: 194s 1515: protected: 194s 1515: explicit 194s 1515: __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { } 194s 1515: 194s 1515: virtual 194s 1515: ~__codecvt_abstract_base() { } 194s 1515: # 244 "/usr/include/c++/15/bits/codecvt.h" 3 4 194s 1515: virtual result 194s 1515: do_out(state_type& __state, const intern_type* __from, 194s 1515: const intern_type* __from_end, const intern_type*& __from_next, 194s 1515: extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const = 0; 194s 1515: 194s 1515: virtual result 194s 1515: do_unshift(state_type& __state, extern_type* __to, 194s 1515: extern_type* __to_end, extern_type*& __to_next) const = 0; 194s 1515: 194s 1515: virtual result 194s 1515: do_in(state_type& __state, const extern_type* __from, 194s 1515: const extern_type* __from_end, const extern_type*& __from_next, 194s 1515: intern_type* __to, intern_type* __to_end, 194s 1515: intern_type*& __to_next) const = 0; 194s 1515: 194s 1515: virtual int 194s 1515: do_encoding() const throw() = 0; 194s 1515: 194s 1515: virtual bool 194s 1515: do_always_noconv() const throw() = 0; 194s 1515: 194s 1515: virtual int 194s 1515: do_length(state_type&, const extern_type* __from, 194s 1515: const extern_type* __end, size_t __max) const = 0; 194s 1515: 194s 1515: virtual int 194s 1515: do_max_length() const throw() = 0; 194s 1515: }; 194s 1515: # 281 "/usr/include/c++/15/bits/codecvt.h" 3 4 194s 1515: template 194s 1515: class codecvt 194s 1515: : public __codecvt_abstract_base<_InternT, _ExternT, _StateT> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef codecvt_base::result result; 194s 1515: typedef _InternT intern_type; 194s 1515: typedef _ExternT extern_type; 194s 1515: typedef _StateT state_type; 194s 1515: 194s 1515: protected: 194s 1515: __c_locale _M_c_locale_codecvt; 194s 1515: 194s 1515: public: 194s 1515: static locale::id id; 194s 1515: 194s 1515: explicit 194s 1515: codecvt(size_t __refs = 0) 194s 1515: : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs), 194s 1515: _M_c_locale_codecvt(0) 194s 1515: { } 194s 1515: 194s 1515: explicit 194s 1515: codecvt(__c_locale __cloc, size_t __refs = 0); 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~codecvt() { } 194s 1515: 194s 1515: virtual result 194s 1515: do_out(state_type& __state, const intern_type* __from, 194s 1515: const intern_type* __from_end, const intern_type*& __from_next, 194s 1515: extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const; 194s 1515: 194s 1515: virtual result 194s 1515: do_unshift(state_type& __state, extern_type* __to, 194s 1515: extern_type* __to_end, extern_type*& __to_next) const; 194s 1515: 194s 1515: virtual result 194s 1515: do_in(state_type& __state, const extern_type* __from, 194s 1515: const extern_type* __from_end, const extern_type*& __from_next, 194s 1515: intern_type* __to, intern_type* __to_end, 194s 1515: intern_type*& __to_next) const; 194s 1515: 194s 1515: virtual int 194s 1515: do_encoding() const throw(); 194s 1515: 194s 1515: virtual bool 194s 1515: do_always_noconv() const throw(); 194s 1515: 194s 1515: virtual int 194s 1515: do_length(state_type&, const extern_type* __from, 194s 1515: const extern_type* __end, size_t __max) const; 194s 1515: 194s 1515: virtual int 194s 1515: do_max_length() const throw(); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id codecvt<_InternT, _ExternT, _StateT>::id; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: class codecvt 194s 1515: : public __codecvt_abstract_base 194s 1515: { 194s 1515: friend class messages; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: typedef char intern_type; 194s 1515: typedef char extern_type; 194s 1515: typedef mbstate_t state_type; 194s 1515: 194s 1515: protected: 194s 1515: __c_locale _M_c_locale_codecvt; 194s 1515: 194s 1515: public: 194s 1515: static locale::id id; 194s 1515: 194s 1515: explicit 194s 1515: codecvt(size_t __refs = 0); 194s 1515: 194s 1515: explicit 194s 1515: codecvt(__c_locale __cloc, size_t __refs = 0); 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~codecvt(); 194s 1515: 194s 1515: virtual result 194s 1515: do_out(state_type& __state, const intern_type* __from, 194s 1515: const intern_type* __from_end, const intern_type*& __from_next, 194s 1515: extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const; 194s 1515: 194s 1515: virtual result 194s 1515: do_unshift(state_type& __state, extern_type* __to, 194s 1515: extern_type* __to_end, extern_type*& __to_next) const; 194s 1515: 194s 1515: virtual result 194s 1515: do_in(state_type& __state, const extern_type* __from, 194s 1515: const extern_type* __from_end, const extern_type*& __from_next, 194s 1515: intern_type* __to, intern_type* __to_end, 194s 1515: intern_type*& __to_next) const; 194s 1515: 194s 1515: virtual int 194s 1515: do_encoding() const throw(); 194s 1515: 194s 1515: virtual bool 194s 1515: do_always_noconv() const throw(); 194s 1515: 194s 1515: virtual int 194s 1515: do_length(state_type&, const extern_type* __from, 194s 1515: const extern_type* __end, size_t __max) const; 194s 1515: 194s 1515: virtual int 194s 1515: do_max_length() const throw(); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: class codecvt 194s 1515: : public __codecvt_abstract_base 194s 1515: { 194s 1515: friend class messages; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: typedef wchar_t intern_type; 194s 1515: typedef char extern_type; 194s 1515: typedef mbstate_t state_type; 194s 1515: 194s 1515: protected: 194s 1515: __c_locale _M_c_locale_codecvt; 194s 1515: 194s 1515: public: 194s 1515: static locale::id id; 194s 1515: 194s 1515: explicit 194s 1515: codecvt(size_t __refs = 0); 194s 1515: 194s 1515: explicit 194s 1515: codecvt(__c_locale __cloc, size_t __refs = 0); 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~codecvt(); 194s 1515: 194s 1515: virtual result 194s 1515: do_out(state_type& __state, const intern_type* __from, 194s 1515: const intern_type* __from_end, const intern_type*& __from_next, 194s 1515: extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const; 194s 1515: 194s 1515: virtual result 194s 1515: do_unshift(state_type& __state, 194s 1515: extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const; 194s 1515: 194s 1515: virtual result 194s 1515: do_in(state_type& __state, 194s 1515: const extern_type* __from, const extern_type* __from_end, 194s 1515: const extern_type*& __from_next, 194s 1515: intern_type* __to, intern_type* __to_end, 194s 1515: intern_type*& __to_next) const; 194s 1515: 194s 1515: virtual 194s 1515: int do_encoding() const throw(); 194s 1515: 194s 1515: virtual 194s 1515: bool do_always_noconv() const throw(); 194s 1515: 194s 1515: virtual 194s 1515: int do_length(state_type&, const extern_type* __from, 194s 1515: const extern_type* __end, size_t __max) const; 194s 1515: 194s 1515: virtual int 194s 1515: do_max_length() const throw(); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: class codecvt 194s 1515: : public __codecvt_abstract_base 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef char16_t intern_type; 194s 1515: typedef char extern_type; 194s 1515: typedef mbstate_t state_type; 194s 1515: 194s 1515: public: 194s 1515: static locale::id id; 194s 1515: 194s 1515: explicit 194s 1515: codecvt(size_t __refs = 0) 194s 1515: : __codecvt_abstract_base(__refs) { } 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~codecvt(); 194s 1515: 194s 1515: virtual result 194s 1515: do_out(state_type& __state, const intern_type* __from, 194s 1515: const intern_type* __from_end, const intern_type*& __from_next, 194s 1515: extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const; 194s 1515: 194s 1515: virtual result 194s 1515: do_unshift(state_type& __state, 194s 1515: extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const; 194s 1515: 194s 1515: virtual result 194s 1515: do_in(state_type& __state, 194s 1515: const extern_type* __from, const extern_type* __from_end, 194s 1515: const extern_type*& __from_next, 194s 1515: intern_type* __to, intern_type* __to_end, 194s 1515: intern_type*& __to_next) const; 194s 1515: 194s 1515: virtual 194s 1515: int do_encoding() const throw(); 194s 1515: 194s 1515: virtual 194s 1515: bool do_always_noconv() const throw(); 194s 1515: 194s 1515: virtual 194s 1515: int do_length(state_type&, const extern_type* __from, 194s 1515: const extern_type* __end, size_t __max) const; 194s 1515: 194s 1515: virtual int 194s 1515: do_max_length() const throw(); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: class codecvt 194s 1515: : public __codecvt_abstract_base 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef char32_t intern_type; 194s 1515: typedef char extern_type; 194s 1515: typedef mbstate_t state_type; 194s 1515: 194s 1515: public: 194s 1515: static locale::id id; 194s 1515: 194s 1515: explicit 194s 1515: codecvt(size_t __refs = 0) 194s 1515: : __codecvt_abstract_base(__refs) { } 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~codecvt(); 194s 1515: 194s 1515: virtual result 194s 1515: do_out(state_type& __state, const intern_type* __from, 194s 1515: const intern_type* __from_end, const intern_type*& __from_next, 194s 1515: extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const; 194s 1515: 194s 1515: virtual result 194s 1515: do_unshift(state_type& __state, 194s 1515: extern_type* __to, extern_type* __to_end, 194s 1515: extern_type*& __to_next) const; 194s 1515: 194s 1515: virtual result 194s 1515: do_in(state_type& __state, 194s 1515: const extern_type* __from, const extern_type* __from_end, 194s 1515: const extern_type*& __from_next, 194s 1515: intern_type* __to, intern_type* __to_end, 194s 1515: intern_type*& __to_next) const; 194s 1515: 194s 1515: virtual 194s 1515: int do_encoding() const throw(); 194s 1515: 194s 1515: virtual 194s 1515: bool do_always_noconv() const throw(); 194s 1515: 194s 1515: virtual 194s 1515: int do_length(state_type&, const extern_type* __from, 194s 1515: const extern_type* __end, size_t __max) const; 194s 1515: 194s 1515: virtual int 194s 1515: do_max_length() const throw(); 194s 1515: }; 194s 1515: # 703 "/usr/include/c++/15/bits/codecvt.h" 3 4 194s 1515: template 194s 1515: class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: codecvt_byname(const char* __s, size_t __refs = 0) 194s 1515: : codecvt<_InternT, _ExternT, _StateT>(__refs) 194s 1515: { 194s 1515: if (__builtin_strcmp(__s, "C") != 0 194s 1515: && __builtin_strcmp(__s, "POSIX") != 0) 194s 1515: { 194s 1515: this->_S_destroy_c_locale(this->_M_c_locale_codecvt); 194s 1515: this->_S_create_c_locale(this->_M_c_locale_codecvt, __s); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: codecvt_byname(const string& __s, size_t __refs = 0) 194s 1515: : codecvt_byname(__s.c_str(), __refs) { } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~codecvt_byname() { } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: class codecvt_byname 194s 1515: : public codecvt 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: codecvt_byname(const char*, size_t __refs = 0) 194s 1515: : codecvt(__refs) { } 194s 1515: 194s 1515: explicit 194s 1515: codecvt_byname(const string& __s, size_t __refs = 0) 194s 1515: : codecvt_byname(__s.c_str(), __refs) { } 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~codecvt_byname() { } 194s 1515: }; 194s 1515: 194s 1515: template<> 194s 1515: class codecvt_byname 194s 1515: : public codecvt 194s 1515: { 194s 1515: public: 194s 1515: explicit 194s 1515: codecvt_byname(const char*, size_t __refs = 0) 194s 1515: : codecvt(__refs) { } 194s 1515: 194s 1515: explicit 194s 1515: codecvt_byname(const string& __s, size_t __refs = 0) 194s 1515: : codecvt_byname(__s.c_str(), __refs) { } 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~codecvt_byname() { } 194s 1515: }; 194s 1515: # 810 "/usr/include/c++/15/bits/codecvt.h" 3 4 194s 1515: extern template class codecvt_byname; 194s 1515: 194s 1515: extern template 194s 1515: const codecvt& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: 194s 1515: extern template class codecvt_byname; 194s 1515: 194s 1515: extern template 194s 1515: const codecvt& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern template class codecvt_byname; 194s 1515: extern template class codecvt_byname; 194s 1515: # 845 "/usr/include/c++/15/bits/codecvt.h" 3 4 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 45 "/usr/include/c++/15/fstream" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/basic_file.h" 1 3 4 194s 1515: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/basic_file.h" 3 4 194s 1515: 194s 1515: # 38 "/usr/include/arm-linux-gnueabihf/c++/15/bits/basic_file.h" 3 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++io.h" 1 3 194s 1515: # 38 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++io.h" 3 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef __gthread_mutex_t __c_lock; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef FILE __c_file; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 41 "/usr/include/arm-linux-gnueabihf/c++/15/bits/basic_file.h" 2 3 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class __basic_file; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: class __basic_file 194s 1515: { 194s 1515: 194s 1515: __c_file* _M_cfile; 194s 1515: 194s 1515: 194s 1515: bool _M_cfile_created; 194s 1515: 194s 1515: public: 194s 1515: __basic_file(__c_lock* __lock = 0) throw (); 194s 1515: 194s 1515: 194s 1515: __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept 194s 1515: : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) 194s 1515: { 194s 1515: __rv._M_cfile = nullptr; 194s 1515: __rv._M_cfile_created = false; 194s 1515: } 194s 1515: 194s 1515: __basic_file& operator=(const __basic_file&) = delete; 194s 1515: __basic_file& operator=(__basic_file&&) = delete; 194s 1515: 194s 1515: void 194s 1515: swap(__basic_file& __f) noexcept 194s 1515: { 194s 1515: std::swap(_M_cfile, __f._M_cfile); 194s 1515: std::swap(_M_cfile_created, __f._M_cfile_created); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: __basic_file* 194s 1515: open(const char* __name, ios_base::openmode __mode, int __prot = 0664); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __basic_file* 194s 1515: sys_open(__c_file* __file, ios_base::openmode); 194s 1515: 194s 1515: __basic_file* 194s 1515: sys_open(int __fd, ios_base::openmode __mode) throw (); 194s 1515: 194s 1515: __basic_file* 194s 1515: close(); 194s 1515: 194s 1515: __attribute__ ((__pure__)) bool 194s 1515: is_open() const throw (); 194s 1515: 194s 1515: __attribute__ ((__pure__)) int 194s 1515: fd() throw (); 194s 1515: 194s 1515: __attribute__ ((__pure__)) __c_file* 194s 1515: file() throw (); 194s 1515: 194s 1515: ~__basic_file(); 194s 1515: 194s 1515: streamsize 194s 1515: xsputn(const char* __s, streamsize __n); 194s 1515: 194s 1515: streamsize 194s 1515: xsputn_2(const char* __s1, streamsize __n1, 194s 1515: const char* __s2, streamsize __n2); 194s 1515: 194s 1515: streamsize 194s 1515: xsgetn(char* __s, streamsize __n); 194s 1515: 194s 1515: streamoff 194s 1515: seekoff(streamoff __off, ios_base::seekdir __way) throw (); 194s 1515: 194s 1515: int 194s 1515: sync(); 194s 1515: 194s 1515: streamsize 194s 1515: showmanyc(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using native_handle_type = int; 194s 1515: 194s 1515: 194s 1515: native_handle_type 194s 1515: native_handle() const noexcept; 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 47 "/usr/include/c++/15/fstream" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 53 "/usr/include/c++/15/fstream" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 91 "/usr/include/c++/15/fstream" 3 4 194s 1515: template 194s 1515: class basic_filebuf : public basic_streambuf<_CharT, _Traits> 194s 1515: { 194s 1515: 194s 1515: template 194s 1515: using __chk_state = __and_, 194s 1515: is_copy_constructible<_Tp>, 194s 1515: is_default_constructible<_Tp>>; 194s 1515: 194s 1515: static_assert(__chk_state::value, 194s 1515: "state_type must be CopyAssignable, CopyConstructible" 194s 1515: " and DefaultConstructible"); 194s 1515: 194s 1515: static_assert(is_same>::value, 194s 1515: "pos_type must be fpos"); 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: typedef typename traits_type::pos_type pos_type; 194s 1515: typedef typename traits_type::off_type off_type; 194s 1515: 194s 1515: typedef basic_streambuf __streambuf_type; 194s 1515: typedef basic_filebuf __filebuf_type; 194s 1515: typedef __basic_file __file_type; 194s 1515: typedef typename traits_type::state_type __state_type; 194s 1515: typedef codecvt __codecvt_type; 194s 1515: 194s 1515: friend class ios_base; 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: __c_lock _M_lock; 194s 1515: 194s 1515: 194s 1515: __file_type _M_file; 194s 1515: 194s 1515: 194s 1515: ios_base::openmode _M_mode; 194s 1515: 194s 1515: 194s 1515: __state_type _M_state_beg; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __state_type _M_state_cur; 194s 1515: 194s 1515: 194s 1515: 194s 1515: __state_type _M_state_last; 194s 1515: 194s 1515: 194s 1515: char_type* _M_buf; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_t _M_buf_size; 194s 1515: 194s 1515: 194s 1515: bool _M_buf_allocated; 194s 1515: # 167 "/usr/include/c++/15/fstream" 3 4 194s 1515: bool _M_reading; 194s 1515: bool _M_writing; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: char_type _M_pback; 194s 1515: char_type* _M_pback_cur_save; 194s 1515: char_type* _M_pback_end_save; 194s 1515: bool _M_pback_init; 194s 1515: 194s 1515: 194s 1515: 194s 1515: const __codecvt_type* _M_codecvt; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: char* _M_ext_buf; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: streamsize _M_ext_buf_size; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const char* _M_ext_next; 194s 1515: char* _M_ext_end; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_create_pback() 194s 1515: { 194s 1515: if (!_M_pback_init) 194s 1515: { 194s 1515: _M_pback_cur_save = this->gptr(); 194s 1515: _M_pback_end_save = this->egptr(); 194s 1515: this->setg(&_M_pback, &_M_pback, &_M_pback + 1); 194s 1515: _M_pback_init = true; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_destroy_pback() throw() 194s 1515: { 194s 1515: if (_M_pback_init) 194s 1515: { 194s 1515: 194s 1515: _M_pback_cur_save += this->gptr() != this->eback(); 194s 1515: this->setg(_M_buf, _M_pback_cur_save, _M_pback_end_save); 194s 1515: _M_pback_init = false; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_filebuf(); 194s 1515: 194s 1515: 194s 1515: basic_filebuf(const basic_filebuf&) = delete; 194s 1515: basic_filebuf(basic_filebuf&&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual 194s 1515: ~basic_filebuf() 194s 1515: { 194s 1515: try 194s 1515: { this->close(); } 194s 1515: catch(...) 194s 1515: { } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: basic_filebuf& operator=(const basic_filebuf&) = delete; 194s 1515: basic_filebuf& operator=(basic_filebuf&&); 194s 1515: void swap(basic_filebuf&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: is_open() const throw() 194s 1515: { return _M_file.is_open(); } 194s 1515: # 322 "/usr/include/c++/15/fstream" 3 4 194s 1515: __filebuf_type* 194s 1515: open(const char* __s, ios_base::openmode __mode); 194s 1515: # 343 "/usr/include/c++/15/fstream" 3 4 194s 1515: __filebuf_type* 194s 1515: open(const std::string& __s, ios_base::openmode __mode) 194s 1515: { return open(__s.c_str(), __mode); } 194s 1515: # 373 "/usr/include/c++/15/fstream" 3 4 194s 1515: __filebuf_type* 194s 1515: close(); 194s 1515: # 406 "/usr/include/c++/15/fstream" 3 4 194s 1515: protected: 194s 1515: void 194s 1515: _M_allocate_internal_buffer(); 194s 1515: 194s 1515: void 194s 1515: _M_destroy_internal_buffer() throw(); 194s 1515: 194s 1515: 194s 1515: virtual streamsize 194s 1515: showmanyc(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual int_type 194s 1515: underflow(); 194s 1515: 194s 1515: virtual int_type 194s 1515: pbackfail(int_type __c = _Traits::eof()); 194s 1515: # 435 "/usr/include/c++/15/fstream" 3 4 194s 1515: virtual int_type 194s 1515: overflow(int_type __c = _Traits::eof()); 194s 1515: 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: _M_convert_to_external(char_type*, streamsize); 194s 1515: # 455 "/usr/include/c++/15/fstream" 3 4 194s 1515: virtual __streambuf_type* 194s 1515: setbuf(char_type* __s, streamsize __n); 194s 1515: 194s 1515: virtual pos_type 194s 1515: seekoff(off_type __off, ios_base::seekdir __way, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out); 194s 1515: 194s 1515: virtual pos_type 194s 1515: seekpos(pos_type __pos, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out); 194s 1515: 194s 1515: 194s 1515: pos_type 194s 1515: _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state); 194s 1515: 194s 1515: int 194s 1515: _M_get_ext_pos(__state_type &__state); 194s 1515: 194s 1515: virtual int 194s 1515: sync(); 194s 1515: 194s 1515: virtual void 194s 1515: imbue(const locale& __loc); 194s 1515: 194s 1515: virtual streamsize 194s 1515: xsgetn(char_type* __s, streamsize __n); 194s 1515: 194s 1515: virtual streamsize 194s 1515: xsputn(const char_type* __s, streamsize __n); 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: _M_terminate_output(); 194s 1515: # 501 "/usr/include/c++/15/fstream" 3 4 194s 1515: void 194s 1515: _M_set_buffer(streamsize __off) 194s 1515: { 194s 1515: const bool __testin = _M_mode & ios_base::in; 194s 1515: const bool __testout = (_M_mode & ios_base::out 194s 1515: || _M_mode & ios_base::app); 194s 1515: 194s 1515: if (__testin && __off > 0) 194s 1515: this->setg(_M_buf, _M_buf, _M_buf + __off); 194s 1515: else 194s 1515: this->setg(_M_buf, _M_buf, _M_buf); 194s 1515: 194s 1515: if (__testout && __off == 0 && _M_buf_size > 1 ) 194s 1515: this->setp(_M_buf, _M_buf + _M_buf_size - 1); 194s 1515: else 194s 1515: this->setp(0, 0); 194s 1515: } 194s 1515: }; 194s 1515: # 534 "/usr/include/c++/15/fstream" 3 4 194s 1515: template 194s 1515: class basic_ifstream : public basic_istream<_CharT, _Traits> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: typedef typename traits_type::pos_type pos_type; 194s 1515: typedef typename traits_type::off_type off_type; 194s 1515: 194s 1515: 194s 1515: typedef basic_filebuf __filebuf_type; 194s 1515: typedef basic_istream __istream_type; 194s 1515: 194s 1515: private: 194s 1515: __filebuf_type _M_filebuf; 194s 1515: 194s 1515: public: 194s 1515: # 561 "/usr/include/c++/15/fstream" 3 4 194s 1515: basic_ifstream() : __istream_type(), _M_filebuf() 194s 1515: { this->init(&_M_filebuf); } 194s 1515: # 571 "/usr/include/c++/15/fstream" 3 4 194s 1515: explicit 194s 1515: basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) 194s 1515: : __istream_type(), _M_filebuf() 194s 1515: { 194s 1515: this->init(&_M_filebuf); 194s 1515: this->open(__s, __mode); 194s 1515: } 194s 1515: # 604 "/usr/include/c++/15/fstream" 3 4 194s 1515: explicit 194s 1515: basic_ifstream(const std::string& __s, 194s 1515: ios_base::openmode __mode = ios_base::in) 194s 1515: : __istream_type(), _M_filebuf() 194s 1515: { 194s 1515: this->init(&_M_filebuf); 194s 1515: this->open(__s, __mode); 194s 1515: } 194s 1515: # 628 "/usr/include/c++/15/fstream" 3 4 194s 1515: basic_ifstream(const basic_ifstream&) = delete; 194s 1515: 194s 1515: basic_ifstream(basic_ifstream&& __rhs) 194s 1515: : __istream_type(std::move(__rhs)), 194s 1515: _M_filebuf(std::move(__rhs._M_filebuf)) 194s 1515: { __istream_type::set_rdbuf(&_M_filebuf); } 194s 1515: # 642 "/usr/include/c++/15/fstream" 3 4 194s 1515: ~basic_ifstream() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_ifstream& 194s 1515: operator=(const basic_ifstream&) = delete; 194s 1515: 194s 1515: basic_ifstream& 194s 1515: operator=(basic_ifstream&& __rhs) 194s 1515: { 194s 1515: __istream_type::operator=(std::move(__rhs)); 194s 1515: _M_filebuf = std::move(__rhs._M_filebuf); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(basic_ifstream& __rhs) 194s 1515: { 194s 1515: __istream_type::swap(__rhs); 194s 1515: _M_filebuf.swap(__rhs._M_filebuf); 194s 1515: } 194s 1515: # 674 "/usr/include/c++/15/fstream" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: __filebuf_type* 194s 1515: rdbuf() const 194s 1515: { return const_cast<__filebuf_type*>(&_M_filebuf); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: is_open() 194s 1515: { return _M_filebuf.is_open(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: is_open() const 194s 1515: { return _M_filebuf.is_open(); } 194s 1515: # 703 "/usr/include/c++/15/fstream" 3 4 194s 1515: void 194s 1515: open(const char* __s, ios_base::openmode __mode = ios_base::in) 194s 1515: { 194s 1515: if (!_M_filebuf.open(__s, __mode | ios_base::in)) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: else 194s 1515: 194s 1515: 194s 1515: this->clear(); 194s 1515: } 194s 1515: # 742 "/usr/include/c++/15/fstream" 3 4 194s 1515: void 194s 1515: open(const std::string& __s, ios_base::openmode __mode = ios_base::in) 194s 1515: { 194s 1515: if (!_M_filebuf.open(__s, __mode | ios_base::in)) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: else 194s 1515: 194s 1515: 194s 1515: this->clear(); 194s 1515: } 194s 1515: # 775 "/usr/include/c++/15/fstream" 3 4 194s 1515: void 194s 1515: close() 194s 1515: { 194s 1515: if (!_M_filebuf.close()) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: } 194s 1515: # 790 "/usr/include/c++/15/fstream" 3 4 194s 1515: }; 194s 1515: # 807 "/usr/include/c++/15/fstream" 3 4 194s 1515: template 194s 1515: class basic_ofstream : public basic_ostream<_CharT,_Traits> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: typedef typename traits_type::pos_type pos_type; 194s 1515: typedef typename traits_type::off_type off_type; 194s 1515: 194s 1515: 194s 1515: typedef basic_filebuf __filebuf_type; 194s 1515: typedef basic_ostream __ostream_type; 194s 1515: 194s 1515: private: 194s 1515: __filebuf_type _M_filebuf; 194s 1515: 194s 1515: public: 194s 1515: # 834 "/usr/include/c++/15/fstream" 3 4 194s 1515: basic_ofstream(): __ostream_type(), _M_filebuf() 194s 1515: { this->init(&_M_filebuf); } 194s 1515: # 844 "/usr/include/c++/15/fstream" 3 4 194s 1515: explicit 194s 1515: basic_ofstream(const char* __s, 194s 1515: ios_base::openmode __mode = ios_base::out) 194s 1515: : __ostream_type(), _M_filebuf() 194s 1515: { 194s 1515: this->init(&_M_filebuf); 194s 1515: this->open(__s, __mode); 194s 1515: } 194s 1515: # 879 "/usr/include/c++/15/fstream" 3 4 194s 1515: explicit 194s 1515: basic_ofstream(const std::string& __s, 194s 1515: ios_base::openmode __mode = ios_base::out) 194s 1515: : __ostream_type(), _M_filebuf() 194s 1515: { 194s 1515: this->init(&_M_filebuf); 194s 1515: this->open(__s, __mode); 194s 1515: } 194s 1515: # 903 "/usr/include/c++/15/fstream" 3 4 194s 1515: basic_ofstream(const basic_ofstream&) = delete; 194s 1515: 194s 1515: basic_ofstream(basic_ofstream&& __rhs) 194s 1515: : __ostream_type(std::move(__rhs)), 194s 1515: _M_filebuf(std::move(__rhs._M_filebuf)) 194s 1515: { __ostream_type::set_rdbuf(&_M_filebuf); } 194s 1515: # 917 "/usr/include/c++/15/fstream" 3 4 194s 1515: ~basic_ofstream() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_ofstream& 194s 1515: operator=(const basic_ofstream&) = delete; 194s 1515: 194s 1515: basic_ofstream& 194s 1515: operator=(basic_ofstream&& __rhs) 194s 1515: { 194s 1515: __ostream_type::operator=(std::move(__rhs)); 194s 1515: _M_filebuf = std::move(__rhs._M_filebuf); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(basic_ofstream& __rhs) 194s 1515: { 194s 1515: __ostream_type::swap(__rhs); 194s 1515: _M_filebuf.swap(__rhs._M_filebuf); 194s 1515: } 194s 1515: # 949 "/usr/include/c++/15/fstream" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: __filebuf_type* 194s 1515: rdbuf() const 194s 1515: { return const_cast<__filebuf_type*>(&_M_filebuf); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: is_open() 194s 1515: { return _M_filebuf.is_open(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: is_open() const 194s 1515: { return _M_filebuf.is_open(); } 194s 1515: # 978 "/usr/include/c++/15/fstream" 3 4 194s 1515: void 194s 1515: open(const char* __s, ios_base::openmode __mode = ios_base::out) 194s 1515: { 194s 1515: if (!_M_filebuf.open(__s, __mode | ios_base::out)) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: else 194s 1515: 194s 1515: 194s 1515: this->clear(); 194s 1515: } 194s 1515: # 1017 "/usr/include/c++/15/fstream" 3 4 194s 1515: void 194s 1515: open(const std::string& __s, ios_base::openmode __mode = ios_base::out) 194s 1515: { 194s 1515: if (!_M_filebuf.open(__s, __mode | ios_base::out)) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: else 194s 1515: 194s 1515: 194s 1515: this->clear(); 194s 1515: } 194s 1515: # 1050 "/usr/include/c++/15/fstream" 3 4 194s 1515: void 194s 1515: close() 194s 1515: { 194s 1515: if (!_M_filebuf.close()) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: } 194s 1515: # 1065 "/usr/include/c++/15/fstream" 3 4 194s 1515: }; 194s 1515: # 1082 "/usr/include/c++/15/fstream" 3 4 194s 1515: template 194s 1515: class basic_fstream : public basic_iostream<_CharT, _Traits> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: typedef typename traits_type::pos_type pos_type; 194s 1515: typedef typename traits_type::off_type off_type; 194s 1515: 194s 1515: 194s 1515: typedef basic_filebuf __filebuf_type; 194s 1515: typedef basic_ios __ios_type; 194s 1515: typedef basic_iostream __iostream_type; 194s 1515: 194s 1515: private: 194s 1515: __filebuf_type _M_filebuf; 194s 1515: 194s 1515: public: 194s 1515: # 1110 "/usr/include/c++/15/fstream" 3 4 194s 1515: basic_fstream() 194s 1515: : __iostream_type(), _M_filebuf() 194s 1515: { this->init(&_M_filebuf); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: basic_fstream(const char* __s, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out) 194s 1515: : __iostream_type(0), _M_filebuf() 194s 1515: { 194s 1515: this->init(&_M_filebuf); 194s 1515: this->open(__s, __mode); 194s 1515: } 194s 1515: # 1149 "/usr/include/c++/15/fstream" 3 4 194s 1515: explicit 194s 1515: basic_fstream(const std::string& __s, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out) 194s 1515: : __iostream_type(0), _M_filebuf() 194s 1515: { 194s 1515: this->init(&_M_filebuf); 194s 1515: this->open(__s, __mode); 194s 1515: } 194s 1515: # 1171 "/usr/include/c++/15/fstream" 3 4 194s 1515: basic_fstream(const basic_fstream&) = delete; 194s 1515: 194s 1515: basic_fstream(basic_fstream&& __rhs) 194s 1515: : __iostream_type(std::move(__rhs)), 194s 1515: _M_filebuf(std::move(__rhs._M_filebuf)) 194s 1515: { __iostream_type::set_rdbuf(&_M_filebuf); } 194s 1515: # 1185 "/usr/include/c++/15/fstream" 3 4 194s 1515: ~basic_fstream() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: basic_fstream& 194s 1515: operator=(const basic_fstream&) = delete; 194s 1515: 194s 1515: basic_fstream& 194s 1515: operator=(basic_fstream&& __rhs) 194s 1515: { 194s 1515: __iostream_type::operator=(std::move(__rhs)); 194s 1515: _M_filebuf = std::move(__rhs._M_filebuf); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(basic_fstream& __rhs) 194s 1515: { 194s 1515: __iostream_type::swap(__rhs); 194s 1515: _M_filebuf.swap(__rhs._M_filebuf); 194s 1515: } 194s 1515: # 1217 "/usr/include/c++/15/fstream" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: __filebuf_type* 194s 1515: rdbuf() const 194s 1515: { return const_cast<__filebuf_type*>(&_M_filebuf); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: is_open() 194s 1515: { return _M_filebuf.is_open(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: is_open() const 194s 1515: { return _M_filebuf.is_open(); } 194s 1515: # 1246 "/usr/include/c++/15/fstream" 3 4 194s 1515: void 194s 1515: open(const char* __s, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out) 194s 1515: { 194s 1515: if (!_M_filebuf.open(__s, __mode)) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: else 194s 1515: 194s 1515: 194s 1515: this->clear(); 194s 1515: } 194s 1515: # 1287 "/usr/include/c++/15/fstream" 3 4 194s 1515: void 194s 1515: open(const std::string& __s, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out) 194s 1515: { 194s 1515: if (!_M_filebuf.open(__s, __mode)) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: else 194s 1515: 194s 1515: 194s 1515: this->clear(); 194s 1515: } 194s 1515: # 1322 "/usr/include/c++/15/fstream" 3 4 194s 1515: void 194s 1515: close() 194s 1515: { 194s 1515: if (!_M_filebuf.close()) 194s 1515: this->setstate(ios_base::failbit); 194s 1515: } 194s 1515: # 1337 "/usr/include/c++/15/fstream" 3 4 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(basic_filebuf<_CharT, _Traits>& __x, 194s 1515: basic_filebuf<_CharT, _Traits>& __y) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(basic_ifstream<_CharT, _Traits>& __x, 194s 1515: basic_ifstream<_CharT, _Traits>& __y) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(basic_ofstream<_CharT, _Traits>& __x, 194s 1515: basic_ofstream<_CharT, _Traits>& __y) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(basic_fstream<_CharT, _Traits>& __x, 194s 1515: basic_fstream<_CharT, _Traits>& __y) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/fstream.tcc" 1 3 4 194s 1515: # 41 "/usr/include/c++/15/bits/fstream.tcc" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: _M_allocate_internal_buffer() 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (!_M_buf_allocated && !_M_buf) 194s 1515: { 194s 1515: _M_buf = new char_type[_M_buf_size]; 194s 1515: _M_buf_allocated = true; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: _M_destroy_internal_buffer() throw() 194s 1515: { 194s 1515: if (_M_buf_allocated) 194s 1515: { 194s 1515: delete [] _M_buf; 194s 1515: _M_buf = 0; 194s 1515: _M_buf_allocated = false; 194s 1515: } 194s 1515: delete [] _M_ext_buf; 194s 1515: _M_ext_buf = 0; 194s 1515: _M_ext_buf_size = 0; 194s 1515: _M_ext_next = 0; 194s 1515: _M_ext_end = 0; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock), 194s 1515: _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(), 194s 1515: _M_state_last(), _M_buf(0), _M_buf_size(8192), 194s 1515: _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(), 194s 1515: _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false), 194s 1515: _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0), 194s 1515: _M_ext_end(0) 194s 1515: { 194s 1515: _M_codecvt = std::__try_use_facet<__codecvt_type>(this->_M_buf_locale); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: basic_filebuf(basic_filebuf&& __rhs) 194s 1515: : __streambuf_type(__rhs), 194s 1515: _M_lock(), _M_file(std::move(__rhs._M_file), &_M_lock), 194s 1515: _M_mode(std::__exchange(__rhs._M_mode, ios_base::openmode(0))), 194s 1515: _M_state_beg(std::move(__rhs._M_state_beg)), 194s 1515: _M_state_cur(std::move(__rhs._M_state_cur)), 194s 1515: _M_state_last(std::move(__rhs._M_state_last)), 194s 1515: _M_buf(std::__exchange(__rhs._M_buf, nullptr)), 194s 1515: _M_buf_size(std::__exchange(__rhs._M_buf_size, 1)), 194s 1515: _M_buf_allocated(std::__exchange(__rhs._M_buf_allocated, false)), 194s 1515: _M_reading(std::__exchange(__rhs._M_reading, false)), 194s 1515: _M_writing(std::__exchange(__rhs._M_writing, false)), 194s 1515: _M_pback(__rhs._M_pback), 194s 1515: _M_pback_cur_save(std::__exchange(__rhs._M_pback_cur_save, nullptr)), 194s 1515: _M_pback_end_save(std::__exchange(__rhs._M_pback_end_save, nullptr)), 194s 1515: _M_pback_init(std::__exchange(__rhs._M_pback_init, false)), 194s 1515: _M_codecvt(__rhs._M_codecvt), 194s 1515: _M_ext_buf(std::__exchange(__rhs._M_ext_buf, nullptr)), 194s 1515: _M_ext_buf_size(std::__exchange(__rhs._M_ext_buf_size, 0)), 194s 1515: _M_ext_next(std::__exchange(__rhs._M_ext_next, nullptr)), 194s 1515: _M_ext_end(std::__exchange(__rhs._M_ext_end, nullptr)) 194s 1515: { 194s 1515: __rhs._M_set_buffer(-1); 194s 1515: __rhs._M_state_last = __rhs._M_state_cur = __rhs._M_state_beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: basic_filebuf<_CharT, _Traits>& 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: operator=(basic_filebuf&& __rhs) 194s 1515: { 194s 1515: this->close(); 194s 1515: __streambuf_type::operator=(__rhs); 194s 1515: _M_file.swap(__rhs._M_file); 194s 1515: _M_mode = std::__exchange(__rhs._M_mode, ios_base::openmode(0)); 194s 1515: _M_state_beg = std::move(__rhs._M_state_beg); 194s 1515: _M_state_cur = std::move(__rhs._M_state_cur); 194s 1515: _M_state_last = std::move(__rhs._M_state_last); 194s 1515: _M_buf = std::__exchange(__rhs._M_buf, nullptr); 194s 1515: _M_buf_size = std::__exchange(__rhs._M_buf_size, 1); 194s 1515: _M_buf_allocated = std::__exchange(__rhs._M_buf_allocated, false); 194s 1515: _M_ext_buf = std::__exchange(__rhs._M_ext_buf, nullptr); 194s 1515: _M_ext_buf_size = std::__exchange(__rhs._M_ext_buf_size, 0); 194s 1515: _M_ext_next = std::__exchange(__rhs._M_ext_next, nullptr); 194s 1515: _M_ext_end = std::__exchange(__rhs._M_ext_end, nullptr); 194s 1515: _M_reading = std::__exchange(__rhs._M_reading, false); 194s 1515: _M_writing = std::__exchange(__rhs._M_writing, false); 194s 1515: _M_pback_cur_save = std::__exchange(__rhs._M_pback_cur_save, nullptr); 194s 1515: _M_pback_end_save = std::__exchange(__rhs._M_pback_end_save, nullptr); 194s 1515: _M_pback_init = std::__exchange(__rhs._M_pback_init, false); 194s 1515: __rhs._M_set_buffer(-1); 194s 1515: __rhs._M_state_last = __rhs._M_state_cur = __rhs._M_state_beg; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: swap(basic_filebuf& __rhs) 194s 1515: { 194s 1515: __streambuf_type::swap(__rhs); 194s 1515: _M_file.swap(__rhs._M_file); 194s 1515: std::swap(_M_mode, __rhs._M_mode); 194s 1515: std::swap(_M_state_beg, __rhs._M_state_beg); 194s 1515: std::swap(_M_state_cur, __rhs._M_state_cur); 194s 1515: std::swap(_M_state_last, __rhs._M_state_last); 194s 1515: std::swap(_M_buf, __rhs._M_buf); 194s 1515: std::swap(_M_buf_size, __rhs._M_buf_size); 194s 1515: std::swap(_M_buf_allocated, __rhs._M_buf_allocated); 194s 1515: std::swap(_M_ext_buf, __rhs._M_ext_buf); 194s 1515: std::swap(_M_ext_buf_size, __rhs._M_ext_buf_size); 194s 1515: std::swap(_M_ext_next, __rhs._M_ext_next); 194s 1515: std::swap(_M_ext_end, __rhs._M_ext_end); 194s 1515: std::swap(_M_reading, __rhs._M_reading); 194s 1515: std::swap(_M_writing, __rhs._M_writing); 194s 1515: std::swap(_M_pback_cur_save, __rhs._M_pback_cur_save); 194s 1515: std::swap(_M_pback_end_save, __rhs._M_pback_end_save); 194s 1515: std::swap(_M_pback_init, __rhs._M_pback_init); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: typename basic_filebuf<_CharT, _Traits>::__filebuf_type* 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: open(const char* __s, ios_base::openmode __mode) 194s 1515: { 194s 1515: __filebuf_type *__ret = 0; 194s 1515: if (!this->is_open()) 194s 1515: { 194s 1515: _M_file.open(__s, __mode); 194s 1515: if (this->is_open()) 194s 1515: { 194s 1515: _M_allocate_internal_buffer(); 194s 1515: _M_mode = __mode; 194s 1515: 194s 1515: 194s 1515: _M_reading = false; 194s 1515: _M_writing = false; 194s 1515: _M_set_buffer(-1); 194s 1515: 194s 1515: 194s 1515: _M_state_last = _M_state_cur = _M_state_beg; 194s 1515: 194s 1515: 194s 1515: if ((__mode & ios_base::ate) 194s 1515: && this->seekoff(0, ios_base::end, __mode) 194s 1515: == pos_type(off_type(-1))) 194s 1515: this->close(); 194s 1515: else 194s 1515: __ret = this; 194s 1515: } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: # 251 "/usr/include/c++/15/bits/fstream.tcc" 3 4 194s 1515: template 194s 1515: typename basic_filebuf<_CharT, _Traits>::__filebuf_type* 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: close() 194s 1515: { 194s 1515: if (!this->is_open()) 194s 1515: return 0; 194s 1515: 194s 1515: bool __testfail = false; 194s 1515: { 194s 1515: 194s 1515: struct __close_sentry 194s 1515: { 194s 1515: basic_filebuf *__fb; 194s 1515: __close_sentry (basic_filebuf *__fbi): __fb(__fbi) { } 194s 1515: ~__close_sentry () 194s 1515: { 194s 1515: __fb->_M_mode = ios_base::openmode(0); 194s 1515: __fb->_M_pback_init = false; 194s 1515: __fb->_M_destroy_internal_buffer(); 194s 1515: __fb->_M_reading = false; 194s 1515: __fb->_M_writing = false; 194s 1515: __fb->_M_set_buffer(-1); 194s 1515: __fb->_M_state_last = __fb->_M_state_cur = __fb->_M_state_beg; 194s 1515: } 194s 1515: } __cs (this); 194s 1515: 194s 1515: try 194s 1515: { 194s 1515: if (!_M_terminate_output()) 194s 1515: __testfail = true; 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: _M_file.close(); 194s 1515: throw; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: if (!_M_file.close()) 194s 1515: __testfail = true; 194s 1515: 194s 1515: if (__testfail) 194s 1515: return 0; 194s 1515: else 194s 1515: return this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: streamsize 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: showmanyc() 194s 1515: { 194s 1515: streamsize __ret = -1; 194s 1515: const bool __testin = _M_mode & ios_base::in; 194s 1515: if (__testin && this->is_open()) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: __ret = this->egptr() - this->gptr(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__check_facet(_M_codecvt).encoding() >= 0) 194s 1515: 194s 1515: __ret += _M_file.showmanyc() / _M_codecvt->max_length(); 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_filebuf<_CharT, _Traits>::int_type 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: underflow() 194s 1515: { 194s 1515: int_type __ret = traits_type::eof(); 194s 1515: const bool __testin = _M_mode & ios_base::in; 194s 1515: if (__testin) 194s 1515: { 194s 1515: if (_M_writing) 194s 1515: { 194s 1515: if (overflow() == traits_type::eof()) 194s 1515: return __ret; 194s 1515: _M_set_buffer(-1); 194s 1515: _M_writing = false; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_destroy_pback(); 194s 1515: 194s 1515: if (this->gptr() < this->egptr()) 194s 1515: return traits_type::to_int_type(*this->gptr()); 194s 1515: 194s 1515: 194s 1515: const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; 194s 1515: 194s 1515: 194s 1515: bool __got_eof = false; 194s 1515: 194s 1515: streamsize __ilen = 0; 194s 1515: codecvt_base::result __r = codecvt_base::ok; 194s 1515: if (__check_facet(_M_codecvt).always_noconv()) 194s 1515: { 194s 1515: __ilen = _M_file.xsgetn(reinterpret_cast(this->eback()), 194s 1515: __buflen); 194s 1515: if (__ilen == 0) 194s 1515: __got_eof = true; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const int __enc = _M_codecvt->encoding(); 194s 1515: streamsize __blen; 194s 1515: streamsize __rlen; 194s 1515: if (__enc > 0) 194s 1515: __blen = __rlen = __buflen * __enc; 194s 1515: else 194s 1515: { 194s 1515: __blen = __buflen + _M_codecvt->max_length() - 1; 194s 1515: __rlen = __buflen; 194s 1515: } 194s 1515: const streamsize __remainder = _M_ext_end - _M_ext_next; 194s 1515: __rlen = __rlen > __remainder ? __rlen - __remainder : 0; 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (_M_reading && this->egptr() == this->eback() && __remainder) 194s 1515: __rlen = 0; 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (_M_ext_buf_size < __blen) 194s 1515: { 194s 1515: char* __buf = new char[__blen]; 194s 1515: if (__remainder) 194s 1515: __builtin_memcpy(__buf, _M_ext_next, __remainder); 194s 1515: 194s 1515: delete [] _M_ext_buf; 194s 1515: _M_ext_buf = __buf; 194s 1515: _M_ext_buf_size = __blen; 194s 1515: } 194s 1515: else if (__remainder) 194s 1515: __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); 194s 1515: 194s 1515: _M_ext_next = _M_ext_buf; 194s 1515: _M_ext_end = _M_ext_buf + __remainder; 194s 1515: _M_state_last = _M_state_cur; 194s 1515: 194s 1515: do 194s 1515: { 194s 1515: if (__rlen > 0) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size) 194s 1515: { 194s 1515: __throw_ios_failure(("basic_filebuf::underflow " "codecvt::max_length() " "is not valid") 194s 1515: 194s 1515: ); 194s 1515: } 194s 1515: streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen); 194s 1515: if (__elen == 0) 194s 1515: __got_eof = true; 194s 1515: else if (__elen == -1) 194s 1515: break; 194s 1515: _M_ext_end += __elen; 194s 1515: } 194s 1515: 194s 1515: char_type* __iend = this->eback(); 194s 1515: if (_M_ext_next < _M_ext_end) 194s 1515: __r = _M_codecvt->in(_M_state_cur, _M_ext_next, 194s 1515: _M_ext_end, _M_ext_next, 194s 1515: this->eback(), 194s 1515: this->eback() + __buflen, __iend); 194s 1515: if (__r == codecvt_base::noconv) 194s 1515: { 194s 1515: size_t __avail = _M_ext_end - _M_ext_buf; 194s 1515: __ilen = std::min(__avail, __buflen); 194s 1515: traits_type::copy(this->eback(), 194s 1515: reinterpret_cast 194s 1515: (_M_ext_buf), __ilen); 194s 1515: _M_ext_next = _M_ext_buf + __ilen; 194s 1515: } 194s 1515: else 194s 1515: __ilen = __iend - this->eback(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__r == codecvt_base::error) 194s 1515: break; 194s 1515: 194s 1515: __rlen = 1; 194s 1515: } 194s 1515: while (__ilen == 0 && !__got_eof); 194s 1515: } 194s 1515: 194s 1515: if (__ilen > 0) 194s 1515: { 194s 1515: _M_set_buffer(__ilen); 194s 1515: _M_reading = true; 194s 1515: __ret = traits_type::to_int_type(*this->gptr()); 194s 1515: } 194s 1515: else if (__got_eof) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_set_buffer(-1); 194s 1515: _M_reading = false; 194s 1515: 194s 1515: 194s 1515: if (__r == codecvt_base::partial) 194s 1515: __throw_ios_failure(("basic_filebuf::underflow " "incomplete character in file") 194s 1515: ); 194s 1515: } 194s 1515: else if (__r == codecvt_base::error) 194s 1515: __throw_ios_failure(("basic_filebuf::underflow " "invalid byte sequence in file") 194s 1515: ); 194s 1515: else 194s 1515: __throw_ios_failure(("basic_filebuf::underflow " "error reading the file") 194s 1515: , (*__errno_location ())); 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_filebuf<_CharT, _Traits>::int_type 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: pbackfail(int_type __i) 194s 1515: { 194s 1515: int_type __ret = traits_type::eof(); 194s 1515: const bool __testin = _M_mode & ios_base::in; 194s 1515: if (__testin) 194s 1515: { 194s 1515: if (_M_writing) 194s 1515: { 194s 1515: if (overflow() == traits_type::eof()) 194s 1515: return __ret; 194s 1515: _M_set_buffer(-1); 194s 1515: _M_writing = false; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const bool __testpb = _M_pback_init; 194s 1515: const bool __testeof = traits_type::eq_int_type(__i, __ret); 194s 1515: int_type __tmp; 194s 1515: if (this->eback() < this->gptr()) 194s 1515: { 194s 1515: this->gbump(-1); 194s 1515: __tmp = traits_type::to_int_type(*this->gptr()); 194s 1515: } 194s 1515: else if (this->seekoff(-1, ios_base::cur) != pos_type(off_type(-1))) 194s 1515: { 194s 1515: __tmp = this->underflow(); 194s 1515: if (traits_type::eq_int_type(__tmp, __ret)) 194s 1515: return __ret; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (!__testeof && traits_type::eq_int_type(__i, __tmp)) 194s 1515: __ret = __i; 194s 1515: else if (__testeof) 194s 1515: __ret = traits_type::not_eof(__i); 194s 1515: else if (!__testpb) 194s 1515: { 194s 1515: _M_create_pback(); 194s 1515: _M_reading = true; 194s 1515: *this->gptr() = traits_type::to_char_type(__i); 194s 1515: __ret = __i; 194s 1515: } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_filebuf<_CharT, _Traits>::int_type 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: overflow(int_type __c) 194s 1515: { 194s 1515: int_type __ret = traits_type::eof(); 194s 1515: const bool __testeof = traits_type::eq_int_type(__c, __ret); 194s 1515: const bool __testout = (_M_mode & ios_base::out 194s 1515: || _M_mode & ios_base::app); 194s 1515: if (__testout) 194s 1515: { 194s 1515: if (_M_reading) 194s 1515: { 194s 1515: _M_destroy_pback(); 194s 1515: const int __gptr_off = _M_get_ext_pos(_M_state_last); 194s 1515: if (_M_seek(__gptr_off, ios_base::cur, _M_state_last) 194s 1515: == pos_type(off_type(-1))) 194s 1515: return __ret; 194s 1515: } 194s 1515: if (this->pbase() < this->pptr()) 194s 1515: { 194s 1515: 194s 1515: if (!__testeof) 194s 1515: { 194s 1515: *this->pptr() = traits_type::to_char_type(__c); 194s 1515: this->pbump(1); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (_M_convert_to_external(this->pbase(), 194s 1515: this->pptr() - this->pbase())) 194s 1515: { 194s 1515: _M_set_buffer(0); 194s 1515: __ret = traits_type::not_eof(__c); 194s 1515: } 194s 1515: } 194s 1515: else if (_M_buf_size > 1) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_set_buffer(0); 194s 1515: _M_writing = true; 194s 1515: if (!__testeof) 194s 1515: { 194s 1515: *this->pptr() = traits_type::to_char_type(__c); 194s 1515: this->pbump(1); 194s 1515: } 194s 1515: __ret = traits_type::not_eof(__c); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: char_type __conv = traits_type::to_char_type(__c); 194s 1515: if (__testeof || _M_convert_to_external(&__conv, 1)) 194s 1515: { 194s 1515: _M_writing = true; 194s 1515: __ret = traits_type::not_eof(__c); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: _M_convert_to_external(_CharT* __ibuf, streamsize __ilen) 194s 1515: { 194s 1515: 194s 1515: streamsize __elen; 194s 1515: streamsize __plen; 194s 1515: if (__check_facet(_M_codecvt).always_noconv()) 194s 1515: { 194s 1515: __elen = _M_file.xsputn(reinterpret_cast(__ibuf), __ilen); 194s 1515: __plen = __ilen; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: streamsize __blen = __ilen * _M_codecvt->max_length(); 194s 1515: char* __buf = static_cast(__builtin_alloca(__blen)); 194s 1515: 194s 1515: char* __bend; 194s 1515: const char_type* __iend; 194s 1515: codecvt_base::result __r; 194s 1515: __r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen, 194s 1515: __iend, __buf, __buf + __blen, __bend); 194s 1515: 194s 1515: if (__r == codecvt_base::ok || __r == codecvt_base::partial) 194s 1515: __blen = __bend - __buf; 194s 1515: else if (__r == codecvt_base::noconv) 194s 1515: { 194s 1515: 194s 1515: __buf = reinterpret_cast(__ibuf); 194s 1515: __blen = __ilen; 194s 1515: } 194s 1515: else 194s 1515: __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error") 194s 1515: ); 194s 1515: 194s 1515: __elen = _M_file.xsputn(__buf, __blen); 194s 1515: __plen = __blen; 194s 1515: 194s 1515: 194s 1515: if (__r == codecvt_base::partial && __elen == __plen) 194s 1515: { 194s 1515: const char_type* __iresume = __iend; 194s 1515: streamsize __rlen = this->pptr() - __iend; 194s 1515: __r = _M_codecvt->out(_M_state_cur, __iresume, 194s 1515: __iresume + __rlen, __iend, __buf, 194s 1515: __buf + __blen, __bend); 194s 1515: if (__r != codecvt_base::error) 194s 1515: { 194s 1515: __rlen = __bend - __buf; 194s 1515: __elen = _M_file.xsputn(__buf, __rlen); 194s 1515: __plen = __rlen; 194s 1515: } 194s 1515: else 194s 1515: __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error") 194s 1515: ); 194s 1515: } 194s 1515: } 194s 1515: return __elen == __plen; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: streamsize 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: xsgetn(_CharT* __s, streamsize __n) 194s 1515: { 194s 1515: 194s 1515: streamsize __ret = 0; 194s 1515: if (_M_pback_init) 194s 1515: { 194s 1515: if (__n > 0 && this->gptr() == this->eback()) 194s 1515: { 194s 1515: *__s++ = *this->gptr(); 194s 1515: this->gbump(1); 194s 1515: __ret = 1; 194s 1515: --__n; 194s 1515: } 194s 1515: _M_destroy_pback(); 194s 1515: } 194s 1515: else if (_M_writing) 194s 1515: { 194s 1515: if (overflow() == traits_type::eof()) 194s 1515: return __ret; 194s 1515: _M_set_buffer(-1); 194s 1515: _M_writing = false; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const bool __testin = _M_mode & ios_base::in; 194s 1515: const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; 194s 1515: 194s 1515: if (__n > __buflen && __check_facet(_M_codecvt).always_noconv() 194s 1515: && __testin) 194s 1515: { 194s 1515: 194s 1515: const streamsize __avail = this->egptr() - this->gptr(); 194s 1515: if (__avail != 0) 194s 1515: { 194s 1515: traits_type::copy(__s, this->gptr(), __avail); 194s 1515: __s += __avail; 194s 1515: this->setg(this->eback(), this->gptr() + __avail, this->egptr()); 194s 1515: __ret += __avail; 194s 1515: __n -= __avail; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: streamsize __len; 194s 1515: for (;;) 194s 1515: { 194s 1515: __len = _M_file.xsgetn(reinterpret_cast(__s), __n); 194s 1515: if (__len == -1) 194s 1515: __throw_ios_failure(("basic_filebuf::xsgetn " "error reading the file") 194s 1515: , (*__errno_location ())); 194s 1515: if (__len == 0) 194s 1515: break; 194s 1515: 194s 1515: __n -= __len; 194s 1515: __ret += __len; 194s 1515: if (__n == 0) 194s 1515: break; 194s 1515: 194s 1515: __s += __len; 194s 1515: } 194s 1515: 194s 1515: if (__n == 0) 194s 1515: { 194s 1515: 194s 1515: _M_reading = true; 194s 1515: } 194s 1515: else if (__len == 0) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_set_buffer(-1); 194s 1515: _M_reading = false; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: __ret += __streambuf_type::xsgetn(__s, __n); 194s 1515: 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: streamsize 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: xsputn(const _CharT* __s, streamsize __n) 194s 1515: { 194s 1515: streamsize __ret = 0; 194s 1515: 194s 1515: 194s 1515: 194s 1515: const bool __testout = (_M_mode & ios_base::out 194s 1515: || _M_mode & ios_base::app); 194s 1515: if (__check_facet(_M_codecvt).always_noconv() 194s 1515: && __testout && !_M_reading) 194s 1515: { 194s 1515: streamsize __bufavail = this->epptr() - this->pptr(); 194s 1515: 194s 1515: 194s 1515: if (!_M_writing && _M_buf_size > 1) 194s 1515: __bufavail = _M_buf_size - 1; 194s 1515: 194s 1515: if (__n >= __bufavail) 194s 1515: { 194s 1515: const streamsize __buffill = this->pptr() - this->pbase(); 194s 1515: const char* __buf = reinterpret_cast(this->pbase()); 194s 1515: __ret = _M_file.xsputn_2(__buf, __buffill, 194s 1515: reinterpret_cast(__s), 194s 1515: __n); 194s 1515: if (__ret == __buffill + __n) 194s 1515: { 194s 1515: _M_set_buffer(0); 194s 1515: _M_writing = true; 194s 1515: } 194s 1515: if (__ret > __buffill) 194s 1515: __ret -= __buffill; 194s 1515: else 194s 1515: __ret = 0; 194s 1515: } 194s 1515: else 194s 1515: __ret = __streambuf_type::xsputn(__s, __n); 194s 1515: } 194s 1515: else 194s 1515: __ret = __streambuf_type::xsputn(__s, __n); 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_filebuf<_CharT, _Traits>::__streambuf_type* 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: setbuf(char_type* __s, streamsize __n) 194s 1515: { 194s 1515: if (!this->is_open()) 194s 1515: { 194s 1515: if (__s == 0 && __n == 0) 194s 1515: _M_buf_size = 1; 194s 1515: else if (__s && __n > 0) 194s 1515: { 194s 1515: # 821 "/usr/include/c++/15/bits/fstream.tcc" 3 4 194s 1515: _M_buf = __s; 194s 1515: _M_buf_size = __n; 194s 1515: } 194s 1515: } 194s 1515: return this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: typename basic_filebuf<_CharT, _Traits>::pos_type 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode) 194s 1515: { 194s 1515: int __width = 0; 194s 1515: if (_M_codecvt) 194s 1515: __width = _M_codecvt->encoding(); 194s 1515: if (__width < 0) 194s 1515: __width = 0; 194s 1515: 194s 1515: pos_type __ret = pos_type(off_type(-1)); 194s 1515: const bool __testfail = __off != 0 && __width <= 0; 194s 1515: if (this->is_open() && !__testfail) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: bool __no_movement = __way == ios_base::cur && __off == 0 194s 1515: && (!_M_writing || _M_codecvt->always_noconv()); 194s 1515: 194s 1515: 194s 1515: if (!__no_movement) 194s 1515: _M_destroy_pback(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __state_type __state = _M_state_beg; 194s 1515: off_type __computed_off = __off * __width; 194s 1515: if (_M_reading && __way == ios_base::cur) 194s 1515: { 194s 1515: __state = _M_state_last; 194s 1515: __computed_off += _M_get_ext_pos(__state); 194s 1515: } 194s 1515: if (!__no_movement) 194s 1515: __ret = _M_seek(__computed_off, __way, __state); 194s 1515: else 194s 1515: { 194s 1515: if (_M_writing) 194s 1515: __computed_off = this->pptr() - this->pbase(); 194s 1515: 194s 1515: off_type __file_off = _M_file.seekoff(0, ios_base::cur); 194s 1515: if (__file_off != off_type(-1)) 194s 1515: { 194s 1515: __ret = __file_off + __computed_off; 194s 1515: __ret.state(__state); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: typename basic_filebuf<_CharT, _Traits>::pos_type 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: seekpos(pos_type __pos, ios_base::openmode) 194s 1515: { 194s 1515: pos_type __ret = pos_type(off_type(-1)); 194s 1515: if (this->is_open()) 194s 1515: { 194s 1515: 194s 1515: _M_destroy_pback(); 194s 1515: __ret = _M_seek(off_type(__pos), ios_base::beg, __pos.state()); 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_filebuf<_CharT, _Traits>::pos_type 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state) 194s 1515: { 194s 1515: pos_type __ret = pos_type(off_type(-1)); 194s 1515: if (_M_terminate_output()) 194s 1515: { 194s 1515: off_type __file_off = _M_file.seekoff(__off, __way); 194s 1515: if (__file_off != off_type(-1)) 194s 1515: { 194s 1515: _M_reading = false; 194s 1515: _M_writing = false; 194s 1515: _M_ext_next = _M_ext_end = _M_ext_buf; 194s 1515: _M_set_buffer(-1); 194s 1515: _M_state_cur = __state; 194s 1515: __ret = __file_off; 194s 1515: __ret.state(_M_state_cur); 194s 1515: } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: int basic_filebuf<_CharT, _Traits>:: 194s 1515: _M_get_ext_pos(__state_type& __state) 194s 1515: { 194s 1515: if (_M_codecvt->always_noconv()) 194s 1515: return this->gptr() - this->egptr(); 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: const int __gptr_off = 194s 1515: _M_codecvt->length(__state, _M_ext_buf, _M_ext_next, 194s 1515: this->gptr() - this->eback()); 194s 1515: return _M_ext_buf + __gptr_off - _M_ext_end; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: _M_terminate_output() 194s 1515: { 194s 1515: 194s 1515: bool __testvalid = true; 194s 1515: if (this->pbase() < this->pptr()) 194s 1515: { 194s 1515: const int_type __tmp = this->overflow(); 194s 1515: if (traits_type::eq_int_type(__tmp, traits_type::eof())) 194s 1515: __testvalid = false; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (_M_writing && !__check_facet(_M_codecvt).always_noconv() 194s 1515: && __testvalid) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: const size_t __blen = 128; 194s 1515: char __buf[__blen]; 194s 1515: codecvt_base::result __r; 194s 1515: streamsize __ilen = 0; 194s 1515: 194s 1515: do 194s 1515: { 194s 1515: char* __next; 194s 1515: __r = _M_codecvt->unshift(_M_state_cur, __buf, 194s 1515: __buf + __blen, __next); 194s 1515: if (__r == codecvt_base::error) 194s 1515: __testvalid = false; 194s 1515: else if (__r == codecvt_base::ok || 194s 1515: __r == codecvt_base::partial) 194s 1515: { 194s 1515: __ilen = __next - __buf; 194s 1515: if (__ilen > 0) 194s 1515: { 194s 1515: const streamsize __elen = _M_file.xsputn(__buf, __ilen); 194s 1515: if (__elen != __ilen) 194s 1515: __testvalid = false; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: while (__r == codecvt_base::partial && __ilen > 0 && __testvalid); 194s 1515: 194s 1515: if (__testvalid) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const int_type __tmp = this->overflow(); 194s 1515: if (traits_type::eq_int_type(__tmp, traits_type::eof())) 194s 1515: __testvalid = false; 194s 1515: } 194s 1515: } 194s 1515: return __testvalid; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: int 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: sync() 194s 1515: { 194s 1515: 194s 1515: 194s 1515: int __ret = 0; 194s 1515: if (this->pbase() < this->pptr()) 194s 1515: { 194s 1515: const int_type __tmp = this->overflow(); 194s 1515: if (traits_type::eq_int_type(__tmp, traits_type::eof())) 194s 1515: __ret = -1; 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: basic_filebuf<_CharT, _Traits>:: 194s 1515: imbue(const locale& __loc) 194s 1515: { 194s 1515: bool __testvalid = true; 194s 1515: 194s 1515: const __codecvt_type* const _M_codecvt_tmp 194s 1515: = __try_use_facet<__codecvt_type>(__loc); 194s 1515: 194s 1515: if (this->is_open()) 194s 1515: { 194s 1515: 194s 1515: if ((_M_reading || _M_writing) 194s 1515: && __check_facet(_M_codecvt).encoding() == -1) 194s 1515: __testvalid = false; 194s 1515: else 194s 1515: { 194s 1515: if (_M_reading) 194s 1515: { 194s 1515: if (__check_facet(_M_codecvt).always_noconv()) 194s 1515: { 194s 1515: if (_M_codecvt_tmp 194s 1515: && !__check_facet(_M_codecvt_tmp).always_noconv()) 194s 1515: __testvalid = this->seekoff(0, ios_base::cur, _M_mode) 194s 1515: != pos_type(off_type(-1)); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: _M_ext_next = _M_ext_buf 194s 1515: + _M_codecvt->length(_M_state_last, _M_ext_buf, 194s 1515: _M_ext_next, 194s 1515: this->gptr() - this->eback()); 194s 1515: const streamsize __remainder = _M_ext_end - _M_ext_next; 194s 1515: if (__remainder) 194s 1515: __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); 194s 1515: 194s 1515: _M_ext_next = _M_ext_buf; 194s 1515: _M_ext_end = _M_ext_buf + __remainder; 194s 1515: _M_set_buffer(-1); 194s 1515: _M_state_last = _M_state_cur = _M_state_beg; 194s 1515: } 194s 1515: } 194s 1515: else if (_M_writing && (__testvalid = _M_terminate_output())) 194s 1515: _M_set_buffer(-1); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: if (__testvalid) 194s 1515: _M_codecvt = _M_codecvt_tmp; 194s 1515: else 194s 1515: _M_codecvt = 0; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern template class basic_filebuf; 194s 1515: extern template class basic_ifstream; 194s 1515: extern template class basic_ofstream; 194s 1515: extern template class basic_fstream; 194s 1515: 194s 1515: 194s 1515: extern template class basic_filebuf; 194s 1515: extern template class basic_ifstream; 194s 1515: extern template class basic_ofstream; 194s 1515: extern template class basic_fstream; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 1373 "/usr/include/c++/15/fstream" 2 3 4 194s 1515: # 3164 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/sstream" 1 3 4 194s 1515: # 57 "/usr/include/c++/15/sstream" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: namespace __cxx11 { 194s 1515: # 80 "/usr/include/c++/15/sstream" 3 4 194s 1515: template 194s 1515: class basic_stringbuf : public basic_streambuf<_CharT, _Traits> 194s 1515: { 194s 1515: struct __xfer_bufptrs; 194s 1515: 194s 1515: 194s 1515: using allocator_traits = std::allocator_traits<_Alloc>; 194s 1515: using _Noexcept_swap 194s 1515: = __or_; 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: 194s 1515: 194s 1515: typedef _Alloc allocator_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: typedef typename traits_type::pos_type pos_type; 194s 1515: typedef typename traits_type::off_type off_type; 194s 1515: 194s 1515: typedef basic_streambuf __streambuf_type; 194s 1515: typedef basic_string __string_type; 194s 1515: typedef typename __string_type::size_type __size_type; 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: ios_base::openmode _M_mode; 194s 1515: 194s 1515: 194s 1515: __string_type _M_string; 194s 1515: 194s 1515: public: 194s 1515: # 123 "/usr/include/c++/15/sstream" 3 4 194s 1515: basic_stringbuf() 194s 1515: : __streambuf_type(), _M_mode(ios_base::in | ios_base::out), _M_string() 194s 1515: { } 194s 1515: # 134 "/usr/include/c++/15/sstream" 3 4 194s 1515: explicit 194s 1515: basic_stringbuf(ios_base::openmode __mode) 194s 1515: : __streambuf_type(), _M_mode(__mode), _M_string() 194s 1515: { } 194s 1515: # 147 "/usr/include/c++/15/sstream" 3 4 194s 1515: explicit 194s 1515: basic_stringbuf(const __string_type& __str, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out) 194s 1515: : __streambuf_type(), _M_mode(), 194s 1515: _M_string(__str.data(), __str.size(), __str.get_allocator()) 194s 1515: { _M_stringbuf_init(__mode); } 194s 1515: 194s 1515: 194s 1515: basic_stringbuf(const basic_stringbuf&) = delete; 194s 1515: 194s 1515: basic_stringbuf(basic_stringbuf&& __rhs) 194s 1515: : basic_stringbuf(std::move(__rhs), __xfer_bufptrs(__rhs, this)) 194s 1515: { __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); } 194s 1515: # 211 "/usr/include/c++/15/sstream" 3 4 194s 1515: basic_stringbuf& 194s 1515: operator=(const basic_stringbuf&) = delete; 194s 1515: 194s 1515: basic_stringbuf& 194s 1515: operator=(basic_stringbuf&& __rhs) 194s 1515: { 194s 1515: __xfer_bufptrs __st{__rhs, this}; 194s 1515: const __streambuf_type& __base = __rhs; 194s 1515: __streambuf_type::operator=(__base); 194s 1515: this->pubimbue(__rhs.getloc()); 194s 1515: _M_mode = __rhs._M_mode; 194s 1515: _M_string = std::move(__rhs._M_string); 194s 1515: __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(basic_stringbuf& __rhs) noexcept(_Noexcept_swap::value) 194s 1515: { 194s 1515: __xfer_bufptrs __l_st{*this, std::__addressof(__rhs)}; 194s 1515: __xfer_bufptrs __r_st{__rhs, this}; 194s 1515: __streambuf_type& __base = __rhs; 194s 1515: __streambuf_type::swap(__base); 194s 1515: __rhs.pubimbue(this->pubimbue(__rhs.getloc())); 194s 1515: std::swap(_M_mode, __rhs._M_mode); 194s 1515: std::swap(_M_string, __rhs._M_string); 194s 1515: } 194s 1515: # 250 "/usr/include/c++/15/sstream" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: __string_type 194s 1515: str() const 194s 1515: { 194s 1515: __string_type __ret(_M_string.get_allocator()); 194s 1515: if (char_type* __hi = _M_high_mark()) 194s 1515: __ret.assign(this->pbase(), __hi); 194s 1515: else 194s 1515: __ret = _M_string; 194s 1515: return __ret; 194s 1515: } 194s 1515: # 309 "/usr/include/c++/15/sstream" 3 4 194s 1515: void 194s 1515: str(const __string_type& __s) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: _M_string.assign(__s.data(), __s.size()); 194s 1515: _M_stringbuf_init(_M_mode); 194s 1515: } 194s 1515: # 338 "/usr/include/c++/15/sstream" 3 4 194s 1515: protected: 194s 1515: 194s 1515: void 194s 1515: _M_stringbuf_init(ios_base::openmode __mode) 194s 1515: { 194s 1515: _M_mode = __mode; 194s 1515: __size_type __len = 0; 194s 1515: if (_M_mode & (ios_base::ate | ios_base::app)) 194s 1515: __len = _M_string.size(); 194s 1515: _M_sync(const_cast(_M_string.data()), 0, __len); 194s 1515: } 194s 1515: 194s 1515: virtual streamsize 194s 1515: showmanyc() 194s 1515: { 194s 1515: streamsize __ret = -1; 194s 1515: if (_M_mode & ios_base::in) 194s 1515: { 194s 1515: _M_update_egptr(); 194s 1515: __ret = this->egptr() - this->gptr(); 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: virtual int_type 194s 1515: underflow(); 194s 1515: 194s 1515: virtual int_type 194s 1515: pbackfail(int_type __c = traits_type::eof()); 194s 1515: 194s 1515: virtual int_type 194s 1515: overflow(int_type __c = traits_type::eof()); 194s 1515: # 382 "/usr/include/c++/15/sstream" 3 4 194s 1515: virtual __streambuf_type* 194s 1515: setbuf(char_type* __s, streamsize __n) 194s 1515: { 194s 1515: if (__s && __n >= 0) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_string.clear(); 194s 1515: 194s 1515: 194s 1515: _M_sync(__s, __n, 0); 194s 1515: } 194s 1515: return this; 194s 1515: } 194s 1515: 194s 1515: virtual pos_type 194s 1515: seekoff(off_type __off, ios_base::seekdir __way, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out); 194s 1515: 194s 1515: virtual pos_type 194s 1515: seekpos(pos_type __sp, 194s 1515: ios_base::openmode __mode = ios_base::in | ios_base::out); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_sync(char_type* __base, __size_type __i, __size_type __o); 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_update_egptr() 194s 1515: { 194s 1515: if (char_type* __pptr = this->pptr()) 194s 1515: { 194s 1515: char_type* __egptr = this->egptr(); 194s 1515: if (!__egptr || __pptr > __egptr) 194s 1515: { 194s 1515: if (_M_mode & ios_base::in) 194s 1515: this->setg(this->eback(), this->gptr(), __pptr); 194s 1515: else 194s 1515: this->setg(__pptr, __pptr, __pptr); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off); 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __attribute__((__always_inline__)) 194s 1515: char_type* 194s 1515: _M_high_mark() const noexcept 194s 1515: { 194s 1515: if (char_type* __pptr = this->pptr()) 194s 1515: { 194s 1515: char_type* __egptr = this->egptr(); 194s 1515: if (!__egptr || __pptr > __egptr) 194s 1515: return __pptr; 194s 1515: else 194s 1515: return __egptr; 194s 1515: } 194s 1515: return 0; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct __xfer_bufptrs 194s 1515: { 194s 1515: __xfer_bufptrs(const basic_stringbuf& __from, basic_stringbuf* __to) 194s 1515: : _M_to{__to}, _M_goff{-1, -1, -1}, _M_poff{-1, -1, -1} 194s 1515: { 194s 1515: const _CharT* const __str = __from._M_string.data(); 194s 1515: const _CharT* __end = nullptr; 194s 1515: if (__from.eback()) 194s 1515: { 194s 1515: _M_goff[0] = __from.eback() - __str; 194s 1515: _M_goff[1] = __from.gptr() - __str; 194s 1515: _M_goff[2] = __from.egptr() - __str; 194s 1515: __end = __from.egptr(); 194s 1515: } 194s 1515: if (__from.pbase()) 194s 1515: { 194s 1515: _M_poff[0] = __from.pbase() - __str; 194s 1515: _M_poff[1] = __from.pptr() - __from.pbase(); 194s 1515: _M_poff[2] = __from.epptr() - __str; 194s 1515: if (!__end || __from.pptr() > __end) 194s 1515: __end = __from.pptr(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (__end) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: auto& __mut_from = const_cast(__from); 194s 1515: __mut_from._M_string._M_length(__end - __str); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: ~__xfer_bufptrs() 194s 1515: { 194s 1515: char_type* __str = const_cast(_M_to->_M_string.data()); 194s 1515: if (_M_goff[0] != -1) 194s 1515: _M_to->setg(__str+_M_goff[0], __str+_M_goff[1], __str+_M_goff[2]); 194s 1515: if (_M_poff[0] != -1) 194s 1515: _M_to->_M_pbump(__str+_M_poff[0], __str+_M_poff[2], _M_poff[1]); 194s 1515: } 194s 1515: 194s 1515: basic_stringbuf* _M_to; 194s 1515: off_type _M_goff[3]; 194s 1515: off_type _M_poff[3]; 194s 1515: }; 194s 1515: # 518 "/usr/include/c++/15/sstream" 3 4 194s 1515: basic_stringbuf(basic_stringbuf&& __rhs, __xfer_bufptrs&&) 194s 1515: : __streambuf_type(static_cast(__rhs)), 194s 1515: _M_mode(__rhs._M_mode), _M_string(std::move(__rhs._M_string)) 194s 1515: { } 194s 1515: # 533 "/usr/include/c++/15/sstream" 3 4 194s 1515: }; 194s 1515: # 551 "/usr/include/c++/15/sstream" 3 4 194s 1515: template 194s 1515: class basic_istringstream : public basic_istream<_CharT, _Traits> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: 194s 1515: 194s 1515: typedef _Alloc allocator_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: typedef typename traits_type::pos_type pos_type; 194s 1515: typedef typename traits_type::off_type off_type; 194s 1515: 194s 1515: 194s 1515: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 194s 1515: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; 194s 1515: typedef basic_istream __istream_type; 194s 1515: 194s 1515: private: 194s 1515: __stringbuf_type _M_stringbuf; 194s 1515: 194s 1515: public: 194s 1515: # 585 "/usr/include/c++/15/sstream" 3 4 194s 1515: basic_istringstream() 194s 1515: : __istream_type(), _M_stringbuf(ios_base::in) 194s 1515: { this->init(&_M_stringbuf); } 194s 1515: # 601 "/usr/include/c++/15/sstream" 3 4 194s 1515: explicit 194s 1515: basic_istringstream(ios_base::openmode __mode) 194s 1515: : __istream_type(), _M_stringbuf(__mode | ios_base::in) 194s 1515: { this->init(&_M_stringbuf); } 194s 1515: # 619 "/usr/include/c++/15/sstream" 3 4 194s 1515: explicit 194s 1515: basic_istringstream(const __string_type& __str, 194s 1515: ios_base::openmode __mode = ios_base::in) 194s 1515: : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in) 194s 1515: { this->init(&_M_stringbuf); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ~basic_istringstream() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: basic_istringstream(const basic_istringstream&) = delete; 194s 1515: 194s 1515: basic_istringstream(basic_istringstream&& __rhs) 194s 1515: : __istream_type(std::move(__rhs)), 194s 1515: _M_stringbuf(std::move(__rhs._M_stringbuf)) 194s 1515: { __istream_type::set_rdbuf(&_M_stringbuf); } 194s 1515: # 676 "/usr/include/c++/15/sstream" 3 4 194s 1515: basic_istringstream& 194s 1515: operator=(const basic_istringstream&) = delete; 194s 1515: 194s 1515: basic_istringstream& 194s 1515: operator=(basic_istringstream&& __rhs) 194s 1515: { 194s 1515: __istream_type::operator=(std::move(__rhs)); 194s 1515: _M_stringbuf = std::move(__rhs._M_stringbuf); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(basic_istringstream& __rhs) 194s 1515: { 194s 1515: __istream_type::swap(__rhs); 194s 1515: _M_stringbuf.swap(__rhs._M_stringbuf); 194s 1515: } 194s 1515: # 702 "/usr/include/c++/15/sstream" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: __stringbuf_type* 194s 1515: rdbuf() const 194s 1515: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: __string_type 194s 1515: str() const 194s 1515: { return _M_stringbuf.str(); } 194s 1515: # 744 "/usr/include/c++/15/sstream" 3 4 194s 1515: void 194s 1515: str(const __string_type& __s) 194s 1515: { _M_stringbuf.str(__s); } 194s 1515: # 761 "/usr/include/c++/15/sstream" 3 4 194s 1515: }; 194s 1515: # 779 "/usr/include/c++/15/sstream" 3 4 194s 1515: template 194s 1515: class basic_ostringstream : public basic_ostream<_CharT, _Traits> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: 194s 1515: 194s 1515: typedef _Alloc allocator_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: typedef typename traits_type::pos_type pos_type; 194s 1515: typedef typename traits_type::off_type off_type; 194s 1515: 194s 1515: 194s 1515: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 194s 1515: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; 194s 1515: typedef basic_ostream __ostream_type; 194s 1515: 194s 1515: private: 194s 1515: __stringbuf_type _M_stringbuf; 194s 1515: 194s 1515: public: 194s 1515: # 813 "/usr/include/c++/15/sstream" 3 4 194s 1515: basic_ostringstream() 194s 1515: : __ostream_type(), _M_stringbuf(ios_base::out) 194s 1515: { this->init(&_M_stringbuf); } 194s 1515: # 829 "/usr/include/c++/15/sstream" 3 4 194s 1515: explicit 194s 1515: basic_ostringstream(ios_base::openmode __mode) 194s 1515: : __ostream_type(), _M_stringbuf(__mode | ios_base::out) 194s 1515: { this->init(&_M_stringbuf); } 194s 1515: # 847 "/usr/include/c++/15/sstream" 3 4 194s 1515: explicit 194s 1515: basic_ostringstream(const __string_type& __str, 194s 1515: ios_base::openmode __mode = ios_base::out) 194s 1515: : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out) 194s 1515: { this->init(&_M_stringbuf); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ~basic_ostringstream() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: basic_ostringstream(const basic_ostringstream&) = delete; 194s 1515: 194s 1515: basic_ostringstream(basic_ostringstream&& __rhs) 194s 1515: : __ostream_type(std::move(__rhs)), 194s 1515: _M_stringbuf(std::move(__rhs._M_stringbuf)) 194s 1515: { __ostream_type::set_rdbuf(&_M_stringbuf); } 194s 1515: # 904 "/usr/include/c++/15/sstream" 3 4 194s 1515: basic_ostringstream& 194s 1515: operator=(const basic_ostringstream&) = delete; 194s 1515: 194s 1515: basic_ostringstream& 194s 1515: operator=(basic_ostringstream&& __rhs) 194s 1515: { 194s 1515: __ostream_type::operator=(std::move(__rhs)); 194s 1515: _M_stringbuf = std::move(__rhs._M_stringbuf); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(basic_ostringstream& __rhs) 194s 1515: { 194s 1515: __ostream_type::swap(__rhs); 194s 1515: _M_stringbuf.swap(__rhs._M_stringbuf); 194s 1515: } 194s 1515: # 930 "/usr/include/c++/15/sstream" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: __stringbuf_type* 194s 1515: rdbuf() const 194s 1515: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: __string_type 194s 1515: str() const 194s 1515: { return _M_stringbuf.str(); } 194s 1515: # 972 "/usr/include/c++/15/sstream" 3 4 194s 1515: void 194s 1515: str(const __string_type& __s) 194s 1515: { _M_stringbuf.str(__s); } 194s 1515: # 989 "/usr/include/c++/15/sstream" 3 4 194s 1515: }; 194s 1515: # 1007 "/usr/include/c++/15/sstream" 3 4 194s 1515: template 194s 1515: class basic_stringstream : public basic_iostream<_CharT, _Traits> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _Traits traits_type; 194s 1515: 194s 1515: 194s 1515: typedef _Alloc allocator_type; 194s 1515: typedef typename traits_type::int_type int_type; 194s 1515: typedef typename traits_type::pos_type pos_type; 194s 1515: typedef typename traits_type::off_type off_type; 194s 1515: 194s 1515: 194s 1515: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 194s 1515: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; 194s 1515: typedef basic_iostream __iostream_type; 194s 1515: 194s 1515: private: 194s 1515: __stringbuf_type _M_stringbuf; 194s 1515: 194s 1515: public: 194s 1515: # 1041 "/usr/include/c++/15/sstream" 3 4 194s 1515: basic_stringstream() 194s 1515: : __iostream_type(), _M_stringbuf(ios_base::out | ios_base::in) 194s 1515: { this->init(&_M_stringbuf); } 194s 1515: # 1055 "/usr/include/c++/15/sstream" 3 4 194s 1515: explicit 194s 1515: basic_stringstream(ios_base::openmode __m) 194s 1515: : __iostream_type(), _M_stringbuf(__m) 194s 1515: { this->init(&_M_stringbuf); } 194s 1515: # 1071 "/usr/include/c++/15/sstream" 3 4 194s 1515: explicit 194s 1515: basic_stringstream(const __string_type& __str, 194s 1515: ios_base::openmode __m = ios_base::out | ios_base::in) 194s 1515: : __iostream_type(), _M_stringbuf(__str, __m) 194s 1515: { this->init(&_M_stringbuf); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ~basic_stringstream() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: basic_stringstream(const basic_stringstream&) = delete; 194s 1515: 194s 1515: basic_stringstream(basic_stringstream&& __rhs) 194s 1515: : __iostream_type(std::move(__rhs)), 194s 1515: _M_stringbuf(std::move(__rhs._M_stringbuf)) 194s 1515: { __iostream_type::set_rdbuf(&_M_stringbuf); } 194s 1515: # 1130 "/usr/include/c++/15/sstream" 3 4 194s 1515: basic_stringstream& 194s 1515: operator=(const basic_stringstream&) = delete; 194s 1515: 194s 1515: basic_stringstream& 194s 1515: operator=(basic_stringstream&& __rhs) 194s 1515: { 194s 1515: __iostream_type::operator=(std::move(__rhs)); 194s 1515: _M_stringbuf = std::move(__rhs._M_stringbuf); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(basic_stringstream& __rhs) 194s 1515: { 194s 1515: __iostream_type::swap(__rhs); 194s 1515: _M_stringbuf.swap(__rhs._M_stringbuf); 194s 1515: } 194s 1515: # 1156 "/usr/include/c++/15/sstream" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: __stringbuf_type* 194s 1515: rdbuf() const 194s 1515: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: __string_type 194s 1515: str() const 194s 1515: { return _M_stringbuf.str(); } 194s 1515: # 1198 "/usr/include/c++/15/sstream" 3 4 194s 1515: void 194s 1515: str(const __string_type& __s) 194s 1515: { _M_stringbuf.str(__s); } 194s 1515: # 1215 "/usr/include/c++/15/sstream" 3 4 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(basic_stringbuf<_CharT, _Traits, _Allocator>& __x, 194s 1515: basic_stringbuf<_CharT, _Traits, _Allocator>& __y) 194s 1515: noexcept(noexcept(__x.swap(__y))) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(basic_istringstream<_CharT, _Traits, _Allocator>& __x, 194s 1515: basic_istringstream<_CharT, _Traits, _Allocator>& __y) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(basic_ostringstream<_CharT, _Traits, _Allocator>& __x, 194s 1515: basic_ostringstream<_CharT, _Traits, _Allocator>& __y) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(basic_stringstream<_CharT, _Traits, _Allocator>& __x, 194s 1515: basic_stringstream<_CharT, _Traits, _Allocator>& __y) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/sstream.tcc" 1 3 4 194s 1515: # 40 "/usr/include/c++/15/bits/sstream.tcc" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type 194s 1515: basic_stringbuf<_CharT, _Traits, _Alloc>:: 194s 1515: pbackfail(int_type __c) 194s 1515: { 194s 1515: int_type __ret = traits_type::eof(); 194s 1515: if (this->eback() < this->gptr()) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const bool __testeof = traits_type::eq_int_type(__c, __ret); 194s 1515: if (!__testeof) 194s 1515: { 194s 1515: const bool __testeq = traits_type::eq(traits_type:: 194s 1515: to_char_type(__c), 194s 1515: this->gptr()[-1]); 194s 1515: const bool __testout = this->_M_mode & ios_base::out; 194s 1515: if (__testeq || __testout) 194s 1515: { 194s 1515: this->gbump(-1); 194s 1515: if (!__testeq) 194s 1515: *this->gptr() = traits_type::to_char_type(__c); 194s 1515: __ret = __c; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: this->gbump(-1); 194s 1515: __ret = traits_type::not_eof(__c); 194s 1515: } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type 194s 1515: basic_stringbuf<_CharT, _Traits, _Alloc>:: 194s 1515: overflow(int_type __c) 194s 1515: { 194s 1515: const bool __testout = this->_M_mode & ios_base::out; 194s 1515: if (__builtin_expect(!__testout, false)) 194s 1515: return traits_type::eof(); 194s 1515: 194s 1515: const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof()); 194s 1515: if (__builtin_expect(__testeof, false)) 194s 1515: return traits_type::not_eof(__c); 194s 1515: 194s 1515: const __size_type __capacity = _M_string.capacity(); 194s 1515: 194s 1515: 194s 1515: if (size_t(this->epptr() - this->pbase()) < __capacity) 194s 1515: { 194s 1515: 194s 1515: char_type* __base = const_cast(_M_string.data()); 194s 1515: _M_pbump(__base, __base + __capacity, this->pptr() - this->pbase()); 194s 1515: if (_M_mode & ios_base::in) 194s 1515: { 194s 1515: const __size_type __nget = this->gptr() - this->eback(); 194s 1515: const __size_type __eget = this->egptr() - this->eback(); 194s 1515: this->setg(__base, __base + __nget, __base + __eget + 1); 194s 1515: } 194s 1515: *this->pptr() = traits_type::to_char_type(__c); 194s 1515: this->pbump(1); 194s 1515: return __c; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const __size_type __max_size = _M_string.max_size(); 194s 1515: const bool __testput = this->pptr() < this->epptr(); 194s 1515: if (__builtin_expect(!__testput && __capacity == __max_size, false)) 194s 1515: return traits_type::eof(); 194s 1515: 194s 1515: 194s 1515: 194s 1515: const char_type __conv = traits_type::to_char_type(__c); 194s 1515: if (!__testput) 194s 1515: { 194s 1515: # 133 "/usr/include/c++/15/bits/sstream.tcc" 3 4 194s 1515: const __size_type __opt_len = std::max(__size_type(2 * __capacity), 194s 1515: __size_type(512)); 194s 1515: const __size_type __len = std::min(__opt_len, __max_size); 194s 1515: __string_type __tmp(_M_string.get_allocator()); 194s 1515: __tmp.reserve(__len); 194s 1515: if (this->pbase()) 194s 1515: __tmp.assign(this->pbase(), this->epptr() - this->pbase()); 194s 1515: __tmp.push_back(__conv); 194s 1515: _M_string.swap(__tmp); 194s 1515: _M_sync(const_cast(_M_string.data()), 194s 1515: this->gptr() - this->eback(), this->pptr() - this->pbase()); 194s 1515: } 194s 1515: else 194s 1515: *this->pptr() = __conv; 194s 1515: this->pbump(1); 194s 1515: return __c; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type 194s 1515: basic_stringbuf<_CharT, _Traits, _Alloc>:: 194s 1515: underflow() 194s 1515: { 194s 1515: int_type __ret = traits_type::eof(); 194s 1515: const bool __testin = this->_M_mode & ios_base::in; 194s 1515: if (__testin) 194s 1515: { 194s 1515: 194s 1515: _M_update_egptr(); 194s 1515: 194s 1515: if (this->gptr() < this->egptr()) 194s 1515: __ret = traits_type::to_int_type(*this->gptr()); 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type 194s 1515: basic_stringbuf<_CharT, _Traits, _Alloc>:: 194s 1515: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) 194s 1515: { 194s 1515: pos_type __ret = pos_type(off_type(-1)); 194s 1515: bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; 194s 1515: bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; 194s 1515: const bool __testboth = __testin && __testout && __way != ios_base::cur; 194s 1515: __testin &= !(__mode & ios_base::out); 194s 1515: __testout &= !(__mode & ios_base::in); 194s 1515: 194s 1515: 194s 1515: 194s 1515: const char_type* __beg = __testin ? this->eback() : this->pbase(); 194s 1515: if ((__beg || !__off) && (__testin || __testout || __testboth)) 194s 1515: { 194s 1515: _M_update_egptr(); 194s 1515: 194s 1515: off_type __newoffi = __off; 194s 1515: off_type __newoffo = __newoffi; 194s 1515: if (__way == ios_base::cur) 194s 1515: { 194s 1515: __newoffi += this->gptr() - __beg; 194s 1515: __newoffo += this->pptr() - __beg; 194s 1515: } 194s 1515: else if (__way == ios_base::end) 194s 1515: __newoffo = __newoffi += this->egptr() - __beg; 194s 1515: 194s 1515: if ((__testin || __testboth) 194s 1515: && __newoffi >= 0 194s 1515: && this->egptr() - __beg >= __newoffi) 194s 1515: { 194s 1515: this->setg(this->eback(), this->eback() + __newoffi, 194s 1515: this->egptr()); 194s 1515: __ret = pos_type(__newoffi); 194s 1515: } 194s 1515: if ((__testout || __testboth) 194s 1515: && __newoffo >= 0 194s 1515: && this->egptr() - __beg >= __newoffo) 194s 1515: { 194s 1515: _M_pbump(this->pbase(), this->epptr(), __newoffo); 194s 1515: __ret = pos_type(__newoffo); 194s 1515: } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type 194s 1515: basic_stringbuf<_CharT, _Traits, _Alloc>:: 194s 1515: seekpos(pos_type __sp, ios_base::openmode __mode) 194s 1515: { 194s 1515: pos_type __ret = pos_type(off_type(-1)); 194s 1515: const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; 194s 1515: const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; 194s 1515: 194s 1515: const char_type* __beg = __testin ? this->eback() : this->pbase(); 194s 1515: if ((__beg || !off_type(__sp)) && (__testin || __testout)) 194s 1515: { 194s 1515: _M_update_egptr(); 194s 1515: 194s 1515: const off_type __pos(__sp); 194s 1515: const bool __testpos = (0 <= __pos 194s 1515: && __pos <= this->egptr() - __beg); 194s 1515: if (__testpos) 194s 1515: { 194s 1515: if (__testin) 194s 1515: this->setg(this->eback(), this->eback() + __pos, 194s 1515: this->egptr()); 194s 1515: if (__testout) 194s 1515: _M_pbump(this->pbase(), this->epptr(), __pos); 194s 1515: __ret = __sp; 194s 1515: } 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: basic_stringbuf<_CharT, _Traits, _Alloc>:: 194s 1515: _M_sync(char_type* __base, __size_type __i, __size_type __o) 194s 1515: { 194s 1515: const bool __testin = _M_mode & ios_base::in; 194s 1515: const bool __testout = _M_mode & ios_base::out; 194s 1515: char_type* __endg = __base + _M_string.size(); 194s 1515: char_type* __endp = __base + _M_string.capacity(); 194s 1515: 194s 1515: if (__base != _M_string.data()) 194s 1515: { 194s 1515: 194s 1515: __endg += __i; 194s 1515: __i = 0; 194s 1515: __endp = __endg; 194s 1515: } 194s 1515: 194s 1515: if (__testin) 194s 1515: this->setg(__base, __base + __i, __endg); 194s 1515: if (__testout) 194s 1515: { 194s 1515: _M_pbump(__base, __endp, __o); 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (!__testin) 194s 1515: this->setg(__endg, __endg, __endg); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: basic_stringbuf<_CharT, _Traits, _Alloc>:: 194s 1515: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off) 194s 1515: { 194s 1515: this->setp(__pbeg, __pend); 194s 1515: while (__off > __gnu_cxx::__numeric_traits::__max) 194s 1515: { 194s 1515: this->pbump(__gnu_cxx::__numeric_traits::__max); 194s 1515: __off -= __gnu_cxx::__numeric_traits::__max; 194s 1515: } 194s 1515: this->pbump(__off); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern template class basic_stringbuf; 194s 1515: extern template class basic_istringstream; 194s 1515: extern template class basic_ostringstream; 194s 1515: extern template class basic_stringstream; 194s 1515: 194s 1515: 194s 1515: extern template class basic_stringbuf; 194s 1515: extern template class basic_istringstream; 194s 1515: extern template class basic_ostringstream; 194s 1515: extern template class basic_stringstream; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 1256 "/usr/include/c++/15/sstream" 2 3 4 194s 1515: # 3165 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/iostream" 1 3 4 194s 1515: # 46 "/usr/include/c++/15/iostream" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 64 "/usr/include/c++/15/iostream" 3 4 194s 1515: extern istream cin; 194s 1515: extern ostream cout; 194s 1515: extern ostream cerr; 194s 1515: extern ostream clog; 194s 1515: 194s 1515: 194s 1515: extern wistream wcin; 194s 1515: extern wostream wcout; 194s 1515: extern wostream wcerr; 194s 1515: extern wostream wclog; 194s 1515: # 84 "/usr/include/c++/15/iostream" 3 4 194s 1515: __extension__ __asm (".globl _ZSt21ios_base_library_initv"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 3167 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/algorithm" 1 3 4 194s 1515: # 63 "/usr/include/c++/15/algorithm" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_algo.h" 1 3 4 194s 1515: # 59 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/algorithmfwd.h" 1 3 4 194s 1515: # 44 "/usr/include/c++/15/bits/algorithmfwd.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 200 "/usr/include/c++/15/bits/algorithmfwd.h" 3 4 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: all_of(_IIter, _IIter, _Predicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: any_of(_IIter, _IIter, _Predicate); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: binary_search(_FIter, _FIter, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: binary_search(_FIter, _FIter, const _Tp&, _Compare); 194s 1515: # 234 "/usr/include/c++/15/bits/algorithmfwd.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: copy(_IIter, _IIter, _OIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _BIter2 194s 1515: copy_backward(_BIter1, _BIter1, _BIter2); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: copy_if(_IIter, _IIter, _OIter, _Predicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: copy_n(_IIter, _Size, _OIter); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_FIter, _FIter> 194s 1515: equal_range(_FIter, _FIter, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_FIter, _FIter> 194s 1515: equal_range(_FIter, _FIter, const _Tp&, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: fill(_FIter, _FIter, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: fill_n(_OIter, _Size, const _Tp&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter1 194s 1515: find_end(_FIter1, _FIter1, _FIter2, _FIter2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter1 194s 1515: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _IIter 194s 1515: find_if_not(_IIter, _IIter, _Predicate); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: includes(_IIter1, _IIter1, _IIter2, _IIter2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: inplace_merge(_BIter, _BIter, _BIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: inplace_merge(_BIter, _BIter, _BIter, _Compare); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: is_heap(_RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: is_heap(_RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _RAIter 194s 1515: is_heap_until(_RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _RAIter 194s 1515: is_heap_until(_RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: is_partitioned(_IIter, _IIter, _Predicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: is_permutation(_FIter1, _FIter1, _FIter2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: is_sorted(_FIter, _FIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: is_sorted(_FIter, _FIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: is_sorted_until(_FIter, _FIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: is_sorted_until(_FIter, _FIter, _Compare); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: iter_swap(_FIter1, _FIter2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: lower_bound(_FIter, _FIter, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: lower_bound(_FIter, _FIter, const _Tp&, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: make_heap(_RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: make_heap(_RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: const _Tp& 194s 1515: max(const _Tp&, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: const _Tp& 194s 1515: max(const _Tp&, const _Tp&, _Compare); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: const _Tp& 194s 1515: min(const _Tp&, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: const _Tp& 194s 1515: min(const _Tp&, const _Tp&, _Compare); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair 194s 1515: minmax(const _Tp&, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair 194s 1515: minmax(const _Tp&, const _Tp&, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_FIter, _FIter> 194s 1515: minmax_element(_FIter, _FIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_FIter, _FIter> 194s 1515: minmax_element(_FIter, _FIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tp 194s 1515: min(initializer_list<_Tp>); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tp 194s 1515: min(initializer_list<_Tp>, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tp 194s 1515: max(initializer_list<_Tp>); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tp 194s 1515: max(initializer_list<_Tp>, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_Tp, _Tp> 194s 1515: minmax(initializer_list<_Tp>); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_Tp, _Tp> 194s 1515: minmax(initializer_list<_Tp>, _Compare); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: next_permutation(_BIter, _BIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: next_permutation(_BIter, _BIter, _Compare); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: none_of(_IIter, _IIter, _Predicate); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _RAIter 194s 1515: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _RAIter 194s 1515: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_OIter1, _OIter2> 194s 1515: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: partition_point(_FIter, _FIter, _Predicate); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: pop_heap(_RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: pop_heap(_RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: prev_permutation(_BIter, _BIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: prev_permutation(_BIter, _BIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: push_heap(_RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: push_heap(_RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: remove(_FIter, _FIter, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: remove_if(_FIter, _FIter, _Predicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: remove_copy(_IIter, _IIter, _OIter, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: remove_copy_if(_IIter, _IIter, _OIter, _Predicate); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: reverse(_BIter, _BIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: reverse_copy(_BIter, _BIter, _OIter); 194s 1515: 194s 1515: inline namespace _V2 { 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: rotate(_FIter, _FIter, _FIter); 194s 1515: 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: rotate_copy(_FIter, _FIter, _FIter, _OIter); 194s 1515: # 635 "/usr/include/c++/15/bits/algorithmfwd.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: shuffle(_RAIter, _RAIter, _UGenerator&&); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: sort_heap(_RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: sort_heap(_RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _BIter 194s 1515: stable_partition(_BIter, _BIter, _Predicate); 194s 1515: # 671 "/usr/include/c++/15/bits/algorithmfwd.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _FIter2 194s 1515: swap_ranges(_FIter1, _FIter1, _FIter2); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: unique(_FIter, _FIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: unique(_FIter, _FIter, _BinaryPredicate); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: upper_bound(_FIter, _FIter, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: upper_bound(_FIter, _FIter, const _Tp&, _Compare); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: adjacent_find(_FIter, _FIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: adjacent_find(_FIter, _FIter, _BinaryPredicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename iterator_traits<_IIter>::difference_type 194s 1515: count(_IIter, _IIter, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename iterator_traits<_IIter>::difference_type 194s 1515: count_if(_IIter, _IIter, _Predicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: equal(_IIter1, _IIter1, _IIter2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _IIter 194s 1515: find(_IIter, _IIter, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter1 194s 1515: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter1 194s 1515: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _IIter 194s 1515: find_if(_IIter, _IIter, _Predicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Funct 194s 1515: for_each(_IIter, _IIter, _Funct); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: generate(_FIter, _FIter, _Generator); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: generate_n(_OIter, _Size, _Generator); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: max_element(_FIter, _FIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: max_element(_FIter, _FIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: min_element(_FIter, _FIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: min_element(_FIter, _FIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_IIter1, _IIter2> 194s 1515: mismatch(_IIter1, _IIter1, _IIter2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_IIter1, _IIter2> 194s 1515: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: nth_element(_RAIter, _RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: nth_element(_RAIter, _RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: partial_sort(_RAIter, _RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: partial_sort(_RAIter, _RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _BIter 194s 1515: partition(_BIter, _BIter, _Predicate); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: random_shuffle(_RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: random_shuffle(_RAIter, _RAIter, 194s 1515: 194s 1515: _Generator&&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: replace(_FIter, _FIter, const _Tp&, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: replace_if(_FIter, _FIter, _Predicate, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter1 194s 1515: search(_FIter1, _FIter1, _FIter2, _FIter2); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter1 194s 1515: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: search_n(_FIter, _FIter, _Size, const _Tp&); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _FIter 194s 1515: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, 194s 1515: _OIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: sort(_RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: sort(_RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: stable_sort(_RAIter, _RAIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: stable_sort(_RAIter, _RAIter, _Compare); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: transform(_IIter, _IIter, _OIter, _UnaryOperation); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: unique_copy(_IIter, _IIter, _OIter); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OIter 194s 1515: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 60 "/usr/include/c++/15/bits/stl_algo.h" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/stl_heap.h" 1 3 4 194s 1515: # 63 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Distance 194s 1515: __is_heap_until(_RandomAccessIterator __first, _Distance __n, 194s 1515: _Compare& __comp) 194s 1515: { 194s 1515: _Distance __parent = 0; 194s 1515: for (_Distance __child = 1; __child < __n; ++__child) 194s 1515: { 194s 1515: if (__comp(__first + __parent, __first + __child)) 194s 1515: return __child; 194s 1515: if ((__child & 1) == 0) 194s 1515: ++__parent; 194s 1515: } 194s 1515: return __n; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: __is_heap(_RandomAccessIterator __first, _Distance __n) 194s 1515: { 194s 1515: __gnu_cxx::__ops::_Iter_less_iter __comp; 194s 1515: return std::__is_heap_until(__first, __n, __comp) == __n; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) 194s 1515: { 194s 1515: typedef __decltype(__comp) _Cmp; 194s 1515: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 194s 1515: return std::__is_heap_until(__first, __n, __cmp) == __n; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 194s 1515: { return std::__is_heap(__first, std::distance(__first, __last)); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: return std::__is_heap(__first, std::move(__comp), 194s 1515: std::distance(__first, __last)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __push_heap(_RandomAccessIterator __first, 194s 1515: _Distance __holeIndex, _Distance __topIndex, _Tp __value, 194s 1515: _Compare& __comp) 194s 1515: { 194s 1515: _Distance __parent = (__holeIndex - 1) / 2; 194s 1515: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) 194s 1515: { 194s 1515: *(__first + __holeIndex) = std::move(*(__first + __parent)); 194s 1515: __holeIndex = __parent; 194s 1515: __parent = (__holeIndex - 1) / 2; 194s 1515: } 194s 1515: *(__first + __holeIndex) = std::move(__value); 194s 1515: } 194s 1515: # 159 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 194s 1515: { 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::value_type 194s 1515: _ValueType; 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: __gnu_cxx::__ops::_Iter_less_val __comp; 194s 1515: _ValueType __value = std::move(*(__last - 1)); 194s 1515: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 194s 1515: _DistanceType(0), std::move(__value), __comp); 194s 1515: } 194s 1515: # 195 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::value_type 194s 1515: _ValueType; 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 194s 1515: __cmp(std::move(__comp)); 194s 1515: _ValueType __value = std::move(*(__last - 1)); 194s 1515: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 194s 1515: _DistanceType(0), std::move(__value), __cmp); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, 194s 1515: _Distance __len, _Tp __value, _Compare __comp) 194s 1515: { 194s 1515: const _Distance __topIndex = __holeIndex; 194s 1515: _Distance __secondChild = __holeIndex; 194s 1515: while (__secondChild < (__len - 1) / 2) 194s 1515: { 194s 1515: __secondChild = 2 * (__secondChild + 1); 194s 1515: if (__comp(__first + __secondChild, 194s 1515: __first + (__secondChild - 1))) 194s 1515: __secondChild--; 194s 1515: *(__first + __holeIndex) = std::move(*(__first + __secondChild)); 194s 1515: __holeIndex = __secondChild; 194s 1515: } 194s 1515: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) 194s 1515: { 194s 1515: __secondChild = 2 * (__secondChild + 1); 194s 1515: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) 194s 1515: ; 194s 1515: __holeIndex = __secondChild - 1; 194s 1515: } 194s 1515: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 194s 1515: __cmp(std::move(__comp)); 194s 1515: std::__push_heap(__first, __holeIndex, __topIndex, 194s 1515: std::move(__value), __cmp); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _RandomAccessIterator __result, _Compare& __comp) 194s 1515: { 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::value_type 194s 1515: _ValueType; 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: _ValueType __value = std::move(*__result); 194s 1515: *__result = std::move(*__first); 194s 1515: std::__adjust_heap(__first, _DistanceType(0), 194s 1515: _DistanceType(__last - __first), 194s 1515: std::move(__value), __comp); 194s 1515: } 194s 1515: # 280 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__first != __last)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: if (__last - __first > 1) 194s 1515: { 194s 1515: --__last; 194s 1515: __gnu_cxx::__ops::_Iter_less_iter __comp; 194s 1515: std::__pop_heap(__first, __last, __last, __comp); 194s 1515: } 194s 1515: } 194s 1515: # 314 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: pop_heap(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__first != __last)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: ; 194s 1515: 194s 1515: if (__last - __first > 1) 194s 1515: { 194s 1515: typedef __decltype(__comp) _Cmp; 194s 1515: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 194s 1515: --__last; 194s 1515: std::__pop_heap(__first, __last, __last, __cmp); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare& __comp) 194s 1515: { 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::value_type 194s 1515: _ValueType; 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: if (__last - __first < 2) 194s 1515: return; 194s 1515: 194s 1515: const _DistanceType __len = __last - __first; 194s 1515: _DistanceType __parent = (__len - 2) / 2; 194s 1515: while (true) 194s 1515: { 194s 1515: _ValueType __value = std::move(*(__first + __parent)); 194s 1515: std::__adjust_heap(__first, __parent, __len, std::move(__value), 194s 1515: __comp); 194s 1515: if (__parent == 0) 194s 1515: return; 194s 1515: __parent--; 194s 1515: } 194s 1515: } 194s 1515: # 372 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: __gnu_cxx::__ops::_Iter_less_iter __comp; 194s 1515: std::__make_heap(__first, __last, __comp); 194s 1515: } 194s 1515: # 399 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: typedef __decltype(__comp) _Cmp; 194s 1515: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 194s 1515: std::__make_heap(__first, __last, __cmp); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare& __comp) 194s 1515: { 194s 1515: while (__last - __first > 1) 194s 1515: { 194s 1515: --__last; 194s 1515: std::__pop_heap(__first, __last, __last, __comp); 194s 1515: } 194s 1515: } 194s 1515: # 437 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: __gnu_cxx::__ops::_Iter_less_iter __comp; 194s 1515: std::__sort_heap(__first, __last, __comp); 194s 1515: } 194s 1515: # 465 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: typedef __decltype(__comp) _Cmp; 194s 1515: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 194s 1515: std::__sort_heap(__first, __last, __cmp); 194s 1515: } 194s 1515: # 494 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _RandomAccessIterator 194s 1515: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: __gnu_cxx::__ops::_Iter_less_iter __comp; 194s 1515: return __first + 194s 1515: std::__is_heap_until(__first, std::distance(__first, __last), __comp); 194s 1515: } 194s 1515: # 523 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _RandomAccessIterator 194s 1515: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: typedef __decltype(__comp) _Cmp; 194s 1515: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 194s 1515: return __first 194s 1515: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); 194s 1515: } 194s 1515: # 548 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 194s 1515: { return std::is_heap_until(__first, __last) == __last; } 194s 1515: # 562 "/usr/include/c++/15/bits/stl_heap.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: const auto __dist = std::distance(__first, __last); 194s 1515: typedef __decltype(__comp) _Cmp; 194s 1515: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 194s 1515: return std::__is_heap_until(__first, __dist, __cmp) == __dist; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 62 "/usr/include/c++/15/bits/stl_algo.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/uniform_int_dist.h" 1 3 4 194s 1515: # 41 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 64 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 194s 1515: namespace __detail 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: _Power_of_2(_Tp __x) 194s 1515: { 194s 1515: return ((__x - 1) & __x) == 0; 194s 1515: } 194s 1515: } 194s 1515: # 87 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 194s 1515: template 194s 1515: class uniform_int_distribution 194s 1515: { 194s 1515: static_assert(std::is_integral<_IntType>::value, 194s 1515: "template argument must be an integral type"); 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: typedef _IntType result_type; 194s 1515: 194s 1515: struct param_type 194s 1515: { 194s 1515: typedef uniform_int_distribution<_IntType> distribution_type; 194s 1515: 194s 1515: param_type() : param_type(0) { } 194s 1515: 194s 1515: explicit 194s 1515: param_type(_IntType __a, 194s 1515: _IntType __b = __gnu_cxx::__int_traits<_IntType>::__max) 194s 1515: : _M_a(__a), _M_b(__b) 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(_M_a <= _M_b)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: } 194s 1515: 194s 1515: result_type 194s 1515: a() const 194s 1515: { return _M_a; } 194s 1515: 194s 1515: result_type 194s 1515: b() const 194s 1515: { return _M_b; } 194s 1515: 194s 1515: friend bool 194s 1515: operator==(const param_type& __p1, const param_type& __p2) 194s 1515: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 194s 1515: 194s 1515: friend bool 194s 1515: operator!=(const param_type& __p1, const param_type& __p2) 194s 1515: { return !(__p1 == __p2); } 194s 1515: 194s 1515: private: 194s 1515: _IntType _M_a; 194s 1515: _IntType _M_b; 194s 1515: }; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: uniform_int_distribution() : uniform_int_distribution(0) { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: uniform_int_distribution(_IntType __a, 194s 1515: _IntType __b 194s 1515: = __gnu_cxx::__int_traits<_IntType>::__max) 194s 1515: : _M_param(__a, __b) 194s 1515: { } 194s 1515: 194s 1515: explicit 194s 1515: uniform_int_distribution(const param_type& __p) 194s 1515: : _M_param(__p) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: reset() { } 194s 1515: 194s 1515: result_type 194s 1515: a() const 194s 1515: { return _M_param.a(); } 194s 1515: 194s 1515: result_type 194s 1515: b() const 194s 1515: { return _M_param.b(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: param_type 194s 1515: param() const 194s 1515: { return _M_param; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: param(const param_type& __param) 194s 1515: { _M_param = __param; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: result_type 194s 1515: min() const 194s 1515: { return this->a(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: result_type 194s 1515: max() const 194s 1515: { return this->b(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: result_type 194s 1515: operator()(_UniformRandomBitGenerator& __urng) 194s 1515: { return this->operator()(__urng, _M_param); } 194s 1515: 194s 1515: template 194s 1515: result_type 194s 1515: operator()(_UniformRandomBitGenerator& __urng, 194s 1515: const param_type& __p); 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __generate(_ForwardIterator __f, _ForwardIterator __t, 194s 1515: _UniformRandomBitGenerator& __urng) 194s 1515: { this->__generate(__f, __t, __urng, _M_param); } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __generate(_ForwardIterator __f, _ForwardIterator __t, 194s 1515: _UniformRandomBitGenerator& __urng, 194s 1515: const param_type& __p) 194s 1515: { this->__generate_impl(__f, __t, __urng, __p); } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __generate(result_type* __f, result_type* __t, 194s 1515: _UniformRandomBitGenerator& __urng, 194s 1515: const param_type& __p) 194s 1515: { this->__generate_impl(__f, __t, __urng, __p); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: friend bool 194s 1515: operator==(const uniform_int_distribution& __d1, 194s 1515: const uniform_int_distribution& __d2) 194s 1515: { return __d1._M_param == __d2._M_param; } 194s 1515: 194s 1515: private: 194s 1515: template 194s 1515: void 194s 1515: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 194s 1515: _UniformRandomBitGenerator& __urng, 194s 1515: const param_type& __p); 194s 1515: 194s 1515: param_type _M_param; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: static _Up 194s 1515: _S_nd(_Urbg& __g, _Up __range) 194s 1515: { 194s 1515: using _Up_traits = __gnu_cxx::__int_traits<_Up>; 194s 1515: using _Wp_traits = __gnu_cxx::__int_traits<_Wp>; 194s 1515: static_assert(!_Up_traits::__is_signed, "U must be unsigned"); 194s 1515: static_assert(!_Wp_traits::__is_signed, "W must be unsigned"); 194s 1515: static_assert(_Wp_traits::__digits == (2 * _Up_traits::__digits), 194s 1515: "W must be twice as wide as U"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Wp __product = _Wp(__g()) * _Wp(__range); 194s 1515: _Up __low = _Up(__product); 194s 1515: if (__low < __range) 194s 1515: { 194s 1515: _Up __threshold = -__range % __range; 194s 1515: while (__low < __threshold) 194s 1515: { 194s 1515: __product = _Wp(__g()) * _Wp(__range); 194s 1515: __low = _Up(__product); 194s 1515: } 194s 1515: } 194s 1515: return __product >> _Up_traits::__digits; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: typename uniform_int_distribution<_IntType>::result_type 194s 1515: uniform_int_distribution<_IntType>:: 194s 1515: operator()(_UniformRandomBitGenerator& __urng, 194s 1515: const param_type& __param) 194s 1515: { 194s 1515: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; 194s 1515: typedef typename make_unsigned::type __utype; 194s 1515: typedef typename common_type<_Gresult_type, __utype>::type __uctype; 194s 1515: 194s 1515: constexpr __uctype __urngmin = _UniformRandomBitGenerator::min(); 194s 1515: constexpr __uctype __urngmax = _UniformRandomBitGenerator::max(); 194s 1515: static_assert( __urngmin < __urngmax, 194s 1515: "Uniform random bit generator must define min() < max()"); 194s 1515: constexpr __uctype __urngrange = __urngmax - __urngmin; 194s 1515: 194s 1515: const __uctype __urange 194s 1515: = __uctype(__param.b()) - __uctype(__param.a()); 194s 1515: 194s 1515: __uctype __ret; 194s 1515: if (__urngrange > __urange) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: const __uctype __uerange = __urange + 1; 194s 1515: # 323 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 194s 1515: if (__urngrange == 0xffffffffU) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: unsigned int __u32erange = __uerange; 194s 1515: __ret = _S_nd(__urng, __u32erange); 194s 1515: } 194s 1515: else 194s 1515: 194s 1515: { 194s 1515: 194s 1515: const __uctype __scaling = __urngrange / __uerange; 194s 1515: const __uctype __past = __uerange * __scaling; 194s 1515: do 194s 1515: __ret = __uctype(__urng()) - __urngmin; 194s 1515: while (__ret >= __past); 194s 1515: __ret /= __scaling; 194s 1515: } 194s 1515: } 194s 1515: else if (__urngrange < __urange) 194s 1515: { 194s 1515: # 359 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 194s 1515: __uctype __tmp; 194s 1515: do 194s 1515: { 194s 1515: const __uctype __uerngrange = __urngrange + 1; 194s 1515: __tmp = (__uerngrange * operator() 194s 1515: (__urng, param_type(0, __urange / __uerngrange))); 194s 1515: __ret = __tmp + (__uctype(__urng()) - __urngmin); 194s 1515: } 194s 1515: while (__ret > __urange || __ret < __tmp); 194s 1515: } 194s 1515: else 194s 1515: __ret = __uctype(__urng()) - __urngmin; 194s 1515: 194s 1515: return __ret + __param.a(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: void 194s 1515: uniform_int_distribution<_IntType>:: 194s 1515: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 194s 1515: _UniformRandomBitGenerator& __urng, 194s 1515: const param_type& __param) 194s 1515: { 194s 1515: 194s 1515: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; 194s 1515: typedef typename make_unsigned::type __utype; 194s 1515: typedef typename common_type<_Gresult_type, __utype>::type __uctype; 194s 1515: 194s 1515: static_assert( __urng.min() < __urng.max(), 194s 1515: "Uniform random bit generator must define min() < max()"); 194s 1515: 194s 1515: constexpr __uctype __urngmin = __urng.min(); 194s 1515: constexpr __uctype __urngmax = __urng.max(); 194s 1515: constexpr __uctype __urngrange = __urngmax - __urngmin; 194s 1515: const __uctype __urange 194s 1515: = __uctype(__param.b()) - __uctype(__param.a()); 194s 1515: 194s 1515: __uctype __ret; 194s 1515: 194s 1515: if (__urngrange > __urange) 194s 1515: { 194s 1515: if (__detail::_Power_of_2(__urngrange + 1) 194s 1515: && __detail::_Power_of_2(__urange + 1)) 194s 1515: { 194s 1515: while (__f != __t) 194s 1515: { 194s 1515: __ret = __uctype(__urng()) - __urngmin; 194s 1515: *__f++ = (__ret & __urange) + __param.a(); 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: const __uctype __uerange = __urange + 1; 194s 1515: const __uctype __scaling = __urngrange / __uerange; 194s 1515: const __uctype __past = __uerange * __scaling; 194s 1515: while (__f != __t) 194s 1515: { 194s 1515: do 194s 1515: __ret = __uctype(__urng()) - __urngmin; 194s 1515: while (__ret >= __past); 194s 1515: *__f++ = __ret / __scaling + __param.a(); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: else if (__urngrange < __urange) 194s 1515: { 194s 1515: # 444 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 194s 1515: __uctype __tmp; 194s 1515: while (__f != __t) 194s 1515: { 194s 1515: do 194s 1515: { 194s 1515: constexpr __uctype __uerngrange = __urngrange + 1; 194s 1515: __tmp = (__uerngrange * operator() 194s 1515: (__urng, param_type(0, __urange / __uerngrange))); 194s 1515: __ret = __tmp + (__uctype(__urng()) - __urngmin); 194s 1515: } 194s 1515: while (__ret > __urange || __ret < __tmp); 194s 1515: *__f++ = __ret; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: while (__f != __t) 194s 1515: *__f++ = __uctype(__urng()) - __urngmin + __param.a(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 66 "/usr/include/c++/15/bits/stl_algo.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/stl_tempbuf.h" 1 3 4 194s 1515: # 65 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 77 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 194s 1515: namespace __detail 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline _Tp* 194s 1515: __get_temporary_buffer(ptrdiff_t __len) noexcept 194s 1515: { 194s 1515: if (__builtin_expect(size_t(__len) > (size_t(-1) / sizeof(_Tp)), 0)) 194s 1515: return 0; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return (_Tp*) __builtin_operator_new(__len * sizeof(_Tp), nothrow_t()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: __return_temporary_buffer(_Tp* __p, 194s 1515: size_t __len __attribute__((__unused__))) 194s 1515: { 194s 1515: # 118 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 194s 1515: __builtin_operator_delete((__p)); 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: # 140 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 194s 1515: template 194s 1515: 194s 1515: pair<_Tp*, ptrdiff_t> 194s 1515: get_temporary_buffer(ptrdiff_t __len) noexcept 194s 1515: { 194s 1515: const ptrdiff_t __max = 194s 1515: __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 194s 1515: if (__len > __max) 194s 1515: __len = __max; 194s 1515: 194s 1515: while (__len > 0) 194s 1515: { 194s 1515: if (_Tp* __tmp = __detail::__get_temporary_buffer<_Tp>(__len)) 194s 1515: return pair<_Tp*, ptrdiff_t>(__tmp, __len); 194s 1515: __len = __len == 1 ? 0 : ((__len + 1) / 2); 194s 1515: } 194s 1515: return pair<_Tp*, ptrdiff_t>(); 194s 1515: } 194s 1515: # 166 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: return_temporary_buffer(_Tp* __p) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __builtin_operator_delete(__p); 194s 1515: } 194s 1515: # 187 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 194s 1515: template 194s 1515: class _Temporary_buffer 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: typedef _Tp value_type; 194s 1515: typedef value_type* pointer; 194s 1515: typedef pointer iterator; 194s 1515: typedef ptrdiff_t size_type; 194s 1515: 194s 1515: protected: 194s 1515: size_type _M_original_len; 194s 1515: struct _Impl 194s 1515: { 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: explicit 194s 1515: _Impl(ptrdiff_t __original_len) 194s 1515: { 194s 1515: pair __p( 194s 1515: std::get_temporary_buffer(__original_len)); 194s 1515: _M_len = __p.second; 194s 1515: _M_buffer = __p.first; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: ~_Impl() 194s 1515: { std::__detail::__return_temporary_buffer(_M_buffer, _M_len); } 194s 1515: 194s 1515: size_type _M_len; 194s 1515: pointer _M_buffer; 194s 1515: } _M_impl; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: size_type 194s 1515: size() const 194s 1515: { return _M_impl._M_len; } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: requested_size() const 194s 1515: { return _M_original_len; } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: begin() 194s 1515: { return _M_impl._M_buffer; } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: end() 194s 1515: { return _M_impl._M_buffer + _M_impl._M_len; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len); 194s 1515: 194s 1515: ~_Temporary_buffer() 194s 1515: { std::_Destroy(_M_impl._M_buffer, _M_impl._M_buffer + _M_impl._M_len); } 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: _Temporary_buffer(const _Temporary_buffer&); 194s 1515: 194s 1515: void 194s 1515: operator=(const _Temporary_buffer&); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __uninitialized_construct_buf_dispatch 194s 1515: { 194s 1515: template 194s 1515: static void 194s 1515: __ucr(_Pointer __first, _Pointer __last, 194s 1515: _ForwardIterator __seed) 194s 1515: { 194s 1515: if (__builtin_expect(__first == __last, 0)) 194s 1515: return; 194s 1515: 194s 1515: _Pointer __cur = __first; 194s 1515: try 194s 1515: { 194s 1515: std::_Construct(std::__addressof(*__first), 194s 1515: std::move(*__seed)); 194s 1515: _Pointer __prev = __cur; 194s 1515: ++__cur; 194s 1515: for(; __cur != __last; ++__cur, ++__prev) 194s 1515: std::_Construct(std::__addressof(*__cur), 194s 1515: std::move(*__prev)); 194s 1515: *__seed = std::move(*__prev); 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: std::_Destroy(__first, __cur); 194s 1515: throw; 194s 1515: } 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template<> 194s 1515: struct __uninitialized_construct_buf_dispatch 194s 1515: { 194s 1515: template 194s 1515: static void 194s 1515: __ucr(_Pointer, _Pointer, _ForwardIterator) { } 194s 1515: }; 194s 1515: # 311 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 194s 1515: template 194s 1515: inline void 194s 1515: __uninitialized_construct_buf(_Tp* __first, _Tp* __last, 194s 1515: _ForwardIterator __seed) 194s 1515: { 194s 1515: std::__uninitialized_construct_buf_dispatch< 194s 1515: __has_trivial_constructor(_Tp)>:: 194s 1515: __ucr(__first, __last, __seed); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _Temporary_buffer<_ForwardIterator, _Tp>:: 194s 1515: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len) 194s 1515: : _M_original_len(__original_len), _M_impl(__original_len) 194s 1515: { 194s 1515: std::__uninitialized_construct_buf(begin(), end(), __seed); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 70 "/usr/include/c++/15/bits/stl_algo.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, 194s 1515: _Iterator __c, _Compare __comp) 194s 1515: { 194s 1515: if (__comp(__a, __b)) 194s 1515: { 194s 1515: if (__comp(__b, __c)) 194s 1515: std::iter_swap(__result, __b); 194s 1515: else if (__comp(__a, __c)) 194s 1515: std::iter_swap(__result, __c); 194s 1515: else 194s 1515: std::iter_swap(__result, __a); 194s 1515: } 194s 1515: else if (__comp(__a, __c)) 194s 1515: std::iter_swap(__result, __a); 194s 1515: else if (__comp(__b, __c)) 194s 1515: std::iter_swap(__result, __c); 194s 1515: else 194s 1515: std::iter_swap(__result, __b); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _InputIterator 194s 1515: __find_if_not(_InputIterator __first, _InputIterator __last, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: return std::__find_if(__first, __last, 194s 1515: __gnu_cxx::__ops::__negate(__pred)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _InputIterator 194s 1515: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) 194s 1515: { 194s 1515: for (; __len; --__len, (void) ++__first) 194s 1515: if (!__pred(__first)) 194s 1515: break; 194s 1515: return __first; 194s 1515: } 194s 1515: # 150 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Integer __count, _UnaryPredicate __unary_pred, 194s 1515: std::forward_iterator_tag) 194s 1515: { 194s 1515: __first = std::__find_if(__first, __last, __unary_pred); 194s 1515: while (__first != __last) 194s 1515: { 194s 1515: typename iterator_traits<_ForwardIterator>::difference_type 194s 1515: __n = __count; 194s 1515: _ForwardIterator __i = __first; 194s 1515: ++__i; 194s 1515: while (__i != __last && __n != 1 && __unary_pred(__i)) 194s 1515: { 194s 1515: ++__i; 194s 1515: --__n; 194s 1515: } 194s 1515: if (__n == 1) 194s 1515: return __first; 194s 1515: if (__i == __last) 194s 1515: return __last; 194s 1515: __first = std::__find_if(++__i, __last, __unary_pred); 194s 1515: } 194s 1515: return __last; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _RandomAccessIter 194s 1515: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, 194s 1515: _Integer __count, _UnaryPredicate __unary_pred, 194s 1515: std::random_access_iterator_tag) 194s 1515: { 194s 1515: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: _DistanceType __tailSize = __last - __first; 194s 1515: _DistanceType __remainder = __count; 194s 1515: 194s 1515: while (__remainder <= __tailSize) 194s 1515: { 194s 1515: __first += __remainder; 194s 1515: __tailSize -= __remainder; 194s 1515: 194s 1515: 194s 1515: _RandomAccessIter __backTrack = __first; 194s 1515: while (__unary_pred(--__backTrack)) 194s 1515: { 194s 1515: if (--__remainder == 0) 194s 1515: return (__first - __count); 194s 1515: } 194s 1515: __remainder = __count + 1 - (__first - __backTrack); 194s 1515: } 194s 1515: return __last; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __search_n(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Integer __count, 194s 1515: _UnaryPredicate __unary_pred) 194s 1515: { 194s 1515: if (__count <= 0) 194s 1515: return __first; 194s 1515: 194s 1515: if (__count == 1) 194s 1515: return std::__find_if(__first, __last, __unary_pred); 194s 1515: 194s 1515: return std::__search_n_aux(__first, __last, __count, __unary_pred, 194s 1515: std::__iterator_category(__first)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator1 194s 1515: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 194s 1515: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 194s 1515: forward_iterator_tag, forward_iterator_tag, 194s 1515: _BinaryPredicate __comp) 194s 1515: { 194s 1515: if (__first2 == __last2) 194s 1515: return __last1; 194s 1515: 194s 1515: _ForwardIterator1 __result = __last1; 194s 1515: while (1) 194s 1515: { 194s 1515: _ForwardIterator1 __new_result 194s 1515: = std::__search(__first1, __last1, __first2, __last2, __comp); 194s 1515: if (__new_result == __last1) 194s 1515: return __result; 194s 1515: else 194s 1515: { 194s 1515: __result = __new_result; 194s 1515: __first1 = __new_result; 194s 1515: ++__first1; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _BidirectionalIterator1 194s 1515: __find_end(_BidirectionalIterator1 __first1, 194s 1515: _BidirectionalIterator1 __last1, 194s 1515: _BidirectionalIterator2 __first2, 194s 1515: _BidirectionalIterator2 __last2, 194s 1515: bidirectional_iterator_tag, bidirectional_iterator_tag, 194s 1515: _BinaryPredicate __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; 194s 1515: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; 194s 1515: 194s 1515: _RevIterator1 __rlast1(__first1); 194s 1515: _RevIterator2 __rlast2(__first2); 194s 1515: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, 194s 1515: _RevIterator2(__last2), __rlast2, 194s 1515: __comp); 194s 1515: 194s 1515: if (__rresult == __rlast1) 194s 1515: return __last1; 194s 1515: else 194s 1515: { 194s 1515: _BidirectionalIterator1 __result = __rresult.base(); 194s 1515: std::advance(__result, -std::distance(__first2, __last2)); 194s 1515: return __result; 194s 1515: } 194s 1515: } 194s 1515: # 324 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator1 194s 1515: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 194s 1515: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__find_end(__first1, __last1, __first2, __last2, 194s 1515: std::__iterator_category(__first1), 194s 1515: std::__iterator_category(__first2), 194s 1515: __gnu_cxx::__ops::__iter_equal_to_iter()); 194s 1515: } 194s 1515: # 373 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator1 194s 1515: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 194s 1515: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 194s 1515: _BinaryPredicate __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__find_end(__first1, __last1, __first2, __last2, 194s 1515: std::__iterator_category(__first1), 194s 1515: std::__iterator_category(__first2), 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: # 409 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 194s 1515: { return __last == std::find_if_not(__first, __last, __pred); } 194s 1515: # 427 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 194s 1515: { return __last == std::find_if(__first, __last, __pred); } 194s 1515: # 446 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 194s 1515: { return !std::none_of(__first, __last, __pred); } 194s 1515: # 462 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _InputIterator 194s 1515: find_if_not(_InputIterator __first, _InputIterator __last, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: return std::__find_if_not(__first, __last, 194s 1515: __gnu_cxx::__ops::__pred_iter(__pred)); 194s 1515: } 194s 1515: # 487 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: is_partitioned(_InputIterator __first, _InputIterator __last, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: __first = std::find_if_not(__first, __last, __pred); 194s 1515: if (__first == __last) 194s 1515: return true; 194s 1515: ++__first; 194s 1515: return std::none_of(__first, __last, __pred); 194s 1515: } 194s 1515: # 509 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: _ForwardIterator 194s 1515: partition_point(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: typedef typename iterator_traits<_ForwardIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: _DistanceType __len = std::distance(__first, __last); 194s 1515: 194s 1515: while (__len > 0) 194s 1515: { 194s 1515: _DistanceType __half = __len >> 1; 194s 1515: _ForwardIterator __middle = __first; 194s 1515: std::advance(__middle, __half); 194s 1515: if (__pred(*__middle)) 194s 1515: { 194s 1515: __first = __middle; 194s 1515: ++__first; 194s 1515: __len = __len - __half - 1; 194s 1515: } 194s 1515: else 194s 1515: __len = __half; 194s 1515: } 194s 1515: return __first; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: __remove_copy_if(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result, _Predicate __pred) 194s 1515: { 194s 1515: for (; __first != __last; ++__first) 194s 1515: if (!__pred(__first)) 194s 1515: { 194s 1515: *__result = *__first; 194s 1515: ++__result; 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: # 576 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: remove_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result, const _Tp& __value) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__remove_copy_if(__first, __last, __result, 194s 1515: __gnu_cxx::__ops::__iter_equals_val(__value)); 194s 1515: } 194s 1515: # 609 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: remove_copy_if(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result, _Predicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__remove_copy_if(__first, __last, __result, 194s 1515: __gnu_cxx::__ops::__pred_iter(__pred)); 194s 1515: } 194s 1515: # 644 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: copy_if(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result, _Predicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: for (; __first != __last; ++__first) 194s 1515: if (__pred(*__first)) 194s 1515: { 194s 1515: *__result = *__first; 194s 1515: ++__result; 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: # 681 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const auto __n2 = std::__size_to_integer(__n); 194s 1515: if (__n2 <= 0) 194s 1515: return __result; 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: auto __res = std::__copy_n_a(std::__niter_base(__first), __n2, 194s 1515: std::__niter_base(__result), true); 194s 1515: return std::__niter_wrap(__result, std::move(__res)); 194s 1515: } 194s 1515: # 718 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: pair<_OutputIterator1, _OutputIterator2> 194s 1515: partition_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator1 __out_true, _OutputIterator2 __out_false, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: for (; __first != __last; ++__first) 194s 1515: if (__pred(*__first)) 194s 1515: { 194s 1515: *__out_true = *__first; 194s 1515: ++__out_true; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: *__out_false = *__first; 194s 1515: ++__out_false; 194s 1515: } 194s 1515: 194s 1515: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); 194s 1515: } 194s 1515: # 769 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: remove(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __value) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__remove_if(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_equals_val(__value)); 194s 1515: } 194s 1515: # 803 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: remove_if(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__remove_if(__first, __last, 194s 1515: __gnu_cxx::__ops::__pred_iter(__pred)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _BinaryPredicate __binary_pred) 194s 1515: { 194s 1515: if (__first == __last) 194s 1515: return __last; 194s 1515: _ForwardIterator __next = __first; 194s 1515: while (++__next != __last) 194s 1515: { 194s 1515: if (__binary_pred(__first, __next)) 194s 1515: return __first; 194s 1515: __first = __next; 194s 1515: } 194s 1515: return __last; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __unique(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _BinaryPredicate __binary_pred) 194s 1515: { 194s 1515: 194s 1515: __first = std::__adjacent_find(__first, __last, __binary_pred); 194s 1515: if (__first == __last) 194s 1515: return __last; 194s 1515: 194s 1515: 194s 1515: _ForwardIterator __dest = __first; 194s 1515: ++__first; 194s 1515: while (++__first != __last) 194s 1515: if (!__binary_pred(__dest, __first)) 194s 1515: *++__dest = std::move(*__first); 194s 1515: return ++__dest; 194s 1515: } 194s 1515: # 872 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: unique(_ForwardIterator __first, _ForwardIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__unique(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_equal_to_iter()); 194s 1515: } 194s 1515: # 903 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: unique(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _BinaryPredicate __binary_pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__unique(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: __unique_copy(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _OutputIterator __result, _BinaryPredicate __binary_pred, 194s 1515: forward_iterator_tag, output_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _ForwardIterator __next = __first; 194s 1515: *__result = *__first; 194s 1515: while (++__next != __last) 194s 1515: if (!__binary_pred(__first, __next)) 194s 1515: { 194s 1515: __first = __next; 194s 1515: *++__result = *__first; 194s 1515: } 194s 1515: return ++__result; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: __unique_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result, _BinaryPredicate __binary_pred, 194s 1515: input_iterator_tag, output_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typename iterator_traits<_InputIterator>::value_type __value = *__first; 194s 1515: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) 194s 1515: __rebound_pred 194s 1515: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); 194s 1515: *__result = __value; 194s 1515: while (++__first != __last) 194s 1515: if (!__rebound_pred(__first, __value)) 194s 1515: { 194s 1515: __value = *__first; 194s 1515: *++__result = __value; 194s 1515: } 194s 1515: return ++__result; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __unique_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _ForwardIterator __result, _BinaryPredicate __binary_pred, 194s 1515: input_iterator_tag, forward_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: *__result = *__first; 194s 1515: while (++__first != __last) 194s 1515: if (!__binary_pred(__result, __first)) 194s 1515: *++__result = *__first; 194s 1515: return ++__result; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, 194s 1515: bidirectional_iterator_tag) 194s 1515: { 194s 1515: while (true) 194s 1515: if (__first == __last || __first == --__last) 194s 1515: return; 194s 1515: else 194s 1515: { 194s 1515: std::iter_swap(__first, __last); 194s 1515: ++__first; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: random_access_iterator_tag) 194s 1515: { 194s 1515: if (__first == __last) 194s 1515: return; 194s 1515: --__last; 194s 1515: while (__first < __last) 194s 1515: { 194s 1515: std::iter_swap(__first, __last); 194s 1515: ++__first; 194s 1515: --__last; 194s 1515: } 194s 1515: } 194s 1515: # 1064 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: std::__reverse(__first, __last, std::__iterator_category(__first)); 194s 1515: } 194s 1515: # 1092 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, 194s 1515: _OutputIterator __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: while (__first != __last) 194s 1515: { 194s 1515: --__last; 194s 1515: *__result = *__last; 194s 1515: ++__result; 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _EuclideanRingElement 194s 1515: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) 194s 1515: { 194s 1515: while (__n != 0) 194s 1515: { 194s 1515: _EuclideanRingElement __t = __m % __n; 194s 1515: __m = __n; 194s 1515: __n = __t; 194s 1515: } 194s 1515: return __m; 194s 1515: } 194s 1515: 194s 1515: inline namespace _V2 { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __rotate(_ForwardIterator __first, 194s 1515: _ForwardIterator __middle, 194s 1515: _ForwardIterator __last, 194s 1515: forward_iterator_tag) 194s 1515: { 194s 1515: if (__first == __middle) 194s 1515: return __last; 194s 1515: else if (__last == __middle) 194s 1515: return __first; 194s 1515: 194s 1515: _ForwardIterator __first2 = __middle; 194s 1515: do 194s 1515: { 194s 1515: std::iter_swap(__first, __first2); 194s 1515: ++__first; 194s 1515: ++__first2; 194s 1515: if (__first == __middle) 194s 1515: __middle = __first2; 194s 1515: } 194s 1515: while (__first2 != __last); 194s 1515: 194s 1515: _ForwardIterator __ret = __first; 194s 1515: 194s 1515: __first2 = __middle; 194s 1515: 194s 1515: while (__first2 != __last) 194s 1515: { 194s 1515: std::iter_swap(__first, __first2); 194s 1515: ++__first; 194s 1515: ++__first2; 194s 1515: if (__first == __middle) 194s 1515: __middle = __first2; 194s 1515: else if (__first2 == __last) 194s 1515: __first2 = __middle; 194s 1515: } 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _BidirectionalIterator 194s 1515: __rotate(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __middle, 194s 1515: _BidirectionalIterator __last, 194s 1515: bidirectional_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__first == __middle) 194s 1515: return __last; 194s 1515: else if (__last == __middle) 194s 1515: return __first; 194s 1515: 194s 1515: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 194s 1515: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 194s 1515: 194s 1515: while (__first != __middle && __middle != __last) 194s 1515: { 194s 1515: std::iter_swap(__first, --__last); 194s 1515: ++__first; 194s 1515: } 194s 1515: 194s 1515: if (__first == __middle) 194s 1515: { 194s 1515: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 194s 1515: return __last; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 194s 1515: return __first; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _RandomAccessIterator 194s 1515: __rotate(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __middle, 194s 1515: _RandomAccessIterator __last, 194s 1515: random_access_iterator_tag) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__first == __middle) 194s 1515: return __last; 194s 1515: else if (__last == __middle) 194s 1515: return __first; 194s 1515: 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 194s 1515: _Distance; 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::value_type 194s 1515: _ValueType; 194s 1515: 194s 1515: 194s 1515: typedef typename make_unsigned<_Distance>::type _UDistance; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Distance __n = __last - __first; 194s 1515: _Distance __k = __middle - __first; 194s 1515: 194s 1515: if (__k == __n - __k) 194s 1515: { 194s 1515: std::swap_ranges(__first, __middle, __middle); 194s 1515: return __middle; 194s 1515: } 194s 1515: 194s 1515: _RandomAccessIterator __p = __first; 194s 1515: _RandomAccessIterator __ret = __first + (__last - __middle); 194s 1515: 194s 1515: for (;;) 194s 1515: { 194s 1515: if (__k < __n - __k) 194s 1515: { 194s 1515: if (__is_pod(_ValueType) && __k == 1) 194s 1515: { 194s 1515: _ValueType __t = std::move(*__p); 194s 1515: std::move(__p + 1, __p + __n, __p); 194s 1515: *(__p + __n - 1) = std::move(__t); 194s 1515: return __ret; 194s 1515: } 194s 1515: _RandomAccessIterator __q = __p + __k; 194s 1515: for (_Distance __i = 0; __i < __n - __k; ++ __i) 194s 1515: { 194s 1515: std::iter_swap(__p, __q); 194s 1515: ++__p; 194s 1515: ++__q; 194s 1515: } 194s 1515: __n = static_cast<_UDistance>(__n) % static_cast<_UDistance>(__k); 194s 1515: if (__n == 0) 194s 1515: return __ret; 194s 1515: std::swap(__n, __k); 194s 1515: __k = __n - __k; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __k = __n - __k; 194s 1515: if (__is_pod(_ValueType) && __k == 1) 194s 1515: { 194s 1515: _ValueType __t = std::move(*(__p + __n - 1)); 194s 1515: std::move_backward(__p, __p + __n - 1, __p + __n); 194s 1515: *__p = std::move(__t); 194s 1515: return __ret; 194s 1515: } 194s 1515: _RandomAccessIterator __q = __p + __n; 194s 1515: __p = __q - __k; 194s 1515: for (_Distance __i = 0; __i < __n - __k; ++ __i) 194s 1515: { 194s 1515: --__p; 194s 1515: --__q; 194s 1515: std::iter_swap(__p, __q); 194s 1515: } 194s 1515: __n = static_cast<_UDistance>(__n) % static_cast<_UDistance>(__k); 194s 1515: if (__n == 0) 194s 1515: return __ret; 194s 1515: std::swap(__n, __k); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: # 1329 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: rotate(_ForwardIterator __first, _ForwardIterator __middle, 194s 1515: _ForwardIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__rotate(__first, __middle, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: # 1367 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, 194s 1515: _ForwardIterator __last, _OutputIterator __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::copy(__first, __middle, 194s 1515: std::copy(__middle, __last, __result)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __partition(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Predicate __pred, forward_iterator_tag) 194s 1515: { 194s 1515: if (__first == __last) 194s 1515: return __first; 194s 1515: 194s 1515: while (__pred(*__first)) 194s 1515: if (++__first == __last) 194s 1515: return __first; 194s 1515: 194s 1515: _ForwardIterator __next = __first; 194s 1515: 194s 1515: while (++__next != __last) 194s 1515: if (__pred(*__next)) 194s 1515: { 194s 1515: std::iter_swap(__first, __next); 194s 1515: ++__first; 194s 1515: } 194s 1515: 194s 1515: return __first; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _BidirectionalIterator 194s 1515: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, 194s 1515: _Predicate __pred, bidirectional_iterator_tag) 194s 1515: { 194s 1515: while (true) 194s 1515: { 194s 1515: while (true) 194s 1515: if (__first == __last) 194s 1515: return __first; 194s 1515: else if (__pred(*__first)) 194s 1515: ++__first; 194s 1515: else 194s 1515: break; 194s 1515: --__last; 194s 1515: while (true) 194s 1515: if (__first == __last) 194s 1515: return __first; 194s 1515: else if (!bool(__pred(*__last))) 194s 1515: --__last; 194s 1515: else 194s 1515: break; 194s 1515: std::iter_swap(__first, __last); 194s 1515: ++__first; 194s 1515: } 194s 1515: } 194s 1515: # 1448 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __stable_partition_adaptive(_ForwardIterator __first, 194s 1515: _ForwardIterator __last, 194s 1515: _Predicate __pred, _Distance __len, 194s 1515: _Pointer __buffer, 194s 1515: _Distance __buffer_size) 194s 1515: { 194s 1515: if (__len == 1) 194s 1515: return __first; 194s 1515: 194s 1515: if (__len <= __buffer_size) 194s 1515: { 194s 1515: _ForwardIterator __result1 = __first; 194s 1515: _Pointer __result2 = __buffer; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: *__result2 = std::move(*__first); 194s 1515: ++__result2; 194s 1515: ++__first; 194s 1515: for (; __first != __last; ++__first) 194s 1515: if (__pred(__first)) 194s 1515: { 194s 1515: *__result1 = std::move(*__first); 194s 1515: ++__result1; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: *__result2 = std::move(*__first); 194s 1515: ++__result2; 194s 1515: } 194s 1515: 194s 1515: std::move(__buffer, __result2, __result1); 194s 1515: return __result1; 194s 1515: } 194s 1515: 194s 1515: _ForwardIterator __middle = __first; 194s 1515: std::advance(__middle, __len / 2); 194s 1515: _ForwardIterator __left_split = 194s 1515: std::__stable_partition_adaptive(__first, __middle, __pred, 194s 1515: __len / 2, __buffer, 194s 1515: __buffer_size); 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Distance __right_len = __len - __len / 2; 194s 1515: _ForwardIterator __right_split = 194s 1515: std::__find_if_not_n(__middle, __right_len, __pred); 194s 1515: 194s 1515: if (__right_len) 194s 1515: __right_split = 194s 1515: std::__stable_partition_adaptive(__right_split, __last, __pred, 194s 1515: __right_len, 194s 1515: __buffer, __buffer_size); 194s 1515: 194s 1515: return std::rotate(__left_split, __middle, __right_split); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __stable_partition(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: __first = std::__find_if_not(__first, __last, __pred); 194s 1515: 194s 1515: if (__first == __last) 194s 1515: return __first; 194s 1515: 194s 1515: typedef typename iterator_traits<_ForwardIterator>::value_type 194s 1515: _ValueType; 194s 1515: typedef typename iterator_traits<_ForwardIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: const _DistanceType __len = std::distance(__first, __last); 194s 1515: # 1540 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: _Temporary_buffer<_ForwardIterator, _ValueType> 194s 1515: __buf(__first, __len); 194s 1515: return 194s 1515: std::__stable_partition_adaptive(__first, __last, __pred, 194s 1515: __len, 194s 1515: __buf.begin(), 194s 1515: _DistanceType(__buf.size())); 194s 1515: } 194s 1515: # 1566 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: stable_partition(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__stable_partition(__first, __last, 194s 1515: __gnu_cxx::__ops::__pred_iter(__pred)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __heap_select(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __middle, 194s 1515: _RandomAccessIterator __last, _Compare __comp) 194s 1515: { 194s 1515: std::__make_heap(__first, __middle, __comp); 194s 1515: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) 194s 1515: if (__comp(__i, __first)) 194s 1515: std::__pop_heap(__first, __middle, __i, __comp); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _RandomAccessIterator 194s 1515: __partial_sort_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _RandomAccessIterator __result_first, 194s 1515: _RandomAccessIterator __result_last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: typedef typename iterator_traits<_InputIterator>::value_type 194s 1515: _InputValueType; 194s 1515: typedef iterator_traits<_RandomAccessIterator> _RItTraits; 194s 1515: typedef typename _RItTraits::difference_type _DistanceType; 194s 1515: 194s 1515: if (__result_first == __result_last) 194s 1515: return __result_last; 194s 1515: _RandomAccessIterator __result_real_last = __result_first; 194s 1515: while (__first != __last && __result_real_last != __result_last) 194s 1515: { 194s 1515: *__result_real_last = *__first; 194s 1515: ++__result_real_last; 194s 1515: ++__first; 194s 1515: } 194s 1515: 194s 1515: std::__make_heap(__result_first, __result_real_last, __comp); 194s 1515: while (__first != __last) 194s 1515: { 194s 1515: if (__comp(__first, __result_first)) 194s 1515: std::__adjust_heap(__result_first, _DistanceType(0), 194s 1515: _DistanceType(__result_real_last 194s 1515: - __result_first), 194s 1515: _InputValueType(*__first), __comp); 194s 1515: ++__first; 194s 1515: } 194s 1515: std::__sort_heap(__result_first, __result_real_last, __comp); 194s 1515: return __result_real_last; 194s 1515: } 194s 1515: # 1660 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _RandomAccessIterator 194s 1515: partial_sort_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _RandomAccessIterator __result_first, 194s 1515: _RandomAccessIterator __result_last) 194s 1515: { 194s 1515: # 1675 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__partial_sort_copy(__first, __last, 194s 1515: __result_first, __result_last, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 1710 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _RandomAccessIterator 194s 1515: partial_sort_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _RandomAccessIterator __result_first, 194s 1515: _RandomAccessIterator __result_last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: # 1727 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__partial_sort_copy(__first, __last, 194s 1515: __result_first, __result_last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __unguarded_linear_insert(_RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: typename iterator_traits<_RandomAccessIterator>::value_type 194s 1515: __val = std::move(*__last); 194s 1515: _RandomAccessIterator __next = __last; 194s 1515: --__next; 194s 1515: while (__comp(__val, __next)) 194s 1515: { 194s 1515: *__last = std::move(*__next); 194s 1515: __last = __next; 194s 1515: --__next; 194s 1515: } 194s 1515: *__last = std::move(__val); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __insertion_sort(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, _Compare __comp) 194s 1515: { 194s 1515: if (__first == __last) return; 194s 1515: 194s 1515: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 194s 1515: { 194s 1515: if (__comp(__i, __first)) 194s 1515: { 194s 1515: typename iterator_traits<_RandomAccessIterator>::value_type 194s 1515: __val = std::move(*__i); 194s 1515: std::move_backward(__first, __i, __i + 1); 194s 1515: *__first = std::move(__val); 194s 1515: } 194s 1515: else 194s 1515: std::__unguarded_linear_insert(__i, 194s 1515: __gnu_cxx::__ops::__val_comp_iter(__comp)); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: __unguarded_insertion_sort(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, _Compare __comp) 194s 1515: { 194s 1515: for (_RandomAccessIterator __i = __first; __i != __last; ++__i) 194s 1515: std::__unguarded_linear_insert(__i, 194s 1515: __gnu_cxx::__ops::__val_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: enum { _S_threshold = 16 }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __final_insertion_sort(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, _Compare __comp) 194s 1515: { 194s 1515: if (__last - __first > int(_S_threshold)) 194s 1515: { 194s 1515: std::__insertion_sort(__first, __first + int(_S_threshold), __comp); 194s 1515: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, 194s 1515: __comp); 194s 1515: } 194s 1515: else 194s 1515: std::__insertion_sort(__first, __last, __comp); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _RandomAccessIterator 194s 1515: __unguarded_partition(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, 194s 1515: _RandomAccessIterator __pivot, _Compare __comp) 194s 1515: { 194s 1515: while (true) 194s 1515: { 194s 1515: while (__comp(__first, __pivot)) 194s 1515: ++__first; 194s 1515: --__last; 194s 1515: while (__comp(__pivot, __last)) 194s 1515: --__last; 194s 1515: if (!(__first < __last)) 194s 1515: return __first; 194s 1515: std::iter_swap(__first, __last); 194s 1515: ++__first; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _RandomAccessIterator 194s 1515: __unguarded_partition_pivot(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, _Compare __comp) 194s 1515: { 194s 1515: _RandomAccessIterator __mid = __first + (__last - __first) / 2; 194s 1515: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, 194s 1515: __comp); 194s 1515: return std::__unguarded_partition(__first + 1, __last, __first, __comp); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: __partial_sort(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __middle, 194s 1515: _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: std::__heap_select(__first, __middle, __last, __comp); 194s 1515: std::__sort_heap(__first, __middle, __comp); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __introsort_loop(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, 194s 1515: _Size __depth_limit, _Compare __comp) 194s 1515: { 194s 1515: while (__last - __first > int(_S_threshold)) 194s 1515: { 194s 1515: if (__depth_limit == 0) 194s 1515: { 194s 1515: std::__partial_sort(__first, __last, __last, __comp); 194s 1515: return; 194s 1515: } 194s 1515: --__depth_limit; 194s 1515: _RandomAccessIterator __cut = 194s 1515: std::__unguarded_partition_pivot(__first, __last, __comp); 194s 1515: std::__introsort_loop(__cut, __last, __depth_limit, __comp); 194s 1515: __last = __cut; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: if (__first != __last) 194s 1515: { 194s 1515: std::__introsort_loop(__first, __last, 194s 1515: std::__lg(__last - __first) * 2, 194s 1515: __comp); 194s 1515: std::__final_insertion_sort(__first, __last, __comp); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, 194s 1515: _RandomAccessIterator __last, _Size __depth_limit, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: while (__last - __first > 3) 194s 1515: { 194s 1515: if (__depth_limit == 0) 194s 1515: { 194s 1515: std::__heap_select(__first, __nth + 1, __last, __comp); 194s 1515: 194s 1515: std::iter_swap(__first, __nth); 194s 1515: return; 194s 1515: } 194s 1515: --__depth_limit; 194s 1515: _RandomAccessIterator __cut = 194s 1515: std::__unguarded_partition_pivot(__first, __last, __comp); 194s 1515: if (__cut <= __nth) 194s 1515: __first = __cut; 194s 1515: else 194s 1515: __last = __cut; 194s 1515: } 194s 1515: std::__insertion_sort(__first, __last, __comp); 194s 1515: } 194s 1515: # 1961 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__lower_bound(__first, __last, __val, 194s 1515: __gnu_cxx::__ops::__iter_comp_val(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __upper_bound(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val, _Compare __comp) 194s 1515: { 194s 1515: typedef typename iterator_traits<_ForwardIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: _DistanceType __len = std::distance(__first, __last); 194s 1515: 194s 1515: while (__len > 0) 194s 1515: { 194s 1515: _DistanceType __half = __len >> 1; 194s 1515: _ForwardIterator __middle = __first; 194s 1515: std::advance(__middle, __half); 194s 1515: if (__comp(__val, __middle)) 194s 1515: __len = __half; 194s 1515: else 194s 1515: { 194s 1515: __first = __middle; 194s 1515: ++__first; 194s 1515: __len = __len - __half - 1; 194s 1515: } 194s 1515: } 194s 1515: return __first; 194s 1515: } 194s 1515: # 2017 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__upper_bound(__first, __last, __val, 194s 1515: __gnu_cxx::__ops::__val_less_iter()); 194s 1515: } 194s 1515: # 2048 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__upper_bound(__first, __last, __val, 194s 1515: __gnu_cxx::__ops::__val_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_ForwardIterator, _ForwardIterator> 194s 1515: __equal_range(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val, 194s 1515: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) 194s 1515: { 194s 1515: typedef typename iterator_traits<_ForwardIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: _DistanceType __len = std::distance(__first, __last); 194s 1515: 194s 1515: while (__len > 0) 194s 1515: { 194s 1515: _DistanceType __half = __len >> 1; 194s 1515: _ForwardIterator __middle = __first; 194s 1515: std::advance(__middle, __half); 194s 1515: if (__comp_it_val(__middle, __val)) 194s 1515: { 194s 1515: __first = __middle; 194s 1515: ++__first; 194s 1515: __len = __len - __half - 1; 194s 1515: } 194s 1515: else if (__comp_val_it(__val, __middle)) 194s 1515: __len = __half; 194s 1515: else 194s 1515: { 194s 1515: _ForwardIterator __left 194s 1515: = std::__lower_bound(__first, __middle, __val, __comp_it_val); 194s 1515: std::advance(__first, __len); 194s 1515: _ForwardIterator __right 194s 1515: = std::__upper_bound(++__middle, __first, __val, __comp_val_it); 194s 1515: return pair<_ForwardIterator, _ForwardIterator>(__left, __right); 194s 1515: } 194s 1515: } 194s 1515: return pair<_ForwardIterator, _ForwardIterator>(__first, __first); 194s 1515: } 194s 1515: # 2121 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline pair<_ForwardIterator, _ForwardIterator> 194s 1515: equal_range(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__equal_range(__first, __last, __val, 194s 1515: __gnu_cxx::__ops::__iter_less_val(), 194s 1515: __gnu_cxx::__ops::__val_less_iter()); 194s 1515: } 194s 1515: # 2158 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline pair<_ForwardIterator, _ForwardIterator> 194s 1515: equal_range(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__equal_range(__first, __last, __val, 194s 1515: __gnu_cxx::__ops::__iter_comp_val(__comp), 194s 1515: __gnu_cxx::__ops::__val_comp_iter(__comp)); 194s 1515: } 194s 1515: # 2192 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: binary_search(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: _ForwardIterator __i 194s 1515: = std::__lower_bound(__first, __last, __val, 194s 1515: __gnu_cxx::__ops::__iter_less_val()); 194s 1515: return __i != __last && !(__val < *__i); 194s 1515: } 194s 1515: # 2226 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: binary_search(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __val, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: _ForwardIterator __i 194s 1515: = std::__lower_bound(__first, __last, __val, 194s 1515: __gnu_cxx::__ops::__iter_comp_val(__comp)); 194s 1515: return __i != __last && !bool(__comp(__val, *__i)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result, _Compare __comp) 194s 1515: { 194s 1515: while (__first1 != __last1 && __first2 != __last2) 194s 1515: { 194s 1515: if (__comp(__first2, __first1)) 194s 1515: { 194s 1515: *__result = std::move(*__first2); 194s 1515: ++__first2; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: *__result = std::move(*__first1); 194s 1515: ++__first1; 194s 1515: } 194s 1515: ++__result; 194s 1515: } 194s 1515: if (__first1 != __last1) 194s 1515: std::move(__first1, __last1, __result); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, 194s 1515: _BidirectionalIterator1 __last1, 194s 1515: _BidirectionalIterator2 __first2, 194s 1515: _BidirectionalIterator2 __last2, 194s 1515: _BidirectionalIterator3 __result, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: if (__first1 == __last1) 194s 1515: { 194s 1515: std::move_backward(__first2, __last2, __result); 194s 1515: return; 194s 1515: } 194s 1515: else if (__first2 == __last2) 194s 1515: return; 194s 1515: 194s 1515: --__last1; 194s 1515: --__last2; 194s 1515: while (true) 194s 1515: { 194s 1515: if (__comp(__last2, __last1)) 194s 1515: { 194s 1515: *--__result = std::move(*__last1); 194s 1515: if (__first1 == __last1) 194s 1515: { 194s 1515: std::move_backward(__first2, ++__last2, __result); 194s 1515: return; 194s 1515: } 194s 1515: --__last1; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: *--__result = std::move(*__last2); 194s 1515: if (__first2 == __last2) 194s 1515: return; 194s 1515: --__last2; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _BidirectionalIterator1 194s 1515: __rotate_adaptive(_BidirectionalIterator1 __first, 194s 1515: _BidirectionalIterator1 __middle, 194s 1515: _BidirectionalIterator1 __last, 194s 1515: _Distance __len1, _Distance __len2, 194s 1515: _BidirectionalIterator2 __buffer, 194s 1515: _Distance __buffer_size) 194s 1515: { 194s 1515: _BidirectionalIterator2 __buffer_end; 194s 1515: if (__len1 > __len2 && __len2 <= __buffer_size) 194s 1515: { 194s 1515: if (__len2) 194s 1515: { 194s 1515: __buffer_end = std::move(__middle, __last, __buffer); 194s 1515: std::move_backward(__first, __middle, __last); 194s 1515: return std::move(__buffer, __buffer_end, __first); 194s 1515: } 194s 1515: else 194s 1515: return __first; 194s 1515: } 194s 1515: else if (__len1 <= __buffer_size) 194s 1515: { 194s 1515: if (__len1) 194s 1515: { 194s 1515: __buffer_end = std::move(__first, __middle, __buffer); 194s 1515: std::move(__middle, __last, __first); 194s 1515: return std::move_backward(__buffer, __buffer_end, __last); 194s 1515: } 194s 1515: else 194s 1515: return __last; 194s 1515: } 194s 1515: else 194s 1515: return std::rotate(__first, __middle, __last); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __merge_adaptive(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __middle, 194s 1515: _BidirectionalIterator __last, 194s 1515: _Distance __len1, _Distance __len2, 194s 1515: _Pointer __buffer, _Compare __comp) 194s 1515: { 194s 1515: if (__len1 <= __len2) 194s 1515: { 194s 1515: _Pointer __buffer_end = std::move(__first, __middle, __buffer); 194s 1515: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, 194s 1515: __first, __comp); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: _Pointer __buffer_end = std::move(__middle, __last, __buffer); 194s 1515: std::__move_merge_adaptive_backward(__first, __middle, __buffer, 194s 1515: __buffer_end, __last, __comp); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __merge_adaptive_resize(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __middle, 194s 1515: _BidirectionalIterator __last, 194s 1515: _Distance __len1, _Distance __len2, 194s 1515: _Pointer __buffer, _Distance __buffer_size, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: if (__len1 <= __buffer_size || __len2 <= __buffer_size) 194s 1515: std::__merge_adaptive(__first, __middle, __last, 194s 1515: __len1, __len2, __buffer, __comp); 194s 1515: else 194s 1515: { 194s 1515: _BidirectionalIterator __first_cut = __first; 194s 1515: _BidirectionalIterator __second_cut = __middle; 194s 1515: _Distance __len11 = 0; 194s 1515: _Distance __len22 = 0; 194s 1515: if (__len1 > __len2) 194s 1515: { 194s 1515: __len11 = __len1 / 2; 194s 1515: std::advance(__first_cut, __len11); 194s 1515: __second_cut 194s 1515: = std::__lower_bound(__middle, __last, *__first_cut, 194s 1515: __gnu_cxx::__ops::__iter_comp_val(__comp)); 194s 1515: __len22 = std::distance(__middle, __second_cut); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __len22 = __len2 / 2; 194s 1515: std::advance(__second_cut, __len22); 194s 1515: __first_cut 194s 1515: = std::__upper_bound(__first, __middle, *__second_cut, 194s 1515: __gnu_cxx::__ops::__val_comp_iter(__comp)); 194s 1515: __len11 = std::distance(__first, __first_cut); 194s 1515: } 194s 1515: 194s 1515: _BidirectionalIterator __new_middle 194s 1515: = std::__rotate_adaptive(__first_cut, __middle, __second_cut, 194s 1515: _Distance(__len1 - __len11), __len22, 194s 1515: __buffer, __buffer_size); 194s 1515: std::__merge_adaptive_resize(__first, __first_cut, __new_middle, 194s 1515: __len11, __len22, 194s 1515: __buffer, __buffer_size, __comp); 194s 1515: std::__merge_adaptive_resize(__new_middle, __second_cut, __last, 194s 1515: _Distance(__len1 - __len11), 194s 1515: _Distance(__len2 - __len22), 194s 1515: __buffer, __buffer_size, __comp); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __merge_without_buffer(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __middle, 194s 1515: _BidirectionalIterator __last, 194s 1515: _Distance __len1, _Distance __len2, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: if (__len1 == 0 || __len2 == 0) 194s 1515: return; 194s 1515: 194s 1515: if (__len1 + __len2 == 2) 194s 1515: { 194s 1515: if (__comp(__middle, __first)) 194s 1515: std::iter_swap(__first, __middle); 194s 1515: return; 194s 1515: } 194s 1515: 194s 1515: _BidirectionalIterator __first_cut = __first; 194s 1515: _BidirectionalIterator __second_cut = __middle; 194s 1515: _Distance __len11 = 0; 194s 1515: _Distance __len22 = 0; 194s 1515: if (__len1 > __len2) 194s 1515: { 194s 1515: __len11 = __len1 / 2; 194s 1515: std::advance(__first_cut, __len11); 194s 1515: __second_cut 194s 1515: = std::__lower_bound(__middle, __last, *__first_cut, 194s 1515: __gnu_cxx::__ops::__iter_comp_val(__comp)); 194s 1515: __len22 = std::distance(__middle, __second_cut); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __len22 = __len2 / 2; 194s 1515: std::advance(__second_cut, __len22); 194s 1515: __first_cut 194s 1515: = std::__upper_bound(__first, __middle, *__second_cut, 194s 1515: __gnu_cxx::__ops::__val_comp_iter(__comp)); 194s 1515: __len11 = std::distance(__first, __first_cut); 194s 1515: } 194s 1515: 194s 1515: _BidirectionalIterator __new_middle 194s 1515: = std::rotate(__first_cut, __middle, __second_cut); 194s 1515: std::__merge_without_buffer(__first, __first_cut, __new_middle, 194s 1515: __len11, __len22, __comp); 194s 1515: std::__merge_without_buffer(__new_middle, __second_cut, __last, 194s 1515: __len1 - __len11, __len2 - __len22, __comp); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __inplace_merge(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __middle, 194s 1515: _BidirectionalIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: typedef typename iterator_traits<_BidirectionalIterator>::value_type 194s 1515: _ValueType; 194s 1515: typedef typename iterator_traits<_BidirectionalIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: if (__first == __middle || __middle == __last) 194s 1515: return; 194s 1515: 194s 1515: const _DistanceType __len1 = std::distance(__first, __middle); 194s 1515: const _DistanceType __len2 = std::distance(__middle, __last); 194s 1515: # 2510 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; 194s 1515: 194s 1515: 194s 1515: _TmpBuf __buf(__first, std::min(__len1, __len2)); 194s 1515: 194s 1515: if (__builtin_expect(__buf.size() == __buf.requested_size(), true)) 194s 1515: std::__merge_adaptive 194s 1515: (__first, __middle, __last, __len1, __len2, __buf.begin(), __comp); 194s 1515: else if (__builtin_expect(__buf.begin() == 0, false)) 194s 1515: std::__merge_without_buffer 194s 1515: (__first, __middle, __last, __len1, __len2, __comp); 194s 1515: else 194s 1515: std::__merge_adaptive_resize 194s 1515: (__first, __middle, __last, __len1, __len2, __buf.begin(), 194s 1515: _DistanceType(__buf.size()), __comp); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 2549 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: inplace_merge(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __middle, 194s 1515: _BidirectionalIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: std::__inplace_merge(__first, __middle, __last, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 2591 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: inplace_merge(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __middle, 194s 1515: _BidirectionalIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: std::__inplace_merge(__first, __middle, __last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _OutputIterator 194s 1515: __move_merge(_InputIterator __first1, _InputIterator __last1, 194s 1515: _InputIterator __first2, _InputIterator __last2, 194s 1515: _OutputIterator __result, _Compare __comp) 194s 1515: { 194s 1515: while (__first1 != __last1 && __first2 != __last2) 194s 1515: { 194s 1515: if (__comp(__first2, __first1)) 194s 1515: { 194s 1515: *__result = std::move(*__first2); 194s 1515: ++__first2; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: *__result = std::move(*__first1); 194s 1515: ++__first1; 194s 1515: } 194s 1515: ++__result; 194s 1515: } 194s 1515: return std::move(__first2, __last2, std::move(__first1, __last1, __result)) 194s 1515: 194s 1515: ; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __merge_sort_loop(_RandomAccessIterator1 __first, 194s 1515: _RandomAccessIterator1 __last, 194s 1515: _RandomAccessIterator2 __result, _Distance __step_size, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: const _Distance __two_step = 2 * __step_size; 194s 1515: 194s 1515: while (__last - __first >= __two_step) 194s 1515: { 194s 1515: __result = std::__move_merge(__first, __first + __step_size, 194s 1515: __first + __step_size, 194s 1515: __first + __two_step, 194s 1515: __result, __comp); 194s 1515: __first += __two_step; 194s 1515: } 194s 1515: __step_size = std::min(_Distance(__last - __first), __step_size); 194s 1515: 194s 1515: std::__move_merge(__first, __first + __step_size, 194s 1515: __first + __step_size, __last, __result, __comp); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __chunk_insertion_sort(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, 194s 1515: _Distance __chunk_size, _Compare __comp) 194s 1515: { 194s 1515: while (__last - __first >= __chunk_size) 194s 1515: { 194s 1515: std::__insertion_sort(__first, __first + __chunk_size, __comp); 194s 1515: __first += __chunk_size; 194s 1515: } 194s 1515: std::__insertion_sort(__first, __last, __comp); 194s 1515: } 194s 1515: 194s 1515: enum { _S_chunk_size = 7 }; 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __merge_sort_with_buffer(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, 194s 1515: _Pointer __buffer, _Compare __comp) 194s 1515: { 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 194s 1515: _Distance; 194s 1515: 194s 1515: const _Distance __len = __last - __first; 194s 1515: const _Pointer __buffer_last = __buffer + __len; 194s 1515: 194s 1515: _Distance __step_size = _S_chunk_size; 194s 1515: std::__chunk_insertion_sort(__first, __last, __step_size, __comp); 194s 1515: 194s 1515: while (__step_size < __len) 194s 1515: { 194s 1515: std::__merge_sort_loop(__first, __last, __buffer, 194s 1515: __step_size, __comp); 194s 1515: __step_size *= 2; 194s 1515: std::__merge_sort_loop(__buffer, __buffer_last, __first, 194s 1515: __step_size, __comp); 194s 1515: __step_size *= 2; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __stable_sort_adaptive(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __middle, 194s 1515: _RandomAccessIterator __last, 194s 1515: _Pointer __buffer, _Compare __comp) 194s 1515: { 194s 1515: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); 194s 1515: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); 194s 1515: 194s 1515: std::__merge_adaptive(__first, __middle, __last, 194s 1515: __middle - __first, __last - __middle, 194s 1515: __buffer, __comp); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __stable_sort_adaptive_resize(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, 194s 1515: _Pointer __buffer, _Distance __buffer_size, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: const _Distance __len = (__last - __first + 1) / 2; 194s 1515: const _RandomAccessIterator __middle = __first + __len; 194s 1515: if (__len > __buffer_size) 194s 1515: { 194s 1515: std::__stable_sort_adaptive_resize(__first, __middle, __buffer, 194s 1515: __buffer_size, __comp); 194s 1515: std::__stable_sort_adaptive_resize(__middle, __last, __buffer, 194s 1515: __buffer_size, __comp); 194s 1515: std::__merge_adaptive_resize(__first, __middle, __last, 194s 1515: _Distance(__middle - __first), 194s 1515: _Distance(__last - __middle), 194s 1515: __buffer, __buffer_size, 194s 1515: __comp); 194s 1515: } 194s 1515: else 194s 1515: std::__stable_sort_adaptive(__first, __middle, __last, 194s 1515: __buffer, __comp); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __inplace_stable_sort(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __last, _Compare __comp) 194s 1515: { 194s 1515: if (__last - __first < 15) 194s 1515: { 194s 1515: std::__insertion_sort(__first, __last, __comp); 194s 1515: return; 194s 1515: } 194s 1515: _RandomAccessIterator __middle = __first + (__last - __first) / 2; 194s 1515: std::__inplace_stable_sort(__first, __middle, __comp); 194s 1515: std::__inplace_stable_sort(__middle, __last, __comp); 194s 1515: std::__merge_without_buffer(__first, __middle, __last, 194s 1515: __middle - __first, 194s 1515: __last - __middle, 194s 1515: __comp); 194s 1515: } 194s 1515: # 2779 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __includes(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: while (__first1 != __last1 && __first2 != __last2) 194s 1515: { 194s 1515: if (__comp(__first2, __first1)) 194s 1515: return false; 194s 1515: if (!__comp(__first1, __first2)) 194s 1515: ++__first2; 194s 1515: ++__first1; 194s 1515: } 194s 1515: 194s 1515: return __first2 == __last2; 194s 1515: } 194s 1515: # 2817 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: includes(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__includes(__first1, __last1, __first2, __last2, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 2862 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: includes(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__includes(__first1, __last1, __first2, __last2, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: # 2898 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __next_permutation(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __last, _Compare __comp) 194s 1515: { 194s 1515: if (__first == __last) 194s 1515: return false; 194s 1515: _BidirectionalIterator __i = __first; 194s 1515: ++__i; 194s 1515: if (__i == __last) 194s 1515: return false; 194s 1515: __i = __last; 194s 1515: --__i; 194s 1515: 194s 1515: for(;;) 194s 1515: { 194s 1515: _BidirectionalIterator __ii = __i; 194s 1515: --__i; 194s 1515: if (__comp(__i, __ii)) 194s 1515: { 194s 1515: _BidirectionalIterator __j = __last; 194s 1515: while (!__comp(__i, --__j)) 194s 1515: {} 194s 1515: std::iter_swap(__i, __j); 194s 1515: std::__reverse(__ii, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: return true; 194s 1515: } 194s 1515: if (__i == __first) 194s 1515: { 194s 1515: std::__reverse(__first, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: return false; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: # 2948 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: next_permutation(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__next_permutation 194s 1515: (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 2981 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: next_permutation(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __last, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__next_permutation 194s 1515: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: __prev_permutation(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __last, _Compare __comp) 194s 1515: { 194s 1515: if (__first == __last) 194s 1515: return false; 194s 1515: _BidirectionalIterator __i = __first; 194s 1515: ++__i; 194s 1515: if (__i == __last) 194s 1515: return false; 194s 1515: __i = __last; 194s 1515: --__i; 194s 1515: 194s 1515: for(;;) 194s 1515: { 194s 1515: _BidirectionalIterator __ii = __i; 194s 1515: --__i; 194s 1515: if (__comp(__ii, __i)) 194s 1515: { 194s 1515: _BidirectionalIterator __j = __last; 194s 1515: while (!__comp(--__j, __i)) 194s 1515: {} 194s 1515: std::iter_swap(__i, __j); 194s 1515: std::__reverse(__ii, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: return true; 194s 1515: } 194s 1515: if (__i == __first) 194s 1515: { 194s 1515: std::__reverse(__first, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: return false; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: # 3051 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: prev_permutation(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__prev_permutation(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 3084 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline bool 194s 1515: prev_permutation(_BidirectionalIterator __first, 194s 1515: _BidirectionalIterator __last, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__prev_permutation(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: __replace_copy_if(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result, 194s 1515: _Predicate __pred, const _Tp& __new_value) 194s 1515: { 194s 1515: for (; __first != __last; ++__first, (void)++__result) 194s 1515: if (__pred(__first)) 194s 1515: *__result = __new_value; 194s 1515: else 194s 1515: *__result = *__first; 194s 1515: return __result; 194s 1515: } 194s 1515: # 3136 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: replace_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result, 194s 1515: const _Tp& __old_value, const _Tp& __new_value) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__replace_copy_if(__first, __last, __result, 194s 1515: __gnu_cxx::__ops::__iter_equals_val(__old_value), 194s 1515: __new_value); 194s 1515: } 194s 1515: # 3171 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: replace_copy_if(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result, 194s 1515: _Predicate __pred, const _Tp& __new_value) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__replace_copy_if(__first, __last, __result, 194s 1515: __gnu_cxx::__ops::__pred_iter(__pred), 194s 1515: __new_value); 194s 1515: } 194s 1515: # 3200 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: is_sorted(_ForwardIterator __first, _ForwardIterator __last) 194s 1515: { return std::is_sorted_until(__first, __last) == __last; } 194s 1515: # 3215 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: is_sorted(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Compare __comp) 194s 1515: { return std::is_sorted_until(__first, __last, __comp) == __last; } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: if (__first == __last) 194s 1515: return __last; 194s 1515: 194s 1515: _ForwardIterator __next = __first; 194s 1515: for (++__next; __next != __last; __first = __next, (void)++__next) 194s 1515: if (__comp(__next, __first)) 194s 1515: return __next; 194s 1515: return __next; 194s 1515: } 194s 1515: # 3246 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__is_sorted_until(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 3271 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__is_sorted_until(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: # 3297 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline pair 194s 1515: minmax(const _Tp& __a, const _Tp& __b) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return __b < __a ? pair(__b, __a) 194s 1515: : pair(__a, __b); 194s 1515: } 194s 1515: # 3318 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline pair 194s 1515: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) 194s 1515: { 194s 1515: return __comp(__b, __a) ? pair(__b, __a) 194s 1515: : pair(__a, __b); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_ForwardIterator, _ForwardIterator> 194s 1515: __minmax_element(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: _ForwardIterator __next = __first; 194s 1515: if (__first == __last 194s 1515: || ++__next == __last) 194s 1515: return std::make_pair(__first, __first); 194s 1515: 194s 1515: _ForwardIterator __min{}, __max{}; 194s 1515: if (__comp(__next, __first)) 194s 1515: { 194s 1515: __min = __next; 194s 1515: __max = __first; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __min = __first; 194s 1515: __max = __next; 194s 1515: } 194s 1515: 194s 1515: __first = __next; 194s 1515: ++__first; 194s 1515: 194s 1515: while (__first != __last) 194s 1515: { 194s 1515: __next = __first; 194s 1515: if (++__next == __last) 194s 1515: { 194s 1515: if (__comp(__first, __min)) 194s 1515: __min = __first; 194s 1515: else if (!__comp(__first, __max)) 194s 1515: __max = __first; 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: if (__comp(__next, __first)) 194s 1515: { 194s 1515: if (__comp(__next, __min)) 194s 1515: __min = __next; 194s 1515: if (!__comp(__first, __max)) 194s 1515: __max = __first; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: if (__comp(__first, __min)) 194s 1515: __min = __first; 194s 1515: if (!__comp(__next, __max)) 194s 1515: __max = __next; 194s 1515: } 194s 1515: 194s 1515: __first = __next; 194s 1515: ++__first; 194s 1515: } 194s 1515: 194s 1515: return std::make_pair(__min, __max); 194s 1515: } 194s 1515: # 3398 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline pair<_ForwardIterator, _ForwardIterator> 194s 1515: minmax_element(_ForwardIterator __first, _ForwardIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__minmax_element(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 3426 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline pair<_ForwardIterator, _ForwardIterator> 194s 1515: minmax_element(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__minmax_element(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline pair<_Tp, _Tp> 194s 1515: minmax(initializer_list<_Tp> __l) 194s 1515: { 194s 1515: ; 194s 1515: pair __p = 194s 1515: std::__minmax_element(__l.begin(), __l.end(), 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: return std::make_pair(*__p.first, *__p.second); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline pair<_Tp, _Tp> 194s 1515: minmax(initializer_list<_Tp> __l, _Compare __comp) 194s 1515: { 194s 1515: ; 194s 1515: pair __p = 194s 1515: std::__minmax_element(__l.begin(), __l.end(), 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: return std::make_pair(*__p.first, *__p.second); 194s 1515: } 194s 1515: # 3482 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 194s 1515: _ForwardIterator2 __first2, _BinaryPredicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__is_permutation(__first1, __last1, __first2, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__pred)); 194s 1515: } 194s 1515: # 3684 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: pair<_IntType, _IntType> 194s 1515: __gen_two_uniform_ints(_IntType __b0, _IntType __b1, 194s 1515: _UniformRandomBitGenerator&& __g) 194s 1515: { 194s 1515: _IntType __x 194s 1515: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g); 194s 1515: return std::make_pair(__x / __b1, __x % __b1); 194s 1515: } 194s 1515: # 3706 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _UniformRandomNumberGenerator&& __g) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: if (__first == __last) 194s 1515: return; 194s 1515: 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: typedef typename std::make_unsigned<_DistanceType>::type __ud_type; 194s 1515: typedef typename std::uniform_int_distribution<__ud_type> __distr_type; 194s 1515: typedef typename __distr_type::param_type __p_type; 194s 1515: 194s 1515: typedef typename remove_reference<_UniformRandomNumberGenerator>::type 194s 1515: _Gen; 194s 1515: typedef typename common_type::type 194s 1515: __uc_type; 194s 1515: 194s 1515: const __uc_type __urngrange = __g.max() - __g.min(); 194s 1515: const __uc_type __urange = __uc_type(__last - __first); 194s 1515: 194s 1515: if (__urngrange / __urange >= __urange) 194s 1515: 194s 1515: { 194s 1515: _RandomAccessIterator __i = __first + 1; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if ((__urange % 2) == 0) 194s 1515: { 194s 1515: __distr_type __d{0, 1}; 194s 1515: std::iter_swap(__i++, __first + __d(__g)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: while (__i != __last) 194s 1515: { 194s 1515: const __uc_type __swap_range = __uc_type(__i - __first) + 1; 194s 1515: 194s 1515: const pair<__uc_type, __uc_type> __pospos = 194s 1515: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g); 194s 1515: 194s 1515: std::iter_swap(__i++, __first + __pospos.first); 194s 1515: std::iter_swap(__i++, __first + __pospos.second); 194s 1515: } 194s 1515: 194s 1515: return; 194s 1515: } 194s 1515: 194s 1515: __distr_type __d; 194s 1515: 194s 1515: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 194s 1515: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 3789 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _Function 194s 1515: for_each(_InputIterator __first, _InputIterator __last, _Function __f) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: for (; __first != __last; ++__first) 194s 1515: __f(*__first); 194s 1515: return __f; 194s 1515: } 194s 1515: # 3851 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _InputIterator 194s 1515: find(_InputIterator __first, _InputIterator __last, const _Tp& __val) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: # 3895 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: return std::__find_if(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_equals_val(__val)); 194s 1515: } 194s 1515: # 3909 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _InputIterator 194s 1515: find_if(_InputIterator __first, _InputIterator __last, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__find_if(__first, __last, 194s 1515: __gnu_cxx::__ops::__pred_iter(__pred)); 194s 1515: } 194s 1515: # 3941 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: _InputIterator 194s 1515: find_first_of(_InputIterator __first1, _InputIterator __last1, 194s 1515: _ForwardIterator __first2, _ForwardIterator __last2) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: for (; __first1 != __last1; ++__first1) 194s 1515: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 194s 1515: if (*__first1 == *__iter) 194s 1515: return __first1; 194s 1515: return __last1; 194s 1515: } 194s 1515: # 3982 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: _InputIterator 194s 1515: find_first_of(_InputIterator __first1, _InputIterator __last1, 194s 1515: _ForwardIterator __first2, _ForwardIterator __last2, 194s 1515: _BinaryPredicate __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: for (; __first1 != __last1; ++__first1) 194s 1515: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 194s 1515: if (__comp(*__first1, *__iter)) 194s 1515: return __first1; 194s 1515: return __last1; 194s 1515: } 194s 1515: # 4015 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: adjacent_find(_ForwardIterator __first, _ForwardIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__adjacent_find(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_equal_to_iter()); 194s 1515: } 194s 1515: # 4041 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _BinaryPredicate __binary_pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__adjacent_find(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 194s 1515: } 194s 1515: # 4067 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline typename iterator_traits<_InputIterator>::difference_type 194s 1515: count(_InputIterator __first, _InputIterator __last, const _Tp& __value) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__count_if(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_equals_val(__value)); 194s 1515: } 194s 1515: # 4091 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline typename iterator_traits<_InputIterator>::difference_type 194s 1515: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__count_if(__first, __last, 194s 1515: __gnu_cxx::__ops::__pred_iter(__pred)); 194s 1515: } 194s 1515: # 4132 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator1 194s 1515: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 194s 1515: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__search(__first1, __last1, __first2, __last2, 194s 1515: __gnu_cxx::__ops::__iter_equal_to_iter()); 194s 1515: } 194s 1515: # 4166 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: search_n(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Integer __count, const _Tp& __val) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__search_n(__first, __last, __count, 194s 1515: __gnu_cxx::__ops::__iter_equals_val(__val)); 194s 1515: } 194s 1515: # 4200 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: search_n(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Integer __count, const _Tp& __val, 194s 1515: _BinaryPredicate __binary_pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__search_n(__first, __last, __count, 194s 1515: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); 194s 1515: } 194s 1515: # 4250 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: transform(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result, _UnaryOperation __unary_op) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: for (; __first != __last; ++__first, (void)++__result) 194s 1515: *__result = __unary_op(*__first); 194s 1515: return __result; 194s 1515: } 194s 1515: # 4288 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: transform(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _OutputIterator __result, 194s 1515: _BinaryOperation __binary_op) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) 194s 1515: *__result = __binary_op(*__first1, *__first2); 194s 1515: return __result; 194s 1515: } 194s 1515: # 4322 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: replace(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __old_value, const _Tp& __new_value) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: for (; __first != __last; ++__first) 194s 1515: if (*__first == __old_value) 194s 1515: *__first = __new_value; 194s 1515: } 194s 1515: # 4355 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: replace_if(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Predicate __pred, const _Tp& __new_value) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: for (; __first != __last; ++__first) 194s 1515: if (__pred(*__first)) 194s 1515: *__first = __new_value; 194s 1515: } 194s 1515: # 4387 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: generate(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Generator __gen) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: for (; __first != __last; ++__first) 194s 1515: *__first = __gen(); 194s 1515: } 194s 1515: # 4420 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: generate_n(_OutputIterator __first, _Size __n, _Generator __gen) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef __decltype(std::__size_to_integer(__n)) _IntSize; 194s 1515: for (_IntSize __niter = std::__size_to_integer(__n); 194s 1515: __niter > 0; --__niter, (void) ++__first) 194s 1515: *__first = __gen(); 194s 1515: return __first; 194s 1515: } 194s 1515: # 4455 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: unique_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: if (__first == __last) 194s 1515: return __result; 194s 1515: return std::__unique_copy(__first, __last, __result, 194s 1515: __gnu_cxx::__ops::__iter_equal_to_iter(), 194s 1515: std::__iterator_category(__first), 194s 1515: std::__iterator_category(__result)); 194s 1515: } 194s 1515: # 4495 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: unique_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _OutputIterator __result, 194s 1515: _BinaryPredicate __binary_pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: if (__first == __last) 194s 1515: return __result; 194s 1515: return std::__unique_copy(__first, __last, __result, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), 194s 1515: std::__iterator_category(__first), 194s 1515: std::__iterator_category(__result)); 194s 1515: } 194s 1515: # 4534 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: if (__first == __last) 194s 1515: return; 194s 1515: # 4569 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 194s 1515: { 194s 1515: 194s 1515: _RandomAccessIterator __j = __first 194s 1515: + (std::rand() % ((__i - __first) + 1)); 194s 1515: if (__i != __j) 194s 1515: std::iter_swap(__i, __j); 194s 1515: } 194s 1515: } 194s 1515: # 4597 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: 194s 1515: _RandomNumberGenerator&& __rand) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: if (__first == __last) 194s 1515: return; 194s 1515: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 194s 1515: { 194s 1515: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); 194s 1515: if (__i != __j) 194s 1515: std::iter_swap(__i, __j); 194s 1515: } 194s 1515: } 194s 1515: # 4639 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: partition(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Predicate __pred) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: return std::__partition(__first, __last, __pred, 194s 1515: std::__iterator_category(__first)); 194s 1515: } 194s 1515: # 4674 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: partial_sort(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __middle, 194s 1515: _RandomAccessIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: std::__partial_sort(__first, __middle, __last, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 4713 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: partial_sort(_RandomAccessIterator __first, 194s 1515: _RandomAccessIterator __middle, 194s 1515: _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: std::__partial_sort(__first, __middle, __last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: # 4750 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 194s 1515: _RandomAccessIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: if (__first == __last || __nth == __last) 194s 1515: return; 194s 1515: 194s 1515: std::__introselect(__first, __nth, __last, 194s 1515: std::__lg(__last - __first) * 2, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 4790 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 194s 1515: _RandomAccessIterator __last, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: if (__first == __last || __nth == __last) 194s 1515: return; 194s 1515: 194s 1515: std::__introselect(__first, __nth, __last, 194s 1515: std::__lg(__last - __first) * 2, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: # 4828 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 4859 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: __merge(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result, _Compare __comp) 194s 1515: { 194s 1515: while (__first1 != __last1 && __first2 != __last2) 194s 1515: { 194s 1515: if (__comp(__first2, __first1)) 194s 1515: { 194s 1515: *__result = *__first2; 194s 1515: ++__first2; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: *__result = *__first1; 194s 1515: ++__first1; 194s 1515: } 194s 1515: ++__result; 194s 1515: } 194s 1515: return std::copy(__first2, __last2, 194s 1515: std::copy(__first1, __last1, __result)); 194s 1515: } 194s 1515: # 4922 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: merge(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__merge(__first1, __last1, 194s 1515: __first2, __last2, __result, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 4973 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: merge(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__merge(__first1, __last1, 194s 1515: __first2, __last2, __result, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::value_type 194s 1515: _ValueType; 194s 1515: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 194s 1515: _DistanceType; 194s 1515: 194s 1515: if (__first == __last) 194s 1515: return; 194s 1515: # 5022 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; 194s 1515: 194s 1515: 194s 1515: _TmpBuf __buf(__first, (__last - __first + 1) / 2); 194s 1515: 194s 1515: if (__builtin_expect(__buf.requested_size() == __buf.size(), true)) 194s 1515: std::__stable_sort_adaptive(__first, 194s 1515: __first + _DistanceType(__buf.size()), 194s 1515: __last, __buf.begin(), __comp); 194s 1515: else if (__builtin_expect(__buf.begin() == 0, false)) 194s 1515: std::__inplace_stable_sort(__first, __last, __comp); 194s 1515: else 194s 1515: std::__stable_sort_adaptive_resize(__first, __last, __buf.begin(), 194s 1515: _DistanceType(__buf.size()), __comp); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 5058 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: std::__stable_sort(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 5093 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: std::__stable_sort(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: __set_union(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result, _Compare __comp) 194s 1515: { 194s 1515: while (__first1 != __last1 && __first2 != __last2) 194s 1515: { 194s 1515: if (__comp(__first1, __first2)) 194s 1515: { 194s 1515: *__result = *__first1; 194s 1515: ++__first1; 194s 1515: } 194s 1515: else if (__comp(__first2, __first1)) 194s 1515: { 194s 1515: *__result = *__first2; 194s 1515: ++__first2; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: *__result = *__first1; 194s 1515: ++__first1; 194s 1515: ++__first2; 194s 1515: } 194s 1515: ++__result; 194s 1515: } 194s 1515: return std::copy(__first2, __last2, 194s 1515: std::copy(__first1, __last1, __result)); 194s 1515: } 194s 1515: # 5164 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__set_union(__first1, __last1, 194s 1515: __first2, __last2, __result, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 5215 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__set_union(__first1, __last1, 194s 1515: __first2, __last2, __result, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result, _Compare __comp) 194s 1515: { 194s 1515: while (__first1 != __last1 && __first2 != __last2) 194s 1515: if (__comp(__first1, __first2)) 194s 1515: ++__first1; 194s 1515: else if (__comp(__first2, __first1)) 194s 1515: ++__first2; 194s 1515: else 194s 1515: { 194s 1515: *__result = *__first1; 194s 1515: ++__first1; 194s 1515: ++__first2; 194s 1515: ++__result; 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: # 5288 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__set_intersection(__first1, __last1, 194s 1515: __first2, __last2, __result, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 5338 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__set_intersection(__first1, __last1, 194s 1515: __first2, __last2, __result, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result, _Compare __comp) 194s 1515: { 194s 1515: while (__first1 != __last1 && __first2 != __last2) 194s 1515: if (__comp(__first1, __first2)) 194s 1515: { 194s 1515: *__result = *__first1; 194s 1515: ++__first1; 194s 1515: ++__result; 194s 1515: } 194s 1515: else if (__comp(__first2, __first1)) 194s 1515: ++__first2; 194s 1515: else 194s 1515: { 194s 1515: ++__first1; 194s 1515: ++__first2; 194s 1515: } 194s 1515: return std::copy(__first1, __last1, __result); 194s 1515: } 194s 1515: # 5413 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__set_difference(__first1, __last1, 194s 1515: __first2, __last2, __result, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 5465 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result, _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__set_difference(__first1, __last1, 194s 1515: __first2, __last2, __result, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _OutputIterator 194s 1515: __set_symmetric_difference(_InputIterator1 __first1, 194s 1515: _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, 194s 1515: _InputIterator2 __last2, 194s 1515: _OutputIterator __result, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: while (__first1 != __last1 && __first2 != __last2) 194s 1515: if (__comp(__first1, __first2)) 194s 1515: { 194s 1515: *__result = *__first1; 194s 1515: ++__first1; 194s 1515: ++__result; 194s 1515: } 194s 1515: else if (__comp(__first2, __first1)) 194s 1515: { 194s 1515: *__result = *__first2; 194s 1515: ++__first2; 194s 1515: ++__result; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: ++__first1; 194s 1515: ++__first2; 194s 1515: } 194s 1515: return std::copy(__first2, __last2, 194s 1515: std::copy(__first1, __last1, __result)); 194s 1515: } 194s 1515: # 5546 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__set_symmetric_difference(__first1, __last1, 194s 1515: __first2, __last2, __result, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 5598 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _OutputIterator 194s 1515: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, _InputIterator2 __last2, 194s 1515: _OutputIterator __result, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__set_symmetric_difference(__first1, __last1, 194s 1515: __first2, __last2, __result, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __min_element(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: if (__first == __last) 194s 1515: return __first; 194s 1515: _ForwardIterator __result = __first; 194s 1515: while (++__first != __last) 194s 1515: if (__comp(__first, __result)) 194s 1515: __result = __first; 194s 1515: return __result; 194s 1515: } 194s 1515: # 5652 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: _ForwardIterator 194s 1515: inline min_element(_ForwardIterator __first, _ForwardIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__min_element(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 5677 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: min_element(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__min_element(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __max_element(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: if (__first == __last) return __first; 194s 1515: _ForwardIterator __result = __first; 194s 1515: while (++__first != __last) 194s 1515: if (__comp(__result, __first)) 194s 1515: __result = __first; 194s 1515: return __result; 194s 1515: } 194s 1515: # 5716 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: max_element(_ForwardIterator __first, _ForwardIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__max_element(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: # 5741 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline _ForwardIterator 194s 1515: max_element(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: _Compare __comp) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: ; 194s 1515: 194s 1515: return std::__max_element(__first, __last, 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Tp 194s 1515: min(initializer_list<_Tp> __l) 194s 1515: { 194s 1515: ; 194s 1515: return *std::__min_element(__l.begin(), __l.end(), 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Tp 194s 1515: min(initializer_list<_Tp> __l, _Compare __comp) 194s 1515: { 194s 1515: ; 194s 1515: return *std::__min_element(__l.begin(), __l.end(), 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Tp 194s 1515: max(initializer_list<_Tp> __l) 194s 1515: { 194s 1515: ; 194s 1515: return *std::__max_element(__l.begin(), __l.end(), 194s 1515: __gnu_cxx::__ops::__iter_less_iter()); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _Tp 194s 1515: max(initializer_list<_Tp> __l, _Compare __comp) 194s 1515: { 194s 1515: ; 194s 1515: return *std::__max_element(__l.begin(), __l.end(), 194s 1515: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 194s 1515: } 194s 1515: # 5929 "/usr/include/c++/15/bits/stl_algo.h" 3 4 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 64 "/usr/include/c++/15/algorithm" 2 3 4 194s 1515: # 80 "/usr/include/c++/15/algorithm" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 81 "/usr/include/c++/15/algorithm" 2 3 4 194s 1515: # 3169 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/iomanip" 1 3 4 194s 1515: # 40 "/usr/include/c++/15/iomanip" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: # 50 "/usr/include/c++/15/iomanip" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 51 "/usr/include/c++/15/iomanip" 2 3 4 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/locale" 1 3 4 194s 1515: # 45 "/usr/include/c++/15/locale" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/locale_facets_nonio.h" 1 3 4 194s 1515: # 43 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 54 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: class time_base 194s 1515: { 194s 1515: public: 194s 1515: enum dateorder { no_order, dmy, mdy, ymd, ydm }; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __timepunct_cache : public locale::facet 194s 1515: { 194s 1515: 194s 1515: static const _CharT* _S_timezones[14]; 194s 1515: 194s 1515: const _CharT* _M_date_format; 194s 1515: const _CharT* _M_date_era_format; 194s 1515: const _CharT* _M_time_format; 194s 1515: const _CharT* _M_time_era_format; 194s 1515: const _CharT* _M_date_time_format; 194s 1515: const _CharT* _M_date_time_era_format; 194s 1515: const _CharT* _M_am; 194s 1515: const _CharT* _M_pm; 194s 1515: const _CharT* _M_am_pm_format; 194s 1515: 194s 1515: 194s 1515: const _CharT* _M_day1; 194s 1515: const _CharT* _M_day2; 194s 1515: const _CharT* _M_day3; 194s 1515: const _CharT* _M_day4; 194s 1515: const _CharT* _M_day5; 194s 1515: const _CharT* _M_day6; 194s 1515: const _CharT* _M_day7; 194s 1515: 194s 1515: 194s 1515: const _CharT* _M_aday1; 194s 1515: const _CharT* _M_aday2; 194s 1515: const _CharT* _M_aday3; 194s 1515: const _CharT* _M_aday4; 194s 1515: const _CharT* _M_aday5; 194s 1515: const _CharT* _M_aday6; 194s 1515: const _CharT* _M_aday7; 194s 1515: 194s 1515: 194s 1515: const _CharT* _M_month01; 194s 1515: const _CharT* _M_month02; 194s 1515: const _CharT* _M_month03; 194s 1515: const _CharT* _M_month04; 194s 1515: const _CharT* _M_month05; 194s 1515: const _CharT* _M_month06; 194s 1515: const _CharT* _M_month07; 194s 1515: const _CharT* _M_month08; 194s 1515: const _CharT* _M_month09; 194s 1515: const _CharT* _M_month10; 194s 1515: const _CharT* _M_month11; 194s 1515: const _CharT* _M_month12; 194s 1515: 194s 1515: 194s 1515: const _CharT* _M_amonth01; 194s 1515: const _CharT* _M_amonth02; 194s 1515: const _CharT* _M_amonth03; 194s 1515: const _CharT* _M_amonth04; 194s 1515: const _CharT* _M_amonth05; 194s 1515: const _CharT* _M_amonth06; 194s 1515: const _CharT* _M_amonth07; 194s 1515: const _CharT* _M_amonth08; 194s 1515: const _CharT* _M_amonth09; 194s 1515: const _CharT* _M_amonth10; 194s 1515: const _CharT* _M_amonth11; 194s 1515: const _CharT* _M_amonth12; 194s 1515: 194s 1515: bool _M_allocated; 194s 1515: 194s 1515: __timepunct_cache(size_t __refs = 0) : facet(__refs), 194s 1515: _M_date_format(0), _M_date_era_format(0), _M_time_format(0), 194s 1515: _M_time_era_format(0), _M_date_time_format(0), 194s 1515: _M_date_time_era_format(0), _M_am(0), _M_pm(0), 194s 1515: _M_am_pm_format(0), _M_day1(0), _M_day2(0), _M_day3(0), 194s 1515: _M_day4(0), _M_day5(0), _M_day6(0), _M_day7(0), 194s 1515: _M_aday1(0), _M_aday2(0), _M_aday3(0), _M_aday4(0), 194s 1515: _M_aday5(0), _M_aday6(0), _M_aday7(0), _M_month01(0), 194s 1515: _M_month02(0), _M_month03(0), _M_month04(0), _M_month05(0), 194s 1515: _M_month06(0), _M_month07(0), _M_month08(0), _M_month09(0), 194s 1515: _M_month10(0), _M_month11(0), _M_month12(0), _M_amonth01(0), 194s 1515: _M_amonth02(0), _M_amonth03(0), _M_amonth04(0), 194s 1515: _M_amonth05(0), _M_amonth06(0), _M_amonth07(0), 194s 1515: _M_amonth08(0), _M_amonth09(0), _M_amonth10(0), 194s 1515: _M_amonth11(0), _M_amonth12(0), _M_allocated(false) 194s 1515: { } 194s 1515: 194s 1515: ~__timepunct_cache(); 194s 1515: 194s 1515: private: 194s 1515: __timepunct_cache& 194s 1515: operator=(const __timepunct_cache&); 194s 1515: 194s 1515: explicit 194s 1515: __timepunct_cache(const __timepunct_cache&); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: __timepunct_cache<_CharT>::~__timepunct_cache() 194s 1515: { 194s 1515: if (_M_allocated) 194s 1515: { 194s 1515: 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: const char* 194s 1515: __timepunct_cache::_S_timezones[14]; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: const wchar_t* 194s 1515: __timepunct_cache::_S_timezones[14]; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: const _CharT* __timepunct_cache<_CharT>::_S_timezones[14]; 194s 1515: 194s 1515: template 194s 1515: class __timepunct : public locale::facet 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT __char_type; 194s 1515: typedef __timepunct_cache<_CharT> __cache_type; 194s 1515: 194s 1515: protected: 194s 1515: __cache_type* _M_data; 194s 1515: __c_locale _M_c_locale_timepunct; 194s 1515: const char* _M_name_timepunct; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: static locale::id id; 194s 1515: 194s 1515: explicit 194s 1515: __timepunct(size_t __refs = 0); 194s 1515: 194s 1515: explicit 194s 1515: __timepunct(__cache_type* __cache, size_t __refs = 0); 194s 1515: # 208 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: explicit 194s 1515: __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0); 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format, 194s 1515: const tm* __tm) const throw (); 194s 1515: 194s 1515: void 194s 1515: _M_date_formats(const _CharT** __date) const 194s 1515: { 194s 1515: 194s 1515: __date[0] = _M_data->_M_date_format; 194s 1515: __date[1] = _M_data->_M_date_era_format; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_time_formats(const _CharT** __time) const 194s 1515: { 194s 1515: 194s 1515: __time[0] = _M_data->_M_time_format; 194s 1515: __time[1] = _M_data->_M_time_era_format; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_date_time_formats(const _CharT** __dt) const 194s 1515: { 194s 1515: 194s 1515: __dt[0] = _M_data->_M_date_time_format; 194s 1515: __dt[1] = _M_data->_M_date_time_era_format; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_am_pm_format(const _CharT*) const 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_am_pm_format(const _CharT** __ampm_format) const 194s 1515: { 194s 1515: __ampm_format[0] = _M_data->_M_am_pm_format; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_am_pm(const _CharT** __ampm) const 194s 1515: { 194s 1515: __ampm[0] = _M_data->_M_am; 194s 1515: __ampm[1] = _M_data->_M_pm; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_days(const _CharT** __days) const 194s 1515: { 194s 1515: __days[0] = _M_data->_M_day1; 194s 1515: __days[1] = _M_data->_M_day2; 194s 1515: __days[2] = _M_data->_M_day3; 194s 1515: __days[3] = _M_data->_M_day4; 194s 1515: __days[4] = _M_data->_M_day5; 194s 1515: __days[5] = _M_data->_M_day6; 194s 1515: __days[6] = _M_data->_M_day7; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_days_abbreviated(const _CharT** __days) const 194s 1515: { 194s 1515: __days[0] = _M_data->_M_aday1; 194s 1515: __days[1] = _M_data->_M_aday2; 194s 1515: __days[2] = _M_data->_M_aday3; 194s 1515: __days[3] = _M_data->_M_aday4; 194s 1515: __days[4] = _M_data->_M_aday5; 194s 1515: __days[5] = _M_data->_M_aday6; 194s 1515: __days[6] = _M_data->_M_aday7; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_months(const _CharT** __months) const 194s 1515: { 194s 1515: __months[0] = _M_data->_M_month01; 194s 1515: __months[1] = _M_data->_M_month02; 194s 1515: __months[2] = _M_data->_M_month03; 194s 1515: __months[3] = _M_data->_M_month04; 194s 1515: __months[4] = _M_data->_M_month05; 194s 1515: __months[5] = _M_data->_M_month06; 194s 1515: __months[6] = _M_data->_M_month07; 194s 1515: __months[7] = _M_data->_M_month08; 194s 1515: __months[8] = _M_data->_M_month09; 194s 1515: __months[9] = _M_data->_M_month10; 194s 1515: __months[10] = _M_data->_M_month11; 194s 1515: __months[11] = _M_data->_M_month12; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_months_abbreviated(const _CharT** __months) const 194s 1515: { 194s 1515: __months[0] = _M_data->_M_amonth01; 194s 1515: __months[1] = _M_data->_M_amonth02; 194s 1515: __months[2] = _M_data->_M_amonth03; 194s 1515: __months[3] = _M_data->_M_amonth04; 194s 1515: __months[4] = _M_data->_M_amonth05; 194s 1515: __months[5] = _M_data->_M_amonth06; 194s 1515: __months[6] = _M_data->_M_amonth07; 194s 1515: __months[7] = _M_data->_M_amonth08; 194s 1515: __months[8] = _M_data->_M_amonth09; 194s 1515: __months[9] = _M_data->_M_amonth10; 194s 1515: __months[10] = _M_data->_M_amonth11; 194s 1515: __months[11] = _M_data->_M_amonth12; 194s 1515: } 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~__timepunct(); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_initialize_timepunct(__c_locale __cloc = 0); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id __timepunct<_CharT>::id; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: __timepunct::_M_initialize_timepunct(__c_locale __cloc); 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: __timepunct::_M_put(char*, size_t, const char*, const tm*) const throw (); 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: __timepunct::_M_initialize_timepunct(__c_locale __cloc); 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: __timepunct::_M_put(wchar_t*, size_t, const wchar_t*, 194s 1515: const tm*) const throw (); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/time_members.h" 1 3 4 194s 1515: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/time_members.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __timepunct<_CharT>::__timepunct(size_t __refs) 194s 1515: : facet(__refs), _M_data(0), _M_c_locale_timepunct(0), 194s 1515: _M_name_timepunct(_S_get_c_name()) 194s 1515: { _M_initialize_timepunct(); } 194s 1515: 194s 1515: template 194s 1515: __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 194s 1515: : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(0), 194s 1515: _M_name_timepunct(_S_get_c_name()) 194s 1515: { _M_initialize_timepunct(); } 194s 1515: 194s 1515: template 194s 1515: __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, 194s 1515: size_t __refs) 194s 1515: : facet(__refs), _M_data(0), _M_c_locale_timepunct(0), 194s 1515: _M_name_timepunct(0) 194s 1515: { 194s 1515: if (__builtin_strcmp(__s, _S_get_c_name()) != 0) 194s 1515: { 194s 1515: const size_t __len = __builtin_strlen(__s) + 1; 194s 1515: char* __tmp = new char[__len]; 194s 1515: __builtin_memcpy(__tmp, __s, __len); 194s 1515: _M_name_timepunct = __tmp; 194s 1515: } 194s 1515: else 194s 1515: _M_name_timepunct = _S_get_c_name(); 194s 1515: 194s 1515: try 194s 1515: { _M_initialize_timepunct(__cloc); } 194s 1515: catch(...) 194s 1515: { 194s 1515: if (_M_name_timepunct != _S_get_c_name()) 194s 1515: delete [] _M_name_timepunct; 194s 1515: throw; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __timepunct<_CharT>::~__timepunct() 194s 1515: { 194s 1515: if (_M_name_timepunct != _S_get_c_name()) 194s 1515: delete [] _M_name_timepunct; 194s 1515: delete _M_data; 194s 1515: _S_destroy_c_locale(_M_c_locale_timepunct); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 355 "/usr/include/c++/15/bits/locale_facets_nonio.h" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: struct __time_get_state 194s 1515: { 194s 1515: 194s 1515: void 194s 1515: _M_finalize_state(tm* __tm); 194s 1515: 194s 1515: unsigned int _M_have_I : 1; 194s 1515: unsigned int _M_have_wday : 1; 194s 1515: unsigned int _M_have_yday : 1; 194s 1515: unsigned int _M_have_mon : 1; 194s 1515: unsigned int _M_have_mday : 1; 194s 1515: unsigned int _M_have_uweek : 1; 194s 1515: unsigned int _M_have_wweek : 1; 194s 1515: unsigned int _M_have_century : 1; 194s 1515: unsigned int _M_is_pm : 1; 194s 1515: unsigned int _M_want_century : 1; 194s 1515: unsigned int _M_want_xday : 1; 194s 1515: unsigned int _M_pad1 : 5; 194s 1515: unsigned int _M_week_no : 6; 194s 1515: unsigned int _M_pad2 : 10; 194s 1515: int _M_century; 194s 1515: int _M_pad3; 194s 1515: }; 194s 1515: 194s 1515: namespace __cxx11 { 194s 1515: # 399 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: template 194s 1515: class time_get : public locale::facet, public time_base 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _InIter iter_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static locale::id id; 194s 1515: # 420 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: explicit 194s 1515: time_get(size_t __refs = 0) 194s 1515: : facet (__refs) { } 194s 1515: # 437 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: dateorder 194s 1515: date_order() const 194s 1515: { return this->do_date_order(); } 194s 1515: # 461 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: get_time(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const 194s 1515: { return this->do_get_time(__beg, __end, __io, __err, __tm); } 194s 1515: # 486 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: get_date(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const 194s 1515: { return this->do_get_date(__beg, __end, __io, __err, __tm); } 194s 1515: # 514 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: get_weekday(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const 194s 1515: { return this->do_get_weekday(__beg, __end, __io, __err, __tm); } 194s 1515: # 543 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: get_monthname(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const 194s 1515: { return this->do_get_monthname(__beg, __end, __io, __err, __tm); } 194s 1515: # 569 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: get_year(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const 194s 1515: { return this->do_get_year(__beg, __end, __io, __err, __tm); } 194s 1515: # 590 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: inline 194s 1515: iter_type get(iter_type __s, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm, char __format, 194s 1515: char __modifier = 0) const 194s 1515: { 194s 1515: return this->do_get(__s, __end, __io, __err, __tm, __format, 194s 1515: __modifier); 194s 1515: } 194s 1515: # 617 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type get(iter_type __s, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm, const char_type* __fmt, 194s 1515: const char_type* __fmtend) const; 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: virtual 194s 1515: ~time_get() { } 194s 1515: # 637 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual dateorder 194s 1515: do_date_order() const; 194s 1515: # 655 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_get_time(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const; 194s 1515: # 674 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_get_date(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const; 194s 1515: # 693 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_get_weekday(iter_type __beg, iter_type __end, ios_base&, 194s 1515: ios_base::iostate& __err, tm* __tm) const; 194s 1515: # 712 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_get_monthname(iter_type __beg, iter_type __end, ios_base&, 194s 1515: ios_base::iostate& __err, tm* __tm) const; 194s 1515: # 731 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_get_year(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const; 194s 1515: # 754 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual 194s 1515: 194s 1515: iter_type 194s 1515: do_get(iter_type __s, iter_type __end, ios_base& __f, 194s 1515: ios_base::iostate& __err, tm* __tm, 194s 1515: char __format, char __modifier) const; 194s 1515: 194s 1515: 194s 1515: 194s 1515: iter_type 194s 1515: _M_extract_num(iter_type __beg, iter_type __end, int& __member, 194s 1515: int __min, int __max, size_t __len, 194s 1515: ios_base& __io, ios_base::iostate& __err) const; 194s 1515: 194s 1515: 194s 1515: iter_type 194s 1515: _M_extract_name(iter_type __beg, iter_type __end, int& __member, 194s 1515: const _CharT** __names, size_t __indexlen, 194s 1515: ios_base& __io, ios_base::iostate& __err) const; 194s 1515: 194s 1515: 194s 1515: iter_type 194s 1515: _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member, 194s 1515: const _CharT** __names, size_t __indexlen, 194s 1515: ios_base& __io, ios_base::iostate& __err) const; 194s 1515: 194s 1515: 194s 1515: iter_type 194s 1515: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm, 194s 1515: const _CharT* __format) const; 194s 1515: 194s 1515: 194s 1515: 194s 1515: iter_type 194s 1515: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm, 194s 1515: const _CharT* __format, 194s 1515: __time_get_state &__state) const; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id time_get<_CharT, _InIter>::id; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class time_get_byname : public time_get<_CharT, _InIter> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _InIter iter_type; 194s 1515: 194s 1515: explicit 194s 1515: time_get_byname(const char*, size_t __refs = 0) 194s 1515: : time_get<_CharT, _InIter>(__refs) { } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: time_get_byname(const string& __s, size_t __refs = 0) 194s 1515: : time_get_byname(__s.c_str(), __refs) { } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~time_get_byname() { } 194s 1515: }; 194s 1515: 194s 1515: } 194s 1515: # 836 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: template 194s 1515: class time_put : public locale::facet 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _OutIter iter_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static locale::id id; 194s 1515: # 857 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: explicit 194s 1515: time_put(size_t __refs = 0) 194s 1515: : facet(__refs) { } 194s 1515: # 876 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, 194s 1515: const _CharT* __beg, const _CharT* __end) const; 194s 1515: # 896 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: const tm* __tm, char __format, char __mod = 0) const 194s 1515: { return this->do_put(__s, __io, __fill, __tm, __format, __mod); } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: virtual 194s 1515: ~time_put() 194s 1515: { } 194s 1515: # 923 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, 194s 1515: char __format, char __mod) const; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id time_put<_CharT, _OutIter>::id; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class time_put_byname : public time_put<_CharT, _OutIter> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _OutIter iter_type; 194s 1515: 194s 1515: explicit 194s 1515: time_put_byname(const char*, size_t __refs = 0) 194s 1515: : time_put<_CharT, _OutIter>(__refs) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: time_put_byname(const string& __s, size_t __refs = 0) 194s 1515: : time_put_byname(__s.c_str(), __refs) { } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~time_put_byname() { } 194s 1515: }; 194s 1515: # 968 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: class money_base 194s 1515: { 194s 1515: public: 194s 1515: enum part { none, space, symbol, sign, value }; 194s 1515: struct pattern { char field[4]; }; 194s 1515: 194s 1515: static const pattern _S_default_pattern; 194s 1515: 194s 1515: enum 194s 1515: { 194s 1515: _S_minus, 194s 1515: _S_zero, 194s 1515: _S_end = 11 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static const char* _S_atoms; 194s 1515: 194s 1515: 194s 1515: 194s 1515: __attribute__ ((__const__)) static pattern 194s 1515: _S_construct_pattern(char __precedes, char __space, char __posn) throw (); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __moneypunct_cache : public locale::facet 194s 1515: { 194s 1515: const char* _M_grouping; 194s 1515: size_t _M_grouping_size; 194s 1515: bool _M_use_grouping; 194s 1515: _CharT _M_decimal_point; 194s 1515: _CharT _M_thousands_sep; 194s 1515: const _CharT* _M_curr_symbol; 194s 1515: size_t _M_curr_symbol_size; 194s 1515: const _CharT* _M_positive_sign; 194s 1515: size_t _M_positive_sign_size; 194s 1515: const _CharT* _M_negative_sign; 194s 1515: size_t _M_negative_sign_size; 194s 1515: int _M_frac_digits; 194s 1515: money_base::pattern _M_pos_format; 194s 1515: money_base::pattern _M_neg_format; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _CharT _M_atoms[money_base::_S_end]; 194s 1515: 194s 1515: bool _M_allocated; 194s 1515: 194s 1515: __moneypunct_cache(size_t __refs = 0) : facet(__refs), 194s 1515: _M_grouping(0), _M_grouping_size(0), _M_use_grouping(false), 194s 1515: _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()), 194s 1515: _M_curr_symbol(0), _M_curr_symbol_size(0), 194s 1515: _M_positive_sign(0), _M_positive_sign_size(0), 194s 1515: _M_negative_sign(0), _M_negative_sign_size(0), 194s 1515: _M_frac_digits(0), 194s 1515: _M_pos_format(money_base::pattern()), 194s 1515: _M_neg_format(money_base::pattern()), _M_allocated(false) 194s 1515: { } 194s 1515: 194s 1515: ~__moneypunct_cache(); 194s 1515: 194s 1515: void 194s 1515: _M_cache(const locale& __loc); 194s 1515: 194s 1515: private: 194s 1515: __moneypunct_cache& 194s 1515: operator=(const __moneypunct_cache&); 194s 1515: 194s 1515: explicit 194s 1515: __moneypunct_cache(const __moneypunct_cache&); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache() 194s 1515: { 194s 1515: if (_M_allocated) 194s 1515: { 194s 1515: delete [] _M_grouping; 194s 1515: delete [] _M_curr_symbol; 194s 1515: delete [] _M_positive_sign; 194s 1515: delete [] _M_negative_sign; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: namespace __cxx11 { 194s 1515: # 1063 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: template 194s 1515: class moneypunct : public locale::facet, public money_base 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef basic_string<_CharT> string_type; 194s 1515: 194s 1515: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; 194s 1515: 194s 1515: private: 194s 1515: __cache_type* _M_data; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: static const bool intl = _Intl; 194s 1515: 194s 1515: static locale::id id; 194s 1515: # 1092 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: explicit 194s 1515: moneypunct(size_t __refs = 0) 194s 1515: : facet(__refs), _M_data(0) 194s 1515: { _M_initialize_moneypunct(); } 194s 1515: # 1105 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: explicit 194s 1515: moneypunct(__cache_type* __cache, size_t __refs = 0) 194s 1515: : facet(__refs), _M_data(__cache) 194s 1515: { _M_initialize_moneypunct(); } 194s 1515: # 1120 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: explicit 194s 1515: moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0) 194s 1515: : facet(__refs), _M_data(0) 194s 1515: { _M_initialize_moneypunct(__cloc, __s); } 194s 1515: # 1134 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: char_type 194s 1515: decimal_point() const 194s 1515: { return this->do_decimal_point(); } 194s 1515: # 1147 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: char_type 194s 1515: thousands_sep() const 194s 1515: { return this->do_thousands_sep(); } 194s 1515: # 1177 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: string 194s 1515: grouping() const 194s 1515: { return this->do_grouping(); } 194s 1515: # 1190 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: string_type 194s 1515: curr_symbol() const 194s 1515: { return this->do_curr_symbol(); } 194s 1515: # 1207 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: string_type 194s 1515: positive_sign() const 194s 1515: { return this->do_positive_sign(); } 194s 1515: # 1224 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: string_type 194s 1515: negative_sign() const 194s 1515: { return this->do_negative_sign(); } 194s 1515: # 1240 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: int 194s 1515: frac_digits() const 194s 1515: { return this->do_frac_digits(); } 194s 1515: # 1276 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: pattern 194s 1515: pos_format() const 194s 1515: { return this->do_pos_format(); } 194s 1515: 194s 1515: pattern 194s 1515: neg_format() const 194s 1515: { return this->do_neg_format(); } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: virtual 194s 1515: ~moneypunct(); 194s 1515: # 1298 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual char_type 194s 1515: do_decimal_point() const 194s 1515: { return _M_data->_M_decimal_point; } 194s 1515: # 1310 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual char_type 194s 1515: do_thousands_sep() const 194s 1515: { return _M_data->_M_thousands_sep; } 194s 1515: # 1323 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual string 194s 1515: do_grouping() const 194s 1515: { return _M_data->_M_grouping; } 194s 1515: # 1336 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual string_type 194s 1515: do_curr_symbol() const 194s 1515: { return _M_data->_M_curr_symbol; } 194s 1515: # 1349 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual string_type 194s 1515: do_positive_sign() const 194s 1515: { return _M_data->_M_positive_sign; } 194s 1515: # 1362 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual string_type 194s 1515: do_negative_sign() const 194s 1515: { return _M_data->_M_negative_sign; } 194s 1515: # 1376 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual int 194s 1515: do_frac_digits() const 194s 1515: { return _M_data->_M_frac_digits; } 194s 1515: # 1390 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual pattern 194s 1515: do_pos_format() const 194s 1515: { return _M_data->_M_pos_format; } 194s 1515: # 1404 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual pattern 194s 1515: do_neg_format() const 194s 1515: { return _M_data->_M_neg_format; } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_initialize_moneypunct(__c_locale __cloc = 0, 194s 1515: const char* __name = 0); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id moneypunct<_CharT, _Intl>::id; 194s 1515: 194s 1515: template 194s 1515: const bool moneypunct<_CharT, _Intl>::intl; 194s 1515: 194s 1515: template<> 194s 1515: moneypunct::~moneypunct(); 194s 1515: 194s 1515: template<> 194s 1515: moneypunct::~moneypunct(); 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: moneypunct::_M_initialize_moneypunct(__c_locale, const char*); 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: moneypunct::_M_initialize_moneypunct(__c_locale, const char*); 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: moneypunct::~moneypunct(); 194s 1515: 194s 1515: template<> 194s 1515: moneypunct::~moneypunct(); 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: moneypunct::_M_initialize_moneypunct(__c_locale, 194s 1515: const char*); 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: moneypunct::_M_initialize_moneypunct(__c_locale, 194s 1515: const char*); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class moneypunct_byname : public moneypunct<_CharT, _Intl> 194s 1515: { 194s 1515: public: 194s 1515: typedef _CharT char_type; 194s 1515: typedef basic_string<_CharT> string_type; 194s 1515: 194s 1515: static const bool intl = _Intl; 194s 1515: 194s 1515: explicit 194s 1515: moneypunct_byname(const char* __s, size_t __refs = 0) 194s 1515: : moneypunct<_CharT, _Intl>(__refs) 194s 1515: { 194s 1515: if (__builtin_strcmp(__s, "C") != 0 194s 1515: && __builtin_strcmp(__s, "POSIX") != 0) 194s 1515: { 194s 1515: __c_locale __tmp; 194s 1515: this->_S_create_c_locale(__tmp, __s); 194s 1515: this->_M_initialize_moneypunct(__tmp); 194s 1515: this->_S_destroy_c_locale(__tmp); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: moneypunct_byname(const string& __s, size_t __refs = 0) 194s 1515: : moneypunct_byname(__s.c_str(), __refs) { } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~moneypunct_byname() { } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: const bool moneypunct_byname<_CharT, _Intl>::intl; 194s 1515: 194s 1515: } 194s 1515: 194s 1515: namespace __cxx11 { 194s 1515: # 1507 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: template 194s 1515: class money_get : public locale::facet 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _InIter iter_type; 194s 1515: typedef basic_string<_CharT> string_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static locale::id id; 194s 1515: # 1529 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: explicit 194s 1515: money_get(size_t __refs = 0) : facet(__refs) { } 194s 1515: # 1559 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 194s 1515: ios_base::iostate& __err, long double& __units) const 194s 1515: { return this->do_get(__s, __end, __intl, __io, __err, __units); } 194s 1515: # 1590 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 194s 1515: ios_base::iostate& __err, string_type& __digits) const 194s 1515: { return this->do_get(__s, __end, __intl, __io, __err, __digits); } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: virtual 194s 1515: ~money_get() { } 194s 1515: # 1614 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 194s 1515: ios_base::iostate& __err, long double& __units) const; 194s 1515: # 1626 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 194s 1515: ios_base::iostate& __err, string_type& __digits) const; 194s 1515: # 1646 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: template 194s 1515: iter_type 194s 1515: _M_extract(iter_type __s, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, string& __digits) const; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id money_get<_CharT, _InIter>::id; 194s 1515: # 1668 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: template 194s 1515: class money_put : public locale::facet 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef _OutIter iter_type; 194s 1515: typedef basic_string<_CharT> string_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: static locale::id id; 194s 1515: # 1689 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: explicit 194s 1515: money_put(size_t __refs = 0) : facet(__refs) { } 194s 1515: # 1709 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: put(iter_type __s, bool __intl, ios_base& __io, 194s 1515: char_type __fill, long double __units) const 194s 1515: { return this->do_put(__s, __intl, __io, __fill, __units); } 194s 1515: # 1732 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: iter_type 194s 1515: put(iter_type __s, bool __intl, ios_base& __io, 194s 1515: char_type __fill, const string_type& __digits) const 194s 1515: { return this->do_put(__s, __intl, __io, __fill, __digits); } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: virtual 194s 1515: ~money_put() { } 194s 1515: # 1767 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 194s 1515: long double __units) const; 194s 1515: # 1791 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual iter_type 194s 1515: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 194s 1515: const string_type& __digits) const; 194s 1515: # 1811 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: template 194s 1515: iter_type 194s 1515: _M_insert(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: const string_type& __digits) const; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id money_put<_CharT, _OutIter>::id; 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct messages_base 194s 1515: { 194s 1515: typedef int catalog; 194s 1515: }; 194s 1515: 194s 1515: namespace __cxx11 { 194s 1515: # 1854 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: template 194s 1515: class messages : public locale::facet, public messages_base 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _CharT char_type; 194s 1515: typedef basic_string<_CharT> string_type; 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: __c_locale _M_c_locale_messages; 194s 1515: const char* _M_name_messages; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: static locale::id id; 194s 1515: # 1882 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: explicit 194s 1515: messages(size_t __refs = 0); 194s 1515: # 1896 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: explicit 194s 1515: messages(__c_locale __cloc, const char* __s, size_t __refs = 0); 194s 1515: # 1909 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: catalog 194s 1515: open(const basic_string& __s, const locale& __loc) const 194s 1515: { return this->do_open(__s, __loc); } 194s 1515: # 1927 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: catalog 194s 1515: open(const basic_string&, const locale&, const char*) const; 194s 1515: # 1945 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: string_type 194s 1515: get(catalog __c, int __set, int __msgid, const string_type& __s) const 194s 1515: { return this->do_get(__c, __set, __msgid, __s); } 194s 1515: # 1956 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: void 194s 1515: close(catalog __c) const 194s 1515: { return this->do_close(__c); } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: virtual 194s 1515: ~messages(); 194s 1515: # 1976 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual catalog 194s 1515: do_open(const basic_string&, const locale&) const; 194s 1515: # 1995 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 194s 1515: virtual string_type 194s 1515: do_get(catalog, int, int, const string_type& __dfault) const; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: virtual void 194s 1515: do_close(catalog) const; 194s 1515: 194s 1515: 194s 1515: char* 194s 1515: _M_convert_to_char(const string_type& __msg) const 194s 1515: { 194s 1515: 194s 1515: return reinterpret_cast(const_cast<_CharT*>(__msg.c_str())); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: string_type 194s 1515: _M_convert_from_char(char*) const 194s 1515: { 194s 1515: 194s 1515: return string_type(); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: locale::id messages<_CharT>::id; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: string 194s 1515: messages::do_get(catalog, int, int, const string&) const; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: wstring 194s 1515: messages::do_get(catalog, int, int, const wstring&) const; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class messages_byname : public messages<_CharT> 194s 1515: { 194s 1515: public: 194s 1515: typedef _CharT char_type; 194s 1515: typedef basic_string<_CharT> string_type; 194s 1515: 194s 1515: explicit 194s 1515: messages_byname(const char* __s, size_t __refs = 0); 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: messages_byname(const string& __s, size_t __refs = 0) 194s 1515: : messages_byname(__s.c_str(), __refs) { } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: virtual 194s 1515: ~messages_byname() 194s 1515: { } 194s 1515: }; 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/messages_members.h" 1 3 4 194s 1515: # 36 "/usr/include/arm-linux-gnueabihf/c++/15/bits/messages_members.h" 3 4 194s 1515: # 1 "/usr/include/libintl.h" 1 3 4 194s 1515: # 34 "/usr/include/libintl.h" 3 4 194s 1515: extern "C" { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern char *gettext (const char *__msgid) 194s 1515: noexcept (true) __attribute__ ((__format_arg__ (1))); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern char *dgettext (const char *__domainname, const char *__msgid) 194s 1515: noexcept (true) __attribute__ ((__format_arg__ (2))); 194s 1515: extern char *__dgettext (const char *__domainname, const char *__msgid) 194s 1515: noexcept (true) __attribute__ ((__format_arg__ (2))); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern char *dcgettext (const char *__domainname, 194s 1515: const char *__msgid, int __category) 194s 1515: noexcept (true) __attribute__ ((__format_arg__ (2))); 194s 1515: extern char *__dcgettext (const char *__domainname, 194s 1515: const char *__msgid, int __category) 194s 1515: noexcept (true) __attribute__ ((__format_arg__ (2))); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern char *ngettext (const char *__msgid1, const char *__msgid2, 194s 1515: unsigned long int __n) 194s 1515: noexcept (true) __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2))); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern char *dngettext (const char *__domainname, const char *__msgid1, 194s 1515: const char *__msgid2, unsigned long int __n) 194s 1515: noexcept (true) __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3))); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern char *dcngettext (const char *__domainname, const char *__msgid1, 194s 1515: const char *__msgid2, unsigned long int __n, 194s 1515: int __category) 194s 1515: noexcept (true) __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3))); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern char *textdomain (const char *__domainname) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern char *bindtextdomain (const char *__domainname, 194s 1515: const char *__dirname) noexcept (true); 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern char *bind_textdomain_codeset (const char *__domainname, 194s 1515: const char *__codeset) noexcept (true); 194s 1515: # 121 "/usr/include/libintl.h" 3 4 194s 1515: } 194s 1515: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/messages_members.h" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: messages<_CharT>::messages(size_t __refs) 194s 1515: : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), 194s 1515: _M_name_messages(_S_get_c_name()) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: messages<_CharT>::messages(__c_locale __cloc, const char* __s, 194s 1515: size_t __refs) 194s 1515: : facet(__refs), _M_c_locale_messages(0), _M_name_messages(0) 194s 1515: { 194s 1515: if (__builtin_strcmp(__s, _S_get_c_name()) != 0) 194s 1515: { 194s 1515: const size_t __len = __builtin_strlen(__s) + 1; 194s 1515: char* __tmp = new char[__len]; 194s 1515: __builtin_memcpy(__tmp, __s, __len); 194s 1515: _M_name_messages = __tmp; 194s 1515: } 194s 1515: else 194s 1515: _M_name_messages = _S_get_c_name(); 194s 1515: 194s 1515: 194s 1515: _M_c_locale_messages = _S_clone_c_locale(__cloc); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename messages<_CharT>::catalog 194s 1515: messages<_CharT>::open(const basic_string& __s, const locale& __loc, 194s 1515: const char* __dir) const 194s 1515: { 194s 1515: bindtextdomain(__s.c_str(), __dir); 194s 1515: return this->do_open(__s, __loc); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: messages<_CharT>::~messages() 194s 1515: { 194s 1515: if (_M_name_messages != _S_get_c_name()) 194s 1515: delete [] _M_name_messages; 194s 1515: _S_destroy_c_locale(_M_c_locale_messages); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename messages<_CharT>::catalog 194s 1515: messages<_CharT>::do_open(const basic_string& __s, 194s 1515: const locale&) const 194s 1515: { 194s 1515: 194s 1515: 194s 1515: textdomain(__s.c_str()); 194s 1515: return 0; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: messages<_CharT>::do_close(catalog) const 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) 194s 1515: : messages<_CharT>(__refs) 194s 1515: { 194s 1515: if (this->_M_name_messages != locale::facet::_S_get_c_name()) 194s 1515: { 194s 1515: delete [] this->_M_name_messages; 194s 1515: if (__builtin_strcmp(__s, locale::facet::_S_get_c_name()) != 0) 194s 1515: { 194s 1515: const size_t __len = __builtin_strlen(__s) + 1; 194s 1515: char* __tmp = new char[__len]; 194s 1515: __builtin_memcpy(__tmp, __s, __len); 194s 1515: this->_M_name_messages = __tmp; 194s 1515: } 194s 1515: else 194s 1515: this->_M_name_messages = locale::facet::_S_get_c_name(); 194s 1515: } 194s 1515: 194s 1515: if (__builtin_strcmp(__s, "C") != 0 194s 1515: && __builtin_strcmp(__s, "POSIX") != 0) 194s 1515: { 194s 1515: this->_S_destroy_c_locale(this->_M_c_locale_messages); 194s 1515: this->_S_create_c_locale(this->_M_c_locale_messages, __s); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: typename messages::catalog 194s 1515: messages::do_open(const basic_string&, 194s 1515: const locale&) const; 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: messages::do_close(catalog) const; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: typename messages::catalog 194s 1515: messages::do_open(const basic_string&, 194s 1515: const locale&) const; 194s 1515: 194s 1515: template<> 194s 1515: void 194s 1515: messages::do_close(catalog) const; 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 2067 "/usr/include/c++/15/bits/locale_facets_nonio.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 1 3 4 194s 1515: # 37 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __use_cache<__moneypunct_cache<_CharT, _Intl> > 194s 1515: { 194s 1515: const __moneypunct_cache<_CharT, _Intl>* 194s 1515: operator() (const locale& __loc) const 194s 1515: { 194s 1515: const size_t __i = moneypunct<_CharT, _Intl>::id._M_id(); 194s 1515: const locale::facet** __caches = __loc._M_impl->_M_caches; 194s 1515: if (!__caches[__i]) 194s 1515: { 194s 1515: __moneypunct_cache<_CharT, _Intl>* __tmp = 0; 194s 1515: try 194s 1515: { 194s 1515: __tmp = new __moneypunct_cache<_CharT, _Intl>; 194s 1515: __tmp->_M_cache(__loc); 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: delete __tmp; 194s 1515: throw; 194s 1515: } 194s 1515: __loc._M_impl->_M_install_cache(__tmp, __i); 194s 1515: } 194s 1515: return static_cast< 194s 1515: const __moneypunct_cache<_CharT, _Intl>*>(__caches[__i]); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc) 194s 1515: { 194s 1515: const moneypunct<_CharT, _Intl>& __mp = 194s 1515: use_facet >(__loc); 194s 1515: 194s 1515: struct _Scoped_str 194s 1515: { 194s 1515: size_t _M_len; 194s 1515: _CharT* _M_str; 194s 1515: 194s 1515: explicit 194s 1515: _Scoped_str(const basic_string<_CharT>& __str) 194s 1515: : _M_len(__str.size()), _M_str(new _CharT[_M_len]) 194s 1515: { __str.copy(_M_str, _M_len); } 194s 1515: 194s 1515: ~_Scoped_str() { delete[] _M_str; } 194s 1515: 194s 1515: void 194s 1515: _M_release(const _CharT*& __p, size_t& __n) 194s 1515: { 194s 1515: __p = _M_str; 194s 1515: __n = _M_len; 194s 1515: _M_str = 0; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: _Scoped_str __curr_symbol(__mp.curr_symbol()); 194s 1515: _Scoped_str __positive_sign(__mp.positive_sign()); 194s 1515: _Scoped_str __negative_sign(__mp.negative_sign()); 194s 1515: 194s 1515: const string& __g = __mp.grouping(); 194s 1515: const size_t __g_size = __g.size(); 194s 1515: char* const __grouping = new char[__g_size]; 194s 1515: __g.copy(__grouping, __g_size); 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_grouping = __grouping; 194s 1515: _M_grouping_size = __g_size; 194s 1515: _M_use_grouping = (__g_size 194s 1515: && static_cast(__grouping[0]) > 0 194s 1515: && (__grouping[0] 194s 1515: != __gnu_cxx::__numeric_traits::__max)); 194s 1515: 194s 1515: _M_decimal_point = __mp.decimal_point(); 194s 1515: _M_thousands_sep = __mp.thousands_sep(); 194s 1515: 194s 1515: __curr_symbol._M_release(_M_curr_symbol, _M_curr_symbol_size); 194s 1515: __positive_sign._M_release(_M_positive_sign, _M_positive_sign_size); 194s 1515: __negative_sign._M_release(_M_negative_sign, _M_negative_sign_size); 194s 1515: 194s 1515: _M_frac_digits = __mp.frac_digits(); 194s 1515: _M_pos_format = __mp.pos_format(); 194s 1515: _M_neg_format = __mp.neg_format(); 194s 1515: 194s 1515: const ctype<_CharT>& __ct = use_facet >(__loc); 194s 1515: __ct.widen(money_base::_S_atoms, 194s 1515: money_base::_S_atoms + money_base::_S_end, _M_atoms); 194s 1515: 194s 1515: _M_allocated = true; 194s 1515: } 194s 1515: 194s 1515: namespace __cxx11 { 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: _InIter 194s 1515: money_get<_CharT, _InIter>:: 194s 1515: _M_extract(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, string& __units) const 194s 1515: { 194s 1515: typedef char_traits<_CharT> __traits_type; 194s 1515: typedef typename string_type::size_type size_type; 194s 1515: typedef money_base::part part; 194s 1515: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; 194s 1515: 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: 194s 1515: __use_cache<__cache_type> __uc; 194s 1515: const __cache_type* __lc = __uc(__loc); 194s 1515: const char_type* __lit = __lc->_M_atoms; 194s 1515: 194s 1515: 194s 1515: bool __negative = false; 194s 1515: 194s 1515: size_type __sign_size = 0; 194s 1515: 194s 1515: const bool __mandatory_sign = (__lc->_M_positive_sign_size 194s 1515: && __lc->_M_negative_sign_size); 194s 1515: 194s 1515: string __grouping_tmp; 194s 1515: if (__lc->_M_use_grouping) 194s 1515: __grouping_tmp.reserve(32); 194s 1515: 194s 1515: int __last_pos = 0; 194s 1515: 194s 1515: int __n = 0; 194s 1515: 194s 1515: bool __testvalid = true; 194s 1515: 194s 1515: bool __testdecfound = false; 194s 1515: 194s 1515: 194s 1515: string __res; 194s 1515: __res.reserve(32); 194s 1515: 194s 1515: const char_type* __lit_zero = __lit + money_base::_S_zero; 194s 1515: const money_base::pattern __p = __lc->_M_neg_format; 194s 1515: for (int __i = 0; __i < 4 && __testvalid; ++__i) 194s 1515: { 194s 1515: const part __which = static_cast(__p.field[__i]); 194s 1515: switch (__which) 194s 1515: { 194s 1515: case money_base::symbol: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__io.flags() & ios_base::showbase || __sign_size > 1 194s 1515: || __i == 0 194s 1515: || (__i == 1 && (__mandatory_sign 194s 1515: || (static_cast(__p.field[0]) 194s 1515: == money_base::sign) 194s 1515: || (static_cast(__p.field[2]) 194s 1515: == money_base::space))) 194s 1515: || (__i == 2 && ((static_cast(__p.field[3]) 194s 1515: == money_base::value) 194s 1515: || (__mandatory_sign 194s 1515: && (static_cast(__p.field[3]) 194s 1515: == money_base::sign))))) 194s 1515: { 194s 1515: const size_type __len = __lc->_M_curr_symbol_size; 194s 1515: size_type __j = 0; 194s 1515: for (; __beg != __end && __j < __len 194s 1515: && *__beg == __lc->_M_curr_symbol[__j]; 194s 1515: ++__beg, (void)++__j); 194s 1515: if (__j != __len 194s 1515: && (__j || __io.flags() & ios_base::showbase)) 194s 1515: __testvalid = false; 194s 1515: } 194s 1515: break; 194s 1515: case money_base::sign: 194s 1515: 194s 1515: if (__lc->_M_positive_sign_size && __beg != __end 194s 1515: && *__beg == __lc->_M_positive_sign[0]) 194s 1515: { 194s 1515: __sign_size = __lc->_M_positive_sign_size; 194s 1515: ++__beg; 194s 1515: } 194s 1515: else if (__lc->_M_negative_sign_size && __beg != __end 194s 1515: && *__beg == __lc->_M_negative_sign[0]) 194s 1515: { 194s 1515: __negative = true; 194s 1515: __sign_size = __lc->_M_negative_sign_size; 194s 1515: ++__beg; 194s 1515: } 194s 1515: else if (__lc->_M_positive_sign_size 194s 1515: && !__lc->_M_negative_sign_size) 194s 1515: 194s 1515: 194s 1515: __negative = true; 194s 1515: else if (__mandatory_sign) 194s 1515: __testvalid = false; 194s 1515: break; 194s 1515: case money_base::value: 194s 1515: 194s 1515: 194s 1515: for (; __beg != __end; ++__beg) 194s 1515: { 194s 1515: const char_type __c = *__beg; 194s 1515: const char_type* __q = __traits_type::find(__lit_zero, 194s 1515: 10, __c); 194s 1515: if (__q != 0) 194s 1515: { 194s 1515: __res += money_base::_S_atoms[__q - __lit]; 194s 1515: ++__n; 194s 1515: } 194s 1515: else if (__c == __lc->_M_decimal_point 194s 1515: && !__testdecfound) 194s 1515: { 194s 1515: if (__lc->_M_frac_digits <= 0) 194s 1515: break; 194s 1515: 194s 1515: __last_pos = __n; 194s 1515: __n = 0; 194s 1515: __testdecfound = true; 194s 1515: } 194s 1515: else if (__lc->_M_use_grouping 194s 1515: && __c == __lc->_M_thousands_sep 194s 1515: && !__testdecfound) 194s 1515: { 194s 1515: if (__n) 194s 1515: { 194s 1515: 194s 1515: __grouping_tmp += static_cast(__n); 194s 1515: __n = 0; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __testvalid = false; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: if (__res.empty()) 194s 1515: __testvalid = false; 194s 1515: break; 194s 1515: case money_base::space: 194s 1515: 194s 1515: if (__beg != __end && __ctype.is(ctype_base::space, *__beg)) 194s 1515: ++__beg; 194s 1515: else 194s 1515: __testvalid = false; 194s 1515: 194s 1515: case money_base::none: 194s 1515: 194s 1515: if (__i != 3) 194s 1515: for (; __beg != __end 194s 1515: && __ctype.is(ctype_base::space, *__beg); ++__beg); 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (__sign_size > 1 && __testvalid) 194s 1515: { 194s 1515: const char_type* __sign = __negative ? __lc->_M_negative_sign 194s 1515: : __lc->_M_positive_sign; 194s 1515: size_type __i = 1; 194s 1515: for (; __beg != __end && __i < __sign_size 194s 1515: && *__beg == __sign[__i]; ++__beg, (void)++__i); 194s 1515: 194s 1515: if (__i != __sign_size) 194s 1515: __testvalid = false; 194s 1515: } 194s 1515: 194s 1515: if (__testvalid) 194s 1515: { 194s 1515: 194s 1515: if (__res.size() > 1) 194s 1515: { 194s 1515: const size_type __first = __res.find_first_not_of('0'); 194s 1515: const bool __only_zeros = __first == string::npos; 194s 1515: if (__first) 194s 1515: __res.erase(0, __only_zeros ? __res.size() - 1 : __first); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (__negative && __res[0] != '0') 194s 1515: __res.insert(__res.begin(), '-'); 194s 1515: 194s 1515: 194s 1515: if (__grouping_tmp.size()) 194s 1515: { 194s 1515: 194s 1515: __grouping_tmp += static_cast(__testdecfound ? __last_pos 194s 1515: : __n); 194s 1515: if (!std::__verify_grouping(__lc->_M_grouping, 194s 1515: __lc->_M_grouping_size, 194s 1515: __grouping_tmp)) 194s 1515: __err |= ios_base::failbit; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (__testdecfound && __n != __lc->_M_frac_digits) 194s 1515: __testvalid = false; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (!__testvalid) 194s 1515: __err |= ios_base::failbit; 194s 1515: else 194s 1515: __units.swap(__res); 194s 1515: 194s 1515: 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: # 370 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 194s 1515: template 194s 1515: _InIter 194s 1515: money_get<_CharT, _InIter>:: 194s 1515: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, 194s 1515: ios_base::iostate& __err, long double& __units) const 194s 1515: { 194s 1515: string __str; 194s 1515: __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) 194s 1515: : _M_extract(__beg, __end, __io, __err, __str); 194s 1515: std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale()); 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: money_get<_CharT, _InIter>:: 194s 1515: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, 194s 1515: ios_base::iostate& __err, string_type& __digits) const 194s 1515: { 194s 1515: typedef typename string::size_type size_type; 194s 1515: 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: 194s 1515: string __str; 194s 1515: __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) 194s 1515: : _M_extract(__beg, __end, __io, __err, __str); 194s 1515: const size_type __len = __str.size(); 194s 1515: if (__len) 194s 1515: { 194s 1515: __digits.resize(__len); 194s 1515: __ctype.widen(__str.data(), __str.data() + __len, &__digits[0]); 194s 1515: } 194s 1515: return __beg; 194s 1515: } 194s 1515: # 422 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 194s 1515: template 194s 1515: template 194s 1515: _OutIter 194s 1515: money_put<_CharT, _OutIter>:: 194s 1515: _M_insert(iter_type __s, ios_base& __io, char_type __fill, 194s 1515: const string_type& __digits) const 194s 1515: { 194s 1515: typedef typename string_type::size_type size_type; 194s 1515: typedef money_base::part part; 194s 1515: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; 194s 1515: 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: 194s 1515: __use_cache<__cache_type> __uc; 194s 1515: const __cache_type* __lc = __uc(__loc); 194s 1515: const char_type* __lit = __lc->_M_atoms; 194s 1515: 194s 1515: 194s 1515: 194s 1515: const char_type* __beg = __digits.data(); 194s 1515: 194s 1515: money_base::pattern __p; 194s 1515: const char_type* __sign; 194s 1515: size_type __sign_size; 194s 1515: if (!(*__beg == __lit[money_base::_S_minus])) 194s 1515: { 194s 1515: __p = __lc->_M_pos_format; 194s 1515: __sign = __lc->_M_positive_sign; 194s 1515: __sign_size = __lc->_M_positive_sign_size; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __p = __lc->_M_neg_format; 194s 1515: __sign = __lc->_M_negative_sign; 194s 1515: __sign_size = __lc->_M_negative_sign_size; 194s 1515: if (__digits.size()) 194s 1515: ++__beg; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: size_type __len = __ctype.scan_not(ctype_base::digit, __beg, 194s 1515: __beg + __digits.size()) - __beg; 194s 1515: if (__len) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: string_type __value; 194s 1515: __value.reserve(2 * __len); 194s 1515: 194s 1515: 194s 1515: 194s 1515: long __paddec = __len - __lc->_M_frac_digits; 194s 1515: if (__paddec > 0) 194s 1515: { 194s 1515: if (__lc->_M_frac_digits < 0) 194s 1515: __paddec = __len; 194s 1515: if (__lc->_M_grouping_size) 194s 1515: { 194s 1515: __value.assign(2 * __paddec, char_type()); 194s 1515: _CharT* __vend = 194s 1515: std::__add_grouping(&__value[0], __lc->_M_thousands_sep, 194s 1515: __lc->_M_grouping, 194s 1515: __lc->_M_grouping_size, 194s 1515: __beg, __beg + __paddec); 194s 1515: __value.erase(__vend - &__value[0]); 194s 1515: } 194s 1515: else 194s 1515: __value.assign(__beg, __paddec); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (__lc->_M_frac_digits > 0) 194s 1515: { 194s 1515: __value += __lc->_M_decimal_point; 194s 1515: if (__paddec >= 0) 194s 1515: __value.append(__beg + __paddec, __lc->_M_frac_digits); 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: __value.append(-__paddec, __lit[money_base::_S_zero]); 194s 1515: __value.append(__beg, __len); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const ios_base::fmtflags __f = __io.flags() 194s 1515: & ios_base::adjustfield; 194s 1515: __len = __value.size() + __sign_size; 194s 1515: __len += ((__io.flags() & ios_base::showbase) 194s 1515: ? __lc->_M_curr_symbol_size : 0); 194s 1515: 194s 1515: string_type __res; 194s 1515: __res.reserve(2 * __len); 194s 1515: 194s 1515: const size_type __width = static_cast(__io.width()); 194s 1515: const bool __testipad = (__f == ios_base::internal 194s 1515: && __len < __width); 194s 1515: 194s 1515: for (int __i = 0; __i < 4; ++__i) 194s 1515: { 194s 1515: const part __which = static_cast(__p.field[__i]); 194s 1515: switch (__which) 194s 1515: { 194s 1515: case money_base::symbol: 194s 1515: if (__io.flags() & ios_base::showbase) 194s 1515: __res.append(__lc->_M_curr_symbol, 194s 1515: __lc->_M_curr_symbol_size); 194s 1515: break; 194s 1515: case money_base::sign: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__sign_size) 194s 1515: __res += __sign[0]; 194s 1515: break; 194s 1515: case money_base::value: 194s 1515: __res += __value; 194s 1515: break; 194s 1515: case money_base::space: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__testipad) 194s 1515: __res.append(__width - __len, __fill); 194s 1515: else 194s 1515: __res += __fill; 194s 1515: break; 194s 1515: case money_base::none: 194s 1515: if (__testipad) 194s 1515: __res.append(__width - __len, __fill); 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (__sign_size > 1) 194s 1515: __res.append(__sign + 1, __sign_size - 1); 194s 1515: 194s 1515: 194s 1515: __len = __res.size(); 194s 1515: if (__width > __len) 194s 1515: { 194s 1515: if (__f == ios_base::left) 194s 1515: 194s 1515: __res.append(__width - __len, __fill); 194s 1515: else 194s 1515: 194s 1515: __res.insert(0, __width - __len, __fill); 194s 1515: __len = __width; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: __s = std::__write(__s, __res.data(), __len); 194s 1515: } 194s 1515: __io.width(0); 194s 1515: return __s; 194s 1515: } 194s 1515: # 592 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 194s 1515: template 194s 1515: _OutIter 194s 1515: money_put<_CharT, _OutIter>:: 194s 1515: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 194s 1515: long double __units) const 194s 1515: { 194s 1515: const locale __loc = __io.getloc(); 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: 194s 1515: 194s 1515: int __cs_size = 64; 194s 1515: char* __cs = static_cast(__builtin_alloca(__cs_size)); 194s 1515: 194s 1515: 194s 1515: int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 194s 1515: "%.*Lf", 0, __units); 194s 1515: 194s 1515: if (__len >= __cs_size) 194s 1515: { 194s 1515: __cs_size = __len + 1; 194s 1515: __cs = static_cast(__builtin_alloca(__cs_size)); 194s 1515: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 194s 1515: "%.*Lf", 0, __units); 194s 1515: } 194s 1515: # 624 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 194s 1515: string_type __digits(__len, char_type()); 194s 1515: __ctype.widen(__cs, __cs + __len, &__digits[0]); 194s 1515: return __intl ? _M_insert(__s, __io, __fill, __digits) 194s 1515: : _M_insert(__s, __io, __fill, __digits); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _OutIter 194s 1515: money_put<_CharT, _OutIter>:: 194s 1515: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 194s 1515: const string_type& __digits) const 194s 1515: { return __intl ? _M_insert(__s, __io, __fill, __digits) 194s 1515: : _M_insert(__s, __io, __fill, __digits); } 194s 1515: # 682 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: time_base::dateorder 194s 1515: time_get<_CharT, _InIter>::do_date_order() const 194s 1515: { return time_base::no_order; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm, 194s 1515: const _CharT* __format, 194s 1515: __time_get_state &__state) const 194s 1515: { 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: const size_t __len = char_traits<_CharT>::length(__format); 194s 1515: 194s 1515: ios_base::iostate __tmperr = ios_base::goodbit; 194s 1515: size_t __i = 0; 194s 1515: for (; __beg != __end && __i < __len && !__tmperr; ++__i) 194s 1515: { 194s 1515: if (__ctype.narrow(__format[__i], 0) == '%') 194s 1515: { 194s 1515: 194s 1515: char __c = __ctype.narrow(__format[++__i], 0); 194s 1515: int __mem = 0; 194s 1515: if (__c == 'E' || __c == 'O') 194s 1515: __c = __ctype.narrow(__format[++__i], 0); 194s 1515: switch (__c) 194s 1515: { 194s 1515: const char* __cs; 194s 1515: _CharT __wcs[10]; 194s 1515: case 'a': 194s 1515: case 'A': 194s 1515: 194s 1515: const char_type* __days[14]; 194s 1515: __tp._M_days(&__days[0]); 194s 1515: __tp._M_days_abbreviated(&__days[7]); 194s 1515: __beg = _M_extract_name(__beg, __end, __mem, __days, 194s 1515: 14, __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __tm->tm_wday = __mem % 7; 194s 1515: __state._M_have_wday = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'h': 194s 1515: case 'b': 194s 1515: case 'B': 194s 1515: 194s 1515: const char_type* __months[24]; 194s 1515: __tp._M_months(&__months[0]); 194s 1515: __tp._M_months_abbreviated(&__months[12]); 194s 1515: __beg = _M_extract_name(__beg, __end, __mem, 194s 1515: __months, 24, __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __tm->tm_mon = __mem % 12; 194s 1515: __state._M_have_mon = 1; 194s 1515: __state._M_want_xday = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'c': 194s 1515: 194s 1515: const char_type* __dt[2]; 194s 1515: __tp._M_date_time_formats(__dt); 194s 1515: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 194s 1515: __tm, __dt[0], __state); 194s 1515: if (!__tmperr) 194s 1515: __state._M_want_xday = 1; 194s 1515: break; 194s 1515: case 'C': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 0, 99, 2, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __state._M_century = __mem; 194s 1515: __state._M_have_century = 1; 194s 1515: __state._M_want_xday = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'd': 194s 1515: case 'e': 194s 1515: 194s 1515: if (__ctype.is(ctype_base::space, *__beg)) 194s 1515: ++__beg; 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 1, 31, 2, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __tm->tm_mday = __mem; 194s 1515: __state._M_have_mday = 1; 194s 1515: __state._M_want_xday = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'D': 194s 1515: 194s 1515: __cs = "%m/%d/%y"; 194s 1515: __ctype.widen(__cs, __cs + 9, __wcs); 194s 1515: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 194s 1515: __tm, __wcs, __state); 194s 1515: if (!__tmperr) 194s 1515: __state._M_want_xday = 1; 194s 1515: break; 194s 1515: case 'H': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 0, 23, 2, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __tm->tm_hour = __mem; 194s 1515: __state._M_have_I = 0; 194s 1515: } 194s 1515: break; 194s 1515: case 'I': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __tm->tm_hour = __mem % 12; 194s 1515: __state._M_have_I = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'j': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 1, 366, 3, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __tm->tm_yday = __mem - 1; 194s 1515: __state._M_have_yday = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'm': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __tm->tm_mon = __mem - 1; 194s 1515: __state._M_have_mon = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'M': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 0, 59, 2, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: __tm->tm_min = __mem; 194s 1515: break; 194s 1515: case 'n': 194s 1515: case 't': 194s 1515: while (__beg != __end 194s 1515: && __ctype.is(ctype_base::space, *__beg)) 194s 1515: ++__beg; 194s 1515: break; 194s 1515: case 'p': 194s 1515: 194s 1515: const char_type* __ampm[2]; 194s 1515: __tp._M_am_pm(&__ampm[0]); 194s 1515: if (!__ampm[0][0] || !__ampm[1][0]) 194s 1515: break; 194s 1515: __beg = _M_extract_name(__beg, __end, __mem, __ampm, 194s 1515: 2, __io, __tmperr); 194s 1515: if (!__tmperr && __mem) 194s 1515: __state._M_is_pm = 1; 194s 1515: break; 194s 1515: case 'r': 194s 1515: 194s 1515: const char_type* __ampm_format; 194s 1515: __tp._M_am_pm_format(&__ampm_format); 194s 1515: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 194s 1515: __tm, __ampm_format, __state); 194s 1515: break; 194s 1515: case 'R': 194s 1515: 194s 1515: __cs = "%H:%M"; 194s 1515: __ctype.widen(__cs, __cs + 6, __wcs); 194s 1515: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 194s 1515: __tm, __wcs, __state); 194s 1515: break; 194s 1515: case 'S': 194s 1515: 194s 1515: 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 0, 60, 2, 194s 1515: 194s 1515: 194s 1515: 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: __tm->tm_sec = __mem; 194s 1515: break; 194s 1515: case 'T': 194s 1515: 194s 1515: __cs = "%H:%M:%S"; 194s 1515: __ctype.widen(__cs, __cs + 9, __wcs); 194s 1515: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 194s 1515: __tm, __wcs, __state); 194s 1515: break; 194s 1515: case 'U': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 0, 53, 2, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __state._M_week_no = __mem; 194s 1515: __state._M_have_uweek = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'w': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 0, 6, 1, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __tm->tm_wday = __mem; 194s 1515: __state._M_have_wday = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'W': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 0, 53, 2, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __state._M_week_no = __mem; 194s 1515: __state._M_have_wweek = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'x': 194s 1515: 194s 1515: const char_type* __dates[2]; 194s 1515: __tp._M_date_formats(__dates); 194s 1515: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 194s 1515: __tm, __dates[0], __state); 194s 1515: break; 194s 1515: case 'X': 194s 1515: 194s 1515: const char_type* __times[2]; 194s 1515: __tp._M_time_formats(__times); 194s 1515: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 194s 1515: __tm, __times[0], __state); 194s 1515: break; 194s 1515: case 'y': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 0, 99, 2, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __state._M_want_century = 1; 194s 1515: __state._M_want_xday = 1; 194s 1515: 194s 1515: 194s 1515: __c = 0; 194s 1515: if (__beg != __end) 194s 1515: __c = __ctype.narrow(*__beg, '*'); 194s 1515: if (__c >= '0' && __c <= '9') 194s 1515: { 194s 1515: ++__beg; 194s 1515: __mem = __mem * 10 + (__c - '0'); 194s 1515: if (__beg != __end) 194s 1515: { 194s 1515: __c = __ctype.narrow(*__beg, '*'); 194s 1515: if (__c >= '0' && __c <= '9') 194s 1515: { 194s 1515: ++__beg; 194s 1515: __mem = __mem * 10 + (__c - '0'); 194s 1515: } 194s 1515: } 194s 1515: __mem -= 1900; 194s 1515: __state._M_want_century = 0; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: else if (__mem < 69) 194s 1515: __mem += 100; 194s 1515: __tm->tm_year = __mem; 194s 1515: } 194s 1515: break; 194s 1515: case 'Y': 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: __tm->tm_year = __mem - 1900; 194s 1515: __state._M_want_century = 0; 194s 1515: __state._M_want_xday = 1; 194s 1515: } 194s 1515: break; 194s 1515: case 'Z': 194s 1515: 194s 1515: if (__ctype.is(ctype_base::upper, *__beg)) 194s 1515: { 194s 1515: int __tmp; 194s 1515: __beg = _M_extract_name(__beg, __end, __tmp, 194s 1515: __timepunct_cache<_CharT>::_S_timezones, 194s 1515: 14, __io, __tmperr); 194s 1515: 194s 1515: 194s 1515: if (__beg != __end && !__tmperr && __tmp == 0 194s 1515: && (*__beg == __ctype.widen('-') 194s 1515: || *__beg == __ctype.widen('+'))) 194s 1515: { 194s 1515: __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2, 194s 1515: __io, __tmperr); 194s 1515: __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2, 194s 1515: __io, __tmperr); 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: __tmperr |= ios_base::failbit; 194s 1515: break; 194s 1515: case '%': 194s 1515: if (*__beg == __ctype.widen('%')) 194s 1515: ++__beg; 194s 1515: else 194s 1515: __tmperr |= ios_base::failbit; 194s 1515: break; 194s 1515: default: 194s 1515: 194s 1515: __tmperr |= ios_base::failbit; 194s 1515: } 194s 1515: } 194s 1515: else if (__ctype.is(ctype_base::space, __format[__i])) 194s 1515: { 194s 1515: 194s 1515: while (__beg != __end 194s 1515: && __ctype.is(ctype_base::space, *__beg)) 194s 1515: ++__beg; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (__ctype.tolower(__format[__i]) == __ctype.tolower(*__beg) 194s 1515: || __ctype.toupper(__format[__i]) == __ctype.toupper(*__beg)) 194s 1515: ++__beg; 194s 1515: else 194s 1515: __tmperr |= ios_base::failbit; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: if (__tmperr || __i != __len) 194s 1515: __err |= ios_base::failbit; 194s 1515: 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm, 194s 1515: const _CharT* __format) const 194s 1515: { 194s 1515: __time_get_state __state = __time_get_state(); 194s 1515: return _M_extract_via_format(__beg, __end, __io, __err, __tm, 194s 1515: __format, __state); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: _M_extract_num(iter_type __beg, iter_type __end, int& __member, 194s 1515: int __min, int __max, size_t __len, 194s 1515: ios_base& __io, ios_base::iostate& __err) const 194s 1515: { 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: 194s 1515: size_t __i = 0; 194s 1515: int __value = 0; 194s 1515: for (; __beg != __end && __i < __len; ++__beg, (void)++__i) 194s 1515: { 194s 1515: const char __c = __ctype.narrow(*__beg, '*'); 194s 1515: if (__c >= '0' && __c <= '9') 194s 1515: { 194s 1515: __value = __value * 10 + (__c - '0'); 194s 1515: if (__value > __max) 194s 1515: break; 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: if (__i && __value >= __min && __value <= __max) 194s 1515: __member = __value; 194s 1515: else 194s 1515: __err |= ios_base::failbit; 194s 1515: 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: _M_extract_name(iter_type __beg, iter_type __end, int& __member, 194s 1515: const _CharT** __names, size_t __indexlen, 194s 1515: ios_base& __io, ios_base::iostate& __err) const 194s 1515: { 194s 1515: typedef char_traits<_CharT> __traits_type; 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: 194s 1515: size_t* __matches 194s 1515: = static_cast(__builtin_alloca(2 * sizeof(size_t) 194s 1515: * __indexlen)); 194s 1515: size_t* __lengths = __matches + __indexlen; 194s 1515: size_t __nmatches = 0; 194s 1515: size_t __pos = 0; 194s 1515: bool __testvalid = true; 194s 1515: const char_type* __name; 194s 1515: bool __begupdated = false; 194s 1515: 194s 1515: 194s 1515: if (__beg != __end) 194s 1515: { 194s 1515: const char_type __c = *__beg; 194s 1515: 194s 1515: const char_type __cl = __ctype.tolower(__c); 194s 1515: const char_type __cu = __ctype.toupper(__c); 194s 1515: for (size_t __i1 = 0; __i1 < __indexlen; ++__i1) 194s 1515: if (__cl == __ctype.tolower(__names[__i1][0]) 194s 1515: || __cu == __ctype.toupper(__names[__i1][0])) 194s 1515: { 194s 1515: __lengths[__nmatches] 194s 1515: = __traits_type::length(__names[__i1]); 194s 1515: __matches[__nmatches++] = __i1; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: while (__nmatches > 1) 194s 1515: { 194s 1515: 194s 1515: size_t __minlen = __lengths[0]; 194s 1515: for (size_t __i2 = 1; __i2 < __nmatches; ++__i2) 194s 1515: __minlen = std::min(__minlen, __lengths[__i2]); 194s 1515: ++__pos; 194s 1515: ++__beg; 194s 1515: if (__pos == __minlen) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: bool __match_longer = false; 194s 1515: 194s 1515: if (__beg != __end) 194s 1515: { 194s 1515: 194s 1515: const char_type __cl = __ctype.tolower(*__beg); 194s 1515: const char_type __cu = __ctype.toupper(*__beg); 194s 1515: for (size_t __i3 = 0; __i3 < __nmatches; ++__i3) 194s 1515: { 194s 1515: __name = __names[__matches[__i3]]; 194s 1515: if (__lengths[__i3] > __pos 194s 1515: && (__ctype.tolower(__name[__pos]) == __cl 194s 1515: || __ctype.toupper(__name[__pos]) == __cu)) 194s 1515: { 194s 1515: __match_longer = true; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: for (size_t __i4 = 0; __i4 < __nmatches;) 194s 1515: if (__match_longer == (__lengths[__i4] == __pos)) 194s 1515: { 194s 1515: __matches[__i4] = __matches[--__nmatches]; 194s 1515: __lengths[__i4] = __lengths[__nmatches]; 194s 1515: } 194s 1515: else 194s 1515: ++__i4; 194s 1515: if (__match_longer) 194s 1515: { 194s 1515: __minlen = __lengths[0]; 194s 1515: for (size_t __i5 = 1; __i5 < __nmatches; ++__i5) 194s 1515: __minlen = std::min(__minlen, __lengths[__i5]); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (__nmatches == 2 && (__indexlen & 1) == 0) 194s 1515: { 194s 1515: if (__matches[0] < __indexlen / 2) 194s 1515: { 194s 1515: if (__matches[1] == __matches[0] + __indexlen / 2) 194s 1515: __nmatches = 1; 194s 1515: } 194s 1515: else if (__matches[1] == __matches[0] - __indexlen / 2) 194s 1515: { 194s 1515: __matches[0] = __matches[1]; 194s 1515: __lengths[0] = __lengths[1]; 194s 1515: __nmatches = 1; 194s 1515: } 194s 1515: } 194s 1515: __begupdated = true; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: if (__pos < __minlen && __beg != __end) 194s 1515: { 194s 1515: 194s 1515: const char_type __cl = __ctype.tolower(*__beg); 194s 1515: const char_type __cu = __ctype.toupper(*__beg); 194s 1515: for (size_t __i6 = 0; __i6 < __nmatches;) 194s 1515: { 194s 1515: __name = __names[__matches[__i6]]; 194s 1515: if (__ctype.tolower(__name[__pos]) != __cl 194s 1515: && __ctype.toupper(__name[__pos]) != __cu) 194s 1515: { 194s 1515: __matches[__i6] = __matches[--__nmatches]; 194s 1515: __lengths[__i6] = __lengths[__nmatches]; 194s 1515: } 194s 1515: else 194s 1515: ++__i6; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: if (__nmatches == 1) 194s 1515: { 194s 1515: 194s 1515: if (!__begupdated) 194s 1515: { 194s 1515: ++__beg; 194s 1515: ++__pos; 194s 1515: } 194s 1515: __name = __names[__matches[0]]; 194s 1515: const size_t __len = __lengths[0]; 194s 1515: while (__pos < __len 194s 1515: && __beg != __end 194s 1515: 194s 1515: && (__ctype.tolower(__name[__pos]) == __ctype.tolower(*__beg) 194s 1515: || (__ctype.toupper(__name[__pos]) 194s 1515: == __ctype.toupper(*__beg)))) 194s 1515: ++__beg, (void)++__pos; 194s 1515: 194s 1515: if (__len == __pos) 194s 1515: __member = __matches[0]; 194s 1515: else 194s 1515: __testvalid = false; 194s 1515: } 194s 1515: else 194s 1515: __testvalid = false; 194s 1515: if (!__testvalid) 194s 1515: __err |= ios_base::failbit; 194s 1515: 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member, 194s 1515: const _CharT** __names, size_t __indexlen, 194s 1515: ios_base& __io, ios_base::iostate& __err) const 194s 1515: { 194s 1515: typedef char_traits<_CharT> __traits_type; 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: 194s 1515: int* __matches = static_cast(__builtin_alloca(2 * sizeof(int) 194s 1515: * __indexlen)); 194s 1515: size_t __nmatches = 0; 194s 1515: size_t* __matches_lengths = 0; 194s 1515: size_t __pos = 0; 194s 1515: 194s 1515: if (__beg != __end) 194s 1515: { 194s 1515: const char_type __c = *__beg; 194s 1515: for (size_t __i = 0; __i < 2 * __indexlen; ++__i) 194s 1515: if (__c == __names[__i][0] 194s 1515: || __c == __ctype.toupper(__names[__i][0])) 194s 1515: __matches[__nmatches++] = __i; 194s 1515: } 194s 1515: 194s 1515: if (__nmatches) 194s 1515: { 194s 1515: ++__beg; 194s 1515: ++__pos; 194s 1515: 194s 1515: __matches_lengths 194s 1515: = static_cast(__builtin_alloca(sizeof(size_t) 194s 1515: * __nmatches)); 194s 1515: for (size_t __i = 0; __i < __nmatches; ++__i) 194s 1515: __matches_lengths[__i] 194s 1515: = __traits_type::length(__names[__matches[__i]]); 194s 1515: } 194s 1515: 194s 1515: for (; __beg != __end; ++__beg, (void)++__pos) 194s 1515: { 194s 1515: size_t __nskipped = 0; 194s 1515: const char_type __c = *__beg; 194s 1515: for (size_t __i = 0; __i < __nmatches;) 194s 1515: { 194s 1515: const char_type* __name = __names[__matches[__i]]; 194s 1515: if (__pos >= __matches_lengths[__i]) 194s 1515: ++__nskipped, ++__i; 194s 1515: else if (!(__name[__pos] == __c)) 194s 1515: { 194s 1515: --__nmatches; 194s 1515: __matches[__i] = __matches[__nmatches]; 194s 1515: __matches_lengths[__i] = __matches_lengths[__nmatches]; 194s 1515: } 194s 1515: else 194s 1515: ++__i; 194s 1515: } 194s 1515: if (__nskipped == __nmatches) 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: if ((__nmatches == 1 && __matches_lengths[0] == __pos) 194s 1515: || (__nmatches == 2 && (__matches_lengths[0] == __pos 194s 1515: || __matches_lengths[1] == __pos))) 194s 1515: __member = (__matches[0] >= (int)__indexlen 194s 1515: ? __matches[0] - (int)__indexlen : __matches[0]); 194s 1515: else 194s 1515: __err |= ios_base::failbit; 194s 1515: 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: do_get_time(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const 194s 1515: { 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 194s 1515: const char_type* __times[2]; 194s 1515: __tp._M_time_formats(__times); 194s 1515: __time_get_state __state = __time_get_state(); 194s 1515: __beg = _M_extract_via_format(__beg, __end, __io, __err, 194s 1515: __tm, __times[0], __state); 194s 1515: __state._M_finalize_state(__tm); 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: do_get_date(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const 194s 1515: { 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 194s 1515: const char_type* __dates[2]; 194s 1515: __tp._M_date_formats(__dates); 194s 1515: __time_get_state __state = __time_get_state(); 194s 1515: __beg = _M_extract_via_format(__beg, __end, __io, __err, 194s 1515: __tm, __dates[0], __state); 194s 1515: __state._M_finalize_state(__tm); 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const 194s 1515: { 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 194s 1515: const char_type* __days[14]; 194s 1515: __tp._M_days_abbreviated(__days); 194s 1515: __tp._M_days(__days + 7); 194s 1515: int __tmpwday; 194s 1515: ios_base::iostate __tmperr = ios_base::goodbit; 194s 1515: 194s 1515: __beg = _M_extract_wday_or_month(__beg, __end, __tmpwday, __days, 7, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: __tm->tm_wday = __tmpwday; 194s 1515: else 194s 1515: __err |= ios_base::failbit; 194s 1515: 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: do_get_monthname(iter_type __beg, iter_type __end, 194s 1515: ios_base& __io, ios_base::iostate& __err, tm* __tm) const 194s 1515: { 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 194s 1515: const char_type* __months[24]; 194s 1515: __tp._M_months_abbreviated(__months); 194s 1515: __tp._M_months(__months + 12); 194s 1515: int __tmpmon; 194s 1515: ios_base::iostate __tmperr = ios_base::goodbit; 194s 1515: 194s 1515: __beg = _M_extract_wday_or_month(__beg, __end, __tmpmon, __months, 12, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: __tm->tm_mon = __tmpmon; 194s 1515: else 194s 1515: __err |= ios_base::failbit; 194s 1515: 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: do_get_year(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm) const 194s 1515: { 194s 1515: int __tmpyear; 194s 1515: ios_base::iostate __tmperr = ios_base::goodbit; 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: const ctype<_CharT>& __ctype = use_facet >(__loc); 194s 1515: 194s 1515: __beg = _M_extract_num(__beg, __end, __tmpyear, 0, 99, 2, 194s 1515: __io, __tmperr); 194s 1515: if (!__tmperr) 194s 1515: { 194s 1515: char __c = 0; 194s 1515: if (__beg != __end) 194s 1515: __c = __ctype.narrow(*__beg, '*'); 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__c >= '0' && __c <= '9') 194s 1515: { 194s 1515: ++__beg; 194s 1515: __tmpyear = __tmpyear * 10 + (__c - '0'); 194s 1515: if (__beg != __end) 194s 1515: { 194s 1515: __c = __ctype.narrow(*__beg, '*'); 194s 1515: if (__c >= '0' && __c <= '9') 194s 1515: { 194s 1515: ++__beg; 194s 1515: __tmpyear = __tmpyear * 10 + (__c - '0'); 194s 1515: } 194s 1515: } 194s 1515: __tmpyear -= 1900; 194s 1515: } 194s 1515: else if (__tmpyear < 69) 194s 1515: __tmpyear += 100; 194s 1515: __tm->tm_year = __tmpyear; 194s 1515: } 194s 1515: else 194s 1515: __err |= ios_base::failbit; 194s 1515: 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: get(iter_type __s, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm, const char_type* __fmt, 194s 1515: const char_type* __fmtend) const 194s 1515: { 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: ctype<_CharT> const& __ctype = use_facet >(__loc); 194s 1515: __err = ios_base::goodbit; 194s 1515: bool __use_state = false; 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wpmf-conversions" 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if ((void*)(this->*(&time_get::do_get)) == (void*)(&time_get::do_get)) 194s 1515: __use_state = true; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: __time_get_state __state = __time_get_state(); 194s 1515: while (__fmt != __fmtend && 194s 1515: __err == ios_base::goodbit) 194s 1515: { 194s 1515: if (__s == __end) 194s 1515: { 194s 1515: __err = ios_base::eofbit | ios_base::failbit; 194s 1515: break; 194s 1515: } 194s 1515: else if (__ctype.narrow(*__fmt, 0) == '%') 194s 1515: { 194s 1515: const char_type* __fmt_start = __fmt; 194s 1515: char __format; 194s 1515: char __mod = 0; 194s 1515: if (++__fmt == __fmtend) 194s 1515: { 194s 1515: __err = ios_base::failbit; 194s 1515: break; 194s 1515: } 194s 1515: const char __c = __ctype.narrow(*__fmt, 0); 194s 1515: if (__c != 'E' && __c != 'O') 194s 1515: __format = __c; 194s 1515: else if (++__fmt != __fmtend) 194s 1515: { 194s 1515: __mod = __c; 194s 1515: __format = __ctype.narrow(*__fmt, 0); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __err = ios_base::failbit; 194s 1515: break; 194s 1515: } 194s 1515: if (__use_state) 194s 1515: { 194s 1515: char_type __new_fmt[4]; 194s 1515: __new_fmt[0] = __fmt_start[0]; 194s 1515: __new_fmt[1] = __fmt_start[1]; 194s 1515: if (__mod) 194s 1515: { 194s 1515: __new_fmt[2] = __fmt_start[2]; 194s 1515: __new_fmt[3] = char_type(); 194s 1515: } 194s 1515: else 194s 1515: __new_fmt[2] = char_type(); 194s 1515: __s = _M_extract_via_format(__s, __end, __io, __err, __tm, 194s 1515: __new_fmt, __state); 194s 1515: if (__s == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: } 194s 1515: else 194s 1515: __s = this->do_get(__s, __end, __io, __err, __tm, __format, 194s 1515: __mod); 194s 1515: ++__fmt; 194s 1515: } 194s 1515: else if (__ctype.is(ctype_base::space, *__fmt)) 194s 1515: { 194s 1515: ++__fmt; 194s 1515: while (__fmt != __fmtend && 194s 1515: __ctype.is(ctype_base::space, *__fmt)) 194s 1515: ++__fmt; 194s 1515: 194s 1515: while (__s != __end && 194s 1515: __ctype.is(ctype_base::space, *__s)) 194s 1515: ++__s; 194s 1515: } 194s 1515: 194s 1515: else if (__ctype.tolower(*__s) == __ctype.tolower(*__fmt) || 194s 1515: __ctype.toupper(*__s) == __ctype.toupper(*__fmt)) 194s 1515: { 194s 1515: ++__s; 194s 1515: ++__fmt; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __err = ios_base::failbit; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: if (__use_state) 194s 1515: __state._M_finalize_state(__tm); 194s 1515: return __s; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline 194s 1515: _InIter 194s 1515: time_get<_CharT, _InIter>:: 194s 1515: do_get(iter_type __beg, iter_type __end, ios_base& __io, 194s 1515: ios_base::iostate& __err, tm* __tm, 194s 1515: char __format, char __mod) const 194s 1515: { 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: ctype<_CharT> const& __ctype = use_facet >(__loc); 194s 1515: __err = ios_base::goodbit; 194s 1515: 194s 1515: char_type __fmt[4]; 194s 1515: __fmt[0] = __ctype.widen('%'); 194s 1515: if (!__mod) 194s 1515: { 194s 1515: __fmt[1] = __format; 194s 1515: __fmt[2] = char_type(); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __fmt[1] = __mod; 194s 1515: __fmt[2] = __format; 194s 1515: __fmt[3] = char_type(); 194s 1515: } 194s 1515: 194s 1515: __time_get_state __state = __time_get_state(); 194s 1515: __beg = _M_extract_via_format(__beg, __end, __io, __err, __tm, __fmt, 194s 1515: __state); 194s 1515: __state._M_finalize_state(__tm); 194s 1515: if (__beg == __end) 194s 1515: __err |= ios_base::eofbit; 194s 1515: return __beg; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _OutIter 194s 1515: time_put<_CharT, _OutIter>:: 194s 1515: put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, 194s 1515: const _CharT* __beg, const _CharT* __end) const 194s 1515: { 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: ctype<_CharT> const& __ctype = use_facet >(__loc); 194s 1515: for (; __beg != __end; ++__beg) 194s 1515: if (__ctype.narrow(*__beg, 0) != '%') 194s 1515: { 194s 1515: *__s = *__beg; 194s 1515: ++__s; 194s 1515: } 194s 1515: else if (++__beg != __end) 194s 1515: { 194s 1515: char __format; 194s 1515: char __mod = 0; 194s 1515: const char __c = __ctype.narrow(*__beg, 0); 194s 1515: if (__c != 'E' && __c != 'O') 194s 1515: __format = __c; 194s 1515: else if (++__beg != __end) 194s 1515: { 194s 1515: __mod = __c; 194s 1515: __format = __ctype.narrow(*__beg, 0); 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: __s = this->do_put(__s, __io, __fill, __tm, __format, __mod); 194s 1515: } 194s 1515: else 194s 1515: break; 194s 1515: return __s; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _OutIter 194s 1515: time_put<_CharT, _OutIter>:: 194s 1515: do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm, 194s 1515: char __format, char __mod) const 194s 1515: { 194s 1515: const locale& __loc = __io._M_getloc(); 194s 1515: ctype<_CharT> const& __ctype = use_facet >(__loc); 194s 1515: __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc); 194s 1515: 194s 1515: 194s 1515: 194s 1515: const size_t __maxlen = 128; 194s 1515: char_type __res[__maxlen]; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: char_type __fmt[4]; 194s 1515: __fmt[0] = __ctype.widen('%'); 194s 1515: if (!__mod) 194s 1515: { 194s 1515: __fmt[1] = __format; 194s 1515: __fmt[2] = char_type(); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __fmt[1] = __mod; 194s 1515: __fmt[2] = __format; 194s 1515: __fmt[3] = char_type(); 194s 1515: } 194s 1515: 194s 1515: __tp._M_put(__res, __maxlen, __fmt, __tm); 194s 1515: 194s 1515: 194s 1515: return std::__write(__s, __res, char_traits::length(__res)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: #pragma GCC diagnostic ignored "-Wlong-long" 194s 1515: extern template class moneypunct; 194s 1515: extern template class moneypunct; 194s 1515: extern template class moneypunct_byname; 194s 1515: extern template class moneypunct_byname; 194s 1515: extern template class __cxx11:: money_get; 194s 1515: extern template class __cxx11:: money_put; 194s 1515: extern template class __timepunct; 194s 1515: extern template class time_put; 194s 1515: extern template class time_put_byname; 194s 1515: extern template class time_get; 194s 1515: extern template class time_get_byname; 194s 1515: extern template class messages; 194s 1515: extern template class messages_byname; 194s 1515: 194s 1515: extern template 194s 1515: const moneypunct* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const moneypunct* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const money_put* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const money_get* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const __timepunct* 194s 1515: __try_use_facet<__timepunct >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const time_put* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const time_get* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const messages* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const moneypunct& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const moneypunct& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const money_put& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const money_get& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const __timepunct& 194s 1515: use_facet<__timepunct >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const time_put& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const time_get& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const messages& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet<__timepunct >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: 194s 1515: extern template class moneypunct; 194s 1515: extern template class moneypunct; 194s 1515: extern template class moneypunct_byname; 194s 1515: extern template class moneypunct_byname; 194s 1515: extern template class __cxx11:: money_get; 194s 1515: extern template class __cxx11:: money_put; 194s 1515: extern template class __timepunct; 194s 1515: extern template class time_put; 194s 1515: extern template class time_put_byname; 194s 1515: extern template class time_get; 194s 1515: extern template class time_get_byname; 194s 1515: extern template class messages; 194s 1515: extern template class messages_byname; 194s 1515: 194s 1515: extern template 194s 1515: const moneypunct* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const moneypunct* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const money_put* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const money_get* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const __timepunct* 194s 1515: __try_use_facet<__timepunct >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const time_put* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const time_get* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const messages* 194s 1515: __try_use_facet >(const locale&) noexcept; 194s 1515: 194s 1515: extern template 194s 1515: const moneypunct& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const moneypunct& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const money_put& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const money_get& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const __timepunct& 194s 1515: use_facet<__timepunct >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const time_put& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const time_get& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: const messages& 194s 1515: use_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet<__timepunct >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: extern template 194s 1515: bool 194s 1515: has_facet >(const locale&); 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 2072 "/usr/include/c++/15/bits/locale_facets_nonio.h" 2 3 4 194s 1515: # 46 "/usr/include/c++/15/locale" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/locale_conv.h" 1 3 4 194s 1515: # 42 "/usr/include/c++/15/bits/locale_conv.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: __do_str_codecvt(const _InChar* __first, const _InChar* __last, 194s 1515: _OutStr& __outstr, const _Codecvt& __cvt, _State& __state, 194s 1515: size_t& __count, _Fn __fn) 194s 1515: { 194s 1515: if (__first == __last) 194s 1515: { 194s 1515: __outstr.clear(); 194s 1515: __count = 0; 194s 1515: return true; 194s 1515: } 194s 1515: 194s 1515: size_t __outchars = 0; 194s 1515: auto __next = __first; 194s 1515: const auto __maxlen = __cvt.max_length() + 1; 194s 1515: 194s 1515: codecvt_base::result __result; 194s 1515: do 194s 1515: { 194s 1515: __outstr.resize(__outstr.size() + (__last - __next) * __maxlen); 194s 1515: auto __outnext = &__outstr.front() + __outchars; 194s 1515: auto const __outlast = &__outstr.back() + 1; 194s 1515: __result = (__cvt.*__fn)(__state, __next, __last, __next, 194s 1515: __outnext, __outlast, __outnext); 194s 1515: __outchars = __outnext - &__outstr.front(); 194s 1515: } 194s 1515: while (__result == codecvt_base::partial && __next != __last 194s 1515: && ptrdiff_t(__outstr.size() - __outchars) < __maxlen); 194s 1515: 194s 1515: if (__result == codecvt_base::error) 194s 1515: { 194s 1515: __count = __next - __first; 194s 1515: return false; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (is_same()) 194s 1515: if (__result == codecvt_base::noconv) 194s 1515: { 194s 1515: __outstr.assign(__first, __last); 194s 1515: __count = __last - __first; 194s 1515: return true; 194s 1515: } 194s 1515: 194s 1515: __outstr.resize(__outchars); 194s 1515: __count = __next - __first; 194s 1515: return true; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: __str_codecvt_in(const char* __first, const char* __last, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __outstr, 194s 1515: const codecvt<_CharT, char, _State>& __cvt, 194s 1515: _State& __state, size_t& __count) 194s 1515: { 194s 1515: using _Codecvt = codecvt<_CharT, char, _State>; 194s 1515: using _ConvFn 194s 1515: = codecvt_base::result 194s 1515: (_Codecvt::*)(_State&, const char*, const char*, const char*&, 194s 1515: _CharT*, _CharT*, _CharT*&) const; 194s 1515: _ConvFn __fn = &codecvt<_CharT, char, _State>::in; 194s 1515: return __do_str_codecvt(__first, __last, __outstr, __cvt, __state, 194s 1515: __count, __fn); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: __str_codecvt_in(const char* __first, const char* __last, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __outstr, 194s 1515: const codecvt<_CharT, char, _State>& __cvt) 194s 1515: { 194s 1515: _State __state = {}; 194s 1515: size_t __n; 194s 1515: return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: __str_codecvt_in_all(const char* __first, const char* __last, 194s 1515: basic_string<_CharT, _Traits, _Alloc>& __outstr, 194s 1515: const codecvt<_CharT, char, _State>& __cvt) 194s 1515: { 194s 1515: _State __state = {}; 194s 1515: size_t __n; 194s 1515: return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n) 194s 1515: && (__n == size_t(__last - __first)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: __str_codecvt_out(const _CharT* __first, const _CharT* __last, 194s 1515: basic_string& __outstr, 194s 1515: const codecvt<_CharT, char, _State>& __cvt, 194s 1515: _State& __state, size_t& __count) 194s 1515: { 194s 1515: using _Codecvt = codecvt<_CharT, char, _State>; 194s 1515: using _ConvFn 194s 1515: = codecvt_base::result 194s 1515: (_Codecvt::*)(_State&, const _CharT*, const _CharT*, const _CharT*&, 194s 1515: char*, char*, char*&) const; 194s 1515: _ConvFn __fn = &codecvt<_CharT, char, _State>::out; 194s 1515: return __do_str_codecvt(__first, __last, __outstr, __cvt, __state, 194s 1515: __count, __fn); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: __str_codecvt_out(const _CharT* __first, const _CharT* __last, 194s 1515: basic_string& __outstr, 194s 1515: const codecvt<_CharT, char, _State>& __cvt) 194s 1515: { 194s 1515: _State __state = {}; 194s 1515: size_t __n; 194s 1515: return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: __str_codecvt_out_all(const _CharT* __first, const _CharT* __last, 194s 1515: basic_string& __outstr, 194s 1515: const codecvt<_CharT, char, _State>& __cvt) 194s 1515: { 194s 1515: _State __state = {}; 194s 1515: size_t __n; 194s 1515: return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n) 194s 1515: && (__n == size_t(__last - __first)); 194s 1515: } 194s 1515: # 223 "/usr/include/c++/15/bits/locale_conv.h" 3 4 194s 1515: namespace __detail 194s 1515: { 194s 1515: template 194s 1515: struct _Scoped_ptr 194s 1515: { 194s 1515: __attribute__((__nonnull__(2))) 194s 1515: explicit 194s 1515: _Scoped_ptr(_Tp* __ptr) noexcept 194s 1515: : _M_ptr(__ptr) 194s 1515: { } 194s 1515: 194s 1515: _Scoped_ptr(_Tp* __ptr, const char* __msg) 194s 1515: : _M_ptr(__ptr) 194s 1515: { 194s 1515: if (!__ptr) 194s 1515: __throw_logic_error(__msg); 194s 1515: } 194s 1515: 194s 1515: ~_Scoped_ptr() { delete _M_ptr; } 194s 1515: 194s 1515: _Scoped_ptr(const _Scoped_ptr&) = delete; 194s 1515: _Scoped_ptr& operator=(const _Scoped_ptr&) = delete; 194s 1515: 194s 1515: __attribute__((__returns_nonnull__)) 194s 1515: _Tp* operator->() const noexcept { return _M_ptr; } 194s 1515: 194s 1515: _Tp& operator*() const noexcept { return *_M_ptr; } 194s 1515: 194s 1515: private: 194s 1515: _Tp* _M_ptr; 194s 1515: }; 194s 1515: } 194s 1515: 194s 1515: namespace __cxx11 { 194s 1515: 194s 1515: 194s 1515: template, 194s 1515: typename _Byte_alloc = allocator> 194s 1515: class wstring_convert 194s 1515: { 194s 1515: public: 194s 1515: typedef basic_string, _Byte_alloc> byte_string; 194s 1515: typedef basic_string<_Elem, char_traits<_Elem>, _Wide_alloc> wide_string; 194s 1515: typedef typename _Codecvt::state_type state_type; 194s 1515: typedef typename wide_string::traits_type::int_type int_type; 194s 1515: 194s 1515: 194s 1515: wstring_convert() : _M_cvt(new _Codecvt()) { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: wstring_convert(_Codecvt* __pcvt) : _M_cvt(__pcvt, "wstring_convert") 194s 1515: { } 194s 1515: # 291 "/usr/include/c++/15/bits/locale_conv.h" 3 4 194s 1515: wstring_convert(_Codecvt* __pcvt, state_type __state) 194s 1515: : _M_cvt(__pcvt, "std::wstring_convert"), 194s 1515: _M_state(__state), _M_with_cvtstate(true) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: wstring_convert(const byte_string& __byte_err, 194s 1515: const wide_string& __wide_err = wide_string()) 194s 1515: : _M_cvt(new _Codecvt), 194s 1515: _M_byte_err_string(__byte_err), _M_wide_err_string(__wide_err), 194s 1515: _M_with_strings(true) 194s 1515: { } 194s 1515: 194s 1515: ~wstring_convert() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: wstring_convert(const wstring_convert&) = delete; 194s 1515: wstring_convert& operator=(const wstring_convert&) = delete; 194s 1515: 194s 1515: 194s 1515: wide_string 194s 1515: from_bytes(char __byte) 194s 1515: { 194s 1515: char __bytes[2] = { __byte }; 194s 1515: return from_bytes(__bytes, __bytes+1); 194s 1515: } 194s 1515: 194s 1515: wide_string 194s 1515: from_bytes(const char* __ptr) 194s 1515: { return from_bytes(__ptr, __ptr+char_traits::length(__ptr)); } 194s 1515: 194s 1515: wide_string 194s 1515: from_bytes(const byte_string& __str) 194s 1515: { 194s 1515: auto __ptr = __str.data(); 194s 1515: return from_bytes(__ptr, __ptr + __str.size()); 194s 1515: } 194s 1515: 194s 1515: wide_string 194s 1515: from_bytes(const char* __first, const char* __last) 194s 1515: { 194s 1515: if (!_M_with_cvtstate) 194s 1515: _M_state = state_type(); 194s 1515: wide_string __out{ _M_wide_err_string.get_allocator() }; 194s 1515: if (__str_codecvt_in(__first, __last, __out, *_M_cvt, _M_state, 194s 1515: _M_count)) 194s 1515: return __out; 194s 1515: if (_M_with_strings) 194s 1515: return _M_wide_err_string; 194s 1515: __throw_range_error("wstring_convert::from_bytes"); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: byte_string 194s 1515: to_bytes(_Elem __wchar) 194s 1515: { 194s 1515: _Elem __wchars[2] = { __wchar }; 194s 1515: return to_bytes(__wchars, __wchars+1); 194s 1515: } 194s 1515: 194s 1515: byte_string 194s 1515: to_bytes(const _Elem* __ptr) 194s 1515: { 194s 1515: return to_bytes(__ptr, __ptr+wide_string::traits_type::length(__ptr)); 194s 1515: } 194s 1515: 194s 1515: byte_string 194s 1515: to_bytes(const wide_string& __wstr) 194s 1515: { 194s 1515: auto __ptr = __wstr.data(); 194s 1515: return to_bytes(__ptr, __ptr + __wstr.size()); 194s 1515: } 194s 1515: 194s 1515: byte_string 194s 1515: to_bytes(const _Elem* __first, const _Elem* __last) 194s 1515: { 194s 1515: if (!_M_with_cvtstate) 194s 1515: _M_state = state_type(); 194s 1515: byte_string __out{ _M_byte_err_string.get_allocator() }; 194s 1515: if (__str_codecvt_out(__first, __last, __out, *_M_cvt, _M_state, 194s 1515: _M_count)) 194s 1515: return __out; 194s 1515: if (_M_with_strings) 194s 1515: return _M_byte_err_string; 194s 1515: __throw_range_error("wstring_convert::to_bytes"); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_t converted() const noexcept { return _M_count; } 194s 1515: 194s 1515: 194s 1515: state_type state() const { return _M_state; } 194s 1515: 194s 1515: private: 194s 1515: __detail::_Scoped_ptr<_Codecvt> _M_cvt; 194s 1515: byte_string _M_byte_err_string; 194s 1515: wide_string _M_wide_err_string; 194s 1515: state_type _M_state = state_type(); 194s 1515: size_t _M_count = 0; 194s 1515: bool _M_with_cvtstate = false; 194s 1515: bool _M_with_strings = false; 194s 1515: }; 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: class wbuffer_convert 194s 1515: : public basic_streambuf<_Elem, _Tr> 194s 1515: { 194s 1515: typedef basic_streambuf<_Elem, _Tr> _Wide_streambuf; 194s 1515: 194s 1515: public: 194s 1515: typedef typename _Codecvt::state_type state_type; 194s 1515: 194s 1515: 194s 1515: wbuffer_convert() : wbuffer_convert(nullptr) { } 194s 1515: # 428 "/usr/include/c++/15/bits/locale_conv.h" 3 4 194s 1515: explicit 194s 1515: wbuffer_convert(streambuf* __bytebuf, _Codecvt* __pcvt = new _Codecvt, 194s 1515: state_type __state = state_type()) 194s 1515: : _M_buf(__bytebuf), _M_cvt(__pcvt, "std::wbuffer_convert"), 194s 1515: _M_state(__state), _M_always_noconv(_M_cvt->always_noconv()) 194s 1515: { 194s 1515: if (_M_buf) 194s 1515: { 194s 1515: this->setp(_M_put_area, _M_put_area + _S_buffer_length); 194s 1515: this->setg(_M_get_area + _S_putback_length, 194s 1515: _M_get_area + _S_putback_length, 194s 1515: _M_get_area + _S_putback_length); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: ~wbuffer_convert() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: wbuffer_convert(const wbuffer_convert&) = delete; 194s 1515: wbuffer_convert& operator=(const wbuffer_convert&) = delete; 194s 1515: 194s 1515: streambuf* rdbuf() const noexcept { return _M_buf; } 194s 1515: 194s 1515: streambuf* 194s 1515: rdbuf(streambuf *__bytebuf) noexcept 194s 1515: { 194s 1515: auto __prev = _M_buf; 194s 1515: _M_buf = __bytebuf; 194s 1515: return __prev; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: state_type state() const noexcept { return _M_state; } 194s 1515: 194s 1515: protected: 194s 1515: int 194s 1515: sync() 194s 1515: { return _M_buf && _M_conv_put() && !_M_buf->pubsync() ? 0 : -1; } 194s 1515: 194s 1515: typename _Wide_streambuf::int_type 194s 1515: overflow(typename _Wide_streambuf::int_type __out) 194s 1515: { 194s 1515: if (!_M_buf || !_M_conv_put()) 194s 1515: return _Tr::eof(); 194s 1515: else if (!_Tr::eq_int_type(__out, _Tr::eof())) 194s 1515: return this->sputc(__out); 194s 1515: return _Tr::not_eof(__out); 194s 1515: } 194s 1515: 194s 1515: typename _Wide_streambuf::int_type 194s 1515: underflow() 194s 1515: { 194s 1515: if (!_M_buf) 194s 1515: return _Tr::eof(); 194s 1515: 194s 1515: if (this->gptr() < this->egptr() || (_M_buf && _M_conv_get())) 194s 1515: return _Tr::to_int_type(*this->gptr()); 194s 1515: else 194s 1515: return _Tr::eof(); 194s 1515: } 194s 1515: 194s 1515: streamsize 194s 1515: xsputn(const typename _Wide_streambuf::char_type* __s, streamsize __n) 194s 1515: { 194s 1515: if (!_M_buf || __n == 0) 194s 1515: return 0; 194s 1515: streamsize __done = 0; 194s 1515: do 194s 1515: { 194s 1515: auto __nn = std::min(this->epptr() - this->pptr(), 194s 1515: __n - __done); 194s 1515: _Tr::copy(this->pptr(), __s + __done, __nn); 194s 1515: this->pbump(__nn); 194s 1515: __done += __nn; 194s 1515: } while (__done < __n && _M_conv_put()); 194s 1515: return __done; 194s 1515: } 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: bool 194s 1515: _M_conv_get() 194s 1515: { 194s 1515: const streamsize __pb1 = this->gptr() - this->eback(); 194s 1515: const streamsize __pb2 = _S_putback_length; 194s 1515: const streamsize __npb = std::min(__pb1, __pb2); 194s 1515: 194s 1515: _Tr::move(_M_get_area + _S_putback_length - __npb, 194s 1515: this->gptr() - __npb, __npb); 194s 1515: 194s 1515: streamsize __nbytes = sizeof(_M_get_buf) - _M_unconv; 194s 1515: __nbytes = std::min(__nbytes, _M_buf->in_avail()); 194s 1515: if (__nbytes < 1) 194s 1515: __nbytes = 1; 194s 1515: __nbytes = _M_buf->sgetn(_M_get_buf + _M_unconv, __nbytes); 194s 1515: if (__nbytes < 1) 194s 1515: return false; 194s 1515: __nbytes += _M_unconv; 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Elem* __outbuf = _M_get_area + _S_putback_length; 194s 1515: _Elem* __outnext = __outbuf; 194s 1515: const char* __bnext = _M_get_buf; 194s 1515: 194s 1515: codecvt_base::result __result; 194s 1515: if (_M_always_noconv) 194s 1515: __result = codecvt_base::noconv; 194s 1515: else 194s 1515: { 194s 1515: _Elem* __outend = _M_get_area + _S_buffer_length; 194s 1515: 194s 1515: __result = _M_cvt->in(_M_state, 194s 1515: __bnext, __bnext + __nbytes, __bnext, 194s 1515: __outbuf, __outend, __outnext); 194s 1515: } 194s 1515: 194s 1515: if (__result == codecvt_base::noconv) 194s 1515: { 194s 1515: 194s 1515: auto __get_buf = reinterpret_cast(_M_get_buf); 194s 1515: _Tr::copy(__outbuf, __get_buf, __nbytes); 194s 1515: _M_unconv = 0; 194s 1515: return true; 194s 1515: } 194s 1515: 194s 1515: if ((_M_unconv = _M_get_buf + __nbytes - __bnext)) 194s 1515: char_traits::move(_M_get_buf, __bnext, _M_unconv); 194s 1515: 194s 1515: this->setg(__outbuf, __outbuf, __outnext); 194s 1515: 194s 1515: return __result != codecvt_base::error; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: _M_put(...) 194s 1515: { return false; } 194s 1515: 194s 1515: bool 194s 1515: _M_put(const char* __p, streamsize __n) 194s 1515: { 194s 1515: if (_M_buf->sputn(__p, __n) < __n) 194s 1515: return false; 194s 1515: return true; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: _M_conv_put() 194s 1515: { 194s 1515: _Elem* const __first = this->pbase(); 194s 1515: const _Elem* const __last = this->pptr(); 194s 1515: const streamsize __pending = __last - __first; 194s 1515: 194s 1515: if (_M_always_noconv) 194s 1515: return _M_put(__first, __pending); 194s 1515: 194s 1515: char __outbuf[2 * _S_buffer_length]; 194s 1515: 194s 1515: const _Elem* __next = __first; 194s 1515: const _Elem* __start; 194s 1515: do 194s 1515: { 194s 1515: __start = __next; 194s 1515: char* __outnext = __outbuf; 194s 1515: char* const __outlast = __outbuf + sizeof(__outbuf); 194s 1515: auto __result = _M_cvt->out(_M_state, __next, __last, __next, 194s 1515: __outnext, __outlast, __outnext); 194s 1515: if (__result == codecvt_base::error) 194s 1515: return false; 194s 1515: else if (__result == codecvt_base::noconv) 194s 1515: return _M_put(__next, __pending); 194s 1515: 194s 1515: if (!_M_put(__outbuf, __outnext - __outbuf)) 194s 1515: return false; 194s 1515: } 194s 1515: while (__next != __last && __next != __start); 194s 1515: 194s 1515: if (__next != __last) 194s 1515: _Tr::move(__first, __next, __last - __next); 194s 1515: 194s 1515: this->pbump(__first - __next); 194s 1515: return __next != __first; 194s 1515: } 194s 1515: 194s 1515: streambuf* _M_buf; 194s 1515: __detail::_Scoped_ptr<_Codecvt> _M_cvt; 194s 1515: state_type _M_state; 194s 1515: 194s 1515: static const streamsize _S_buffer_length = 32; 194s 1515: static const streamsize _S_putback_length = 3; 194s 1515: _Elem _M_put_area[_S_buffer_length]; 194s 1515: _Elem _M_get_area[_S_buffer_length]; 194s 1515: streamsize _M_unconv = 0; 194s 1515: char _M_get_buf[_S_buffer_length-_S_putback_length]; 194s 1515: bool _M_always_noconv; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 48 "/usr/include/c++/15/locale" 2 3 4 194s 1515: # 54 "/usr/include/c++/15/iomanip" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct _Resetiosflags { ios_base::fmtflags _M_mask; }; 194s 1515: # 75 "/usr/include/c++/15/iomanip" 3 4 194s 1515: inline _Resetiosflags 194s 1515: resetiosflags(ios_base::fmtflags __mask) 194s 1515: { return { __mask }; } 194s 1515: 194s 1515: template 194s 1515: inline basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __is, _Resetiosflags __f) 194s 1515: { 194s 1515: __is.setf(ios_base::fmtflags(0), __f._M_mask); 194s 1515: return __is; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __os, _Resetiosflags __f) 194s 1515: { 194s 1515: __os.setf(ios_base::fmtflags(0), __f._M_mask); 194s 1515: return __os; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: struct _Setiosflags { ios_base::fmtflags _M_mask; }; 194s 1515: # 105 "/usr/include/c++/15/iomanip" 3 4 194s 1515: inline _Setiosflags 194s 1515: setiosflags(ios_base::fmtflags __mask) 194s 1515: { return { __mask }; } 194s 1515: 194s 1515: template 194s 1515: inline basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __is, _Setiosflags __f) 194s 1515: { 194s 1515: __is.setf(__f._M_mask); 194s 1515: return __is; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setiosflags __f) 194s 1515: { 194s 1515: __os.setf(__f._M_mask); 194s 1515: return __os; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: struct _Setbase { int _M_base; }; 194s 1515: # 136 "/usr/include/c++/15/iomanip" 3 4 194s 1515: inline _Setbase 194s 1515: setbase(int __base) 194s 1515: { return { __base }; } 194s 1515: 194s 1515: template 194s 1515: inline basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __is, _Setbase __f) 194s 1515: { 194s 1515: __is.setf(__f._M_base == 8 ? ios_base::oct : 194s 1515: __f._M_base == 10 ? ios_base::dec : 194s 1515: __f._M_base == 16 ? ios_base::hex : 194s 1515: ios_base::fmtflags(0), ios_base::basefield); 194s 1515: return __is; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setbase __f) 194s 1515: { 194s 1515: __os.setf(__f._M_base == 8 ? ios_base::oct : 194s 1515: __f._M_base == 10 ? ios_base::dec : 194s 1515: __f._M_base == 16 ? ios_base::hex : 194s 1515: ios_base::fmtflags(0), ios_base::basefield); 194s 1515: return __os; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Setfill { _CharT _M_c; }; 194s 1515: # 173 "/usr/include/c++/15/iomanip" 3 4 194s 1515: template 194s 1515: inline _Setfill<_CharT> 194s 1515: setfill(_CharT __c) 194s 1515: { return { __c }; } 194s 1515: 194s 1515: template 194s 1515: __attribute__((__deprecated__("'std::setfill' should only be used with " 194s 1515: "output streams"))) 194s 1515: inline basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __is, _Setfill<_CharT> __f) 194s 1515: { 194s 1515: __is.fill(__f._M_c); 194s 1515: return __is; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setfill<_CharT> __f) 194s 1515: { 194s 1515: __os.fill(__f._M_c); 194s 1515: return __os; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: struct _Setprecision { int _M_n; }; 194s 1515: # 206 "/usr/include/c++/15/iomanip" 3 4 194s 1515: inline _Setprecision 194s 1515: setprecision(int __n) 194s 1515: { return { __n }; } 194s 1515: 194s 1515: template 194s 1515: inline basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __is, _Setprecision __f) 194s 1515: { 194s 1515: __is.precision(__f._M_n); 194s 1515: return __is; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setprecision __f) 194s 1515: { 194s 1515: __os.precision(__f._M_n); 194s 1515: return __os; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: struct _Setw { int _M_n; }; 194s 1515: # 236 "/usr/include/c++/15/iomanip" 3 4 194s 1515: inline _Setw 194s 1515: setw(int __n) 194s 1515: { return { __n }; } 194s 1515: 194s 1515: template 194s 1515: inline basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __is, _Setw __f) 194s 1515: { 194s 1515: __is.width(__f._M_n); 194s 1515: return __is; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setw __f) 194s 1515: { 194s 1515: __os.width(__f._M_n); 194s 1515: return __os; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Get_money { _MoneyT& _M_mon; bool _M_intl; }; 194s 1515: # 269 "/usr/include/c++/15/iomanip" 3 4 194s 1515: template 194s 1515: inline _Get_money<_MoneyT> 194s 1515: get_money(_MoneyT& __mon, bool __intl = false) 194s 1515: { return { __mon, __intl }; } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __is, _Get_money<_MoneyT> __f) 194s 1515: { 194s 1515: typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: typedef istreambuf_iterator<_CharT, _Traits> _Iter; 194s 1515: typedef money_get<_CharT, _Iter> _MoneyGet; 194s 1515: 194s 1515: const _MoneyGet& __mg = use_facet<_MoneyGet>(__is.getloc()); 194s 1515: __mg.get(_Iter(__is.rdbuf()), _Iter(), __f._M_intl, 194s 1515: __is, __err, __f._M_mon); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __is._M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { __is._M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: __is.setstate(__err); 194s 1515: } 194s 1515: return __is; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Put_money { const _MoneyT& _M_mon; bool _M_intl; }; 194s 1515: # 316 "/usr/include/c++/15/iomanip" 3 4 194s 1515: template 194s 1515: inline _Put_money<_MoneyT> 194s 1515: put_money(const _MoneyT& __mon, bool __intl = false) 194s 1515: { return { __mon, __intl }; } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_money<_MoneyT> __f) 194s 1515: { 194s 1515: typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: typedef ostreambuf_iterator<_CharT, _Traits> _Iter; 194s 1515: typedef money_put<_CharT, _Iter> _MoneyPut; 194s 1515: 194s 1515: const _MoneyPut& __mp = use_facet<_MoneyPut>(__os.getloc()); 194s 1515: if (__mp.put(_Iter(__os.rdbuf()), __f._M_intl, __os, 194s 1515: __os.fill(), __f._M_mon).failed()) 194s 1515: __err |= ios_base::badbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __os._M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { __os._M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: __os.setstate(__err); 194s 1515: } 194s 1515: return __os; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: struct _Put_time 194s 1515: { 194s 1515: const std::tm* _M_tmb; 194s 1515: const _CharT* _M_fmt; 194s 1515: }; 194s 1515: # 368 "/usr/include/c++/15/iomanip" 3 4 194s 1515: template 194s 1515: inline _Put_time<_CharT> 194s 1515: put_time(const std::tm* __tmb, const _CharT* __fmt) 194s 1515: { return { __tmb, __fmt }; } 194s 1515: 194s 1515: template 194s 1515: basic_ostream<_CharT, _Traits>& 194s 1515: operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_time<_CharT> __f) 194s 1515: { 194s 1515: typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: typedef ostreambuf_iterator<_CharT, _Traits> _Iter; 194s 1515: typedef time_put<_CharT, _Iter> _TimePut; 194s 1515: 194s 1515: const _CharT* const __fmt_end = __f._M_fmt + 194s 1515: _Traits::length(__f._M_fmt); 194s 1515: 194s 1515: const _TimePut& __mp = use_facet<_TimePut>(__os.getloc()); 194s 1515: if (__mp.put(_Iter(__os.rdbuf()), __os, __os.fill(), 194s 1515: __f._M_tmb, __f._M_fmt, __fmt_end).failed()) 194s 1515: __err |= ios_base::badbit; 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __os._M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { __os._M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: __os.setstate(__err); 194s 1515: } 194s 1515: return __os; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: struct _Get_time 194s 1515: { 194s 1515: std::tm* _M_tmb; 194s 1515: const _CharT* _M_fmt; 194s 1515: }; 194s 1515: # 423 "/usr/include/c++/15/iomanip" 3 4 194s 1515: template 194s 1515: inline _Get_time<_CharT> 194s 1515: get_time(std::tm* __tmb, const _CharT* __fmt) 194s 1515: { return { __tmb, __fmt }; } 194s 1515: 194s 1515: template 194s 1515: basic_istream<_CharT, _Traits>& 194s 1515: operator>>(basic_istream<_CharT, _Traits>& __is, _Get_time<_CharT> __f) 194s 1515: { 194s 1515: typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false); 194s 1515: if (__cerb) 194s 1515: { 194s 1515: ios_base::iostate __err = ios_base::goodbit; 194s 1515: try 194s 1515: { 194s 1515: typedef istreambuf_iterator<_CharT, _Traits> _Iter; 194s 1515: typedef time_get<_CharT, _Iter> _TimeGet; 194s 1515: 194s 1515: const _CharT* const __fmt_end = __f._M_fmt + 194s 1515: _Traits::length(__f._M_fmt); 194s 1515: 194s 1515: const _TimeGet& __mg = use_facet<_TimeGet>(__is.getloc()); 194s 1515: __mg.get(_Iter(__is.rdbuf()), _Iter(), __is, 194s 1515: __err, __f._M_tmb, __f._M_fmt, __fmt_end); 194s 1515: } 194s 1515: catch(__cxxabiv1::__forced_unwind&) 194s 1515: { 194s 1515: __is._M_setstate(ios_base::badbit); 194s 1515: throw; 194s 1515: } 194s 1515: catch(...) 194s 1515: { __is._M_setstate(ios_base::badbit); } 194s 1515: if (__err) 194s 1515: __is.setstate(__err); 194s 1515: } 194s 1515: return __is; 194s 1515: } 194s 1515: # 519 "/usr/include/c++/15/iomanip" 3 4 194s 1515: extern template ostream& operator<<(ostream&, _Setfill); 194s 1515: extern template ostream& operator<<(ostream&, _Setiosflags); 194s 1515: extern template ostream& operator<<(ostream&, _Resetiosflags); 194s 1515: extern template ostream& operator<<(ostream&, _Setbase); 194s 1515: extern template ostream& operator<<(ostream&, _Setprecision); 194s 1515: extern template ostream& operator<<(ostream&, _Setw); 194s 1515: extern template istream& operator>>(istream&, _Setfill); 194s 1515: extern template istream& operator>>(istream&, _Setiosflags); 194s 1515: extern template istream& operator>>(istream&, _Resetiosflags); 194s 1515: extern template istream& operator>>(istream&, _Setbase); 194s 1515: extern template istream& operator>>(istream&, _Setprecision); 194s 1515: extern template istream& operator>>(istream&, _Setw); 194s 1515: 194s 1515: 194s 1515: extern template wostream& operator<<(wostream&, _Setfill); 194s 1515: extern template wostream& operator<<(wostream&, _Setiosflags); 194s 1515: extern template wostream& operator<<(wostream&, _Resetiosflags); 194s 1515: extern template wostream& operator<<(wostream&, _Setbase); 194s 1515: extern template wostream& operator<<(wostream&, _Setprecision); 194s 1515: extern template wostream& operator<<(wostream&, _Setw); 194s 1515: extern template wistream& operator>>(wistream&, _Setfill); 194s 1515: extern template wistream& operator>>(wistream&, _Setiosflags); 194s 1515: extern template wistream& operator>>(wistream&, _Resetiosflags); 194s 1515: extern template wistream& operator>>(wistream&, _Setbase); 194s 1515: extern template wistream& operator>>(wistream&, _Setprecision); 194s 1515: extern template wistream& operator>>(wistream&, _Setw); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 3170 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/vector" 1 3 4 194s 1515: # 67 "/usr/include/c++/15/vector" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_uninitialized.h" 1 3 4 194s 1515: # 71 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _UninitDestroyGuard 194s 1515: { 194s 1515: 194s 1515: explicit 194s 1515: _UninitDestroyGuard(_ForwardIterator& __first, _Alloc& __a) 194s 1515: : _M_first(__first), _M_cur(__builtin_addressof(__first)), _M_alloc(__a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: ~_UninitDestroyGuard() 194s 1515: { 194s 1515: if (__builtin_expect(_M_cur != 0, 0)) 194s 1515: std::_Destroy(_M_first, *_M_cur, _M_alloc); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void release() { _M_cur = 0; } 194s 1515: 194s 1515: private: 194s 1515: _ForwardIterator const _M_first; 194s 1515: _ForwardIterator* _M_cur; 194s 1515: _Alloc& _M_alloc; 194s 1515: 194s 1515: _UninitDestroyGuard(const _UninitDestroyGuard&); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _UninitDestroyGuard<_ForwardIterator, void> 194s 1515: { 194s 1515: 194s 1515: explicit 194s 1515: _UninitDestroyGuard(_ForwardIterator& __first) 194s 1515: : _M_first(__first), _M_cur(__builtin_addressof(__first)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: ~_UninitDestroyGuard() 194s 1515: { 194s 1515: if (__builtin_expect(_M_cur != 0, 0)) 194s 1515: std::_Destroy(_M_first, *_M_cur); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void release() { _M_cur = 0; } 194s 1515: 194s 1515: _ForwardIterator const _M_first; 194s 1515: _ForwardIterator* _M_cur; 194s 1515: 194s 1515: private: 194s 1515: _UninitDestroyGuard(const _UninitDestroyGuard&); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __do_uninit_copy(_InputIterator __first, _Sentinel __last, 194s 1515: _ForwardIterator __result) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator> __guard(__result); 194s 1515: for (; __first != __last; ++__first, (void)++__result) 194s 1515: std::_Construct(std::__addressof(*__result), *__first); 194s 1515: __guard.release(); 194s 1515: return __result; 194s 1515: } 194s 1515: # 217 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: # 228 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: uninitialized_copy(_InputIterator __first, _InputIterator __last, 194s 1515: _ForwardIterator __result) 194s 1515: { 194s 1515: # 256 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: using _Dest = decltype(std::__niter_base(__result)); 194s 1515: using _Src = decltype(std::__niter_base(__first)); 194s 1515: using _ValT = typename iterator_traits<_ForwardIterator>::value_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if constexpr (!__is_trivially_constructible(_ValT, decltype(*__first))) 194s 1515: return std::__do_uninit_copy(__first, __last, __result); 194s 1515: else if constexpr (__memcpyable<_Dest, _Src>::__value) 194s 1515: { 194s 1515: ptrdiff_t __n = __last - __first; 194s 1515: if (__n > 0) [[__likely__]] 194s 1515: { 194s 1515: using _ValT = typename remove_pointer<_Src>::type; 194s 1515: __builtin_memcpy(std::__niter_base(__result), 194s 1515: std::__niter_base(__first), 194s 1515: __n * sizeof(_ValT)); 194s 1515: __result += __n; 194s 1515: } 194s 1515: return __result; 194s 1515: } 194s 1515: # 302 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: else 194s 1515: return std::__do_uninit_copy(__first, __last, __result); 194s 1515: # 317 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __do_uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __x) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 194s 1515: for (; __first != __last; ++__first) 194s 1515: std::_Construct(std::__addressof(*__first), __x); 194s 1515: __guard.release(); 194s 1515: } 194s 1515: # 389 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __x) 194s 1515: { 194s 1515: # 404 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: typedef typename iterator_traits<_ForwardIterator>::value_type 194s 1515: _ValueType; 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if constexpr (__is_byte<_ValueType>::__value) 194s 1515: if constexpr (is_same<_ValueType, _Tp>::value 194s 1515: || is_integral<_Tp>::value) 194s 1515: { 194s 1515: using _BasePtr = decltype(std::__niter_base(__first)); 194s 1515: if constexpr (is_pointer<_BasePtr>::value) 194s 1515: { 194s 1515: void* __dest = std::__niter_base(__first); 194s 1515: ptrdiff_t __n = __last - __first; 194s 1515: if (__n > 0) [[__likely__]] 194s 1515: __builtin_memset(__dest, (unsigned char)__x, __n); 194s 1515: return; 194s 1515: } 194s 1515: # 438 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: } 194s 1515: std::__do_uninit_fill(__first, __last, __x); 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __do_uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: if constexpr (is_integral<_Size>::value) 194s 1515: 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__n >= 0)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: else if constexpr (is_floating_point<_Size>::value) 194s 1515: 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__n >= 0 && static_cast(__n) == __n)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: for (; __n--; ++__first) 194s 1515: std::_Construct(std::__addressof(*__first), __x); 194s 1515: __guard.release(); 194s 1515: return __first; 194s 1515: } 194s 1515: # 510 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: # 523 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename iterator_traits<_ForwardIterator>::value_type 194s 1515: _ValueType; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if constexpr (__is_byte<_ValueType>::__value) 194s 1515: if constexpr (is_integral<_Tp>::value) 194s 1515: if constexpr (is_integral<_Size>::value) 194s 1515: { 194s 1515: using _BasePtr = decltype(std::__niter_base(__first)); 194s 1515: if constexpr (is_pointer<_BasePtr>::value) 194s 1515: { 194s 1515: void* __dest = std::__niter_base(__first); 194s 1515: if (__n > 0) [[__likely__]] 194s 1515: { 194s 1515: __builtin_memset(__dest, (unsigned char)__x, __n); 194s 1515: __first += __n; 194s 1515: } 194s 1515: return __first; 194s 1515: } 194s 1515: # 570 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: } 194s 1515: return std::__do_uninit_fill_n(__first, __n, __x); 194s 1515: # 580 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 591 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __uninitialized_copy_a(_InputIterator __first, _Sentinel __last, 194s 1515: _ForwardIterator __result, _Allocator& __alloc) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator, _Allocator> 194s 1515: __guard(__result, __alloc); 194s 1515: 194s 1515: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 194s 1515: for (; __first != __last; ++__first, (void)++__result) 194s 1515: __traits::construct(__alloc, std::__addressof(*__result), *__first); 194s 1515: __guard.release(); 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_copy_a(_InputIterator __first, _Sentinel __last, 194s 1515: _ForwardIterator __result, allocator<_Tp>&) 194s 1515: { 194s 1515: # 637 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: return std::uninitialized_copy(__first, __last, __result); 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, 194s 1515: _ForwardIterator __result, _Allocator& __alloc) 194s 1515: { 194s 1515: return std::__uninitialized_copy_a(std::make_move_iterator(__first), 194s 1515: std::make_move_iterator(__last), 194s 1515: __result, __alloc); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_move_if_noexcept_a(_InputIterator __first, 194s 1515: _InputIterator __last, 194s 1515: _ForwardIterator __result, 194s 1515: _Allocator& __alloc) 194s 1515: { 194s 1515: return std::__uninitialized_copy_a 194s 1515: (std::__make_move_if_noexcept_iterator(__first), 194s 1515: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __x, _Allocator& __alloc) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator, _Allocator> 194s 1515: __guard(__first, __alloc); 194s 1515: 194s 1515: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 194s 1515: for (; __first != __last; ++__first) 194s 1515: __traits::construct(__alloc, std::__addressof(*__first), __x); 194s 1515: 194s 1515: __guard.release(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: const _Tp& __x, allocator<_Tp2>&) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: std::uninitialized_fill(__first, __last, __x); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 194s 1515: const _Tp& __x, _Allocator& __alloc) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator, _Allocator> 194s 1515: __guard(__first, __alloc); 194s 1515: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 194s 1515: for (; __n > 0; --__n, (void) ++__first) 194s 1515: __traits::construct(__alloc, std::__addressof(*__first), __x); 194s 1515: __guard.release(); 194s 1515: return __first; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 194s 1515: const _Tp& __x, allocator<_Tp2>&) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return std::uninitialized_fill_n(__first, __n, __x); 194s 1515: } 194s 1515: # 740 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: template 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_copy_move(_InputIterator1 __first1, 194s 1515: _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, 194s 1515: _InputIterator2 __last2, 194s 1515: _ForwardIterator __result, 194s 1515: _Allocator& __alloc) 194s 1515: { 194s 1515: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, 194s 1515: __result, __alloc); 194s 1515: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__result, 194s 1515: __alloc); 194s 1515: __result = __mid; 194s 1515: __result = std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); 194s 1515: __guard.release(); 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_move_copy(_InputIterator1 __first1, 194s 1515: _InputIterator1 __last1, 194s 1515: _InputIterator2 __first2, 194s 1515: _InputIterator2 __last2, 194s 1515: _ForwardIterator __result, 194s 1515: _Allocator& __alloc) 194s 1515: { 194s 1515: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, 194s 1515: __result, __alloc); 194s 1515: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__result, 194s 1515: __alloc); 194s 1515: __result = __mid; 194s 1515: __result = std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); 194s 1515: __guard.release(); 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, 194s 1515: const _Tp& __x, _InputIterator __first, 194s 1515: _InputIterator __last, _Allocator& __alloc) 194s 1515: { 194s 1515: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); 194s 1515: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__result, 194s 1515: __alloc); 194s 1515: __result = __mid; 194s 1515: __result = std::__uninitialized_move_a(__first, __last, __mid, __alloc); 194s 1515: __guard.release(); 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, 194s 1515: _ForwardIterator __first2, 194s 1515: _ForwardIterator __last2, const _Tp& __x, 194s 1515: _Allocator& __alloc) 194s 1515: { 194s 1515: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, 194s 1515: __first2, 194s 1515: __alloc); 194s 1515: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__first2, 194s 1515: __alloc); 194s 1515: __first2 = __mid2; 194s 1515: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); 194s 1515: __guard.release(); 194s 1515: } 194s 1515: # 832 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: template 194s 1515: struct __uninitialized_default_1 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static void 194s 1515: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 194s 1515: for (; __first != __last; ++__first) 194s 1515: std::_Construct(std::__addressof(*__first)); 194s 1515: __guard.release(); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template<> 194s 1515: struct __uninitialized_default_1 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static void 194s 1515: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 194s 1515: { 194s 1515: if (__first == __last) 194s 1515: return; 194s 1515: 194s 1515: typename iterator_traits<_ForwardIterator>::value_type* __val 194s 1515: = std::__addressof(*__first); 194s 1515: std::_Construct(__val); 194s 1515: if (++__first != __last) 194s 1515: std::fill(__first, __last, *__val); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __uninitialized_default_n_1 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static _ForwardIterator 194s 1515: __uninit_default_n(_ForwardIterator __first, _Size __n) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 194s 1515: for (; __n > 0; --__n, (void) ++__first) 194s 1515: std::_Construct(std::__addressof(*__first)); 194s 1515: __guard.release(); 194s 1515: return __first; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template<> 194s 1515: struct __uninitialized_default_n_1 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static _ForwardIterator 194s 1515: __uninit_default_n(_ForwardIterator __first, _Size __n) 194s 1515: { 194s 1515: if (__n > 0) 194s 1515: { 194s 1515: typename iterator_traits<_ForwardIterator>::value_type* __val 194s 1515: = std::__addressof(*__first); 194s 1515: std::_Construct(__val); 194s 1515: ++__first; 194s 1515: __first = std::fill_n(__first, __n - 1, *__val); 194s 1515: } 194s 1515: return __first; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: __uninitialized_default(_ForwardIterator __first, 194s 1515: _ForwardIterator __last) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename iterator_traits<_ForwardIterator>::value_type 194s 1515: _ValueType; 194s 1515: 194s 1515: const bool __assignable = is_copy_assignable<_ValueType>::value; 194s 1515: 194s 1515: std::__uninitialized_default_1<__is_trivial(_ValueType) 194s 1515: && __assignable>:: 194s 1515: __uninit_default(__first, __last); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_default_n(_ForwardIterator __first, _Size __n) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename iterator_traits<_ForwardIterator>::value_type 194s 1515: _ValueType; 194s 1515: 194s 1515: constexpr bool __can_fill 194s 1515: = __and_, is_copy_assignable<_ValueType>>::value; 194s 1515: 194s 1515: return __uninitialized_default_n_1<__is_trivial(_ValueType) 194s 1515: && __can_fill>:: 194s 1515: __uninit_default_n(__first, __n); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __uninitialized_default_a(_ForwardIterator __first, 194s 1515: _ForwardIterator __last, 194s 1515: _Allocator& __alloc) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__first, 194s 1515: __alloc); 194s 1515: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 194s 1515: for (; __first != __last; ++__first) 194s 1515: __traits::construct(__alloc, std::__addressof(*__first)); 194s 1515: __guard.release(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: __uninitialized_default_a(_ForwardIterator __first, 194s 1515: _ForwardIterator __last, 194s 1515: allocator<_Tp>&) 194s 1515: { std::__uninitialized_default(__first, __last); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _ForwardIterator 194s 1515: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 194s 1515: _Allocator& __alloc) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__first, 194s 1515: __alloc); 194s 1515: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 194s 1515: for (; __n > 0; --__n, (void) ++__first) 194s 1515: __traits::construct(__alloc, std::__addressof(*__first)); 194s 1515: __guard.release(); 194s 1515: return __first; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 194s 1515: allocator<_Tp>&) 194s 1515: { return std::__uninitialized_default_n(__first, __n); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __uninitialized_default_novalue_1 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static void 194s 1515: __uninit_default_novalue(_ForwardIterator __first, 194s 1515: _ForwardIterator __last) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 194s 1515: for (; __first != __last; ++__first) 194s 1515: std::_Construct_novalue(std::__addressof(*__first)); 194s 1515: __guard.release(); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template<> 194s 1515: struct __uninitialized_default_novalue_1 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static void 194s 1515: __uninit_default_novalue(_ForwardIterator, _ForwardIterator) 194s 1515: { 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __uninitialized_default_novalue_n_1 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static _ForwardIterator 194s 1515: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 194s 1515: for (; __n > 0; --__n, (void) ++__first) 194s 1515: std::_Construct_novalue(std::__addressof(*__first)); 194s 1515: __guard.release(); 194s 1515: return __first; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template<> 194s 1515: struct __uninitialized_default_novalue_n_1 194s 1515: { 194s 1515: template 194s 1515: 194s 1515: static _ForwardIterator 194s 1515: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 194s 1515: { return std::next(__first, __n); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: __uninitialized_default_novalue(_ForwardIterator __first, 194s 1515: _ForwardIterator __last) 194s 1515: { 194s 1515: typedef typename iterator_traits<_ForwardIterator>::value_type 194s 1515: _ValueType; 194s 1515: 194s 1515: std::__uninitialized_default_novalue_1< 194s 1515: is_trivially_default_constructible<_ValueType>::value>:: 194s 1515: __uninit_default_novalue(__first, __last); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) 194s 1515: { 194s 1515: typedef typename iterator_traits<_ForwardIterator>::value_type 194s 1515: _ValueType; 194s 1515: 194s 1515: return __uninitialized_default_novalue_n_1< 194s 1515: is_trivially_default_constructible<_ValueType>::value>:: 194s 1515: __uninit_default_novalue_n(__first, __n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _ForwardIterator 194s 1515: __uninitialized_copy_n(_InputIterator __first, _Size __n, 194s 1515: _ForwardIterator __result, input_iterator_tag) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator> __guard(__result); 194s 1515: for (; __n > 0; --__n, (void) ++__first, ++__result) 194s 1515: std::_Construct(std::__addressof(*__result), *__first); 194s 1515: __guard.release(); 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, 194s 1515: _ForwardIterator __result, 194s 1515: random_access_iterator_tag) 194s 1515: { return std::uninitialized_copy(__first, __first + __n, __result); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair<_InputIterator, _ForwardIterator> 194s 1515: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 194s 1515: _ForwardIterator __result, input_iterator_tag) 194s 1515: { 194s 1515: _UninitDestroyGuard<_ForwardIterator> __guard(__result); 194s 1515: for (; __n > 0; --__n, (void) ++__first, ++__result) 194s 1515: std::_Construct(std::__addressof(*__result), *__first); 194s 1515: __guard.release(); 194s 1515: return {__first, __result}; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline pair<_RandomAccessIterator, _ForwardIterator> 194s 1515: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, 194s 1515: _ForwardIterator __result, 194s 1515: random_access_iterator_tag) 194s 1515: { 194s 1515: auto __second_res = uninitialized_copy(__first, __first + __n, __result); 194s 1515: auto __first_res = std::next(__first, __n); 194s 1515: return {__first_res, __second_res}; 194s 1515: } 194s 1515: # 1151 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: uninitialized_copy_n(_InputIterator __first, _Size __n, 194s 1515: _ForwardIterator __result) 194s 1515: { return std::__uninitialized_copy_n(__first, __n, __result, 194s 1515: std::__iterator_category(__first)); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline pair<_InputIterator, _ForwardIterator> 194s 1515: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 194s 1515: _ForwardIterator __result) 194s 1515: { 194s 1515: return 194s 1515: std::__uninitialized_copy_n_pair(__first, __n, __result, 194s 1515: std::__iterator_category(__first)); 194s 1515: } 194s 1515: # 1277 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: __relocate_object_a(_Tp* __restrict __dest, _Up* __restrict __orig, 194s 1515: _Allocator& __alloc) 194s 1515: noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc, 194s 1515: __dest, std::move(*__orig))) 194s 1515: && noexcept(std::allocator_traits<_Allocator>::destroy( 194s 1515: __alloc, std::__addressof(*__orig)))) 194s 1515: { 194s 1515: typedef std::allocator_traits<_Allocator> __traits; 194s 1515: __traits::construct(__alloc, __dest, std::move(*__orig)); 194s 1515: __traits::destroy(__alloc, std::__addressof(*__orig)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __is_bitwise_relocatable 194s 1515: : __bool_constant<__is_trivial(_Tp)> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: __relocate_a_1(_InputIterator __first, _InputIterator __last, 194s 1515: _ForwardIterator __result, _Allocator& __alloc) 194s 1515: noexcept(noexcept(std::__relocate_object_a(std::addressof(*__result), 194s 1515: std::addressof(*__first), 194s 1515: __alloc))) 194s 1515: { 194s 1515: typedef typename iterator_traits<_InputIterator>::value_type 194s 1515: _ValueType; 194s 1515: typedef typename iterator_traits<_ForwardIterator>::value_type 194s 1515: _ValueType2; 194s 1515: static_assert(std::is_same<_ValueType, _ValueType2>::value, 194s 1515: "relocation is only possible for values of the same type"); 194s 1515: _ForwardIterator __cur = __result; 194s 1515: for (; __first != __last; ++__first, (void)++__cur) 194s 1515: std::__relocate_object_a(std::__addressof(*__cur), 194s 1515: std::__addressof(*__first), __alloc); 194s 1515: return __cur; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline __enable_if_t::value, _Tp*> 194s 1515: __relocate_a_1(_Tp* __first, _Tp* __last, 194s 1515: _Tp* __result, 194s 1515: [[__maybe_unused__]] allocator<_Up>& __alloc) noexcept 194s 1515: { 194s 1515: ptrdiff_t __count = __last - __first; 194s 1515: if (__count > 0) 194s 1515: { 194s 1515: # 1343 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 194s 1515: __builtin_memcpy(__result, __first, __count * sizeof(_Tp)); 194s 1515: } 194s 1515: return __result + __count; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline _ForwardIterator 194s 1515: __relocate_a(_InputIterator __first, _InputIterator __last, 194s 1515: _ForwardIterator __result, _Allocator& __alloc) 194s 1515: noexcept(noexcept(__relocate_a_1(std::__niter_base(__first), 194s 1515: std::__niter_base(__last), 194s 1515: std::__niter_base(__result), __alloc))) 194s 1515: { 194s 1515: return std::__relocate_a_1(std::__niter_base(__first), 194s 1515: std::__niter_base(__last), 194s 1515: std::__niter_base(__result), __alloc); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 68 "/usr/include/c++/15/vector" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_vector.h" 1 3 4 194s 1515: # 84 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Vector_base 194s 1515: { 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 194s 1515: rebind<_Tp>::other _Tp_alloc_type; 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer 194s 1515: pointer; 194s 1515: 194s 1515: struct _Vector_impl_data 194s 1515: { 194s 1515: pointer _M_start; 194s 1515: pointer _M_finish; 194s 1515: pointer _M_end_of_storage; 194s 1515: 194s 1515: 194s 1515: _Vector_impl_data() noexcept 194s 1515: : _M_start(), _M_finish(), _M_end_of_storage() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Vector_impl_data(_Vector_impl_data&& __x) noexcept 194s 1515: : _M_start(__x._M_start), _M_finish(__x._M_finish), 194s 1515: _M_end_of_storage(__x._M_end_of_storage) 194s 1515: { __x._M_start = __x._M_finish = __x._M_end_of_storage = pointer(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_copy_data(_Vector_impl_data const& __x) noexcept 194s 1515: { 194s 1515: _M_start = __x._M_start; 194s 1515: _M_finish = __x._M_finish; 194s 1515: _M_end_of_storage = __x._M_end_of_storage; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_swap_data(_Vector_impl_data& __x) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: _Vector_impl_data __tmp; 194s 1515: __tmp._M_copy_data(*this); 194s 1515: _M_copy_data(__x); 194s 1515: __x._M_copy_data(__tmp); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: struct _Vector_impl 194s 1515: : public _Tp_alloc_type, public _Vector_impl_data 194s 1515: { 194s 1515: 194s 1515: _Vector_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: : _Tp_alloc_type() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: _Vector_impl(_Tp_alloc_type const& __a) noexcept 194s 1515: : _Tp_alloc_type(__a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Vector_impl(_Vector_impl&& __x) noexcept 194s 1515: : _Tp_alloc_type(std::move(__x)), _Vector_impl_data(std::move(__x)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: _Vector_impl(_Tp_alloc_type&& __a) noexcept 194s 1515: : _Tp_alloc_type(std::move(__a)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: _Vector_impl(_Tp_alloc_type&& __a, _Vector_impl&& __rv) noexcept 194s 1515: : _Tp_alloc_type(std::move(__a)), _Vector_impl_data(std::move(__rv)) 194s 1515: { } 194s 1515: # 300 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: }; 194s 1515: 194s 1515: public: 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: 194s 1515: _Tp_alloc_type& 194s 1515: _M_get_Tp_allocator() noexcept 194s 1515: { return this->_M_impl; } 194s 1515: 194s 1515: 194s 1515: const _Tp_alloc_type& 194s 1515: _M_get_Tp_allocator() const noexcept 194s 1515: { return this->_M_impl; } 194s 1515: 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return allocator_type(_M_get_Tp_allocator()); } 194s 1515: 194s 1515: 194s 1515: _Vector_base() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Vector_base(const allocator_type& __a) noexcept 194s 1515: : _M_impl(__a) { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Vector_base(size_t __n) 194s 1515: : _M_impl() 194s 1515: { _M_create_storage(__n); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Vector_base(size_t __n, const allocator_type& __a) 194s 1515: : _M_impl(__a) 194s 1515: { _M_create_storage(__n); } 194s 1515: 194s 1515: 194s 1515: _Vector_base(_Vector_base&&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Vector_base(_Tp_alloc_type&& __a) noexcept 194s 1515: : _M_impl(std::move(__a)) { } 194s 1515: 194s 1515: 194s 1515: _Vector_base(_Vector_base&& __x, const allocator_type& __a) 194s 1515: : _M_impl(__a) 194s 1515: { 194s 1515: if (__x.get_allocator() == __a) 194s 1515: this->_M_impl._M_swap_data(__x._M_impl); 194s 1515: else 194s 1515: { 194s 1515: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; 194s 1515: _M_create_storage(__n); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Vector_base(const allocator_type& __a, _Vector_base&& __x) 194s 1515: : _M_impl(_Tp_alloc_type(__a), std::move(__x._M_impl)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: ~_Vector_base() noexcept 194s 1515: { 194s 1515: _M_deallocate(_M_impl._M_start, 194s 1515: _M_impl._M_end_of_storage - _M_impl._M_start); 194s 1515: } 194s 1515: 194s 1515: public: 194s 1515: _Vector_impl _M_impl; 194s 1515: 194s 1515: 194s 1515: pointer 194s 1515: _M_allocate(size_t __n) 194s 1515: { 194s 1515: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 194s 1515: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_deallocate(pointer __p, size_t __n) 194s 1515: { 194s 1515: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 194s 1515: if (__p) 194s 1515: _Tr::deallocate(_M_impl, __p, __n); 194s 1515: } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_create_storage(size_t __n) 194s 1515: { 194s 1515: this->_M_impl._M_start = this->_M_allocate(__n); 194s 1515: this->_M_impl._M_finish = this->_M_impl._M_start; 194s 1515: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 194s 1515: } 194s 1515: # 432 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: }; 194s 1515: # 457 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: template > 194s 1515: class vector : protected _Vector_base<_Tp, _Alloc> 194s 1515: { 194s 1515: # 470 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: static_assert(is_same::type, _Tp>::value, 194s 1515: "std::vector must have a non-const, non-volatile value_type"); 194s 1515: 194s 1515: static_assert(is_same::value, 194s 1515: "std::vector must have the same value_type as its allocator"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _Vector_base<_Tp, _Alloc> _Base; 194s 1515: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; 194s 1515: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; 194s 1515: 194s 1515: public: 194s 1515: typedef _Tp value_type; 194s 1515: typedef typename _Base::pointer pointer; 194s 1515: typedef typename _Alloc_traits::const_pointer const_pointer; 194s 1515: typedef typename _Alloc_traits::reference reference; 194s 1515: typedef typename _Alloc_traits::const_reference const_reference; 194s 1515: typedef __gnu_cxx::__normal_iterator iterator; 194s 1515: typedef __gnu_cxx::__normal_iterator 194s 1515: const_iterator; 194s 1515: typedef std::reverse_iterator const_reverse_iterator; 194s 1515: typedef std::reverse_iterator reverse_iterator; 194s 1515: typedef size_t size_type; 194s 1515: typedef ptrdiff_t difference_type; 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: static constexpr bool 194s 1515: _S_nothrow_relocate(true_type) 194s 1515: { 194s 1515: return noexcept(std::__relocate_a(std::declval(), 194s 1515: std::declval(), 194s 1515: std::declval(), 194s 1515: std::declval<_Tp_alloc_type&>())); 194s 1515: } 194s 1515: 194s 1515: static constexpr bool 194s 1515: _S_nothrow_relocate(false_type) 194s 1515: { return false; } 194s 1515: 194s 1515: static constexpr bool 194s 1515: _S_use_relocate() 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _S_nothrow_relocate(__is_move_insertable<_Tp_alloc_type>{}); 194s 1515: } 194s 1515: 194s 1515: static pointer 194s 1515: _S_do_relocate(pointer __first, pointer __last, pointer __result, 194s 1515: _Tp_alloc_type& __alloc, true_type) noexcept 194s 1515: { 194s 1515: return std::__relocate_a(__first, __last, __result, __alloc); 194s 1515: } 194s 1515: 194s 1515: static pointer 194s 1515: _S_do_relocate(pointer, pointer, pointer __result, 194s 1515: _Tp_alloc_type&, false_type) noexcept 194s 1515: { return __result; } 194s 1515: 194s 1515: static pointer 194s 1515: _S_relocate(pointer __first, pointer __last, pointer __result, 194s 1515: _Tp_alloc_type& __alloc) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using __do_it = __bool_constant<_S_use_relocate()>; 194s 1515: return _S_do_relocate(__first, __last, __result, __alloc, __do_it{}); 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: using _Base::_M_allocate; 194s 1515: using _Base::_M_deallocate; 194s 1515: using _Base::_M_impl; 194s 1515: using _Base::_M_get_Tp_allocator; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: vector() = default; 194s 1515: # 570 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: explicit 194s 1515: 194s 1515: vector(const allocator_type& __a) noexcept 194s 1515: : _Base(__a) { } 194s 1515: # 584 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: explicit 194s 1515: 194s 1515: vector(size_type __n, const allocator_type& __a = allocator_type()) 194s 1515: : _Base(_S_check_init_len(__n, __a), __a) 194s 1515: { _M_default_initialize(__n); } 194s 1515: # 598 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: vector(size_type __n, const value_type& __value, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _Base(_S_check_init_len(__n, __a), __a) 194s 1515: { _M_fill_initialize(__n, __value); } 194s 1515: # 630 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: vector(const vector& __x) 194s 1515: : _Base(__x.size(), 194s 1515: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) 194s 1515: { 194s 1515: this->_M_impl._M_finish = 194s 1515: std::__uninitialized_copy_a(__x.begin(), __x.end(), 194s 1515: this->_M_impl._M_start, 194s 1515: _M_get_Tp_allocator()); 194s 1515: } 194s 1515: # 650 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: vector(vector&&) noexcept = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: vector(const vector& __x, const __type_identity_t& __a) 194s 1515: : _Base(__x.size(), __a) 194s 1515: { 194s 1515: this->_M_impl._M_finish = 194s 1515: std::__uninitialized_copy_a(__x.begin(), __x.end(), 194s 1515: this->_M_impl._M_start, 194s 1515: _M_get_Tp_allocator()); 194s 1515: } 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: vector(vector&& __rv, const allocator_type& __m, true_type) noexcept 194s 1515: : _Base(__m, std::move(__rv)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: vector(vector&& __rv, const allocator_type& __m, false_type) 194s 1515: : _Base(__m) 194s 1515: { 194s 1515: if (__rv.get_allocator() == __m) 194s 1515: this->_M_impl._M_swap_data(__rv._M_impl); 194s 1515: else if (!__rv.empty()) 194s 1515: { 194s 1515: this->_M_create_storage(__rv.size()); 194s 1515: this->_M_impl._M_finish = 194s 1515: std::__uninitialized_move_a(__rv.begin(), __rv.end(), 194s 1515: this->_M_impl._M_start, 194s 1515: _M_get_Tp_allocator()); 194s 1515: __rv.clear(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: vector(vector&& __rv, const __type_identity_t& __m) 194s 1515: noexcept( noexcept( 194s 1515: vector(std::declval(), std::declval(), 194s 1515: std::declval())) ) 194s 1515: : vector(std::move(__rv), __m, typename _Alloc_traits::is_always_equal{}) 194s 1515: { } 194s 1515: # 707 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: vector(initializer_list __l, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _Base(__a) 194s 1515: { 194s 1515: _M_range_initialize_n(__l.begin(), __l.end(), __l.size()); 194s 1515: } 194s 1515: # 733 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: template> 194s 1515: 194s 1515: vector(_InputIterator __first, _InputIterator __last, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _Base(__a) 194s 1515: { 194s 1515: # 751 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: _M_range_initialize(__first, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: } 194s 1515: # 799 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: ~vector() noexcept 194s 1515: { 194s 1515: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: ; 194s 1515: } 194s 1515: # 816 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: vector& 194s 1515: operator=(const vector& __x); 194s 1515: # 831 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: vector& 194s 1515: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) 194s 1515: { 194s 1515: constexpr bool __move_storage = 194s 1515: _Alloc_traits::_S_propagate_on_move_assign() 194s 1515: || _Alloc_traits::_S_always_equal(); 194s 1515: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); 194s 1515: return *this; 194s 1515: } 194s 1515: # 853 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: vector& 194s 1515: operator=(initializer_list __l) 194s 1515: { 194s 1515: this->_M_assign_aux(__l.begin(), __l.end(), 194s 1515: random_access_iterator_tag()); 194s 1515: return *this; 194s 1515: } 194s 1515: # 873 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: assign(size_type __n, const value_type& __val) 194s 1515: { _M_fill_assign(__n, __val); } 194s 1515: # 891 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: template> 194s 1515: 194s 1515: void 194s 1515: assign(_InputIterator __first, _InputIterator __last) 194s 1515: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 194s 1515: # 920 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: assign(initializer_list __l) 194s 1515: { 194s 1515: this->_M_assign_aux(__l.begin(), __l.end(), 194s 1515: random_access_iterator_tag()); 194s 1515: } 194s 1515: # 988 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: using _Base::get_allocator; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: iterator 194s 1515: begin() noexcept 194s 1515: { return iterator(this->_M_impl._M_start); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: begin() const noexcept 194s 1515: { return const_iterator(this->_M_impl._M_start); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: iterator 194s 1515: end() noexcept 194s 1515: { return iterator(this->_M_impl._M_finish); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: end() const noexcept 194s 1515: { return const_iterator(this->_M_impl._M_finish); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reverse_iterator 194s 1515: rbegin() noexcept 194s 1515: { return reverse_iterator(end()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: rbegin() const noexcept 194s 1515: { return const_reverse_iterator(end()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reverse_iterator 194s 1515: rend() noexcept 194s 1515: { return reverse_iterator(begin()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: rend() const noexcept 194s 1515: { return const_reverse_iterator(begin()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: cbegin() const noexcept 194s 1515: { return const_iterator(this->_M_impl._M_start); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: cend() const noexcept 194s 1515: { return const_iterator(this->_M_impl._M_finish); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: crbegin() const noexcept 194s 1515: { return const_reverse_iterator(end()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: crend() const noexcept 194s 1515: { return const_reverse_iterator(begin()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { 194s 1515: ptrdiff_t __dif = this->_M_impl._M_finish - this->_M_impl._M_start; 194s 1515: if (__dif < 0) 194s 1515: __builtin_unreachable (); 194s 1515: return size_type(__dif); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { return _S_max_size(_M_get_Tp_allocator()); } 194s 1515: # 1141 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: resize(size_type __new_size) 194s 1515: { 194s 1515: if (__new_size > size()) 194s 1515: _M_default_append(__new_size - size()); 194s 1515: else if (__new_size < size()) 194s 1515: _M_erase_at_end(this->_M_impl._M_start + __new_size); 194s 1515: } 194s 1515: # 1162 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: resize(size_type __new_size, const value_type& __x) 194s 1515: { 194s 1515: if (__new_size > size()) 194s 1515: _M_fill_insert(end(), __new_size - size(), __x); 194s 1515: else if (__new_size < size()) 194s 1515: _M_erase_at_end(this->_M_impl._M_start + __new_size); 194s 1515: } 194s 1515: # 1196 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: shrink_to_fit() 194s 1515: { _M_shrink_to_fit(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: capacity() const noexcept 194s 1515: { 194s 1515: ptrdiff_t __dif = this->_M_impl._M_end_of_storage 194s 1515: - this->_M_impl._M_start; 194s 1515: if (__dif < 0) 194s 1515: __builtin_unreachable (); 194s 1515: return size_type(__dif); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: empty() const noexcept 194s 1515: { return begin() == end(); } 194s 1515: # 1243 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: reserve(size_type __n); 194s 1515: # 1259 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: operator[](size_type __n) noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return *(this->_M_impl._M_start + __n); 194s 1515: } 194s 1515: # 1278 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: operator[](size_type __n) const noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return *(this->_M_impl._M_start + __n); 194s 1515: } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_range_check(size_type __n) const 194s 1515: { 194s 1515: if (__n >= this->size()) 194s 1515: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 194s 1515: 194s 1515: , 194s 1515: __n, this->size()); 194s 1515: } 194s 1515: 194s 1515: public: 194s 1515: # 1311 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: at(size_type __n) 194s 1515: { 194s 1515: _M_range_check(__n); 194s 1515: return (*this)[__n]; 194s 1515: } 194s 1515: # 1330 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: at(size_type __n) const 194s 1515: { 194s 1515: _M_range_check(__n); 194s 1515: return (*this)[__n]; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: front() noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return *begin(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: front() const noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return *begin(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: back() noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return *(end() - 1); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: back() const noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return *(end() - 1); 194s 1515: } 194s 1515: # 1393 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: _Tp* 194s 1515: data() noexcept 194s 1515: { return _M_data_ptr(this->_M_impl._M_start); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const _Tp* 194s 1515: data() const noexcept 194s 1515: { return _M_data_ptr(this->_M_impl._M_start); } 194s 1515: # 1414 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: push_back(const value_type& __x) 194s 1515: { 194s 1515: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 194s 1515: { 194s 1515: ; 194s 1515: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 194s 1515: __x); 194s 1515: ++this->_M_impl._M_finish; 194s 1515: ; 194s 1515: } 194s 1515: else 194s 1515: _M_realloc_append(__x); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: push_back(value_type&& __x) 194s 1515: { emplace_back(std::move(__x)); } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: 194s 1515: emplace_back(_Args&&... __args); 194s 1515: # 1455 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: pop_back() noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: --this->_M_impl._M_finish; 194s 1515: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 194s 1515: ; 194s 1515: } 194s 1515: # 1478 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: template 194s 1515: 194s 1515: iterator 194s 1515: emplace(const_iterator __position, _Args&&... __args) 194s 1515: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); } 194s 1515: # 1495 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, const value_type& __x); 194s 1515: # 1526 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, value_type&& __x) 194s 1515: { return _M_insert_rval(__position, std::move(__x)); } 194s 1515: # 1544 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, initializer_list __l) 194s 1515: { 194s 1515: auto __offset = __position - cbegin(); 194s 1515: _M_range_insert(begin() + __offset, __l.begin(), __l.end(), 194s 1515: std::random_access_iterator_tag()); 194s 1515: return begin() + __offset; 194s 1515: } 194s 1515: # 1570 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, size_type __n, const value_type& __x) 194s 1515: { 194s 1515: difference_type __offset = __position - cbegin(); 194s 1515: _M_fill_insert(begin() + __offset, __n, __x); 194s 1515: return begin() + __offset; 194s 1515: } 194s 1515: # 1613 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: template> 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, _InputIterator __first, 194s 1515: _InputIterator __last) 194s 1515: { 194s 1515: difference_type __offset = __position - cbegin(); 194s 1515: _M_range_insert(begin() + __offset, __first, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: return begin() + __offset; 194s 1515: } 194s 1515: # 1789 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: 194s 1515: erase(const_iterator __position) 194s 1515: { return _M_erase(begin() + (__position - cbegin())); } 194s 1515: # 1817 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: 194s 1515: erase(const_iterator __first, const_iterator __last) 194s 1515: { 194s 1515: const auto __beg = begin(); 194s 1515: const auto __cbeg = cbegin(); 194s 1515: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); 194s 1515: } 194s 1515: # 1842 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: swap(vector& __x) noexcept 194s 1515: { 194s 1515: 194s 1515: do { if (std::__is_constant_evaluated() && !bool(_Alloc_traits::propagate_on_container_swap::value || _M_get_Tp_allocator() == __x._M_get_Tp_allocator())) std::__glibcxx_assert_fail(); } while (false) 194s 1515: ; 194s 1515: 194s 1515: this->_M_impl._M_swap_data(__x._M_impl); 194s 1515: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), 194s 1515: __x._M_get_Tp_allocator()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { _M_erase_at_end(this->_M_impl._M_start); } 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: struct _Guard_alloc 194s 1515: { 194s 1515: pointer _M_storage; 194s 1515: size_type _M_len; 194s 1515: _Base& _M_vect; 194s 1515: 194s 1515: 194s 1515: _Guard_alloc(pointer __s, size_type __l, _Base& __vect) 194s 1515: : _M_storage(__s), _M_len(__l), _M_vect(__vect) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: ~_Guard_alloc() 194s 1515: { 194s 1515: if (_M_storage) 194s 1515: _M_vect._M_deallocate(_M_storage, _M_len); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: pointer 194s 1515: _M_release() 194s 1515: { 194s 1515: pointer __res = _M_storage; 194s 1515: _M_storage = pointer(); 194s 1515: return __res; 194s 1515: } 194s 1515: 194s 1515: private: 194s 1515: _Guard_alloc(const _Guard_alloc&); 194s 1515: }; 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pointer 194s 1515: _M_allocate_and_copy(size_type __n, 194s 1515: _ForwardIterator __first, _ForwardIterator __last) 194s 1515: { 194s 1515: _Guard_alloc __guard(this->_M_allocate(__n), __n, *this); 194s 1515: std::__uninitialized_copy_a 194s 1515: (__first, __last, __guard._M_storage, _M_get_Tp_allocator()); 194s 1515: return __guard._M_release(); 194s 1515: } 194s 1515: # 1948 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_range_initialize(_InputIterator __first, _InputIterator __last, 194s 1515: std::input_iterator_tag) 194s 1515: { 194s 1515: try { 194s 1515: for (; __first != __last; ++__first) 194s 1515: 194s 1515: emplace_back(*__first); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } catch(...) { 194s 1515: clear(); 194s 1515: throw; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: std::forward_iterator_tag) 194s 1515: { 194s 1515: _M_range_initialize_n(__first, __last, 194s 1515: std::distance(__first, __last)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_range_initialize_n(_Iterator __first, _Sentinel __last, 194s 1515: size_type __n) 194s 1515: { 194s 1515: pointer __start = 194s 1515: this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator())); 194s 1515: this->_M_impl._M_start = this->_M_impl._M_finish = __start; 194s 1515: this->_M_impl._M_end_of_storage = __start + __n; 194s 1515: this->_M_impl._M_finish 194s 1515: = std::__uninitialized_copy_a(std::move(__first), __last, 194s 1515: __start, _M_get_Tp_allocator()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_fill_initialize(size_type __n, const value_type& __value) 194s 1515: { 194s 1515: this->_M_impl._M_finish = 194s 1515: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, 194s 1515: _M_get_Tp_allocator()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_default_initialize(size_type __n) 194s 1515: { 194s 1515: this->_M_impl._M_finish = 194s 1515: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, 194s 1515: _M_get_Tp_allocator()); 194s 1515: } 194s 1515: # 2023 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) 194s 1515: { _M_fill_assign(__n, __val); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, 194s 1515: __false_type) 194s 1515: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_assign_aux(_InputIterator __first, _InputIterator __last, 194s 1515: std::input_iterator_tag); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: std::forward_iterator_tag); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_fill_assign(size_type __n, const value_type& __val); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, 194s 1515: __true_type) 194s 1515: { _M_fill_insert(__pos, __n, __val); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_insert_dispatch(iterator __pos, _InputIterator __first, 194s 1515: _InputIterator __last, __false_type) 194s 1515: { 194s 1515: _M_range_insert(__pos, __first, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_range_insert(iterator __pos, _InputIterator __first, 194s 1515: _InputIterator __last, std::input_iterator_tag); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_range_insert(iterator __pos, _ForwardIterator __first, 194s 1515: _ForwardIterator __last, std::forward_iterator_tag); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_default_append(size_type __n); 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: _M_shrink_to_fit(); 194s 1515: # 2125 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: struct _Temporary_value 194s 1515: { 194s 1515: template 194s 1515: explicit 194s 1515: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec) 194s 1515: { 194s 1515: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(), 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: ~_Temporary_value() 194s 1515: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } 194s 1515: 194s 1515: value_type& 194s 1515: _M_val() noexcept { return _M_storage._M_val; } 194s 1515: 194s 1515: private: 194s 1515: _Tp* 194s 1515: _M_ptr() noexcept { return std::__addressof(_M_storage._M_val); } 194s 1515: 194s 1515: union _Storage 194s 1515: { 194s 1515: constexpr _Storage() : _M_byte() { } 194s 1515: ~_Storage() { } 194s 1515: _Storage& operator=(const _Storage&) = delete; 194s 1515: unsigned char _M_byte; 194s 1515: _Tp _M_val; 194s 1515: }; 194s 1515: 194s 1515: vector* _M_this; 194s 1515: _Storage _M_storage; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_insert_aux(iterator __position, _Arg&& __arg); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_realloc_insert(iterator __position, _Args&&... __args); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_realloc_append(_Args&&... __args); 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: _M_insert_rval(const_iterator __position, value_type&& __v); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: iterator 194s 1515: _M_emplace_aux(const_iterator __position, _Args&&... __args); 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: _M_emplace_aux(const_iterator __position, value_type&& __v) 194s 1515: { return _M_insert_rval(__position, std::move(__v)); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: _M_check_len(size_type __n, const char* __s) const 194s 1515: { 194s 1515: if (max_size() - size() < __n) 194s 1515: __throw_length_error((__s)); 194s 1515: 194s 1515: const size_type __len = size() + (std::max)(size(), __n); 194s 1515: return (__len < size() || __len > max_size()) ? max_size() : __len; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: static size_type 194s 1515: _S_check_init_len(size_type __n, const allocator_type& __a) 194s 1515: { 194s 1515: if (__n > _S_max_size(_Tp_alloc_type(__a))) 194s 1515: __throw_length_error( 194s 1515: ("cannot create std::vector larger than max_size()")); 194s 1515: return __n; 194s 1515: } 194s 1515: 194s 1515: static size_type 194s 1515: _S_max_size(const _Tp_alloc_type& __a) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: const size_t __diffmax 194s 1515: = __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 194s 1515: const size_t __allocmax = _Alloc_traits::max_size(__a); 194s 1515: return (std::min)(__diffmax, __allocmax); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_erase_at_end(pointer __pos) noexcept 194s 1515: { 194s 1515: if (size_type __n = this->_M_impl._M_finish - __pos) 194s 1515: { 194s 1515: std::_Destroy(__pos, this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: this->_M_impl._M_finish = __pos; 194s 1515: ; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: _M_erase(iterator __position); 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: _M_erase(iterator __first, iterator __last); 194s 1515: 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_move_assign(vector&& __x, true_type) noexcept 194s 1515: { 194s 1515: vector __tmp(get_allocator()); 194s 1515: this->_M_impl._M_swap_data(__x._M_impl); 194s 1515: __tmp._M_impl._M_swap_data(__x._M_impl); 194s 1515: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_move_assign(vector&& __x, false_type) 194s 1515: { 194s 1515: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) 194s 1515: _M_move_assign(std::move(__x), true_type()); 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: this->_M_assign_aux(std::make_move_iterator(__x.begin()), 194s 1515: std::make_move_iterator(__x.end()), 194s 1515: std::random_access_iterator_tag()); 194s 1515: __x.clear(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Up* 194s 1515: _M_data_ptr(_Up* __ptr) const noexcept 194s 1515: { return __ptr; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename std::pointer_traits<_Ptr>::element_type* 194s 1515: _M_data_ptr(_Ptr __ptr) const 194s 1515: { return empty() ? nullptr : std::__to_address(__ptr); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: # 2335 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline bool 194s 1515: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 194s 1515: { return (__x.size() == __y.size() 194s 1515: && std::equal(__x.begin(), __x.end(), __y.begin())); } 194s 1515: # 2375 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] inline bool 194s 1515: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 194s 1515: { return std::lexicographical_compare(__x.begin(), __x.end(), 194s 1515: __y.begin(), __y.end()); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] inline bool 194s 1515: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] inline bool 194s 1515: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 194s 1515: { return __y < __x; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] inline bool 194s 1515: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 194s 1515: { return !(__y < __x); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] inline bool 194s 1515: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 194s 1515: { return !(__x < __y); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline void 194s 1515: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) 194s 1515: noexcept(noexcept(__x.swap(__y))) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: # 2430 "/usr/include/c++/15/bits/stl_vector.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 69 "/usr/include/c++/15/vector" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_bvector.h" 1 3 4 194s 1515: # 68 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: typedef unsigned long _Bit_type; 194s 1515: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; 194s 1515: 194s 1515: __attribute__((__nonnull__)) 194s 1515: 194s 1515: void 194s 1515: __fill_bvector_n(_Bit_type*, size_t, bool) noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct _Bit_reference 194s 1515: { 194s 1515: private: 194s 1515: template friend class vector; 194s 1515: friend struct _Bit_iterator; 194s 1515: friend struct _Bit_const_iterator; 194s 1515: 194s 1515: 194s 1515: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { } 194s 1515: 194s 1515: _Bit_type * _M_p; 194s 1515: _Bit_type _M_mask; 194s 1515: 194s 1515: 194s 1515: _Bit_reference(_Bit_type * __x, _Bit_type __y) 194s 1515: : _M_p(__x), _M_mask(__y) { } 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: _Bit_reference(const _Bit_reference&) = default; 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: operator bool() const noexcept 194s 1515: { return !!(*_M_p & _M_mask); } 194s 1515: 194s 1515: 194s 1515: _Bit_reference& 194s 1515: operator=(bool __x) noexcept 194s 1515: { 194s 1515: if (__x) 194s 1515: *_M_p |= _M_mask; 194s 1515: else 194s 1515: *_M_p &= ~_M_mask; 194s 1515: return *this; 194s 1515: } 194s 1515: # 131 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: 194s 1515: _Bit_reference& 194s 1515: operator=(const _Bit_reference& __x) noexcept 194s 1515: { return *this = bool(__x); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: operator==(const _Bit_reference& __x) const 194s 1515: { return bool(*this) == bool(__x); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: operator<(const _Bit_reference& __x) const 194s 1515: { return !bool(*this) && bool(__x); } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: flip() noexcept 194s 1515: { *_M_p ^= _M_mask; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: friend void 194s 1515: swap(_Bit_reference __x, _Bit_reference __y) noexcept 194s 1515: { 194s 1515: bool __tmp = __x; 194s 1515: __x = __y; 194s 1515: __y = __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: friend void 194s 1515: swap(_Bit_reference __x, bool& __y) noexcept 194s 1515: { 194s 1515: bool __tmp = __x; 194s 1515: __x = __y; 194s 1515: __y = __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: friend void 194s 1515: swap(bool& __x, _Bit_reference __y) noexcept 194s 1515: { 194s 1515: bool __tmp = __x; 194s 1515: __x = __y; 194s 1515: __y = __tmp; 194s 1515: } 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: struct _Bit_iterator_base 194s 1515: : public std::iterator 194s 1515: { 194s 1515: _Bit_type * _M_p; 194s 1515: unsigned int _M_offset; 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) 194s 1515: void 194s 1515: _M_assume_normalized() const 194s 1515: { 194s 1515: 194s 1515: unsigned int __ofst = _M_offset; 194s 1515: __attribute__ ((__assume__ (__ofst < unsigned(_S_word_bit)))); 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: _Bit_iterator_base(_Bit_type * __x, unsigned int __y) 194s 1515: : _M_p(__x), _M_offset(__y) { } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_bump_up() 194s 1515: { 194s 1515: _M_assume_normalized(); 194s 1515: if (_M_offset++ == int(_S_word_bit) - 1) 194s 1515: { 194s 1515: _M_offset = 0; 194s 1515: ++_M_p; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_bump_down() 194s 1515: { 194s 1515: _M_assume_normalized(); 194s 1515: if (_M_offset-- == 0) 194s 1515: { 194s 1515: _M_offset = int(_S_word_bit) - 1; 194s 1515: --_M_p; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_incr(ptrdiff_t __i) 194s 1515: { 194s 1515: _M_assume_normalized(); 194s 1515: difference_type __n = __i + _M_offset; 194s 1515: _M_p += __n / int(_S_word_bit); 194s 1515: __n = __n % int(_S_word_bit); 194s 1515: if (__n < 0) 194s 1515: { 194s 1515: __n += int(_S_word_bit); 194s 1515: --_M_p; 194s 1515: } 194s 1515: _M_offset = static_cast(__n); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend bool 194s 1515: operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 194s 1515: { 194s 1515: __x._M_assume_normalized(); 194s 1515: __y._M_assume_normalized(); 194s 1515: return __x._M_p == __y._M_p && __x._M_offset == __y._M_offset; 194s 1515: } 194s 1515: # 266 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: friend bool 194s 1515: operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 194s 1515: { 194s 1515: __x._M_assume_normalized(); 194s 1515: __y._M_assume_normalized(); 194s 1515: return __x._M_p < __y._M_p 194s 1515: || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend bool 194s 1515: operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend bool 194s 1515: operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 194s 1515: { return __y < __x; } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend bool 194s 1515: operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 194s 1515: { return !(__y < __x); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend bool 194s 1515: operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 194s 1515: { return !(__x < __y); } 194s 1515: 194s 1515: 194s 1515: friend ptrdiff_t 194s 1515: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 194s 1515: { 194s 1515: __x._M_assume_normalized(); 194s 1515: __y._M_assume_normalized(); 194s 1515: return (int(_S_word_bit) * (__x._M_p - __y._M_p) 194s 1515: + __x._M_offset - __y._M_offset); 194s 1515: } 194s 1515: }; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: struct _Bit_iterator : public _Bit_iterator_base 194s 1515: { 194s 1515: typedef _Bit_reference reference; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _Bit_reference* pointer; 194s 1515: 194s 1515: typedef _Bit_iterator iterator; 194s 1515: 194s 1515: 194s 1515: _Bit_iterator() : _Bit_iterator_base(0, 0) { } 194s 1515: 194s 1515: 194s 1515: _Bit_iterator(_Bit_type * __x, unsigned int __y) 194s 1515: : _Bit_iterator_base(__x, __y) { } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: _M_const_cast() const 194s 1515: { return *this; } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: operator*() const 194s 1515: { 194s 1515: _M_assume_normalized(); 194s 1515: return reference(_M_p, 1UL << _M_offset); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: iterator& 194s 1515: operator++() 194s 1515: { 194s 1515: _M_bump_up(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: operator++(int) 194s 1515: { 194s 1515: iterator __tmp = *this; 194s 1515: _M_bump_up(); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: iterator& 194s 1515: operator--() 194s 1515: { 194s 1515: _M_bump_down(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: operator--(int) 194s 1515: { 194s 1515: iterator __tmp = *this; 194s 1515: _M_bump_down(); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: iterator& 194s 1515: operator+=(difference_type __i) 194s 1515: { 194s 1515: _M_incr(__i); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: iterator& 194s 1515: operator-=(difference_type __i) 194s 1515: { 194s 1515: *this += -__i; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: operator[](difference_type __i) const 194s 1515: { return *(*this + __i); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend iterator 194s 1515: operator+(const iterator& __x, difference_type __n) 194s 1515: { 194s 1515: iterator __tmp = __x; 194s 1515: __tmp += __n; 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend iterator 194s 1515: operator+(difference_type __n, const iterator& __x) 194s 1515: { return __x + __n; } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend iterator 194s 1515: operator-(const iterator& __x, difference_type __n) 194s 1515: { 194s 1515: iterator __tmp = __x; 194s 1515: __tmp -= __n; 194s 1515: return __tmp; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: struct _Bit_const_iterator : public _Bit_iterator_base 194s 1515: { 194s 1515: typedef bool reference; 194s 1515: typedef bool const_reference; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef const bool* pointer; 194s 1515: 194s 1515: typedef _Bit_const_iterator const_iterator; 194s 1515: 194s 1515: 194s 1515: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } 194s 1515: 194s 1515: 194s 1515: _Bit_const_iterator(_Bit_type * __x, unsigned int __y) 194s 1515: : _Bit_iterator_base(__x, __y) { } 194s 1515: 194s 1515: 194s 1515: _Bit_const_iterator(const _Bit_iterator& __x) 194s 1515: : _Bit_iterator_base(__x._M_p, __x._M_offset) { } 194s 1515: 194s 1515: 194s 1515: _Bit_iterator 194s 1515: _M_const_cast() const 194s 1515: { return _Bit_iterator(_M_p, _M_offset); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: operator*() const 194s 1515: { 194s 1515: _M_assume_normalized(); 194s 1515: return _Bit_reference(_M_p, 1UL << _M_offset); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const_iterator& 194s 1515: operator++() 194s 1515: { 194s 1515: _M_bump_up(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: operator++(int) 194s 1515: { 194s 1515: const_iterator __tmp = *this; 194s 1515: _M_bump_up(); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const_iterator& 194s 1515: operator--() 194s 1515: { 194s 1515: _M_bump_down(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: operator--(int) 194s 1515: { 194s 1515: const_iterator __tmp = *this; 194s 1515: _M_bump_down(); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const_iterator& 194s 1515: operator+=(difference_type __i) 194s 1515: { 194s 1515: _M_incr(__i); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const_iterator& 194s 1515: operator-=(difference_type __i) 194s 1515: { 194s 1515: *this += -__i; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: operator[](difference_type __i) const 194s 1515: { return *(*this + __i); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend const_iterator 194s 1515: operator+(const const_iterator& __x, difference_type __n) 194s 1515: { 194s 1515: const_iterator __tmp = __x; 194s 1515: __tmp += __n; 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend const_iterator 194s 1515: operator-(const const_iterator& __x, difference_type __n) 194s 1515: { 194s 1515: const_iterator __tmp = __x; 194s 1515: __tmp -= __n; 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend const_iterator 194s 1515: operator+(difference_type __n, const const_iterator& __x) 194s 1515: { return __x + __n; } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Bvector_base 194s 1515: { 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 194s 1515: rebind<_Bit_type>::other _Bit_alloc_type; 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> 194s 1515: _Bit_alloc_traits; 194s 1515: typedef typename _Bit_alloc_traits::pointer _Bit_pointer; 194s 1515: 194s 1515: struct _Bvector_impl_data 194s 1515: { 194s 1515: 194s 1515: _Bit_iterator _M_start; 194s 1515: # 553 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: _Bit_iterator _M_finish; 194s 1515: _Bit_pointer _M_end_of_storage; 194s 1515: 194s 1515: 194s 1515: _Bvector_impl_data() noexcept 194s 1515: : _M_start(), _M_finish(), _M_end_of_storage() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: _Bvector_impl_data(const _Bvector_impl_data&) = default; 194s 1515: 194s 1515: _Bvector_impl_data& 194s 1515: operator=(const _Bvector_impl_data&) = default; 194s 1515: 194s 1515: 194s 1515: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept 194s 1515: : _Bvector_impl_data(__x) 194s 1515: { __x._M_reset(); } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_move_data(_Bvector_impl_data&& __x) noexcept 194s 1515: { 194s 1515: *this = __x; 194s 1515: __x._M_reset(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_reset() noexcept 194s 1515: { *this = _Bvector_impl_data(); } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_swap_data(_Bvector_impl_data& __x) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: std::swap(*this, __x); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: struct _Bvector_impl 194s 1515: : public _Bit_alloc_type, public _Bvector_impl_data 194s 1515: { 194s 1515: 194s 1515: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: : _Bit_alloc_type() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: _Bvector_impl(const _Bit_alloc_type& __a) noexcept 194s 1515: : _Bit_alloc_type(__a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Bvector_impl(_Bvector_impl&& __x) noexcept 194s 1515: : _Bit_alloc_type(std::move(__x)), _Bvector_impl_data(std::move(__x)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: _Bvector_impl(_Bit_alloc_type&& __a, _Bvector_impl&& __x) noexcept 194s 1515: : _Bit_alloc_type(std::move(__a)), _Bvector_impl_data(std::move(__x)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Bit_type* 194s 1515: _M_end_addr() const noexcept 194s 1515: { 194s 1515: if (this->_M_end_of_storage) 194s 1515: return std::__addressof(this->_M_end_of_storage[-1]) + 1; 194s 1515: return 0; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: public: 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: 194s 1515: _Bit_alloc_type& 194s 1515: _M_get_Bit_allocator() noexcept 194s 1515: { return this->_M_impl; } 194s 1515: 194s 1515: 194s 1515: const _Bit_alloc_type& 194s 1515: _M_get_Bit_allocator() const noexcept 194s 1515: { return this->_M_impl; } 194s 1515: 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return allocator_type(_M_get_Bit_allocator()); } 194s 1515: 194s 1515: 194s 1515: _Bvector_base() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Bvector_base(const allocator_type& __a) 194s 1515: : _M_impl(_Bit_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: _Bvector_base(_Bvector_base&&) = default; 194s 1515: 194s 1515: 194s 1515: _Bvector_base(_Bvector_base&& __x, const allocator_type& __a) noexcept 194s 1515: : _M_impl(_Bit_alloc_type(__a), std::move(__x._M_impl)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: ~_Bvector_base() 194s 1515: { this->_M_deallocate(); } 194s 1515: 194s 1515: protected: 194s 1515: _Bvector_impl _M_impl; 194s 1515: 194s 1515: 194s 1515: _Bit_pointer 194s 1515: _M_allocate(size_t __n) 194s 1515: { 194s 1515: _Bit_pointer __p = _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); 194s 1515: # 694 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: return __p; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_deallocate() 194s 1515: { 194s 1515: if (_M_impl._M_start._M_p) 194s 1515: { 194s 1515: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; 194s 1515: _Bit_alloc_traits::deallocate(_M_impl, 194s 1515: _M_impl._M_end_of_storage - __n, 194s 1515: __n); 194s 1515: _M_impl._M_reset(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_move_data(_Bvector_base&& __x) noexcept 194s 1515: { _M_impl._M_move_data(std::move(__x._M_impl)); } 194s 1515: 194s 1515: 194s 1515: constexpr 194s 1515: static size_t 194s 1515: _S_nword(size_t __n) 194s 1515: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } 194s 1515: }; 194s 1515: # 745 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: template 194s 1515: class vector : protected _Bvector_base<_Alloc> 194s 1515: { 194s 1515: typedef _Bvector_base<_Alloc> _Base; 194s 1515: typedef typename _Base::_Bit_pointer _Bit_pointer; 194s 1515: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; 194s 1515: 194s 1515: 194s 1515: friend struct std::hash; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: typedef bool value_type; 194s 1515: typedef size_t size_type; 194s 1515: typedef ptrdiff_t difference_type; 194s 1515: typedef _Bit_reference reference; 194s 1515: typedef bool const_reference; 194s 1515: typedef _Bit_reference* pointer; 194s 1515: typedef const bool* const_pointer; 194s 1515: typedef _Bit_iterator iterator; 194s 1515: typedef _Bit_const_iterator const_iterator; 194s 1515: typedef std::reverse_iterator const_reverse_iterator; 194s 1515: typedef std::reverse_iterator reverse_iterator; 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const 194s 1515: { return _Base::get_allocator(); } 194s 1515: 194s 1515: protected: 194s 1515: using _Base::_M_allocate; 194s 1515: using _Base::_M_deallocate; 194s 1515: using _Base::_S_nword; 194s 1515: using _Base::_M_get_Bit_allocator; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: vector() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: vector(const allocator_type& __a) noexcept 194s 1515: : _Base(__a) { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: vector(size_type __n, const allocator_type& __a = allocator_type()) 194s 1515: : vector(__n, false, __a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: vector(size_type __n, const bool& __value, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: : _Base(__a) 194s 1515: { 194s 1515: _M_initialize(__n); 194s 1515: _M_initialize_value(__value); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: vector(const vector& __x) 194s 1515: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) 194s 1515: { 194s 1515: const_iterator __xbegin = __x.begin(), __xend = __x.end(); 194s 1515: _M_initialize(__x.size()); 194s 1515: _M_copy_aligned(__xbegin, __xend, begin()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: vector(vector&&) = default; 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: vector(vector&& __x, const allocator_type& __a, true_type) noexcept 194s 1515: : _Base(std::move(__x), __a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: vector(vector&& __x, const allocator_type& __a, false_type) 194s 1515: : _Base(__a) 194s 1515: { 194s 1515: if (__x.get_allocator() == __a) 194s 1515: this->_M_move_data(std::move(__x)); 194s 1515: else 194s 1515: { 194s 1515: _M_initialize(__x.size()); 194s 1515: _M_copy_aligned(__x.begin(), __x.end(), begin()); 194s 1515: __x.clear(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: vector(vector&& __x, const __type_identity_t& __a) 194s 1515: noexcept(_Bit_alloc_traits::_S_always_equal()) 194s 1515: : vector(std::move(__x), __a, 194s 1515: typename _Bit_alloc_traits::is_always_equal{}) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: vector(const vector& __x, const __type_identity_t& __a) 194s 1515: : _Base(__a) 194s 1515: { 194s 1515: _M_initialize(__x.size()); 194s 1515: _M_copy_aligned(__x.begin(), __x.end(), begin()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: vector(initializer_list __l, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _Base(__a) 194s 1515: { 194s 1515: _M_initialize_range(__l.begin(), __l.end(), 194s 1515: random_access_iterator_tag()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: 194s 1515: vector(_InputIterator __first, _InputIterator __last, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _Base(__a) 194s 1515: { 194s 1515: _M_initialize_range(__first, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: } 194s 1515: # 925 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: 194s 1515: ~vector() noexcept { } 194s 1515: 194s 1515: 194s 1515: vector& 194s 1515: operator=(const vector& __x) 194s 1515: { 194s 1515: if (&__x == this) 194s 1515: return *this; 194s 1515: 194s 1515: if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) 194s 1515: { 194s 1515: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) 194s 1515: { 194s 1515: this->_M_deallocate(); 194s 1515: std::__alloc_on_copy(_M_get_Bit_allocator(), 194s 1515: __x._M_get_Bit_allocator()); 194s 1515: _M_initialize(__x.size()); 194s 1515: } 194s 1515: else 194s 1515: std::__alloc_on_copy(_M_get_Bit_allocator(), 194s 1515: __x._M_get_Bit_allocator()); 194s 1515: } 194s 1515: 194s 1515: if (__x.size() > capacity()) 194s 1515: { 194s 1515: this->_M_deallocate(); 194s 1515: _M_initialize(__x.size()); 194s 1515: } 194s 1515: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 194s 1515: begin()); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: vector& 194s 1515: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) 194s 1515: { 194s 1515: if (_Bit_alloc_traits::_S_propagate_on_move_assign() 194s 1515: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) 194s 1515: { 194s 1515: this->_M_deallocate(); 194s 1515: this->_M_move_data(std::move(__x)); 194s 1515: std::__alloc_on_move(_M_get_Bit_allocator(), 194s 1515: __x._M_get_Bit_allocator()); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: if (__x.size() > capacity()) 194s 1515: { 194s 1515: this->_M_deallocate(); 194s 1515: _M_initialize(__x.size()); 194s 1515: } 194s 1515: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 194s 1515: begin()); 194s 1515: __x.clear(); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: vector& 194s 1515: operator=(initializer_list __l) 194s 1515: { 194s 1515: this->assign(__l.begin(), __l.end()); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: assign(size_type __n, const bool& __x) 194s 1515: { _M_fill_assign(__n, __x); } 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: 194s 1515: void 194s 1515: assign(_InputIterator __first, _InputIterator __last) 194s 1515: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 194s 1515: # 1023 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: assign(initializer_list __l) 194s 1515: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } 194s 1515: # 1063 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: [[__nodiscard__]] 194s 1515: iterator 194s 1515: begin() noexcept 194s 1515: { return iterator(this->_M_impl._M_start._M_p, 0); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: begin() const noexcept 194s 1515: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: iterator 194s 1515: end() noexcept 194s 1515: { return this->_M_impl._M_finish; } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: end() const noexcept 194s 1515: { return this->_M_impl._M_finish; } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reverse_iterator 194s 1515: rbegin() noexcept 194s 1515: { return reverse_iterator(end()); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: rbegin() const noexcept 194s 1515: { return const_reverse_iterator(end()); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reverse_iterator 194s 1515: rend() noexcept 194s 1515: { return reverse_iterator(begin()); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: rend() const noexcept 194s 1515: { return const_reverse_iterator(begin()); } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: cbegin() const noexcept 194s 1515: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_iterator 194s 1515: cend() const noexcept 194s 1515: { return this->_M_impl._M_finish; } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: crbegin() const noexcept 194s 1515: { return const_reverse_iterator(end()); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reverse_iterator 194s 1515: crend() const noexcept 194s 1515: { return const_reverse_iterator(begin()); } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { return size_type(end() - begin()); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { 194s 1515: const size_type __isize = 194s 1515: __gnu_cxx::__numeric_traits::__max 194s 1515: - int(_S_word_bit) + 1; 194s 1515: const size_type __asize 194s 1515: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); 194s 1515: return (__asize <= __isize / int(_S_word_bit) 194s 1515: ? __asize * int(_S_word_bit) : __isize); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: size_type 194s 1515: capacity() const noexcept 194s 1515: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) 194s 1515: - begin()); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: empty() const noexcept 194s 1515: { return begin() == end(); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: operator[](size_type __n) 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return _Bit_reference (this->_M_impl._M_start._M_p 194s 1515: + __n / int(_S_word_bit), 194s 1515: 1UL << __n % int(_S_word_bit)); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: operator[](size_type __n) const 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return _Bit_reference (this->_M_impl._M_start._M_p 194s 1515: + __n / int(_S_word_bit), 194s 1515: 1UL << __n % int(_S_word_bit)); 194s 1515: } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: void 194s 1515: _M_range_check(size_type __n) const 194s 1515: { 194s 1515: if (__n >= this->size()) 194s 1515: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 194s 1515: 194s 1515: , 194s 1515: __n, this->size()); 194s 1515: } 194s 1515: 194s 1515: public: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: at(size_type __n) 194s 1515: { 194s 1515: _M_range_check(__n); 194s 1515: return (*this)[__n]; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: at(size_type __n) const 194s 1515: { 194s 1515: _M_range_check(__n); 194s 1515: return (*this)[__n]; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: reserve(size_type __n) 194s 1515: { 194s 1515: if (__n > max_size()) 194s 1515: __throw_length_error(("vector::reserve")); 194s 1515: if (capacity() < __n) 194s 1515: _M_reallocate(__n); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: front() 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return *begin(); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: front() const 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return *begin(); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: back() 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return *(end() - 1); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: const_reference 194s 1515: back() const 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: return *(end() - 1); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: push_back(bool __x) 194s 1515: { 194s 1515: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 194s 1515: *this->_M_impl._M_finish++ = __x; 194s 1515: else 194s 1515: _M_insert_aux(end(), __x); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: swap(vector& __x) noexcept 194s 1515: { 194s 1515: 194s 1515: do { if (std::__is_constant_evaluated() && !bool(_Bit_alloc_traits::propagate_on_container_swap::value || _M_get_Bit_allocator() == __x._M_get_Bit_allocator())) std::__glibcxx_assert_fail(); } while (false) 194s 1515: ; 194s 1515: 194s 1515: this->_M_impl._M_swap_data(__x._M_impl); 194s 1515: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), 194s 1515: __x._M_get_Bit_allocator()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: static void 194s 1515: swap(reference __x, reference __y) noexcept 194s 1515: { 194s 1515: bool __tmp = __x; 194s 1515: __x = __y; 194s 1515: __y = __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: 194s 1515: insert(const_iterator __position, const bool& __x) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: const difference_type __n = __position - begin(); 194s 1515: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() 194s 1515: && __position == end()) 194s 1515: *this->_M_impl._M_finish++ = __x; 194s 1515: else 194s 1515: _M_insert_aux(__position._M_const_cast(), __x); 194s 1515: return begin() + __n; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: __attribute__ ((__deprecated__ ("use '" "insert(position, false)" "' instead"))) 194s 1515: iterator 194s 1515: insert(const_iterator __position) 194s 1515: { return this->insert(__position._M_const_cast(), false); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, 194s 1515: _InputIterator __first, _InputIterator __last) 194s 1515: { 194s 1515: difference_type __offset = __position - cbegin(); 194s 1515: _M_insert_range(__position._M_const_cast(), 194s 1515: __first, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: return begin() + __offset; 194s 1515: } 194s 1515: # 1329 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, size_type __n, const bool& __x) 194s 1515: { 194s 1515: difference_type __offset = __position - cbegin(); 194s 1515: _M_fill_insert(__position._M_const_cast(), __n, __x); 194s 1515: return begin() + __offset; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __p, initializer_list __l) 194s 1515: { return this->insert(__p, __l.begin(), __l.end()); } 194s 1515: # 1463 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: pop_back() 194s 1515: { --this->_M_impl._M_finish; } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: 194s 1515: erase(const_iterator __position) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return _M_erase(__position._M_const_cast()); } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: 194s 1515: erase(const_iterator __first, const_iterator __last) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: resize(size_type __new_size, bool __x = bool()) 194s 1515: { 194s 1515: if (__new_size < size()) 194s 1515: _M_erase_at_end(begin() + difference_type(__new_size)); 194s 1515: else 194s 1515: insert(end(), __new_size - size(), __x); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: shrink_to_fit() 194s 1515: { _M_shrink_to_fit(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: flip() noexcept 194s 1515: { 194s 1515: _Bit_type * const __end = this->_M_impl._M_end_addr(); 194s 1515: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) 194s 1515: *__p = ~*__p; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { _M_erase_at_end(begin()); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: 194s 1515: emplace_back(_Args&&... __args) 194s 1515: { 194s 1515: push_back(bool(std::forward<_Args>(__args)...)); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: iterator 194s 1515: emplace(const_iterator __pos, _Args&&... __args) 194s 1515: { return insert(__pos, bool(std::forward<_Args>(__args)...)); } 194s 1515: 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: _M_copy_aligned(const_iterator __first, const_iterator __last, 194s 1515: iterator __result) 194s 1515: { 194s 1515: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); 194s 1515: return std::copy(const_iterator(__last._M_p, 0), __last, 194s 1515: iterator(__q, 0)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_initialize(size_type __n) 194s 1515: { 194s 1515: if (__n) 194s 1515: { 194s 1515: _Bit_pointer __q = this->_M_allocate(__n); 194s 1515: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 194s 1515: iterator __start = iterator(std::__addressof(*__q), 0); 194s 1515: this->_M_impl._M_start = __start; 194s 1515: this->_M_impl._M_finish = __start + difference_type(__n); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_initialize_value(bool __x) noexcept 194s 1515: { 194s 1515: if (_Bit_type* __p = this->_M_impl._M_start._M_p) 194s 1515: __fill_bvector_n(__p, this->_M_impl._M_end_addr() - __p, __x); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_reallocate(size_type __n); 194s 1515: 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: _M_shrink_to_fit(); 194s 1515: # 1603 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_initialize_range(_InputIterator __first, _InputIterator __last, 194s 1515: std::input_iterator_tag) 194s 1515: { 194s 1515: for (; __first != __last; ++__first) 194s 1515: push_back(*__first); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: std::forward_iterator_tag) 194s 1515: { 194s 1515: const size_type __n = std::distance(__first, __last); 194s 1515: _M_initialize(__n); 194s 1515: std::copy(__first, __last, begin()); 194s 1515: } 194s 1515: # 1639 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: _M_fill_assign(size_t __n, bool __x) 194s 1515: { 194s 1515: if (__n > size()) 194s 1515: { 194s 1515: _M_initialize_value(__x); 194s 1515: insert(end(), __n - size(), __x); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: _M_erase_at_end(begin() + __n); 194s 1515: _M_initialize_value(__x); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_assign_aux(_InputIterator __first, _InputIterator __last, 194s 1515: std::input_iterator_tag) 194s 1515: { 194s 1515: iterator __cur = begin(); 194s 1515: for (; __first != __last && __cur != end(); ++__cur, (void)++__first) 194s 1515: *__cur = *__first; 194s 1515: if (__first == __last) 194s 1515: _M_erase_at_end(__cur); 194s 1515: else 194s 1515: insert(end(), __first, __last); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: std::forward_iterator_tag) 194s 1515: { 194s 1515: const size_type __len = std::distance(__first, __last); 194s 1515: if (__len < size()) 194s 1515: _M_erase_at_end(std::copy(__first, __last, begin())); 194s 1515: else 194s 1515: { 194s 1515: _ForwardIterator __mid = __first; 194s 1515: std::advance(__mid, size()); 194s 1515: std::copy(__first, __mid, begin()); 194s 1515: insert(end(), __mid, __last); 194s 1515: } 194s 1515: } 194s 1515: # 1706 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: 194s 1515: void 194s 1515: _M_fill_insert(iterator __position, size_type __n, bool __x); 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_insert_range(iterator __pos, _InputIterator __first, 194s 1515: _InputIterator __last, std::input_iterator_tag) 194s 1515: { 194s 1515: for (; __first != __last; ++__first) 194s 1515: { 194s 1515: __pos = insert(__pos, *__first); 194s 1515: ++__pos; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_insert_range(iterator __position, _ForwardIterator __first, 194s 1515: _ForwardIterator __last, std::forward_iterator_tag); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_insert_aux(iterator __position, bool __x); 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: _M_check_len(size_type __n, const char* __s) const 194s 1515: { 194s 1515: if (max_size() - size() < __n) 194s 1515: __throw_length_error((__s)); 194s 1515: 194s 1515: const size_type __len = size() + std::max(size(), __n); 194s 1515: return (__len < size() || __len > max_size()) ? max_size() : __len; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_erase_at_end(iterator __pos) 194s 1515: { this->_M_impl._M_finish = __pos; } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: _M_erase(iterator __pos); 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: _M_erase(iterator __first, iterator __last); 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void data() = delete; 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline void 194s 1515: __fill_bvector(_Bit_type* __v, unsigned int __first, unsigned int __last, 194s 1515: bool __x) noexcept 194s 1515: { 194s 1515: const _Bit_type __fmask = ~0ul << __first; 194s 1515: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); 194s 1515: const _Bit_type __mask = __fmask & __lmask; 194s 1515: 194s 1515: if (__x) 194s 1515: *__v |= __mask; 194s 1515: else 194s 1515: *__v &= ~__mask; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: __attribute__((__nonnull__)) 194s 1515: 194s 1515: inline void 194s 1515: __fill_bvector_n(_Bit_type* __p, size_t __n, bool __x) noexcept 194s 1515: { 194s 1515: # 1802 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 194s 1515: __builtin_memset(__p, __x ? ~0 : 0, __n * sizeof(_Bit_type)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline void 194s 1515: __fill_a1(std::_Bit_iterator __first, 194s 1515: std::_Bit_iterator __last, const bool& __x) 194s 1515: { 194s 1515: if (__first._M_p != __last._M_p) 194s 1515: { 194s 1515: _Bit_type* __first_p = __first._M_p; 194s 1515: if (__first._M_offset != 0) 194s 1515: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); 194s 1515: 194s 1515: __fill_bvector_n(__first_p, __last._M_p - __first_p, __x); 194s 1515: 194s 1515: if (__last._M_offset != 0) 194s 1515: __fill_bvector(__last._M_p, 0, __last._M_offset, __x); 194s 1515: } 194s 1515: else if (__first._M_offset != __last._M_offset) 194s 1515: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct hash> 194s 1515: : public __hash_base> 194s 1515: { 194s 1515: size_t 194s 1515: operator()(const std::vector&) const noexcept; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 70 "/usr/include/c++/15/vector" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/vector.tcc" 1 3 4 194s 1515: # 59 "/usr/include/c++/15/bits/vector.tcc" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: reserve(size_type __n) 194s 1515: { 194s 1515: if (__n > this->max_size()) 194s 1515: __throw_length_error(("vector::reserve")); 194s 1515: if (this->capacity() < __n) 194s 1515: { 194s 1515: const size_type __old_size = size(); 194s 1515: pointer __tmp; 194s 1515: 194s 1515: if (_S_use_relocate()) 194s 1515: { 194s 1515: __tmp = this->_M_allocate(__n); 194s 1515: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 194s 1515: __tmp, _M_get_Tp_allocator()); 194s 1515: } 194s 1515: else 194s 1515: 194s 1515: { 194s 1515: __tmp = _M_allocate_and_copy(__n, 194s 1515: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), 194s 1515: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); 194s 1515: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: } 194s 1515: ; 194s 1515: _M_deallocate(this->_M_impl._M_start, 194s 1515: this->_M_impl._M_end_of_storage 194s 1515: - this->_M_impl._M_start); 194s 1515: this->_M_impl._M_start = __tmp; 194s 1515: this->_M_impl._M_finish = __tmp + __old_size; 194s 1515: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: emplace_back(_Args&&... __args) 194s 1515: { 194s 1515: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 194s 1515: { 194s 1515: ; 194s 1515: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 194s 1515: std::forward<_Args>(__args)...); 194s 1515: ++this->_M_impl._M_finish; 194s 1515: ; 194s 1515: } 194s 1515: else 194s 1515: _M_realloc_append(std::forward<_Args>(__args)...); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename vector<_Tp, _Alloc>::iterator 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: 194s 1515: insert(const_iterator __position, const value_type& __x) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: const size_type __n = __position - begin(); 194s 1515: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__position != const_iterator())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: if (!(__position != const_iterator())) 194s 1515: __builtin_unreachable(); 194s 1515: 194s 1515: if (__position == end()) 194s 1515: { 194s 1515: ; 194s 1515: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 194s 1515: __x); 194s 1515: ++this->_M_impl._M_finish; 194s 1515: ; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: const auto __pos = begin() + (__position - cbegin()); 194s 1515: 194s 1515: 194s 1515: _Temporary_value __x_copy(this, __x); 194s 1515: _M_insert_aux(__pos, std::move(__x_copy._M_val())); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: 194s 1515: _M_realloc_insert(begin() + (__position - cbegin()), __x); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return iterator(this->_M_impl._M_start + __n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename vector<_Tp, _Alloc>::iterator 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_erase(iterator __position) 194s 1515: { 194s 1515: if (__position + 1 != end()) 194s 1515: std::move(__position + 1, end(), __position); 194s 1515: --this->_M_impl._M_finish; 194s 1515: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 194s 1515: ; 194s 1515: return __position; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename vector<_Tp, _Alloc>::iterator 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_erase(iterator __first, iterator __last) 194s 1515: { 194s 1515: if (__first != __last) 194s 1515: { 194s 1515: if (__last != end()) 194s 1515: std::move(__last, end(), __first); 194s 1515: _M_erase_at_end(__first.base() + (end() - __last)); 194s 1515: } 194s 1515: return __first; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: vector<_Tp, _Alloc>& 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: operator=(const vector<_Tp, _Alloc>& __x) 194s 1515: { 194s 1515: if (std::__addressof(__x) != this) 194s 1515: { 194s 1515: ; 194s 1515: 194s 1515: if (_Alloc_traits::_S_propagate_on_copy_assign()) 194s 1515: { 194s 1515: if (!_Alloc_traits::_S_always_equal() 194s 1515: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) 194s 1515: { 194s 1515: 194s 1515: this->clear(); 194s 1515: _M_deallocate(this->_M_impl._M_start, 194s 1515: this->_M_impl._M_end_of_storage 194s 1515: - this->_M_impl._M_start); 194s 1515: this->_M_impl._M_start = nullptr; 194s 1515: this->_M_impl._M_finish = nullptr; 194s 1515: this->_M_impl._M_end_of_storage = nullptr; 194s 1515: } 194s 1515: std::__alloc_on_copy(_M_get_Tp_allocator(), 194s 1515: __x._M_get_Tp_allocator()); 194s 1515: } 194s 1515: 194s 1515: const size_type __xlen = __x.size(); 194s 1515: if (__xlen > capacity()) 194s 1515: { 194s 1515: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), 194s 1515: __x.end()); 194s 1515: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: _M_deallocate(this->_M_impl._M_start, 194s 1515: this->_M_impl._M_end_of_storage 194s 1515: - this->_M_impl._M_start); 194s 1515: this->_M_impl._M_start = __tmp; 194s 1515: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; 194s 1515: } 194s 1515: else if (size() >= __xlen) 194s 1515: { 194s 1515: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), 194s 1515: end(), _M_get_Tp_allocator()); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), 194s 1515: this->_M_impl._M_start); 194s 1515: std::__uninitialized_copy_a(__x._M_impl._M_start + size(), 194s 1515: __x._M_impl._M_finish, 194s 1515: this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: } 194s 1515: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_fill_assign(size_t __n, const value_type& __val) 194s 1515: { 194s 1515: const size_type __sz = size(); 194s 1515: if (__n > capacity()) 194s 1515: { 194s 1515: if (__n <= __sz) 194s 1515: __builtin_unreachable(); 194s 1515: vector __tmp(__n, __val, _M_get_Tp_allocator()); 194s 1515: __tmp._M_impl._M_swap_data(this->_M_impl); 194s 1515: } 194s 1515: else if (__n > __sz) 194s 1515: { 194s 1515: std::fill(begin(), end(), __val); 194s 1515: const size_type __add = __n - __sz; 194s 1515: ; 194s 1515: this->_M_impl._M_finish = 194s 1515: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 194s 1515: __add, __val, _M_get_Tp_allocator()); 194s 1515: ; 194s 1515: } 194s 1515: else 194s 1515: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_assign_aux(_InputIterator __first, _InputIterator __last, 194s 1515: std::input_iterator_tag) 194s 1515: { 194s 1515: pointer __cur(this->_M_impl._M_start); 194s 1515: for (; __first != __last && __cur != this->_M_impl._M_finish; 194s 1515: ++__cur, (void)++__first) 194s 1515: *__cur = *__first; 194s 1515: if (__first == __last) 194s 1515: _M_erase_at_end(__cur); 194s 1515: else 194s 1515: _M_range_insert(end(), __first, __last, 194s 1515: std::__iterator_category(__first)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 194s 1515: std::forward_iterator_tag) 194s 1515: { 194s 1515: const size_type __sz = size(); 194s 1515: const size_type __len = std::distance(__first, __last); 194s 1515: 194s 1515: if (__len > capacity()) 194s 1515: { 194s 1515: if (__len <= __sz) 194s 1515: __builtin_unreachable(); 194s 1515: 194s 1515: _S_check_init_len(__len, _M_get_Tp_allocator()); 194s 1515: pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); 194s 1515: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: ; 194s 1515: _M_deallocate(this->_M_impl._M_start, 194s 1515: this->_M_impl._M_end_of_storage 194s 1515: - this->_M_impl._M_start); 194s 1515: this->_M_impl._M_start = __tmp; 194s 1515: this->_M_impl._M_finish = this->_M_impl._M_start + __len; 194s 1515: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; 194s 1515: } 194s 1515: else if (__sz >= __len) 194s 1515: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); 194s 1515: else 194s 1515: { 194s 1515: _ForwardIterator __mid = __first; 194s 1515: std::advance(__mid, __sz); 194s 1515: std::copy(__first, __mid, this->_M_impl._M_start); 194s 1515: const size_type __attribute__((__unused__)) __n = __len - __sz; 194s 1515: ; 194s 1515: this->_M_impl._M_finish = 194s 1515: std::__uninitialized_copy_a(__mid, __last, 194s 1515: this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: ; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: auto 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator 194s 1515: { 194s 1515: const auto __n = __position - cbegin(); 194s 1515: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 194s 1515: if (__position == cend()) 194s 1515: { 194s 1515: ; 194s 1515: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 194s 1515: std::move(__v)); 194s 1515: ++this->_M_impl._M_finish; 194s 1515: ; 194s 1515: } 194s 1515: else 194s 1515: _M_insert_aux(begin() + __n, std::move(__v)); 194s 1515: else 194s 1515: _M_realloc_insert(begin() + __n, std::move(__v)); 194s 1515: 194s 1515: return iterator(this->_M_impl._M_start + __n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: auto 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_emplace_aux(const_iterator __position, _Args&&... __args) 194s 1515: -> iterator 194s 1515: { 194s 1515: const auto __n = __position - cbegin(); 194s 1515: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 194s 1515: if (__position == cend()) 194s 1515: { 194s 1515: ; 194s 1515: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 194s 1515: std::forward<_Args>(__args)...); 194s 1515: ++this->_M_impl._M_finish; 194s 1515: ; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Temporary_value __tmp(this, std::forward<_Args>(__args)...); 194s 1515: _M_insert_aux(begin() + __n, std::move(__tmp._M_val())); 194s 1515: } 194s 1515: else 194s 1515: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...); 194s 1515: 194s 1515: return iterator(this->_M_impl._M_start + __n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_insert_aux(iterator __position, _Arg&& __arg) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: ; 194s 1515: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 194s 1515: std::move(*(this->_M_impl._M_finish - 1))); 194s 1515: ++this->_M_impl._M_finish; 194s 1515: ; 194s 1515: 194s 1515: 194s 1515: 194s 1515: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: 194s 1515: 194s 1515: *__position = std::forward<_Arg>(__arg); 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_realloc_insert(iterator __position, _Args&&... __args) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: const size_type __len = _M_check_len(1u, "vector::_M_realloc_insert"); 194s 1515: if (__len <= 0) 194s 1515: __builtin_unreachable (); 194s 1515: pointer __old_start = this->_M_impl._M_start; 194s 1515: pointer __old_finish = this->_M_impl._M_finish; 194s 1515: const size_type __elems_before = __position - begin(); 194s 1515: pointer __new_start(this->_M_allocate(__len)); 194s 1515: pointer __new_finish(__new_start); 194s 1515: 194s 1515: { 194s 1515: _Guard_alloc __guard(__new_start, __len, *this); 194s 1515: # 481 "/usr/include/c++/15/bits/vector.tcc" 3 4 194s 1515: _Alloc_traits::construct(this->_M_impl, 194s 1515: std::__to_address(__new_start + __elems_before), 194s 1515: std::forward<_Args>(__args)...); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (_S_use_relocate()) 194s 1515: { 194s 1515: 194s 1515: __new_finish = _S_relocate(__old_start, __position.base(), 194s 1515: __new_start, _M_get_Tp_allocator()); 194s 1515: ++__new_finish; 194s 1515: __new_finish = _S_relocate(__position.base(), __old_finish, 194s 1515: __new_finish, _M_get_Tp_allocator()); 194s 1515: } 194s 1515: else 194s 1515: 194s 1515: { 194s 1515: 194s 1515: struct _Guard_elts 194s 1515: { 194s 1515: pointer _M_first, _M_last; 194s 1515: _Tp_alloc_type& _M_alloc; 194s 1515: 194s 1515: 194s 1515: _Guard_elts(pointer __elt, _Tp_alloc_type& __a) 194s 1515: : _M_first(__elt), _M_last(__elt + 1), _M_alloc(__a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: ~_Guard_elts() 194s 1515: { std::_Destroy(_M_first, _M_last, _M_alloc); } 194s 1515: 194s 1515: private: 194s 1515: _Guard_elts(const _Guard_elts&); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: _Guard_elts __guard_elts(__new_start + __elems_before, _M_impl); 194s 1515: 194s 1515: __new_finish = std::__uninitialized_move_if_noexcept_a( 194s 1515: __old_start, __position.base(), 194s 1515: __new_start, _M_get_Tp_allocator()); 194s 1515: 194s 1515: ++__new_finish; 194s 1515: 194s 1515: __guard_elts._M_first = __new_start; 194s 1515: 194s 1515: __new_finish = std::__uninitialized_move_if_noexcept_a( 194s 1515: __position.base(), __old_finish, 194s 1515: __new_finish, _M_get_Tp_allocator()); 194s 1515: 194s 1515: 194s 1515: __guard_elts._M_first = __old_start; 194s 1515: __guard_elts._M_last = __old_finish; 194s 1515: } 194s 1515: __guard._M_storage = __old_start; 194s 1515: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: this->_M_impl._M_start = __new_start; 194s 1515: this->_M_impl._M_finish = __new_finish; 194s 1515: this->_M_impl._M_end_of_storage = __new_start + __len; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_realloc_append(_Args&&... __args) 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: const size_type __len = _M_check_len(1u, "vector::_M_realloc_append"); 194s 1515: if (__len <= 0) 194s 1515: __builtin_unreachable (); 194s 1515: pointer __old_start = this->_M_impl._M_start; 194s 1515: pointer __old_finish = this->_M_impl._M_finish; 194s 1515: const size_type __elems = end() - begin(); 194s 1515: pointer __new_start(this->_M_allocate(__len)); 194s 1515: pointer __new_finish(__new_start); 194s 1515: 194s 1515: { 194s 1515: _Guard_alloc __guard(__new_start, __len, *this); 194s 1515: # 586 "/usr/include/c++/15/bits/vector.tcc" 3 4 194s 1515: _Alloc_traits::construct(this->_M_impl, 194s 1515: std::__to_address(__new_start + __elems), 194s 1515: std::forward<_Args>(__args)...); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (_S_use_relocate()) 194s 1515: { 194s 1515: 194s 1515: __new_finish = _S_relocate(__old_start, __old_finish, 194s 1515: __new_start, _M_get_Tp_allocator()); 194s 1515: ++__new_finish; 194s 1515: } 194s 1515: else 194s 1515: 194s 1515: { 194s 1515: 194s 1515: struct _Guard_elts 194s 1515: { 194s 1515: pointer _M_first, _M_last; 194s 1515: _Tp_alloc_type& _M_alloc; 194s 1515: 194s 1515: 194s 1515: _Guard_elts(pointer __elt, _Tp_alloc_type& __a) 194s 1515: : _M_first(__elt), _M_last(__elt + 1), _M_alloc(__a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: ~_Guard_elts() 194s 1515: { std::_Destroy(_M_first, _M_last, _M_alloc); } 194s 1515: 194s 1515: private: 194s 1515: _Guard_elts(const _Guard_elts&); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: _Guard_elts __guard_elts(__new_start + __elems, _M_impl); 194s 1515: 194s 1515: __new_finish = std::__uninitialized_move_if_noexcept_a( 194s 1515: __old_start, __old_finish, 194s 1515: __new_start, _M_get_Tp_allocator()); 194s 1515: 194s 1515: ++__new_finish; 194s 1515: 194s 1515: 194s 1515: __guard_elts._M_first = __old_start; 194s 1515: __guard_elts._M_last = __old_finish; 194s 1515: } 194s 1515: __guard._M_storage = __old_start; 194s 1515: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: this->_M_impl._M_start = __new_start; 194s 1515: this->_M_impl._M_finish = __new_finish; 194s 1515: this->_M_impl._M_end_of_storage = __new_start + __len; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_fill_insert(iterator __position, size_type __n, const value_type& __x) 194s 1515: { 194s 1515: if (__n != 0) 194s 1515: { 194s 1515: if (size_type(this->_M_impl._M_end_of_storage 194s 1515: - this->_M_impl._M_finish) >= __n) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Temporary_value __tmp(this, __x); 194s 1515: value_type& __x_copy = __tmp._M_val(); 194s 1515: 194s 1515: const size_type __elems_after = end() - __position; 194s 1515: pointer __old_finish(this->_M_impl._M_finish); 194s 1515: if (__elems_after > __n) 194s 1515: { 194s 1515: ; 194s 1515: std::__uninitialized_move_a(__old_finish - __n, 194s 1515: __old_finish, 194s 1515: __old_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: this->_M_impl._M_finish += __n; 194s 1515: ; 194s 1515: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 194s 1515: ; 194s 1515: std::fill(__position.base(), __position.base() + __n, 194s 1515: __x_copy); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: ; 194s 1515: this->_M_impl._M_finish = 194s 1515: std::__uninitialized_fill_n_a(__old_finish, 194s 1515: __n - __elems_after, 194s 1515: __x_copy, 194s 1515: _M_get_Tp_allocator()); 194s 1515: ; 194s 1515: std::__uninitialized_move_a(__position.base(), __old_finish, 194s 1515: this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: this->_M_impl._M_finish += __elems_after; 194s 1515: ; 194s 1515: std::fill(__position.base(), __old_finish, __x_copy); 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: pointer __old_start = this->_M_impl._M_start; 194s 1515: pointer __old_finish = this->_M_impl._M_finish; 194s 1515: const pointer __pos = __position.base(); 194s 1515: 194s 1515: const size_type __len = 194s 1515: _M_check_len(__n, "vector::_M_fill_insert"); 194s 1515: const size_type __elems_before = __pos - __old_start; 194s 1515: pointer __new_start(this->_M_allocate(__len)); 194s 1515: pointer __new_finish(__new_start); 194s 1515: try 194s 1515: { 194s 1515: 194s 1515: std::__uninitialized_fill_n_a(__new_start + __elems_before, 194s 1515: __n, __x, 194s 1515: _M_get_Tp_allocator()); 194s 1515: __new_finish = pointer(); 194s 1515: 194s 1515: __new_finish 194s 1515: = std::__uninitialized_move_if_noexcept_a 194s 1515: (__old_start, __pos, __new_start, _M_get_Tp_allocator()); 194s 1515: 194s 1515: __new_finish += __n; 194s 1515: 194s 1515: __new_finish 194s 1515: = std::__uninitialized_move_if_noexcept_a 194s 1515: (__pos, __old_finish, __new_finish, _M_get_Tp_allocator()); 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: if (!__new_finish) 194s 1515: std::_Destroy(__new_start + __elems_before, 194s 1515: __new_start + __elems_before + __n, 194s 1515: _M_get_Tp_allocator()); 194s 1515: else 194s 1515: std::_Destroy(__new_start, __new_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: _M_deallocate(__new_start, __len); 194s 1515: throw; 194s 1515: } 194s 1515: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); 194s 1515: ; 194s 1515: _M_deallocate(__old_start, 194s 1515: this->_M_impl._M_end_of_storage - __old_start); 194s 1515: this->_M_impl._M_start = __new_start; 194s 1515: this->_M_impl._M_finish = __new_finish; 194s 1515: this->_M_impl._M_end_of_storage = __new_start + __len; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_default_append(size_type __n) 194s 1515: { 194s 1515: if (__n != 0) 194s 1515: { 194s 1515: const size_type __size = size(); 194s 1515: size_type __navail = size_type(this->_M_impl._M_end_of_storage 194s 1515: - this->_M_impl._M_finish); 194s 1515: 194s 1515: if (__size > max_size() || __navail > max_size() - __size) 194s 1515: __builtin_unreachable(); 194s 1515: 194s 1515: if (__navail >= __n) 194s 1515: { 194s 1515: if (!this->_M_impl._M_finish) 194s 1515: __builtin_unreachable(); 194s 1515: 194s 1515: ; 194s 1515: this->_M_impl._M_finish = 194s 1515: std::__uninitialized_default_n_a(this->_M_impl._M_finish, 194s 1515: __n, _M_get_Tp_allocator()); 194s 1515: ; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: pointer __old_start = this->_M_impl._M_start; 194s 1515: pointer __old_finish = this->_M_impl._M_finish; 194s 1515: 194s 1515: const size_type __len = 194s 1515: _M_check_len(__n, "vector::_M_default_append"); 194s 1515: pointer __new_start(this->_M_allocate(__len)); 194s 1515: 194s 1515: { 194s 1515: _Guard_alloc __guard(__new_start, __len, *this); 194s 1515: 194s 1515: std::__uninitialized_default_n_a(__new_start + __size, __n, 194s 1515: _M_get_Tp_allocator()); 194s 1515: 194s 1515: if (_S_use_relocate()) 194s 1515: { 194s 1515: _S_relocate(__old_start, __old_finish, 194s 1515: __new_start, _M_get_Tp_allocator()); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: struct _Guard_elts 194s 1515: { 194s 1515: pointer _M_first, _M_last; 194s 1515: _Tp_alloc_type& _M_alloc; 194s 1515: 194s 1515: 194s 1515: _Guard_elts(pointer __first, size_type __n, 194s 1515: _Tp_alloc_type& __a) 194s 1515: : _M_first(__first), _M_last(__first + __n), _M_alloc(__a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: ~_Guard_elts() 194s 1515: { std::_Destroy(_M_first, _M_last, _M_alloc); } 194s 1515: 194s 1515: private: 194s 1515: _Guard_elts(const _Guard_elts&); 194s 1515: }; 194s 1515: _Guard_elts __guard_elts(__new_start + __size, __n, _M_impl); 194s 1515: 194s 1515: std::__uninitialized_move_if_noexcept_a( 194s 1515: __old_start, __old_finish, __new_start, 194s 1515: _M_get_Tp_allocator()); 194s 1515: 194s 1515: __guard_elts._M_first = __old_start; 194s 1515: __guard_elts._M_last = __old_finish; 194s 1515: } 194s 1515: ; 194s 1515: __guard._M_storage = __old_start; 194s 1515: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: this->_M_impl._M_start = __new_start; 194s 1515: this->_M_impl._M_finish = __new_start + __size + __n; 194s 1515: this->_M_impl._M_end_of_storage = __new_start + __len; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_shrink_to_fit() 194s 1515: { 194s 1515: if (capacity() == size()) 194s 1515: return false; 194s 1515: ; 194s 1515: return std::__shrink_to_fit_aux::_S_do_it(*this); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_range_insert(iterator __pos, _InputIterator __first, 194s 1515: _InputIterator __last, std::input_iterator_tag) 194s 1515: { 194s 1515: if (__pos == end()) 194s 1515: { 194s 1515: for (; __first != __last; ++__first) 194s 1515: insert(end(), *__first); 194s 1515: } 194s 1515: else if (__first != __last) 194s 1515: { 194s 1515: vector __tmp(__first, __last, _M_get_Tp_allocator()); 194s 1515: insert(__pos, 194s 1515: std::make_move_iterator(__tmp.begin()), 194s 1515: std::make_move_iterator(__tmp.end())); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector<_Tp, _Alloc>:: 194s 1515: _M_range_insert(iterator __position, _ForwardIterator __first, 194s 1515: _ForwardIterator __last, std::forward_iterator_tag) 194s 1515: { 194s 1515: if (__first != __last) 194s 1515: { 194s 1515: const size_type __n = std::distance(__first, __last); 194s 1515: if (size_type(this->_M_impl._M_end_of_storage 194s 1515: - this->_M_impl._M_finish) >= __n) 194s 1515: { 194s 1515: const size_type __elems_after = end() - __position; 194s 1515: pointer __old_finish(this->_M_impl._M_finish); 194s 1515: if (__elems_after > __n) 194s 1515: { 194s 1515: ; 194s 1515: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 194s 1515: this->_M_impl._M_finish, 194s 1515: this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: this->_M_impl._M_finish += __n; 194s 1515: ; 194s 1515: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 194s 1515: ; 194s 1515: std::copy(__first, __last, __position); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: _ForwardIterator __mid = __first; 194s 1515: std::advance(__mid, __elems_after); 194s 1515: ; 194s 1515: std::__uninitialized_copy_a(__mid, __last, 194s 1515: this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: this->_M_impl._M_finish += __n - __elems_after; 194s 1515: ; 194s 1515: std::__uninitialized_move_a(__position.base(), 194s 1515: __old_finish, 194s 1515: this->_M_impl._M_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: this->_M_impl._M_finish += __elems_after; 194s 1515: ; 194s 1515: std::copy(__first, __mid, __position); 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: pointer __old_start = this->_M_impl._M_start; 194s 1515: pointer __old_finish = this->_M_impl._M_finish; 194s 1515: 194s 1515: const size_type __len = 194s 1515: _M_check_len(__n, "vector::_M_range_insert"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: pointer __new_start(this->_M_allocate(__len)); 194s 1515: pointer __new_finish(__new_start); 194s 1515: try 194s 1515: { 194s 1515: __new_finish 194s 1515: = std::__uninitialized_move_if_noexcept_a 194s 1515: (__old_start, __position.base(), 194s 1515: __new_start, _M_get_Tp_allocator()); 194s 1515: __new_finish 194s 1515: = std::__uninitialized_copy_a(__first, __last, 194s 1515: __new_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: __new_finish 194s 1515: = std::__uninitialized_move_if_noexcept_a 194s 1515: (__position.base(), __old_finish, 194s 1515: __new_finish, _M_get_Tp_allocator()); 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: std::_Destroy(__new_start, __new_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: _M_deallocate(__new_start, __len); 194s 1515: throw; 194s 1515: } 194s 1515: std::_Destroy(__old_start, __old_finish, 194s 1515: _M_get_Tp_allocator()); 194s 1515: ; 194s 1515: _M_deallocate(__old_start, 194s 1515: this->_M_impl._M_end_of_storage - __old_start); 194s 1515: this->_M_impl._M_start = __new_start; 194s 1515: this->_M_impl._M_finish = __new_finish; 194s 1515: this->_M_impl._M_end_of_storage = __new_start + __len; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: # 1109 "/usr/include/c++/15/bits/vector.tcc" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector:: 194s 1515: _M_reallocate(size_type __n) 194s 1515: { 194s 1515: const iterator __begin = begin(), __end = end(); 194s 1515: if (size_type(__end - __begin) > __n) 194s 1515: __builtin_unreachable(); 194s 1515: _Bit_pointer __q = this->_M_allocate(__n); 194s 1515: iterator __start(std::__addressof(*__q), 0); 194s 1515: iterator __finish(_M_copy_aligned(__begin, __end, __start)); 194s 1515: this->_M_deallocate(); 194s 1515: this->_M_impl._M_start = __start; 194s 1515: this->_M_impl._M_finish = __finish; 194s 1515: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector:: 194s 1515: _M_fill_insert(iterator __position, size_type __n, bool __x) 194s 1515: { 194s 1515: if (__n == 0) 194s 1515: return; 194s 1515: if (capacity() - size() >= __n) 194s 1515: { 194s 1515: std::copy_backward(__position, end(), 194s 1515: this->_M_impl._M_finish + difference_type(__n)); 194s 1515: std::fill(__position, __position + difference_type(__n), __x); 194s 1515: this->_M_impl._M_finish += difference_type(__n); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: const size_type __len = 194s 1515: _M_check_len(__n, "vector::_M_fill_insert"); 194s 1515: iterator __begin = begin(), __end = end(); 194s 1515: _Bit_pointer __q = this->_M_allocate(__len); 194s 1515: iterator __start(std::__addressof(*__q), 0); 194s 1515: iterator __i = _M_copy_aligned(__begin, __position, __start); 194s 1515: std::fill(__i, __i + difference_type(__n), __x); 194s 1515: iterator __finish = std::copy(__position, __end, 194s 1515: __i + difference_type(__n)); 194s 1515: this->_M_deallocate(); 194s 1515: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 194s 1515: this->_M_impl._M_start = __start; 194s 1515: this->_M_impl._M_finish = __finish; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector:: 194s 1515: _M_insert_range(iterator __position, _ForwardIterator __first, 194s 1515: _ForwardIterator __last, std::forward_iterator_tag) 194s 1515: { 194s 1515: if (__first != __last) 194s 1515: { 194s 1515: size_type __n = std::distance(__first, __last); 194s 1515: if (capacity() - size() >= __n) 194s 1515: { 194s 1515: std::copy_backward(__position, end(), 194s 1515: this->_M_impl._M_finish 194s 1515: + difference_type(__n)); 194s 1515: std::copy(__first, __last, __position); 194s 1515: this->_M_impl._M_finish += difference_type(__n); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: const size_type __len = 194s 1515: _M_check_len(__n, "vector::_M_insert_range"); 194s 1515: const iterator __begin = begin(), __end = end(); 194s 1515: _Bit_pointer __q = this->_M_allocate(__len); 194s 1515: iterator __start(std::__addressof(*__q), 0); 194s 1515: iterator __i = _M_copy_aligned(__begin, __position, __start); 194s 1515: __i = std::copy(__first, __last, __i); 194s 1515: iterator __finish = std::copy(__position, __end, __i); 194s 1515: this->_M_deallocate(); 194s 1515: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 194s 1515: this->_M_impl._M_start = __start; 194s 1515: this->_M_impl._M_finish = __finish; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: vector:: 194s 1515: _M_insert_aux(iterator __position, bool __x) 194s 1515: { 194s 1515: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 194s 1515: { 194s 1515: std::copy_backward(__position, this->_M_impl._M_finish, 194s 1515: this->_M_impl._M_finish + 1); 194s 1515: *__position = __x; 194s 1515: ++this->_M_impl._M_finish; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: const size_type __len = 194s 1515: _M_check_len(size_type(1), "vector::_M_insert_aux"); 194s 1515: _Bit_pointer __q = this->_M_allocate(__len); 194s 1515: iterator __start(std::__addressof(*__q), 0); 194s 1515: iterator __i = _M_copy_aligned(begin(), __position, __start); 194s 1515: *__i++ = __x; 194s 1515: iterator __finish = std::copy(__position, end(), __i); 194s 1515: this->_M_deallocate(); 194s 1515: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 194s 1515: this->_M_impl._M_start = __start; 194s 1515: this->_M_impl._M_finish = __finish; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename vector::iterator 194s 1515: vector:: 194s 1515: _M_erase(iterator __position) 194s 1515: { 194s 1515: if (__position + 1 != end()) 194s 1515: std::copy(__position + 1, end(), __position); 194s 1515: --this->_M_impl._M_finish; 194s 1515: return __position; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename vector::iterator 194s 1515: vector:: 194s 1515: _M_erase(iterator __first, iterator __last) 194s 1515: { 194s 1515: if (__first != __last) 194s 1515: _M_erase_at_end(std::copy(__last, end(), __first)); 194s 1515: return __first; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: bool 194s 1515: vector:: 194s 1515: _M_shrink_to_fit() 194s 1515: { 194s 1515: if (capacity() - size() < int(_S_word_bit)) 194s 1515: return false; 194s 1515: try 194s 1515: { 194s 1515: if (size_type __n = size()) 194s 1515: _M_reallocate(__n); 194s 1515: else 194s 1515: { 194s 1515: this->_M_deallocate(); 194s 1515: this->_M_impl._M_reset(); 194s 1515: } 194s 1515: return true; 194s 1515: } 194s 1515: catch(...) 194s 1515: { return false; } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: size_t 194s 1515: hash>:: 194s 1515: operator()(const std::vector& __b) const noexcept 194s 1515: { 194s 1515: size_t __hash = 0; 194s 1515: const size_t __words = __b.size() / _S_word_bit; 194s 1515: if (__words) 194s 1515: { 194s 1515: const size_t __clength = __words * sizeof(_Bit_type); 194s 1515: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); 194s 1515: } 194s 1515: 194s 1515: const size_t __extrabits = __b.size() % _S_word_bit; 194s 1515: if (__extrabits) 194s 1515: { 194s 1515: _Bit_type __hiword = *__b._M_impl._M_finish._M_p; 194s 1515: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); 194s 1515: 194s 1515: const size_t __clength 194s 1515: = (__extrabits + 8 - 1) / 8; 194s 1515: if (__words) 194s 1515: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); 194s 1515: else 194s 1515: __hash = std::_Hash_impl::hash(&__hiword, __clength); 194s 1515: } 194s 1515: 194s 1515: return __hash; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 75 "/usr/include/c++/15/vector" 2 3 4 194s 1515: # 88 "/usr/include/c++/15/vector" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 89 "/usr/include/c++/15/vector" 2 3 4 194s 1515: # 3171 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/atomic" 1 3 4 194s 1515: # 50 "/usr/include/c++/15/atomic" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 51 "/usr/include/c++/15/atomic" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/atomic_base.h" 1 3 4 194s 1515: # 39 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/atomic_lockfree_defines.h" 1 3 4 194s 1515: # 40 "/usr/include/c++/15/bits/atomic_base.h" 2 3 4 194s 1515: # 50 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 51 "/usr/include/c++/15/bits/atomic_base.h" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 82 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: enum memory_order : int 194s 1515: { 194s 1515: memory_order_relaxed, 194s 1515: memory_order_consume, 194s 1515: memory_order_acquire, 194s 1515: memory_order_release, 194s 1515: memory_order_acq_rel, 194s 1515: memory_order_seq_cst 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: enum __memory_order_modifier 194s 1515: { 194s 1515: __memory_order_mask = 0x0ffff, 194s 1515: __memory_order_modifier_mask = 0xffff0000, 194s 1515: __memory_order_hle_acquire = 0x10000, 194s 1515: __memory_order_hle_release = 0x20000 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: constexpr memory_order 194s 1515: operator|(memory_order __m, __memory_order_modifier __mod) noexcept 194s 1515: { 194s 1515: return memory_order(int(__m) | int(__mod)); 194s 1515: } 194s 1515: 194s 1515: constexpr memory_order 194s 1515: operator&(memory_order __m, __memory_order_modifier __mod) noexcept 194s 1515: { 194s 1515: return memory_order(int(__m) & int(__mod)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: constexpr memory_order 194s 1515: __cmpexch_failure_order2(memory_order __m) noexcept 194s 1515: { 194s 1515: return __m == memory_order_acq_rel ? memory_order_acquire 194s 1515: : __m == memory_order_release ? memory_order_relaxed : __m; 194s 1515: } 194s 1515: 194s 1515: constexpr memory_order 194s 1515: __cmpexch_failure_order(memory_order __m) noexcept 194s 1515: { 194s 1515: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) 194s 1515: | __memory_order_modifier(__m & __memory_order_modifier_mask)); 194s 1515: } 194s 1515: 194s 1515: constexpr bool 194s 1515: __is_valid_cmpexch_failure_order(memory_order __m) noexcept 194s 1515: { 194s 1515: return (__m & __memory_order_mask) != memory_order_release 194s 1515: && (__m & __memory_order_mask) != memory_order_acq_rel; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __atomic_base; 194s 1515: 194s 1515: 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) void 194s 1515: atomic_thread_fence(memory_order __m) noexcept 194s 1515: { __atomic_thread_fence(int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) void 194s 1515: atomic_signal_fence(memory_order __m) noexcept 194s 1515: { __atomic_signal_fence(int(__m)); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline _Tp 194s 1515: kill_dependency(_Tp __y) noexcept 194s 1515: { 194s 1515: _Tp __ret(__y); 194s 1515: return __ret; 194s 1515: } 194s 1515: # 172 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: template 194s 1515: struct atomic; 194s 1515: 194s 1515: template 194s 1515: struct atomic<_Tp*>; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef bool __atomic_flag_data_type; 194s 1515: # 197 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: extern "C" { 194s 1515: 194s 1515: struct __atomic_flag_base 194s 1515: { 194s 1515: __atomic_flag_data_type _M_i ; 194s 1515: }; 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct atomic_flag : public __atomic_flag_base 194s 1515: { 194s 1515: atomic_flag() noexcept = default; 194s 1515: ~atomic_flag() noexcept = default; 194s 1515: atomic_flag(const atomic_flag&) = delete; 194s 1515: atomic_flag& operator=(const atomic_flag&) = delete; 194s 1515: atomic_flag& operator=(const atomic_flag&) volatile = delete; 194s 1515: 194s 1515: 194s 1515: constexpr atomic_flag(bool __i) noexcept 194s 1515: : __atomic_flag_base{ _S_init(__i) } 194s 1515: { } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: test_and_set(memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: return __atomic_test_and_set (&_M_make[2]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test' 194s make[1]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test' 194s i, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: return __atomic_test_and_set (&_M_i, int(__m)); 194s 1515: } 194s 1515: # 281 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: inline __attribute__((__always_inline__)) void 194s 1515: clear(memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: memory_order __b __attribute__ ((__unused__)) 194s 1515: = __m & __memory_order_mask; 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: __atomic_clear (&_M_i, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) void 194s 1515: clear(memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: memory_order __b __attribute__ ((__unused__)) 194s 1515: = __m & __memory_order_mask; 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: __atomic_clear (&_M_i, int(__m)); 194s 1515: } 194s 1515: 194s 1515: private: 194s 1515: static constexpr __atomic_flag_data_type 194s 1515: _S_init(bool __i) 194s 1515: { return __i ? 1 : 0; } 194s 1515: }; 194s 1515: # 337 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: template 194s 1515: struct __atomic_base 194s 1515: { 194s 1515: using value_type = _ITp; 194s 1515: using difference_type = value_type; 194s 1515: 194s 1515: private: 194s 1515: typedef _ITp __int_type; 194s 1515: 194s 1515: static constexpr int _S_alignment = 194s 1515: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); 194s 1515: 194s 1515: alignas(_S_alignment) __int_type _M_i ; 194s 1515: 194s 1515: public: 194s 1515: __atomic_base() noexcept = default; 194s 1515: ~__atomic_base() noexcept = default; 194s 1515: __atomic_base(const __atomic_base&) = delete; 194s 1515: __atomic_base& operator=(const __atomic_base&) = delete; 194s 1515: __atomic_base& operator=(const __atomic_base&) volatile = delete; 194s 1515: 194s 1515: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } 194s 1515: 194s 1515: operator __int_type() const noexcept 194s 1515: { return load(); } 194s 1515: 194s 1515: operator __int_type() const volatile noexcept 194s 1515: { return load(); } 194s 1515: 194s 1515: __int_type 194s 1515: operator=(__int_type __i) noexcept 194s 1515: { 194s 1515: store(__i); 194s 1515: return __i; 194s 1515: } 194s 1515: 194s 1515: __int_type 194s 1515: operator=(__int_type __i) volatile noexcept 194s 1515: { 194s 1515: store(__i); 194s 1515: return __i; 194s 1515: } 194s 1515: 194s 1515: __int_type 194s 1515: operator++(int) noexcept 194s 1515: { return fetch_add(1); } 194s 1515: 194s 1515: __int_type 194s 1515: operator++(int) volatile noexcept 194s 1515: { return fetch_add(1); } 194s 1515: 194s 1515: __int_type 194s 1515: operator--(int) noexcept 194s 1515: { return fetch_sub(1); } 194s 1515: 194s 1515: __int_type 194s 1515: operator--(int) volatile noexcept 194s 1515: { return fetch_sub(1); } 194s 1515: 194s 1515: __int_type 194s 1515: operator++() noexcept 194s 1515: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator++() volatile noexcept 194s 1515: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator--() noexcept 194s 1515: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator--() volatile noexcept 194s 1515: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator+=(__int_type __i) noexcept 194s 1515: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator+=(__int_type __i) volatile noexcept 194s 1515: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator-=(__int_type __i) noexcept 194s 1515: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator-=(__int_type __i) volatile noexcept 194s 1515: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator&=(__int_type __i) noexcept 194s 1515: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator&=(__int_type __i) volatile noexcept 194s 1515: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator|=(__int_type __i) noexcept 194s 1515: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator|=(__int_type __i) volatile noexcept 194s 1515: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator^=(__int_type __i) noexcept 194s 1515: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __int_type 194s 1515: operator^=(__int_type __i) volatile noexcept 194s 1515: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 194s 1515: 194s 1515: bool 194s 1515: is_lock_free() const noexcept 194s 1515: { 194s 1515: 194s 1515: return __atomic_is_lock_free(sizeof(_M_i), 194s 1515: reinterpret_cast(-_S_alignment)); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: is_lock_free() const volatile noexcept 194s 1515: { 194s 1515: 194s 1515: return __atomic_is_lock_free(sizeof(_M_i), 194s 1515: reinterpret_cast(-_S_alignment)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) void 194s 1515: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: memory_order __b __attribute__ ((__unused__)) 194s 1515: = __m & __memory_order_mask; 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: __atomic_store_n(&_M_i, __i, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) void 194s 1515: store(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: memory_order __b __attribute__ ((__unused__)) 194s 1515: = __m & __memory_order_mask; 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: __atomic_store_n(&_M_i, __i, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: load(memory_order __m = memory_order_seq_cst) const noexcept 194s 1515: { 194s 1515: memory_order __b __attribute__ ((__unused__)) 194s 1515: = __m & __memory_order_mask; 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_load_n(&_M_i, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 194s 1515: { 194s 1515: memory_order __b __attribute__ ((__unused__)) 194s 1515: = __m & __memory_order_mask; 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_load_n(&_M_i, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: exchange(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: return __atomic_exchange_n(&_M_i, __i, int(__m)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: exchange(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: return __atomic_exchange_n(&_M_i, __i, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_weak(__int_type& __i1, __int_type __i2, 194s 1515: memory_order __m1, memory_order __m2) noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 194s 1515: int(__m1), int(__m2)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_weak(__int_type& __i1, __int_type __i2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) volatile noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 194s 1515: int(__m1), int(__m2)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_weak(__int_type& __i1, __int_type __i2, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: return compare_exchange_weak(__i1, __i2, __m, 194s 1515: __cmpexch_failure_order(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_weak(__int_type& __i1, __int_type __i2, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: return compare_exchange_weak(__i1, __i2, __m, 194s 1515: __cmpexch_failure_order(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_strong(__int_type& __i1, __int_type __i2, 194s 1515: memory_order __m1, memory_order __m2) noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 194s 1515: int(__m1), int(__m2)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_strong(__int_type& __i1, __int_type __i2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) volatile noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 194s 1515: int(__m1), int(__m2)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_strong(__int_type& __i1, __int_type __i2, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: return compare_exchange_strong(__i1, __i2, __m, 194s 1515: __cmpexch_failure_order(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_strong(__int_type& __i1, __int_type __i2, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: return compare_exchange_strong(__i1, __i2, __m, 194s 1515: __cmpexch_failure_order(__m)); 194s 1515: } 194s 1515: # 628 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: fetch_add(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: fetch_add(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: fetch_sub(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: fetch_sub(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: fetch_and(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: fetch_and(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: fetch_or(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: fetch_or(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: fetch_xor(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __int_type 194s 1515: fetch_xor(__int_type __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __atomic_base<_PTp*> 194s 1515: { 194s 1515: private: 194s 1515: typedef _PTp* __pointer_type; 194s 1515: 194s 1515: __pointer_type _M_p ; 194s 1515: 194s 1515: static constexpr ptrdiff_t 194s 1515: _S_type_size(ptrdiff_t __d) 194s 1515: { return __d * sizeof(_PTp); } 194s 1515: 194s 1515: public: 194s 1515: __atomic_base() noexcept = default; 194s 1515: ~__atomic_base() noexcept = default; 194s 1515: __atomic_base(const __atomic_base&) = delete; 194s 1515: __atomic_base& operator=(const __atomic_base&) = delete; 194s 1515: __atomic_base& operator=(const __atomic_base&) volatile = delete; 194s 1515: 194s 1515: 194s 1515: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } 194s 1515: 194s 1515: operator __pointer_type() const noexcept 194s 1515: { return load(); } 194s 1515: 194s 1515: operator __pointer_type() const volatile noexcept 194s 1515: { return load(); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator=(__pointer_type __p) noexcept 194s 1515: { 194s 1515: store(__p); 194s 1515: return __p; 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator=(__pointer_type __p) volatile noexcept 194s 1515: { 194s 1515: store(__p); 194s 1515: return __p; 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator++(int) noexcept 194s 1515: { return fetch_add(1); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator++(int) volatile noexcept 194s 1515: { return fetch_add(1); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator--(int) noexcept 194s 1515: { return fetch_sub(1); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator--(int) volatile noexcept 194s 1515: { return fetch_sub(1); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator++() noexcept 194s 1515: { return __atomic_add_fetch(&_M_p, _S_type_size(1), 194s 1515: int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator++() volatile noexcept 194s 1515: { return __atomic_add_fetch(&_M_p, _S_type_size(1), 194s 1515: int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator--() noexcept 194s 1515: { return __atomic_sub_fetch(&_M_p, _S_type_size(1), 194s 1515: int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator--() volatile noexcept 194s 1515: { return __atomic_sub_fetch(&_M_p, _S_type_size(1), 194s 1515: int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator+=(ptrdiff_t __d) noexcept 194s 1515: { return __atomic_add_fetch(&_M_p, _S_type_size(__d), 194s 1515: int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator+=(ptrdiff_t __d) volatile noexcept 194s 1515: { return __atomic_add_fetch(&_M_p, _S_type_size(__d), 194s 1515: int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator-=(ptrdiff_t __d) noexcept 194s 1515: { return __atomic_sub_fetch(&_M_p, _S_type_size(__d), 194s 1515: int(memory_order_seq_cst)); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator-=(ptrdiff_t __d) volatile noexcept 194s 1515: { return __atomic_sub_fetch(&_M_p, _S_type_size(__d), 194s 1515: int(memory_order_seq_cst)); } 194s 1515: 194s 1515: bool 194s 1515: is_lock_free() const noexcept 194s 1515: { 194s 1515: 194s 1515: return __atomic_is_lock_free(sizeof(_M_p), 194s 1515: reinterpret_cast(-__alignof(_M_p))); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: is_lock_free() const volatile noexcept 194s 1515: { 194s 1515: 194s 1515: return __atomic_is_lock_free(sizeof(_M_p), 194s 1515: reinterpret_cast(-__alignof(_M_p))); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) void 194s 1515: store(__pointer_type __p, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: memory_order __b __attribute__ ((__unused__)) 194s 1515: = __m & __memory_order_mask; 194s 1515: 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: __atomic_store_n(&_M_p, __p, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) void 194s 1515: store(__pointer_type __p, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: memory_order __b __attribute__ ((__unused__)) 194s 1515: = __m & __memory_order_mask; 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: __atomic_store_n(&_M_p, __p, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __pointer_type 194s 1515: load(memory_order __m = memory_order_seq_cst) const noexcept 194s 1515: { 194s 1515: memory_order __b __attribute__ ((__unused__)) 194s 1515: = __m & __memory_order_mask; 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_load_n(&_M_p, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __pointer_type 194s 1515: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 194s 1515: { 194s 1515: memory_order __b __attribute__ ((__unused__)) 194s 1515: = __m & __memory_order_mask; 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_load_n(&_M_p, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __pointer_type 194s 1515: exchange(__pointer_type __p, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: return __atomic_exchange_n(&_M_p, __p, int(__m)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __pointer_type 194s 1515: exchange(__pointer_type __p, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: return __atomic_exchange_n(&_M_p, __p, int(__m)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, 194s 1515: int(__m1), int(__m2)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) volatile noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, 194s 1515: int(__m1), int(__m2)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 194s 1515: int(__m1), int(__m2)); 194s 1515: } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) volatile noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 194s 1515: int(__m1), int(__m2)); 194s 1515: } 194s 1515: # 928 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: inline __attribute__((__always_inline__)) __pointer_type 194s 1515: fetch_add(ptrdiff_t __d, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return __atomic_fetch_add(&_M_p, _S_type_size(__d), int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __pointer_type 194s 1515: fetch_add(ptrdiff_t __d, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return __atomic_fetch_add(&_M_p, _S_type_size(__d), int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __pointer_type 194s 1515: fetch_sub(ptrdiff_t __d, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return __atomic_fetch_sub(&_M_p, _S_type_size(__d), int(__m)); } 194s 1515: 194s 1515: inline __attribute__((__always_inline__)) __pointer_type 194s 1515: fetch_sub(ptrdiff_t __d, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return __atomic_fetch_sub(&_M_p, _S_type_size(__d), int(__m)); } 194s 1515: }; 194s 1515: 194s 1515: namespace __atomic_impl 194s 1515: { 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: __maybe_has_padding() 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return !__has_unique_object_representations(_Tp) 194s 1515: && !is_same<_Tp, float>::value && !is_same<_Tp, double>::value; 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline __attribute__((__always_inline__)) _Tp* 194s 1515: __clear_padding(_Tp& __val) noexcept 194s 1515: { 194s 1515: auto* __ptr = std::__addressof(__val); 194s 1515: 194s 1515: if (__atomic_impl::__maybe_has_padding<_Tp>()) 194s 1515: __builtin_clear_padding(__ptr); 194s 1515: 194s 1515: return __ptr; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using _Val = typename remove_volatile<_Tp>::type; 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: 194s 1515: template 194s 1515: inline __attribute__((__always_inline__)) bool 194s 1515: __compare_exchange(_Tp& __val, _Val<_Tp>& __e, _Val<_Tp>& __i, 194s 1515: bool __is_weak, 194s 1515: memory_order __s, memory_order __f) noexcept 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__f))) std::__glibcxx_assert_fail(); } while (false); 194s 1515: 194s 1515: using _Vp = _Val<_Tp>; 194s 1515: _Tp* const __pval = std::__addressof(__val); 194s 1515: 194s 1515: if constexpr (!__atomic_impl::__maybe_has_padding<_Vp>()) 194s 1515: { 194s 1515: return __atomic_compare_exchange(__pval, std::__addressof(__e), 194s 1515: std::__addressof(__i), __is_weak, 194s 1515: int(__s), int(__f)); 194s 1515: } 194s 1515: else if constexpr (!_AtomicRef) 194s 1515: { 194s 1515: 194s 1515: _Vp* const __pi = __atomic_impl::__clear_padding(__i); 194s 1515: 194s 1515: _Vp __exp = __e; 194s 1515: 194s 1515: _Vp* const __pexp = __atomic_impl::__clear_padding(__exp); 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__atomic_compare_exchange(__pval, __pexp, __pi, 194s 1515: __is_weak, int(__s), int(__f))) 194s 1515: return true; 194s 1515: 194s 1515: __builtin_memcpy(std::__addressof(__e), __pexp, sizeof(_Vp)); 194s 1515: return false; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: _Vp* const __pi = __atomic_impl::__clear_padding(__i); 194s 1515: 194s 1515: 194s 1515: _Vp __exp = __e; 194s 1515: 194s 1515: 194s 1515: _Vp* const __pexp = __atomic_impl::__clear_padding(__exp); 194s 1515: # 1042 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: while (true) 194s 1515: { 194s 1515: 194s 1515: _Vp __orig = __exp; 194s 1515: 194s 1515: if (__atomic_compare_exchange(__pval, __pexp, __pi, 194s 1515: __is_weak, int(__s), int(__f))) 194s 1515: return true; 194s 1515: 194s 1515: 194s 1515: _Vp __curr = __exp; 194s 1515: 194s 1515: 194s 1515: if (__builtin_memcmp(__atomic_impl::__clear_padding(__orig), 194s 1515: __atomic_impl::__clear_padding(__curr), 194s 1515: sizeof(_Vp))) 194s 1515: { 194s 1515: 194s 1515: __builtin_memcpy(std::__addressof(__e), __pexp, 194s 1515: sizeof(_Vp)); 194s 1515: return false; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: } 194s 1515: # 2105 "/usr/include/c++/15/bits/atomic_base.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 53 "/usr/include/c++/15/atomic" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/cstdint" 1 3 4 194s 1515: # 47 "/usr/include/c++/15/cstdint" 3 4 194s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdint.h" 1 3 4 194s 1515: # 9 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdint.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wpedantic" 194s 1515: # 1 "/usr/include/stdint.h" 1 3 4 194s 1515: # 26 "/usr/include/stdint.h" 3 4 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 194s 1515: # 27 "/usr/include/stdint.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 194s 1515: # 30 "/usr/include/stdint.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 1 3 4 194s 1515: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 3 4 194s 1515: typedef __uint8_t uint8_t; 194s 1515: typedef __uint16_t uint16_t; 194s 1515: typedef __uint32_t uint32_t; 194s 1515: typedef __uint64_t uint64_t; 194s 1515: # 38 "/usr/include/stdint.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-least.h" 1 3 4 194s 1515: # 25 "/usr/include/arm-linux-gnueabihf/bits/stdint-least.h" 3 4 194s 1515: typedef __int_least8_t int_least8_t; 194s 1515: typedef __int_least16_t int_least16_t; 194s 1515: typedef __int_least32_t int_least32_t; 194s 1515: typedef __int_least64_t int_least64_t; 194s 1515: 194s 1515: 194s 1515: typedef __uint_least8_t uint_least8_t; 194s 1515: typedef __uint_least16_t uint_least16_t; 194s 1515: typedef __uint_least32_t uint_least32_t; 194s 1515: typedef __uint_least64_t uint_least64_t; 194s 1515: # 42 "/usr/include/stdint.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef signed char int_fast8_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef int int_fast16_t; 194s 1515: typedef int int_fast32_t; 194s 1515: __extension__ 194s 1515: typedef long long int int_fast64_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef unsigned char uint_fast8_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef unsigned int uint_fast16_t; 194s 1515: typedef unsigned int uint_fast32_t; 194s 1515: __extension__ 194s 1515: typedef unsigned long long int uint_fast64_t; 194s 1515: # 85 "/usr/include/stdint.h" 3 4 194s 1515: typedef unsigned int uintptr_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef __intmax_t intmax_t; 194s 1515: typedef __uintmax_t uintmax_t; 194s 1515: # 12 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdint.h" 2 3 4 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 48 "/usr/include/c++/15/cstdint" 2 3 4 194s 1515: 194s 1515: 194s 1515: namespace std 194s 1515: { 194s 1515: 194s 1515: using ::int8_t; 194s 1515: using ::int16_t; 194s 1515: using ::int32_t; 194s 1515: using ::int64_t; 194s 1515: 194s 1515: using ::int_fast8_t; 194s 1515: using ::int_fast16_t; 194s 1515: using ::int_fast32_t; 194s 1515: using ::int_fast64_t; 194s 1515: 194s 1515: using ::int_least8_t; 194s 1515: using ::int_least16_t; 194s 1515: using ::int_least32_t; 194s 1515: using ::int_least64_t; 194s 1515: 194s 1515: using ::intmax_t; 194s 1515: using ::intptr_t; 194s 1515: 194s 1515: using ::uint8_t; 194s 1515: using ::uint16_t; 194s 1515: using ::uint32_t; 194s 1515: using ::uint64_t; 194s 1515: 194s 1515: using ::uint_fast8_t; 194s 1515: using ::uint_fast16_t; 194s 1515: using ::uint_fast32_t; 194s 1515: using ::uint_fast64_t; 194s 1515: 194s 1515: using ::uint_least8_t; 194s 1515: using ::uint_least16_t; 194s 1515: using ::uint_least32_t; 194s 1515: using ::uint_least64_t; 194s 1515: 194s 1515: using ::uintmax_t; 194s 1515: using ::uintptr_t; 194s 1515: # 144 "/usr/include/c++/15/cstdint" 3 4 194s 1515: } 194s 1515: # 54 "/usr/include/c++/15/atomic" 2 3 4 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct atomic; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic 194s 1515: { 194s 1515: using value_type = bool; 194s 1515: 194s 1515: private: 194s 1515: __atomic_base _M_base; 194s 1515: 194s 1515: public: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(bool __i) noexcept : _M_base(__i) { } 194s 1515: 194s 1515: bool 194s 1515: operator=(bool __i) noexcept 194s 1515: { return _M_base.operator=(__i); } 194s 1515: 194s 1515: bool 194s 1515: operator=(bool __i) volatile noexcept 194s 1515: { return _M_base.operator=(__i); } 194s 1515: 194s 1515: operator bool() const noexcept 194s 1515: { return _M_base.load(); } 194s 1515: 194s 1515: operator bool() const volatile noexcept 194s 1515: { return _M_base.load(); } 194s 1515: 194s 1515: bool 194s 1515: is_lock_free() const noexcept { return _M_base.is_lock_free(); } 194s 1515: 194s 1515: bool 194s 1515: is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: store(bool __i, memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { _M_base.store(__i, __m); } 194s 1515: 194s 1515: void 194s 1515: store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { _M_base.store(__i, __m); } 194s 1515: 194s 1515: bool 194s 1515: load(memory_order __m = memory_order_seq_cst) const noexcept 194s 1515: { return _M_base.load(__m); } 194s 1515: 194s 1515: bool 194s 1515: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 194s 1515: { return _M_base.load(__m); } 194s 1515: 194s 1515: bool 194s 1515: exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return _M_base.exchange(__i, __m); } 194s 1515: 194s 1515: bool 194s 1515: exchange(bool __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return _M_base.exchange(__i, __m); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, 194s 1515: memory_order __m2) noexcept 194s 1515: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, 194s 1515: memory_order __m2) volatile noexcept 194s 1515: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(bool& __i1, bool __i2, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(bool& __i1, bool __i2, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, 194s 1515: memory_order __m2) noexcept 194s 1515: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, 194s 1515: memory_order __m2) volatile noexcept 194s 1515: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(bool& __i1, bool __i2, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(bool& __i1, bool __i2, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } 194s 1515: # 191 "/usr/include/c++/15/atomic" 3 4 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct atomic 194s 1515: { 194s 1515: using value_type = _Tp; 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: static constexpr int _S_min_alignment 194s 1515: = (sizeof(_Tp) & (sizeof(_Tp) - 1)) || sizeof(_Tp) > 16 194s 1515: ? 0 : sizeof(_Tp); 194s 1515: 194s 1515: static constexpr int _S_alignment 194s 1515: = _S_min_alignment > alignof(_Tp) ? _S_min_alignment : alignof(_Tp); 194s 1515: 194s 1515: alignas(_S_alignment) _Tp _M_i; 194s 1515: 194s 1515: static_assert(__is_trivially_copyable(_Tp), 194s 1515: "std::atomic requires a trivially copyable type"); 194s 1515: 194s 1515: static_assert(sizeof(_Tp) > 0, 194s 1515: "Incomplete or zero-sized types are not supported"); 194s 1515: # 227 "/usr/include/c++/15/atomic" 3 4 194s 1515: public: 194s 1515: # 236 "/usr/include/c++/15/atomic" 3 4 194s 1515: atomic() = default; 194s 1515: 194s 1515: 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(_Tp __i) noexcept : _M_i(__i) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: operator _Tp() const noexcept 194s 1515: { return load(); } 194s 1515: 194s 1515: operator _Tp() const volatile noexcept 194s 1515: { return load(); } 194s 1515: 194s 1515: _Tp 194s 1515: operator=(_Tp __i) noexcept 194s 1515: { store(__i); return __i; } 194s 1515: 194s 1515: _Tp 194s 1515: operator=(_Tp __i) volatile noexcept 194s 1515: { store(__i); return __i; } 194s 1515: 194s 1515: bool 194s 1515: is_lock_free() const noexcept 194s 1515: { 194s 1515: 194s 1515: return __atomic_is_lock_free(sizeof(_M_i), 194s 1515: reinterpret_cast(-_S_alignment)); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: is_lock_free() const volatile noexcept 194s 1515: { 194s 1515: 194s 1515: return __atomic_is_lock_free(sizeof(_M_i), 194s 1515: reinterpret_cast(-_S_alignment)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: store(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: __atomic_store(std::__addressof(_M_i), 194s 1515: __atomic_impl::__clear_padding(__i), 194s 1515: int(__m)); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: store(_Tp __i, memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: __atomic_store(std::__addressof(_M_i), 194s 1515: __atomic_impl::__clear_padding(__i), 194s 1515: int(__m)); 194s 1515: } 194s 1515: 194s 1515: _Tp 194s 1515: load(memory_order __m = memory_order_seq_cst) const noexcept 194s 1515: { 194s 1515: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 194s 1515: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 194s 1515: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); 194s 1515: return *__ptr; 194s 1515: } 194s 1515: 194s 1515: _Tp 194s 1515: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 194s 1515: { 194s 1515: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 194s 1515: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 194s 1515: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); 194s 1515: return *__ptr; 194s 1515: } 194s 1515: 194s 1515: _Tp 194s 1515: exchange(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 194s 1515: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 194s 1515: __atomic_exchange(std::__addressof(_M_i), 194s 1515: __atomic_impl::__clear_padding(__i), 194s 1515: __ptr, int(__m)); 194s 1515: return *__ptr; 194s 1515: } 194s 1515: 194s 1515: _Tp 194s 1515: exchange(_Tp __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 194s 1515: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 194s 1515: __atomic_exchange(std::__addressof(_M_i), 194s 1515: __atomic_impl::__clear_padding(__i), 194s 1515: __ptr, int(__m)); 194s 1515: return *__ptr; 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, 194s 1515: memory_order __f) noexcept 194s 1515: { 194s 1515: return __atomic_impl::__compare_exchange(_M_i, __e, __i, true, 194s 1515: __s, __f); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, 194s 1515: memory_order __f) volatile noexcept 194s 1515: { 194s 1515: return __atomic_impl::__compare_exchange(_M_i, __e, __i, true, 194s 1515: __s, __f); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(_Tp& __e, _Tp __i, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return compare_exchange_weak(__e, __i, __m, 194s 1515: __cmpexch_failure_order(__m)); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(_Tp& __e, _Tp __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return compare_exchange_weak(__e, __i, __m, 194s 1515: __cmpexch_failure_order(__m)); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, 194s 1515: memory_order __f) noexcept 194s 1515: { 194s 1515: return __atomic_impl::__compare_exchange(_M_i, __e, __i, false, 194s 1515: __s, __f); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, 194s 1515: memory_order __f) volatile noexcept 194s 1515: { 194s 1515: return __atomic_impl::__compare_exchange(_M_i, __e, __i, false, 194s 1515: __s, __f); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(_Tp& __e, _Tp __i, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return compare_exchange_strong(__e, __i, __m, 194s 1515: __cmpexch_failure_order(__m)); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(_Tp& __e, _Tp __i, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return compare_exchange_strong(__e, __i, __m, 194s 1515: __cmpexch_failure_order(__m)); } 194s 1515: # 418 "/usr/include/c++/15/atomic" 3 4 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct atomic<_Tp*> 194s 1515: { 194s 1515: using value_type = _Tp*; 194s 1515: using difference_type = ptrdiff_t; 194s 1515: 194s 1515: typedef _Tp* __pointer_type; 194s 1515: typedef __atomic_base<_Tp*> __base_type; 194s 1515: __base_type _M_b; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__pointer_type __p) noexcept : _M_b(__p) { } 194s 1515: 194s 1515: operator __pointer_type() const noexcept 194s 1515: { return __pointer_type(_M_b); } 194s 1515: 194s 1515: operator __pointer_type() const volatile noexcept 194s 1515: { return __pointer_type(_M_b); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator=(__pointer_type __p) noexcept 194s 1515: { return _M_b.operator=(__p); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator=(__pointer_type __p) volatile noexcept 194s 1515: { return _M_b.operator=(__p); } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator++(int) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b++; 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator++(int) volatile noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b++; 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator--(int) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b--; 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator--(int) volatile noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b--; 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator++() noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return ++_M_b; 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator++() volatile noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return ++_M_b; 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator--() noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return --_M_b; 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator--() volatile noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return --_M_b; 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator+=(ptrdiff_t __d) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b.operator+=(__d); 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator+=(ptrdiff_t __d) volatile noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b.operator+=(__d); 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator-=(ptrdiff_t __d) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b.operator-=(__d); 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: operator-=(ptrdiff_t __d) volatile noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b.operator-=(__d); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: is_lock_free() const noexcept 194s 1515: { return _M_b.is_lock_free(); } 194s 1515: 194s 1515: bool 194s 1515: is_lock_free() const volatile noexcept 194s 1515: { return _M_b.is_lock_free(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: store(__pointer_type __p, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return _M_b.store(__p, __m); } 194s 1515: 194s 1515: void 194s 1515: store(__pointer_type __p, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return _M_b.store(__p, __m); } 194s 1515: 194s 1515: __pointer_type 194s 1515: load(memory_order __m = memory_order_seq_cst) const noexcept 194s 1515: { return _M_b.load(__m); } 194s 1515: 194s 1515: __pointer_type 194s 1515: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 194s 1515: { return _M_b.load(__m); } 194s 1515: 194s 1515: __pointer_type 194s 1515: exchange(__pointer_type __p, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { return _M_b.exchange(__p, __m); } 194s 1515: 194s 1515: __pointer_type 194s 1515: exchange(__pointer_type __p, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { return _M_b.exchange(__p, __m); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m1, memory_order __m2) noexcept 194s 1515: { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) volatile noexcept 194s 1515: { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: return compare_exchange_weak(__p1, __p2, __m, 194s 1515: __cmpexch_failure_order(__m)); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: return compare_exchange_weak(__p1, __p2, __m, 194s 1515: __cmpexch_failure_order(__m)); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m1, memory_order __m2) noexcept 194s 1515: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) volatile noexcept 194s 1515: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: return _M_b.compare_exchange_strong(__p1, __p2, __m, 194s 1515: __cmpexch_failure_order(__m)); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: return _M_b.compare_exchange_strong(__p1, __p2, __m, 194s 1515: __cmpexch_failure_order(__m)); 194s 1515: } 194s 1515: # 672 "/usr/include/c++/15/atomic" 3 4 194s 1515: __pointer_type 194s 1515: fetch_add(ptrdiff_t __d, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b.fetch_add(__d, __m); 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: fetch_add(ptrdiff_t __d, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b.fetch_add(__d, __m); 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: fetch_sub(ptrdiff_t __d, 194s 1515: memory_order __m = memory_order_seq_cst) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b.fetch_sub(__d, __m); 194s 1515: } 194s 1515: 194s 1515: __pointer_type 194s 1515: fetch_sub(ptrdiff_t __d, 194s 1515: memory_order __m = memory_order_seq_cst) volatile noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: return _M_b.fetch_sub(__d, __m); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef char __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef signed char __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept= default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef unsigned char __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept= default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef short __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef unsigned short __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef int __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef unsigned int __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef long __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef unsigned long __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef long long __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef unsigned long long __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef wchar_t __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: # 1017 "/usr/include/c++/15/atomic" 3 4 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef char16_t __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct atomic : __atomic_base 194s 1515: { 194s 1515: typedef char32_t __integral_type; 194s 1515: typedef __atomic_base __base_type; 194s 1515: 194s 1515: atomic() noexcept = default; 194s 1515: ~atomic() noexcept = default; 194s 1515: atomic(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) = delete; 194s 1515: atomic& operator=(const atomic&) volatile = delete; 194s 1515: 194s 1515: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 194s 1515: 194s 1515: using __base_type::operator __integral_type; 194s 1515: using __base_type::operator=; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_bool; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_char; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_schar; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uchar; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_short; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_ushort; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_long; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_ulong; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_llong; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_ullong; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_wchar_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_char16_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_char32_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int8_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint8_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int16_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint16_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int32_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint32_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int64_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint64_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int_least8_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint_least8_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int_least16_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint_least16_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int_least32_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint_least32_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int_least64_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint_least64_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int_fast8_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint_fast8_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int_fast16_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint_fast16_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int_fast32_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint_fast32_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_int_fast64_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uint_fast64_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_intptr_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uintptr_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_size_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_ptrdiff_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_intmax_t; 194s 1515: 194s 1515: 194s 1515: typedef atomic atomic_uintmax_t; 194s 1515: 194s 1515: 194s 1515: inline bool 194s 1515: atomic_flag_test_and_set_explicit(atomic_flag* __a, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->test_and_set(__m); } 194s 1515: 194s 1515: inline bool 194s 1515: atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->test_and_set(__m); } 194s 1515: # 1243 "/usr/include/c++/15/atomic" 3 4 194s 1515: inline void 194s 1515: atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept 194s 1515: { __a->clear(__m); } 194s 1515: 194s 1515: inline void 194s 1515: atomic_flag_clear_explicit(volatile atomic_flag* __a, 194s 1515: memory_order __m) noexcept 194s 1515: { __a->clear(__m); } 194s 1515: 194s 1515: inline bool 194s 1515: atomic_flag_test_and_set(atomic_flag* __a) noexcept 194s 1515: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } 194s 1515: 194s 1515: inline bool 194s 1515: atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept 194s 1515: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } 194s 1515: 194s 1515: inline void 194s 1515: atomic_flag_clear(atomic_flag* __a) noexcept 194s 1515: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } 194s 1515: 194s 1515: inline void 194s 1515: atomic_flag_clear(volatile atomic_flag* __a) noexcept 194s 1515: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } 194s 1515: # 1290 "/usr/include/c++/15/atomic" 3 4 194s 1515: template 194s 1515: using __atomic_val_t = __type_identity_t<_Tp>; 194s 1515: template 194s 1515: using __atomic_diff_t = typename atomic<_Tp>::difference_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: atomic_is_lock_free(const atomic<_ITp>* __a) noexcept 194s 1515: { return __a->is_lock_free(); } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept 194s 1515: { return __a->is_lock_free(); } 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: atomic_init(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 194s 1515: { __a->store(__i, memory_order_relaxed); } 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: atomic_init(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 194s 1515: { __a->store(__i, memory_order_relaxed); } 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: atomic_store_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { __a->store(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: atomic_store_explicit(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { __a->store(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept 194s 1515: { return __a->load(__m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_load_explicit(const volatile atomic<_ITp>* __a, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->load(__m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_exchange_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->exchange(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_exchange_explicit(volatile atomic<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->exchange(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp>* __i1, 194s 1515: __atomic_val_t<_ITp> __i2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) noexcept 194s 1515: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp>* __i1, 194s 1515: __atomic_val_t<_ITp> __i2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) noexcept 194s 1515: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp>* __i1, 194s 1515: __atomic_val_t<_ITp> __i2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) noexcept 194s 1515: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp>* __i1, 194s 1515: __atomic_val_t<_ITp> __i2, 194s 1515: memory_order __m1, 194s 1515: memory_order __m2) noexcept 194s 1515: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: atomic_store(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 194s 1515: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: atomic_store(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 194s 1515: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_load(const atomic<_ITp>* __a) noexcept 194s 1515: { return atomic_load_explicit(__a, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_load(const volatile atomic<_ITp>* __a) noexcept 194s 1515: { return atomic_load_explicit(__a, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_exchange(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 194s 1515: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_exchange(volatile atomic<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i) noexcept 194s 1515: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: atomic_compare_exchange_weak(atomic<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp>* __i1, 194s 1515: __atomic_val_t<_ITp> __i2) noexcept 194s 1515: { 194s 1515: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, 194s 1515: memory_order_seq_cst, 194s 1515: memory_order_seq_cst); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp>* __i1, 194s 1515: __atomic_val_t<_ITp> __i2) noexcept 194s 1515: { 194s 1515: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, 194s 1515: memory_order_seq_cst, 194s 1515: memory_order_seq_cst); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: atomic_compare_exchange_strong(atomic<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp>* __i1, 194s 1515: __atomic_val_t<_ITp> __i2) noexcept 194s 1515: { 194s 1515: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, 194s 1515: memory_order_seq_cst, 194s 1515: memory_order_seq_cst); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp>* __i1, 194s 1515: __atomic_val_t<_ITp> __i2) noexcept 194s 1515: { 194s 1515: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, 194s 1515: memory_order_seq_cst, 194s 1515: memory_order_seq_cst); 194s 1515: } 194s 1515: # 1496 "/usr/include/c++/15/atomic" 3 4 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_add_explicit(atomic<_ITp>* __a, 194s 1515: __atomic_diff_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->fetch_add(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_add_explicit(volatile atomic<_ITp>* __a, 194s 1515: __atomic_diff_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->fetch_add(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_sub_explicit(atomic<_ITp>* __a, 194s 1515: __atomic_diff_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->fetch_sub(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_sub_explicit(volatile atomic<_ITp>* __a, 194s 1515: __atomic_diff_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->fetch_sub(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->fetch_and(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->fetch_and(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->fetch_or(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->fetch_or(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->fetch_xor(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i, 194s 1515: memory_order __m) noexcept 194s 1515: { return __a->fetch_xor(__i, __m); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_add(atomic<_ITp>* __a, 194s 1515: __atomic_diff_t<_ITp> __i) noexcept 194s 1515: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_add(volatile atomic<_ITp>* __a, 194s 1515: __atomic_diff_t<_ITp> __i) noexcept 194s 1515: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_sub(atomic<_ITp>* __a, 194s 1515: __atomic_diff_t<_ITp> __i) noexcept 194s 1515: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_sub(volatile atomic<_ITp>* __a, 194s 1515: __atomic_diff_t<_ITp> __i) noexcept 194s 1515: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_and(__atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i) noexcept 194s 1515: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_and(volatile __atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i) noexcept 194s 1515: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_or(__atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i) noexcept 194s 1515: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_or(volatile __atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i) noexcept 194s 1515: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_xor(__atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i) noexcept 194s 1515: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: 194s 1515: template 194s 1515: inline _ITp 194s 1515: atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, 194s 1515: __atomic_val_t<_ITp> __i) noexcept 194s 1515: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } 194s 1515: # 1797 "/usr/include/c++/15/atomic" 3 4 194s 1515: 194s 1515: } 194s 1515: # 3173 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/mutex" 1 3 4 194s 1515: # 42 "/usr/include/c++/15/mutex" 3 4 194s 1515: # 1 "/usr/include/c++/15/tuple" 1 3 4 194s 1515: # 41 "/usr/include/c++/15/tuple" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/uses_allocator.h" 1 3 4 194s 1515: # 40 "/usr/include/c++/15/bits/uses_allocator.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct __erased_type { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __is_erased_or_convertible 194s 1515: = __or_, is_same<_Tp, __erased_type>>; 194s 1515: 194s 1515: 194s 1515: struct allocator_arg_t { explicit allocator_arg_t() = default; }; 194s 1515: 194s 1515: constexpr allocator_arg_t allocator_arg = 194s 1515: allocator_arg_t(); 194s 1515: 194s 1515: template> 194s 1515: struct __uses_allocator_helper 194s 1515: : false_type { }; 194s 1515: 194s 1515: template 194s 1515: struct __uses_allocator_helper<_Tp, _Alloc, 194s 1515: __void_t> 194s 1515: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct uses_allocator 194s 1515: : __uses_allocator_helper<_Tp, _Alloc>::type 194s 1515: { }; 194s 1515: 194s 1515: struct __uses_alloc_base { }; 194s 1515: 194s 1515: struct __uses_alloc0 : __uses_alloc_base 194s 1515: { 194s 1515: struct _Sink { void operator=(const void*) { } } _M_a; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; 194s 1515: 194s 1515: template 194s 1515: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; 194s 1515: 194s 1515: template 194s 1515: struct __uses_alloc; 194s 1515: 194s 1515: template 194s 1515: struct __uses_alloc 194s 1515: : __conditional_t< 194s 1515: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value, 194s 1515: __uses_alloc1<_Alloc>, 194s 1515: __uses_alloc2<_Alloc>> 194s 1515: { 194s 1515: 194s 1515: 194s 1515: static_assert(__or_< 194s 1515: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>, 194s 1515: is_constructible<_Tp, _Args..., const _Alloc&>>::value, 194s 1515: "construction with an allocator must be possible" 194s 1515: " if uses_allocator is true"); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __uses_alloc 194s 1515: : __uses_alloc0 { }; 194s 1515: 194s 1515: template 194s 1515: using __uses_alloc_t = 194s 1515: __uses_alloc::value, _Tp, _Alloc, _Args...>; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline __uses_alloc_t<_Tp, _Alloc, _Args...> 194s 1515: __use_alloc(const _Alloc& __a) 194s 1515: { 194s 1515: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; 194s 1515: __ret._M_a = std::__addressof(__a); 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __use_alloc(const _Alloc&&) = delete; 194s 1515: # 142 "/usr/include/c++/15/bits/uses_allocator.h" 3 4 194s 1515: template class _Predicate, 194s 1515: typename _Tp, typename _Alloc, typename... _Args> 194s 1515: struct __is_uses_allocator_predicate 194s 1515: : __conditional_t::value, 194s 1515: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, 194s 1515: _Predicate<_Tp, _Args..., _Alloc>>, 194s 1515: _Predicate<_Tp, _Args...>> { }; 194s 1515: 194s 1515: template 194s 1515: struct __is_uses_allocator_constructible 194s 1515: : __is_uses_allocator_predicate 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __is_nothrow_uses_allocator_constructible 194s 1515: : __is_uses_allocator_predicate 194s 1515: { }; 194s 1515: # 175 "/usr/include/c++/15/bits/uses_allocator.h" 3 4 194s 1515: template 194s 1515: void __uses_allocator_construct_impl(__uses_alloc0, _Tp* __ptr, 194s 1515: _Args&&... __args) 194s 1515: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } 194s 1515: 194s 1515: template 194s 1515: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, 194s 1515: _Args&&... __args) 194s 1515: { 194s 1515: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, 194s 1515: _Args&&... __args) 194s 1515: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } 194s 1515: 194s 1515: template 194s 1515: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, 194s 1515: _Args&&... __args) 194s 1515: { 194s 1515: std::__uses_allocator_construct_impl( 194s 1515: std::__use_alloc<_Tp, _Alloc, _Args...>(__a), __ptr, 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 42 "/usr/include/c++/15/tuple" 2 3 4 194s 1515: # 57 "/usr/include/c++/15/tuple" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 58 "/usr/include/c++/15/tuple" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class tuple; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __is_empty_non_tuple : is_empty<_Tp> { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __is_empty_non_tuple> : false_type { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __empty_not_final 194s 1515: = __conditional_t<__is_final(_Tp), false_type, 194s 1515: __is_empty_non_tuple<_Tp>>; 194s 1515: 194s 1515: template::value> 194s 1515: struct _Head_base; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Head_base<_Idx, _Head, true> 194s 1515: { 194s 1515: constexpr _Head_base() 194s 1515: : _M_head_impl() { } 194s 1515: 194s 1515: constexpr _Head_base(const _Head& __h) 194s 1515: : _M_head_impl(__h) { } 194s 1515: 194s 1515: constexpr _Head_base(const _Head_base&) = default; 194s 1515: constexpr _Head_base(_Head_base&&) = default; 194s 1515: 194s 1515: template 194s 1515: constexpr _Head_base(_UHead&& __h) 194s 1515: : _M_head_impl(std::forward<_UHead>(__h)) { } 194s 1515: 194s 1515: 194s 1515: _Head_base(allocator_arg_t, __uses_alloc0) 194s 1515: : _M_head_impl() { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 194s 1515: : _M_head_impl(allocator_arg, *__a._M_a) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 194s 1515: : _M_head_impl(*__a._M_a) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Head_base(__uses_alloc0, _UHead&& __uhead) 194s 1515: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 194s 1515: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 194s 1515: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 194s 1515: 194s 1515: static constexpr _Head& 194s 1515: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 194s 1515: 194s 1515: static constexpr const _Head& 194s 1515: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 194s 1515: 194s 1515: [[__no_unique_address__]] _Head _M_head_impl; 194s 1515: }; 194s 1515: # 199 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: struct _Head_base<_Idx, _Head, false> 194s 1515: { 194s 1515: constexpr _Head_base() 194s 1515: : _M_head_impl() { } 194s 1515: 194s 1515: constexpr _Head_base(const _Head& __h) 194s 1515: : _M_head_impl(__h) { } 194s 1515: 194s 1515: constexpr _Head_base(const _Head_base&) = default; 194s 1515: constexpr _Head_base(_Head_base&&) = default; 194s 1515: 194s 1515: template 194s 1515: constexpr _Head_base(_UHead&& __h) 194s 1515: : _M_head_impl(std::forward<_UHead>(__h)) { } 194s 1515: 194s 1515: 194s 1515: _Head_base(allocator_arg_t, __uses_alloc0) 194s 1515: : _M_head_impl() { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 194s 1515: : _M_head_impl(allocator_arg, *__a._M_a) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 194s 1515: : _M_head_impl(*__a._M_a) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Head_base(__uses_alloc0, _UHead&& __uhead) 194s 1515: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 194s 1515: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 194s 1515: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 194s 1515: 194s 1515: static constexpr _Head& 194s 1515: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 194s 1515: 194s 1515: static constexpr const _Head& 194s 1515: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 194s 1515: 194s 1515: _Head _M_head_impl; 194s 1515: }; 194s 1515: # 272 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: struct _Tuple_impl; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Tuple_impl<_Idx, _Head, _Tail...> 194s 1515: : public _Tuple_impl<_Idx + 1, _Tail...>, 194s 1515: private _Head_base<_Idx, _Head> 194s 1515: { 194s 1515: template friend struct _Tuple_impl; 194s 1515: 194s 1515: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; 194s 1515: typedef _Head_base<_Idx, _Head> _Base; 194s 1515: 194s 1515: static constexpr _Head& 194s 1515: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 194s 1515: 194s 1515: static constexpr const _Head& 194s 1515: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 194s 1515: 194s 1515: static constexpr _Inherited& 194s 1515: _M_tail(_Tuple_impl& __t) noexcept { return __t; } 194s 1515: 194s 1515: static constexpr const _Inherited& 194s 1515: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } 194s 1515: 194s 1515: constexpr _Tuple_impl() 194s 1515: : _Inherited(), _Base() { } 194s 1515: 194s 1515: explicit constexpr 194s 1515: _Tuple_impl(const _Head& __head, const _Tail&... __tail) 194s 1515: : _Inherited(__tail...), _Base(__head) 194s 1515: { } 194s 1515: 194s 1515: template> 194s 1515: explicit constexpr 194s 1515: _Tuple_impl(_UHead&& __head, _UTail&&... __tail) 194s 1515: : _Inherited(std::forward<_UTail>(__tail)...), 194s 1515: _Base(std::forward<_UHead>(__head)) 194s 1515: { } 194s 1515: 194s 1515: constexpr _Tuple_impl(const _Tuple_impl&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 194s 1515: 194s 1515: _Tuple_impl(_Tuple_impl&&) = default; 194s 1515: 194s 1515: template 194s 1515: constexpr 194s 1515: _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) 194s 1515: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 194s 1515: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: constexpr 194s 1515: _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 194s 1515: : _Inherited(std::move 194s 1515: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 194s 1515: _Base(std::forward<_UHead> 194s 1515: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) 194s 1515: { } 194s 1515: # 368 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 194s 1515: : _Inherited(__tag, __a), 194s 1515: _Base(__tag, __use_alloc<_Head>(__a)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const _Head& __head, const _Tail&... __tail) 194s 1515: : _Inherited(__tag, __a, __tail...), 194s 1515: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) 194s 1515: { } 194s 1515: 194s 1515: template> 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: _UHead&& __head, _UTail&&... __tail) 194s 1515: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), 194s 1515: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 194s 1515: std::forward<_UHead>(__head)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const _Tuple_impl& __in) 194s 1515: : _Inherited(__tag, __a, _M_tail(__in)), 194s 1515: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: _Tuple_impl&& __in) 194s 1515: : _Inherited(__tag, __a, std::move(_M_tail(__in))), 194s 1515: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 194s 1515: std::forward<_Head>(_M_head(__in))) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const _Tuple_impl<_Idx, _UHead, _UTails...>& __in) 194s 1515: : _Inherited(__tag, __a, 194s 1515: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)), 194s 1515: _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), 194s 1515: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 194s 1515: : _Inherited(__tag, __a, std::move 194s 1515: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 194s 1515: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 194s 1515: std::forward<_UHead> 194s 1515: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) 194s 1515: { } 194s 1515: # 463 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_assign(const _Tuple_impl<_Idx, _UElements...>& __in) 194s 1515: { 194s 1515: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); 194s 1515: _M_tail(*this)._M_assign( 194s 1515: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_assign(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 194s 1515: { 194s 1515: _M_head(*this) = std::forward<_UHead> 194s 1515: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); 194s 1515: _M_tail(*this)._M_assign( 194s 1515: std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))); 194s 1515: } 194s 1515: # 523 "/usr/include/c++/15/tuple" 3 4 194s 1515: protected: 194s 1515: 194s 1515: void 194s 1515: _M_swap(_Tuple_impl& __in) 194s 1515: { 194s 1515: using std::swap; 194s 1515: swap(_M_head(*this), _M_head(__in)); 194s 1515: _Inherited::_M_swap(_M_tail(__in)); 194s 1515: } 194s 1515: # 542 "/usr/include/c++/15/tuple" 3 4 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Tuple_impl<_Idx, _Head> 194s 1515: : private _Head_base<_Idx, _Head> 194s 1515: { 194s 1515: template friend struct _Tuple_impl; 194s 1515: 194s 1515: typedef _Head_base<_Idx, _Head> _Base; 194s 1515: 194s 1515: static constexpr _Head& 194s 1515: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 194s 1515: 194s 1515: static constexpr const _Head& 194s 1515: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 194s 1515: 194s 1515: constexpr 194s 1515: _Tuple_impl() 194s 1515: : _Base() { } 194s 1515: 194s 1515: explicit constexpr 194s 1515: _Tuple_impl(const _Head& __head) 194s 1515: : _Base(__head) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: explicit constexpr 194s 1515: _Tuple_impl(_UHead&& __head) 194s 1515: : _Base(std::forward<_UHead>(__head)) 194s 1515: { } 194s 1515: 194s 1515: constexpr _Tuple_impl(const _Tuple_impl&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: constexpr 194s 1515: _Tuple_impl(_Tuple_impl&& __in) 194s 1515: noexcept(is_nothrow_move_constructible<_Head>::value) 194s 1515: : _Base(static_cast<_Base&&>(__in)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr 194s 1515: _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) 194s 1515: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: constexpr 194s 1515: _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) 194s 1515: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 194s 1515: { } 194s 1515: # 624 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 194s 1515: : _Base(__tag, __use_alloc<_Head>(__a)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 194s 1515: const _Head& __head) 194s 1515: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), __head) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 194s 1515: _UHead&& __head) 194s 1515: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 194s 1515: std::forward<_UHead>(__head)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 194s 1515: const _Tuple_impl& __in) 194s 1515: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), _M_head(__in)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 194s 1515: _Tuple_impl&& __in) 194s 1515: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 194s 1515: std::forward<_Head>(_M_head(__in))) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 194s 1515: const _Tuple_impl<_Idx, _UHead>& __in) 194s 1515: : _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), 194s 1515: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 194s 1515: _Tuple_impl<_Idx, _UHead>&& __in) 194s 1515: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 194s 1515: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 194s 1515: { } 194s 1515: # 703 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_assign(const _Tuple_impl<_Idx, _UHead>& __in) 194s 1515: { 194s 1515: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: void 194s 1515: _M_assign(_Tuple_impl<_Idx, _UHead>&& __in) 194s 1515: { 194s 1515: _M_head(*this) 194s 1515: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); 194s 1515: } 194s 1515: # 749 "/usr/include/c++/15/tuple" 3 4 194s 1515: protected: 194s 1515: 194s 1515: void 194s 1515: _M_swap(_Tuple_impl& __in) 194s 1515: { 194s 1515: using std::swap; 194s 1515: swap(_M_head(*this), _M_head(__in)); 194s 1515: } 194s 1515: # 766 "/usr/include/c++/15/tuple" 3 4 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _TupleConstraints 194s 1515: { 194s 1515: template 194s 1515: using __constructible = __and_...>; 194s 1515: 194s 1515: template 194s 1515: using __convertible = __and_...>; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __is_implicitly_constructible() 194s 1515: { 194s 1515: return __and_<__constructible<_UTypes...>, 194s 1515: __convertible<_UTypes...> 194s 1515: >::value; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __is_explicitly_constructible() 194s 1515: { 194s 1515: return __and_<__constructible<_UTypes...>, 194s 1515: __not_<__convertible<_UTypes...>> 194s 1515: >::value; 194s 1515: } 194s 1515: 194s 1515: static constexpr bool __is_implicitly_default_constructible() 194s 1515: { 194s 1515: return __and_... 194s 1515: >::value; 194s 1515: } 194s 1515: 194s 1515: static constexpr bool __is_explicitly_default_constructible() 194s 1515: { 194s 1515: return __and_..., 194s 1515: __not_<__and_< 194s 1515: std::__is_implicitly_default_constructible<_Types>...> 194s 1515: >>::value; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _TupleConstraints 194s 1515: { 194s 1515: template 194s 1515: static constexpr bool __is_implicitly_constructible() 194s 1515: { return false; } 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __is_explicitly_constructible() 194s 1515: { return false; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class tuple : public _Tuple_impl<0, _Elements...> 194s 1515: { 194s 1515: using _Inherited = _Tuple_impl<0, _Elements...>; 194s 1515: # 1352 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: using _TCC = _TupleConstraints<_Cond, _Elements...>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using _ImplicitDefaultCtor = __enable_if_t< 194s 1515: _TCC<_Dummy>::__is_implicitly_default_constructible(), 194s 1515: bool>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using _ExplicitDefaultCtor = __enable_if_t< 194s 1515: _TCC<_Dummy>::__is_explicitly_default_constructible(), 194s 1515: bool>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using _ImplicitCtor = __enable_if_t< 194s 1515: _TCC<_Cond>::template __is_implicitly_constructible<_Args...>(), 194s 1515: bool>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using _ExplicitCtor = __enable_if_t< 194s 1515: _TCC<_Cond>::template __is_explicitly_constructible<_Args...>(), 194s 1515: bool>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __nothrow_constructible() 194s 1515: { 194s 1515: return 194s 1515: __and_...>::value; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __valid_args() 194s 1515: { 194s 1515: return sizeof...(_Elements) == 1 194s 1515: && !is_same>::value; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __valid_args() 194s 1515: { return (sizeof...(_Tail) + 2) == sizeof...(_Elements); } 194s 1515: # 1409 "/usr/include/c++/15/tuple" 3 4 194s 1515: template> 194s 1515: struct _UseOtherCtor 194s 1515: : false_type 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Up>> 194s 1515: : __or_, is_constructible<_Tp, _Tuple>>::type 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Tp>> 194s 1515: : true_type 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __use_other_ctor() 194s 1515: { return _UseOtherCtor<_Tuple>::value; } 194s 1515: # 1455 "/usr/include/c++/15/tuple" 3 4 194s 1515: public: 194s 1515: template::value> = true> 194s 1515: constexpr 194s 1515: tuple() 194s 1515: noexcept(__and_...>::value) 194s 1515: : _Inherited() { } 194s 1515: 194s 1515: template::value> = false> 194s 1515: explicit constexpr 194s 1515: tuple() 194s 1515: noexcept(__and_...>::value) 194s 1515: : _Inherited() { } 194s 1515: 194s 1515: template= 1), 194s 1515: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 194s 1515: constexpr 194s 1515: tuple(const _Elements&... __elements) 194s 1515: noexcept(__nothrow_constructible()) 194s 1515: : _Inherited(__elements...) { } 194s 1515: 194s 1515: template= 1), 194s 1515: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 194s 1515: explicit constexpr 194s 1515: tuple(const _Elements&... __elements) 194s 1515: noexcept(__nothrow_constructible()) 194s 1515: : _Inherited(__elements...) { } 194s 1515: 194s 1515: template(), 194s 1515: _ImplicitCtor<_Valid, _UElements...> = true> 194s 1515: constexpr 194s 1515: tuple(_UElements&&... __elements) 194s 1515: noexcept(__nothrow_constructible<_UElements...>()) 194s 1515: : _Inherited(std::forward<_UElements>(__elements)...) 194s 1515: { ; } 194s 1515: 194s 1515: template(), 194s 1515: _ExplicitCtor<_Valid, _UElements...> = false> 194s 1515: explicit constexpr 194s 1515: tuple(_UElements&&... __elements) 194s 1515: noexcept(__nothrow_constructible<_UElements...>()) 194s 1515: : _Inherited(std::forward<_UElements>(__elements)...) 194s 1515: { ; } 194s 1515: 194s 1515: constexpr tuple(const tuple&) = default; 194s 1515: 194s 1515: constexpr tuple(tuple&&) = default; 194s 1515: 194s 1515: template&>(), 194s 1515: _ImplicitCtor<_Valid, const _UElements&...> = true> 194s 1515: constexpr 194s 1515: tuple(const tuple<_UElements...>& __in) 194s 1515: noexcept(__nothrow_constructible()) 194s 1515: : _Inherited(static_cast&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template&>(), 194s 1515: _ExplicitCtor<_Valid, const _UElements&...> = false> 194s 1515: explicit constexpr 194s 1515: tuple(const tuple<_UElements...>& __in) 194s 1515: noexcept(__nothrow_constructible()) 194s 1515: : _Inherited(static_cast&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template&&>(), 194s 1515: _ImplicitCtor<_Valid, _UElements...> = true> 194s 1515: constexpr 194s 1515: tuple(tuple<_UElements...>&& __in) 194s 1515: noexcept(__nothrow_constructible<_UElements...>()) 194s 1515: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template&&>(), 194s 1515: _ExplicitCtor<_Valid, _UElements...> = false> 194s 1515: explicit constexpr 194s 1515: tuple(tuple<_UElements...>&& __in) 194s 1515: noexcept(__nothrow_constructible<_UElements...>()) 194s 1515: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template::value> = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a) 194s 1515: : _Inherited(__tag, __a) { } 194s 1515: 194s 1515: template::value> = false> 194s 1515: 194s 1515: explicit 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a) 194s 1515: : _Inherited(__tag, __a) { } 194s 1515: 194s 1515: template= 1), 194s 1515: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const _Elements&... __elements) 194s 1515: : _Inherited(__tag, __a, __elements...) { } 194s 1515: 194s 1515: template= 1), 194s 1515: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 194s 1515: 194s 1515: explicit 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const _Elements&... __elements) 194s 1515: : _Inherited(__tag, __a, __elements...) { } 194s 1515: 194s 1515: template(), 194s 1515: _ImplicitCtor<_Valid, _UElements...> = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: _UElements&&... __elements) 194s 1515: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 194s 1515: { ; } 194s 1515: 194s 1515: template(), 194s 1515: _ExplicitCtor<_Valid, _UElements...> = false> 194s 1515: 194s 1515: explicit 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: _UElements&&... __elements) 194s 1515: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 194s 1515: { ; } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 194s 1515: : _Inherited(__tag, __a, static_cast(__in)) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 194s 1515: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 194s 1515: 194s 1515: template&>(), 194s 1515: _ImplicitCtor<_Valid, const _UElements&...> = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const tuple<_UElements...>& __in) 194s 1515: : _Inherited(__tag, __a, 194s 1515: static_cast&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template&>(), 194s 1515: _ExplicitCtor<_Valid, const _UElements&...> = false> 194s 1515: 194s 1515: explicit 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const tuple<_UElements...>& __in) 194s 1515: : _Inherited(__tag, __a, 194s 1515: static_cast&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template&&>(), 194s 1515: _ImplicitCtor<_Valid, _UElements...> = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: tuple<_UElements...>&& __in) 194s 1515: : _Inherited(__tag, __a, 194s 1515: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template&&>(), 194s 1515: _ExplicitCtor<_Valid, _UElements...> = false> 194s 1515: 194s 1515: explicit 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: tuple<_UElements...>&& __in) 194s 1515: : _Inherited(__tag, __a, 194s 1515: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 194s 1515: { ; } 194s 1515: # 1887 "/usr/include/c++/15/tuple" 3 4 194s 1515: private: 194s 1515: template 194s 1515: static constexpr 194s 1515: __enable_if_t 194s 1515: __assignable() 194s 1515: { return __and_...>::value; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __nothrow_assignable() 194s 1515: { 194s 1515: return 194s 1515: __and_...>::value; 194s 1515: } 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: tuple& 194s 1515: operator=(__conditional_t<__assignable(), 194s 1515: const tuple&, 194s 1515: const __nonesuch&> __in) 194s 1515: noexcept(__nothrow_assignable()) 194s 1515: { 194s 1515: this->_M_assign(__in); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: tuple& 194s 1515: operator=(__conditional_t<__assignable<_Elements...>(), 194s 1515: tuple&&, 194s 1515: __nonesuch&&> __in) 194s 1515: noexcept(__nothrow_assignable<_Elements...>()) 194s 1515: { 194s 1515: this->_M_assign(std::move(__in)); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: __enable_if_t<__assignable(), tuple&> 194s 1515: operator=(const tuple<_UElements...>& __in) 194s 1515: noexcept(__nothrow_assignable()) 194s 1515: { 194s 1515: this->_M_assign(__in); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: __enable_if_t<__assignable<_UElements...>(), tuple&> 194s 1515: operator=(tuple<_UElements...>&& __in) 194s 1515: noexcept(__nothrow_assignable<_UElements...>()) 194s 1515: { 194s 1515: this->_M_assign(std::move(__in)); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: swap(tuple& __in) 194s 1515: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value) 194s 1515: { _Inherited::_M_swap(__in); } 194s 1515: # 1967 "/usr/include/c++/15/tuple" 3 4 194s 1515: }; 194s 1515: # 1983 "/usr/include/c++/15/tuple" 3 4 194s 1515: template<> 194s 1515: class tuple<> 194s 1515: { 194s 1515: public: 194s 1515: 194s 1515: void swap(tuple&) noexcept { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: tuple() = default; 194s 1515: 194s 1515: template 194s 1515: 194s 1515: tuple(allocator_arg_t, const _Alloc&) noexcept { } 194s 1515: template 194s 1515: 194s 1515: tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept { } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> 194s 1515: { 194s 1515: typedef _Tuple_impl<0, _T1, _T2> _Inherited; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using _ImplicitDefaultCtor = __enable_if_t< 194s 1515: _TupleConstraints<_Dummy, _U1, _U2>:: 194s 1515: __is_implicitly_default_constructible(), 194s 1515: bool>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using _ExplicitDefaultCtor = __enable_if_t< 194s 1515: _TupleConstraints<_Dummy, _U1, _U2>:: 194s 1515: __is_explicitly_default_constructible(), 194s 1515: bool>; 194s 1515: 194s 1515: template 194s 1515: using _TCC = _TupleConstraints<_Dummy, _T1, _T2>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using _ImplicitCtor = __enable_if_t< 194s 1515: _TCC<_Cond>::template __is_implicitly_constructible<_U1, _U2>(), 194s 1515: bool>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using _ExplicitCtor = __enable_if_t< 194s 1515: _TCC<_Cond>::template __is_explicitly_constructible<_U1, _U2>(), 194s 1515: bool>; 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __assignable() 194s 1515: { 194s 1515: return __and_, 194s 1515: is_assignable<_T2&, _U2>>::value; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __nothrow_assignable() 194s 1515: { 194s 1515: return __and_, 194s 1515: is_nothrow_assignable<_T2&, _U2>>::value; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __nothrow_constructible() 194s 1515: { 194s 1515: return __and_, 194s 1515: is_nothrow_constructible<_T2, _U2>>::value; 194s 1515: } 194s 1515: 194s 1515: static constexpr bool __nothrow_default_constructible() 194s 1515: { 194s 1515: return __and_, 194s 1515: is_nothrow_default_constructible<_T2>>::value; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: static constexpr bool __is_alloc_arg() 194s 1515: { return is_same<__remove_cvref_t<_U1>, allocator_arg_t>::value; } 194s 1515: # 2086 "/usr/include/c++/15/tuple" 3 4 194s 1515: public: 194s 1515: template = true> 194s 1515: constexpr 194s 1515: tuple() 194s 1515: noexcept(__nothrow_default_constructible()) 194s 1515: : _Inherited() { } 194s 1515: 194s 1515: template = false> 194s 1515: explicit constexpr 194s 1515: tuple() 194s 1515: noexcept(__nothrow_default_constructible()) 194s 1515: : _Inherited() { } 194s 1515: 194s 1515: template = true> 194s 1515: constexpr 194s 1515: tuple(const _T1& __a1, const _T2& __a2) 194s 1515: noexcept(__nothrow_constructible()) 194s 1515: : _Inherited(__a1, __a2) { } 194s 1515: 194s 1515: template = false> 194s 1515: explicit constexpr 194s 1515: tuple(const _T1& __a1, const _T2& __a2) 194s 1515: noexcept(__nothrow_constructible()) 194s 1515: : _Inherited(__a1, __a2) { } 194s 1515: 194s 1515: template(), _U1, _U2> = true> 194s 1515: constexpr 194s 1515: tuple(_U1&& __a1, _U2&& __a2) 194s 1515: noexcept(__nothrow_constructible<_U1, _U2>()) 194s 1515: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) 194s 1515: { ; } 194s 1515: 194s 1515: template(), _U1, _U2> = false> 194s 1515: explicit constexpr 194s 1515: tuple(_U1&& __a1, _U2&& __a2) 194s 1515: noexcept(__nothrow_constructible<_U1, _U2>()) 194s 1515: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) 194s 1515: { ; } 194s 1515: 194s 1515: constexpr tuple(const tuple&) = default; 194s 1515: 194s 1515: constexpr tuple(tuple&&) = default; 194s 1515: 194s 1515: template = true> 194s 1515: constexpr 194s 1515: tuple(const tuple<_U1, _U2>& __in) 194s 1515: noexcept(__nothrow_constructible()) 194s 1515: : _Inherited(static_cast&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template = false> 194s 1515: explicit constexpr 194s 1515: tuple(const tuple<_U1, _U2>& __in) 194s 1515: noexcept(__nothrow_constructible()) 194s 1515: : _Inherited(static_cast&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template = true> 194s 1515: constexpr 194s 1515: tuple(tuple<_U1, _U2>&& __in) 194s 1515: noexcept(__nothrow_constructible<_U1, _U2>()) 194s 1515: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template = false> 194s 1515: explicit constexpr 194s 1515: tuple(tuple<_U1, _U2>&& __in) 194s 1515: noexcept(__nothrow_constructible<_U1, _U2>()) 194s 1515: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template = true> 194s 1515: constexpr 194s 1515: tuple(const pair<_U1, _U2>& __in) 194s 1515: noexcept(__nothrow_constructible()) 194s 1515: : _Inherited(__in.first, __in.second) 194s 1515: { ; } 194s 1515: 194s 1515: template = false> 194s 1515: explicit constexpr 194s 1515: tuple(const pair<_U1, _U2>& __in) 194s 1515: noexcept(__nothrow_constructible()) 194s 1515: : _Inherited(__in.first, __in.second) 194s 1515: { ; } 194s 1515: 194s 1515: template = true> 194s 1515: constexpr 194s 1515: tuple(pair<_U1, _U2>&& __in) 194s 1515: noexcept(__nothrow_constructible<_U1, _U2>()) 194s 1515: : _Inherited(std::forward<_U1>(__in.first), 194s 1515: std::forward<_U2>(__in.second)) 194s 1515: { ; } 194s 1515: 194s 1515: template = false> 194s 1515: explicit constexpr 194s 1515: tuple(pair<_U1, _U2>&& __in) 194s 1515: noexcept(__nothrow_constructible<_U1, _U2>()) 194s 1515: : _Inherited(std::forward<_U1>(__in.first), 194s 1515: std::forward<_U2>(__in.second)) 194s 1515: { ; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template::value, _T1, _T2> = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a) 194s 1515: : _Inherited(__tag, __a) { } 194s 1515: 194s 1515: template::value, _T1, _T2> = false> 194s 1515: 194s 1515: explicit 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a) 194s 1515: : _Inherited(__tag, __a) { } 194s 1515: 194s 1515: template = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const _T1& __a1, const _T2& __a2) 194s 1515: : _Inherited(__tag, __a, __a1, __a2) { } 194s 1515: 194s 1515: template = false> 194s 1515: explicit 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const _T1& __a1, const _T2& __a2) 194s 1515: : _Inherited(__tag, __a, __a1, __a2) { } 194s 1515: 194s 1515: template = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) 194s 1515: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 194s 1515: std::forward<_U2>(__a2)) 194s 1515: { ; } 194s 1515: 194s 1515: template = false> 194s 1515: explicit 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: _U1&& __a1, _U2&& __a2) 194s 1515: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 194s 1515: std::forward<_U2>(__a2)) 194s 1515: { ; } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 194s 1515: : _Inherited(__tag, __a, static_cast(__in)) { } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 194s 1515: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 194s 1515: 194s 1515: template = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const tuple<_U1, _U2>& __in) 194s 1515: : _Inherited(__tag, __a, 194s 1515: static_cast&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template = false> 194s 1515: explicit 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const tuple<_U1, _U2>& __in) 194s 1515: : _Inherited(__tag, __a, 194s 1515: static_cast&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 194s 1515: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template = false> 194s 1515: explicit 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 194s 1515: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 194s 1515: { ; } 194s 1515: 194s 1515: template = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const pair<_U1, _U2>& __in) 194s 1515: : _Inherited(__tag, __a, __in.first, __in.second) 194s 1515: { ; } 194s 1515: 194s 1515: template = false> 194s 1515: explicit 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, 194s 1515: const pair<_U1, _U2>& __in) 194s 1515: : _Inherited(__tag, __a, __in.first, __in.second) 194s 1515: { ; } 194s 1515: 194s 1515: template = true> 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 194s 1515: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 194s 1515: std::forward<_U2>(__in.second)) 194s 1515: { ; } 194s 1515: 194s 1515: template = false> 194s 1515: explicit 194s 1515: 194s 1515: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 194s 1515: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 194s 1515: std::forward<_U2>(__in.second)) 194s 1515: { ; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: tuple& 194s 1515: operator=(__conditional_t<__assignable(), 194s 1515: const tuple&, 194s 1515: const __nonesuch&> __in) 194s 1515: noexcept(__nothrow_assignable()) 194s 1515: { 194s 1515: this->_M_assign(__in); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: tuple& 194s 1515: operator=(__conditional_t<__assignable<_T1, _T2>(), 194s 1515: tuple&&, 194s 1515: __nonesuch&&> __in) 194s 1515: noexcept(__nothrow_assignable<_T1, _T2>()) 194s 1515: { 194s 1515: this->_M_assign(std::move(__in)); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: __enable_if_t<__assignable(), tuple&> 194s 1515: operator=(const tuple<_U1, _U2>& __in) 194s 1515: noexcept(__nothrow_assignable()) 194s 1515: { 194s 1515: this->_M_assign(__in); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 194s 1515: operator=(tuple<_U1, _U2>&& __in) 194s 1515: noexcept(__nothrow_assignable<_U1, _U2>()) 194s 1515: { 194s 1515: this->_M_assign(std::move(__in)); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: __enable_if_t<__assignable(), tuple&> 194s 1515: operator=(const pair<_U1, _U2>& __in) 194s 1515: noexcept(__nothrow_assignable()) 194s 1515: { 194s 1515: this->_M_head(*this) = __in.first; 194s 1515: this->_M_tail(*this)._M_head(*this) = __in.second; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 194s 1515: operator=(pair<_U1, _U2>&& __in) 194s 1515: noexcept(__nothrow_assignable<_U1, _U2>()) 194s 1515: { 194s 1515: this->_M_head(*this) = std::forward<_U1>(__in.first); 194s 1515: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: swap(tuple& __in) 194s 1515: noexcept(__and_<__is_nothrow_swappable<_T1>, 194s 1515: __is_nothrow_swappable<_T2>>::value) 194s 1515: { _Inherited::_M_swap(__in); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct tuple_size> 194s 1515: : public integral_constant { }; 194s 1515: # 2418 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: struct tuple_element<__i, tuple<_Types...>> 194s 1515: { 194s 1515: static_assert(__i < sizeof...(_Types), "tuple index must be in range"); 194s 1515: 194s 1515: using type = typename _Nth_type<__i, _Types...>::type; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: constexpr _Head& 194s 1515: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 194s 1515: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 194s 1515: 194s 1515: template 194s 1515: constexpr const _Head& 194s 1515: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 194s 1515: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __enable_if_t<(__i >= sizeof...(_Types))> 194s 1515: __get_helper(const tuple<_Types...>&) = delete; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 194s 1515: get(tuple<_Elements...>& __t) noexcept 194s 1515: { return std::__get_helper<__i>(__t); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 194s 1515: get(const tuple<_Elements...>& __t) noexcept 194s 1515: { return std::__get_helper<__i>(__t); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 194s 1515: get(tuple<_Elements...>&& __t) noexcept 194s 1515: { 194s 1515: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 194s 1515: return std::forward<__element_type>(std::__get_helper<__i>(__t)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 194s 1515: get(const tuple<_Elements...>&& __t) noexcept 194s 1515: { 194s 1515: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 194s 1515: return std::forward(std::__get_helper<__i>(__t)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr __enable_if_t<(__i >= sizeof...(_Elements))> 194s 1515: get(const tuple<_Elements...>&) = delete; 194s 1515: # 2578 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: struct __tuple_compare 194s 1515: { 194s 1515: static constexpr bool 194s 1515: __eq(const _Tp& __t, const _Up& __u) 194s 1515: { 194s 1515: return bool(std::get<__i>(__t) == std::get<__i>(__u)) 194s 1515: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); 194s 1515: } 194s 1515: 194s 1515: static constexpr bool 194s 1515: __less(const _Tp& __t, const _Up& __u) 194s 1515: { 194s 1515: return bool(std::get<__i>(__t) < std::get<__i>(__u)) 194s 1515: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) 194s 1515: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __tuple_compare<_Tp, _Up, __size, __size> 194s 1515: { 194s 1515: static constexpr bool 194s 1515: __eq(const _Tp&, const _Up&) { return true; } 194s 1515: 194s 1515: static constexpr bool 194s 1515: __less(const _Tp&, const _Up&) { return false; } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: constexpr bool 194s 1515: operator==(const tuple<_TElements...>& __t, 194s 1515: const tuple<_UElements...>& __u) 194s 1515: { 194s 1515: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 194s 1515: "tuple objects can only be compared if they have equal sizes."); 194s 1515: using __compare = __tuple_compare, 194s 1515: tuple<_UElements...>, 194s 1515: 0, sizeof...(_TElements)>; 194s 1515: return __compare::__eq(__t, __u); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: constexpr bool 194s 1515: operator<(const tuple<_TElements...>& __t, 194s 1515: const tuple<_UElements...>& __u) 194s 1515: { 194s 1515: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 194s 1515: "tuple objects can only be compared if they have equal sizes."); 194s 1515: using __compare = __tuple_compare, 194s 1515: tuple<_UElements...>, 194s 1515: 0, sizeof...(_TElements)>; 194s 1515: return __compare::__less(__t, __u); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: constexpr bool 194s 1515: operator!=(const tuple<_TElements...>& __t, 194s 1515: const tuple<_UElements...>& __u) 194s 1515: { return !(__t == __u); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: constexpr bool 194s 1515: operator>(const tuple<_TElements...>& __t, 194s 1515: const tuple<_UElements...>& __u) 194s 1515: { return __u < __t; } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: constexpr bool 194s 1515: operator<=(const tuple<_TElements...>& __t, 194s 1515: const tuple<_UElements...>& __u) 194s 1515: { return !(__u < __t); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: constexpr bool 194s 1515: operator>=(const tuple<_TElements...>& __t, 194s 1515: const tuple<_UElements...>& __u) 194s 1515: { return !(__t < __u); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr tuple::__type...> 194s 1515: make_tuple(_Elements&&... __args) 194s 1515: { 194s 1515: typedef tuple::__type...> 194s 1515: __result_type; 194s 1515: return __result_type(std::forward<_Elements>(__args)...); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr tuple<_Elements&&...> 194s 1515: forward_as_tuple(_Elements&&... __args) noexcept 194s 1515: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __make_tuple_impl; 194s 1515: 194s 1515: template 194s 1515: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> 194s 1515: : __make_tuple_impl<_Idx + 1, 194s 1515: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, 194s 1515: _Tuple, _Nm> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> 194s 1515: { 194s 1515: typedef tuple<_Tp...> __type; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __do_make_tuple 194s 1515: : __make_tuple_impl<0, tuple<>, _Tuple, tuple_size<_Tuple>::value> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __make_tuple 194s 1515: : public __do_make_tuple<__remove_cvref_t<_Tuple>> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __combine_tuples; 194s 1515: 194s 1515: template<> 194s 1515: struct __combine_tuples<> 194s 1515: { 194s 1515: typedef tuple<> __type; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __combine_tuples> 194s 1515: { 194s 1515: typedef tuple<_Ts...> __type; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __combine_tuples, tuple<_T2s...>, _Rem...> 194s 1515: { 194s 1515: typedef typename __combine_tuples, 194s 1515: _Rem...>::__type __type; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __tuple_cat_result 194s 1515: { 194s 1515: typedef typename __combine_tuples 194s 1515: ::__type...>::__type __type; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __make_1st_indices; 194s 1515: 194s 1515: template<> 194s 1515: struct __make_1st_indices<> 194s 1515: { 194s 1515: typedef _Index_tuple<> __type; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __make_1st_indices<_Tp, _Tpls...> 194s 1515: { 194s 1515: typedef typename _Build_index_tuple::type>::value>::__type __type; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __tuple_concater; 194s 1515: 194s 1515: template 194s 1515: struct __tuple_concater<_Ret, _Index_tuple<_Is...>, _Tp, _Tpls...> 194s 1515: { 194s 1515: template 194s 1515: static constexpr _Ret 194s 1515: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) 194s 1515: { 194s 1515: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 194s 1515: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; 194s 1515: return __next::_S_do(std::forward<_Tpls>(__tps)..., 194s 1515: std::forward<_Us>(__us)..., 194s 1515: std::get<_Is>(std::forward<_Tp>(__tp))...); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __tuple_concater<_Ret, _Index_tuple<>> 194s 1515: { 194s 1515: template 194s 1515: static constexpr _Ret 194s 1515: _S_do(_Us&&... __us) 194s 1515: { 194s 1515: return _Ret(std::forward<_Us>(__us)...); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __is_tuple_like_impl> : true_type 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template...>::value>::type> 194s 1515: 194s 1515: constexpr auto 194s 1515: tuple_cat(_Tpls&&... __tpls) 194s 1515: -> typename __tuple_cat_result<_Tpls...>::__type 194s 1515: { 194s 1515: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; 194s 1515: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 194s 1515: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; 194s 1515: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr tuple<_Elements&...> 194s 1515: tie(_Elements&... __args) noexcept 194s 1515: { return tuple<_Elements&...>(__args...); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: inline 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: 194s 1515: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) 194s 1515: noexcept(noexcept(__x.swap(__y))) 194s 1515: { __x.swap(__y); } 194s 1515: # 2855 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: struct uses_allocator, _Alloc> : true_type { }; 194s 1515: # 2867 "/usr/include/c++/15/tuple" 3 4 194s 1515: template 194s 1515: template 194s 1515: 194s 1515: inline 194s 1515: pair<_T1, _T2>:: 194s 1515: pair(piecewise_construct_t, 194s 1515: tuple<_Args1...> __first, tuple<_Args2...> __second) 194s 1515: : pair(__first, __second, 194s 1515: typename _Build_index_tuple::__type(), 194s 1515: typename _Build_index_tuple::__type()) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: inline 194s 1515: pair<_T1, _T2>:: 194s 1515: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, 194s 1515: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) 194s 1515: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), 194s 1515: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) 194s 1515: { } 194s 1515: # 3029 "/usr/include/c++/15/tuple" 3 4 194s 1515: 194s 1515: } 194s 1515: # 43 "/usr/include/c++/15/mutex" 2 3 4 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/chrono.h" 1 3 4 194s 1515: # 39 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/ratio" 1 3 4 194s 1515: # 45 "/usr/include/c++/15/ratio" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 46 "/usr/include/c++/15/ratio" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 61 "/usr/include/c++/15/ratio" 3 4 194s 1515: template 194s 1515: struct __static_sign 194s 1515: : integral_constant 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __static_abs 194s 1515: : integral_constant::value> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __static_gcd 194s 1515: : __static_gcd<_Qn, (_Pn % _Qn)> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __static_gcd<_Pn, 0> 194s 1515: : integral_constant::value> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __static_gcd<0, _Qn> 194s 1515: : integral_constant::value> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __safe_multiply 194s 1515: { 194s 1515: private: 194s 1515: static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 194s 1515: 194s 1515: static const uintmax_t __a0 = __static_abs<_Pn>::value % __c; 194s 1515: static const uintmax_t __a1 = __static_abs<_Pn>::value / __c; 194s 1515: static const uintmax_t __b0 = __static_abs<_Qn>::value % __c; 194s 1515: static const uintmax_t __b1 = __static_abs<_Qn>::value / __c; 194s 1515: 194s 1515: static_assert(__a1 == 0 || __b1 == 0, 194s 1515: "overflow in multiplication"); 194s 1515: static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1), 194s 1515: "overflow in multiplication"); 194s 1515: static_assert(__b0 * __a0 <= 0x7fffffffffffffffLL, 194s 1515: "overflow in multiplication"); 194s 1515: static_assert((__a0 * __b1 + __b0 * __a1) * __c 194s 1515: <= 0x7fffffffffffffffLL - __b0 * __a0, 194s 1515: "overflow in multiplication"); 194s 1515: 194s 1515: public: 194s 1515: static const intmax_t value = _Pn * _Qn; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __big_less 194s 1515: : integral_constant 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __big_add 194s 1515: { 194s 1515: static constexpr uintmax_t __lo = __lo1 + __lo2; 194s 1515: static constexpr uintmax_t __hi = (__hi1 + __hi2 + 194s 1515: (__lo1 + __lo2 < __lo1)); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __big_sub 194s 1515: { 194s 1515: static_assert(!__big_less<__hi1, __lo1, __hi2, __lo2>::value, 194s 1515: "Internal library error"); 194s 1515: static constexpr uintmax_t __lo = __lo1 - __lo2; 194s 1515: static constexpr uintmax_t __hi = (__hi1 - __hi2 - 194s 1515: (__lo1 < __lo2)); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __big_mul 194s 1515: { 194s 1515: private: 194s 1515: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 194s 1515: static constexpr uintmax_t __x0 = __x % __c; 194s 1515: static constexpr uintmax_t __x1 = __x / __c; 194s 1515: static constexpr uintmax_t __y0 = __y % __c; 194s 1515: static constexpr uintmax_t __y1 = __y / __c; 194s 1515: static constexpr uintmax_t __x0y0 = __x0 * __y0; 194s 1515: static constexpr uintmax_t __x0y1 = __x0 * __y1; 194s 1515: static constexpr uintmax_t __x1y0 = __x1 * __y0; 194s 1515: static constexpr uintmax_t __x1y1 = __x1 * __y1; 194s 1515: static constexpr uintmax_t __mix = __x0y1 + __x1y0; 194s 1515: static constexpr uintmax_t __mix_lo = __mix * __c; 194s 1515: static constexpr uintmax_t __mix_hi 194s 1515: = __mix / __c + ((__mix < __x0y1) ? __c : 0); 194s 1515: typedef __big_add<__mix_hi, __mix_lo, __x1y1, __x0y0> _Res; 194s 1515: public: 194s 1515: static constexpr uintmax_t __hi = _Res::__hi; 194s 1515: static constexpr uintmax_t __lo = _Res::__lo; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __big_div_impl 194s 1515: { 194s 1515: private: 194s 1515: static_assert(__d >= (uintmax_t(1) << (sizeof(intmax_t) * 8 - 1)), 194s 1515: "Internal library error"); 194s 1515: static_assert(__n1 < __d, "Internal library error"); 194s 1515: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 194s 1515: static constexpr uintmax_t __d1 = __d / __c; 194s 1515: static constexpr uintmax_t __d0 = __d % __c; 194s 1515: 194s 1515: static constexpr uintmax_t __q1x = __n1 / __d1; 194s 1515: static constexpr uintmax_t __r1x = __n1 % __d1; 194s 1515: static constexpr uintmax_t __m = __q1x * __d0; 194s 1515: static constexpr uintmax_t __r1y = __r1x * __c + __n0 / __c; 194s 1515: static constexpr uintmax_t __r1z = __r1y + __d; 194s 1515: static constexpr uintmax_t __r1 194s 1515: = ((__r1y < __m) ? ((__r1z >= __d) && (__r1z < __m)) 194s 1515: ? (__r1z + __d) : __r1z : __r1y) - __m; 194s 1515: static constexpr uintmax_t __q1 194s 1515: = __q1x - ((__r1y < __m) 194s 1515: ? ((__r1z >= __d) && (__r1z < __m)) ? 2 : 1 : 0); 194s 1515: static constexpr uintmax_t __q0x = __r1 / __d1; 194s 1515: static constexpr uintmax_t __r0x = __r1 % __d1; 194s 1515: static constexpr uintmax_t __n = __q0x * __d0; 194s 1515: static constexpr uintmax_t __r0y = __r0x * __c + __n0 % __c; 194s 1515: static constexpr uintmax_t __r0z = __r0y + __d; 194s 1515: static constexpr uintmax_t __r0 194s 1515: = ((__r0y < __n) ? ((__r0z >= __d) && (__r0z < __n)) 194s 1515: ? (__r0z + __d) : __r0z : __r0y) - __n; 194s 1515: static constexpr uintmax_t __q0 194s 1515: = __q0x - ((__r0y < __n) ? ((__r0z >= __d) 194s 1515: && (__r0z < __n)) ? 2 : 1 : 0); 194s 1515: 194s 1515: public: 194s 1515: static constexpr uintmax_t __quot = __q1 * __c + __q0; 194s 1515: static constexpr uintmax_t __rem = __r0; 194s 1515: 194s 1515: private: 194s 1515: typedef __big_mul<__quot, __d> _Prod; 194s 1515: typedef __big_add<_Prod::__hi, _Prod::__lo, 0, __rem> _Sum; 194s 1515: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, 194s 1515: "Internal library error"); 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __big_div 194s 1515: { 194s 1515: private: 194s 1515: static_assert(__d != 0, "Internal library error"); 194s 1515: static_assert(sizeof (uintmax_t) == sizeof (unsigned long long), 194s 1515: "This library calls __builtin_clzll on uintmax_t, which " 194s 1515: "is unsafe on your platform. Please complain to " 194s 1515: "http://gcc.gnu.org/bugzilla/"); 194s 1515: static constexpr int __shift = __builtin_clzll(__d); 194s 1515: static constexpr int __coshift_ = sizeof(uintmax_t) * 8 - __shift; 194s 1515: static constexpr int __coshift = (__shift != 0) ? __coshift_ : 0; 194s 1515: static constexpr uintmax_t __c1 = uintmax_t(1) << __shift; 194s 1515: static constexpr uintmax_t __c2 = uintmax_t(1) << __coshift; 194s 1515: static constexpr uintmax_t __new_d = __d * __c1; 194s 1515: static constexpr uintmax_t __new_n0 = __n0 * __c1; 194s 1515: static constexpr uintmax_t __n1_shifted = (__n1 % __d) * __c1; 194s 1515: static constexpr uintmax_t __n0_top = (__shift != 0) ? (__n0 / __c2) : 0; 194s 1515: static constexpr uintmax_t __new_n1 = __n1_shifted + __n0_top; 194s 1515: typedef __big_div_impl<__new_n1, __new_n0, __new_d> _Res; 194s 1515: 194s 1515: public: 194s 1515: static constexpr uintmax_t __quot_hi = __n1 / __d; 194s 1515: static constexpr uintmax_t __quot_lo = _Res::__quot; 194s 1515: static constexpr uintmax_t __rem = _Res::__rem / __c1; 194s 1515: 194s 1515: private: 194s 1515: typedef __big_mul<__quot_lo, __d> _P0; 194s 1515: typedef __big_mul<__quot_hi, __d> _P1; 194s 1515: typedef __big_add<_P0::__hi, _P0::__lo, _P1::__lo, __rem> _Sum; 194s 1515: 194s 1515: static_assert(_P1::__hi == 0, "Internal library error"); 194s 1515: static_assert(_Sum::__hi >= _P0::__hi, "Internal library error"); 194s 1515: 194s 1515: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, 194s 1515: "Internal library error"); 194s 1515: static_assert(__rem < __d, "Internal library error"); 194s 1515: }; 194s 1515: # 270 "/usr/include/c++/15/ratio" 3 4 194s 1515: template 194s 1515: struct ratio 194s 1515: { 194s 1515: static_assert(_Den != 0, "denominator cannot be zero"); 194s 1515: static_assert(_Num >= -0x7fffffffffffffffLL && _Den >= -0x7fffffffffffffffLL, 194s 1515: "out of range"); 194s 1515: 194s 1515: 194s 1515: static constexpr intmax_t num = 194s 1515: _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value; 194s 1515: 194s 1515: static constexpr intmax_t den = 194s 1515: __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value; 194s 1515: 194s 1515: typedef ratio type; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr intmax_t ratio<_Num, _Den>::num; 194s 1515: 194s 1515: template 194s 1515: constexpr intmax_t ratio<_Num, _Den>::den; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __is_ratio 194s 1515: : std::false_type 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __is_ratio> 194s 1515: : std::true_type 194s 1515: { }; 194s 1515: # 314 "/usr/include/c++/15/ratio" 3 4 194s 1515: template 194s 1515: constexpr bool 194s 1515: __are_both_ratios() noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: return __and_<__is_ratio<_R1>, __is_ratio<_R2>>::value; 194s 1515: 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: struct __ratio_multiply 194s 1515: { 194s 1515: static_assert(std::__are_both_ratios<_R1, _R2>(), 194s 1515: "both template arguments must be a std::ratio"); 194s 1515: 194s 1515: private: 194s 1515: static const intmax_t __gcd1 = 194s 1515: __static_gcd<_R1::num, _R2::den>::value; 194s 1515: static const intmax_t __gcd2 = 194s 1515: __static_gcd<_R2::num, _R1::den>::value; 194s 1515: 194s 1515: public: 194s 1515: typedef ratio< 194s 1515: __safe_multiply<(_R1::num / __gcd1), 194s 1515: (_R2::num / __gcd2)>::value, 194s 1515: __safe_multiply<(_R1::den / __gcd2), 194s 1515: (_R2::den / __gcd1)>::value> type; 194s 1515: 194s 1515: static constexpr intmax_t num = type::num; 194s 1515: static constexpr intmax_t den = type::den; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr intmax_t __ratio_multiply<_R1, _R2>::num; 194s 1515: 194s 1515: template 194s 1515: constexpr intmax_t __ratio_multiply<_R1, _R2>::den; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using ratio_multiply = typename __ratio_multiply<_R1, _R2>::type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __ratio_divide 194s 1515: { 194s 1515: static_assert(_R2::num != 0, "division by 0"); 194s 1515: 194s 1515: typedef typename __ratio_multiply< 194s 1515: _R1, 194s 1515: ratio<_R2::den, _R2::num>>::type type; 194s 1515: 194s 1515: static constexpr intmax_t num = type::num; 194s 1515: static constexpr intmax_t den = type::den; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr intmax_t __ratio_divide<_R1, _R2>::num; 194s 1515: 194s 1515: template 194s 1515: constexpr intmax_t __ratio_divide<_R1, _R2>::den; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using ratio_divide = typename __ratio_divide<_R1, _R2>::type; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct ratio_equal 194s 1515: : integral_constant 194s 1515: { 194s 1515: static_assert(std::__are_both_ratios<_R1, _R2>(), 194s 1515: "both template arguments must be a std::ratio"); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct ratio_not_equal 194s 1515: : integral_constant::value> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template, 194s 1515: typename _Right = __big_mul<_R2::num,_R1::den> > 194s 1515: struct __ratio_less_impl_1 194s 1515: : integral_constant::value> 194s 1515: { }; 194s 1515: 194s 1515: template::value 194s 1515: != __static_sign<_R2::num>::value)), 194s 1515: bool = (__static_sign<_R1::num>::value == -1 194s 1515: && __static_sign<_R2::num>::value == -1)> 194s 1515: struct __ratio_less_impl 194s 1515: : __ratio_less_impl_1<_R1, _R2>::type 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __ratio_less_impl<_R1, _R2, true, false> 194s 1515: : integral_constant 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __ratio_less_impl<_R1, _R2, false, true> 194s 1515: : __ratio_less_impl_1, 194s 1515: ratio<-_R1::num, _R1::den> >::type 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct ratio_less 194s 1515: : __ratio_less_impl<_R1, _R2>::type 194s 1515: { 194s 1515: static_assert(std::__are_both_ratios<_R1, _R2>(), 194s 1515: "both template arguments must be a std::ratio"); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct ratio_less_equal 194s 1515: : integral_constant::value> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct ratio_greater 194s 1515: : integral_constant::value> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct ratio_greater_equal 194s 1515: : integral_constant::value> 194s 1515: { }; 194s 1515: # 489 "/usr/include/c++/15/ratio" 3 4 194s 1515: template= 0), 194s 1515: bool = (_R2::num >= 0), 194s 1515: bool = ratio_less::value, _R1::den>, 194s 1515: ratio<__static_abs<_R2::num>::value, _R2::den> >::value> 194s 1515: struct __ratio_add_impl 194s 1515: { 194s 1515: private: 194s 1515: typedef typename __ratio_add_impl< 194s 1515: ratio<-_R1::num, _R1::den>, 194s 1515: ratio<-_R2::num, _R2::den> >::type __t; 194s 1515: public: 194s 1515: typedef ratio<-__t::num, __t::den> type; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __ratio_add_impl<_R1, _R2, true, true, __b> 194s 1515: { 194s 1515: private: 194s 1515: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; 194s 1515: static constexpr uintmax_t __d2 = _R2::den / __g; 194s 1515: typedef __big_mul<_R1::den, __d2> __d; 194s 1515: typedef __big_mul<_R1::num, _R2::den / __g> __x; 194s 1515: typedef __big_mul<_R2::num, _R1::den / __g> __y; 194s 1515: typedef __big_add<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; 194s 1515: static_assert(__n::__hi >= __x::__hi, "Internal library error"); 194s 1515: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; 194s 1515: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; 194s 1515: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; 194s 1515: static_assert(__n_final::__rem == 0, "Internal library error"); 194s 1515: static_assert(__n_final::__quot_hi == 0 && 194s 1515: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition"); 194s 1515: typedef __big_mul<_R1::den / __g2, __d2> __d_final; 194s 1515: static_assert(__d_final::__hi == 0 && 194s 1515: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition"); 194s 1515: public: 194s 1515: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __ratio_add_impl<_R1, _R2, false, true, true> 194s 1515: : __ratio_add_impl<_R2, _R1> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __ratio_add_impl<_R1, _R2, true, false, false> 194s 1515: { 194s 1515: private: 194s 1515: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; 194s 1515: static constexpr uintmax_t __d2 = _R2::den / __g; 194s 1515: typedef __big_mul<_R1::den, __d2> __d; 194s 1515: typedef __big_mul<_R1::num, _R2::den / __g> __x; 194s 1515: typedef __big_mul<-_R2::num, _R1::den / __g> __y; 194s 1515: typedef __big_sub<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; 194s 1515: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; 194s 1515: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; 194s 1515: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; 194s 1515: static_assert(__n_final::__rem == 0, "Internal library error"); 194s 1515: static_assert(__n_final::__quot_hi == 0 && 194s 1515: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition"); 194s 1515: typedef __big_mul<_R1::den / __g2, __d2> __d_final; 194s 1515: static_assert(__d_final::__hi == 0 && 194s 1515: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition"); 194s 1515: public: 194s 1515: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __ratio_add 194s 1515: { 194s 1515: static_assert(std::__are_both_ratios<_R1, _R2>(), 194s 1515: "both template arguments must be a std::ratio"); 194s 1515: 194s 1515: typedef typename __ratio_add_impl<_R1, _R2>::type type; 194s 1515: static constexpr intmax_t num = type::num; 194s 1515: static constexpr intmax_t den = type::den; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr intmax_t __ratio_add<_R1, _R2>::num; 194s 1515: 194s 1515: template 194s 1515: constexpr intmax_t __ratio_add<_R1, _R2>::den; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using ratio_add = typename __ratio_add<_R1, _R2>::type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __ratio_subtract 194s 1515: { 194s 1515: typedef typename __ratio_add< 194s 1515: _R1, 194s 1515: ratio<-_R2::num, _R2::den>>::type type; 194s 1515: 194s 1515: static constexpr intmax_t num = type::num; 194s 1515: static constexpr intmax_t den = type::den; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr intmax_t __ratio_subtract<_R1, _R2>::num; 194s 1515: 194s 1515: template 194s 1515: constexpr intmax_t __ratio_subtract<_R1, _R2>::den; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using ratio_subtract = typename __ratio_subtract<_R1, _R2>::type; 194s 1515: # 620 "/usr/include/c++/15/ratio" 3 4 194s 1515: using atto = ratio< 1, 1000000000000000000>; 194s 1515: using femto = ratio< 1, 1000000000000000>; 194s 1515: using pico = ratio< 1, 1000000000000>; 194s 1515: using nano = ratio< 1, 1000000000>; 194s 1515: using micro = ratio< 1, 1000000>; 194s 1515: using milli = ratio< 1, 1000>; 194s 1515: using centi = ratio< 1, 100>; 194s 1515: using deci = ratio< 1, 10>; 194s 1515: using deca = ratio< 10, 1>; 194s 1515: using hecto = ratio< 100, 1>; 194s 1515: using kilo = ratio< 1000, 1>; 194s 1515: using mega = ratio< 1000000, 1>; 194s 1515: using giga = ratio< 1000000000, 1>; 194s 1515: using tera = ratio< 1000000000000, 1>; 194s 1515: using peta = ratio< 1000000000000000, 1>; 194s 1515: using exa = ratio< 1000000000000000000, 1>; 194s 1515: # 648 "/usr/include/c++/15/ratio" 3 4 194s 1515: 194s 1515: } 194s 1515: # 40 "/usr/include/c++/15/bits/chrono.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/parse_numbers.h" 1 3 4 194s 1515: # 46 "/usr/include/c++/15/bits/chrono.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 52 "/usr/include/c++/15/bits/chrono.h" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace chrono 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: class duration; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class time_point; 194s 1515: 194s 1515: } 194s 1515: # 83 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template 194s 1515: struct __duration_common_type 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __duration_common_type<_CT, _Period1, _Period2, 194s 1515: __void_t> 194s 1515: { 194s 1515: private: 194s 1515: using __gcd_num = __static_gcd<_Period1::num, _Period2::num>; 194s 1515: using __gcd_den = __static_gcd<_Period1::den, _Period2::den>; 194s 1515: using __cr = typename _CT::type; 194s 1515: using __r = ratio<__gcd_num::value, 194s 1515: (_Period1::den / __gcd_den::value) * _Period2::den>; 194s 1515: 194s 1515: public: 194s 1515: using type = chrono::duration<__cr, typename __r::type>; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct common_type, 194s 1515: chrono::duration<_Rep2, _Period2>> 194s 1515: : __duration_common_type, 194s 1515: typename _Period1::type, 194s 1515: typename _Period2::type> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct common_type, 194s 1515: chrono::duration<_Rep, _Period>> 194s 1515: { 194s 1515: using type = chrono::duration::type, 194s 1515: typename _Period::type>; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct common_type> 194s 1515: { 194s 1515: using type = chrono::duration::type, 194s 1515: typename _Period::type>; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __timepoint_common_type 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __timepoint_common_type<_CT, _Clock, __void_t> 194s 1515: { 194s 1515: using type = chrono::time_point<_Clock, typename _CT::type>; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct common_type, 194s 1515: chrono::time_point<_Clock, _Duration2>> 194s 1515: : __timepoint_common_type, _Clock> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct common_type, 194s 1515: chrono::time_point<_Clock, _Duration>> 194s 1515: { using type = chrono::time_point<_Clock, _Duration>; }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct common_type> 194s 1515: { using type = chrono::time_point<_Clock, _Duration>; }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace chrono 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __duration_cast_impl 194s 1515: { 194s 1515: template 194s 1515: static constexpr _ToDur 194s 1515: __cast(const duration<_Rep, _Period>& __d) 194s 1515: { 194s 1515: typedef typename _ToDur::rep __to_rep; 194s 1515: return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count()) 194s 1515: * static_cast<_CR>(_CF::num) 194s 1515: / static_cast<_CR>(_CF::den))); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __duration_cast_impl<_ToDur, _CF, _CR, true, true> 194s 1515: { 194s 1515: template 194s 1515: static constexpr _ToDur 194s 1515: __cast(const duration<_Rep, _Period>& __d) 194s 1515: { 194s 1515: typedef typename _ToDur::rep __to_rep; 194s 1515: return _ToDur(static_cast<__to_rep>(__d.count())); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __duration_cast_impl<_ToDur, _CF, _CR, true, false> 194s 1515: { 194s 1515: template 194s 1515: static constexpr _ToDur 194s 1515: __cast(const duration<_Rep, _Period>& __d) 194s 1515: { 194s 1515: typedef typename _ToDur::rep __to_rep; 194s 1515: return _ToDur(static_cast<__to_rep>( 194s 1515: static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den))); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __duration_cast_impl<_ToDur, _CF, _CR, false, true> 194s 1515: { 194s 1515: template 194s 1515: static constexpr _ToDur 194s 1515: __cast(const duration<_Rep, _Period>& __d) 194s 1515: { 194s 1515: typedef typename _ToDur::rep __to_rep; 194s 1515: return _ToDur(static_cast<__to_rep>( 194s 1515: static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num))); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct __is_duration 194s 1515: : std::false_type 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: struct __is_duration> 194s 1515: : std::true_type 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: using __enable_if_is_duration 194s 1515: = typename enable_if<__is_duration<_Tp>::value, _Tp>::type; 194s 1515: 194s 1515: template 194s 1515: using __disable_if_is_duration 194s 1515: = typename enable_if::value, _Tp>::type; 194s 1515: # 276 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: constexpr __enable_if_is_duration<_ToDur> 194s 1515: duration_cast(const duration<_Rep, _Period>& __d) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using __to_period = typename _ToDur::period; 194s 1515: using __to_rep = typename _ToDur::rep; 194s 1515: using __cf = ratio_divide<_Period, __to_period>; 194s 1515: using __cr = typename common_type<__to_rep, _Rep, intmax_t>::type; 194s 1515: using __dc = __duration_cast_impl<_ToDur, __cf, __cr, 194s 1515: __cf::num == 1, __cf::den == 1>; 194s 1515: return __dc::__cast(__d); 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 310 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template 194s 1515: struct treat_as_floating_point 194s 1515: : is_floating_point<_Rep> 194s 1515: { }; 194s 1515: # 478 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: namespace __detail 194s 1515: { 194s 1515: template 194s 1515: constexpr _Tp 194s 1515: __ceil_impl(const _Tp& __t, const _Up& __u) 194s 1515: { 194s 1515: return (__t < __u) ? (__t + _Tp{1}) : __t; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr _ToDur 194s 1515: ceil(const duration<_Rep, _Period>& __d) 194s 1515: { 194s 1515: return __detail::__ceil_impl(chrono::duration_cast<_ToDur>(__d), __d); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct duration_values 194s 1515: { 194s 1515: static constexpr _Rep 194s 1515: zero() noexcept 194s 1515: { return _Rep(0); } 194s 1515: 194s 1515: static constexpr _Rep 194s 1515: max() noexcept 194s 1515: { return numeric_limits<_Rep>::max(); } 194s 1515: 194s 1515: static constexpr _Rep 194s 1515: min() noexcept 194s 1515: { return numeric_limits<_Rep>::lowest(); } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: class duration 194s 1515: { 194s 1515: static_assert(!__is_duration<_Rep>::value, 194s 1515: "rep cannot be a std::chrono::duration"); 194s 1515: static_assert(__is_ratio<_Period>::value, 194s 1515: "period must be a specialization of std::ratio"); 194s 1515: static_assert(_Period::num > 0, "period must be positive"); 194s 1515: 194s 1515: template 194s 1515: using __is_float = treat_as_floating_point<_Rep2>; 194s 1515: 194s 1515: static constexpr intmax_t 194s 1515: _S_gcd(intmax_t __m, intmax_t __n) noexcept 194s 1515: { 194s 1515: # 543 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: return (__n == 0) ? __m : _S_gcd(__n, __m % __n); 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __divide = ratio<(_R1::num / __gcd1) * (_R2::den / __gcd2), 194s 1515: (_R1::den / __gcd2) * (_R2::num / __gcd1)>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __is_harmonic 194s 1515: = __bool_constant<__divide<_Period2, _Period>::den == 1>; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: using rep = _Rep; 194s 1515: using period = typename _Period::type; 194s 1515: 194s 1515: 194s 1515: constexpr duration() = default; 194s 1515: 194s 1515: duration(const duration&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template, 194s 1515: __or_<__is_float, __not_<__is_float<_Rep2>>>>> 194s 1515: constexpr explicit duration(const _Rep2& __rep) 194s 1515: : __r(static_cast(__rep)) { } 194s 1515: 194s 1515: template, 194s 1515: __or_<__is_float, 194s 1515: __and_<__is_harmonic<_Period2>, 194s 1515: __not_<__is_float<_Rep2>>>>>> 194s 1515: constexpr duration(const duration<_Rep2, _Period2>& __d) 194s 1515: : __r(duration_cast(__d).count()) { } 194s 1515: 194s 1515: ~duration() = default; 194s 1515: duration& operator=(const duration&) = default; 194s 1515: 194s 1515: 194s 1515: constexpr rep 194s 1515: count() const 194s 1515: { return __r; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: constexpr duration::type, period> 194s 1515: operator+() const 194s 1515: { return duration::type, period>(__r); } 194s 1515: 194s 1515: constexpr duration::type, period> 194s 1515: operator-() const 194s 1515: { return duration::type, period>(-__r); } 194s 1515: 194s 1515: duration& 194s 1515: operator++() 194s 1515: { 194s 1515: ++__r; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: duration 194s 1515: operator++(int) 194s 1515: { return duration(__r++); } 194s 1515: 194s 1515: duration& 194s 1515: operator--() 194s 1515: { 194s 1515: --__r; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: duration 194s 1515: operator--(int) 194s 1515: { return duration(__r--); } 194s 1515: 194s 1515: duration& 194s 1515: operator+=(const duration& __d) 194s 1515: { 194s 1515: __r += __d.count(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: duration& 194s 1515: operator-=(const duration& __d) 194s 1515: { 194s 1515: __r -= __d.count(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: duration& 194s 1515: operator*=(const rep& __rhs) 194s 1515: { 194s 1515: __r *= __rhs; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: duration& 194s 1515: operator/=(const rep& __rhs) 194s 1515: { 194s 1515: __r /= __rhs; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: __enable_if_t::value, duration&> 194s 1515: operator%=(const rep& __rhs) 194s 1515: { 194s 1515: __r %= __rhs; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: __enable_if_t::value, duration&> 194s 1515: operator%=(const duration& __d) 194s 1515: { 194s 1515: __r %= __d.count(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: static constexpr duration 194s 1515: zero() noexcept 194s 1515: { return duration(duration_values::zero()); } 194s 1515: 194s 1515: static constexpr duration 194s 1515: min() noexcept 194s 1515: { return duration(duration_values::min()); } 194s 1515: 194s 1515: static constexpr duration 194s 1515: max() noexcept 194s 1515: { return duration(duration_values::max()); } 194s 1515: 194s 1515: private: 194s 1515: rep __r; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr typename common_type, 194s 1515: duration<_Rep2, _Period2>>::type 194s 1515: operator+(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { 194s 1515: typedef duration<_Rep1, _Period1> __dur1; 194s 1515: typedef duration<_Rep2, _Period2> __dur2; 194s 1515: typedef typename common_type<__dur1,__dur2>::type __cd; 194s 1515: return __cd(__cd(__lhs).count() + __cd(__rhs).count()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr typename common_type, 194s 1515: duration<_Rep2, _Period2>>::type 194s 1515: operator-(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { 194s 1515: typedef duration<_Rep1, _Period1> __dur1; 194s 1515: typedef duration<_Rep2, _Period2> __dur2; 194s 1515: typedef typename common_type<__dur1,__dur2>::type __cd; 194s 1515: return __cd(__cd(__lhs).count() - __cd(__rhs).count()); 194s 1515: } 194s 1515: # 731 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template::type> 194s 1515: using __common_rep_t = typename 194s 1515: enable_if::value, _CRep>::type; 194s 1515: # 743 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template 194s 1515: constexpr duration<__common_rep_t<_Rep1, _Rep2>, _Period> 194s 1515: operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 194s 1515: { 194s 1515: typedef duration::type, _Period> 194s 1515: __cd; 194s 1515: return __cd(__cd(__d).count() * __s); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: constexpr duration<__common_rep_t<_Rep2, _Rep1>, _Period> 194s 1515: operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) 194s 1515: { return __d * __s; } 194s 1515: 194s 1515: template 194s 1515: constexpr 194s 1515: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> 194s 1515: operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 194s 1515: { 194s 1515: typedef duration::type, _Period> 194s 1515: __cd; 194s 1515: return __cd(__cd(__d).count() / __s); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: constexpr typename common_type<_Rep1, _Rep2>::type 194s 1515: operator/(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { 194s 1515: typedef duration<_Rep1, _Period1> __dur1; 194s 1515: typedef duration<_Rep2, _Period2> __dur2; 194s 1515: typedef typename common_type<__dur1,__dur2>::type __cd; 194s 1515: return __cd(__lhs).count() / __cd(__rhs).count(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr 194s 1515: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> 194s 1515: operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 194s 1515: { 194s 1515: typedef duration::type, _Period> 194s 1515: __cd; 194s 1515: return __cd(__cd(__d).count() % __s); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: constexpr typename common_type, 194s 1515: duration<_Rep2, _Period2>>::type 194s 1515: operator%(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { 194s 1515: typedef duration<_Rep1, _Period1> __dur1; 194s 1515: typedef duration<_Rep2, _Period2> __dur2; 194s 1515: typedef typename common_type<__dur1,__dur2>::type __cd; 194s 1515: return __cd(__cd(__lhs).count() % __cd(__rhs).count()); 194s 1515: } 194s 1515: # 811 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator==(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { 194s 1515: typedef duration<_Rep1, _Period1> __dur1; 194s 1515: typedef duration<_Rep2, _Period2> __dur2; 194s 1515: typedef typename common_type<__dur1,__dur2>::type __ct; 194s 1515: return __ct(__lhs).count() == __ct(__rhs).count(); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator<(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { 194s 1515: typedef duration<_Rep1, _Period1> __dur1; 194s 1515: typedef duration<_Rep2, _Period2> __dur2; 194s 1515: typedef typename common_type<__dur1,__dur2>::type __ct; 194s 1515: return __ct(__lhs).count() < __ct(__rhs).count(); 194s 1515: } 194s 1515: # 848 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator!=(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { return !(__lhs == __rhs); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator<=(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { return !(__rhs < __lhs); } 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator>(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { return __rhs < __lhs; } 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator>=(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { return !(__lhs < __rhs); } 194s 1515: # 892 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: using nanoseconds = duration; 194s 1515: 194s 1515: 194s 1515: using microseconds = duration; 194s 1515: 194s 1515: 194s 1515: using milliseconds = duration; 194s 1515: 194s 1515: 194s 1515: using seconds = duration; 194s 1515: 194s 1515: 194s 1515: using minutes = duration>; 194s 1515: 194s 1515: 194s 1515: using hours = duration>; 194s 1515: # 925 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template 194s 1515: class time_point 194s 1515: { 194s 1515: static_assert(__is_duration<_Dur>::value, 194s 1515: "duration must be a specialization of std::chrono::duration"); 194s 1515: 194s 1515: public: 194s 1515: typedef _Clock clock; 194s 1515: typedef _Dur duration; 194s 1515: typedef typename duration::rep rep; 194s 1515: typedef typename duration::period period; 194s 1515: 194s 1515: constexpr time_point() : __d(duration::zero()) 194s 1515: { } 194s 1515: 194s 1515: constexpr explicit time_point(const duration& __dur) 194s 1515: : __d(__dur) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: template>> 194s 1515: constexpr time_point(const time_point& __t) 194s 1515: : __d(__t.time_since_epoch()) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: constexpr duration 194s 1515: time_since_epoch() const 194s 1515: { return __d; } 194s 1515: # 981 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: time_point& 194s 1515: operator+=(const duration& __dur) 194s 1515: { 194s 1515: __d += __dur; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: time_point& 194s 1515: operator-=(const duration& __dur) 194s 1515: { 194s 1515: __d -= __dur; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: static constexpr time_point 194s 1515: min() noexcept 194s 1515: { return time_point(duration::min()); } 194s 1515: 194s 1515: static constexpr time_point 194s 1515: max() noexcept 194s 1515: { return time_point(duration::max()); } 194s 1515: 194s 1515: private: 194s 1515: duration __d; 194s 1515: }; 194s 1515: # 1020 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] constexpr 194s 1515: __enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> 194s 1515: time_point_cast(const time_point<_Clock, _Dur>& __t) 194s 1515: { 194s 1515: typedef time_point<_Clock, _ToDur> __time_point; 194s 1515: return __time_point(duration_cast<_ToDur>(__t.time_since_epoch())); 194s 1515: } 194s 1515: # 1101 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template 194s 1515: constexpr time_point<_Clock, 194s 1515: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> 194s 1515: operator+(const time_point<_Clock, _Dur1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { 194s 1515: typedef duration<_Rep2, _Period2> __dur2; 194s 1515: typedef typename common_type<_Dur1,__dur2>::type __ct; 194s 1515: typedef time_point<_Clock, __ct> __time_point; 194s 1515: return __time_point(__lhs.time_since_epoch() + __rhs); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr time_point<_Clock, 194s 1515: typename common_type, _Dur2>::type> 194s 1515: operator+(const duration<_Rep1, _Period1>& __lhs, 194s 1515: const time_point<_Clock, _Dur2>& __rhs) 194s 1515: { 194s 1515: typedef duration<_Rep1, _Period1> __dur1; 194s 1515: typedef typename common_type<__dur1,_Dur2>::type __ct; 194s 1515: typedef time_point<_Clock, __ct> __time_point; 194s 1515: return __time_point(__rhs.time_since_epoch() + __lhs); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr time_point<_Clock, 194s 1515: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> 194s 1515: operator-(const time_point<_Clock, _Dur1>& __lhs, 194s 1515: const duration<_Rep2, _Period2>& __rhs) 194s 1515: { 194s 1515: typedef duration<_Rep2, _Period2> __dur2; 194s 1515: typedef typename common_type<_Dur1,__dur2>::type __ct; 194s 1515: typedef time_point<_Clock, __ct> __time_point; 194s 1515: return __time_point(__lhs.time_since_epoch() -__rhs); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr typename common_type<_Dur1, _Dur2>::type 194s 1515: operator-(const time_point<_Clock, _Dur1>& __lhs, 194s 1515: const time_point<_Clock, _Dur2>& __rhs) 194s 1515: { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator==(const time_point<_Clock, _Dur1>& __lhs, 194s 1515: const time_point<_Clock, _Dur2>& __rhs) 194s 1515: { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } 194s 1515: # 1169 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator!=(const time_point<_Clock, _Dur1>& __lhs, 194s 1515: const time_point<_Clock, _Dur2>& __rhs) 194s 1515: { return !(__lhs == __rhs); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator<(const time_point<_Clock, _Dur1>& __lhs, 194s 1515: const time_point<_Clock, _Dur2>& __rhs) 194s 1515: { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator<=(const time_point<_Clock, _Dur1>& __lhs, 194s 1515: const time_point<_Clock, _Dur2>& __rhs) 194s 1515: { return !(__rhs < __lhs); } 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator>(const time_point<_Clock, _Dur1>& __lhs, 194s 1515: const time_point<_Clock, _Dur2>& __rhs) 194s 1515: { return __rhs < __lhs; } 194s 1515: 194s 1515: template 194s 1515: constexpr bool 194s 1515: operator>=(const time_point<_Clock, _Dur1>& __lhs, 194s 1515: const time_point<_Clock, _Dur2>& __rhs) 194s 1515: { return !(__lhs < __rhs); } 194s 1515: # 1222 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: inline namespace _V2 { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct system_clock 194s 1515: { 194s 1515: typedef chrono::nanoseconds duration; 194s 1515: typedef duration::rep rep; 194s 1515: typedef duration::period period; 194s 1515: typedef chrono::time_point time_point; 194s 1515: 194s 1515: static_assert(system_clock::duration::min() 194s 1515: < system_clock::duration::zero(), 194s 1515: "a clock's minimum duration cannot be less than its epoch"); 194s 1515: 194s 1515: static constexpr bool is_steady = false; 194s 1515: 194s 1515: static time_point 194s 1515: now() noexcept; 194s 1515: 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static std::time_t 194s 1515: to_time_t(const time_point& __t) noexcept 194s 1515: { 194s 1515: return std::time_t(duration_cast 194s 1515: (__t.time_since_epoch()).count()); 194s 1515: } 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: static time_point 194s 1515: from_time_t(std::time_t __t) noexcept 194s 1515: { 194s 1515: typedef chrono::time_point __from; 194s 1515: return time_point_cast 194s 1515: (__from(chrono::seconds(__t))); 194s 1515: } 194s 1515: }; 194s 1515: # 1272 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: struct steady_clock 194s 1515: { 194s 1515: typedef chrono::nanoseconds duration; 194s 1515: typedef duration::rep rep; 194s 1515: typedef duration::period period; 194s 1515: typedef chrono::time_point time_point; 194s 1515: 194s 1515: static constexpr bool is_steady = true; 194s 1515: 194s 1515: static time_point 194s 1515: now() noexcept; 194s 1515: }; 194s 1515: # 1294 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: using high_resolution_clock = system_clock; 194s 1515: 194s 1515: } 194s 1515: # 1329 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: } 194s 1515: # 1518 "/usr/include/c++/15/bits/chrono.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 46 "/usr/include/c++/15/mutex" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/std_mutex.h" 1 3 4 194s 1515: # 45 "/usr/include/c++/15/bits/std_mutex.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 61 "/usr/include/c++/15/bits/std_mutex.h" 3 4 194s 1515: class __mutex_base 194s 1515: { 194s 1515: protected: 194s 1515: typedef __gthread_mutex_t __native_type; 194s 1515: 194s 1515: 194s 1515: __native_type _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_TIMED_NP, 0, { 0 } } }; 194s 1515: 194s 1515: constexpr __mutex_base() noexcept = default; 194s 1515: # 82 "/usr/include/c++/15/bits/std_mutex.h" 3 4 194s 1515: __mutex_base(const __mutex_base&) = delete; 194s 1515: __mutex_base& operator=(const __mutex_base&) = delete; 194s 1515: }; 194s 1515: # 98 "/usr/include/c++/15/bits/std_mutex.h" 3 4 194s 1515: class mutex : private __mutex_base 194s 1515: { 194s 1515: public: 194s 1515: typedef __native_type* native_handle_type; 194s 1515: 194s 1515: 194s 1515: constexpr 194s 1515: 194s 1515: mutex() noexcept = default; 194s 1515: ~mutex() = default; 194s 1515: 194s 1515: mutex(const mutex&) = delete; 194s 1515: mutex& operator=(const mutex&) = delete; 194s 1515: 194s 1515: void 194s 1515: lock() 194s 1515: { 194s 1515: int __e = __gthread_mutex_lock(&_M_mutex); 194s 1515: 194s 1515: 194s 1515: if (__e) 194s 1515: __throw_system_error(__e); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock() noexcept 194s 1515: { 194s 1515: 194s 1515: return !__gthread_mutex_trylock(&_M_mutex); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: unlock() 194s 1515: { 194s 1515: 194s 1515: __gthread_mutex_unlock(&_M_mutex); 194s 1515: } 194s 1515: 194s 1515: native_handle_type 194s 1515: native_handle() noexcept 194s 1515: { return &_M_mutex; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: class __condvar 194s 1515: { 194s 1515: using timespec = __gthread_time_t; 194s 1515: 194s 1515: public: 194s 1515: __condvar() noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: ~__condvar() 194s 1515: { 194s 1515: int __e __attribute__((__unused__)) = __gthread_cond_destroy(&_M_cond); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__e != 16)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: } 194s 1515: 194s 1515: __condvar(const __condvar&) = delete; 194s 1515: __condvar& operator=(const __condvar&) = delete; 194s 1515: 194s 1515: __gthread_cond_t* native_handle() noexcept { return &_M_cond; } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: wait(mutex& __m) 194s 1515: { 194s 1515: int __e __attribute__((__unused__)) 194s 1515: = __gthread_cond_wait(&_M_cond, __m.native_handle()); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: wait_until(mutex& __m, timespec& __abs_time) 194s 1515: { 194s 1515: __gthread_cond_timedwait(&_M_cond, __m.native_handle(), &__abs_time); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: wait_until(mutex& __m, clockid_t __clock, timespec& __abs_time) 194s 1515: { 194s 1515: pthread_cond_clockwait(&_M_cond, __m.native_handle(), __clock, 194s 1515: &__abs_time); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: notify_one() noexcept 194s 1515: { 194s 1515: int __e __attribute__((__unused__)) = __gthread_cond_signal(&_M_cond); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: notify_all() noexcept 194s 1515: { 194s 1515: int __e __attribute__((__unused__)) = __gthread_cond_broadcast(&_M_cond); 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); 194s 1515: } 194s 1515: 194s 1515: protected: 194s 1515: 194s 1515: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, 0, 0, {0, 0}, 0, 0 } }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct defer_lock_t { explicit defer_lock_t() = default; }; 194s 1515: 194s 1515: 194s 1515: struct try_to_lock_t { explicit try_to_lock_t() = default; }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct adopt_lock_t { explicit adopt_lock_t() = default; }; 194s 1515: 194s 1515: 194s 1515: constexpr defer_lock_t defer_lock { }; 194s 1515: 194s 1515: 194s 1515: constexpr try_to_lock_t try_to_lock { }; 194s 1515: 194s 1515: 194s 1515: constexpr adopt_lock_t adopt_lock { }; 194s 1515: # 244 "/usr/include/c++/15/bits/std_mutex.h" 3 4 194s 1515: template 194s 1515: class lock_guard 194s 1515: { 194s 1515: public: 194s 1515: typedef _Mutex mutex_type; 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: explicit lock_guard(mutex_type& __m) : _M_device(__m) 194s 1515: { _M_device.lock(); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: lock_guard(mutex_type& __m, adopt_lock_t) noexcept : _M_device(__m) 194s 1515: { } 194s 1515: 194s 1515: ~lock_guard() 194s 1515: { _M_device.unlock(); } 194s 1515: 194s 1515: lock_guard(const lock_guard&) = delete; 194s 1515: lock_guard& operator=(const lock_guard&) = delete; 194s 1515: 194s 1515: private: 194s 1515: mutex_type& _M_device; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 50 "/usr/include/c++/15/mutex" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/unique_lock.h" 1 3 4 194s 1515: # 46 "/usr/include/c++/15/bits/unique_lock.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 61 "/usr/include/c++/15/bits/unique_lock.h" 3 4 194s 1515: template 194s 1515: class unique_lock 194s 1515: { 194s 1515: public: 194s 1515: typedef _Mutex mutex_type; 194s 1515: 194s 1515: unique_lock() noexcept 194s 1515: : _M_device(0), _M_owns(false) 194s 1515: { } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: explicit unique_lock(mutex_type& __m) 194s 1515: : _M_device(std::__addressof(__m)), _M_owns(false) 194s 1515: { 194s 1515: lock(); 194s 1515: _M_owns = true; 194s 1515: } 194s 1515: 194s 1515: unique_lock(mutex_type& __m, defer_lock_t) noexcept 194s 1515: : _M_device(std::__addressof(__m)), _M_owns(false) 194s 1515: { } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: unique_lock(mutex_type& __m, try_to_lock_t) 194s 1515: : _M_device(std::__addressof(__m)), _M_owns(_M_device->try_lock()) 194s 1515: { } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: unique_lock(mutex_type& __m, adopt_lock_t) noexcept 194s 1515: : _M_device(std::__addressof(__m)), _M_owns(true) 194s 1515: { 194s 1515: 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: unique_lock(mutex_type& __m, 194s 1515: const chrono::time_point<_Clock, _Duration>& __atime) 194s 1515: : _M_device(std::__addressof(__m)), 194s 1515: _M_owns(_M_device->try_lock_until(__atime)) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: unique_lock(mutex_type& __m, 194s 1515: const chrono::duration<_Rep, _Period>& __rtime) 194s 1515: : _M_device(std::__addressof(__m)), 194s 1515: _M_owns(_M_device->try_lock_for(__rtime)) 194s 1515: { } 194s 1515: 194s 1515: ~unique_lock() 194s 1515: { 194s 1515: if (_M_owns) 194s 1515: unlock(); 194s 1515: } 194s 1515: 194s 1515: unique_lock(const unique_lock&) = delete; 194s 1515: unique_lock& operator=(const unique_lock&) = delete; 194s 1515: 194s 1515: unique_lock(unique_lock&& __u) noexcept 194s 1515: : _M_device(__u._M_device), _M_owns(__u._M_owns) 194s 1515: { 194s 1515: __u._M_device = 0; 194s 1515: __u._M_owns = false; 194s 1515: } 194s 1515: 194s 1515: unique_lock& operator=(unique_lock&& __u) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: unique_lock(std::move(__u)).swap(*this); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: lock() 194s 1515: { 194s 1515: if (!_M_device) 194s 1515: __throw_system_error(int(errc::operation_not_permitted)); 194s 1515: else if (_M_owns) 194s 1515: __throw_system_error(int(errc::resource_deadlock_would_occur)); 194s 1515: else 194s 1515: { 194s 1515: _M_device->lock(); 194s 1515: _M_owns = true; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock() 194s 1515: { 194s 1515: if (!_M_device) 194s 1515: __throw_system_error(int(errc::operation_not_permitted)); 194s 1515: else if (_M_owns) 194s 1515: __throw_system_error(int(errc::resource_deadlock_would_occur)); 194s 1515: else 194s 1515: { 194s 1515: _M_owns = _M_device->try_lock(); 194s 1515: return _M_owns; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 194s 1515: { 194s 1515: if (!_M_device) 194s 1515: __throw_system_error(int(errc::operation_not_permitted)); 194s 1515: else if (_M_owns) 194s 1515: __throw_system_error(int(errc::resource_deadlock_would_occur)); 194s 1515: else 194s 1515: { 194s 1515: _M_owns = _M_device->try_lock_until(__atime); 194s 1515: return _M_owns; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 194s 1515: { 194s 1515: if (!_M_device) 194s 1515: __throw_system_error(int(errc::operation_not_permitted)); 194s 1515: else if (_M_owns) 194s 1515: __throw_system_error(int(errc::resource_deadlock_would_occur)); 194s 1515: else 194s 1515: { 194s 1515: _M_owns = _M_device->try_lock_for(__rtime); 194s 1515: return _M_owns; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: unlock() 194s 1515: { 194s 1515: if (!_M_owns) 194s 1515: __throw_system_error(int(errc::operation_not_permitted)); 194s 1515: else if (_M_device) 194s 1515: { 194s 1515: _M_device->unlock(); 194s 1515: _M_owns = false; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: swap(unique_lock& __u) noexcept 194s 1515: { 194s 1515: std::swap(_M_device, __u._M_device); 194s 1515: std::swap(_M_owns, __u._M_owns); 194s 1515: } 194s 1515: 194s 1515: mutex_type* 194s 1515: release() noexcept 194s 1515: { 194s 1515: mutex_type* __ret = _M_device; 194s 1515: _M_device = 0; 194s 1515: _M_owns = false; 194s 1515: return __ret; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: owns_lock() const noexcept 194s 1515: { return _M_owns; } 194s 1515: 194s 1515: explicit operator bool() const noexcept 194s 1515: { return owns_lock(); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: mutex_type* 194s 1515: mutex() const noexcept 194s 1515: { return _M_device; } 194s 1515: 194s 1515: private: 194s 1515: mutex_type* _M_device; 194s 1515: bool _M_owns; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) noexcept 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 51 "/usr/include/c++/15/mutex" 2 3 4 194s 1515: # 62 "/usr/include/c++/15/mutex" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 63 "/usr/include/c++/15/mutex" 2 3 4 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 77 "/usr/include/c++/15/mutex" 3 4 194s 1515: class __recursive_mutex_base 194s 1515: { 194s 1515: protected: 194s 1515: typedef __gthread_recursive_mutex_t __native_type; 194s 1515: 194s 1515: __recursive_mutex_base(const __recursive_mutex_base&) = delete; 194s 1515: __recursive_mutex_base& operator=(const __recursive_mutex_base&) = delete; 194s 1515: 194s 1515: 194s 1515: __native_type _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } }; 194s 1515: 194s 1515: __recursive_mutex_base() = default; 194s 1515: # 101 "/usr/include/c++/15/mutex" 3 4 194s 1515: }; 194s 1515: # 113 "/usr/include/c++/15/mutex" 3 4 194s 1515: class recursive_mutex : private __recursive_mutex_base 194s 1515: { 194s 1515: public: 194s 1515: typedef __native_type* native_handle_type; 194s 1515: 194s 1515: recursive_mutex() = default; 194s 1515: ~recursive_mutex() = default; 194s 1515: 194s 1515: recursive_mutex(const recursive_mutex&) = delete; 194s 1515: recursive_mutex& operator=(const recursive_mutex&) = delete; 194s 1515: 194s 1515: void 194s 1515: lock() 194s 1515: { 194s 1515: int __e = __gthread_recursive_mutex_lock(&_M_mutex); 194s 1515: 194s 1515: 194s 1515: if (__e) 194s 1515: __throw_system_error(__e); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock() noexcept 194s 1515: { 194s 1515: 194s 1515: return !__gthread_recursive_mutex_trylock(&_M_mutex); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: unlock() 194s 1515: { 194s 1515: 194s 1515: __gthread_recursive_mutex_unlock(&_M_mutex); 194s 1515: } 194s 1515: 194s 1515: native_handle_type 194s 1515: native_handle() noexcept 194s 1515: { return &_M_mutex; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class __timed_mutex_impl 194s 1515: { 194s 1515: protected: 194s 1515: template 194s 1515: bool 194s 1515: _M_try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 194s 1515: { 194s 1515: 194s 1515: using __clock = chrono::steady_clock; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: auto __rt = chrono::duration_cast<__clock::duration>(__rtime); 194s 1515: if (ratio_greater<__clock::period, _Period>()) 194s 1515: ++__rt; 194s 1515: return _M_try_lock_until(__clock::now() + __rt); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: _M_try_lock_until(const chrono::time_point& __atime) 194s 1515: { 194s 1515: auto __s = chrono::time_point_cast(__atime); 194s 1515: auto __ns = chrono::duration_cast(__atime - __s); 194s 1515: 194s 1515: __gthread_time_t __ts = { 194s 1515: static_cast(__s.time_since_epoch().count()), 194s 1515: static_cast(__ns.count()) 194s 1515: }; 194s 1515: 194s 1515: return static_cast<_Derived*>(this)->_M_timedlock(__ts); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: _M_try_lock_until(const chrono::time_point& __atime) 194s 1515: { 194s 1515: auto __s = chrono::time_point_cast(__atime); 194s 1515: auto __ns = chrono::duration_cast(__atime - __s); 194s 1515: 194s 1515: __gthread_time_t __ts = { 194s 1515: static_cast(__s.time_since_epoch().count()), 194s 1515: static_cast(__ns.count()) 194s 1515: }; 194s 1515: 194s 1515: return static_cast<_Derived*>(this)->_M_clocklock(1, 194s 1515: __ts); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: _M_try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: auto __now = _Clock::now(); 194s 1515: do { 194s 1515: auto __rtime = __atime - __now; 194s 1515: if (_M_try_lock_for(__rtime)) 194s 1515: return true; 194s 1515: __now = _Clock::now(); 194s 1515: } while (__atime > __now); 194s 1515: return false; 194s 1515: } 194s 1515: }; 194s 1515: # 242 "/usr/include/c++/15/mutex" 3 4 194s 1515: class timed_mutex 194s 1515: : private __mutex_base, public __timed_mutex_impl 194s 1515: { 194s 1515: public: 194s 1515: typedef __native_type* native_handle_type; 194s 1515: 194s 1515: timed_mutex() = default; 194s 1515: ~timed_mutex() = default; 194s 1515: 194s 1515: timed_mutex(const timed_mutex&) = delete; 194s 1515: timed_mutex& operator=(const timed_mutex&) = delete; 194s 1515: 194s 1515: void 194s 1515: lock() 194s 1515: { 194s 1515: int __e = __gthread_mutex_lock(&_M_mutex); 194s 1515: 194s 1515: 194s 1515: if (__e) 194s 1515: __throw_system_error(__e); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock() noexcept 194s 1515: { 194s 1515: 194s 1515: return !__gthread_mutex_trylock(&_M_mutex); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 194s 1515: { return _M_try_lock_for(__rtime); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 194s 1515: { return _M_try_lock_until(__atime); } 194s 1515: 194s 1515: void 194s 1515: unlock() 194s 1515: { 194s 1515: 194s 1515: __gthread_mutex_unlock(&_M_mutex); 194s 1515: } 194s 1515: 194s 1515: native_handle_type 194s 1515: native_handle() noexcept 194s 1515: { return &_M_mutex; } 194s 1515: 194s 1515: private: 194s 1515: friend class __timed_mutex_impl; 194s 1515: 194s 1515: bool 194s 1515: _M_timedlock(const __gthread_time_t& __ts) 194s 1515: { return !__gthread_mutex_timedlock(&_M_mutex, &__ts); } 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: _M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts) 194s 1515: { return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); } 194s 1515: 194s 1515: }; 194s 1515: # 319 "/usr/include/c++/15/mutex" 3 4 194s 1515: class recursive_timed_mutex 194s 1515: : private __recursive_mutex_base, 194s 1515: public __timed_mutex_impl 194s 1515: { 194s 1515: public: 194s 1515: typedef __native_type* native_handle_type; 194s 1515: 194s 1515: recursive_timed_mutex() = default; 194s 1515: ~recursive_timed_mutex() = default; 194s 1515: 194s 1515: recursive_timed_mutex(const recursive_timed_mutex&) = delete; 194s 1515: recursive_timed_mutex& operator=(const recursive_timed_mutex&) = delete; 194s 1515: 194s 1515: void 194s 1515: lock() 194s 1515: { 194s 1515: int __e = __gthread_recursive_mutex_lock(&_M_mutex); 194s 1515: 194s 1515: 194s 1515: if (__e) 194s 1515: __throw_system_error(__e); 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock() noexcept 194s 1515: { 194s 1515: 194s 1515: return !__gthread_recursive_mutex_trylock(&_M_mutex); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 194s 1515: { return _M_try_lock_for(__rtime); } 194s 1515: 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: bool 194s 1515: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 194s 1515: { return _M_try_lock_until(__atime); } 194s 1515: 194s 1515: void 194s 1515: unlock() 194s 1515: { 194s 1515: 194s 1515: __gthread_recursive_mutex_unlock(&_M_mutex); 194s 1515: } 194s 1515: 194s 1515: native_handle_type 194s 1515: native_handle() noexcept 194s 1515: { return &_M_mutex; } 194s 1515: 194s 1515: private: 194s 1515: friend class __timed_mutex_impl; 194s 1515: 194s 1515: bool 194s 1515: _M_timedlock(const __gthread_time_t& __ts) 194s 1515: { return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts); } 194s 1515: 194s 1515: 194s 1515: bool 194s 1515: _M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts) 194s 1515: { return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); } 194s 1515: 194s 1515: }; 194s 1515: # 566 "/usr/include/c++/15/mutex" 3 4 194s 1515: namespace __detail 194s 1515: { 194s 1515: 194s 1515: template 194s 1515: inline int 194s 1515: __try_lock_impl(_Lockable& __l) 194s 1515: { 194s 1515: if (unique_lock<_Lockable> __lock{__l, try_to_lock}) 194s 1515: { 194s 1515: __lock.release(); 194s 1515: return -1; 194s 1515: } 194s 1515: else 194s 1515: return 0; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline int 194s 1515: __try_lock_impl(_L0& __l0, _Lockables&... __lockables) 194s 1515: { 194s 1515: # 611 "/usr/include/c++/15/mutex" 3 4 194s 1515: if (unique_lock<_L0> __lock{__l0, try_to_lock}) 194s 1515: { 194s 1515: int __idx = __detail::__try_lock_impl(__lockables...); 194s 1515: if (__idx == -1) 194s 1515: { 194s 1515: __lock.release(); 194s 1515: return -1; 194s 1515: } 194s 1515: return __idx + 1; 194s 1515: } 194s 1515: else 194s 1515: return 0; 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: # 638 "/usr/include/c++/15/mutex" 3 4 194s 1515: template 194s 1515: [[__nodiscard__]] 194s 1515: inline int 194s 1515: try_lock(_L1& __l1, _L2& __l2, _L3&... __l3) 194s 1515: { 194s 1515: return __detail::__try_lock_impl(__l1, __l2, __l3...); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: namespace __detail 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: __lock_impl(int& __i, int __depth, _L0& __l0, _L1&... __l1) 194s 1515: { 194s 1515: while (__i >= __depth) 194s 1515: { 194s 1515: if (__i == __depth) 194s 1515: { 194s 1515: int __failed = 1; 194s 1515: { 194s 1515: unique_lock<_L0> __first(__l0); 194s 1515: __failed += __detail::__try_lock_impl(__l1...); 194s 1515: if (!__failed) 194s 1515: { 194s 1515: __i = -1; 194s 1515: __first.release(); 194s 1515: return; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: __gthread_yield(); 194s 1515: 194s 1515: constexpr auto __n = 1 + sizeof...(_L1); 194s 1515: __i = (__depth + __failed) % __n; 194s 1515: } 194s 1515: else 194s 1515: __detail::__lock_impl(__i, __depth + 1, __l1..., __l0); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: # 698 "/usr/include/c++/15/mutex" 3 4 194s 1515: template 194s 1515: void 194s 1515: lock(_L1& __l1, _L2& __l2, _L3&... __l3) 194s 1515: { 194s 1515: # 730 "/usr/include/c++/15/mutex" 3 4 194s 1515: { 194s 1515: int __i = 0; 194s 1515: __detail::__lock_impl(__i, 0, __l1, __l2, __l3...); 194s 1515: } 194s 1515: } 194s 1515: # 809 "/usr/include/c++/15/mutex" 3 4 194s 1515: struct once_flag 194s 1515: { 194s 1515: constexpr once_flag() noexcept = default; 194s 1515: 194s 1515: 194s 1515: once_flag(const once_flag&) = delete; 194s 1515: 194s 1515: once_flag& operator=(const once_flag&) = delete; 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: 194s 1515: __gthread_once_t _M_once = 0; 194s 1515: 194s 1515: struct _Prepare_execution; 194s 1515: 194s 1515: template 194s 1515: friend void 194s 1515: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: extern __thread void* __once_callable; 194s 1515: extern __thread void (*__once_call)(); 194s 1515: 194s 1515: 194s 1515: struct once_flag::_Prepare_execution 194s 1515: { 194s 1515: template 194s 1515: explicit 194s 1515: _Prepare_execution(_Callable& __c) 194s 1515: { 194s 1515: 194s 1515: __once_callable = std::__addressof(__c); 194s 1515: 194s 1515: __once_call = [] { (*static_cast<_Callable*>(__once_callable))(); }; 194s 1515: } 194s 1515: 194s 1515: ~_Prepare_execution() 194s 1515: { 194s 1515: 194s 1515: __once_callable = nullptr; 194s 1515: __once_call = nullptr; 194s 1515: } 194s 1515: 194s 1515: _Prepare_execution(const _Prepare_execution&) = delete; 194s 1515: _Prepare_execution& operator=(const _Prepare_execution&) = delete; 194s 1515: }; 194s 1515: # 902 "/usr/include/c++/15/mutex" 3 4 194s 1515: extern "C" void __once_proxy(void); 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args) 194s 1515: { 194s 1515: 194s 1515: auto __callable = [&] { 194s 1515: std::__invoke(std::forward<_Callable>(__f), 194s 1515: std::forward<_Args>(__args)...); 194s 1515: }; 194s 1515: 194s 1515: once_flag::_Prepare_execution __exec(__callable); 194s 1515: 194s 1515: 194s 1515: if (int __e = __gthread_once(&__once._M_once, &__once_proxy)) 194s 1515: __throw_system_error(__e); 194s 1515: } 194s 1515: # 1023 "/usr/include/c++/15/mutex" 3 4 194s 1515: 194s 1515: } 194s 1515: # 3174 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: # 3182 "/usr/include/doctest/doctest.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/set" 1 3 4 194s 1515: # 64 "/usr/include/c++/15/set" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_tree.h" 1 3 4 194s 1515: # 72 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/ext/aligned_buffer.h" 1 3 4 194s 1515: # 42 "/usr/include/c++/15/ext/aligned_buffer.h" 3 4 194s 1515: namespace __gnu_cxx 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct __aligned_membuf 194s 1515: { 194s 1515: # 60 "/usr/include/c++/15/ext/aligned_buffer.h" 3 4 194s 1515: alignas(_Tp) 194s 1515: 194s 1515: unsigned char _M_storage[sizeof(_Tp)]; 194s 1515: 194s 1515: __aligned_membuf() = default; 194s 1515: 194s 1515: 194s 1515: __aligned_membuf(std::nullptr_t) { } 194s 1515: 194s 1515: void* 194s 1515: _M_addr() noexcept 194s 1515: { return static_cast(&_M_storage); } 194s 1515: 194s 1515: const void* 194s 1515: _M_addr() const noexcept 194s 1515: { return static_cast(&_M_storage); } 194s 1515: 194s 1515: _Tp* 194s 1515: _M_ptr() noexcept 194s 1515: { return static_cast<_Tp*>(_M_addr()); } 194s 1515: 194s 1515: const _Tp* 194s 1515: _M_ptr() const noexcept 194s 1515: { return static_cast(_M_addr()); } 194s 1515: }; 194s 1515: # 95 "/usr/include/c++/15/ext/aligned_buffer.h" 3 4 194s 1515: template 194s 1515: struct __aligned_buffer 194s 1515: { 194s 1515: 194s 1515: alignas(__alignof__(_Tp)) unsigned char _M_storage[sizeof(_Tp)]; 194s 1515: 194s 1515: __aligned_buffer() = default; 194s 1515: 194s 1515: 194s 1515: __aligned_buffer(std::nullptr_t) { } 194s 1515: 194s 1515: void* 194s 1515: _M_addr() noexcept 194s 1515: { 194s 1515: return static_cast(&_M_storage); 194s 1515: } 194s 1515: 194s 1515: const void* 194s 1515: _M_addr() const noexcept 194s 1515: { 194s 1515: return static_cast(&_M_storage); 194s 1515: } 194s 1515: 194s 1515: _Tp* 194s 1515: _M_ptr() noexcept 194s 1515: { return static_cast<_Tp*>(_M_addr()); } 194s 1515: 194s 1515: const _Tp* 194s 1515: _M_ptr() const noexcept 194s 1515: { return static_cast(_M_addr()); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 73 "/usr/include/c++/15/bits/stl_tree.h" 2 3 4 194s 1515: # 85 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: # 105 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: enum _Rb_tree_color { _S_red = false, _S_black = true }; 194s 1515: 194s 1515: struct _Rb_tree_node_base 194s 1515: { 194s 1515: typedef _Rb_tree_node_base* _Base_ptr; 194s 1515: 194s 1515: _Rb_tree_color _M_color; 194s 1515: _Base_ptr _M_parent; 194s 1515: _Base_ptr _M_left; 194s 1515: _Base_ptr _M_right; 194s 1515: 194s 1515: static _Base_ptr 194s 1515: _S_minimum(_Base_ptr __x) noexcept 194s 1515: { 194s 1515: while (__x->_M_left != 0) __x = __x->_M_left; 194s 1515: return __x; 194s 1515: } 194s 1515: 194s 1515: static _Base_ptr 194s 1515: _S_maximum(_Base_ptr __x) noexcept 194s 1515: { 194s 1515: while (__x->_M_right != 0) __x = __x->_M_right; 194s 1515: return __x; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Base_ptr 194s 1515: _M_base_ptr() const noexcept 194s 1515: { return const_cast<_Rb_tree_node_base*>(this); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Rb_tree_key_compare 194s 1515: { 194s 1515: _Key_compare _M_key_compare; 194s 1515: 194s 1515: _Rb_tree_key_compare() 194s 1515: noexcept(is_nothrow_default_constructible<_Key_compare>::value) 194s 1515: 194s 1515: : _M_key_compare() 194s 1515: { } 194s 1515: 194s 1515: _Rb_tree_key_compare(const _Key_compare& __comp) 194s 1515: : _M_key_compare(__comp) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Rb_tree_key_compare(const _Rb_tree_key_compare&) = default; 194s 1515: 194s 1515: _Rb_tree_key_compare(_Rb_tree_key_compare&& __x) 194s 1515: noexcept(is_nothrow_copy_constructible<_Key_compare>::value) 194s 1515: : _M_key_compare(__x._M_key_compare) 194s 1515: { } 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: struct _Rb_tree_header 194s 1515: { 194s 1515: _Rb_tree_node_base _M_header; 194s 1515: size_t _M_node_count; 194s 1515: 194s 1515: _Rb_tree_header() noexcept 194s 1515: { 194s 1515: _M_header._M_color = _S_red; 194s 1515: _M_reset(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: _Rb_tree_header(_Rb_tree_header&& __x) noexcept 194s 1515: { 194s 1515: if (__x._M_header._M_parent != nullptr) 194s 1515: _M_move_data(__x); 194s 1515: else 194s 1515: { 194s 1515: _M_header._M_color = _S_red; 194s 1515: _M_reset(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_move_data(_Rb_tree_header& __from) 194s 1515: { 194s 1515: _M_header._M_color = __from._M_header._M_color; 194s 1515: _M_header._M_parent = __from._M_header._M_parent; 194s 1515: _M_header._M_left = __from._M_header._M_left; 194s 1515: _M_header._M_right = __from._M_header._M_right; 194s 1515: _M_header._M_parent->_M_parent = &_M_header; 194s 1515: _M_node_count = __from._M_node_count; 194s 1515: 194s 1515: __from._M_reset(); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_reset() 194s 1515: { 194s 1515: _M_header._M_parent = 0; 194s 1515: _M_header._M_left = &_M_header; 194s 1515: _M_header._M_right = &_M_header; 194s 1515: _M_node_count = 0; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Rb_tree_node : public _Rb_tree_node_base 194s 1515: { 194s 1515: # 227 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: __gnu_cxx::__aligned_membuf<_Val> _M_storage; 194s 1515: 194s 1515: _Val* 194s 1515: _M_valptr() 194s 1515: { return _M_storage._M_ptr(); } 194s 1515: 194s 1515: const _Val* 194s 1515: _M_valptr() const 194s 1515: { return _M_storage._M_ptr(); } 194s 1515: 194s 1515: 194s 1515: _Rb_tree_node* 194s 1515: _M_node_ptr() noexcept 194s 1515: { return this; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: namespace __rb_tree 194s 1515: { 194s 1515: template 194s 1515: struct _Node_base 194s 1515: { 194s 1515: using _Base_ptr = __ptr_rebind<_VoidPtr, _Node_base>; 194s 1515: 194s 1515: _Rb_tree_color _M_color; 194s 1515: _Base_ptr _M_parent; 194s 1515: _Base_ptr _M_left; 194s 1515: _Base_ptr _M_right; 194s 1515: 194s 1515: static _Base_ptr 194s 1515: _S_minimum(_Base_ptr __x) noexcept 194s 1515: { 194s 1515: while (__x->_M_left) __x = __x->_M_left; 194s 1515: return __x; 194s 1515: } 194s 1515: 194s 1515: static _Base_ptr 194s 1515: _S_maximum(_Base_ptr __x) noexcept 194s 1515: { 194s 1515: while (__x->_M_right) __x = __x->_M_right; 194s 1515: return __x; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Base_ptr 194s 1515: _M_base_ptr() const noexcept 194s 1515: { 194s 1515: return pointer_traits<_Base_ptr>::pointer_to 194s 1515: (*const_cast<_Node_base*>(this)); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Header 194s 1515: { 194s 1515: private: 194s 1515: using _Base_ptr = typename _NodeBase::_Base_ptr; 194s 1515: 194s 1515: public: 194s 1515: _NodeBase _M_header; 194s 1515: size_t _M_node_count; 194s 1515: 194s 1515: _Header() noexcept 194s 1515: { 194s 1515: _M_header._M_color = _S_red; 194s 1515: _M_reset(); 194s 1515: } 194s 1515: 194s 1515: _Header(_Header&& __x) noexcept 194s 1515: { 194s 1515: if (__x._M_header._M_parent) 194s 1515: _M_move_data(__x); 194s 1515: else 194s 1515: { 194s 1515: _M_header._M_color = _S_red; 194s 1515: _M_reset(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_move_data(_Header& __from) 194s 1515: { 194s 1515: _M_header._M_color = __from._M_header._M_color; 194s 1515: _M_header._M_parent = __from._M_header._M_parent; 194s 1515: _M_header._M_left = __from._M_header._M_left; 194s 1515: _M_header._M_right = __from._M_header._M_right; 194s 1515: _M_header._M_parent->_M_parent = _M_header._M_base_ptr(); 194s 1515: _M_node_count = __from._M_node_count; 194s 1515: 194s 1515: __from._M_reset(); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_reset() 194s 1515: { 194s 1515: _M_header._M_parent = nullptr; 194s 1515: _M_header._M_left = _M_header._M_right = _M_header._M_base_ptr(); 194s 1515: _M_node_count = 0; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Node : public __rb_tree::_Node_base<__ptr_rebind<_ValPtr, void>> 194s 1515: { 194s 1515: using value_type = typename pointer_traits<_ValPtr>::element_type; 194s 1515: using _Node_ptr = __ptr_rebind<_ValPtr, _Node>; 194s 1515: 194s 1515: _Node() noexcept { } 194s 1515: ~_Node() { } 194s 1515: _Node(_Node&&) = delete; 194s 1515: 194s 1515: union _Uninit_storage 194s 1515: { 194s 1515: _Uninit_storage() noexcept { } 194s 1515: ~_Uninit_storage() { } 194s 1515: 194s 1515: value_type _M_data; 194s 1515: }; 194s 1515: _Uninit_storage _M_u; 194s 1515: 194s 1515: value_type* 194s 1515: _M_valptr() 194s 1515: { return std::addressof(_M_u._M_data); } 194s 1515: 194s 1515: value_type const* 194s 1515: _M_valptr() const 194s 1515: { return std::addressof(_M_u._M_data); } 194s 1515: 194s 1515: _Node_ptr 194s 1515: _M_node_ptr() noexcept 194s 1515: { return pointer_traits<_Node_ptr>::pointer_to(*this); } 194s 1515: }; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: __attribute__ ((__pure__)) _Rb_tree_node_base* 194s 1515: _Rb_tree_increment(_Rb_tree_node_base* __x) throw (); 194s 1515: 194s 1515: __attribute__ ((__pure__)) _Rb_tree_node_base* 194s 1515: _Rb_tree_decrement(_Rb_tree_node_base* __x) throw (); 194s 1515: 194s 1515: template 194s 1515: struct _Rb_tree_iterator 194s 1515: { 194s 1515: typedef _Tp value_type; 194s 1515: typedef _Tp& reference; 194s 1515: typedef _Tp* pointer; 194s 1515: 194s 1515: typedef bidirectional_iterator_tag iterator_category; 194s 1515: typedef ptrdiff_t difference_type; 194s 1515: 194s 1515: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; 194s 1515: typedef _Rb_tree_node<_Tp>* _Node_ptr; 194s 1515: 194s 1515: _Rb_tree_iterator() noexcept 194s 1515: : _M_node() { } 194s 1515: 194s 1515: explicit 194s 1515: _Rb_tree_iterator(_Base_ptr __x) noexcept 194s 1515: : _M_node(__x) { } 194s 1515: 194s 1515: reference 194s 1515: operator*() const noexcept 194s 1515: { return *static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 194s 1515: 194s 1515: pointer 194s 1515: operator->() const noexcept 194s 1515: { return static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 194s 1515: 194s 1515: _Rb_tree_iterator& 194s 1515: operator++() noexcept 194s 1515: { 194s 1515: _M_node = _Rb_tree_increment(_M_node); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: _Rb_tree_iterator 194s 1515: operator++(int) noexcept 194s 1515: { 194s 1515: _Rb_tree_iterator __tmp = *this; 194s 1515: _M_node = _Rb_tree_increment(_M_node); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: _Rb_tree_iterator& 194s 1515: operator--() noexcept 194s 1515: { 194s 1515: _M_node = _Rb_tree_decrement(_M_node); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: _Rb_tree_iterator 194s 1515: operator--(int) noexcept 194s 1515: { 194s 1515: _Rb_tree_iterator __tmp = *this; 194s 1515: _M_node = _Rb_tree_decrement(_M_node); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: friend bool 194s 1515: operator==(const _Rb_tree_iterator& __x, 194s 1515: const _Rb_tree_iterator& __y) noexcept 194s 1515: { return __x._M_node == __y._M_node; } 194s 1515: 194s 1515: 194s 1515: friend bool 194s 1515: operator!=(const _Rb_tree_iterator& __x, 194s 1515: const _Rb_tree_iterator& __y) noexcept 194s 1515: { return __x._M_node != __y._M_node; } 194s 1515: 194s 1515: 194s 1515: _Base_ptr _M_node; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Rb_tree_const_iterator 194s 1515: { 194s 1515: typedef _Tp value_type; 194s 1515: typedef const _Tp& reference; 194s 1515: typedef const _Tp* pointer; 194s 1515: 194s 1515: typedef _Rb_tree_iterator<_Tp> iterator; 194s 1515: 194s 1515: typedef bidirectional_iterator_tag iterator_category; 194s 1515: typedef ptrdiff_t difference_type; 194s 1515: 194s 1515: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; 194s 1515: typedef const _Rb_tree_node<_Tp>* _Node_ptr; 194s 1515: 194s 1515: _Rb_tree_const_iterator() noexcept 194s 1515: : _M_node() { } 194s 1515: 194s 1515: explicit 194s 1515: _Rb_tree_const_iterator(_Base_ptr __x) noexcept 194s 1515: : _M_node(__x) { } 194s 1515: 194s 1515: _Rb_tree_const_iterator(const iterator& __it) noexcept 194s 1515: : _M_node(__it._M_node) { } 194s 1515: 194s 1515: reference 194s 1515: operator*() const noexcept 194s 1515: { return *static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 194s 1515: 194s 1515: pointer 194s 1515: operator->() const noexcept 194s 1515: { return static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 194s 1515: 194s 1515: _Rb_tree_const_iterator& 194s 1515: operator++() noexcept 194s 1515: { 194s 1515: _M_node = _Rb_tree_increment(_M_node); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: _Rb_tree_const_iterator 194s 1515: operator++(int) noexcept 194s 1515: { 194s 1515: _Rb_tree_const_iterator __tmp = *this; 194s 1515: _M_node = _Rb_tree_increment(_M_node); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: _Rb_tree_const_iterator& 194s 1515: operator--() noexcept 194s 1515: { 194s 1515: _M_node = _Rb_tree_decrement(_M_node); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: _Rb_tree_const_iterator 194s 1515: operator--(int) noexcept 194s 1515: { 194s 1515: _Rb_tree_const_iterator __tmp = *this; 194s 1515: _M_node = _Rb_tree_decrement(_M_node); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: friend bool 194s 1515: operator==(const _Rb_tree_const_iterator& __x, 194s 1515: const _Rb_tree_const_iterator& __y) noexcept 194s 1515: { return __x._M_node == __y._M_node; } 194s 1515: 194s 1515: 194s 1515: friend bool 194s 1515: operator!=(const _Rb_tree_const_iterator& __x, 194s 1515: const _Rb_tree_const_iterator& __y) noexcept 194s 1515: { return __x._M_node != __y._M_node; } 194s 1515: 194s 1515: 194s 1515: _Base_ptr _M_node; 194s 1515: }; 194s 1515: 194s 1515: __attribute__((__nonnull__)) 194s 1515: void 194s 1515: _Rb_tree_insert_and_rebalance(const bool __insert_left, 194s 1515: _Rb_tree_node_base* __x, 194s 1515: _Rb_tree_node_base* __p, 194s 1515: _Rb_tree_node_base& __header) throw (); 194s 1515: 194s 1515: __attribute__((__nonnull__,__returns_nonnull__)) 194s 1515: _Rb_tree_node_base* 194s 1515: _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, 194s 1515: _Rb_tree_node_base& __header) throw (); 194s 1515: 194s 1515: namespace __rb_tree 194s 1515: { 194s 1515: 194s 1515: template 194s 1515: struct _Iterator 194s 1515: { 194s 1515: template 194s 1515: using __maybe_const = __conditional_t<_Const, const _Tp, _Tp>; 194s 1515: 194s 1515: using __ptr_traits = pointer_traits<_ValPtr>; 194s 1515: using value_type = typename __ptr_traits::element_type; 194s 1515: using reference = __maybe_const&; 194s 1515: using pointer = __maybe_const*; 194s 1515: 194s 1515: using iterator_category = bidirectional_iterator_tag; 194s 1515: using difference_type = ptrdiff_t; 194s 1515: 194s 1515: using _Node = __rb_tree::_Node<_ValPtr>; 194s 1515: using _Node_base = __rb_tree::_Node_base<__ptr_rebind<_ValPtr, void>>; 194s 1515: using _Base_ptr = typename _Node_base::_Base_ptr; 194s 1515: 194s 1515: _Iterator() noexcept 194s 1515: : _M_node() { } 194s 1515: 194s 1515: constexpr explicit 194s 1515: _Iterator(_Base_ptr __x) noexcept 194s 1515: : _M_node(__x) { } 194s 1515: 194s 1515: _Iterator(const _Iterator&) = default; 194s 1515: _Iterator& operator=(const _Iterator&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: constexpr 194s 1515: _Iterator(const _Iterator<_OtherConst, _ValPtr>& __it) 194s 1515: 194s 1515: : _M_node(__it._M_node) { } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: reference 194s 1515: operator*() const noexcept 194s 1515: { return *static_cast<_Node&>(*_M_node)._M_valptr(); } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: pointer 194s 1515: operator->() const noexcept 194s 1515: { return static_cast<_Node&>(*_M_node)._M_valptr(); } 194s 1515: 194s 1515: _Iterator& 194s 1515: operator++() noexcept 194s 1515: { 194s 1515: if (_M_node->_M_right) 194s 1515: { 194s 1515: _M_node = _M_node->_M_right; 194s 1515: while (_M_node->_M_left) 194s 1515: _M_node = _M_node->_M_left; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: _Base_ptr __y = _M_node->_M_parent; 194s 1515: while (_M_node == __y->_M_right) 194s 1515: { 194s 1515: _M_node = __y; 194s 1515: __y = __y->_M_parent; 194s 1515: } 194s 1515: if (_M_node->_M_right != __y) 194s 1515: _M_node = __y; 194s 1515: } 194s 1515: 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: _Iterator 194s 1515: operator++(int) noexcept 194s 1515: { 194s 1515: _Iterator __tmp(this->_M_node); 194s 1515: ++*this; 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: _Iterator& 194s 1515: operator--() noexcept 194s 1515: { 194s 1515: if (_M_node->_M_color == _S_red 194s 1515: && _M_node->_M_parent->_M_parent == _M_node) 194s 1515: _M_node = _M_node->_M_right; 194s 1515: else if (_M_node->_M_left) 194s 1515: { 194s 1515: _Base_ptr __y = _M_node->_M_left; 194s 1515: while (__y->_M_right) 194s 1515: __y = __y->_M_right; 194s 1515: _M_node = __y; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: _Base_ptr __y = _M_node->_M_parent; 194s 1515: while (_M_node == __y->_M_left) 194s 1515: { 194s 1515: _M_node = __y; 194s 1515: __y = __y->_M_parent; 194s 1515: } 194s 1515: _M_node = __y; 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: _Iterator 194s 1515: operator--(int) noexcept 194s 1515: { 194s 1515: _Iterator __tmp(this->_M_node); 194s 1515: --*this; 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend bool 194s 1515: operator==(const _Iterator& __x, const _Iterator& __y) noexcept 194s 1515: { return __x._M_node == __y._M_node; } 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] 194s 1515: friend bool 194s 1515: operator!=(const _Iterator& __x, const _Iterator& __y) noexcept 194s 1515: { return __x._M_node != __y._M_node; } 194s 1515: 194s 1515: 194s 1515: _Base_ptr _M_node; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Node_traits; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Node_traits<_Val, _Val*> 194s 1515: { 194s 1515: typedef _Rb_tree_node<_Val> _Node; 194s 1515: typedef _Node* _Node_ptr; 194s 1515: typedef _Rb_tree_node_base _Node_base; 194s 1515: typedef _Node_base* _Base_ptr; 194s 1515: typedef _Rb_tree_header _Header_t; 194s 1515: typedef _Rb_tree_iterator<_Val> _Iterator; 194s 1515: typedef _Rb_tree_const_iterator<_Val> _Const_iterator; 194s 1515: 194s 1515: __attribute__((__nonnull__)) 194s 1515: static void 194s 1515: _S_insert_and_rebalance(const bool __insert_left, 194s 1515: _Node_base* __x, _Node_base* __p, 194s 1515: _Node_base& __header) noexcept 194s 1515: { 194s 1515: return _Rb_tree_insert_and_rebalance(__insert_left, __x, __p, __header); 194s 1515: } 194s 1515: 194s 1515: __attribute__((__nonnull__,__returns_nonnull__)) 194s 1515: static _Node_base* 194s 1515: _S_rebalance_for_erase(_Node_base* const __z, 194s 1515: _Node_base& __header) noexcept 194s 1515: { return _Rb_tree_rebalance_for_erase(__z, __header); } 194s 1515: }; 194s 1515: # 712 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: template 194s 1515: struct _Node_traits 194s 1515: { 194s 1515: using _Node = __rb_tree::_Node<_ValPtr>; 194s 1515: using _Node_ptr = __ptr_rebind<_ValPtr, _Node>; 194s 1515: using _Node_base = __rb_tree::_Node_base<__ptr_rebind<_ValPtr, void>>; 194s 1515: using _Base_ptr = __ptr_rebind<_ValPtr, _Node_base>; 194s 1515: using _Header_t = __rb_tree::_Header<_Node_base>; 194s 1515: using _Iterator = __rb_tree::_Iterator; 194s 1515: using _Const_iterator = __rb_tree::_Iterator; 194s 1515: 194s 1515: static void 194s 1515: _Rotate_left(_Base_ptr __x, _Base_ptr& __root) 194s 1515: { 194s 1515: const _Base_ptr __y = __x->_M_right; 194s 1515: 194s 1515: __x->_M_right = __y->_M_left; 194s 1515: if (__y->_M_left) 194s 1515: __y->_M_left->_M_parent = __x; 194s 1515: __y->_M_parent = __x->_M_parent; 194s 1515: 194s 1515: if (__x == __root) 194s 1515: __root = __y; 194s 1515: else if (__x == __x->_M_parent->_M_left) 194s 1515: __x->_M_parent->_M_left = __y; 194s 1515: else 194s 1515: __x->_M_parent->_M_right = __y; 194s 1515: __y->_M_left = __x; 194s 1515: __x->_M_parent = __y; 194s 1515: } 194s 1515: 194s 1515: static void 194s 1515: _Rotate_right(_Base_ptr __x, _Base_ptr& __root) 194s 1515: { 194s 1515: const _Base_ptr __y = __x->_M_left; 194s 1515: 194s 1515: __x->_M_left = __y->_M_right; 194s 1515: if (__y->_M_right) 194s 1515: __y->_M_right->_M_parent = __x; 194s 1515: __y->_M_parent = __x->_M_parent; 194s 1515: 194s 1515: if (__x == __root) 194s 1515: __root = __y; 194s 1515: else if (__x == __x->_M_parent->_M_right) 194s 1515: __x->_M_parent->_M_right = __y; 194s 1515: else 194s 1515: __x->_M_parent->_M_left = __y; 194s 1515: __y->_M_right = __x; 194s 1515: __x->_M_parent = __y; 194s 1515: } 194s 1515: 194s 1515: static void 194s 1515: _S_insert_and_rebalance(const bool __insert_left, 194s 1515: _Base_ptr __x, _Base_ptr __p, 194s 1515: _Node_base& __header) 194s 1515: { 194s 1515: _Base_ptr& __root = __header._M_parent; 194s 1515: 194s 1515: 194s 1515: __x->_M_parent = __p; 194s 1515: __x->_M_left = __x->_M_right = nullptr; 194s 1515: __x->_M_color = _S_red; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (__insert_left) 194s 1515: { 194s 1515: __p->_M_left = __x; 194s 1515: 194s 1515: if (std::__to_address(__p) == std::addressof(__header)) 194s 1515: { 194s 1515: __header._M_parent = __x; 194s 1515: __header._M_right = __x; 194s 1515: } 194s 1515: else if (__p == __header._M_left) 194s 1515: __header._M_left = __x; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __p->_M_right = __x; 194s 1515: 194s 1515: if (__p == __header._M_right) 194s 1515: __header._M_right = __x; 194s 1515: } 194s 1515: 194s 1515: while (__x != __root 194s 1515: && __x->_M_parent->_M_color == _S_red) 194s 1515: { 194s 1515: const _Base_ptr __xpp = __x->_M_parent->_M_parent; 194s 1515: 194s 1515: if (__x->_M_parent == __xpp->_M_left) 194s 1515: { 194s 1515: const _Base_ptr __y = __xpp->_M_right; 194s 1515: if (__y && __y->_M_color == _S_red) 194s 1515: { 194s 1515: __x->_M_parent->_M_color = _S_black; 194s 1515: __y->_M_color = _S_black; 194s 1515: __xpp->_M_color = _S_red; 194s 1515: __x = __xpp; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: if (__x == __x->_M_parent->_M_right) 194s 1515: { 194s 1515: __x = __x->_M_parent; 194s 1515: _Rotate_left(__x, __root); 194s 1515: } 194s 1515: __x->_M_parent->_M_color = _S_black; 194s 1515: __xpp->_M_color = _S_red; 194s 1515: _Rotate_right(__xpp, __root); 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: const _Base_ptr __y = __xpp->_M_left; 194s 1515: if (__y && __y->_M_color == _S_red) 194s 1515: { 194s 1515: __x->_M_parent->_M_color = _S_black; 194s 1515: __y->_M_color = _S_black; 194s 1515: __xpp->_M_color = _S_red; 194s 1515: __x = __xpp; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: if (__x == __x->_M_parent->_M_left) 194s 1515: { 194s 1515: __x = __x->_M_parent; 194s 1515: _Rotate_right(__x, __root); 194s 1515: } 194s 1515: __x->_M_parent->_M_color = _S_black; 194s 1515: __xpp->_M_color = _S_red; 194s 1515: _Rotate_left(__xpp, __root); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: __root->_M_color = _S_black; 194s 1515: } 194s 1515: 194s 1515: static _Base_ptr 194s 1515: _S_rebalance_for_erase(_Base_ptr __z, _Node_base& __header) 194s 1515: { 194s 1515: _Base_ptr& __root = __header._M_parent; 194s 1515: _Base_ptr& __leftmost = __header._M_left; 194s 1515: _Base_ptr& __rightmost = __header._M_right; 194s 1515: _Base_ptr __y = __z; 194s 1515: _Base_ptr __x{}; 194s 1515: _Base_ptr __x_parent{}; 194s 1515: 194s 1515: if (!__y->_M_left) 194s 1515: __x = __y->_M_right; 194s 1515: else 194s 1515: if (!__y->_M_right) 194s 1515: __x = __y->_M_left; 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: __y = __y->_M_right; 194s 1515: while (__y->_M_left) 194s 1515: __y = __y->_M_left; 194s 1515: __x = __y->_M_right; 194s 1515: } 194s 1515: if (__y != __z) 194s 1515: { 194s 1515: 194s 1515: __z->_M_left->_M_parent = __y; 194s 1515: __y->_M_left = __z->_M_left; 194s 1515: if (__y != __z->_M_right) 194s 1515: { 194s 1515: __x_parent = __y->_M_parent; 194s 1515: if (__x) 194s 1515: __x->_M_parent = __y->_M_parent; 194s 1515: __y->_M_parent->_M_left = __x; 194s 1515: __y->_M_right = __z->_M_right; 194s 1515: __z->_M_right->_M_parent = __y; 194s 1515: } 194s 1515: else 194s 1515: __x_parent = __y; 194s 1515: if (__root == __z) 194s 1515: __root = __y; 194s 1515: else if (__z->_M_parent->_M_left == __z) 194s 1515: __z->_M_parent->_M_left = __y; 194s 1515: else 194s 1515: __z->_M_parent->_M_right = __y; 194s 1515: __y->_M_parent = __z->_M_parent; 194s 1515: std::swap(__y->_M_color, __z->_M_color); 194s 1515: __y = __z; 194s 1515: 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __x_parent = __y->_M_parent; 194s 1515: if (__x) 194s 1515: __x->_M_parent = __y->_M_parent; 194s 1515: if (__root == __z) 194s 1515: __root = __x; 194s 1515: else 194s 1515: if (__z->_M_parent->_M_left == __z) 194s 1515: __z->_M_parent->_M_left = __x; 194s 1515: else 194s 1515: __z->_M_parent->_M_right = __x; 194s 1515: if (__leftmost == __z) 194s 1515: { 194s 1515: if (!__z->_M_right) 194s 1515: __leftmost = __z->_M_parent; 194s 1515: 194s 1515: else 194s 1515: __leftmost = _Node_base::_S_minimum(__x); 194s 1515: } 194s 1515: if (__rightmost == __z) 194s 1515: { 194s 1515: if (__z->_M_left == 0) 194s 1515: __rightmost = __z->_M_parent; 194s 1515: 194s 1515: else 194s 1515: __rightmost = _Node_base::_S_maximum(__x); 194s 1515: } 194s 1515: } 194s 1515: if (__y->_M_color != _S_red) 194s 1515: { 194s 1515: while (__x != __root && (__x == 0 || __x->_M_color == _S_black)) 194s 1515: if (__x == __x_parent->_M_left) 194s 1515: { 194s 1515: _Base_ptr __w = __x_parent->_M_right; 194s 1515: if (__w->_M_color == _S_red) 194s 1515: { 194s 1515: __w->_M_color = _S_black; 194s 1515: __x_parent->_M_color = _S_red; 194s 1515: _Rotate_left(__x_parent, __root); 194s 1515: __w = __x_parent->_M_right; 194s 1515: } 194s 1515: if ((!__w->_M_left || __w->_M_left->_M_color == _S_black) && 194s 1515: (!__w->_M_right || __w->_M_right->_M_color == _S_black)) 194s 1515: { 194s 1515: __w->_M_color = _S_red; 194s 1515: __x = __x_parent; 194s 1515: __x_parent = __x_parent->_M_parent; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: if (!__w->_M_right || __w->_M_right->_M_color == _S_black) 194s 1515: { 194s 1515: __w->_M_left->_M_color = _S_black; 194s 1515: __w->_M_color = _S_red; 194s 1515: _Rotate_right(__w, __root); 194s 1515: __w = __x_parent->_M_right; 194s 1515: } 194s 1515: __w->_M_color = __x_parent->_M_color; 194s 1515: __x_parent->_M_color = _S_black; 194s 1515: if (__w->_M_right) 194s 1515: __w->_M_right->_M_color = _S_black; 194s 1515: _Rotate_left(__x_parent, __root); 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: _Base_ptr __w = __x_parent->_M_left; 194s 1515: if (__w->_M_color == _S_red) 194s 1515: { 194s 1515: __w->_M_color = _S_black; 194s 1515: __x_parent->_M_color = _S_red; 194s 1515: _Rotate_right(__x_parent, __root); 194s 1515: __w = __x_parent->_M_left; 194s 1515: } 194s 1515: if ((!__w->_M_right || __w->_M_right->_M_color == _S_black) && 194s 1515: (!__w->_M_left || __w->_M_left->_M_color == _S_black)) 194s 1515: { 194s 1515: __w->_M_color = _S_red; 194s 1515: __x = __x_parent; 194s 1515: __x_parent = __x_parent->_M_parent; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: if (!__w->_M_left || __w->_M_left->_M_color == _S_black) 194s 1515: { 194s 1515: __w->_M_right->_M_color = _S_black; 194s 1515: __w->_M_color = _S_red; 194s 1515: _Rotate_left(__w, __root); 194s 1515: __w = __x_parent->_M_left; 194s 1515: } 194s 1515: __w->_M_color = __x_parent->_M_color; 194s 1515: __x_parent->_M_color = _S_black; 194s 1515: if (__w->_M_left) 194s 1515: __w->_M_left->_M_color = _S_black; 194s 1515: _Rotate_right(__x_parent, __root); 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: if (__x) 194s 1515: __x->_M_color = _S_black; 194s 1515: } 194s 1515: 194s 1515: return __y; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template > 194s 1515: class _Rb_tree 194s 1515: { 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 194s 1515: rebind<_Val>::other _Val_alloc_type; 194s 1515: 194s 1515: typedef __gnu_cxx::__alloc_traits<_Val_alloc_type> _Val_alloc_traits; 194s 1515: typedef typename _Val_alloc_traits::pointer _ValPtr; 194s 1515: typedef __rb_tree::_Node_traits<_Val, _ValPtr> _Node_traits; 194s 1515: 194s 1515: typedef typename _Node_traits::_Node_base _Node_base; 194s 1515: typedef typename _Node_traits::_Node _Node; 194s 1515: 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 194s 1515: rebind<_Node>::other _Node_allocator; 194s 1515: 194s 1515: typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Node_alloc_traits; 194s 1515: 194s 1515: protected: 194s 1515: typedef typename _Node_traits::_Base_ptr _Base_ptr; 194s 1515: typedef typename _Node_traits::_Node_ptr _Node_ptr; 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: 194s 1515: struct _Reuse_or_alloc_node 194s 1515: { 194s 1515: _Reuse_or_alloc_node(_Rb_tree& __t) 194s 1515: : _M_root(__t._M_root()), _M_nodes(__t._M_rightmost()), _M_t(__t) 194s 1515: { 194s 1515: if (_M_root) 194s 1515: { 194s 1515: _M_root->_M_parent = _Base_ptr(); 194s 1515: 194s 1515: if (_M_nodes->_M_left) 194s 1515: _M_nodes = _M_nodes->_M_left; 194s 1515: } 194s 1515: else 194s 1515: _M_nodes = _Base_ptr(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: _Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete; 194s 1515: 194s 1515: 194s 1515: ~_Reuse_or_alloc_node() 194s 1515: { 194s 1515: if (_M_root) 194s 1515: _M_t._M_erase(static_cast<_Node&>(*_M_root)._M_node_ptr()); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _Node_ptr 194s 1515: operator()(_Arg&& __arg) 194s 1515: { 194s 1515: _Base_ptr __base = _M_extract(); 194s 1515: if (__base) 194s 1515: { 194s 1515: _Node_ptr __node = static_cast<_Node&>(*__base)._M_node_ptr(); 194s 1515: _M_t._M_destroy_node(__node); 194s 1515: _M_t._M_construct_node(__node, std::forward<_Arg>(__arg)); 194s 1515: return __node; 194s 1515: } 194s 1515: 194s 1515: return _M_t._M_create_node(std::forward<_Arg>(__arg)); 194s 1515: } 194s 1515: 194s 1515: private: 194s 1515: _Base_ptr 194s 1515: _M_extract() 194s 1515: { 194s 1515: if (!_M_nodes) 194s 1515: return _M_nodes; 194s 1515: 194s 1515: _Base_ptr __node = _M_nodes; 194s 1515: _M_nodes = _M_nodes->_M_parent; 194s 1515: if (_M_nodes) 194s 1515: { 194s 1515: if (_M_nodes->_M_right == __node) 194s 1515: { 194s 1515: _M_nodes->_M_right = _Base_ptr(); 194s 1515: 194s 1515: if (_M_nodes->_M_left) 194s 1515: { 194s 1515: _M_nodes = _M_nodes->_M_left; 194s 1515: 194s 1515: while (_M_nodes->_M_right) 194s 1515: _M_nodes = _M_nodes->_M_right; 194s 1515: 194s 1515: if (_M_nodes->_M_left) 194s 1515: _M_nodes = _M_nodes->_M_left; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: _M_nodes->_M_left = _Base_ptr(); 194s 1515: } 194s 1515: else 194s 1515: _M_root = _Base_ptr(); 194s 1515: 194s 1515: return __node; 194s 1515: } 194s 1515: 194s 1515: _Base_ptr _M_root; 194s 1515: _Base_ptr _M_nodes; 194s 1515: _Rb_tree& _M_t; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct _Alloc_node 194s 1515: { 194s 1515: _Alloc_node(_Rb_tree& __t) 194s 1515: : _M_t(__t) { } 194s 1515: 194s 1515: template 194s 1515: _Node_ptr 194s 1515: operator()(_Arg&& __arg) const 194s 1515: { return _M_t._M_create_node(std::forward<_Arg>(__arg)); } 194s 1515: 194s 1515: private: 194s 1515: _Rb_tree& _M_t; 194s 1515: }; 194s 1515: 194s 1515: public: 194s 1515: typedef _Key key_type; 194s 1515: typedef _Val value_type; 194s 1515: typedef value_type* pointer; 194s 1515: typedef const value_type* const_pointer; 194s 1515: typedef value_type& reference; 194s 1515: typedef const value_type& const_reference; 194s 1515: typedef size_t size_type; 194s 1515: typedef ptrdiff_t difference_type; 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: _Node_allocator& 194s 1515: _M_get_Node_allocator() noexcept 194s 1515: { return this->_M_impl; } 194s 1515: 194s 1515: const _Node_allocator& 194s 1515: _M_get_Node_allocator() const noexcept 194s 1515: { return this->_M_impl; } 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return allocator_type(_M_get_Node_allocator()); } 194s 1515: 194s 1515: protected: 194s 1515: _Node_ptr 194s 1515: _M_get_node() 194s 1515: { 194s 1515: 194s 1515: return _Node_alloc_traits::allocate(_M_get_Node_allocator(), 1); 194s 1515: # 1185 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_put_node(_Node_ptr __p) noexcept 194s 1515: { 194s 1515: 194s 1515: _Node_alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); 194s 1515: # 1207 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: } 194s 1515: # 1230 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: _M_construct_node(_Node_ptr __node, _Args&&... __args) 194s 1515: { 194s 1515: try 194s 1515: { 194s 1515: ::new(std::addressof(*__node)) _Node; 194s 1515: _Node_alloc_traits::construct(_M_get_Node_allocator(), 194s 1515: __node->_M_valptr(), 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: __node->~_Node(); 194s 1515: _M_put_node(__node); 194s 1515: throw; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _Node_ptr 194s 1515: _M_create_node(_Args&&... __args) 194s 1515: { 194s 1515: _Node_ptr __tmp = _M_get_node(); 194s 1515: _M_construct_node(__tmp, std::forward<_Args>(__args)...); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_destroy_node(_Node_ptr __p) noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr()); 194s 1515: __p->~_Node(); 194s 1515: 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_drop_node(_Node_ptr __p) noexcept 194s 1515: { 194s 1515: _M_destroy_node(__p); 194s 1515: _M_put_node(__p); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _Node_ptr 194s 1515: _M_clone_node(_Node_ptr __x, _NodeGen& __node_gen) 194s 1515: { 194s 1515: 194s 1515: using _Vp = __conditional_t<_MoveValue, 194s 1515: value_type&&, 194s 1515: const value_type&>; 194s 1515: 194s 1515: _Node_ptr __tmp 194s 1515: = __node_gen(std::forward<_Vp>(*__x->_M_valptr())); 194s 1515: __tmp->_M_color = __x->_M_color; 194s 1515: __tmp->_M_left = __tmp->_M_right = _Base_ptr(); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: protected: 194s 1515: typedef typename _Node_traits::_Header_t _Header_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: 194s 1515: struct _Rb_tree_impl 194s 1515: : public _Node_allocator 194s 1515: , public _Rb_tree_key_compare<_Key_compare> 194s 1515: , public _Header_t 194s 1515: { 194s 1515: typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare; 194s 1515: 194s 1515: _Rb_tree_impl() 194s 1515: noexcept(is_nothrow_default_constructible<_Node_allocator>::value && is_nothrow_default_constructible<_Base_key_compare>::value) 194s 1515: 194s 1515: 194s 1515: : _Node_allocator() 194s 1515: { } 194s 1515: 194s 1515: _Rb_tree_impl(const _Rb_tree_impl& __x) 194s 1515: : _Node_allocator(_Node_alloc_traits::_S_select_on_copy(__x)) 194s 1515: , _Base_key_compare(__x._M_key_compare) 194s 1515: , _Header_t() 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Rb_tree_impl(_Rb_tree_impl&&) 194s 1515: noexcept( is_nothrow_move_constructible<_Base_key_compare>::value ) 194s 1515: = default; 194s 1515: 194s 1515: explicit 194s 1515: _Rb_tree_impl(_Node_allocator&& __a) 194s 1515: : _Node_allocator(std::move(__a)) 194s 1515: { } 194s 1515: 194s 1515: _Rb_tree_impl(_Rb_tree_impl&& __x, _Node_allocator&& __a) 194s 1515: : _Node_allocator(std::move(__a)), 194s 1515: _Base_key_compare(std::move(__x)), 194s 1515: _Header_t(std::move(__x)) 194s 1515: { } 194s 1515: 194s 1515: _Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a) 194s 1515: : _Node_allocator(std::move(__a)), _Base_key_compare(__comp) 194s 1515: { } 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: _Rb_tree_impl<_Compare> _M_impl; 194s 1515: 194s 1515: protected: 194s 1515: _Base_ptr& 194s 1515: _M_root() noexcept 194s 1515: { return this->_M_impl._M_header._M_parent; } 194s 1515: 194s 1515: _Base_ptr 194s 1515: _M_root() const noexcept 194s 1515: { return this->_M_impl._M_header._M_parent; } 194s 1515: 194s 1515: _Base_ptr& 194s 1515: _M_leftmost() noexcept 194s 1515: { return this->_M_impl._M_header._M_left; } 194s 1515: 194s 1515: _Base_ptr 194s 1515: _M_leftmost() const noexcept 194s 1515: { return this->_M_impl._M_header._M_left; } 194s 1515: 194s 1515: _Base_ptr& 194s 1515: _M_rightmost() noexcept 194s 1515: { return this->_M_impl._M_header._M_right; } 194s 1515: 194s 1515: _Base_ptr 194s 1515: _M_rightmost() const noexcept 194s 1515: { return this->_M_impl._M_header._M_right; } 194s 1515: 194s 1515: _Base_ptr 194s 1515: _M_begin() const noexcept 194s 1515: { return this->_M_impl._M_header._M_parent; } 194s 1515: 194s 1515: _Node_ptr 194s 1515: _M_begin_node() const noexcept 194s 1515: { 194s 1515: _Base_ptr __begin = this->_M_impl._M_header._M_parent; 194s 1515: return __begin 194s 1515: ? static_cast<_Node&>(*__begin)._M_node_ptr() 194s 1515: : _Node_ptr(); 194s 1515: } 194s 1515: 194s 1515: _Base_ptr 194s 1515: _M_end() const noexcept 194s 1515: { return this->_M_impl._M_header._M_base_ptr(); } 194s 1515: 194s 1515: static const _Key& 194s 1515: _S_key(const _Node& __node) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{}, 194s 1515: "comparison object must be invocable " 194s 1515: "with two arguments of key type"); 194s 1515: # 1412 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: return _KeyOfValue()(*__node._M_valptr()); 194s 1515: } 194s 1515: 194s 1515: static const _Key& 194s 1515: _S_key(_Base_ptr __x) 194s 1515: { return _S_key(static_cast(*__x)); } 194s 1515: 194s 1515: static const _Key& 194s 1515: _S_key(_Node_ptr __x) 194s 1515: { return _S_key(*__x); } 194s 1515: 194s 1515: static _Base_ptr 194s 1515: _S_left(_Base_ptr __x) noexcept 194s 1515: { return __x->_M_left; } 194s 1515: 194s 1515: static _Node_ptr 194s 1515: _S_left(_Node_ptr __x) 194s 1515: { 194s 1515: return __x->_M_left 194s 1515: ? static_cast<_Node&>(*__x->_M_left)._M_node_ptr() 194s 1515: : _Node_ptr(); 194s 1515: } 194s 1515: 194s 1515: static _Base_ptr 194s 1515: _S_right(_Base_ptr __x) noexcept 194s 1515: { return __x->_M_right; } 194s 1515: 194s 1515: static _Node_ptr 194s 1515: _S_right(_Node_ptr __x) noexcept 194s 1515: { 194s 1515: return __x->_M_right 194s 1515: ? static_cast<_Node&>(*__x->_M_right)._M_node_ptr() 194s 1515: : _Node_ptr(); 194s 1515: } 194s 1515: 194s 1515: public: 194s 1515: typedef typename _Node_traits::_Iterator iterator; 194s 1515: typedef typename _Node_traits::_Const_iterator const_iterator; 194s 1515: 194s 1515: typedef std::reverse_iterator reverse_iterator; 194s 1515: typedef std::reverse_iterator const_reverse_iterator; 194s 1515: # 1461 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: pair<_Base_ptr, _Base_ptr> 194s 1515: _M_get_insert_unique_pos(const key_type& __k); 194s 1515: 194s 1515: pair<_Base_ptr, _Base_ptr> 194s 1515: _M_get_insert_equal_pos(const key_type& __k); 194s 1515: 194s 1515: pair<_Base_ptr, _Base_ptr> 194s 1515: _M_get_insert_hint_unique_pos(const_iterator __pos, 194s 1515: const key_type& __k); 194s 1515: 194s 1515: pair<_Base_ptr, _Base_ptr> 194s 1515: _M_get_insert_hint_equal_pos(const_iterator __pos, 194s 1515: const key_type& __k); 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&); 194s 1515: 194s 1515: iterator 194s 1515: _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Node_ptr __z); 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_insert_lower(_Base_ptr __y, _Arg&& __v); 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_insert_equal_lower(_Arg&& __x); 194s 1515: 194s 1515: iterator 194s 1515: _M_insert_lower_node(_Base_ptr __p, _Node_ptr __z); 194s 1515: 194s 1515: iterator 194s 1515: _M_insert_equal_lower_node(_Node_ptr __z); 194s 1515: # 1512 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: enum { __as_lvalue, __as_rvalue }; 194s 1515: 194s 1515: template 194s 1515: _Base_ptr 194s 1515: _M_copy(_Node_ptr, _Base_ptr, _NodeGen&); 194s 1515: 194s 1515: template 194s 1515: _Base_ptr 194s 1515: _M_copy(const _Rb_tree& __x, _NodeGen& __gen) 194s 1515: { 194s 1515: _Base_ptr __root = 194s 1515: _M_copy<_MoveValues>(__x._M_begin_node(), _M_end(), __gen); 194s 1515: _M_leftmost() = _Node_base::_S_minimum(__root); 194s 1515: _M_rightmost() = _Node_base::_S_maximum(__root); 194s 1515: _M_impl._M_node_count = __x._M_impl._M_node_count; 194s 1515: return __root; 194s 1515: } 194s 1515: 194s 1515: _Base_ptr 194s 1515: _M_copy(const _Rb_tree& __x) 194s 1515: { 194s 1515: _Alloc_node __an(*this); 194s 1515: return _M_copy<__as_lvalue>(__x, __an); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_erase(_Node_ptr __x); 194s 1515: 194s 1515: _Base_ptr 194s 1515: _M_lower_bound(_Base_ptr __x, _Base_ptr __y, 194s 1515: const _Key& __k) const; 194s 1515: 194s 1515: _Base_ptr 194s 1515: _M_upper_bound(_Base_ptr __x, _Base_ptr __y, 194s 1515: const _Key& __k) const; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Rb_tree() = default; 194s 1515: 194s 1515: 194s 1515: _Rb_tree(const _Compare& __comp, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_impl(__comp, _Node_allocator(__a)) { } 194s 1515: 194s 1515: _Rb_tree(const _Rb_tree& __x) 194s 1515: : _M_impl(__x._M_impl) 194s 1515: { 194s 1515: if (__x._M_root()) 194s 1515: _M_root() = _M_copy(__x); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: _Rb_tree(const allocator_type& __a) 194s 1515: : _M_impl(_Node_allocator(__a)) 194s 1515: { } 194s 1515: 194s 1515: _Rb_tree(const _Rb_tree& __x, const allocator_type& __a) 194s 1515: : _M_impl(__x._M_impl._M_key_compare, _Node_allocator(__a)) 194s 1515: { 194s 1515: if (__x._M_root()) 194s 1515: _M_root() = _M_copy(__x); 194s 1515: } 194s 1515: 194s 1515: _Rb_tree(_Rb_tree&&) = default; 194s 1515: 194s 1515: _Rb_tree(_Rb_tree&& __x, const allocator_type& __a) 194s 1515: : _Rb_tree(std::move(__x), _Node_allocator(__a)) 194s 1515: { } 194s 1515: 194s 1515: private: 194s 1515: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, true_type) 194s 1515: noexcept(is_nothrow_default_constructible<_Compare>::value) 194s 1515: : _M_impl(std::move(__x._M_impl), std::move(__a)) 194s 1515: { } 194s 1515: 194s 1515: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, false_type) 194s 1515: : _M_impl(__x._M_impl._M_key_compare, std::move(__a)) 194s 1515: { 194s 1515: if (__x._M_root()) 194s 1515: _M_move_data(__x, false_type{}); 194s 1515: } 194s 1515: 194s 1515: public: 194s 1515: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a) 194s 1515: noexcept( noexcept( 194s 1515: _Rb_tree(std::declval<_Rb_tree&&>(), std::declval<_Node_allocator&&>(), 194s 1515: std::declval())) ) 194s 1515: : _Rb_tree(std::move(__x), std::move(__a), 194s 1515: typename _Node_alloc_traits::is_always_equal{}) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: ~_Rb_tree() noexcept 194s 1515: { _M_erase(_M_begin_node()); } 194s 1515: 194s 1515: _Rb_tree& 194s 1515: operator=(const _Rb_tree& __x); 194s 1515: 194s 1515: 194s 1515: _Compare 194s 1515: key_comp() const 194s 1515: { return _M_impl._M_key_compare; } 194s 1515: 194s 1515: iterator 194s 1515: begin() noexcept 194s 1515: { return iterator(this->_M_impl._M_header._M_left); } 194s 1515: 194s 1515: const_iterator 194s 1515: begin() const noexcept 194s 1515: { return const_iterator(this->_M_impl._M_header._M_left); } 194s 1515: 194s 1515: iterator 194s 1515: end() noexcept 194s 1515: { return iterator(_M_end()); } 194s 1515: 194s 1515: const_iterator 194s 1515: end() const noexcept 194s 1515: { return const_iterator(_M_end()); } 194s 1515: 194s 1515: reverse_iterator 194s 1515: rbegin() noexcept 194s 1515: { return reverse_iterator(end()); } 194s 1515: 194s 1515: const_reverse_iterator 194s 1515: rbegin() const noexcept 194s 1515: { return const_reverse_iterator(end()); } 194s 1515: 194s 1515: reverse_iterator 194s 1515: rend() noexcept 194s 1515: { return reverse_iterator(begin()); } 194s 1515: 194s 1515: const_reverse_iterator 194s 1515: rend() const noexcept 194s 1515: { return const_reverse_iterator(begin()); } 194s 1515: 194s 1515: [[__nodiscard__]] bool 194s 1515: empty() const noexcept 194s 1515: { return _M_impl._M_node_count == 0; } 194s 1515: 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { return _M_impl._M_node_count; } 194s 1515: 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { return _Node_alloc_traits::max_size(_M_get_Node_allocator()); } 194s 1515: 194s 1515: void 194s 1515: swap(_Rb_tree& __t) 194s 1515: noexcept(__is_nothrow_swappable<_Compare>::value); 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: pair 194s 1515: _M_insert_unique(_Arg&& __x); 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_insert_equal(_Arg&& __x); 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&); 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_insert_unique_(const_iterator __pos, _Arg&& __x) 194s 1515: { 194s 1515: _Alloc_node __an(*this); 194s 1515: return _M_insert_unique_(__pos, std::forward<_Arg>(__x), __an); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_insert_equal_(const_iterator __pos, _Arg&& __x, _NodeGen&); 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_insert_equal_(const_iterator __pos, _Arg&& __x) 194s 1515: { 194s 1515: _Alloc_node __an(*this); 194s 1515: return _M_insert_equal_(__pos, std::forward<_Arg>(__x), __an); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: pair 194s 1515: _M_emplace_unique(_Args&&... __args); 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_emplace_equal(_Args&&... __args); 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args); 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args); 194s 1515: 194s 1515: template 194s 1515: using __same_value_type 194s 1515: = is_same::value_type>; 194s 1515: 194s 1515: template 194s 1515: __enable_if_t<__same_value_type<_InputIterator>::value> 194s 1515: _M_insert_range_unique(_InputIterator __first, _InputIterator __last) 194s 1515: { 194s 1515: _Alloc_node __an(*this); 194s 1515: for (; __first != __last; ++__first) 194s 1515: _M_insert_unique_(end(), *__first, __an); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __enable_if_t::value> 194s 1515: _M_insert_range_unique(_InputIterator __first, _InputIterator __last) 194s 1515: { 194s 1515: for (; __first != __last; ++__first) 194s 1515: _M_emplace_unique(*__first); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __enable_if_t<__same_value_type<_InputIterator>::value> 194s 1515: _M_insert_range_equal(_InputIterator __first, _InputIterator __last) 194s 1515: { 194s 1515: _Alloc_node __an(*this); 194s 1515: for (; __first != __last; ++__first) 194s 1515: _M_insert_equal_(end(), *__first, __an); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __enable_if_t::value> 194s 1515: _M_insert_range_equal(_InputIterator __first, _InputIterator __last) 194s 1515: { 194s 1515: for (; __first != __last; ++__first) 194s 1515: _M_emplace_equal(*__first); 194s 1515: } 194s 1515: # 1803 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: private: 194s 1515: void 194s 1515: _M_erase_aux(const_iterator __position); 194s 1515: 194s 1515: void 194s 1515: _M_erase_aux(const_iterator __first, const_iterator __last); 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iterator 194s 1515: erase(const_iterator __position) 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__position != end())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: const_iterator __result = __position; 194s 1515: ++__result; 194s 1515: _M_erase_aux(__position); 194s 1515: return iterator(__result._M_node); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iterator 194s 1515: erase(iterator __position) 194s 1515: { 194s 1515: do { if (std::__is_constant_evaluated() && !bool(__position != end())) std::__glibcxx_assert_fail(); } while (false); 194s 1515: iterator __result = __position; 194s 1515: ++__result; 194s 1515: _M_erase_aux(__position); 194s 1515: return __result; 194s 1515: } 194s 1515: # 1852 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: size_type 194s 1515: erase(const key_type& __x); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iterator 194s 1515: erase(const_iterator __first, const_iterator __last) 194s 1515: { 194s 1515: _M_erase_aux(__first, __last); 194s 1515: return iterator(__last._M_node); 194s 1515: } 194s 1515: # 1875 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { 194s 1515: _M_erase(_M_begin_node()); 194s 1515: _M_impl._M_reset(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: find(const key_type& __k); 194s 1515: 194s 1515: const_iterator 194s 1515: find(const key_type& __k) const; 194s 1515: 194s 1515: size_type 194s 1515: count(const key_type& __k) const; 194s 1515: 194s 1515: iterator 194s 1515: lower_bound(const key_type& __k) 194s 1515: { return iterator(_M_lower_bound(_M_begin(), _M_end(), __k)); } 194s 1515: 194s 1515: const_iterator 194s 1515: lower_bound(const key_type& __k) const 194s 1515: { 194s 1515: return const_iterator 194s 1515: (_M_lower_bound(_M_begin(), _M_end(), __k)); 194s 1515: } 194s 1515: 194s 1515: iterator 194s 1515: upper_bound(const key_type& __k) 194s 1515: { return iterator(_M_upper_bound(_M_begin(), _M_end(), __k)); } 194s 1515: 194s 1515: const_iterator 194s 1515: upper_bound(const key_type& __k) const 194s 1515: { 194s 1515: return const_iterator 194s 1515: (_M_upper_bound(_M_begin(), _M_end(), __k)); 194s 1515: } 194s 1515: 194s 1515: pair 194s 1515: equal_range(const key_type& __k); 194s 1515: 194s 1515: pair 194s 1515: equal_range(const key_type& __k) const; 194s 1515: # 2012 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: bool 194s 1515: __rb_verify() const; 194s 1515: 194s 1515: 194s 1515: _Rb_tree& 194s 1515: operator=(_Rb_tree&&) 194s 1515: noexcept(_Node_alloc_traits::_S_nothrow_move() 194s 1515: && is_nothrow_move_assignable<_Compare>::value); 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _M_assign_unique(_Iterator, _Iterator); 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _M_assign_equal(_Iterator, _Iterator); 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: void 194s 1515: _M_move_data(_Rb_tree& __x, true_type) 194s 1515: { _M_impl._M_move_data(__x._M_impl); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_move_data(_Rb_tree&, false_type); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_move_assign(_Rb_tree&, true_type); 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_move_assign(_Rb_tree&, false_type); 194s 1515: # 2252 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: friend bool 194s 1515: operator==(const _Rb_tree& __x, const _Rb_tree& __y) 194s 1515: { 194s 1515: return __x.size() == __y.size() 194s 1515: && std::equal(__x.begin(), __x.end(), __y.begin()); 194s 1515: } 194s 1515: # 2269 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: friend bool 194s 1515: operator<(const _Rb_tree& __x, const _Rb_tree& __y) 194s 1515: { 194s 1515: return std::lexicographical_compare(__x.begin(), __x.end(), 194s 1515: __y.begin(), __y.end()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: 194s 1515: struct _Auto_node 194s 1515: { 194s 1515: template 194s 1515: _Auto_node(_Rb_tree& __t, _Args&&... __args) 194s 1515: : _M_t(__t), 194s 1515: _M_node(__t._M_create_node(std::forward<_Args>(__args)...)) 194s 1515: { } 194s 1515: 194s 1515: ~_Auto_node() 194s 1515: { 194s 1515: if (_M_node) 194s 1515: _M_t._M_drop_node(_M_node); 194s 1515: } 194s 1515: 194s 1515: _Auto_node(_Auto_node&& __n) 194s 1515: : _M_t(__n._M_t), _M_node(__n._M_node) 194s 1515: { __n._M_node = nullptr; } 194s 1515: 194s 1515: const _Key& 194s 1515: _M_key() const 194s 1515: { return _S_key(_M_node); } 194s 1515: 194s 1515: iterator 194s 1515: _M_insert(pair<_Base_ptr, _Base_ptr> __p) 194s 1515: { 194s 1515: auto __it = _M_t._M_insert_node(__p.first, __p.second, _M_node); 194s 1515: _M_node = nullptr; 194s 1515: return __it; 194s 1515: } 194s 1515: 194s 1515: iterator 194s 1515: _M_insert_equal_lower() 194s 1515: { 194s 1515: auto __it = _M_t._M_insert_equal_lower_node(_M_node); 194s 1515: _M_node = nullptr; 194s 1515: return __it; 194s 1515: } 194s 1515: 194s 1515: _Rb_tree& _M_t; 194s 1515: _Node_ptr _M_node; 194s 1515: }; 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_move_data(_Rb_tree& __x, false_type) 194s 1515: { 194s 1515: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) 194s 1515: _M_move_data(__x, true_type()); 194s 1515: else 194s 1515: { 194s 1515: constexpr bool __move = !__move_if_noexcept_cond::value; 194s 1515: _Alloc_node __an(*this); 194s 1515: _M_root() = _M_copy<__move>(__x, __an); 194s 1515: if (__move) 194s 1515: __x.clear(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_move_assign(_Rb_tree& __x, true_type) 194s 1515: { 194s 1515: clear(); 194s 1515: if (__x._M_root()) 194s 1515: _M_move_data(__x, true_type()); 194s 1515: std::__alloc_on_move(_M_get_Node_allocator(), 194s 1515: __x._M_get_Node_allocator()); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_move_assign(_Rb_tree& __x, false_type) 194s 1515: { 194s 1515: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) 194s 1515: return _M_move_assign(__x, true_type{}); 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Reuse_or_alloc_node __roan(*this); 194s 1515: _M_impl._M_reset(); 194s 1515: if (__x._M_root()) 194s 1515: { 194s 1515: _M_root() = _M_copy<__as_rvalue>(__x, __roan); 194s 1515: __x.clear(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: operator=(_Rb_tree&& __x) 194s 1515: noexcept(_Node_alloc_traits::_S_nothrow_move() 194s 1515: && is_nothrow_move_assignable<_Compare>::value) 194s 1515: { 194s 1515: _M_impl._M_key_compare = std::move(__x._M_impl._M_key_compare); 194s 1515: _M_move_assign(__x, 194s 1515: __bool_constant<_Node_alloc_traits::_S_nothrow_move()>()); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: void 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_assign_unique(_Iterator __first, _Iterator __last) 194s 1515: { 194s 1515: _Reuse_or_alloc_node __roan(*this); 194s 1515: _M_impl._M_reset(); 194s 1515: for (; __first != __last; ++__first) 194s 1515: _M_insert_unique_(end(), *__first, __roan); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: void 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_assign_equal(_Iterator __first, _Iterator __last) 194s 1515: { 194s 1515: _Reuse_or_alloc_node __roan(*this); 194s 1515: _M_impl._M_reset(); 194s 1515: for (; __first != __last; ++__first) 194s 1515: _M_insert_equal_(end(), *__first, __roan); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: operator=(const _Rb_tree& __x) 194s 1515: { 194s 1515: if (this != std::__addressof(__x)) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (_Node_alloc_traits::_S_propagate_on_copy_assign()) 194s 1515: { 194s 1515: auto& __this_alloc = this->_M_get_Node_allocator(); 194s 1515: auto& __that_alloc = __x._M_get_Node_allocator(); 194s 1515: if (!_Node_alloc_traits::_S_always_equal() 194s 1515: && __this_alloc != __that_alloc) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: clear(); 194s 1515: std::__alloc_on_copy(__this_alloc, __that_alloc); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: _Reuse_or_alloc_node __roan(*this); 194s 1515: _M_impl._M_reset(); 194s 1515: _M_impl._M_key_compare = __x._M_impl._M_key_compare; 194s 1515: if (__x._M_root()) 194s 1515: _M_root() = _M_copy<__as_lvalue>(__x, __roan); 194s 1515: } 194s 1515: 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_insert_(_Base_ptr __x, _Base_ptr __p, 194s 1515: 194s 1515: _Arg&& __v, 194s 1515: 194s 1515: 194s 1515: 194s 1515: _NodeGen& __node_gen) 194s 1515: { 194s 1515: bool __insert_left = (__x || __p == _M_end() 194s 1515: || _M_impl._M_key_compare(_KeyOfValue()(__v), 194s 1515: _S_key(__p))); 194s 1515: 194s 1515: _Base_ptr __z = 194s 1515: __node_gen(std::forward<_Arg>(__v))->_M_base_ptr(); 194s 1515: 194s 1515: _Node_traits::_S_insert_and_rebalance 194s 1515: (__insert_left, __z, __p, this->_M_impl._M_header); 194s 1515: ++_M_impl._M_node_count; 194s 1515: return iterator(__z); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: 194s 1515: _M_insert_lower(_Base_ptr __p, _Arg&& __v) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: bool __insert_left = (__p == _M_end() 194s 1515: || !_M_impl._M_key_compare(_S_key(__p), 194s 1515: _KeyOfValue()(__v))); 194s 1515: 194s 1515: _Base_ptr __z = 194s 1515: _M_create_node(std::forward<_Arg>(__v))->_M_base_ptr(); 194s 1515: _Node_traits::_S_insert_and_rebalance 194s 1515: (__insert_left, __z, __p, this->_M_impl._M_header); 194s 1515: ++_M_impl._M_node_count; 194s 1515: return iterator(__z); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: 194s 1515: _M_insert_equal_lower(_Arg&& __v) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: _Base_ptr __x = _M_begin(); 194s 1515: _Base_ptr __y = _M_end(); 194s 1515: while (__x) 194s 1515: { 194s 1515: __y = __x; 194s 1515: __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? 194s 1515: _S_left(__x) : _S_right(__x); 194s 1515: } 194s 1515: return _M_insert_lower(__y, std::forward<_Arg>(__v)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Base_ptr 194s 1515: _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: 194s 1515: _M_copy(_Node_ptr __x, _Base_ptr __p, _NodeGen& __node_gen) 194s 1515: { 194s 1515: 194s 1515: _Node_ptr __top = _M_clone_node<_MoveValues>(__x, __node_gen); 194s 1515: _Base_ptr __top_base = __top->_M_base_ptr(); 194s 1515: __top->_M_parent = __p; 194s 1515: 194s 1515: try 194s 1515: { 194s 1515: if (__x->_M_right) 194s 1515: __top->_M_right = 194s 1515: _M_copy<_MoveValues>(_S_right(__x), __top_base, __node_gen); 194s 1515: __p = __top_base; 194s 1515: __x = _S_left(__x); 194s 1515: 194s 1515: while (__x) 194s 1515: { 194s 1515: _Base_ptr __y = 194s 1515: _M_clone_node<_MoveValues>(__x, __node_gen)->_M_base_ptr(); 194s 1515: __p->_M_left = __y; 194s 1515: __y->_M_parent = __p; 194s 1515: if (__x->_M_right) 194s 1515: __y->_M_right = _M_copy<_MoveValues>(_S_right(__x), 194s 1515: __y, __node_gen); 194s 1515: __p = __y; 194s 1515: __x = _S_left(__x); 194s 1515: } 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: _M_erase(__top); 194s 1515: throw; 194s 1515: } 194s 1515: return __top_base; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_erase(_Node_ptr __x) 194s 1515: { 194s 1515: 194s 1515: while (__x) 194s 1515: { 194s 1515: _M_erase(_S_right(__x)); 194s 1515: _Node_ptr __y = _S_left(__x); 194s 1515: _M_drop_node(__x); 194s 1515: __x = __y; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, 194s 1515: _Compare, _Alloc>::_Base_ptr 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_lower_bound(_Base_ptr __x, _Base_ptr __y, 194s 1515: const _Key& __k) const 194s 1515: { 194s 1515: while (__x) 194s 1515: if (!_M_impl._M_key_compare(_S_key(__x), __k)) 194s 1515: __y = __x, __x = _S_left(__x); 194s 1515: else 194s 1515: __x = _S_right(__x); 194s 1515: return __y; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, 194s 1515: _Compare, _Alloc>::_Base_ptr 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_upper_bound(_Base_ptr __x, _Base_ptr __y, 194s 1515: const _Key& __k) const 194s 1515: { 194s 1515: while (__x) 194s 1515: if (_M_impl._M_key_compare(__k, _S_key(__x))) 194s 1515: __y = __x, __x = _S_left(__x); 194s 1515: else 194s 1515: __x = _S_right(__x); 194s 1515: return __y; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: pair::iterator, 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, 194s 1515: _Compare, _Alloc>::iterator> 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: equal_range(const _Key& __k) 194s 1515: { 194s 1515: typedef pair _Ret; 194s 1515: 194s 1515: _Base_ptr __x = _M_begin(); 194s 1515: _Base_ptr __y = _M_end(); 194s 1515: while (__x) 194s 1515: { 194s 1515: if (_M_impl._M_key_compare(_S_key(__x), __k)) 194s 1515: __x = _S_right(__x); 194s 1515: else if (_M_impl._M_key_compare(__k, _S_key(__x))) 194s 1515: __y = __x, __x = _S_left(__x); 194s 1515: else 194s 1515: { 194s 1515: _Base_ptr __xu(__x); 194s 1515: _Base_ptr __yu(__y); 194s 1515: __y = __x, __x = _S_left(__x); 194s 1515: __xu = _S_right(__xu); 194s 1515: return _Ret(iterator(_M_lower_bound(__x, __y, __k)), 194s 1515: iterator(_M_upper_bound(__xu, __yu, __k))); 194s 1515: } 194s 1515: } 194s 1515: return _Ret(iterator(__y), iterator(__y)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: pair::const_iterator, 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, 194s 1515: _Compare, _Alloc>::const_iterator> 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: equal_range(const _Key& __k) const 194s 1515: { 194s 1515: typedef pair _Ret; 194s 1515: 194s 1515: _Base_ptr __x = _M_begin(); 194s 1515: _Base_ptr __y = _M_end(); 194s 1515: while (__x) 194s 1515: { 194s 1515: if (_M_impl._M_key_compare(_S_key(__x), __k)) 194s 1515: __x = _S_right(__x); 194s 1515: else if (_M_impl._M_key_compare(__k, _S_key(__x))) 194s 1515: __y = __x, __x = _S_left(__x); 194s 1515: else 194s 1515: { 194s 1515: _Base_ptr __xu(__x); 194s 1515: _Base_ptr __yu(__y); 194s 1515: __y = __x, __x = _S_left(__x); 194s 1515: __xu = _S_right(__xu); 194s 1515: return _Ret(const_iterator(_M_lower_bound(__x, __y, __k)), 194s 1515: const_iterator(_M_upper_bound(__xu, __yu, __k))); 194s 1515: } 194s 1515: } 194s 1515: return _Ret(const_iterator(__y), const_iterator(__y)); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: swap(_Rb_tree& __t) 194s 1515: noexcept(__is_nothrow_swappable<_Compare>::value) 194s 1515: { 194s 1515: if (!_M_root()) 194s 1515: { 194s 1515: if (__t._M_root()) 194s 1515: _M_impl._M_move_data(__t._M_impl); 194s 1515: } 194s 1515: else if (!__t._M_root()) 194s 1515: __t._M_impl._M_move_data(_M_impl); 194s 1515: else 194s 1515: { 194s 1515: std::swap(_M_root(),__t._M_root()); 194s 1515: std::swap(_M_leftmost(),__t._M_leftmost()); 194s 1515: std::swap(_M_rightmost(),__t._M_rightmost()); 194s 1515: 194s 1515: _M_root()->_M_parent = _M_end(); 194s 1515: __t._M_root()->_M_parent = __t._M_end(); 194s 1515: std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: using std::swap; 194s 1515: swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare); 194s 1515: 194s 1515: _Node_alloc_traits::_S_on_swap(_M_get_Node_allocator(), 194s 1515: __t._M_get_Node_allocator()); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: pair::_Base_ptr, 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, 194s 1515: _Compare, _Alloc>::_Base_ptr> 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_get_insert_unique_pos(const key_type& __k) 194s 1515: { 194s 1515: typedef pair<_Base_ptr, _Base_ptr> _Res; 194s 1515: _Base_ptr __x = _M_begin(); 194s 1515: _Base_ptr __y = _M_end(); 194s 1515: bool __comp = true; 194s 1515: while (__x) 194s 1515: { 194s 1515: __y = __x; 194s 1515: __comp = _M_impl._M_key_compare(__k, _S_key(__x)); 194s 1515: __x = __comp ? _S_left(__x) : _S_right(__x); 194s 1515: } 194s 1515: iterator __j = iterator(__y); 194s 1515: if (__comp) 194s 1515: { 194s 1515: if (__j == begin()) 194s 1515: return _Res(__x, __y); 194s 1515: else 194s 1515: --__j; 194s 1515: } 194s 1515: if (_M_impl._M_key_compare(_S_key(__j._M_node), __k)) 194s 1515: return _Res(__x, __y); 194s 1515: return _Res(__j._M_node, _Base_ptr()); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: pair::_Base_ptr, 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, 194s 1515: _Compare, _Alloc>::_Base_ptr> 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_get_insert_equal_pos(const key_type& __k) 194s 1515: { 194s 1515: typedef pair<_Base_ptr, _Base_ptr> _Res; 194s 1515: _Base_ptr __x = _M_begin(); 194s 1515: _Base_ptr __y = _M_end(); 194s 1515: while (__x) 194s 1515: { 194s 1515: __y = __x; 194s 1515: __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? 194s 1515: _S_left(__x) : _S_right(__x); 194s 1515: } 194s 1515: return _Res(__x, __y); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: template 194s 1515: 194s 1515: pair::iterator, bool> 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: 194s 1515: _M_insert_unique(_Arg&& __v) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: typedef pair _Res; 194s 1515: pair<_Base_ptr, _Base_ptr> __res 194s 1515: = _M_get_insert_unique_pos(_KeyOfValue()(__v)); 194s 1515: 194s 1515: if (__res.second) 194s 1515: { 194s 1515: _Alloc_node __an(*this); 194s 1515: return _Res(_M_insert_(__res.first, __res.second, 194s 1515: std::forward<_Arg>(__v), __an), 194s 1515: true); 194s 1515: } 194s 1515: 194s 1515: return _Res(iterator(__res.first), false); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: template 194s 1515: 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: 194s 1515: _M_insert_equal(_Arg&& __v) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { 194s 1515: pair<_Base_ptr, _Base_ptr> __res 194s 1515: = _M_get_insert_equal_pos(_KeyOfValue()(__v)); 194s 1515: _Alloc_node __an(*this); 194s 1515: return _M_insert_(__res.first, __res.second, 194s 1515: std::forward<_Arg>(__v), __an); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: pair::_Base_ptr, 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, 194s 1515: _Compare, _Alloc>::_Base_ptr> 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_get_insert_hint_unique_pos(const_iterator __position, 194s 1515: const key_type& __k) 194s 1515: { 194s 1515: typedef pair<_Base_ptr, _Base_ptr> _Res; 194s 1515: 194s 1515: 194s 1515: if (__position._M_node == _M_end()) 194s 1515: { 194s 1515: if (size() > 0 194s 1515: && _M_impl._M_key_compare(_S_key(_M_rightmost()), __k)) 194s 1515: return _Res(_Base_ptr(), _M_rightmost()); 194s 1515: else 194s 1515: return _M_get_insert_unique_pos(__k); 194s 1515: } 194s 1515: else if (_M_impl._M_key_compare(__k, _S_key(__position._M_node))) 194s 1515: { 194s 1515: 194s 1515: iterator __before(__position._M_node); 194s 1515: if (__position._M_node == _M_leftmost()) 194s 1515: return _Res(_M_leftmost(), _M_leftmost()); 194s 1515: else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), __k)) 194s 1515: { 194s 1515: if (!_S_right(__before._M_node)) 194s 1515: return _Res(_Base_ptr(), __before._M_node); 194s 1515: else 194s 1515: return _Res(__position._M_node, __position._M_node); 194s 1515: } 194s 1515: else 194s 1515: return _M_get_insert_unique_pos(__k); 194s 1515: } 194s 1515: else if (_M_impl._M_key_compare(_S_key(__position._M_node), __k)) 194s 1515: { 194s 1515: 194s 1515: iterator __after(__position._M_node); 194s 1515: if (__position._M_node == _M_rightmost()) 194s 1515: return _Res(_Base_ptr(), _M_rightmost()); 194s 1515: else if (_M_impl._M_key_compare(__k, _S_key((++__after)._M_node))) 194s 1515: { 194s 1515: if (!_S_right(__position._M_node)) 194s 1515: return _Res(_Base_ptr(), __position._M_node); 194s 1515: else 194s 1515: return _Res(__after._M_node, __after._M_node); 194s 1515: } 194s 1515: else 194s 1515: return _M_get_insert_unique_pos(__k); 194s 1515: } 194s 1515: else 194s 1515: 194s 1515: return _Res(__position._M_node, _Base_ptr()); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_insert_unique_(const_iterator __position, 194s 1515: 194s 1515: _Arg&& __v, 194s 1515: 194s 1515: 194s 1515: 194s 1515: _NodeGen& __node_gen) 194s 1515: { 194s 1515: pair<_Base_ptr, _Base_ptr> __res 194s 1515: = _M_get_insert_hint_unique_pos(__position, _KeyOfValue()(__v)); 194s 1515: 194s 1515: if (__res.second) 194s 1515: return _M_insert_(__res.first, __res.second, 194s 1515: std::forward<_Arg>(__v), 194s 1515: __node_gen); 194s 1515: return iterator(__res.first); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: pair::_Base_ptr, 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, 194s 1515: _Compare, _Alloc>::_Base_ptr> 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k) 194s 1515: { 194s 1515: typedef pair<_Base_ptr, _Base_ptr> _Res; 194s 1515: 194s 1515: 194s 1515: if (__position._M_node == _M_end()) 194s 1515: { 194s 1515: if (size() > 0 194s 1515: && !_M_impl._M_key_compare(__k, _S_key(_M_rightmost()))) 194s 1515: return _Res(_Base_ptr(), _M_rightmost()); 194s 1515: else 194s 1515: return _M_get_insert_equal_pos(__k); 194s 1515: } 194s 1515: else if (!_M_impl._M_key_compare(_S_key(__position._M_node), __k)) 194s 1515: { 194s 1515: 194s 1515: iterator __before(__position._M_node); 194s 1515: if (__position._M_node == _M_leftmost()) 194s 1515: return _Res(_M_leftmost(), _M_leftmost()); 194s 1515: else if (!_M_impl._M_key_compare(__k, _S_key((--__before)._M_node))) 194s 1515: { 194s 1515: if (!_S_right(__before._M_node)) 194s 1515: return _Res(_Base_ptr(), __before._M_node); 194s 1515: else 194s 1515: return _Res(__position._M_node, __position._M_node); 194s 1515: } 194s 1515: else 194s 1515: return _M_get_insert_equal_pos(__k); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: iterator __after(__position._M_node); 194s 1515: if (__position._M_node == _M_rightmost()) 194s 1515: return _Res(_Base_ptr(), _M_rightmost()); 194s 1515: else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node), __k)) 194s 1515: { 194s 1515: if (!_S_right(__position._M_node)) 194s 1515: return _Res(_Base_ptr(), __position._M_node); 194s 1515: else 194s 1515: return _Res(__after._M_node, __after._M_node); 194s 1515: } 194s 1515: else 194s 1515: return _Res(_Base_ptr(), _Base_ptr()); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: 194s 1515: template 194s 1515: 194s 1515: 194s 1515: 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_insert_equal_(const_iterator __position, 194s 1515: 194s 1515: _Arg&& __v, 194s 1515: 194s 1515: 194s 1515: 194s 1515: _NodeGen& __node_gen) 194s 1515: { 194s 1515: pair<_Base_ptr, _Base_ptr> __res 194s 1515: = _M_get_insert_hint_equal_pos(__position, _KeyOfValue()(__v)); 194s 1515: 194s 1515: if (__res.second) 194s 1515: return _M_insert_(__res.first, __res.second, 194s 1515: std::forward<_Arg>(__v), 194s 1515: __node_gen); 194s 1515: 194s 1515: return _M_insert_equal_lower(std::forward<_Arg>(__v)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_insert_node(_Base_ptr __x, _Base_ptr __p, _Node_ptr __z) 194s 1515: -> iterator 194s 1515: { 194s 1515: bool __insert_left = (__x || __p == _M_end() 194s 1515: || _M_impl._M_key_compare(_S_key(__z), 194s 1515: _S_key(__p))); 194s 1515: 194s 1515: _Base_ptr __base_z = __z->_M_base_ptr(); 194s 1515: _Node_traits::_S_insert_and_rebalance 194s 1515: (__insert_left, __base_z, __p, this->_M_impl._M_header); 194s 1515: ++_M_impl._M_node_count; 194s 1515: return iterator(__base_z); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_insert_lower_node(_Base_ptr __p, _Node_ptr __z) 194s 1515: -> iterator 194s 1515: { 194s 1515: bool __insert_left = (__p == _M_end() 194s 1515: || !_M_impl._M_key_compare(_S_key(__p), 194s 1515: _S_key(__z))); 194s 1515: 194s 1515: _Base_ptr __base_z = __z->_M_base_ptr(); 194s 1515: _Node_traits::_S_insert_and_rebalance 194s 1515: (__insert_left, __base_z, __p, this->_M_impl._M_header); 194s 1515: ++_M_impl._M_node_count; 194s 1515: return iterator(__base_z); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_insert_equal_lower_node(_Node_ptr __z) 194s 1515: -> iterator 194s 1515: { 194s 1515: _Base_ptr __x = _M_begin(); 194s 1515: _Base_ptr __y = _M_end(); 194s 1515: while (__x) 194s 1515: { 194s 1515: __y = __x; 194s 1515: __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ? 194s 1515: _S_left(__x) : _S_right(__x); 194s 1515: } 194s 1515: return _M_insert_lower_node(__y, __z); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: auto 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_emplace_unique(_Args&&... __args) 194s 1515: -> pair 194s 1515: { 194s 1515: _Auto_node __z(*this, std::forward<_Args>(__args)...); 194s 1515: auto __res = _M_get_insert_unique_pos(__z._M_key()); 194s 1515: if (__res.second) 194s 1515: return {__z._M_insert(__res), true}; 194s 1515: return {iterator(__res.first), false}; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: auto 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_emplace_equal(_Args&&... __args) 194s 1515: -> iterator 194s 1515: { 194s 1515: _Auto_node __z(*this, std::forward<_Args>(__args)...); 194s 1515: auto __res = _M_get_insert_equal_pos(__z._M_key()); 194s 1515: return __z._M_insert(__res); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: auto 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args) 194s 1515: -> iterator 194s 1515: { 194s 1515: _Auto_node __z(*this, std::forward<_Args>(__args)...); 194s 1515: auto __res = _M_get_insert_hint_unique_pos(__pos, __z._M_key()); 194s 1515: if (__res.second) 194s 1515: return __z._M_insert(__res); 194s 1515: return iterator(__res.first); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: auto 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args) 194s 1515: -> iterator 194s 1515: { 194s 1515: _Auto_node __z(*this, std::forward<_Args>(__args)...); 194s 1515: auto __res = _M_get_insert_hint_equal_pos(__pos, __z._M_key()); 194s 1515: if (__res.second) 194s 1515: return __z._M_insert(__res); 194s 1515: return __z._M_insert_equal_lower(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_erase_aux(const_iterator __position) 194s 1515: { 194s 1515: _Base_ptr __y = _Node_traits::_S_rebalance_for_erase 194s 1515: (__position._M_node, this->_M_impl._M_header); 194s 1515: _M_drop_node(static_cast<_Node&>(*__y)._M_node_ptr()); 194s 1515: --_M_impl._M_node_count; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: _M_erase_aux(const_iterator __first, const_iterator __last) 194s 1515: { 194s 1515: if (__first == begin() && __last == end()) 194s 1515: clear(); 194s 1515: else 194s 1515: while (__first != __last) 194s 1515: _M_erase_aux(__first++); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: erase(const _Key& __x) 194s 1515: { 194s 1515: pair __p = equal_range(__x); 194s 1515: const size_type __old_size = size(); 194s 1515: _M_erase_aux(__p.first, __p.second); 194s 1515: return __old_size - size(); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, 194s 1515: _Compare, _Alloc>::iterator 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: find(const _Key& __k) 194s 1515: { 194s 1515: iterator __j(_M_lower_bound(_M_begin(), _M_end(), __k)); 194s 1515: return (__j == end() 194s 1515: || _M_impl._M_key_compare(__k, 194s 1515: _S_key(__j._M_node))) ? end() : __j; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, 194s 1515: _Compare, _Alloc>::const_iterator 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: find(const _Key& __k) const 194s 1515: { 194s 1515: const_iterator __j(_M_lower_bound(_M_begin(), _M_end(), __k)); 194s 1515: return (__j == end() 194s 1515: || _M_impl._M_key_compare(__k, 194s 1515: _S_key(__j._M_node))) ? end() : __j; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type 194s 1515: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 194s 1515: count(const _Key& __k) const 194s 1515: { 194s 1515: pair __p = equal_range(__k); 194s 1515: const size_type __n = std::distance(__p.first, __p.second); 194s 1515: return __n; 194s 1515: } 194s 1515: 194s 1515: __attribute__ ((__pure__)) unsigned int 194s 1515: _Rb_tree_black_count(const _Rb_tree_node_base* __node, 194s 1515: const _Rb_tree_node_base* __root) throw (); 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const 194s 1515: { 194s 1515: if (_M_impl._M_node_count == 0 || begin() == end()) 194s 1515: return _M_impl._M_node_count == 0 && begin() == end() 194s 1515: && this->_M_impl._M_header._M_left == _M_end() 194s 1515: && this->_M_impl._M_header._M_right == _M_end(); 194s 1515: 194s 1515: unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root()); 194s 1515: for (const_iterator __it = begin(); __it != end(); ++__it) 194s 1515: { 194s 1515: _Base_ptr __x = __it._M_node; 194s 1515: _Base_ptr __L = _S_left(__x); 194s 1515: _Base_ptr __R = _S_right(__x); 194s 1515: 194s 1515: if (__x->_M_color == _S_red) 194s 1515: if ((__L && __L->_M_color == _S_red) 194s 1515: || (__R && __R->_M_color == _S_red)) 194s 1515: return false; 194s 1515: 194s 1515: if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L))) 194s 1515: return false; 194s 1515: if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x))) 194s 1515: return false; 194s 1515: 194s 1515: if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len) 194s 1515: return false; 194s 1515: } 194s 1515: 194s 1515: if (_M_leftmost() != _Node_base::_S_minimum(_M_root())) 194s 1515: return false; 194s 1515: if (_M_rightmost() != _Node_base::_S_maximum(_M_root())) 194s 1515: return false; 194s 1515: return true; 194s 1515: } 194s 1515: # 3240 "/usr/include/c++/15/bits/stl_tree.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 65 "/usr/include/c++/15/set" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_set.h" 1 3 4 194s 1515: # 67 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class multiset; 194s 1515: # 97 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: template, 194s 1515: typename _Alloc = std::allocator<_Key> > 194s 1515: class set 194s 1515: { 194s 1515: # 113 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: static_assert(is_same::type, _Key>::value, 194s 1515: "std::set must have a non-const, non-volatile value_type"); 194s 1515: 194s 1515: static_assert(is_same::value, 194s 1515: "std::set must have the same value_type as its allocator"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef _Key key_type; 194s 1515: typedef _Key value_type; 194s 1515: typedef _Compare key_compare; 194s 1515: typedef _Compare value_compare; 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: 194s 1515: private: 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 194s 1515: rebind<_Key>::other _Key_alloc_type; 194s 1515: 194s 1515: typedef _Rb_tree, 194s 1515: key_compare, _Key_alloc_type> _Rep_type; 194s 1515: _Rep_type _M_t; 194s 1515: 194s 1515: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: typedef typename _Alloc_traits::pointer pointer; 194s 1515: typedef typename _Alloc_traits::const_pointer const_pointer; 194s 1515: typedef typename _Alloc_traits::reference reference; 194s 1515: typedef typename _Alloc_traits::const_reference const_reference; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename _Rep_type::const_iterator iterator; 194s 1515: typedef typename _Rep_type::const_iterator const_iterator; 194s 1515: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; 194s 1515: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 194s 1515: typedef typename _Rep_type::size_type size_type; 194s 1515: typedef typename _Rep_type::difference_type difference_type; 194s 1515: # 172 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: set() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: set(const _Compare& __comp, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Key_alloc_type(__a)) { } 194s 1515: # 195 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: template 194s 1515: set(_InputIterator __first, _InputIterator __last) 194s 1515: : _M_t() 194s 1515: { _M_t._M_insert_range_unique(__first, __last); } 194s 1515: # 212 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: template 194s 1515: set(_InputIterator __first, _InputIterator __last, 194s 1515: const _Compare& __comp, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Key_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_unique(__first, __last); } 194s 1515: # 228 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: set(const set&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: set(set&&) = default; 194s 1515: # 248 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: set(initializer_list __l, 194s 1515: const _Compare& __comp = _Compare(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Key_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: set(const allocator_type& __a) 194s 1515: : _M_t(_Key_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: set(const set& __x, const __type_identity_t& __a) 194s 1515: : _M_t(__x._M_t, _Key_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: set(set&& __x, const __type_identity_t& __a) 194s 1515: noexcept(is_nothrow_copy_constructible<_Compare>::value 194s 1515: && _Alloc_traits::_S_always_equal()) 194s 1515: : _M_t(std::move(__x._M_t), _Key_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: set(initializer_list __l, const allocator_type& __a) 194s 1515: : _M_t(_Key_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: set(_InputIterator __first, _InputIterator __last, 194s 1515: const allocator_type& __a) 194s 1515: : _M_t(_Key_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_unique(__first, __last); } 194s 1515: # 305 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: ~set() = default; 194s 1515: # 321 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: set& 194s 1515: operator=(const set&) = default; 194s 1515: 194s 1515: 194s 1515: set& 194s 1515: operator=(set&&) = default; 194s 1515: # 339 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: set& 194s 1515: operator=(initializer_list __l) 194s 1515: { 194s 1515: _M_t._M_assign_unique(__l.begin(), __l.end()); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: key_compare 194s 1515: key_comp() const 194s 1515: { return _M_t.key_comp(); } 194s 1515: 194s 1515: value_compare 194s 1515: value_comp() const 194s 1515: { return _M_t.key_comp(); } 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return allocator_type(_M_t.get_allocator()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: begin() const noexcept 194s 1515: { return _M_t.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: end() const noexcept 194s 1515: { return _M_t.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: rbegin() const noexcept 194s 1515: { return _M_t.rbegin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: rend() const noexcept 194s 1515: { return _M_t.rend(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: cbegin() const noexcept 194s 1515: { return _M_t.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: cend() const noexcept 194s 1515: { return _M_t.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: crbegin() const noexcept 194s 1515: { return _M_t.rbegin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: crend() const noexcept 194s 1515: { return _M_t.rend(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] bool 194s 1515: empty() const noexcept 194s 1515: { return _M_t.empty(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { return _M_t.size(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { return _M_t.max_size(); } 194s 1515: # 464 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: void 194s 1515: swap(set& __x) 194s 1515: noexcept(__is_nothrow_swappable<_Compare>::value) 194s 1515: { _M_t.swap(__x._M_t); } 194s 1515: # 484 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: template 194s 1515: std::pair 194s 1515: emplace(_Args&&... __args) 194s 1515: { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } 194s 1515: # 510 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: template 194s 1515: iterator 194s 1515: emplace_hint(const_iterator __pos, _Args&&... __args) 194s 1515: { 194s 1515: return _M_t._M_emplace_hint_unique(__pos, 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: # 532 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: std::pair 194s 1515: insert(const value_type& __x) 194s 1515: { 194s 1515: std::pair __p = 194s 1515: _M_t._M_insert_unique(__x); 194s 1515: return std::pair(__p.first, __p.second); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: std::pair 194s 1515: insert(value_type&& __x) 194s 1515: { 194s 1515: std::pair __p = 194s 1515: _M_t._M_insert_unique(std::move(__x)); 194s 1515: return std::pair(__p.first, __p.second); 194s 1515: } 194s 1515: # 569 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: iterator 194s 1515: insert(const_iterator __position, const value_type& __x) 194s 1515: { return _M_t._M_insert_unique_(__position, __x); } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, value_type&& __x) 194s 1515: { return _M_t._M_insert_unique_(__position, std::move(__x)); } 194s 1515: # 588 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: insert(_InputIterator __first, _InputIterator __last) 194s 1515: { _M_t._M_insert_range_unique(__first, __last); } 194s 1515: # 601 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: void 194s 1515: insert(initializer_list __l) 194s 1515: { this->insert(__l.begin(), __l.end()); } 194s 1515: # 698 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iterator 194s 1515: erase(const_iterator __position) 194s 1515: { return _M_t.erase(__position); } 194s 1515: # 729 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: size_type 194s 1515: erase(const key_type& __x) 194s 1515: { return _M_t.erase(__x); } 194s 1515: # 750 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iterator 194s 1515: erase(const_iterator __first, const_iterator __last) 194s 1515: { return _M_t.erase(__first, __last); } 194s 1515: # 778 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { _M_t.clear(); } 194s 1515: # 793 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: size_type 194s 1515: count(const key_type& __x) const 194s 1515: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } 194s 1515: # 839 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: iterator 194s 1515: find(const key_type& __x) 194s 1515: { return _M_t.find(__x); } 194s 1515: 194s 1515: const_iterator 194s 1515: find(const key_type& __x) const 194s 1515: { return _M_t.find(__x); } 194s 1515: # 874 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: iterator 194s 1515: lower_bound(const key_type& __x) 194s 1515: { return _M_t.lower_bound(__x); } 194s 1515: 194s 1515: const_iterator 194s 1515: lower_bound(const key_type& __x) const 194s 1515: { return _M_t.lower_bound(__x); } 194s 1515: # 904 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: iterator 194s 1515: upper_bound(const key_type& __x) 194s 1515: { return _M_t.upper_bound(__x); } 194s 1515: 194s 1515: const_iterator 194s 1515: upper_bound(const key_type& __x) const 194s 1515: { return _M_t.upper_bound(__x); } 194s 1515: # 943 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) 194s 1515: { return _M_t.equal_range(__x); } 194s 1515: 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) const 194s 1515: { return _M_t.equal_range(__x); } 194s 1515: # 966 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: template 194s 1515: friend bool 194s 1515: operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: friend bool 194s 1515: operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); 194s 1515: 194s 1515: }; 194s 1515: # 1040 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: template 194s 1515: inline bool 194s 1515: operator==(const set<_Key, _Compare, _Alloc>& __x, 194s 1515: const set<_Key, _Compare, _Alloc>& __y) 194s 1515: { return __x._M_t == __y._M_t; } 194s 1515: # 1078 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: template 194s 1515: inline bool 194s 1515: operator<(const set<_Key, _Compare, _Alloc>& __x, 194s 1515: const set<_Key, _Compare, _Alloc>& __y) 194s 1515: { return __x._M_t < __y._M_t; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator!=(const set<_Key, _Compare, _Alloc>& __x, 194s 1515: const set<_Key, _Compare, _Alloc>& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator>(const set<_Key, _Compare, _Alloc>& __x, 194s 1515: const set<_Key, _Compare, _Alloc>& __y) 194s 1515: { return __y < __x; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator<=(const set<_Key, _Compare, _Alloc>& __x, 194s 1515: const set<_Key, _Compare, _Alloc>& __y) 194s 1515: { return !(__y < __x); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator>=(const set<_Key, _Compare, _Alloc>& __x, 194s 1515: const set<_Key, _Compare, _Alloc>& __y) 194s 1515: { return !(__x < __y); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y) 194s 1515: noexcept(noexcept(__x.swap(__y))) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: # 1141 "/usr/include/c++/15/bits/stl_set.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 66 "/usr/include/c++/15/set" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_multiset.h" 1 3 4 194s 1515: # 67 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class set; 194s 1515: # 98 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: template , 194s 1515: typename _Alloc = std::allocator<_Key> > 194s 1515: class multiset 194s 1515: { 194s 1515: # 114 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: static_assert(is_same::type, _Key>::value, 194s 1515: "std::multiset must have a non-const, non-volatile value_type"); 194s 1515: 194s 1515: static_assert(is_same::value, 194s 1515: "std::multiset must have the same value_type as its allocator"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: typedef _Key key_type; 194s 1515: typedef _Key value_type; 194s 1515: typedef _Compare key_compare; 194s 1515: typedef _Compare value_compare; 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 194s 1515: rebind<_Key>::other _Key_alloc_type; 194s 1515: 194s 1515: typedef _Rb_tree, 194s 1515: key_compare, _Key_alloc_type> _Rep_type; 194s 1515: 194s 1515: _Rep_type _M_t; 194s 1515: 194s 1515: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; 194s 1515: 194s 1515: public: 194s 1515: typedef typename _Alloc_traits::pointer pointer; 194s 1515: typedef typename _Alloc_traits::const_pointer const_pointer; 194s 1515: typedef typename _Alloc_traits::reference reference; 194s 1515: typedef typename _Alloc_traits::const_reference const_reference; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename _Rep_type::const_iterator iterator; 194s 1515: typedef typename _Rep_type::const_iterator const_iterator; 194s 1515: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; 194s 1515: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 194s 1515: typedef typename _Rep_type::size_type size_type; 194s 1515: typedef typename _Rep_type::difference_type difference_type; 194s 1515: # 168 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: multiset() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: multiset(const _Compare& __comp, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Key_alloc_type(__a)) { } 194s 1515: # 190 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: template 194s 1515: multiset(_InputIterator __first, _InputIterator __last) 194s 1515: : _M_t() 194s 1515: { _M_t._M_insert_range_equal(__first, __last); } 194s 1515: # 206 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: template 194s 1515: multiset(_InputIterator __first, _InputIterator __last, 194s 1515: const _Compare& __comp, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Key_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_equal(__first, __last); } 194s 1515: # 222 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: multiset(const multiset&) = default; 194s 1515: # 231 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: multiset(multiset&&) = default; 194s 1515: # 243 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: multiset(initializer_list __l, 194s 1515: const _Compare& __comp = _Compare(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Key_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: multiset(const allocator_type& __a) 194s 1515: : _M_t(_Key_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: multiset(const multiset& __m, 194s 1515: const __type_identity_t& __a) 194s 1515: : _M_t(__m._M_t, _Key_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: multiset(multiset&& __m, const __type_identity_t& __a) 194s 1515: noexcept(is_nothrow_copy_constructible<_Compare>::value 194s 1515: && _Alloc_traits::_S_always_equal()) 194s 1515: : _M_t(std::move(__m._M_t), _Key_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: multiset(initializer_list __l, const allocator_type& __a) 194s 1515: : _M_t(_Key_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: multiset(_InputIterator __first, _InputIterator __last, 194s 1515: const allocator_type& __a) 194s 1515: : _M_t(_Key_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_equal(__first, __last); } 194s 1515: # 301 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: ~multiset() = default; 194s 1515: # 317 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: multiset& 194s 1515: operator=(const multiset&) = default; 194s 1515: 194s 1515: 194s 1515: multiset& 194s 1515: operator=(multiset&&) = default; 194s 1515: # 335 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: multiset& 194s 1515: operator=(initializer_list __l) 194s 1515: { 194s 1515: _M_t._M_assign_equal(__l.begin(), __l.end()); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: key_compare 194s 1515: key_comp() const 194s 1515: { return _M_t.key_comp(); } 194s 1515: 194s 1515: value_compare 194s 1515: value_comp() const 194s 1515: { return _M_t.key_comp(); } 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return allocator_type(_M_t.get_allocator()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: begin() const noexcept 194s 1515: { return _M_t.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: end() const noexcept 194s 1515: { return _M_t.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: rbegin() const noexcept 194s 1515: { return _M_t.rbegin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: rend() const noexcept 194s 1515: { return _M_t.rend(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: cbegin() const noexcept 194s 1515: { return _M_t.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: cend() const noexcept 194s 1515: { return _M_t.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: crbegin() const noexcept 194s 1515: { return _M_t.rbegin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: crend() const noexcept 194s 1515: { return _M_t.rend(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] bool 194s 1515: empty() const noexcept 194s 1515: { return _M_t.empty(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { return _M_t.size(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { return _M_t.max_size(); } 194s 1515: # 460 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: void 194s 1515: swap(multiset& __x) 194s 1515: noexcept(__is_nothrow_swappable<_Compare>::value) 194s 1515: { _M_t.swap(__x._M_t); } 194s 1515: # 479 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: template 194s 1515: iterator 194s 1515: emplace(_Args&&... __args) 194s 1515: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } 194s 1515: # 505 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: template 194s 1515: iterator 194s 1515: emplace_hint(const_iterator __pos, _Args&&... __args) 194s 1515: { 194s 1515: return _M_t._M_emplace_hint_equal(__pos, 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: # 525 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: iterator 194s 1515: insert(const value_type& __x) 194s 1515: { return _M_t._M_insert_equal(__x); } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: insert(value_type&& __x) 194s 1515: { return _M_t._M_insert_equal(std::move(__x)); } 194s 1515: # 555 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: iterator 194s 1515: insert(const_iterator __position, const value_type& __x) 194s 1515: { return _M_t._M_insert_equal_(__position, __x); } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, value_type&& __x) 194s 1515: { return _M_t._M_insert_equal_(__position, std::move(__x)); } 194s 1515: # 573 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: insert(_InputIterator __first, _InputIterator __last) 194s 1515: { _M_t._M_insert_range_equal(__first, __last); } 194s 1515: # 586 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: void 194s 1515: insert(initializer_list __l) 194s 1515: { this->insert(__l.begin(), __l.end()); } 194s 1515: # 680 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iterator 194s 1515: erase(const_iterator __position) 194s 1515: { return _M_t.erase(__position); } 194s 1515: # 711 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: size_type 194s 1515: erase(const key_type& __x) 194s 1515: { return _M_t.erase(__x); } 194s 1515: # 732 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iterator 194s 1515: erase(const_iterator __first, const_iterator __last) 194s 1515: { return _M_t.erase(__first, __last); } 194s 1515: # 760 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { _M_t.clear(); } 194s 1515: # 772 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: size_type 194s 1515: count(const key_type& __x) const 194s 1515: { return _M_t.count(__x); } 194s 1515: # 817 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: iterator 194s 1515: find(const key_type& __x) 194s 1515: { return _M_t.find(__x); } 194s 1515: 194s 1515: const_iterator 194s 1515: find(const key_type& __x) const 194s 1515: { return _M_t.find(__x); } 194s 1515: # 852 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: iterator 194s 1515: lower_bound(const key_type& __x) 194s 1515: { return _M_t.lower_bound(__x); } 194s 1515: 194s 1515: const_iterator 194s 1515: lower_bound(const key_type& __x) const 194s 1515: { return _M_t.lower_bound(__x); } 194s 1515: # 882 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: iterator 194s 1515: upper_bound(const key_type& __x) 194s 1515: { return _M_t.upper_bound(__x); } 194s 1515: 194s 1515: const_iterator 194s 1515: upper_bound(const key_type& __x) const 194s 1515: { return _M_t.upper_bound(__x); } 194s 1515: # 921 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) 194s 1515: { return _M_t.equal_range(__x); } 194s 1515: 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) const 194s 1515: { return _M_t.equal_range(__x); } 194s 1515: # 944 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: template 194s 1515: friend bool 194s 1515: operator==(const multiset<_K1, _C1, _A1>&, 194s 1515: const multiset<_K1, _C1, _A1>&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: friend bool 194s 1515: operator< (const multiset<_K1, _C1, _A1>&, 194s 1515: const multiset<_K1, _C1, _A1>&); 194s 1515: 194s 1515: }; 194s 1515: # 1023 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: template 194s 1515: inline bool 194s 1515: operator==(const multiset<_Key, _Compare, _Alloc>& __x, 194s 1515: const multiset<_Key, _Compare, _Alloc>& __y) 194s 1515: { return __x._M_t == __y._M_t; } 194s 1515: # 1061 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: template 194s 1515: inline bool 194s 1515: operator<(const multiset<_Key, _Compare, _Alloc>& __x, 194s 1515: const multiset<_Key, _Compare, _Alloc>& __y) 194s 1515: { return __x._M_t < __y._M_t; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator!=(const multiset<_Key, _Compare, _Alloc>& __x, 194s 1515: const multiset<_Key, _Compare, _Alloc>& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator>(const multiset<_Key,_Compare,_Alloc>& __x, 194s 1515: const multiset<_Key,_Compare,_Alloc>& __y) 194s 1515: { return __y < __x; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator<=(const multiset<_Key, _Compare, _Alloc>& __x, 194s 1515: const multiset<_Key, _Compare, _Alloc>& __y) 194s 1515: { return !(__y < __x); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator>=(const multiset<_Key, _Compare, _Alloc>& __x, 194s 1515: const multiset<_Key, _Compare, _Alloc>& __y) 194s 1515: { return !(__x < __y); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(multiset<_Key, _Compare, _Alloc>& __x, 194s 1515: multiset<_Key, _Compare, _Alloc>& __y) 194s 1515: noexcept(noexcept(__x.swap(__y))) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: # 1126 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 67 "/usr/include/c++/15/set" 2 3 4 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/bits/erase_if.h" 1 3 4 194s 1515: # 69 "/usr/include/c++/15/set" 2 3 4 194s 1515: # 80 "/usr/include/c++/15/set" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 81 "/usr/include/c++/15/set" 2 3 4 194s 1515: # 3183 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/map" 1 3 4 194s 1515: # 65 "/usr/include/c++/15/map" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_map.h" 1 3 4 194s 1515: # 69 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class multimap; 194s 1515: # 103 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: template , 194s 1515: typename _Alloc = std::allocator > > 194s 1515: class map 194s 1515: { 194s 1515: public: 194s 1515: typedef _Key key_type; 194s 1515: typedef _Tp mapped_type; 194s 1515: typedef std::pair value_type; 194s 1515: typedef _Compare key_compare; 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: private: 194s 1515: # 128 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: static_assert(is_same::value, 194s 1515: "std::map must have the same value_type as its allocator"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: class value_compare 194s 1515: : public std::binary_function 194s 1515: { 194s 1515: friend class map<_Key, _Tp, _Compare, _Alloc>; 194s 1515: protected: 194s 1515: _Compare comp; 194s 1515: 194s 1515: value_compare(_Compare __c) 194s 1515: : comp(__c) { } 194s 1515: 194s 1515: public: 194s 1515: bool operator()(const value_type& __x, const value_type& __y) const 194s 1515: { return comp(__x.first, __y.first); } 194s 1515: }; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 194s 1515: rebind::other _Pair_alloc_type; 194s 1515: 194s 1515: typedef _Rb_tree, 194s 1515: key_compare, _Pair_alloc_type> _Rep_type; 194s 1515: 194s 1515: 194s 1515: _Rep_type _M_t; 194s 1515: 194s 1515: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; 194s 1515: # 172 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: typedef typename _Alloc_traits::pointer pointer; 194s 1515: typedef typename _Alloc_traits::const_pointer const_pointer; 194s 1515: typedef typename _Alloc_traits::reference reference; 194s 1515: typedef typename _Alloc_traits::const_reference const_reference; 194s 1515: typedef typename _Rep_type::iterator iterator; 194s 1515: typedef typename _Rep_type::const_iterator const_iterator; 194s 1515: typedef typename _Rep_type::size_type size_type; 194s 1515: typedef typename _Rep_type::difference_type difference_type; 194s 1515: typedef typename _Rep_type::reverse_iterator reverse_iterator; 194s 1515: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 194s 1515: # 200 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: map() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: map(const _Compare& __comp, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Pair_alloc_type(__a)) { } 194s 1515: # 222 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: map(const map&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: map(map&&) = default; 194s 1515: # 243 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: map(initializer_list __l, 194s 1515: const _Compare& __comp = _Compare(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Pair_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: map(const allocator_type& __a) 194s 1515: : _M_t(_Pair_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: map(const map& __m, const __type_identity_t& __a) 194s 1515: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: map(map&& __m, const __type_identity_t& __a) 194s 1515: noexcept(is_nothrow_copy_constructible<_Compare>::value 194s 1515: && _Alloc_traits::_S_always_equal()) 194s 1515: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: map(initializer_list __l, const allocator_type& __a) 194s 1515: : _M_t(_Pair_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: map(_InputIterator __first, _InputIterator __last, 194s 1515: const allocator_type& __a) 194s 1515: : _M_t(_Pair_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_unique(__first, __last); } 194s 1515: # 287 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: template 194s 1515: map(_InputIterator __first, _InputIterator __last) 194s 1515: : _M_t() 194s 1515: { _M_t._M_insert_range_unique(__first, __last); } 194s 1515: # 304 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: template 194s 1515: map(_InputIterator __first, _InputIterator __last, 194s 1515: const _Compare& __comp, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Pair_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_unique(__first, __last); } 194s 1515: # 337 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: ~map() = default; 194s 1515: # 353 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: map& 194s 1515: operator=(const map&) = default; 194s 1515: 194s 1515: 194s 1515: map& 194s 1515: operator=(map&&) = default; 194s 1515: # 371 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: map& 194s 1515: operator=(initializer_list __l) 194s 1515: { 194s 1515: _M_t._M_assign_unique(__l.begin(), __l.end()); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return allocator_type(_M_t.get_allocator()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: begin() noexcept 194s 1515: { return _M_t.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: begin() const noexcept 194s 1515: { return _M_t.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: end() noexcept 194s 1515: { return _M_t.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: end() const noexcept 194s 1515: { return _M_t.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: rbegin() noexcept 194s 1515: { return _M_t.rbegin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_reverse_iterator 194s 1515: rbegin() const noexcept 194s 1515: { return _M_t.rbegin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: rend() noexcept 194s 1515: { return _M_t.rend(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_reverse_iterator 194s 1515: rend() const noexcept 194s 1515: { return _M_t.rend(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: cbegin() const noexcept 194s 1515: { return _M_t.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: cend() const noexcept 194s 1515: { return _M_t.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_reverse_iterator 194s 1515: crbegin() const noexcept 194s 1515: { return _M_t.rbegin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_reverse_iterator 194s 1515: crend() const noexcept 194s 1515: { return _M_t.rend(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] bool 194s 1515: empty() const noexcept 194s 1515: { return _M_t.empty(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { return _M_t.size(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { return _M_t.max_size(); } 194s 1515: # 526 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: mapped_type& 194s 1515: operator[](const key_type& __k) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator __i = lower_bound(__k); 194s 1515: 194s 1515: if (__i == end() || key_comp()(__k, (*__i).first)) 194s 1515: 194s 1515: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, 194s 1515: std::tuple(__k), 194s 1515: std::tuple<>()); 194s 1515: 194s 1515: 194s 1515: 194s 1515: return (*__i).second; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: mapped_type& 194s 1515: operator[](key_type&& __k) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator __i = lower_bound(__k); 194s 1515: 194s 1515: if (__i == end() || key_comp()(__k, (*__i).first)) 194s 1515: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, 194s 1515: std::forward_as_tuple(std::move(__k)), 194s 1515: std::tuple<>()); 194s 1515: return (*__i).second; 194s 1515: } 194s 1515: # 571 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: mapped_type& 194s 1515: at(const key_type& __k) 194s 1515: { 194s 1515: iterator __i = lower_bound(__k); 194s 1515: if (__i == end() || key_comp()(__k, (*__i).first)) 194s 1515: __throw_out_of_range(("map::at")); 194s 1515: return (*__i).second; 194s 1515: } 194s 1515: 194s 1515: const mapped_type& 194s 1515: at(const key_type& __k) const 194s 1515: { 194s 1515: const_iterator __i = lower_bound(__k); 194s 1515: if (__i == end() || key_comp()(__k, (*__i).first)) 194s 1515: __throw_out_of_range(("map::at")); 194s 1515: return (*__i).second; 194s 1515: } 194s 1515: # 609 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: template 194s 1515: std::pair 194s 1515: emplace(_Args&&... __args) 194s 1515: { 194s 1515: # 631 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: # 659 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: template 194s 1515: iterator 194s 1515: emplace_hint(const_iterator __pos, _Args&&... __args) 194s 1515: { 194s 1515: return _M_t._M_emplace_hint_unique(__pos, 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: # 856 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: std::pair 194s 1515: insert(const value_type& __x) 194s 1515: { return _M_t._M_insert_unique(__x); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: std::pair 194s 1515: insert(value_type&& __x) 194s 1515: { return _M_t._M_insert_unique(std::move(__x)); } 194s 1515: 194s 1515: template 194s 1515: __enable_if_t::value, 194s 1515: pair> 194s 1515: insert(_Pair&& __x) 194s 1515: { 194s 1515: # 888 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); 194s 1515: } 194s 1515: # 901 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: void 194s 1515: insert(std::initializer_list __list) 194s 1515: { insert(__list.begin(), __list.end()); } 194s 1515: # 948 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: iterator 194s 1515: 194s 1515: insert(const_iterator __position, const value_type& __x) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return _M_t._M_insert_unique_(__position, __x); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, value_type&& __x) 194s 1515: { return _M_t._M_insert_unique_(__position, std::move(__x)); } 194s 1515: 194s 1515: template 194s 1515: __enable_if_t::value, iterator> 194s 1515: insert(const_iterator __position, _Pair&& __x) 194s 1515: { 194s 1515: return _M_t._M_emplace_hint_unique(__position, 194s 1515: std::forward<_Pair>(__x)); 194s 1515: } 194s 1515: # 981 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: insert(_InputIterator __first, _InputIterator __last) 194s 1515: { _M_t._M_insert_range_unique(__first, __last); } 194s 1515: # 1120 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: iterator 194s 1515: erase(const_iterator __position) 194s 1515: { return _M_t.erase(__position); } 194s 1515: 194s 1515: 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iterator 194s 1515: erase(iterator __position) 194s 1515: { return _M_t.erase(__position); } 194s 1515: # 1157 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: size_type 194s 1515: erase(const key_type& __x) 194s 1515: { return _M_t.erase(__x); } 194s 1515: # 1177 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: iterator 194s 1515: erase(const_iterator __first, const_iterator __last) 194s 1515: { return _M_t.erase(__first, __last); } 194s 1515: # 1211 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: void 194s 1515: swap(map& __x) 194s 1515: noexcept(__is_nothrow_swappable<_Compare>::value) 194s 1515: { _M_t.swap(__x._M_t); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { _M_t.clear(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: key_compare 194s 1515: key_comp() const 194s 1515: { return _M_t.key_comp(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: value_compare 194s 1515: value_comp() const 194s 1515: { return value_compare(_M_t.key_comp()); } 194s 1515: # 1258 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: iterator 194s 1515: find(const key_type& __x) 194s 1515: { return _M_t.find(__x); } 194s 1515: # 1283 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: const_iterator 194s 1515: find(const key_type& __x) const 194s 1515: { return _M_t.find(__x); } 194s 1515: # 1304 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: size_type 194s 1515: count(const key_type& __x) const 194s 1515: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } 194s 1515: # 1347 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: iterator 194s 1515: lower_bound(const key_type& __x) 194s 1515: { return _M_t.lower_bound(__x); } 194s 1515: # 1372 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: const_iterator 194s 1515: lower_bound(const key_type& __x) const 194s 1515: { return _M_t.lower_bound(__x); } 194s 1515: # 1392 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: iterator 194s 1515: upper_bound(const key_type& __x) 194s 1515: { return _M_t.upper_bound(__x); } 194s 1515: # 1412 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: const_iterator 194s 1515: upper_bound(const key_type& __x) const 194s 1515: { return _M_t.upper_bound(__x); } 194s 1515: # 1441 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) 194s 1515: { return _M_t.equal_range(__x); } 194s 1515: # 1470 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) const 194s 1515: { return _M_t.equal_range(__x); } 194s 1515: # 1487 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: template 194s 1515: friend bool 194s 1515: operator==(const map<_K1, _T1, _C1, _A1>&, 194s 1515: const map<_K1, _T1, _C1, _A1>&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: friend bool 194s 1515: operator<(const map<_K1, _T1, _C1, _A1>&, 194s 1515: const map<_K1, _T1, _C1, _A1>&); 194s 1515: 194s 1515: }; 194s 1515: # 1569 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: template 194s 1515: inline bool 194s 1515: operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const map<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return __x._M_t == __y._M_t; } 194s 1515: # 1607 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: template 194s 1515: inline bool 194s 1515: operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const map<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return __x._M_t < __y._M_t; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const map<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const map<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return __y < __x; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const map<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return !(__y < __x); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const map<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return !(__x < __y); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(map<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: map<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: noexcept(noexcept(__x.swap(__y))) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: # 1673 "/usr/include/c++/15/bits/stl_map.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 66 "/usr/include/c++/15/map" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/stl_multimap.h" 1 3 4 194s 1515: # 67 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class map; 194s 1515: # 101 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: template , 194s 1515: typename _Alloc = std::allocator > > 194s 1515: class multimap 194s 1515: { 194s 1515: public: 194s 1515: typedef _Key key_type; 194s 1515: typedef _Tp mapped_type; 194s 1515: typedef std::pair value_type; 194s 1515: typedef _Compare key_compare; 194s 1515: typedef _Alloc allocator_type; 194s 1515: 194s 1515: private: 194s 1515: # 127 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: static_assert(is_same::value, 194s 1515: "std::multimap must have the same value_type as its allocator"); 194s 1515: 194s 1515: 194s 1515: 194s 1515: public: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: class value_compare 194s 1515: : public std::binary_function 194s 1515: { 194s 1515: friend class multimap<_Key, _Tp, _Compare, _Alloc>; 194s 1515: protected: 194s 1515: _Compare comp; 194s 1515: 194s 1515: value_compare(_Compare __c) 194s 1515: : comp(__c) { } 194s 1515: 194s 1515: public: 194s 1515: bool operator()(const value_type& __x, const value_type& __y) const 194s 1515: { return comp(__x.first, __y.first); } 194s 1515: }; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 194s 1515: rebind::other _Pair_alloc_type; 194s 1515: 194s 1515: typedef _Rb_tree, 194s 1515: key_compare, _Pair_alloc_type> _Rep_type; 194s 1515: 194s 1515: _Rep_type _M_t; 194s 1515: 194s 1515: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: typedef typename _Alloc_traits::pointer pointer; 194s 1515: typedef typename _Alloc_traits::const_pointer const_pointer; 194s 1515: typedef typename _Alloc_traits::reference reference; 194s 1515: typedef typename _Alloc_traits::const_reference const_reference; 194s 1515: typedef typename _Rep_type::iterator iterator; 194s 1515: typedef typename _Rep_type::const_iterator const_iterator; 194s 1515: typedef typename _Rep_type::size_type size_type; 194s 1515: typedef typename _Rep_type::difference_type difference_type; 194s 1515: typedef typename _Rep_type::reverse_iterator reverse_iterator; 194s 1515: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 194s 1515: # 190 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: multimap() = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: multimap(const _Compare& __comp, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Pair_alloc_type(__a)) { } 194s 1515: # 212 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: multimap(const multimap&) = default; 194s 1515: # 221 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: multimap(multimap&&) = default; 194s 1515: # 233 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: multimap(initializer_list __l, 194s 1515: const _Compare& __comp = _Compare(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Pair_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: multimap(const allocator_type& __a) 194s 1515: : _M_t(_Pair_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: multimap(const multimap& __m, 194s 1515: const __type_identity_t& __a) 194s 1515: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: multimap(multimap&& __m, const __type_identity_t& __a) 194s 1515: noexcept(is_nothrow_copy_constructible<_Compare>::value 194s 1515: && _Alloc_traits::_S_always_equal()) 194s 1515: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } 194s 1515: 194s 1515: 194s 1515: multimap(initializer_list __l, const allocator_type& __a) 194s 1515: : _M_t(_Pair_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: multimap(_InputIterator __first, _InputIterator __last, 194s 1515: const allocator_type& __a) 194s 1515: : _M_t(_Pair_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_equal(__first, __last); } 194s 1515: # 277 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: template 194s 1515: multimap(_InputIterator __first, _InputIterator __last) 194s 1515: : _M_t() 194s 1515: { _M_t._M_insert_range_equal(__first, __last); } 194s 1515: # 293 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: template 194s 1515: multimap(_InputIterator __first, _InputIterator __last, 194s 1515: const _Compare& __comp, 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_t(__comp, _Pair_alloc_type(__a)) 194s 1515: { _M_t._M_insert_range_equal(__first, __last); } 194s 1515: # 326 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: ~multimap() = default; 194s 1515: # 342 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: multimap& 194s 1515: operator=(const multimap&) = default; 194s 1515: 194s 1515: 194s 1515: multimap& 194s 1515: operator=(multimap&&) = default; 194s 1515: # 360 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: multimap& 194s 1515: operator=(initializer_list __l) 194s 1515: { 194s 1515: _M_t._M_assign_equal(__l.begin(), __l.end()); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return allocator_type(_M_t.get_allocator()); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: begin() noexcept 194s 1515: { return _M_t.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: begin() const noexcept 194s 1515: { return _M_t.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: end() noexcept 194s 1515: { return _M_t.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: end() const noexcept 194s 1515: { return _M_t.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: rbegin() noexcept 194s 1515: { return _M_t.rbegin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_reverse_iterator 194s 1515: rbegin() const noexcept 194s 1515: { return _M_t.rbegin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: reverse_iterator 194s 1515: rend() noexcept 194s 1515: { return _M_t.rend(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_reverse_iterator 194s 1515: rend() const noexcept 194s 1515: { return _M_t.rend(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: cbegin() const noexcept 194s 1515: { return _M_t.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: cend() const noexcept 194s 1515: { return _M_t.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_reverse_iterator 194s 1515: crbegin() const noexcept 194s 1515: { return _M_t.rbegin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_reverse_iterator 194s 1515: crend() const noexcept 194s 1515: { return _M_t.rend(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] bool 194s 1515: empty() const noexcept 194s 1515: { return _M_t.empty(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { return _M_t.size(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { return _M_t.max_size(); } 194s 1515: # 518 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: template 194s 1515: iterator 194s 1515: emplace(_Args&&... __args) 194s 1515: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } 194s 1515: # 545 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: template 194s 1515: iterator 194s 1515: emplace_hint(const_iterator __pos, _Args&&... __args) 194s 1515: { 194s 1515: return _M_t._M_emplace_hint_equal(__pos, 194s 1515: std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: # 567 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: iterator 194s 1515: insert(const value_type& __x) 194s 1515: { return _M_t._M_insert_equal(__x); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: insert(value_type&& __x) 194s 1515: { return _M_t._M_insert_equal(std::move(__x)); } 194s 1515: 194s 1515: template 194s 1515: __enable_if_t::value, iterator> 194s 1515: insert(_Pair&& __x) 194s 1515: { return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); } 194s 1515: # 606 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: iterator 194s 1515: 194s 1515: insert(const_iterator __position, const value_type& __x) 194s 1515: 194s 1515: 194s 1515: 194s 1515: { return _M_t._M_insert_equal_(__position, __x); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __position, value_type&& __x) 194s 1515: { return _M_t._M_insert_equal_(__position, std::move(__x)); } 194s 1515: 194s 1515: template 194s 1515: __enable_if_t::value, iterator> 194s 1515: insert(const_iterator __position, _Pair&& __x) 194s 1515: { 194s 1515: return _M_t._M_emplace_hint_equal(__position, 194s 1515: std::forward<_Pair>(__x)); 194s 1515: } 194s 1515: # 640 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: insert(_InputIterator __first, _InputIterator __last) 194s 1515: { _M_t._M_insert_range_equal(__first, __last); } 194s 1515: # 653 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: void 194s 1515: insert(initializer_list __l) 194s 1515: { this->insert(__l.begin(), __l.end()); } 194s 1515: # 749 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: iterator 194s 1515: erase(const_iterator __position) 194s 1515: { return _M_t.erase(__position); } 194s 1515: 194s 1515: 194s 1515: __attribute ((__abi_tag__ ("cxx11"))) 194s 1515: iterator 194s 1515: erase(iterator __position) 194s 1515: { return _M_t.erase(__position); } 194s 1515: # 786 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: size_type 194s 1515: erase(const key_type& __x) 194s 1515: { return _M_t.erase(__x); } 194s 1515: # 807 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: iterator 194s 1515: erase(const_iterator __first, const_iterator __last) 194s 1515: { return _M_t.erase(__first, __last); } 194s 1515: # 844 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: void 194s 1515: swap(multimap& __x) 194s 1515: noexcept(__is_nothrow_swappable<_Compare>::value) 194s 1515: { _M_t.swap(__x._M_t); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { _M_t.clear(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: key_compare 194s 1515: key_comp() const 194s 1515: { return _M_t.key_comp(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: value_compare 194s 1515: value_comp() const 194s 1515: { return value_compare(_M_t.key_comp()); } 194s 1515: # 890 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: iterator 194s 1515: find(const key_type& __x) 194s 1515: { return _M_t.find(__x); } 194s 1515: # 914 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: const_iterator 194s 1515: find(const key_type& __x) const 194s 1515: { return _M_t.find(__x); } 194s 1515: # 932 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: size_type 194s 1515: count(const key_type& __x) const 194s 1515: { return _M_t.count(__x); } 194s 1515: # 975 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: iterator 194s 1515: lower_bound(const key_type& __x) 194s 1515: { return _M_t.lower_bound(__x); } 194s 1515: # 1000 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: const_iterator 194s 1515: lower_bound(const key_type& __x) const 194s 1515: { return _M_t.lower_bound(__x); } 194s 1515: # 1020 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: iterator 194s 1515: upper_bound(const key_type& __x) 194s 1515: { return _M_t.upper_bound(__x); } 194s 1515: # 1040 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: const_iterator 194s 1515: upper_bound(const key_type& __x) const 194s 1515: { return _M_t.upper_bound(__x); } 194s 1515: # 1067 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) 194s 1515: { return _M_t.equal_range(__x); } 194s 1515: # 1094 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) const 194s 1515: { return _M_t.equal_range(__x); } 194s 1515: # 1111 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: template 194s 1515: friend bool 194s 1515: operator==(const multimap<_K1, _T1, _C1, _A1>&, 194s 1515: const multimap<_K1, _T1, _C1, _A1>&); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: friend bool 194s 1515: operator<(const multimap<_K1, _T1, _C1, _A1>&, 194s 1515: const multimap<_K1, _T1, _C1, _A1>&); 194s 1515: 194s 1515: }; 194s 1515: # 1192 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: template 194s 1515: inline bool 194s 1515: operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return __x._M_t == __y._M_t; } 194s 1515: # 1230 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: template 194s 1515: inline bool 194s 1515: operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return __x._M_t < __y._M_t; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return __y < __x; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return !(__y < __x); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: { return !(__x < __y); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, 194s 1515: multimap<_Key, _Tp, _Compare, _Alloc>& __y) 194s 1515: noexcept(noexcept(__x.swap(__y))) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: 194s 1515: # 1296 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 67 "/usr/include/c++/15/map" 2 3 4 194s 1515: # 82 "/usr/include/c++/15/map" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 83 "/usr/include/c++/15/map" 2 3 4 194s 1515: # 3184 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/unordered_set" 1 3 4 194s 1515: # 43 "/usr/include/c++/15/unordered_set" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/unordered_set.h" 1 3 4 194s 1515: # 33 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/hashtable.h" 1 3 4 194s 1515: # 37 "/usr/include/c++/15/bits/hashtable.h" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/hashtable_policy.h" 1 3 4 194s 1515: # 42 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: class _Hashtable; 194s 1515: 194s 1515: namespace __detail 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Hashtable_base; 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline typename std::iterator_traits<_Iterator>::difference_type 194s 1515: __distance_fw(_Iterator __first, _Iterator __last) 194s 1515: { 194s 1515: using _Cat = typename std::iterator_traits<_Iterator>::iterator_category; 194s 1515: if constexpr (is_convertible<_Cat, forward_iterator_tag>::value) 194s 1515: return std::distance(__first, __last); 194s 1515: else 194s 1515: return __first != __last ? 1 : 0; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: struct _Identity 194s 1515: { 194s 1515: template 194s 1515: _Tp&& 194s 1515: operator()(_Tp&& __x) const noexcept 194s 1515: { return std::forward<_Tp>(__x); } 194s 1515: }; 194s 1515: 194s 1515: struct _Select1st 194s 1515: { 194s 1515: template 194s 1515: struct __1st_type; 194s 1515: 194s 1515: template 194s 1515: struct __1st_type> 194s 1515: { using type = _Tp; }; 194s 1515: 194s 1515: template 194s 1515: struct __1st_type> 194s 1515: { using type = const _Tp; }; 194s 1515: 194s 1515: template 194s 1515: struct __1st_type<_Pair&> 194s 1515: { using type = typename __1st_type<_Pair>::type&; }; 194s 1515: 194s 1515: template 194s 1515: typename __1st_type<_Tp>::type&& 194s 1515: operator()(_Tp&& __x) const noexcept 194s 1515: { return std::forward<_Tp>(__x).first; } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _NodeBuilder; 194s 1515: 194s 1515: template<> 194s 1515: struct _NodeBuilder<_Select1st> 194s 1515: { 194s 1515: template 194s 1515: static auto 194s 1515: _S_build(_Kt&& __k, _Arg&& __arg, _NodeGenerator& __node_gen) 194s 1515: -> typename _NodeGenerator::__node_ptr 194s 1515: { 194s 1515: return __node_gen(std::forward<_Kt>(__k), 194s 1515: std::forward<_Arg>(__arg).second); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template<> 194s 1515: struct _NodeBuilder<_Identity> 194s 1515: { 194s 1515: template 194s 1515: static auto 194s 1515: _S_build(_Kt&& __k, _Arg&&, _NodeGenerator& __node_gen) 194s 1515: -> typename _NodeGenerator::__node_ptr 194s 1515: { return __node_gen(std::forward<_Kt>(__k)); } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _NodePtrGuard 194s 1515: { 194s 1515: _HashtableAlloc& _M_h; 194s 1515: _NodePtr _M_ptr; 194s 1515: 194s 1515: ~_NodePtrGuard() 194s 1515: { 194s 1515: if (_M_ptr) 194s 1515: _M_h._M_deallocate_node_ptr(_M_ptr); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Hashtable_alloc; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _ReuseOrAllocNode 194s 1515: { 194s 1515: private: 194s 1515: using __node_alloc_type = _NodeAlloc; 194s 1515: using __hashtable_alloc = _Hashtable_alloc<__node_alloc_type>; 194s 1515: using __node_alloc_traits = 194s 1515: typename __hashtable_alloc::__node_alloc_traits; 194s 1515: 194s 1515: public: 194s 1515: using __node_ptr = typename __hashtable_alloc::__node_ptr; 194s 1515: 194s 1515: _ReuseOrAllocNode(__node_ptr __nodes, __hashtable_alloc& __h) 194s 1515: : _M_nodes(__nodes), _M_h(__h) { } 194s 1515: _ReuseOrAllocNode(const _ReuseOrAllocNode&) = delete; 194s 1515: 194s 1515: ~_ReuseOrAllocNode() 194s 1515: { _M_h._M_deallocate_nodes(_M_nodes); } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template 194s 1515: __node_ptr 194s 1515: operator()(_Arg&& __arg) 194s 1515: { 194s 1515: if (!_M_nodes) 194s 1515: return _M_h._M_allocate_node(std::forward<_Arg>(__arg)); 194s 1515: 194s 1515: using value_type = typename _NodeAlloc::value_type::value_type; 194s 1515: 194s 1515: __node_ptr __node = _M_nodes; 194s 1515: if constexpr (is_assignable::value) 194s 1515: { 194s 1515: __node->_M_v() = std::forward<_Arg>(__arg); 194s 1515: _M_nodes = _M_nodes->_M_next(); 194s 1515: __node->_M_nxt = nullptr; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: _M_nodes = _M_nodes->_M_next(); 194s 1515: __node->_M_nxt = nullptr; 194s 1515: auto& __a = _M_h._M_node_allocator(); 194s 1515: __node_alloc_traits::destroy(__a, __node->_M_valptr()); 194s 1515: _NodePtrGuard<__hashtable_alloc, __node_ptr> 194s 1515: __guard{ _M_h, __node }; 194s 1515: __node_alloc_traits::construct(__a, __node->_M_valptr(), 194s 1515: std::forward<_Arg>(__arg)); 194s 1515: __guard._M_ptr = nullptr; 194s 1515: } 194s 1515: return __node; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: private: 194s 1515: __node_ptr _M_nodes; 194s 1515: __hashtable_alloc& _M_h; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _AllocNode 194s 1515: { 194s 1515: private: 194s 1515: using __hashtable_alloc = _Hashtable_alloc<_NodeAlloc>; 194s 1515: 194s 1515: public: 194s 1515: using __node_ptr = typename __hashtable_alloc::__node_ptr; 194s 1515: 194s 1515: _AllocNode(__hashtable_alloc& __h) 194s 1515: : _M_h(__h) { } 194s 1515: 194s 1515: template 194s 1515: __node_ptr 194s 1515: operator()(_Args&&... __args) const 194s 1515: { return _M_h._M_allocate_node(std::forward<_Args>(__args)...); } 194s 1515: 194s 1515: private: 194s 1515: __hashtable_alloc& _M_h; 194s 1515: }; 194s 1515: # 262 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 194s 1515: template 194s 1515: struct _Hashtable_traits 194s 1515: { 194s 1515: using __hash_cached = __bool_constant<_Cache_hash_code>; 194s 1515: using __constant_iterators = __bool_constant<_Constant_iterators>; 194s 1515: using __unique_keys = __bool_constant<_Unique_keys>; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Hashtable_hash_traits 194s 1515: { 194s 1515: static constexpr size_t 194s 1515: __small_size_threshold() noexcept 194s 1515: { return std::__is_fast_hash<_Hash>::value ? 0 : 20; } 194s 1515: }; 194s 1515: # 292 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 194s 1515: struct _Hash_node_base 194s 1515: { 194s 1515: _Hash_node_base* _M_nxt; 194s 1515: 194s 1515: _Hash_node_base() noexcept : _M_nxt() { } 194s 1515: 194s 1515: _Hash_node_base(_Hash_node_base* __next) noexcept : _M_nxt(__next) { } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Hash_node_value_base 194s 1515: { 194s 1515: using value_type = _Value; 194s 1515: 194s 1515: __gnu_cxx::__aligned_buffer<_Value> _M_storage; 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: _Value* 194s 1515: _M_valptr() noexcept 194s 1515: { return _M_storage._M_ptr(); } 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: const _Value* 194s 1515: _M_valptr() const noexcept 194s 1515: { return _M_storage._M_ptr(); } 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: _Value& 194s 1515: _M_v() noexcept 194s 1515: { return *_M_valptr(); } 194s 1515: 194s 1515: [[__gnu__::__always_inline__]] 194s 1515: const _Value& 194s 1515: _M_v() const noexcept 194s 1515: { return *_M_valptr(); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Hash_node_code_cache 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template<> 194s 1515: struct _Hash_node_code_cache 194s 1515: { size_t _M_hash_code; }; 194s 1515: 194s 1515: template 194s 1515: struct _Hash_node_value 194s 1515: : _Hash_node_value_base<_Value> 194s 1515: , _Hash_node_code_cache<_Cache_hash_code> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Hash_node 194s 1515: : _Hash_node_base 194s 1515: , _Hash_node_value<_Value, _Cache_hash_code> 194s 1515: { 194s 1515: _Hash_node* 194s 1515: _M_next() const noexcept 194s 1515: { return static_cast<_Hash_node*>(this->_M_nxt); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Node_iterator_base 194s 1515: { 194s 1515: using __node_type = _Hash_node<_Value, _Cache_hash_code>; 194s 1515: 194s 1515: __node_type* _M_cur; 194s 1515: 194s 1515: _Node_iterator_base() : _M_cur(nullptr) { } 194s 1515: _Node_iterator_base(__node_type* __p) noexcept 194s 1515: : _M_cur(__p) { } 194s 1515: 194s 1515: void 194s 1515: _M_incr() noexcept 194s 1515: { _M_cur = _M_cur->_M_next(); } 194s 1515: 194s 1515: friend bool 194s 1515: operator==(const _Node_iterator_base& __x, const _Node_iterator_base& __y) 194s 1515: noexcept 194s 1515: { return __x._M_cur == __y._M_cur; } 194s 1515: 194s 1515: 194s 1515: friend bool 194s 1515: operator!=(const _Node_iterator_base& __x, const _Node_iterator_base& __y) 194s 1515: noexcept 194s 1515: { return __x._M_cur != __y._M_cur; } 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Node_iterator 194s 1515: : public _Node_iterator_base<_Value, __cache> 194s 1515: { 194s 1515: private: 194s 1515: using __base_type = _Node_iterator_base<_Value, __cache>; 194s 1515: using __node_type = typename __base_type::__node_type; 194s 1515: 194s 1515: public: 194s 1515: using value_type = _Value; 194s 1515: using difference_type = ptrdiff_t; 194s 1515: using iterator_category = forward_iterator_tag; 194s 1515: 194s 1515: using pointer = __conditional_t<__constant_iterators, 194s 1515: const value_type*, value_type*>; 194s 1515: 194s 1515: using reference = __conditional_t<__constant_iterators, 194s 1515: const value_type&, value_type&>; 194s 1515: 194s 1515: _Node_iterator() = default; 194s 1515: 194s 1515: explicit 194s 1515: _Node_iterator(__node_type* __p) noexcept 194s 1515: : __base_type(__p) { } 194s 1515: 194s 1515: reference 194s 1515: operator*() const noexcept 194s 1515: { return this->_M_cur->_M_v(); } 194s 1515: 194s 1515: pointer 194s 1515: operator->() const noexcept 194s 1515: { return this->_M_cur->_M_valptr(); } 194s 1515: 194s 1515: _Node_iterator& 194s 1515: operator++() noexcept 194s 1515: { 194s 1515: this->_M_incr(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: _Node_iterator 194s 1515: operator++(int) noexcept 194s 1515: { 194s 1515: _Node_iterator __tmp(*this); 194s 1515: this->_M_incr(); 194s 1515: return __tmp; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: friend bool 194s 1515: operator==(const _Node_iterator& __x, const _Node_iterator& __y) noexcept 194s 1515: { 194s 1515: const __base_type& __bx = __x; 194s 1515: const __base_type& __by = __y; 194s 1515: return __bx == __by; 194s 1515: } 194s 1515: 194s 1515: friend bool 194s 1515: operator!=(const _Node_iterator& __x, const _Node_iterator& __y) noexcept 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Node_const_iterator 194s 1515: : public _Node_iterator_base<_Value, __cache> 194s 1515: { 194s 1515: private: 194s 1515: using __base_type = _Node_iterator_base<_Value, __cache>; 194s 1515: using __node_type = typename __base_type::__node_type; 194s 1515: 194s 1515: 194s 1515: using __iterator 194s 1515: = _Node_iterator<_Value, __constant_iterators, __cache>; 194s 1515: 194s 1515: public: 194s 1515: using value_type = _Value; 194s 1515: using difference_type = ptrdiff_t; 194s 1515: using iterator_category = forward_iterator_tag; 194s 1515: 194s 1515: using pointer = const value_type*; 194s 1515: using reference = const value_type&; 194s 1515: 194s 1515: _Node_const_iterator() = default; 194s 1515: 194s 1515: explicit 194s 1515: _Node_const_iterator(__node_type* __p) noexcept 194s 1515: : __base_type(__p) { } 194s 1515: 194s 1515: _Node_const_iterator(const __iterator& __x) noexcept 194s 1515: : __base_type(__x._M_cur) { } 194s 1515: 194s 1515: reference 194s 1515: operator*() const noexcept 194s 1515: { return this->_M_cur->_M_v(); } 194s 1515: 194s 1515: pointer 194s 1515: operator->() const noexcept 194s 1515: { return this->_M_cur->_M_valptr(); } 194s 1515: 194s 1515: _Node_const_iterator& 194s 1515: operator++() noexcept 194s 1515: { 194s 1515: this->_M_incr(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: _Node_const_iterator 194s 1515: operator++(int) noexcept 194s 1515: { 194s 1515: _Node_const_iterator __tmp(*this); 194s 1515: this->_M_incr(); 194s 1515: return __tmp; 194s 1515: } 194s 1515: # 531 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 194s 1515: friend bool 194s 1515: operator==(const _Node_const_iterator& __x, 194s 1515: const _Node_const_iterator& __y) noexcept 194s 1515: { 194s 1515: const __base_type& __bx = __x; 194s 1515: const __base_type& __by = __y; 194s 1515: return __bx == __by; 194s 1515: } 194s 1515: 194s 1515: friend bool 194s 1515: operator!=(const _Node_const_iterator& __x, 194s 1515: const _Node_const_iterator& __y) noexcept 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: friend bool 194s 1515: operator==(const _Node_const_iterator& __x, 194s 1515: const __iterator& __y) noexcept 194s 1515: { 194s 1515: const __base_type& __bx = __x; 194s 1515: const __base_type& __by = __y; 194s 1515: return __bx == __by; 194s 1515: } 194s 1515: 194s 1515: friend bool 194s 1515: operator!=(const _Node_const_iterator& __x, 194s 1515: const __iterator& __y) noexcept 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: friend bool 194s 1515: operator==(const __iterator& __x, 194s 1515: const _Node_const_iterator& __y) noexcept 194s 1515: { 194s 1515: const __base_type& __bx = __x; 194s 1515: const __base_type& __by = __y; 194s 1515: return __bx == __by; 194s 1515: } 194s 1515: 194s 1515: friend bool 194s 1515: operator!=(const __iterator& __x, 194s 1515: const _Node_const_iterator& __y) noexcept 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct _Mod_range_hashing 194s 1515: { 194s 1515: size_t 194s 1515: operator()(size_t __num, size_t __den) const noexcept 194s 1515: { return __num % __den; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct _Default_ranged_hash { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct _Prime_rehash_policy 194s 1515: { 194s 1515: using __has_load_factor = true_type; 194s 1515: 194s 1515: _Prime_rehash_policy(float __z = 1.0) noexcept 194s 1515: : _M_max_load_factor(__z), _M_next_resize(0) { } 194s 1515: 194s 1515: float 194s 1515: max_load_factor() const noexcept 194s 1515: { return _M_max_load_factor; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_t 194s 1515: _M_next_bkt(size_t __n) const; 194s 1515: 194s 1515: 194s 1515: size_t 194s 1515: _M_bkt_for_elements(size_t __n) const 194s 1515: { return __builtin_ceil(__n / (double)_M_max_load_factor); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: std::pair 194s 1515: _M_need_rehash(size_t __n_bkt, size_t __n_elt, 194s 1515: size_t __n_ins) const; 194s 1515: 194s 1515: using _State = size_t; 194s 1515: 194s 1515: _State 194s 1515: _M_state() const 194s 1515: { return _M_next_resize; } 194s 1515: 194s 1515: void 194s 1515: _M_reset() noexcept 194s 1515: { _M_next_resize = 0; } 194s 1515: 194s 1515: void 194s 1515: _M_reset(_State __state) 194s 1515: { _M_next_resize = __state; } 194s 1515: 194s 1515: static const size_t _S_growth_factor = 2; 194s 1515: 194s 1515: float _M_max_load_factor; 194s 1515: 194s 1515: 194s 1515: mutable size_t _M_next_resize; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: struct _Mask_range_hashing 194s 1515: { 194s 1515: size_t 194s 1515: operator()(size_t __num, size_t __den) const noexcept 194s 1515: { return __num & (__den - 1); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: inline size_t 194s 1515: __clp2(size_t __n) noexcept 194s 1515: { 194s 1515: using __gnu_cxx::__int_traits; 194s 1515: 194s 1515: if (__n < 2) 194s 1515: return __n; 194s 1515: const unsigned __lz = sizeof(size_t) > sizeof(long) 194s 1515: ? __builtin_clzll(__n - 1ull) 194s 1515: : __builtin_clzl(__n - 1ul); 194s 1515: 194s 1515: return (size_t(1) << (__int_traits::__digits - __lz - 1)) << 1; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct _Power2_rehash_policy 194s 1515: { 194s 1515: using __has_load_factor = true_type; 194s 1515: 194s 1515: _Power2_rehash_policy(float __z = 1.0) noexcept 194s 1515: : _M_max_load_factor(__z), _M_next_resize(0) { } 194s 1515: 194s 1515: float 194s 1515: max_load_factor() const noexcept 194s 1515: { return _M_max_load_factor; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_t 194s 1515: _M_next_bkt(size_t __n) noexcept 194s 1515: { 194s 1515: if (__n == 0) 194s 1515: 194s 1515: 194s 1515: 194s 1515: return 1; 194s 1515: 194s 1515: const auto __max_width = std::min(sizeof(size_t), 8); 194s 1515: const auto __max_bkt = size_t(1) << (__max_width * 8 - 1); 194s 1515: size_t __res = __clp2(__n); 194s 1515: 194s 1515: if (__res == 0) 194s 1515: __res = __max_bkt; 194s 1515: else if (__res == 1) 194s 1515: 194s 1515: 194s 1515: 194s 1515: __res = 2; 194s 1515: 194s 1515: if (__res == __max_bkt) 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_next_resize = size_t(-1); 194s 1515: else 194s 1515: _M_next_resize 194s 1515: = __builtin_floor(__res * (double)_M_max_load_factor); 194s 1515: 194s 1515: return __res; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: size_t 194s 1515: _M_bkt_for_elements(size_t __n) const noexcept 194s 1515: { return __builtin_ceil(__n / (double)_M_max_load_factor); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: std::pair 194s 1515: _M_need_rehash(size_t __n_bkt, size_t __n_elt, size_t __n_ins) noexcept 194s 1515: { 194s 1515: if (__n_elt + __n_ins > _M_next_resize) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: double __min_bkts 194s 1515: = std::max(__n_elt + __n_ins, _M_next_resize ? 0 : 11) 194s 1515: / (double)_M_max_load_factor; 194s 1515: if (__min_bkts >= __n_bkt) 194s 1515: return { true, 194s 1515: _M_next_bkt(std::max(__builtin_floor(__min_bkts) + 1, 194s 1515: __n_bkt * _S_growth_factor)) }; 194s 1515: 194s 1515: _M_next_resize 194s 1515: = __builtin_floor(__n_bkt * (double)_M_max_load_factor); 194s 1515: return { false, 0 }; 194s 1515: } 194s 1515: else 194s 1515: return { false, 0 }; 194s 1515: } 194s 1515: 194s 1515: using _State = size_t; 194s 1515: 194s 1515: _State 194s 1515: _M_state() const noexcept 194s 1515: { return _M_next_resize; } 194s 1515: 194s 1515: void 194s 1515: _M_reset() noexcept 194s 1515: { _M_next_resize = 0; } 194s 1515: 194s 1515: void 194s 1515: _M_reset(_State __state) noexcept 194s 1515: { _M_next_resize = __state; } 194s 1515: 194s 1515: static const size_t _S_growth_factor = 2; 194s 1515: 194s 1515: float _M_max_load_factor; 194s 1515: size_t _M_next_resize; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _RehashStateGuard 194s 1515: { 194s 1515: _RehashPolicy* _M_guarded_obj; 194s 1515: typename _RehashPolicy::_State _M_prev_state; 194s 1515: 194s 1515: _RehashStateGuard(_RehashPolicy& __policy) 194s 1515: : _M_guarded_obj(std::__addressof(__policy)) 194s 1515: , _M_prev_state(__policy._M_state()) 194s 1515: { } 194s 1515: _RehashStateGuard(const _RehashStateGuard&) = delete; 194s 1515: 194s 1515: ~_RehashStateGuard() 194s 1515: { 194s 1515: if (_M_guarded_obj) 194s 1515: _M_guarded_obj->_M_reset(_M_prev_state); 194s 1515: } 194s 1515: }; 194s 1515: # 809 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 194s 1515: template 194s 1515: struct _Map_base { }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false> 194s 1515: { 194s 1515: using mapped_type = _Val; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true> 194s 1515: { 194s 1515: private: 194s 1515: using __hashtable_base = _Hashtable_base<_Key, pair, 194s 1515: _Select1st, _Equal, _Hash, 194s 1515: _RangeHash, _Unused, 194s 1515: _Traits>; 194s 1515: 194s 1515: using __hashtable = _Hashtable<_Key, pair, _Alloc, 194s 1515: _Select1st, _Equal, _Hash, _RangeHash, 194s 1515: _Unused, _RehashPolicy, _Traits>; 194s 1515: 194s 1515: using __hash_code = typename __hashtable_base::__hash_code; 194s 1515: 194s 1515: public: 194s 1515: using key_type = typename __hashtable_base::key_type; 194s 1515: using mapped_type = _Val; 194s 1515: 194s 1515: mapped_type& 194s 1515: operator[](const key_type& __k); 194s 1515: 194s 1515: mapped_type& 194s 1515: operator[](key_type&& __k); 194s 1515: 194s 1515: 194s 1515: 194s 1515: mapped_type& 194s 1515: at(const key_type& __k) 194s 1515: { 194s 1515: auto __ite = static_cast<__hashtable*>(this)->find(__k); 194s 1515: if (!__ite._M_cur) 194s 1515: __throw_out_of_range(("unordered_map::at")); 194s 1515: return __ite->second; 194s 1515: } 194s 1515: 194s 1515: const mapped_type& 194s 1515: at(const key_type& __k) const 194s 1515: { 194s 1515: auto __ite = static_cast(this)->find(__k); 194s 1515: if (!__ite._M_cur) 194s 1515: __throw_out_of_range(("unordered_map::at")); 194s 1515: return __ite->second; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: 194s 1515: operator[](const key_type& __k) 194s 1515: -> mapped_type& 194s 1515: { 194s 1515: __hashtable* __h = static_cast<__hashtable*>(this); 194s 1515: __hash_code __code = __h->_M_hash_code(__k); 194s 1515: size_t __bkt = __h->_M_bucket_index(__code); 194s 1515: if (auto __node = __h->_M_find_node(__bkt, __k, __code)) 194s 1515: return __node->_M_v().second; 194s 1515: 194s 1515: typename __hashtable::_Scoped_node __node { 194s 1515: __h, 194s 1515: std::piecewise_construct, 194s 1515: std::tuple(__k), 194s 1515: std::tuple<>() 194s 1515: }; 194s 1515: auto __pos 194s 1515: = __h->_M_insert_unique_node(__bkt, __code, __node._M_node); 194s 1515: __node._M_node = nullptr; 194s 1515: return __pos->second; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: 194s 1515: operator[](key_type&& __k) 194s 1515: -> mapped_type& 194s 1515: { 194s 1515: __hashtable* __h = static_cast<__hashtable*>(this); 194s 1515: __hash_code __code = __h->_M_hash_code(__k); 194s 1515: size_t __bkt = __h->_M_bucket_index(__code); 194s 1515: if (auto __node = __h->_M_find_node(__bkt, __k, __code)) 194s 1515: return __node->_M_v().second; 194s 1515: 194s 1515: typename __hashtable::_Scoped_node __node { 194s 1515: __h, 194s 1515: std::piecewise_construct, 194s 1515: std::forward_as_tuple(std::move(__k)), 194s 1515: std::tuple<>() 194s 1515: }; 194s 1515: auto __pos 194s 1515: = __h->_M_insert_unique_node(__bkt, __code, __node._M_node); 194s 1515: __node._M_node = nullptr; 194s 1515: return __pos->second; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Map_base, 194s 1515: _Alloc, _Select1st, _Equal, _Hash, 194s 1515: _RangeHash, _Unused, _RehashPolicy, _Traits, __uniq> 194s 1515: : _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, _Hash, 194s 1515: _RangeHash, _Unused, _RehashPolicy, _Traits, __uniq> 194s 1515: { }; 194s 1515: 194s 1515: template 194s 1515: using __has_load_factor = typename _Policy::__has_load_factor; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template> 194s 1515: struct _Rehash_base; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, 194s 1515: false_type > 194s 1515: { 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, 194s 1515: true_type > 194s 1515: { 194s 1515: private: 194s 1515: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, 194s 1515: _Equal, _Hash, _RangeHash, _Unused, 194s 1515: _RehashPolicy, _Traits>; 194s 1515: 194s 1515: public: 194s 1515: float 194s 1515: max_load_factor() const noexcept 194s 1515: { 194s 1515: const __hashtable* __this = static_cast(this); 194s 1515: return __this->__rehash_policy().max_load_factor(); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: max_load_factor(float __z) 194s 1515: { 194s 1515: __hashtable* __this = static_cast<__hashtable*>(this); 194s 1515: __this->__rehash_policy(_RehashPolicy(__z)); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: reserve(size_t __n) 194s 1515: { 194s 1515: __hashtable* __this = static_cast<__hashtable*>(this); 194s 1515: __this->rehash(__this->__rehash_policy()._M_bkt_for_elements(__n)); 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Hashtable_ebo_helper 194s 1515: { 194s 1515: [[__no_unique_address__]] _Tp _M_obj; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Hashtable_ebo_helper<_Tp, false> 194s 1515: { 194s 1515: _Tp _M_obj; 194s 1515: }; 194s 1515: # 1034 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 194s 1515: template 194s 1515: struct _Local_iterator_base; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Hash_code_base 194s 1515: { 194s 1515: 194s 1515: friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, false>; 194s 1515: public: 194s 1515: using hasher = _Hash; 194s 1515: 194s 1515: hasher 194s 1515: hash_function() const 194s 1515: { return _M_hash._M_obj; } 194s 1515: 194s 1515: protected: 194s 1515: [[__no_unique_address__]] _Hashtable_ebo_helper<_Hash> _M_hash{}; 194s 1515: 194s 1515: using __hash_code = size_t; 194s 1515: 194s 1515: 194s 1515: 194s 1515: _Hash_code_base() = default; 194s 1515: 194s 1515: _Hash_code_base(const _Hash& __hash) : _M_hash{__hash} { } 194s 1515: 194s 1515: __hash_code 194s 1515: _M_hash_code(const _Key& __k) const 194s 1515: { 194s 1515: static_assert(__is_invocable{}, 194s 1515: "hash function must be invocable with an argument of key type"); 194s 1515: return _M_hash._M_obj(__k); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __hash_code 194s 1515: _M_hash_code_tr(const _Kt& __k) const 194s 1515: { 194s 1515: static_assert(__is_invocable{}, 194s 1515: "hash function must be invocable with an argument of key type"); 194s 1515: return _M_hash._M_obj(__k); 194s 1515: } 194s 1515: 194s 1515: __hash_code 194s 1515: _M_hash_code(const _Hash_node_value<_Value, false>& __n) const 194s 1515: { return _M_hash_code(_ExtractKey{}(__n._M_v())); } 194s 1515: 194s 1515: __hash_code 194s 1515: _M_hash_code(const _Hash_node_value<_Value, true>& __n) const 194s 1515: { return __n._M_hash_code; } 194s 1515: 194s 1515: size_t 194s 1515: _M_bucket_index(__hash_code __c, size_t __bkt_count) const 194s 1515: { return _RangeHash{}(__c, __bkt_count); } 194s 1515: 194s 1515: size_t 194s 1515: _M_bucket_index(const _Hash_node_value<_Value, false>& __n, 194s 1515: size_t __bkt_count) const 194s 1515: noexcept( noexcept(declval()(declval())) ) 194s 1515: { 194s 1515: return _RangeHash{}(_M_hash_code(_ExtractKey{}(__n._M_v())), 194s 1515: __bkt_count); 194s 1515: } 194s 1515: 194s 1515: size_t 194s 1515: _M_bucket_index(const _Hash_node_value<_Value, true>& __n, 194s 1515: size_t __bkt_count) const noexcept 194s 1515: { return _RangeHash{}(__n._M_hash_code, __bkt_count); } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Local_iterator_base<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, true> 194s 1515: : public _Node_iterator_base<_Value, true> 194s 1515: { 194s 1515: protected: 194s 1515: using __base_node_iter = _Node_iterator_base<_Value, true>; 194s 1515: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, true>; 194s 1515: 194s 1515: _Local_iterator_base() = default; 194s 1515: 194s 1515: _Local_iterator_base(const __hash_code_base&, 194s 1515: _Hash_node<_Value, true>* __p, 194s 1515: size_t __bkt, size_t __bkt_count) 194s 1515: : __base_node_iter(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) 194s 1515: { } 194s 1515: 194s 1515: void 194s 1515: _M_incr() 194s 1515: { 194s 1515: __base_node_iter::_M_incr(); 194s 1515: if (this->_M_cur) 194s 1515: { 194s 1515: size_t __bkt 194s 1515: = _RangeHash{}(this->_M_cur->_M_hash_code, _M_bucket_count); 194s 1515: if (__bkt != _M_bucket) 194s 1515: this->_M_cur = nullptr; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: size_t _M_bucket = 0; 194s 1515: size_t _M_bucket_count = 0; 194s 1515: 194s 1515: public: 194s 1515: size_t 194s 1515: _M_get_bucket() const { return _M_bucket; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Hash_obj_storage 194s 1515: { 194s 1515: union _Uninit_storage 194s 1515: { 194s 1515: _Uninit_storage() noexcept { } 194s 1515: ~_Uninit_storage() { } 194s 1515: 194s 1515: [[__no_unique_address__]] _Hash _M_h; 194s 1515: }; 194s 1515: 194s 1515: [[__no_unique_address__]] _Uninit_storage _M_u; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Local_iterator_base<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, false> 194s 1515: : _Hash_obj_storage<_Hash>, _Node_iterator_base<_Value, false> 194s 1515: { 194s 1515: protected: 194s 1515: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, false>; 194s 1515: using __hash_obj_storage = _Hash_obj_storage<_Hash>; 194s 1515: using __node_iter_base = _Node_iterator_base<_Value, false>; 194s 1515: 194s 1515: _Local_iterator_base() = default; 194s 1515: 194s 1515: _Local_iterator_base(const __hash_code_base& __base, 194s 1515: _Hash_node<_Value, false>* __p, 194s 1515: size_t __bkt, size_t __bkt_count) 194s 1515: : __node_iter_base(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) 194s 1515: { _M_init(__base._M_hash._M_obj); } 194s 1515: 194s 1515: ~_Local_iterator_base() 194s 1515: { 194s 1515: if (_M_bucket_count != size_t(-1)) 194s 1515: _M_destroy(); 194s 1515: } 194s 1515: 194s 1515: _Local_iterator_base(const _Local_iterator_base& __iter) 194s 1515: : __node_iter_base(__iter._M_cur), _M_bucket(__iter._M_bucket) 194s 1515: , _M_bucket_count(__iter._M_bucket_count) 194s 1515: { 194s 1515: if (_M_bucket_count != size_t(-1)) 194s 1515: _M_init(__iter._M_h()); 194s 1515: } 194s 1515: 194s 1515: _Local_iterator_base& 194s 1515: operator=(const _Local_iterator_base& __iter) 194s 1515: { 194s 1515: if (_M_bucket_count != size_t(-1)) 194s 1515: _M_destroy(); 194s 1515: this->_M_cur = __iter._M_cur; 194s 1515: _M_bucket = __iter._M_bucket; 194s 1515: _M_bucket_count = __iter._M_bucket_count; 194s 1515: if (_M_bucket_count != size_t(-1)) 194s 1515: _M_init(__iter._M_h()); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_incr() 194s 1515: { 194s 1515: __node_iter_base::_M_incr(); 194s 1515: if (this->_M_cur) 194s 1515: { 194s 1515: const auto __code = _M_h()(_ExtractKey{}(this->_M_cur->_M_v())); 194s 1515: size_t __bkt = _RangeHash{}(__code, _M_bucket_count); 194s 1515: if (__bkt != _M_bucket) 194s 1515: this->_M_cur = nullptr; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: size_t _M_bucket = 0; 194s 1515: size_t _M_bucket_count = -1; 194s 1515: 194s 1515: void 194s 1515: _M_init(const _Hash& __h) 194s 1515: { std::_Construct(std::__addressof(__hash_obj_storage::_M_u._M_h), __h); } 194s 1515: 194s 1515: void 194s 1515: _M_destroy() { __hash_obj_storage::_M_u._M_h.~_Hash(); } 194s 1515: 194s 1515: const _Hash& 194s 1515: _M_h() const { return __hash_obj_storage::_M_u._M_h; } 194s 1515: 194s 1515: public: 194s 1515: size_t 194s 1515: _M_get_bucket() const { return _M_bucket; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Local_iterator 194s 1515: : public _Local_iterator_base<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, __cache> 194s 1515: { 194s 1515: private: 194s 1515: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, __cache>; 194s 1515: using __hash_code_base = typename __base_type::__hash_code_base; 194s 1515: 194s 1515: public: 194s 1515: using value_type = _Value; 194s 1515: using pointer = __conditional_t<__constant_iterators, 194s 1515: const value_type*, value_type*>; 194s 1515: using reference = __conditional_t<__constant_iterators, 194s 1515: const value_type&, value_type&>; 194s 1515: using difference_type = ptrdiff_t; 194s 1515: using iterator_category = forward_iterator_tag; 194s 1515: 194s 1515: _Local_iterator() = default; 194s 1515: 194s 1515: _Local_iterator(const __hash_code_base& __base, 194s 1515: _Hash_node<_Value, __cache>* __n, 194s 1515: size_t __bkt, size_t __bkt_count) 194s 1515: : __base_type(__base, __n, __bkt, __bkt_count) 194s 1515: { } 194s 1515: 194s 1515: reference 194s 1515: operator*() const 194s 1515: { return this->_M_cur->_M_v(); } 194s 1515: 194s 1515: pointer 194s 1515: operator->() const 194s 1515: { return this->_M_cur->_M_valptr(); } 194s 1515: 194s 1515: _Local_iterator& 194s 1515: operator++() 194s 1515: { 194s 1515: this->_M_incr(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: _Local_iterator 194s 1515: operator++(int) 194s 1515: { 194s 1515: _Local_iterator __tmp(*this); 194s 1515: this->_M_incr(); 194s 1515: return __tmp; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Local_const_iterator 194s 1515: : public _Local_iterator_base<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, __cache> 194s 1515: { 194s 1515: private: 194s 1515: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, __cache>; 194s 1515: using __hash_code_base = typename __base_type::__hash_code_base; 194s 1515: 194s 1515: public: 194s 1515: using value_type = _Value; 194s 1515: using pointer = const value_type*; 194s 1515: using reference = const value_type&; 194s 1515: using difference_type = ptrdiff_t; 194s 1515: using iterator_category = forward_iterator_tag; 194s 1515: 194s 1515: _Local_const_iterator() = default; 194s 1515: 194s 1515: _Local_const_iterator(const __hash_code_base& __base, 194s 1515: _Hash_node<_Value, __cache>* __n, 194s 1515: size_t __bkt, size_t __bkt_count) 194s 1515: : __base_type(__base, __n, __bkt, __bkt_count) 194s 1515: { } 194s 1515: 194s 1515: _Local_const_iterator(const _Local_iterator<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, 194s 1515: __constant_iterators, 194s 1515: __cache>& __x) 194s 1515: : __base_type(__x) 194s 1515: { } 194s 1515: 194s 1515: reference 194s 1515: operator*() const 194s 1515: { return this->_M_cur->_M_v(); } 194s 1515: 194s 1515: pointer 194s 1515: operator->() const 194s 1515: { return this->_M_cur->_M_valptr(); } 194s 1515: 194s 1515: _Local_const_iterator& 194s 1515: operator++() 194s 1515: { 194s 1515: this->_M_incr(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: _Local_const_iterator 194s 1515: operator++(int) 194s 1515: { 194s 1515: _Local_const_iterator __tmp(*this); 194s 1515: this->_M_incr(); 194s 1515: return __tmp; 194s 1515: } 194s 1515: }; 194s 1515: # 1369 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 194s 1515: template 194s 1515: struct _Hashtable_base 194s 1515: : public _Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHash, 194s 1515: _Unused, _Traits::__hash_cached::value> 194s 1515: { 194s 1515: public: 194s 1515: using key_type = _Key; 194s 1515: using value_type = _Value; 194s 1515: using key_equal = _Equal; 194s 1515: using size_type = size_t; 194s 1515: using difference_type = ptrdiff_t; 194s 1515: 194s 1515: using __traits_type = _Traits; 194s 1515: using __hash_cached = typename __traits_type::__hash_cached; 194s 1515: 194s 1515: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 194s 1515: _Hash, _RangeHash, _Unused, 194s 1515: __hash_cached::value>; 194s 1515: 194s 1515: using __hash_code = typename __hash_code_base::__hash_code; 194s 1515: 194s 1515: protected: 194s 1515: [[__no_unique_address__]] _Hashtable_ebo_helper<_Equal> _M_equal{}; 194s 1515: 194s 1515: _Hashtable_base() = default; 194s 1515: 194s 1515: _Hashtable_base(const _Hash& __hash, const _Equal& __eq) 194s 1515: : __hash_code_base(__hash), _M_equal{__eq} 194s 1515: { } 194s 1515: 194s 1515: bool 194s 1515: _M_key_equals(const _Key& __k, 194s 1515: const _Hash_node_value<_Value, 194s 1515: __hash_cached::value>& __n) const 194s 1515: { 194s 1515: static_assert(__is_invocable{}, 194s 1515: "key equality predicate must be invocable with two arguments of " 194s 1515: "key type"); 194s 1515: return _M_eq()(__k, _ExtractKey{}(__n._M_v())); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: _M_key_equals_tr(const _Kt& __k, 194s 1515: const _Hash_node_value<_Value, 194s 1515: __hash_cached::value>& __n) const 194s 1515: { 194s 1515: static_assert( 194s 1515: __is_invocable{}, 194s 1515: "key equality predicate must be invocable with the argument type " 194s 1515: "and the key type"); 194s 1515: return _M_eq()(__k, _ExtractKey{}(__n._M_v())); 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: bool 194s 1515: _M_equals(const _Key& __k, __hash_code __c, 194s 1515: const _Hash_node_value<_Value, __hash_cached::value>& __n) const 194s 1515: { 194s 1515: if constexpr (__hash_cached::value) 194s 1515: if (__c != __n._M_hash_code) 194s 1515: return false; 194s 1515: 194s 1515: return _M_key_equals(__k, __n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: _M_equals_tr(const _Kt& __k, __hash_code __c, 194s 1515: const _Hash_node_value<_Value, 194s 1515: __hash_cached::value>& __n) const 194s 1515: { 194s 1515: if constexpr (__hash_cached::value) 194s 1515: if (__c != __n._M_hash_code) 194s 1515: return false; 194s 1515: 194s 1515: return _M_key_equals_tr(__k, __n); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: _M_node_equals( 194s 1515: const _Hash_node_value<_Value, __hash_cached::value>& __lhn, 194s 1515: const _Hash_node_value<_Value, __hash_cached::value>& __rhn) const 194s 1515: { 194s 1515: if constexpr (__hash_cached::value) 194s 1515: if (__lhn._M_hash_code != __rhn._M_hash_code) 194s 1515: return false; 194s 1515: 194s 1515: return _M_key_equals(_ExtractKey{}(__lhn._M_v()), __rhn); 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: const _Equal& 194s 1515: _M_eq() const noexcept { return _M_equal._M_obj; } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Hashtable_alloc 194s 1515: { 194s 1515: private: 194s 1515: [[__no_unique_address__]] _Hashtable_ebo_helper<_NodeAlloc> _M_alloc{}; 194s 1515: 194s 1515: template 194s 1515: struct __get_value_type; 194s 1515: template 194s 1515: struct __get_value_type<_Hash_node<_Val, _Cache_hash_code>> 194s 1515: { using type = _Val; }; 194s 1515: 194s 1515: public: 194s 1515: using __node_type = typename _NodeAlloc::value_type; 194s 1515: using __node_alloc_type = _NodeAlloc; 194s 1515: 194s 1515: using __node_alloc_traits = __gnu_cxx::__alloc_traits<__node_alloc_type>; 194s 1515: 194s 1515: using __value_alloc_traits = typename __node_alloc_traits::template 194s 1515: rebind_traits::type>; 194s 1515: 194s 1515: using __node_ptr = __node_type*; 194s 1515: using __node_base = _Hash_node_base; 194s 1515: using __node_base_ptr = __node_base*; 194s 1515: using __buckets_alloc_type = 194s 1515: __alloc_rebind<__node_alloc_type, __node_base_ptr>; 194s 1515: using __buckets_alloc_traits = std::allocator_traits<__buckets_alloc_type>; 194s 1515: using __buckets_ptr = __node_base_ptr*; 194s 1515: 194s 1515: _Hashtable_alloc() = default; 194s 1515: _Hashtable_alloc(const _Hashtable_alloc&) = default; 194s 1515: _Hashtable_alloc(_Hashtable_alloc&&) = default; 194s 1515: 194s 1515: template 194s 1515: _Hashtable_alloc(_Alloc&& __a) 194s 1515: : _M_alloc{std::forward<_Alloc>(__a)} 194s 1515: { } 194s 1515: 194s 1515: __node_alloc_type& 194s 1515: _M_node_allocator() 194s 1515: { return _M_alloc._M_obj; } 194s 1515: 194s 1515: const __node_alloc_type& 194s 1515: _M_node_allocator() const 194s 1515: { return _M_alloc._M_obj; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: __node_ptr 194s 1515: _M_allocate_node(_Args&&... __args); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_deallocate_node(__node_ptr __n); 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_deallocate_node_ptr(__node_ptr __n); 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_deallocate_nodes(__node_ptr __n); 194s 1515: 194s 1515: __buckets_ptr 194s 1515: _M_allocate_buckets(size_t __bkt_count); 194s 1515: 194s 1515: void 194s 1515: _M_deallocate_buckets(__buckets_ptr, size_t __bkt_count); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&... __args) 194s 1515: -> __node_ptr 194s 1515: { 194s 1515: auto& __alloc = _M_node_allocator(); 194s 1515: auto __nptr = __node_alloc_traits::allocate(__alloc, 1); 194s 1515: __node_ptr __n = std::__to_address(__nptr); 194s 1515: try 194s 1515: { 194s 1515: ::new ((void*)__n) __node_type; 194s 1515: __node_alloc_traits::construct(__alloc, __n->_M_valptr(), 194s 1515: std::forward<_Args>(__args)...); 194s 1515: return __n; 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: __n->~__node_type(); 194s 1515: __node_alloc_traits::deallocate(__alloc, __nptr, 1); 194s 1515: throw; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_ptr __n) 194s 1515: { 194s 1515: __node_alloc_traits::destroy(_M_node_allocator(), __n->_M_valptr()); 194s 1515: _M_deallocate_node_ptr(__n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node_ptr(__node_ptr __n) 194s 1515: { 194s 1515: using _Ptr = typename __node_alloc_traits::pointer; 194s 1515: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__n); 194s 1515: __n->~__node_type(); 194s 1515: __node_alloc_traits::deallocate(_M_node_allocator(), __ptr, 1); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_nodes(__node_ptr __n) 194s 1515: { 194s 1515: while (__n) 194s 1515: { 194s 1515: __node_ptr __tmp = __n; 194s 1515: __n = __n->_M_next(); 194s 1515: _M_deallocate_node(__tmp); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable_alloc<_NodeAlloc>::_M_allocate_buckets(size_t __bkt_count) 194s 1515: -> __buckets_ptr 194s 1515: { 194s 1515: __buckets_alloc_type __alloc(_M_node_allocator()); 194s 1515: 194s 1515: auto __ptr = __buckets_alloc_traits::allocate(__alloc, __bkt_count); 194s 1515: __buckets_ptr __p = std::__to_address(__ptr); 194s 1515: __builtin_memset(__p, 0, __bkt_count * sizeof(__node_base_ptr)); 194s 1515: return __p; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable_alloc<_NodeAlloc>:: 194s 1515: _M_deallocate_buckets(__buckets_ptr __bkts, size_t __bkt_count) 194s 1515: { 194s 1515: using _Ptr = typename __buckets_alloc_traits::pointer; 194s 1515: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__bkts); 194s 1515: __buckets_alloc_type __alloc(_M_node_allocator()); 194s 1515: __buckets_alloc_traits::deallocate(__alloc, __ptr, __bkt_count); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 38 "/usr/include/c++/15/bits/hashtable.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/enable_special_members.h" 1 3 4 194s 1515: # 39 "/usr/include/c++/15/bits/enable_special_members.h" 3 4 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct _Enable_default_constructor_tag 194s 1515: { 194s 1515: explicit constexpr _Enable_default_constructor_tag() = default; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Enable_default_constructor 194s 1515: { 194s 1515: constexpr _Enable_default_constructor() noexcept = default; 194s 1515: constexpr _Enable_default_constructor(_Enable_default_constructor const&) 194s 1515: noexcept = default; 194s 1515: constexpr _Enable_default_constructor(_Enable_default_constructor&&) 194s 1515: noexcept = default; 194s 1515: _Enable_default_constructor& 194s 1515: operator=(_Enable_default_constructor const&) noexcept = default; 194s 1515: _Enable_default_constructor& 194s 1515: operator=(_Enable_default_constructor&&) noexcept = default; 194s 1515: 194s 1515: 194s 1515: constexpr explicit 194s 1515: _Enable_default_constructor(_Enable_default_constructor_tag) { } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Enable_destructor { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move { }; 194s 1515: # 98 "/usr/include/c++/15/bits/enable_special_members.h" 3 4 194s 1515: template 194s 1515: struct _Enable_special_members 194s 1515: : private _Enable_default_constructor<_Default, _Tag>, 194s 1515: private _Enable_destructor<_Destructor, _Tag>, 194s 1515: private _Enable_copy_move<_Copy, _CopyAssignment, 194s 1515: _Move, _MoveAssignment, 194s 1515: _Tag> 194s 1515: { }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: struct _Enable_default_constructor 194s 1515: { 194s 1515: constexpr _Enable_default_constructor() noexcept = delete; 194s 1515: constexpr _Enable_default_constructor(_Enable_default_constructor const&) 194s 1515: noexcept = default; 194s 1515: constexpr _Enable_default_constructor(_Enable_default_constructor&&) 194s 1515: noexcept = default; 194s 1515: _Enable_default_constructor& 194s 1515: operator=(_Enable_default_constructor const&) noexcept = default; 194s 1515: _Enable_default_constructor& 194s 1515: operator=(_Enable_default_constructor&&) noexcept = default; 194s 1515: 194s 1515: 194s 1515: constexpr explicit 194s 1515: _Enable_default_constructor(_Enable_default_constructor_tag) { } 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_destructor 194s 1515: { ~_Enable_destructor() noexcept = delete; }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = default; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = default; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = default; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = default; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = default; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = default; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = default; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = delete; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = delete; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = delete; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = delete; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = delete; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = default; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = delete; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = delete; 194s 1515: }; 194s 1515: 194s 1515: template 194s 1515: struct _Enable_copy_move 194s 1515: { 194s 1515: constexpr _Enable_copy_move() noexcept = default; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 194s 1515: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move const&) noexcept = delete; 194s 1515: _Enable_copy_move& 194s 1515: operator=(_Enable_copy_move&&) noexcept = delete; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: # 39 "/usr/include/c++/15/bits/hashtable.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++11-extensions" 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __cache_default 194s 1515: = __not_<__and_< 194s 1515: __is_fast_hash<_Hash>, 194s 1515: 194s 1515: __is_nothrow_invocable>>; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using _Hashtable_enable_default_ctor 194s 1515: = _Enable_default_constructor<__and_, 194s 1515: is_default_constructible<_Hash>, 194s 1515: is_default_constructible<_Allocator>>{}, 194s 1515: __detail::_Hash_node_base>; 194s 1515: # 185 "/usr/include/c++/15/bits/hashtable.h" 3 4 194s 1515: template 194s 1515: class _Hashtable 194s 1515: : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _Traits>, 194s 1515: public __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, 194s 1515: _RehashPolicy, _Traits>, 194s 1515: public __detail::_Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, 194s 1515: _RehashPolicy, _Traits>, 194s 1515: private __detail::_Hashtable_alloc< 194s 1515: __alloc_rebind<_Alloc, 194s 1515: __detail::_Hash_node<_Value, 194s 1515: _Traits::__hash_cached::value>>>, 194s 1515: private _Hashtable_enable_default_ctor<_Equal, _Hash, _Alloc> 194s 1515: { 194s 1515: static_assert(is_same::type, _Value>::value, 194s 1515: "unordered container must have a non-const, non-volatile value_type"); 194s 1515: 194s 1515: static_assert(is_same{}, 194s 1515: "unordered container must have the same value_type as its allocator"); 194s 1515: 194s 1515: static_assert(is_copy_constructible<_Hash>::value, 194s 1515: "hash function must be copy constructible"); 194s 1515: 194s 1515: using __traits_type = _Traits; 194s 1515: using __hash_cached = typename __traits_type::__hash_cached; 194s 1515: using __constant_iterators = typename __traits_type::__constant_iterators; 194s 1515: using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>; 194s 1515: using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; 194s 1515: 194s 1515: using __hashtable_alloc = __detail::_Hashtable_alloc<__node_alloc_type>; 194s 1515: 194s 1515: using __node_value_type = 194s 1515: __detail::_Hash_node_value<_Value, __hash_cached::value>; 194s 1515: using __node_ptr = typename __hashtable_alloc::__node_ptr; 194s 1515: using __value_alloc_traits = 194s 1515: typename __hashtable_alloc::__value_alloc_traits; 194s 1515: using __node_alloc_traits = 194s 1515: typename __hashtable_alloc::__node_alloc_traits; 194s 1515: using __node_base = typename __hashtable_alloc::__node_base; 194s 1515: using __node_base_ptr = typename __hashtable_alloc::__node_base_ptr; 194s 1515: using __buckets_ptr = typename __hashtable_alloc::__buckets_ptr; 194s 1515: 194s 1515: using __enable_default_ctor 194s 1515: = _Hashtable_enable_default_ctor<_Equal, _Hash, _Alloc>; 194s 1515: using __rehash_guard_t 194s 1515: = __detail::_RehashStateGuard<_RehashPolicy>; 194s 1515: 194s 1515: public: 194s 1515: typedef _Key key_type; 194s 1515: typedef _Value value_type; 194s 1515: typedef _Alloc allocator_type; 194s 1515: typedef _Equal key_equal; 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename __value_alloc_traits::pointer pointer; 194s 1515: typedef typename __value_alloc_traits::const_pointer const_pointer; 194s 1515: typedef value_type& reference; 194s 1515: typedef const value_type& const_reference; 194s 1515: 194s 1515: using iterator 194s 1515: = __detail::_Node_iterator<_Value, __constant_iterators::value, 194s 1515: __hash_cached::value>; 194s 1515: 194s 1515: using const_iterator 194s 1515: = __detail::_Node_const_iterator<_Value, __constant_iterators::value, 194s 1515: __hash_cached::value>; 194s 1515: 194s 1515: using local_iterator = __detail::_Local_iterator; 194s 1515: 194s 1515: using const_local_iterator = __detail::_Local_const_iterator< 194s 1515: key_type, _Value, 194s 1515: _ExtractKey, _Hash, _RangeHash, _Unused, 194s 1515: __constant_iterators::value, __hash_cached::value>; 194s 1515: 194s 1515: private: 194s 1515: using __rehash_type = _RehashPolicy; 194s 1515: 194s 1515: using __unique_keys = typename __traits_type::__unique_keys; 194s 1515: 194s 1515: using __hashtable_base = __detail:: 194s 1515: _Hashtable_base<_Key, _Value, _ExtractKey, 194s 1515: _Equal, _Hash, _RangeHash, _Unused, _Traits>; 194s 1515: 194s 1515: using __hash_code_base = typename __hashtable_base::__hash_code_base; 194s 1515: using __hash_code = typename __hashtable_base::__hash_code; 194s 1515: using __ireturn_type = __conditional_t<__unique_keys::value, 194s 1515: std::pair, 194s 1515: iterator>; 194s 1515: 194s 1515: using __map_base = __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, 194s 1515: _Equal, _Hash, _RangeHash, _Unused, 194s 1515: _RehashPolicy, _Traits>; 194s 1515: 194s 1515: using __rehash_base = __detail::_Rehash_base<_Key, _Value, _Alloc, 194s 1515: _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, 194s 1515: _RehashPolicy, _Traits>; 194s 1515: 194s 1515: using __node_builder_t = __detail::_NodeBuilder<_ExtractKey>; 194s 1515: 194s 1515: 194s 1515: struct _Scoped_node 194s 1515: { 194s 1515: 194s 1515: _Scoped_node(__node_ptr __n, __hashtable_alloc* __h) 194s 1515: : _M_h(__h), _M_node(__n) { } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _Scoped_node(__hashtable_alloc* __h, _Args&&... __args) 194s 1515: : _M_h(__h), 194s 1515: _M_node(__h->_M_allocate_node(std::forward<_Args>(__args)...)) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: ~_Scoped_node() { if (_M_node) _M_h->_M_deallocate_node(_M_node); }; 194s 1515: 194s 1515: _Scoped_node(const _Scoped_node&) = delete; 194s 1515: _Scoped_node& operator=(const _Scoped_node&) = delete; 194s 1515: 194s 1515: __hashtable_alloc* _M_h; 194s 1515: __node_ptr _M_node; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct __hash_code_base_access : __hash_code_base 194s 1515: { using __hash_code_base::_M_bucket_index; }; 194s 1515: 194s 1515: 194s 1515: static_assert(is_nothrow_default_constructible<_RangeHash>::value, 194s 1515: "Functor used to map hash code to bucket index" 194s 1515: " must be nothrow default constructible"); 194s 1515: static_assert(noexcept( 194s 1515: std::declval()((std::size_t)0, (std::size_t)0)), 194s 1515: "Functor used to map hash code to bucket index must be" 194s 1515: " noexcept"); 194s 1515: 194s 1515: 194s 1515: static_assert(is_nothrow_default_constructible<_ExtractKey>::value, 194s 1515: "_ExtractKey must be nothrow default constructible"); 194s 1515: static_assert(noexcept( 194s 1515: std::declval()(std::declval<_Value>())), 194s 1515: "_ExtractKey functor must be noexcept invocable"); 194s 1515: 194s 1515: template 194s 1515: friend struct __detail::_Map_base; 194s 1515: 194s 1515: public: 194s 1515: using size_type = typename __hashtable_base::size_type; 194s 1515: using difference_type = typename __hashtable_base::difference_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: private: 194s 1515: __buckets_ptr _M_buckets = &_M_single_bucket; 194s 1515: size_type _M_bucket_count = 1; 194s 1515: __node_base _M_before_begin; 194s 1515: size_type _M_element_count = 0; 194s 1515: _RehashPolicy _M_rehash_policy; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __node_base_ptr _M_single_bucket = nullptr; 194s 1515: 194s 1515: void 194s 1515: _M_update_bbegin() 194s 1515: { 194s 1515: if (auto __begin = _M_begin()) 194s 1515: _M_buckets[_M_bucket_index(*__begin)] = &_M_before_begin; 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_update_bbegin(__node_ptr __n) 194s 1515: { 194s 1515: _M_before_begin._M_nxt = __n; 194s 1515: _M_update_bbegin(); 194s 1515: } 194s 1515: 194s 1515: bool 194s 1515: _M_uses_single_bucket(__buckets_ptr __bkts) const 194s 1515: { return __builtin_expect(__bkts == &_M_single_bucket, false); } 194s 1515: 194s 1515: bool 194s 1515: _M_uses_single_bucket() const 194s 1515: { return _M_uses_single_bucket(_M_buckets); } 194s 1515: 194s 1515: static constexpr size_t 194s 1515: __small_size_threshold() noexcept 194s 1515: { 194s 1515: return 194s 1515: __detail::_Hashtable_hash_traits<_Hash>::__small_size_threshold(); 194s 1515: } 194s 1515: 194s 1515: __hashtable_alloc& 194s 1515: _M_base_alloc() { return *this; } 194s 1515: 194s 1515: __buckets_ptr 194s 1515: _M_allocate_buckets(size_type __bkt_count) 194s 1515: { 194s 1515: if (__builtin_expect(__bkt_count == 1, false)) 194s 1515: { 194s 1515: _M_single_bucket = nullptr; 194s 1515: return &_M_single_bucket; 194s 1515: } 194s 1515: 194s 1515: return __hashtable_alloc::_M_allocate_buckets(__bkt_count); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_deallocate_buckets(__buckets_ptr __bkts, size_type __bkt_count) 194s 1515: { 194s 1515: if (_M_uses_single_bucket(__bkts)) 194s 1515: return; 194s 1515: 194s 1515: __hashtable_alloc::_M_deallocate_buckets(__bkts, __bkt_count); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_deallocate_buckets() 194s 1515: { _M_deallocate_buckets(_M_buckets, _M_bucket_count); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: __node_ptr 194s 1515: _M_bucket_begin(size_type __bkt) const 194s 1515: { 194s 1515: __node_base_ptr __n = _M_buckets[__bkt]; 194s 1515: return __n ? static_cast<__node_ptr>(__n->_M_nxt) : nullptr; 194s 1515: } 194s 1515: 194s 1515: __node_ptr 194s 1515: _M_begin() const 194s 1515: { return static_cast<__node_ptr>(_M_before_begin._M_nxt); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _M_assign_elements(_Ht&&); 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _M_assign(_Ht&& __ht) 194s 1515: { 194s 1515: __detail::_AllocNode<__node_alloc_type> __alloc_node_gen(*this); 194s 1515: _M_assign(std::forward<_Ht>(__ht), __alloc_node_gen); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _M_assign(_Ht&&, _NodeGenerator&); 194s 1515: 194s 1515: void 194s 1515: _M_move_assign(_Hashtable&&, true_type); 194s 1515: 194s 1515: void 194s 1515: _M_move_assign(_Hashtable&&, false_type); 194s 1515: 194s 1515: void 194s 1515: _M_reset() noexcept; 194s 1515: 194s 1515: _Hashtable(const _Hash& __h, const _Equal& __eq, 194s 1515: const allocator_type& __a) 194s 1515: : __hashtable_base(__h, __eq), 194s 1515: __hashtable_alloc(__node_alloc_type(__a)), 194s 1515: __enable_default_ctor(_Enable_default_constructor_tag{}) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: static constexpr bool 194s 1515: _S_nothrow_move() 194s 1515: { 194s 1515: 194s 1515: return __and_<__bool_constant<_No_realloc>, 194s 1515: is_nothrow_copy_constructible<_Hash>, 194s 1515: is_nothrow_copy_constructible<_Equal>>::value; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, 194s 1515: true_type ) 194s 1515: noexcept(_S_nothrow_move()); 194s 1515: 194s 1515: _Hashtable(_Hashtable&&, __node_alloc_type&&, 194s 1515: false_type ); 194s 1515: 194s 1515: template 194s 1515: _Hashtable(_InputIterator __first, _InputIterator __last, 194s 1515: size_type __bkt_count_hint, 194s 1515: const _Hash&, const _Equal&, const allocator_type&, 194s 1515: true_type __uks); 194s 1515: 194s 1515: template 194s 1515: _Hashtable(_InputIterator __first, _InputIterator __last, 194s 1515: size_type __bkt_count_hint, 194s 1515: const _Hash&, const _Equal&, const allocator_type&, 194s 1515: false_type __uks); 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: _Hashtable() = default; 194s 1515: 194s 1515: _Hashtable(const _Hashtable&); 194s 1515: 194s 1515: _Hashtable(const _Hashtable&, const allocator_type&); 194s 1515: 194s 1515: explicit 194s 1515: _Hashtable(size_type __bkt_count_hint, 194s 1515: const _Hash& __hf = _Hash(), 194s 1515: const key_equal& __eql = key_equal(), 194s 1515: const allocator_type& __a = allocator_type()); 194s 1515: 194s 1515: 194s 1515: _Hashtable(_Hashtable&& __ht) 194s 1515: noexcept(_S_nothrow_move()) 194s 1515: : _Hashtable(std::move(__ht), std::move(__ht._M_node_allocator()), 194s 1515: true_type{}) 194s 1515: { } 194s 1515: 194s 1515: _Hashtable(_Hashtable&& __ht, const allocator_type& __a) 194s 1515: noexcept(_S_nothrow_move<__node_alloc_traits::_S_always_equal()>()) 194s 1515: : _Hashtable(std::move(__ht), __node_alloc_type(__a), 194s 1515: typename __node_alloc_traits::is_always_equal{}) 194s 1515: { } 194s 1515: 194s 1515: explicit 194s 1515: _Hashtable(const allocator_type& __a) 194s 1515: : __hashtable_alloc(__node_alloc_type(__a)), 194s 1515: __enable_default_ctor(_Enable_default_constructor_tag{}) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: _Hashtable(_InputIterator __f, _InputIterator __l, 194s 1515: size_type __bkt_count_hint = 0, 194s 1515: const _Hash& __hf = _Hash(), 194s 1515: const key_equal& __eql = key_equal(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _Hashtable(__f, __l, __bkt_count_hint, __hf, __eql, __a, 194s 1515: __unique_keys{}) 194s 1515: { } 194s 1515: 194s 1515: _Hashtable(initializer_list __l, 194s 1515: size_type __bkt_count_hint = 0, 194s 1515: const _Hash& __hf = _Hash(), 194s 1515: const key_equal& __eql = key_equal(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _Hashtable(__l.begin(), __l.end(), __bkt_count_hint, 194s 1515: __hf, __eql, __a, __unique_keys{}) 194s 1515: { } 194s 1515: 194s 1515: _Hashtable& 194s 1515: operator=(const _Hashtable& __ht); 194s 1515: 194s 1515: _Hashtable& 194s 1515: operator=(_Hashtable&& __ht) 194s 1515: noexcept(__node_alloc_traits::_S_nothrow_move() 194s 1515: && is_nothrow_move_assignable<_Hash>::value 194s 1515: && is_nothrow_move_assignable<_Equal>::value) 194s 1515: { 194s 1515: constexpr bool __move_storage = 194s 1515: __node_alloc_traits::_S_propagate_on_move_assign() 194s 1515: || __node_alloc_traits::_S_always_equal(); 194s 1515: _M_move_assign(std::move(__ht), __bool_constant<__move_storage>()); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: _Hashtable& 194s 1515: operator=(initializer_list __l) 194s 1515: { 194s 1515: using __reuse_or_alloc_node_gen_t = 194s 1515: __detail::_ReuseOrAllocNode<__node_alloc_type>; 194s 1515: 194s 1515: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this); 194s 1515: _M_before_begin._M_nxt = nullptr; 194s 1515: clear(); 194s 1515: 194s 1515: 194s 1515: auto __l_bkt_count = _M_rehash_policy._M_bkt_for_elements(__l.size()); 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (_M_bucket_count < __l_bkt_count) 194s 1515: rehash(__l_bkt_count); 194s 1515: 194s 1515: __hash_code __code; 194s 1515: size_type __bkt; 194s 1515: for (auto& __e : __l) 194s 1515: { 194s 1515: const key_type& __k = _ExtractKey{}(__e); 194s 1515: 194s 1515: if constexpr (__unique_keys::value) 194s 1515: { 194s 1515: if (auto __loc = _M_locate(__k)) 194s 1515: continue; 194s 1515: else 194s 1515: { 194s 1515: __code = __loc._M_hash_code; 194s 1515: __bkt = __loc._M_bucket_index; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __code = this->_M_hash_code(__k); 194s 1515: __bkt = _M_bucket_index(__code); 194s 1515: } 194s 1515: 194s 1515: _M_insert_unique_node(__bkt, __code, __roan(__e)); 194s 1515: } 194s 1515: 194s 1515: return *this; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: ~_Hashtable() noexcept; 194s 1515: 194s 1515: void 194s 1515: swap(_Hashtable&) 194s 1515: noexcept(__and_<__is_nothrow_swappable<_Hash>, 194s 1515: __is_nothrow_swappable<_Equal>>::value); 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: begin() noexcept 194s 1515: { return iterator(_M_begin()); } 194s 1515: 194s 1515: const_iterator 194s 1515: begin() const noexcept 194s 1515: { return const_iterator(_M_begin()); } 194s 1515: 194s 1515: iterator 194s 1515: end() noexcept 194s 1515: { return iterator(nullptr); } 194s 1515: 194s 1515: const_iterator 194s 1515: end() const noexcept 194s 1515: { return const_iterator(nullptr); } 194s 1515: 194s 1515: const_iterator 194s 1515: cbegin() const noexcept 194s 1515: { return const_iterator(_M_begin()); } 194s 1515: 194s 1515: const_iterator 194s 1515: cend() const noexcept 194s 1515: { return const_iterator(nullptr); } 194s 1515: 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { return _M_element_count; } 194s 1515: 194s 1515: [[__nodiscard__]] bool 194s 1515: empty() const noexcept 194s 1515: { return size() == 0; } 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return allocator_type(this->_M_node_allocator()); } 194s 1515: 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { return __node_alloc_traits::max_size(this->_M_node_allocator()); } 194s 1515: 194s 1515: 194s 1515: key_equal 194s 1515: key_eq() const 194s 1515: { return this->_M_eq(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: bucket_count() const noexcept 194s 1515: { return _M_bucket_count; } 194s 1515: 194s 1515: size_type 194s 1515: max_bucket_count() const noexcept 194s 1515: { return max_size(); } 194s 1515: 194s 1515: size_type 194s 1515: bucket_size(size_type __bkt) const 194s 1515: { return std::distance(begin(__bkt), end(__bkt)); } 194s 1515: 194s 1515: size_type 194s 1515: bucket(const key_type& __k) const 194s 1515: { return _M_bucket_index(this->_M_hash_code(__k)); } 194s 1515: 194s 1515: local_iterator 194s 1515: begin(size_type __bkt) 194s 1515: { 194s 1515: return local_iterator(*this, _M_bucket_begin(__bkt), 194s 1515: __bkt, _M_bucket_count); 194s 1515: } 194s 1515: 194s 1515: local_iterator 194s 1515: end(size_type __bkt) 194s 1515: { return local_iterator(*this, nullptr, __bkt, _M_bucket_count); } 194s 1515: 194s 1515: const_local_iterator 194s 1515: begin(size_type __bkt) const 194s 1515: { 194s 1515: return const_local_iterator(*this, _M_bucket_begin(__bkt), 194s 1515: __bkt, _M_bucket_count); 194s 1515: } 194s 1515: 194s 1515: const_local_iterator 194s 1515: end(size_type __bkt) const 194s 1515: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); } 194s 1515: 194s 1515: 194s 1515: const_local_iterator 194s 1515: cbegin(size_type __bkt) const 194s 1515: { 194s 1515: return const_local_iterator(*this, _M_bucket_begin(__bkt), 194s 1515: __bkt, _M_bucket_count); 194s 1515: } 194s 1515: 194s 1515: const_local_iterator 194s 1515: cend(size_type __bkt) const 194s 1515: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); } 194s 1515: 194s 1515: float 194s 1515: load_factor() const noexcept 194s 1515: { 194s 1515: return static_cast(size()) / static_cast(bucket_count()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const _RehashPolicy& 194s 1515: __rehash_policy() const 194s 1515: { return _M_rehash_policy; } 194s 1515: 194s 1515: void 194s 1515: __rehash_policy(const _RehashPolicy& __pol) 194s 1515: { _M_rehash_policy = __pol; } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: find(const key_type& __k); 194s 1515: 194s 1515: const_iterator 194s 1515: find(const key_type& __k) const; 194s 1515: 194s 1515: size_type 194s 1515: count(const key_type& __k) const; 194s 1515: 194s 1515: std::pair 194s 1515: equal_range(const key_type& __k); 194s 1515: 194s 1515: std::pair 194s 1515: equal_range(const key_type& __k) const; 194s 1515: # 801 "/usr/include/c++/15/bits/hashtable.h" 3 4 194s 1515: void _M_rehash_insert(size_type __n); 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: size_type 194s 1515: _M_bucket_index(const __node_value_type& __n) const noexcept 194s 1515: { return __hash_code_base::_M_bucket_index(__n, _M_bucket_count); } 194s 1515: 194s 1515: size_type 194s 1515: _M_bucket_index(__hash_code __c) const 194s 1515: { return __hash_code_base::_M_bucket_index(__c, _M_bucket_count); } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: 194s 1515: 194s 1515: 194s 1515: __hash_code 194s 1515: _M_hash_code_ext(const __node_value_type& __from) const 194s 1515: { 194s 1515: if constexpr (__and_<__hash_cached, is_empty<_Hash>>::value) 194s 1515: return __from._M_hash_code; 194s 1515: else 194s 1515: return this->_M_hash_code(_ExtractKey{}(__from._M_v())); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: _M_bucket_index_ext(const __node_value_type& __from) const 194s 1515: { return _RangeHash{}(_M_hash_code_ext(__from), _M_bucket_count); } 194s 1515: 194s 1515: void 194s 1515: _M_copy_code(__node_value_type& __to, 194s 1515: const __node_value_type& __from) const 194s 1515: { 194s 1515: if constexpr (__hash_cached::value) 194s 1515: __to._M_hash_code = _M_hash_code_ext(__from); 194s 1515: } 194s 1515: 194s 1515: void 194s 1515: _M_store_code(__node_value_type& __to, __hash_code __code) const 194s 1515: { 194s 1515: if constexpr (__hash_cached::value) 194s 1515: __to._M_hash_code = __code; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __node_base_ptr 194s 1515: _M_find_before_node(size_type, const key_type&, __hash_code) const; 194s 1515: 194s 1515: template 194s 1515: __node_base_ptr 194s 1515: _M_find_before_node_tr(size_type, const _Kt&, __hash_code) const; 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct __location_type 194s 1515: { 194s 1515: 194s 1515: explicit operator bool() const noexcept 194s 1515: { return static_cast(_M_before); } 194s 1515: 194s 1515: 194s 1515: explicit operator iterator() const noexcept 194s 1515: { return iterator(_M_node()); } 194s 1515: 194s 1515: 194s 1515: explicit operator const_iterator() const noexcept 194s 1515: { return const_iterator(_M_node()); } 194s 1515: 194s 1515: 194s 1515: __node_ptr _M_node() const 194s 1515: { 194s 1515: if (_M_before) 194s 1515: return static_cast<__node_ptr>(_M_before->_M_nxt); 194s 1515: return __node_ptr(); 194s 1515: } 194s 1515: 194s 1515: __node_base_ptr _M_before{}; 194s 1515: __hash_code _M_hash_code{}; 194s 1515: size_type _M_bucket_index = size_type(-1); 194s 1515: }; 194s 1515: # 902 "/usr/include/c++/15/bits/hashtable.h" 3 4 194s 1515: __location_type 194s 1515: _M_locate(const key_type& __k) const; 194s 1515: 194s 1515: __node_ptr 194s 1515: _M_find_node(size_type __bkt, const key_type& __key, 194s 1515: __hash_code __c) const 194s 1515: { 194s 1515: if (__node_base_ptr __before_n = _M_find_before_node(__bkt, __key, __c)) 194s 1515: return static_cast<__node_ptr>(__before_n->_M_nxt); 194s 1515: return nullptr; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: __node_ptr 194s 1515: _M_find_node_tr(size_type __bkt, const _Kt& __key, 194s 1515: __hash_code __c) const 194s 1515: { 194s 1515: if (auto __before_n = _M_find_before_node_tr(__bkt, __key, __c)) 194s 1515: return static_cast<__node_ptr>(__before_n->_M_nxt); 194s 1515: return nullptr; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_insert_bucket_begin(size_type __bkt, __node_ptr __node) 194s 1515: { 194s 1515: if (_M_buckets[__bkt]) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: __node->_M_nxt = _M_buckets[__bkt]->_M_nxt; 194s 1515: _M_buckets[__bkt]->_M_nxt = __node; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: __node->_M_nxt = _M_before_begin._M_nxt; 194s 1515: _M_before_begin._M_nxt = __node; 194s 1515: 194s 1515: if (__node->_M_nxt) 194s 1515: 194s 1515: 194s 1515: _M_buckets[_M_bucket_index(*__node->_M_next())] = __node; 194s 1515: 194s 1515: _M_buckets[__bkt] = &_M_before_begin; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void 194s 1515: _M_remove_bucket_begin(size_type __bkt, __node_ptr __next_n, 194s 1515: size_type __next_bkt) 194s 1515: { 194s 1515: if (!__next_n) 194s 1515: _M_buckets[__bkt] = nullptr; 194s 1515: else if (__next_bkt != __bkt) 194s 1515: { 194s 1515: _M_buckets[__next_bkt] = _M_buckets[__bkt]; 194s 1515: _M_buckets[__bkt] = nullptr; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: __node_base_ptr 194s 1515: _M_get_previous_node(size_type __bkt, __node_ptr __n); 194s 1515: 194s 1515: pair<__node_ptr, __hash_code> 194s 1515: _M_compute_hash_code(__node_ptr __hint, const key_type& __k) const; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: _M_insert_unique_node(size_type __bkt, __hash_code, 194s 1515: __node_ptr __n, size_type __n_elt = 1); 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: _M_insert_multi_node(__node_ptr __hint, 194s 1515: __hash_code __code, __node_ptr __n); 194s 1515: 194s 1515: template 194s 1515: std::pair 194s 1515: _M_emplace_uniq(_Args&&... __args); 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++14-extensions" 194s 1515: template, 194s 1515: typename = _ExtractKey> 194s 1515: static constexpr bool __is_key_type = false; 194s 1515: 194s 1515: template 194s 1515: static constexpr bool 194s 1515: __is_key_type<_Arg, key_type, __detail::_Identity> = true; 194s 1515: 194s 1515: template 194s 1515: static constexpr bool 194s 1515: __is_key_type<_Arg, pair<_Arg1, _Arg2>, __detail::_Select1st> 194s 1515: = is_same<__remove_cvref_t<_Arg1>, key_type>::value; 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: _M_emplace_multi(const_iterator, _Args&&... __args); 194s 1515: 194s 1515: iterator 194s 1515: _M_erase(size_type __bkt, __node_base_ptr __prev_n, __node_ptr __n); 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _M_insert_range_multi(_InputIterator __first, _InputIterator __last); 194s 1515: 194s 1515: public: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: 194s 1515: template 194s 1515: __ireturn_type 194s 1515: emplace(_Args&&... __args) 194s 1515: { 194s 1515: if constexpr (__unique_keys::value) 194s 1515: return _M_emplace_uniq(std::forward<_Args>(__args)...); 194s 1515: else 194s 1515: return _M_emplace_multi(cend(), std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: iterator 194s 1515: emplace_hint(const_iterator __hint, _Args&&... __args) 194s 1515: { 194s 1515: if constexpr (__unique_keys::value) 194s 1515: return _M_emplace_uniq(std::forward<_Args>(__args)...).first; 194s 1515: else 194s 1515: return _M_emplace_multi(__hint, std::forward<_Args>(__args)...); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: __ireturn_type 194s 1515: insert(const value_type& __v) 194s 1515: { 194s 1515: if constexpr (__unique_keys::value) 194s 1515: return _M_emplace_uniq(__v); 194s 1515: else 194s 1515: return _M_emplace_multi(cend(), __v); 194s 1515: } 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __hint, const value_type& __v) 194s 1515: { 194s 1515: if constexpr (__unique_keys::value) 194s 1515: return _M_emplace_uniq(__v).first; 194s 1515: else 194s 1515: return _M_emplace_multi(__hint, __v); 194s 1515: } 194s 1515: 194s 1515: __ireturn_type 194s 1515: insert(value_type&& __v) 194s 1515: { 194s 1515: if constexpr (__unique_keys::value) 194s 1515: return _M_emplace_uniq(std::move(__v)); 194s 1515: else 194s 1515: return _M_emplace_multi(cend(), std::move(__v)); 194s 1515: } 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __hint, value_type&& __v) 194s 1515: { 194s 1515: if constexpr (__unique_keys::value) 194s 1515: return _M_emplace_uniq(std::move(__v)).first; 194s 1515: else 194s 1515: return _M_emplace_multi(__hint, std::move(__v)); 194s 1515: } 194s 1515: # 1108 "/usr/include/c++/15/bits/hashtable.h" 3 4 194s 1515: void 194s 1515: insert(initializer_list __l) 194s 1515: { this->insert(__l.begin(), __l.end()); } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: insert(_InputIterator __first, _InputIterator __last) 194s 1515: { 194s 1515: if constexpr (__unique_keys::value) 194s 1515: for (; __first != __last; ++__first) 194s 1515: _M_emplace_uniq(*__first); 194s 1515: else 194s 1515: return _M_insert_range_multi(__first, __last); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template>, 194s 1515: is_constructible>> 194s 1515: __ireturn_type 194s 1515: insert(_Pair&& __v) 194s 1515: { 194s 1515: if constexpr (__unique_keys::value) 194s 1515: return _M_emplace_uniq(std::forward<_Pair>(__v)); 194s 1515: else 194s 1515: return _M_emplace_multi(cend(), std::forward<_Pair>(__v)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template>, 194s 1515: is_constructible>> 194s 1515: iterator 194s 1515: insert(const_iterator __hint, _Pair&& __v) 194s 1515: { 194s 1515: if constexpr (__unique_keys::value) 194s 1515: return _M_emplace_uniq(std::forward<_Pair>(__v)); 194s 1515: else 194s 1515: return _M_emplace_multi(__hint, std::forward<_Pair>(__v)); 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: erase(const_iterator); 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: erase(iterator __it) 194s 1515: { return erase(const_iterator(__it)); } 194s 1515: 194s 1515: size_type 194s 1515: erase(const key_type& __k); 194s 1515: 194s 1515: iterator 194s 1515: erase(const_iterator, const_iterator); 194s 1515: 194s 1515: void 194s 1515: clear() noexcept; 194s 1515: 194s 1515: 194s 1515: 194s 1515: void rehash(size_type __bkt_count); 194s 1515: # 1403 "/usr/include/c++/15/bits/hashtable.h" 3 4 194s 1515: bool 194s 1515: _M_equal(const _Hashtable& __other) const; 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: void _M_rehash(size_type __bkt_count, true_type __uks); 194s 1515: 194s 1515: 194s 1515: void _M_rehash(size_type __bkt_count, false_type __uks); 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _Hashtable(size_type __bkt_count_hint, 194s 1515: const _Hash& __h, const _Equal& __eq, const allocator_type& __a) 194s 1515: : _Hashtable(__h, __eq, __a) 194s 1515: { 194s 1515: auto __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count_hint); 194s 1515: if (__bkt_count > _M_bucket_count) 194s 1515: { 194s 1515: _M_buckets = _M_allocate_buckets(__bkt_count); 194s 1515: _M_bucket_count = __bkt_count; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: inline 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _Hashtable(_InputIterator __f, _InputIterator __l, 194s 1515: size_type __bkt_count_hint, 194s 1515: const _Hash& __h, const _Equal& __eq, 194s 1515: const allocator_type& __a, true_type ) 194s 1515: : _Hashtable(__bkt_count_hint, __h, __eq, __a) 194s 1515: { this->insert(__f, __l); } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _Hashtable(_InputIterator __f, _InputIterator __l, 194s 1515: size_type __bkt_count_hint, 194s 1515: const _Hash& __h, const _Equal& __eq, 194s 1515: const allocator_type& __a, false_type __uks) 194s 1515: : _Hashtable(__h, __eq, __a) 194s 1515: { 194s 1515: auto __nb_elems = __detail::__distance_fw(__f, __l); 194s 1515: auto __bkt_count = 194s 1515: _M_rehash_policy._M_next_bkt( 194s 1515: std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems), 194s 1515: __bkt_count_hint)); 194s 1515: 194s 1515: if (__bkt_count > _M_bucket_count) 194s 1515: { 194s 1515: _M_buckets = _M_allocate_buckets(__bkt_count); 194s 1515: _M_bucket_count = __bkt_count; 194s 1515: } 194s 1515: 194s 1515: for (; __f != __l; ++__f) 194s 1515: _M_emplace_multi(cend(), *__f); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: operator=(const _Hashtable& __ht) 194s 1515: -> _Hashtable& 194s 1515: { 194s 1515: if (&__ht == this) 194s 1515: return *this; 194s 1515: 194s 1515: if (__node_alloc_traits::_S_propagate_on_copy_assign()) 194s 1515: { 194s 1515: auto& __this_alloc = this->_M_node_allocator(); 194s 1515: auto& __that_alloc = __ht._M_node_allocator(); 194s 1515: if (!__node_alloc_traits::_S_always_equal() 194s 1515: && __this_alloc != __that_alloc) 194s 1515: { 194s 1515: 194s 1515: this->_M_deallocate_nodes(_M_begin()); 194s 1515: _M_before_begin._M_nxt = nullptr; 194s 1515: _M_deallocate_buckets(); 194s 1515: _M_buckets = nullptr; 194s 1515: std::__alloc_on_copy(__this_alloc, __that_alloc); 194s 1515: __hashtable_base::operator=(__ht); 194s 1515: _M_bucket_count = __ht._M_bucket_count; 194s 1515: _M_element_count = __ht._M_element_count; 194s 1515: _M_rehash_policy = __ht._M_rehash_policy; 194s 1515: 194s 1515: struct _Guard 194s 1515: { 194s 1515: ~_Guard() { if (_M_ht) _M_ht->_M_reset(); } 194s 1515: _Hashtable* _M_ht; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: _Guard __guard{this}; 194s 1515: _M_assign(__ht); 194s 1515: __guard._M_ht = nullptr; 194s 1515: return *this; 194s 1515: } 194s 1515: std::__alloc_on_copy(__this_alloc, __that_alloc); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: _M_assign_elements(__ht); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_assign_elements(_Ht&& __ht) 194s 1515: { 194s 1515: using __reuse_or_alloc_node_gen_t = 194s 1515: __detail::_ReuseOrAllocNode<__node_alloc_type>; 194s 1515: 194s 1515: __buckets_ptr __former_buckets = nullptr; 194s 1515: std::size_t __former_bucket_count = _M_bucket_count; 194s 1515: __rehash_guard_t __rehash_guard(_M_rehash_policy); 194s 1515: 194s 1515: if (_M_bucket_count != __ht._M_bucket_count) 194s 1515: { 194s 1515: __former_buckets = _M_buckets; 194s 1515: _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); 194s 1515: _M_bucket_count = __ht._M_bucket_count; 194s 1515: } 194s 1515: else 194s 1515: std::fill_n(_M_buckets, _M_bucket_count, nullptr); 194s 1515: 194s 1515: try 194s 1515: { 194s 1515: __hashtable_base::operator=(std::forward<_Ht>(__ht)); 194s 1515: _M_element_count = __ht._M_element_count; 194s 1515: _M_rehash_policy = __ht._M_rehash_policy; 194s 1515: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this); 194s 1515: _M_before_begin._M_nxt = nullptr; 194s 1515: _M_assign(std::forward<_Ht>(__ht), __roan); 194s 1515: if (__former_buckets) 194s 1515: _M_deallocate_buckets(__former_buckets, __former_bucket_count); 194s 1515: __rehash_guard._M_guarded_obj = nullptr; 194s 1515: } 194s 1515: catch(...) 194s 1515: { 194s 1515: if (__former_buckets) 194s 1515: { 194s 1515: 194s 1515: _M_deallocate_buckets(); 194s 1515: _M_buckets = __former_buckets; 194s 1515: _M_bucket_count = __former_bucket_count; 194s 1515: } 194s 1515: std::fill_n(_M_buckets, _M_bucket_count, nullptr); 194s 1515: throw; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_assign(_Ht&& __ht, _NodeGenerator& __node_gen) 194s 1515: { 194s 1515: struct _Guard 194s 1515: { 194s 1515: ~_Guard() 194s 1515: { 194s 1515: if (_M_ht) 194s 1515: { 194s 1515: _M_ht->clear(); 194s 1515: if (_M_dealloc_buckets) 194s 1515: _M_ht->_M_deallocate_buckets(); 194s 1515: } 194s 1515: } 194s 1515: _Hashtable* _M_ht = nullptr; 194s 1515: bool _M_dealloc_buckets = false; 194s 1515: }; 194s 1515: _Guard __guard; 194s 1515: 194s 1515: if (!_M_buckets) 194s 1515: { 194s 1515: _M_buckets = _M_allocate_buckets(_M_bucket_count); 194s 1515: __guard._M_dealloc_buckets = true; 194s 1515: } 194s 1515: 194s 1515: if (!__ht._M_before_begin._M_nxt) 194s 1515: return; 194s 1515: 194s 1515: __guard._M_ht = this; 194s 1515: 194s 1515: using _FromVal = __conditional_t::value, 194s 1515: const value_type&, value_type&&>; 194s 1515: 194s 1515: 194s 1515: 194s 1515: __node_ptr __ht_n = __ht._M_begin(); 194s 1515: __node_ptr __this_n 194s 1515: = __node_gen(static_cast<_FromVal>(__ht_n->_M_v())); 194s 1515: _M_copy_code(*__this_n, *__ht_n); 194s 1515: _M_update_bbegin(__this_n); 194s 1515: 194s 1515: 194s 1515: __node_ptr __prev_n = __this_n; 194s 1515: for (__ht_n = __ht_n->_M_next(); __ht_n; __ht_n = __ht_n->_M_next()) 194s 1515: { 194s 1515: __this_n = __node_gen(static_cast<_FromVal>(__ht_n->_M_v())); 194s 1515: __prev_n->_M_nxt = __this_n; 194s 1515: _M_copy_code(*__this_n, *__ht_n); 194s 1515: size_type __bkt = _M_bucket_index(*__this_n); 194s 1515: if (!_M_buckets[__bkt]) 194s 1515: _M_buckets[__bkt] = __prev_n; 194s 1515: __prev_n = __this_n; 194s 1515: } 194s 1515: __guard._M_ht = nullptr; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_reset() noexcept 194s 1515: { 194s 1515: _M_rehash_policy._M_reset(); 194s 1515: _M_bucket_count = 1; 194s 1515: _M_single_bucket = nullptr; 194s 1515: _M_buckets = &_M_single_bucket; 194s 1515: _M_before_begin._M_nxt = nullptr; 194s 1515: _M_element_count = 0; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_move_assign(_Hashtable&& __ht, true_type) 194s 1515: { 194s 1515: if (__builtin_expect(std::__addressof(__ht) == this, false)) 194s 1515: return; 194s 1515: 194s 1515: this->_M_deallocate_nodes(_M_begin()); 194s 1515: _M_deallocate_buckets(); 194s 1515: __hashtable_base::operator=(std::move(__ht)); 194s 1515: _M_rehash_policy = __ht._M_rehash_policy; 194s 1515: if (!__ht._M_uses_single_bucket()) 194s 1515: _M_buckets = __ht._M_buckets; 194s 1515: else 194s 1515: { 194s 1515: _M_buckets = &_M_single_bucket; 194s 1515: _M_single_bucket = __ht._M_single_bucket; 194s 1515: } 194s 1515: 194s 1515: _M_bucket_count = __ht._M_bucket_count; 194s 1515: _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; 194s 1515: _M_element_count = __ht._M_element_count; 194s 1515: std::__alloc_on_move(this->_M_node_allocator(), __ht._M_node_allocator()); 194s 1515: 194s 1515: 194s 1515: _M_update_bbegin(); 194s 1515: __ht._M_reset(); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_move_assign(_Hashtable&& __ht, false_type) 194s 1515: { 194s 1515: if (__ht._M_node_allocator() == this->_M_node_allocator()) 194s 1515: _M_move_assign(std::move(__ht), true_type{}); 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: _M_assign_elements(std::move(__ht)); 194s 1515: __ht.clear(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _Hashtable(const _Hashtable& __ht) 194s 1515: : __hashtable_base(__ht), 194s 1515: __map_base(__ht), 194s 1515: __rehash_base(__ht), 194s 1515: __hashtable_alloc( 194s 1515: __node_alloc_traits::_S_select_on_copy(__ht._M_node_allocator())), 194s 1515: __enable_default_ctor(__ht), 194s 1515: _M_buckets(nullptr), 194s 1515: _M_bucket_count(__ht._M_bucket_count), 194s 1515: _M_element_count(__ht._M_element_count), 194s 1515: _M_rehash_policy(__ht._M_rehash_policy) 194s 1515: { 194s 1515: _M_assign(__ht); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, 194s 1515: true_type ) 194s 1515: noexcept(_S_nothrow_move()) 194s 1515: : __hashtable_base(__ht), 194s 1515: __map_base(__ht), 194s 1515: __rehash_base(__ht), 194s 1515: __hashtable_alloc(std::move(__a)), 194s 1515: __enable_default_ctor(__ht), 194s 1515: _M_buckets(__ht._M_buckets), 194s 1515: _M_bucket_count(__ht._M_bucket_count), 194s 1515: _M_before_begin(__ht._M_before_begin._M_nxt), 194s 1515: _M_element_count(__ht._M_element_count), 194s 1515: _M_rehash_policy(__ht._M_rehash_policy) 194s 1515: { 194s 1515: 194s 1515: if (__ht._M_uses_single_bucket()) 194s 1515: { 194s 1515: _M_buckets = &_M_single_bucket; 194s 1515: _M_single_bucket = __ht._M_single_bucket; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: _M_update_bbegin(); 194s 1515: 194s 1515: __ht._M_reset(); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _Hashtable(const _Hashtable& __ht, const allocator_type& __a) 194s 1515: : __hashtable_base(__ht), 194s 1515: __map_base(__ht), 194s 1515: __rehash_base(__ht), 194s 1515: __hashtable_alloc(__node_alloc_type(__a)), 194s 1515: __enable_default_ctor(__ht), 194s 1515: _M_buckets(), 194s 1515: _M_bucket_count(__ht._M_bucket_count), 194s 1515: _M_element_count(__ht._M_element_count), 194s 1515: _M_rehash_policy(__ht._M_rehash_policy) 194s 1515: { 194s 1515: _M_assign(__ht); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, 194s 1515: false_type ) 194s 1515: : __hashtable_base(__ht), 194s 1515: __map_base(__ht), 194s 1515: __rehash_base(__ht), 194s 1515: __hashtable_alloc(std::move(__a)), 194s 1515: __enable_default_ctor(__ht), 194s 1515: _M_buckets(nullptr), 194s 1515: _M_bucket_count(__ht._M_bucket_count), 194s 1515: _M_element_count(__ht._M_element_count), 194s 1515: _M_rehash_policy(__ht._M_rehash_policy) 194s 1515: { 194s 1515: if (__ht._M_node_allocator() == this->_M_node_allocator()) 194s 1515: { 194s 1515: if (__ht._M_uses_single_bucket()) 194s 1515: { 194s 1515: _M_buckets = &_M_single_bucket; 194s 1515: _M_single_bucket = __ht._M_single_bucket; 194s 1515: } 194s 1515: else 194s 1515: _M_buckets = __ht._M_buckets; 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_update_bbegin(__ht._M_begin()); 194s 1515: 194s 1515: __ht._M_reset(); 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: using _Fwd_Ht = __conditional_t< 194s 1515: __move_if_noexcept_cond::value, 194s 1515: const _Hashtable&, _Hashtable&&>; 194s 1515: _M_assign(std::forward<_Fwd_Ht>(__ht)); 194s 1515: __ht.clear(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: ~_Hashtable() noexcept 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: static_assert(noexcept(declval() 194s 1515: ._M_bucket_index(declval(), 194s 1515: (std::size_t)0)), 194s 1515: "Cache the hash code or qualify your functors involved" 194s 1515: " in hash code and bucket index computation with noexcept"); 194s 1515: 194s 1515: this->_M_deallocate_nodes(_M_begin()); 194s 1515: _M_deallocate_buckets(); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: swap(_Hashtable& __x) 194s 1515: noexcept(__and_<__is_nothrow_swappable<_Hash>, 194s 1515: __is_nothrow_swappable<_Equal>>::value) 194s 1515: { 194s 1515: using std::swap; 194s 1515: swap(__hash_code_base::_M_hash._M_obj, 194s 1515: __x.__hash_code_base::_M_hash._M_obj); 194s 1515: swap(__hashtable_base::_M_equal._M_obj, 194s 1515: __x.__hashtable_base::_M_equal._M_obj); 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: if constexpr (__node_alloc_traits::propagate_on_container_swap::value) 194s 1515: swap(this->_M_node_allocator(), __x._M_node_allocator()); 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: std::swap(_M_rehash_policy, __x._M_rehash_policy); 194s 1515: 194s 1515: 194s 1515: if (this->_M_uses_single_bucket()) 194s 1515: { 194s 1515: if (!__x._M_uses_single_bucket()) 194s 1515: { 194s 1515: _M_buckets = __x._M_buckets; 194s 1515: __x._M_buckets = &__x._M_single_bucket; 194s 1515: } 194s 1515: } 194s 1515: else if (__x._M_uses_single_bucket()) 194s 1515: { 194s 1515: __x._M_buckets = _M_buckets; 194s 1515: _M_buckets = &_M_single_bucket; 194s 1515: } 194s 1515: else 194s 1515: std::swap(_M_buckets, __x._M_buckets); 194s 1515: 194s 1515: std::swap(_M_bucket_count, __x._M_bucket_count); 194s 1515: std::swap(_M_before_begin._M_nxt, __x._M_before_begin._M_nxt); 194s 1515: std::swap(_M_element_count, __x._M_element_count); 194s 1515: std::swap(_M_single_bucket, __x._M_single_bucket); 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_update_bbegin(); 194s 1515: __x._M_update_bbegin(); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: find(const key_type& __k) 194s 1515: -> iterator 194s 1515: { return iterator(_M_locate(__k)); } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: find(const key_type& __k) const 194s 1515: -> const_iterator 194s 1515: { return const_iterator(_M_locate(__k)); } 194s 1515: # 1981 "/usr/include/c++/15/bits/hashtable.h" 3 4 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: count(const key_type& __k) const 194s 1515: -> size_type 194s 1515: { 194s 1515: auto __it = find(__k); 194s 1515: if (!__it._M_cur) 194s 1515: return 0; 194s 1515: 194s 1515: if (__unique_keys::value) 194s 1515: return 1; 194s 1515: 194s 1515: size_type __result = 1; 194s 1515: for (auto __ref = __it++; 194s 1515: __it._M_cur && this->_M_node_equals(*__ref._M_cur, *__it._M_cur); 194s 1515: ++__it) 194s 1515: ++__result; 194s 1515: 194s 1515: return __result; 194s 1515: } 194s 1515: # 2054 "/usr/include/c++/15/bits/hashtable.h" 3 4 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: equal_range(const key_type& __k) 194s 1515: -> pair 194s 1515: { 194s 1515: auto __ite = find(__k); 194s 1515: if (!__ite._M_cur) 194s 1515: return { __ite, __ite }; 194s 1515: 194s 1515: auto __beg = __ite++; 194s 1515: if (__unique_keys::value) 194s 1515: return { __beg, __ite }; 194s 1515: 194s 1515: while (__ite._M_cur && this->_M_node_equals(*__beg._M_cur, *__ite._M_cur)) 194s 1515: ++__ite; 194s 1515: 194s 1515: return { __beg, __ite }; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: equal_range(const key_type& __k) const 194s 1515: -> pair 194s 1515: { 194s 1515: auto __ite = find(__k); 194s 1515: if (!__ite._M_cur) 194s 1515: return { __ite, __ite }; 194s 1515: 194s 1515: auto __beg = __ite++; 194s 1515: if (__unique_keys::value) 194s 1515: return { __beg, __ite }; 194s 1515: 194s 1515: while (__ite._M_cur && this->_M_node_equals(*__beg._M_cur, *__ite._M_cur)) 194s 1515: ++__ite; 194s 1515: 194s 1515: return { __beg, __ite }; 194s 1515: } 194s 1515: # 2194 "/usr/include/c++/15/bits/hashtable.h" 3 4 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_find_before_node(size_type __bkt, const key_type& __k, 194s 1515: __hash_code __code) const 194s 1515: -> __node_base_ptr 194s 1515: { 194s 1515: __node_base_ptr __prev_p = _M_buckets[__bkt]; 194s 1515: if (!__prev_p) 194s 1515: return nullptr; 194s 1515: 194s 1515: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt);; 194s 1515: __p = __p->_M_next()) 194s 1515: { 194s 1515: if (this->_M_equals(__k, __code, *__p)) 194s 1515: return __prev_p; 194s 1515: 194s 1515: if (__builtin_expect (!__p->_M_nxt || _M_bucket_index(*__p->_M_next()) != __bkt, 0)) 194s 1515: break; 194s 1515: __prev_p = __p; 194s 1515: } 194s 1515: 194s 1515: return nullptr; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_find_before_node_tr(size_type __bkt, const _Kt& __k, 194s 1515: __hash_code __code) const 194s 1515: -> __node_base_ptr 194s 1515: { 194s 1515: __node_base_ptr __prev_p = _M_buckets[__bkt]; 194s 1515: if (!__prev_p) 194s 1515: return nullptr; 194s 1515: 194s 1515: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt);; 194s 1515: __p = __p->_M_next()) 194s 1515: { 194s 1515: if (this->_M_equals_tr(__k, __code, *__p)) 194s 1515: return __prev_p; 194s 1515: 194s 1515: if (__builtin_expect (!__p->_M_nxt || _M_bucket_index(*__p->_M_next()) != __bkt, 0)) 194s 1515: break; 194s 1515: __prev_p = __p; 194s 1515: } 194s 1515: 194s 1515: return nullptr; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: inline auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_locate(const key_type& __k) const 194s 1515: -> __location_type 194s 1515: { 194s 1515: __location_type __loc; 194s 1515: const auto __size = size(); 194s 1515: 194s 1515: if (__size <= __small_size_threshold()) 194s 1515: { 194s 1515: __loc._M_before = pointer_traits<__node_base_ptr>:: 194s 1515: pointer_to(const_cast<__node_base&>(_M_before_begin)); 194s 1515: while (__loc._M_before->_M_nxt) 194s 1515: { 194s 1515: if (this->_M_key_equals(__k, *__loc._M_node())) 194s 1515: return __loc; 194s 1515: __loc._M_before = __loc._M_before->_M_nxt; 194s 1515: } 194s 1515: __loc._M_before = nullptr; 194s 1515: } 194s 1515: 194s 1515: __loc._M_hash_code = this->_M_hash_code(__k); 194s 1515: __loc._M_bucket_index = _M_bucket_index(__loc._M_hash_code); 194s 1515: 194s 1515: if (__size > __small_size_threshold()) 194s 1515: __loc._M_before = _M_find_before_node(__loc._M_bucket_index, __k, 194s 1515: __loc._M_hash_code); 194s 1515: 194s 1515: return __loc; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_get_previous_node(size_type __bkt, __node_ptr __n) 194s 1515: -> __node_base_ptr 194s 1515: { 194s 1515: __node_base_ptr __prev_n = _M_buckets[__bkt]; 194s 1515: while (__prev_n->_M_nxt != __n) 194s 1515: __prev_n = __prev_n->_M_nxt; 194s 1515: return __prev_n; 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_emplace_uniq(_Args&&... __args) 194s 1515: -> pair 194s 1515: { 194s 1515: const key_type* __kp = nullptr; 194s 1515: 194s 1515: if constexpr (sizeof...(_Args) == 1) 194s 1515: { 194s 1515: if constexpr (__is_key_type<_Args...>) 194s 1515: { 194s 1515: const auto& __key = _ExtractKey{}(__args...); 194s 1515: __kp = std::__addressof(__key); 194s 1515: } 194s 1515: } 194s 1515: else if constexpr (sizeof...(_Args) == 2) 194s 1515: { 194s 1515: if constexpr (__is_key_type>) 194s 1515: { 194s 1515: pair __refs(__args...); 194s 1515: const auto& __key = _ExtractKey{}(__refs); 194s 1515: __kp = std::__addressof(__key); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: _Scoped_node __node { __node_ptr(), this }; 194s 1515: __hash_code __code = 0; 194s 1515: size_type __bkt = 0; 194s 1515: 194s 1515: if (__kp == nullptr) 194s 1515: { 194s 1515: 194s 1515: __node._M_node 194s 1515: = this->_M_allocate_node(std::forward<_Args>(__args)...); 194s 1515: const key_type& __key = _ExtractKey{}(__node._M_node->_M_v()); 194s 1515: __kp = std::__addressof(__key); 194s 1515: } 194s 1515: 194s 1515: if (auto __loc = _M_locate(*__kp)) 194s 1515: 194s 1515: return { iterator(__loc), false }; 194s 1515: else 194s 1515: { 194s 1515: __code = __loc._M_hash_code; 194s 1515: __bkt = __loc._M_bucket_index; 194s 1515: } 194s 1515: 194s 1515: if (!__node._M_node) 194s 1515: __node._M_node 194s 1515: = this->_M_allocate_node(std::forward<_Args>(__args)...); 194s 1515: 194s 1515: 194s 1515: auto __pos = _M_insert_unique_node(__bkt, __code, __node._M_node); 194s 1515: __node._M_node = nullptr; 194s 1515: return { __pos, true }; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_emplace_multi(const_iterator __hint, _Args&&... __args) 194s 1515: -> iterator 194s 1515: { 194s 1515: 194s 1515: _Scoped_node __node { this, std::forward<_Args>(__args)... }; 194s 1515: const key_type& __k = _ExtractKey{}(__node._M_node->_M_v()); 194s 1515: 194s 1515: auto __res = this->_M_compute_hash_code(__hint._M_cur, __k); 194s 1515: auto __pos 194s 1515: = _M_insert_multi_node(__res.first, __res.second, __node._M_node); 194s 1515: __node._M_node = nullptr; 194s 1515: return __pos; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_rehash_insert(size_type __n) 194s 1515: { 194s 1515: using __pair_type = std::pair; 194s 1515: if (__n == 0) 194s 1515: return; 194s 1515: 194s 1515: __rehash_guard_t __rehash_guard(_M_rehash_policy); 194s 1515: __pair_type __do_rehash 194s 1515: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, __n); 194s 1515: 194s 1515: if (__do_rehash.first) 194s 1515: _M_rehash(__do_rehash.second, false_type{}); 194s 1515: 194s 1515: __rehash_guard._M_guarded_obj = nullptr; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_insert_range_multi(_InputIterator __first, _InputIterator __last) 194s 1515: { 194s 1515: _M_rehash_insert(__detail::__distance_fw(__first, __last)); 194s 1515: for (; __first != __last; ++__first) 194s 1515: _M_emplace_multi(cend(), *__first); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_compute_hash_code(__node_ptr __hint, const key_type& __k) const 194s 1515: -> pair<__node_ptr, __hash_code> 194s 1515: { 194s 1515: if (size() <= __small_size_threshold()) 194s 1515: { 194s 1515: if (__hint) 194s 1515: { 194s 1515: for (auto __it = __hint; __it; __it = __it->_M_next()) 194s 1515: if (this->_M_key_equals(__k, *__it)) 194s 1515: return { __it, this->_M_hash_code(*__it) }; 194s 1515: } 194s 1515: 194s 1515: for (auto __it = _M_begin(); __it != __hint; __it = __it->_M_next()) 194s 1515: if (this->_M_key_equals(__k, *__it)) 194s 1515: return { __it, this->_M_hash_code(*__it) }; 194s 1515: 194s 1515: __hint = nullptr; 194s 1515: } 194s 1515: 194s 1515: return { __hint, this->_M_hash_code(__k) }; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_insert_unique_node(size_type __bkt, __hash_code __code, 194s 1515: __node_ptr __node, size_type __n_elt) 194s 1515: -> iterator 194s 1515: { 194s 1515: __rehash_guard_t __rehash_guard(_M_rehash_policy); 194s 1515: std::pair __do_rehash 194s 1515: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 194s 1515: __n_elt); 194s 1515: 194s 1515: if (__do_rehash.first) 194s 1515: { 194s 1515: _M_rehash(__do_rehash.second, true_type{}); 194s 1515: __bkt = _M_bucket_index(__code); 194s 1515: } 194s 1515: 194s 1515: __rehash_guard._M_guarded_obj = nullptr; 194s 1515: _M_store_code(*__node, __code); 194s 1515: 194s 1515: 194s 1515: _M_insert_bucket_begin(__bkt, __node); 194s 1515: ++_M_element_count; 194s 1515: return iterator(__node); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_insert_multi_node(__node_ptr __hint, 194s 1515: __hash_code __code, __node_ptr __node) 194s 1515: -> iterator 194s 1515: { 194s 1515: __rehash_guard_t __rehash_guard(_M_rehash_policy); 194s 1515: std::pair __do_rehash 194s 1515: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); 194s 1515: 194s 1515: if (__do_rehash.first) 194s 1515: _M_rehash(__do_rehash.second, false_type{}); 194s 1515: 194s 1515: __rehash_guard._M_guarded_obj = nullptr; 194s 1515: _M_store_code(*__node, __code); 194s 1515: const key_type& __k = _ExtractKey{}(__node->_M_v()); 194s 1515: size_type __bkt = _M_bucket_index(__code); 194s 1515: 194s 1515: 194s 1515: 194s 1515: __node_base_ptr __prev 194s 1515: = __builtin_expect(__hint != nullptr, false) 194s 1515: && this->_M_equals(__k, __code, *__hint) 194s 1515: ? __hint 194s 1515: : _M_find_before_node(__bkt, __k, __code); 194s 1515: 194s 1515: if (__prev) 194s 1515: { 194s 1515: 194s 1515: __node->_M_nxt = __prev->_M_nxt; 194s 1515: __prev->_M_nxt = __node; 194s 1515: if (__builtin_expect(__prev == __hint, false)) 194s 1515: 194s 1515: 194s 1515: if (__node->_M_nxt 194s 1515: && !this->_M_equals(__k, __code, *__node->_M_next())) 194s 1515: { 194s 1515: size_type __next_bkt = _M_bucket_index(*__node->_M_next()); 194s 1515: if (__next_bkt != __bkt) 194s 1515: _M_buckets[__next_bkt] = __node; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: 194s 1515: 194s 1515: 194s 1515: _M_insert_bucket_begin(__bkt, __node); 194s 1515: ++_M_element_count; 194s 1515: return iterator(__node); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: erase(const_iterator __it) 194s 1515: -> iterator 194s 1515: { 194s 1515: __node_ptr __n = __it._M_cur; 194s 1515: std::size_t __bkt = _M_bucket_index(*__n); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __node_base_ptr __prev_n = _M_get_previous_node(__bkt, __n); 194s 1515: return _M_erase(__bkt, __prev_n, __n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_erase(size_type __bkt, __node_base_ptr __prev_n, __node_ptr __n) 194s 1515: -> iterator 194s 1515: { 194s 1515: if (__prev_n == _M_buckets[__bkt]) 194s 1515: _M_remove_bucket_begin(__bkt, __n->_M_next(), 194s 1515: __n->_M_nxt ? _M_bucket_index(*__n->_M_next()) : 0); 194s 1515: else if (__n->_M_nxt) 194s 1515: { 194s 1515: size_type __next_bkt = _M_bucket_index(*__n->_M_next()); 194s 1515: if (__next_bkt != __bkt) 194s 1515: _M_buckets[__next_bkt] = __prev_n; 194s 1515: } 194s 1515: 194s 1515: __prev_n->_M_nxt = __n->_M_nxt; 194s 1515: iterator __result(__n->_M_next()); 194s 1515: this->_M_deallocate_node(__n); 194s 1515: --_M_element_count; 194s 1515: 194s 1515: return __result; 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: erase(const key_type& __k) 194s 1515: -> size_type 194s 1515: { 194s 1515: auto __loc = _M_locate(__k); 194s 1515: if (!__loc) 194s 1515: return 0; 194s 1515: 194s 1515: __node_base_ptr __prev_n = __loc._M_before; 194s 1515: __node_ptr __n = __loc._M_node(); 194s 1515: auto __bkt = __loc._M_bucket_index; 194s 1515: if (__bkt == size_type(-1)) 194s 1515: __bkt = _M_bucket_index(*__n); 194s 1515: 194s 1515: if constexpr (__unique_keys::value) 194s 1515: { 194s 1515: _M_erase(__bkt, __prev_n, __n); 194s 1515: return 1; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __node_ptr __n_last = __n->_M_next(); 194s 1515: while (__n_last && this->_M_node_equals(*__n, *__n_last)) 194s 1515: __n_last = __n_last->_M_next(); 194s 1515: 194s 1515: std::size_t __n_last_bkt 194s 1515: = __n_last ? _M_bucket_index(*__n_last) : __bkt; 194s 1515: 194s 1515: 194s 1515: size_type __result = 0; 194s 1515: do 194s 1515: { 194s 1515: __node_ptr __p = __n->_M_next(); 194s 1515: this->_M_deallocate_node(__n); 194s 1515: __n = __p; 194s 1515: ++__result; 194s 1515: } 194s 1515: while (__n != __n_last); 194s 1515: 194s 1515: _M_element_count -= __result; 194s 1515: if (__prev_n == _M_buckets[__bkt]) 194s 1515: _M_remove_bucket_begin(__bkt, __n_last, __n_last_bkt); 194s 1515: else if (__n_last_bkt != __bkt) 194s 1515: _M_buckets[__n_last_bkt] = __prev_n; 194s 1515: __prev_n->_M_nxt = __n_last; 194s 1515: return __result; 194s 1515: } 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: template 194s 1515: auto 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: erase(const_iterator __first, const_iterator __last) 194s 1515: -> iterator 194s 1515: { 194s 1515: __node_ptr __n = __first._M_cur; 194s 1515: __node_ptr __last_n = __last._M_cur; 194s 1515: if (__n == __last_n) 194s 1515: return iterator(__n); 194s 1515: 194s 1515: std::size_t __bkt = _M_bucket_index(*__n); 194s 1515: 194s 1515: __node_base_ptr __prev_n = _M_get_previous_node(__bkt, __n); 194s 1515: bool __is_bucket_begin = __n == _M_bucket_begin(__bkt); 194s 1515: std::size_t __n_bkt = __bkt; 194s 1515: for (;;) 194s 1515: { 194s 1515: do 194s 1515: { 194s 1515: __node_ptr __tmp = __n; 194s 1515: __n = __n->_M_next(); 194s 1515: this->_M_deallocate_node(__tmp); 194s 1515: --_M_element_count; 194s 1515: if (!__n) 194s 1515: break; 194s 1515: __n_bkt = _M_bucket_index(*__n); 194s 1515: } 194s 1515: while (__n != __last_n && __n_bkt == __bkt); 194s 1515: if (__is_bucket_begin) 194s 1515: _M_remove_bucket_begin(__bkt, __n, __n_bkt); 194s 1515: if (__n == __last_n) 194s 1515: break; 194s 1515: __is_bucket_begin = true; 194s 1515: __bkt = __n_bkt; 194s 1515: } 194s 1515: 194s 1515: if (__n && (__n_bkt != __bkt || __is_bucket_begin)) 194s 1515: _M_buckets[__n_bkt] = __prev_n; 194s 1515: __prev_n->_M_nxt = __n; 194s 1515: return iterator(__n); 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: clear() noexcept 194s 1515: { 194s 1515: this->_M_deallocate_nodes(_M_begin()); 194s 1515: std::fill_n(_M_buckets, _M_bucket_count, nullptr); 194s 1515: _M_element_count = 0; 194s 1515: _M_before_begin._M_nxt = nullptr; 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: rehash(size_type __bkt_count) 194s 1515: { 194s 1515: __rehash_guard_t __rehash_guard(_M_rehash_policy); 194s 1515: __bkt_count 194s 1515: = std::max(_M_rehash_policy._M_bkt_for_elements(_M_element_count + 1), 194s 1515: __bkt_count); 194s 1515: __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count); 194s 1515: 194s 1515: if (__bkt_count != _M_bucket_count) 194s 1515: { 194s 1515: _M_rehash(__bkt_count, __unique_keys{}); 194s 1515: __rehash_guard._M_guarded_obj = nullptr; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_rehash(size_type __bkt_count, true_type ) 194s 1515: { 194s 1515: __buckets_ptr __new_buckets = _M_allocate_buckets(__bkt_count); 194s 1515: __node_ptr __p = _M_begin(); 194s 1515: _M_before_begin._M_nxt = nullptr; 194s 1515: std::size_t __bbegin_bkt = 0; 194s 1515: while (__p) 194s 1515: { 194s 1515: __node_ptr __next = __p->_M_next(); 194s 1515: std::size_t __bkt 194s 1515: = __hash_code_base::_M_bucket_index(*__p, __bkt_count); 194s 1515: if (!__new_buckets[__bkt]) 194s 1515: { 194s 1515: __p->_M_nxt = _M_before_begin._M_nxt; 194s 1515: _M_before_begin._M_nxt = __p; 194s 1515: __new_buckets[__bkt] = &_M_before_begin; 194s 1515: if (__p->_M_nxt) 194s 1515: __new_buckets[__bbegin_bkt] = __p; 194s 1515: __bbegin_bkt = __bkt; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; 194s 1515: __new_buckets[__bkt]->_M_nxt = __p; 194s 1515: } 194s 1515: 194s 1515: __p = __next; 194s 1515: } 194s 1515: 194s 1515: _M_deallocate_buckets(); 194s 1515: _M_bucket_count = __bkt_count; 194s 1515: _M_buckets = __new_buckets; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: void 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_rehash(size_type __bkt_count, false_type ) 194s 1515: { 194s 1515: __buckets_ptr __new_buckets = _M_allocate_buckets(__bkt_count); 194s 1515: __node_ptr __p = _M_begin(); 194s 1515: _M_before_begin._M_nxt = nullptr; 194s 1515: std::size_t __bbegin_bkt = 0; 194s 1515: std::size_t __prev_bkt = 0; 194s 1515: __node_ptr __prev_p = nullptr; 194s 1515: bool __check_bucket = false; 194s 1515: 194s 1515: while (__p) 194s 1515: { 194s 1515: __node_ptr __next = __p->_M_next(); 194s 1515: std::size_t __bkt 194s 1515: = __hash_code_base::_M_bucket_index(*__p, __bkt_count); 194s 1515: 194s 1515: if (__prev_p && __prev_bkt == __bkt) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: __p->_M_nxt = __prev_p->_M_nxt; 194s 1515: __prev_p->_M_nxt = __p; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: __check_bucket = true; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: if (__check_bucket) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: if (__prev_p->_M_nxt) 194s 1515: { 194s 1515: std::size_t __next_bkt 194s 1515: = __hash_code_base::_M_bucket_index( 194s 1515: *__prev_p->_M_next(), __bkt_count); 194s 1515: if (__next_bkt != __prev_bkt) 194s 1515: __new_buckets[__next_bkt] = __prev_p; 194s 1515: } 194s 1515: __check_bucket = false; 194s 1515: } 194s 1515: 194s 1515: if (!__new_buckets[__bkt]) 194s 1515: { 194s 1515: __p->_M_nxt = _M_before_begin._M_nxt; 194s 1515: _M_before_begin._M_nxt = __p; 194s 1515: __new_buckets[__bkt] = &_M_before_begin; 194s 1515: if (__p->_M_nxt) 194s 1515: __new_buckets[__bbegin_bkt] = __p; 194s 1515: __bbegin_bkt = __bkt; 194s 1515: } 194s 1515: else 194s 1515: { 194s 1515: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; 194s 1515: __new_buckets[__bkt]->_M_nxt = __p; 194s 1515: } 194s 1515: } 194s 1515: __prev_p = __p; 194s 1515: __prev_bkt = __bkt; 194s 1515: __p = __next; 194s 1515: } 194s 1515: 194s 1515: if (__check_bucket && __prev_p->_M_nxt) 194s 1515: { 194s 1515: std::size_t __next_bkt 194s 1515: = __hash_code_base::_M_bucket_index(*__prev_p->_M_next(), 194s 1515: __bkt_count); 194s 1515: if (__next_bkt != __prev_bkt) 194s 1515: __new_buckets[__next_bkt] = __prev_p; 194s 1515: } 194s 1515: 194s 1515: _M_deallocate_buckets(); 194s 1515: _M_bucket_count = __bkt_count; 194s 1515: _M_buckets = __new_buckets; 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic push 194s 1515: #pragma GCC diagnostic ignored "-Wc++17-extensions" 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: bool 194s 1515: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 194s 1515: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 194s 1515: _M_equal(const _Hashtable& __other) const 194s 1515: { 194s 1515: if (size() != __other.size()) 194s 1515: return false; 194s 1515: 194s 1515: if constexpr (__unique_keys::value) 194s 1515: for (auto __x_n = _M_begin(); __x_n; __x_n = __x_n->_M_next()) 194s 1515: { 194s 1515: std::size_t __ybkt = __other._M_bucket_index_ext(*__x_n); 194s 1515: auto __prev_n = __other._M_buckets[__ybkt]; 194s 1515: if (!__prev_n) 194s 1515: return false; 194s 1515: 194s 1515: for (__node_ptr __n = static_cast<__node_ptr>(__prev_n->_M_nxt);; 194s 1515: __n = __n->_M_next()) 194s 1515: { 194s 1515: if (__n->_M_v() == __x_n->_M_v()) 194s 1515: break; 194s 1515: 194s 1515: if (!__n->_M_nxt 194s 1515: || __other._M_bucket_index(*__n->_M_next()) != __ybkt) 194s 1515: return false; 194s 1515: } 194s 1515: } 194s 1515: else 194s 1515: for (auto __x_n = _M_begin(); __x_n;) 194s 1515: { 194s 1515: std::size_t __x_count = 1; 194s 1515: auto __x_n_end = __x_n->_M_next(); 194s 1515: for (; __x_n_end 194s 1515: && key_eq()(_ExtractKey{}(__x_n->_M_v()), 194s 1515: _ExtractKey{}(__x_n_end->_M_v())); 194s 1515: __x_n_end = __x_n_end->_M_next()) 194s 1515: ++__x_count; 194s 1515: 194s 1515: std::size_t __ybkt = __other._M_bucket_index_ext(*__x_n); 194s 1515: auto __y_prev_n = __other._M_buckets[__ybkt]; 194s 1515: if (!__y_prev_n) 194s 1515: return false; 194s 1515: 194s 1515: __node_ptr __y_n = static_cast<__node_ptr>(__y_prev_n->_M_nxt); 194s 1515: for (;;) 194s 1515: { 194s 1515: if (key_eq()(_ExtractKey{}(__y_n->_M_v()), 194s 1515: _ExtractKey{}(__x_n->_M_v()))) 194s 1515: break; 194s 1515: 194s 1515: auto __y_ref_n = __y_n; 194s 1515: for (__y_n = __y_n->_M_next(); __y_n; __y_n = __y_n->_M_next()) 194s 1515: if (!__other._M_node_equals(*__y_ref_n, *__y_n)) 194s 1515: break; 194s 1515: 194s 1515: if (!__y_n || __other._M_bucket_index(*__y_n) != __ybkt) 194s 1515: return false; 194s 1515: } 194s 1515: 194s 1515: auto __y_n_end = __y_n; 194s 1515: for (; __y_n_end; __y_n_end = __y_n_end->_M_next()) 194s 1515: if (--__x_count == 0) 194s 1515: break; 194s 1515: 194s 1515: if (__x_count != 0) 194s 1515: return false; 194s 1515: 194s 1515: const_iterator __itx(__x_n), __itx_end(__x_n_end); 194s 1515: const_iterator __ity(__y_n); 194s 1515: if (!std::is_permutation(__itx, __itx_end, __ity)) 194s 1515: return false; 194s 1515: 194s 1515: __x_n = __x_n_end; 194s 1515: } 194s 1515: 194s 1515: return true; 194s 1515: } 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 2978 "/usr/include/c++/15/bits/hashtable.h" 3 4 194s 1515: 194s 1515: } 194s 1515: 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 34 "/usr/include/c++/15/bits/unordered_set.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace std __attribute__ ((__visibility__ ("default"))) 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __uset_traits = __detail::_Hashtable_traits<_Cache, true, true>; 194s 1515: 194s 1515: template, 194s 1515: typename _Pred = std::equal_to<_Value>, 194s 1515: typename _Alloc = std::allocator<_Value>, 194s 1515: typename _Tr = __uset_traits<__cache_default<_Value, _Hash>::value>> 194s 1515: using __uset_hashtable = _Hashtable<_Value, _Value, _Alloc, 194s 1515: __detail::_Identity, _Pred, _Hash, 194s 1515: __detail::_Mod_range_hashing, 194s 1515: __detail::_Default_ranged_hash, 194s 1515: __detail::_Prime_rehash_policy, _Tr>; 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using __umset_traits = __detail::_Hashtable_traits<_Cache, true, false>; 194s 1515: 194s 1515: template, 194s 1515: typename _Pred = std::equal_to<_Value>, 194s 1515: typename _Alloc = std::allocator<_Value>, 194s 1515: typename _Tr = __umset_traits<__cache_default<_Value, _Hash>::value>> 194s 1515: using __umset_hashtable = _Hashtable<_Value, _Value, _Alloc, 194s 1515: __detail::_Identity, 194s 1515: _Pred, _Hash, 194s 1515: __detail::_Mod_range_hashing, 194s 1515: __detail::_Default_ranged_hash, 194s 1515: __detail::_Prime_rehash_policy, _Tr>; 194s 1515: 194s 1515: template 194s 1515: class unordered_multiset; 194s 1515: # 103 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template, 194s 1515: typename _Pred = equal_to<_Value>, 194s 1515: typename _Alloc = allocator<_Value>> 194s 1515: class unordered_set 194s 1515: { 194s 1515: typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; 194s 1515: _Hashtable _M_h; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename _Hashtable::key_type key_type; 194s 1515: typedef typename _Hashtable::value_type value_type; 194s 1515: typedef typename _Hashtable::hasher hasher; 194s 1515: typedef typename _Hashtable::key_equal key_equal; 194s 1515: typedef typename _Hashtable::allocator_type allocator_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename _Hashtable::pointer pointer; 194s 1515: typedef typename _Hashtable::const_pointer const_pointer; 194s 1515: typedef typename _Hashtable::reference reference; 194s 1515: typedef typename _Hashtable::const_reference const_reference; 194s 1515: typedef typename _Hashtable::iterator iterator; 194s 1515: typedef typename _Hashtable::const_iterator const_iterator; 194s 1515: typedef typename _Hashtable::local_iterator local_iterator; 194s 1515: typedef typename _Hashtable::const_local_iterator const_local_iterator; 194s 1515: typedef typename _Hashtable::size_type size_type; 194s 1515: typedef typename _Hashtable::difference_type difference_type; 194s 1515: # 145 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: unordered_set() = default; 194s 1515: # 154 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: explicit 194s 1515: unordered_set(size_type __n, 194s 1515: const hasher& __hf = hasher(), 194s 1515: const key_equal& __eql = key_equal(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_h(__n, __hf, __eql, __a) 194s 1515: { } 194s 1515: # 175 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template 194s 1515: unordered_set(_InputIterator __first, _InputIterator __last, 194s 1515: size_type __n = 0, 194s 1515: const hasher& __hf = hasher(), 194s 1515: const key_equal& __eql = key_equal(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_h(__first, __last, __n, __hf, __eql, __a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: unordered_set(const unordered_set&) = default; 194s 1515: 194s 1515: 194s 1515: unordered_set(unordered_set&&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: unordered_set(const allocator_type& __a) 194s 1515: : _M_h(__a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: unordered_set(const unordered_set& __uset, 194s 1515: const allocator_type& __a) 194s 1515: : _M_h(__uset._M_h, __a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: unordered_set(unordered_set&& __uset, 194s 1515: const allocator_type& __a) 194s 1515: noexcept( noexcept(_Hashtable(std::move(__uset._M_h), __a)) ) 194s 1515: : _M_h(std::move(__uset._M_h), __a) 194s 1515: { } 194s 1515: # 231 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: unordered_set(initializer_list __l, 194s 1515: size_type __n = 0, 194s 1515: const hasher& __hf = hasher(), 194s 1515: const key_equal& __eql = key_equal(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_h(__l, __n, __hf, __eql, __a) 194s 1515: { } 194s 1515: 194s 1515: unordered_set(size_type __n, const allocator_type& __a) 194s 1515: : unordered_set(__n, hasher(), key_equal(), __a) 194s 1515: { } 194s 1515: 194s 1515: unordered_set(size_type __n, const hasher& __hf, 194s 1515: const allocator_type& __a) 194s 1515: : unordered_set(__n, __hf, key_equal(), __a) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: unordered_set(_InputIterator __first, _InputIterator __last, 194s 1515: size_type __n, 194s 1515: const allocator_type& __a) 194s 1515: : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: unordered_set(_InputIterator __first, _InputIterator __last, 194s 1515: size_type __n, const hasher& __hf, 194s 1515: const allocator_type& __a) 194s 1515: : unordered_set(__first, __last, __n, __hf, key_equal(), __a) 194s 1515: { } 194s 1515: 194s 1515: unordered_set(initializer_list __l, 194s 1515: size_type __n, 194s 1515: const allocator_type& __a) 194s 1515: : unordered_set(__l, __n, hasher(), key_equal(), __a) 194s 1515: { } 194s 1515: 194s 1515: unordered_set(initializer_list __l, 194s 1515: size_type __n, const hasher& __hf, 194s 1515: const allocator_type& __a) 194s 1515: : unordered_set(__l, __n, __hf, key_equal(), __a) 194s 1515: { } 194s 1515: # 318 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: unordered_set& 194s 1515: operator=(const unordered_set&) = default; 194s 1515: 194s 1515: 194s 1515: unordered_set& 194s 1515: operator=(unordered_set&&) = default; 194s 1515: # 336 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: unordered_set& 194s 1515: operator=(initializer_list __l) 194s 1515: { 194s 1515: _M_h = __l; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return _M_h.get_allocator(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] bool 194s 1515: empty() const noexcept 194s 1515: { return _M_h.empty(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { return _M_h.size(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { return _M_h.max_size(); } 194s 1515: # 372 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: begin() noexcept 194s 1515: { return _M_h.begin(); } 194s 1515: 194s 1515: const_iterator 194s 1515: begin() const noexcept 194s 1515: { return _M_h.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: end() noexcept 194s 1515: { return _M_h.end(); } 194s 1515: 194s 1515: const_iterator 194s 1515: end() const noexcept 194s 1515: { return _M_h.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: cbegin() const noexcept 194s 1515: { return _M_h.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: cend() const noexcept 194s 1515: { return _M_h.end(); } 194s 1515: # 428 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template 194s 1515: std::pair 194s 1515: emplace(_Args&&... __args) 194s 1515: { return _M_h.emplace(std::forward<_Args>(__args)...); } 194s 1515: # 454 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template 194s 1515: iterator 194s 1515: emplace_hint(const_iterator __pos, _Args&&... __args) 194s 1515: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } 194s 1515: # 473 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: std::pair 194s 1515: insert(const value_type& __x) 194s 1515: { return _M_h.insert(__x); } 194s 1515: 194s 1515: std::pair 194s 1515: insert(value_type&& __x) 194s 1515: { return _M_h.insert(std::move(__x)); } 194s 1515: # 502 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: insert(const_iterator __hint, const value_type& __x) 194s 1515: { return _M_h.insert(__hint, __x); } 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __hint, value_type&& __x) 194s 1515: { return _M_h.insert(__hint, std::move(__x)); } 194s 1515: # 520 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: insert(_InputIterator __first, _InputIterator __last) 194s 1515: { _M_h.insert(__first, __last); } 194s 1515: # 532 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: void 194s 1515: insert(initializer_list __l) 194s 1515: { _M_h.insert(__l); } 194s 1515: # 593 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: erase(const_iterator __position) 194s 1515: { return _M_h.erase(__position); } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: erase(iterator __position) 194s 1515: { return _M_h.erase(__position); } 194s 1515: # 615 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: size_type 194s 1515: erase(const key_type& __x) 194s 1515: { return _M_h.erase(__x); } 194s 1515: # 633 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: erase(const_iterator __first, const_iterator __last) 194s 1515: { return _M_h.erase(__first, __last); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { _M_h.clear(); } 194s 1515: # 656 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: void 194s 1515: swap(unordered_set& __x) 194s 1515: noexcept( noexcept(_M_h.swap(__x._M_h)) ) 194s 1515: { _M_h.swap(__x._M_h); } 194s 1515: # 703 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: hasher 194s 1515: hash_function() const 194s 1515: { return _M_h.hash_function(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: key_equal 194s 1515: key_eq() const 194s 1515: { return _M_h.key_eq(); } 194s 1515: # 727 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: find(const key_type& __x) 194s 1515: { return _M_h.find(__x); } 194s 1515: # 739 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: const_iterator 194s 1515: find(const key_type& __x) const 194s 1515: { return _M_h.find(__x); } 194s 1515: # 762 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: size_type 194s 1515: count(const key_type& __x) const 194s 1515: { return _M_h.count(__x); } 194s 1515: # 803 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) 194s 1515: { return _M_h.equal_range(__x); } 194s 1515: # 815 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) const 194s 1515: { return _M_h.equal_range(__x); } 194s 1515: # 831 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: size_type 194s 1515: bucket_count() const noexcept 194s 1515: { return _M_h.bucket_count(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: max_bucket_count() const noexcept 194s 1515: { return _M_h.max_bucket_count(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: bucket_size(size_type __n) const 194s 1515: { return _M_h.bucket_size(__n); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: bucket(const key_type& __key) const 194s 1515: { return _M_h.bucket(__key); } 194s 1515: # 865 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: local_iterator 194s 1515: begin(size_type __n) 194s 1515: { return _M_h.begin(__n); } 194s 1515: 194s 1515: const_local_iterator 194s 1515: begin(size_type __n) const 194s 1515: { return _M_h.begin(__n); } 194s 1515: 194s 1515: const_local_iterator 194s 1515: cbegin(size_type __n) const 194s 1515: { return _M_h.cbegin(__n); } 194s 1515: # 885 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: local_iterator 194s 1515: end(size_type __n) 194s 1515: { return _M_h.end(__n); } 194s 1515: 194s 1515: const_local_iterator 194s 1515: end(size_type __n) const 194s 1515: { return _M_h.end(__n); } 194s 1515: 194s 1515: const_local_iterator 194s 1515: cend(size_type __n) const 194s 1515: { return _M_h.cend(__n); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: float 194s 1515: load_factor() const noexcept 194s 1515: { return _M_h.load_factor(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: float 194s 1515: max_load_factor() const noexcept 194s 1515: { return _M_h.max_load_factor(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: max_load_factor(float __z) 194s 1515: { _M_h.max_load_factor(__z); } 194s 1515: # 926 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: void 194s 1515: rehash(size_type __n) 194s 1515: { _M_h.rehash(__n); } 194s 1515: # 937 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: void 194s 1515: reserve(size_type __n) 194s 1515: { _M_h.reserve(__n); } 194s 1515: 194s 1515: template 194s 1515: friend bool 194s 1515: operator==(const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&, 194s 1515: const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&); 194s 1515: }; 194s 1515: # 1074 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template, 194s 1515: typename _Pred = equal_to<_Value>, 194s 1515: typename _Alloc = allocator<_Value>> 194s 1515: class unordered_multiset 194s 1515: { 194s 1515: typedef __umset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; 194s 1515: _Hashtable _M_h; 194s 1515: 194s 1515: public: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename _Hashtable::key_type key_type; 194s 1515: typedef typename _Hashtable::value_type value_type; 194s 1515: typedef typename _Hashtable::hasher hasher; 194s 1515: typedef typename _Hashtable::key_equal key_equal; 194s 1515: typedef typename _Hashtable::allocator_type allocator_type; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef typename _Hashtable::pointer pointer; 194s 1515: typedef typename _Hashtable::const_pointer const_pointer; 194s 1515: typedef typename _Hashtable::reference reference; 194s 1515: typedef typename _Hashtable::const_reference const_reference; 194s 1515: typedef typename _Hashtable::iterator iterator; 194s 1515: typedef typename _Hashtable::const_iterator const_iterator; 194s 1515: typedef typename _Hashtable::local_iterator local_iterator; 194s 1515: typedef typename _Hashtable::const_local_iterator const_local_iterator; 194s 1515: typedef typename _Hashtable::size_type size_type; 194s 1515: typedef typename _Hashtable::difference_type difference_type; 194s 1515: # 1115 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: unordered_multiset() = default; 194s 1515: # 1124 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: explicit 194s 1515: unordered_multiset(size_type __n, 194s 1515: const hasher& __hf = hasher(), 194s 1515: const key_equal& __eql = key_equal(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_h(__n, __hf, __eql, __a) 194s 1515: { } 194s 1515: # 1145 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template 194s 1515: unordered_multiset(_InputIterator __first, _InputIterator __last, 194s 1515: size_type __n = 0, 194s 1515: const hasher& __hf = hasher(), 194s 1515: const key_equal& __eql = key_equal(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_h(__first, __last, __n, __hf, __eql, __a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: unordered_multiset(const unordered_multiset&) = default; 194s 1515: 194s 1515: 194s 1515: unordered_multiset(unordered_multiset&&) = default; 194s 1515: # 1171 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: unordered_multiset(initializer_list __l, 194s 1515: size_type __n = 0, 194s 1515: const hasher& __hf = hasher(), 194s 1515: const key_equal& __eql = key_equal(), 194s 1515: const allocator_type& __a = allocator_type()) 194s 1515: : _M_h(__l, __n, __hf, __eql, __a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: unordered_multiset& 194s 1515: operator=(const unordered_multiset&) = default; 194s 1515: 194s 1515: 194s 1515: unordered_multiset& 194s 1515: operator=(unordered_multiset&&) = default; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: explicit 194s 1515: unordered_multiset(const allocator_type& __a) 194s 1515: : _M_h(__a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: unordered_multiset(const unordered_multiset& __umset, 194s 1515: const allocator_type& __a) 194s 1515: : _M_h(__umset._M_h, __a) 194s 1515: { } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: unordered_multiset(unordered_multiset&& __umset, 194s 1515: const allocator_type& __a) 194s 1515: noexcept( noexcept(_Hashtable(std::move(__umset._M_h), __a)) ) 194s 1515: : _M_h(std::move(__umset._M_h), __a) 194s 1515: { } 194s 1515: 194s 1515: unordered_multiset(size_type __n, const allocator_type& __a) 194s 1515: : unordered_multiset(__n, hasher(), key_equal(), __a) 194s 1515: { } 194s 1515: 194s 1515: unordered_multiset(size_type __n, const hasher& __hf, 194s 1515: const allocator_type& __a) 194s 1515: : unordered_multiset(__n, __hf, key_equal(), __a) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: unordered_multiset(_InputIterator __first, _InputIterator __last, 194s 1515: size_type __n, 194s 1515: const allocator_type& __a) 194s 1515: : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) 194s 1515: { } 194s 1515: 194s 1515: template 194s 1515: unordered_multiset(_InputIterator __first, _InputIterator __last, 194s 1515: size_type __n, const hasher& __hf, 194s 1515: const allocator_type& __a) 194s 1515: : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) 194s 1515: { } 194s 1515: 194s 1515: unordered_multiset(initializer_list __l, 194s 1515: size_type __n, 194s 1515: const allocator_type& __a) 194s 1515: : unordered_multiset(__l, __n, hasher(), key_equal(), __a) 194s 1515: { } 194s 1515: 194s 1515: unordered_multiset(initializer_list __l, 194s 1515: size_type __n, const hasher& __hf, 194s 1515: const allocator_type& __a) 194s 1515: : unordered_multiset(__l, __n, __hf, key_equal(), __a) 194s 1515: { } 194s 1515: # 1308 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: unordered_multiset& 194s 1515: operator=(initializer_list __l) 194s 1515: { 194s 1515: _M_h = __l; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: allocator_type 194s 1515: get_allocator() const noexcept 194s 1515: { return _M_h.get_allocator(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: [[__nodiscard__]] bool 194s 1515: empty() const noexcept 194s 1515: { return _M_h.empty(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: size() const noexcept 194s 1515: { return _M_h.size(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: max_size() const noexcept 194s 1515: { return _M_h.max_size(); } 194s 1515: # 1344 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: begin() noexcept 194s 1515: { return _M_h.begin(); } 194s 1515: 194s 1515: const_iterator 194s 1515: begin() const noexcept 194s 1515: { return _M_h.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: end() noexcept 194s 1515: { return _M_h.end(); } 194s 1515: 194s 1515: const_iterator 194s 1515: end() const noexcept 194s 1515: { return _M_h.end(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: cbegin() const noexcept 194s 1515: { return _M_h.begin(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: const_iterator 194s 1515: cend() const noexcept 194s 1515: { return _M_h.end(); } 194s 1515: # 1392 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template 194s 1515: iterator 194s 1515: emplace(_Args&&... __args) 194s 1515: { return _M_h.emplace(std::forward<_Args>(__args)...); } 194s 1515: # 1414 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template 194s 1515: iterator 194s 1515: emplace_hint(const_iterator __pos, _Args&&... __args) 194s 1515: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } 194s 1515: # 1427 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: insert(const value_type& __x) 194s 1515: { return _M_h.insert(__x); } 194s 1515: 194s 1515: iterator 194s 1515: insert(value_type&& __x) 194s 1515: { return _M_h.insert(std::move(__x)); } 194s 1515: # 1453 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: insert(const_iterator __hint, const value_type& __x) 194s 1515: { return _M_h.insert(__hint, __x); } 194s 1515: 194s 1515: iterator 194s 1515: insert(const_iterator __hint, value_type&& __x) 194s 1515: { return _M_h.insert(__hint, std::move(__x)); } 194s 1515: # 1470 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template 194s 1515: void 194s 1515: insert(_InputIterator __first, _InputIterator __last) 194s 1515: { _M_h.insert(__first, __last); } 194s 1515: # 1482 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: void 194s 1515: insert(initializer_list __l) 194s 1515: { _M_h.insert(__l); } 194s 1515: # 1552 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: erase(const_iterator __position) 194s 1515: { return _M_h.erase(__position); } 194s 1515: 194s 1515: 194s 1515: iterator 194s 1515: erase(iterator __position) 194s 1515: { return _M_h.erase(__position); } 194s 1515: # 1575 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: size_type 194s 1515: erase(const key_type& __x) 194s 1515: { return _M_h.erase(__x); } 194s 1515: # 1595 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: erase(const_iterator __first, const_iterator __last) 194s 1515: { return _M_h.erase(__first, __last); } 194s 1515: # 1606 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: void 194s 1515: clear() noexcept 194s 1515: { _M_h.clear(); } 194s 1515: # 1619 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: void 194s 1515: swap(unordered_multiset& __x) 194s 1515: noexcept( noexcept(_M_h.swap(__x._M_h)) ) 194s 1515: { _M_h.swap(__x._M_h); } 194s 1515: # 1669 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: hasher 194s 1515: hash_function() const 194s 1515: { return _M_h.hash_function(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: key_equal 194s 1515: key_eq() const 194s 1515: { return _M_h.key_eq(); } 194s 1515: # 1693 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: iterator 194s 1515: find(const key_type& __x) 194s 1515: { return _M_h.find(__x); } 194s 1515: # 1705 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: const_iterator 194s 1515: find(const key_type& __x) const 194s 1515: { return _M_h.find(__x); } 194s 1515: # 1724 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: size_type 194s 1515: count(const key_type& __x) const 194s 1515: { return _M_h.count(__x); } 194s 1515: # 1762 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) 194s 1515: { return _M_h.equal_range(__x); } 194s 1515: # 1774 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: std::pair 194s 1515: equal_range(const key_type& __x) const 194s 1515: { return _M_h.equal_range(__x); } 194s 1515: # 1790 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: size_type 194s 1515: bucket_count() const noexcept 194s 1515: { return _M_h.bucket_count(); } 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: max_bucket_count() const noexcept 194s 1515: { return _M_h.max_bucket_count(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: bucket_size(size_type __n) const 194s 1515: { return _M_h.bucket_size(__n); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: size_type 194s 1515: bucket(const key_type& __key) const 194s 1515: { return _M_h.bucket(__key); } 194s 1515: # 1824 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: local_iterator 194s 1515: begin(size_type __n) 194s 1515: { return _M_h.begin(__n); } 194s 1515: 194s 1515: const_local_iterator 194s 1515: begin(size_type __n) const 194s 1515: { return _M_h.begin(__n); } 194s 1515: 194s 1515: const_local_iterator 194s 1515: cbegin(size_type __n) const 194s 1515: { return _M_h.cbegin(__n); } 194s 1515: # 1844 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: local_iterator 194s 1515: end(size_type __n) 194s 1515: { return _M_h.end(__n); } 194s 1515: 194s 1515: const_local_iterator 194s 1515: end(size_type __n) const 194s 1515: { return _M_h.end(__n); } 194s 1515: 194s 1515: const_local_iterator 194s 1515: cend(size_type __n) const 194s 1515: { return _M_h.cend(__n); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: float 194s 1515: load_factor() const noexcept 194s 1515: { return _M_h.load_factor(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: float 194s 1515: max_load_factor() const noexcept 194s 1515: { return _M_h.max_load_factor(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void 194s 1515: max_load_factor(float __z) 194s 1515: { _M_h.max_load_factor(__z); } 194s 1515: # 1885 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: void 194s 1515: rehash(size_type __n) 194s 1515: { _M_h.rehash(__n); } 194s 1515: # 1896 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: void 194s 1515: reserve(size_type __n) 194s 1515: { _M_h.reserve(__n); } 194s 1515: 194s 1515: template 194s 1515: friend bool 194s 1515: operator==(const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&, 194s 1515: const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&); 194s 1515: }; 194s 1515: # 2020 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: template 194s 1515: inline void 194s 1515: swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, 194s 1515: unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) 194s 1515: noexcept(noexcept(__x.swap(__y))) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: template 194s 1515: inline void 194s 1515: swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, 194s 1515: unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) 194s 1515: noexcept(noexcept(__x.swap(__y))) 194s 1515: { __x.swap(__y); } 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, 194s 1515: const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) 194s 1515: { return __x._M_h._M_equal(__y._M_h); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, 194s 1515: const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, 194s 1515: const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) 194s 1515: { return __x._M_h._M_equal(__y._M_h); } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: inline bool 194s 1515: operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, 194s 1515: const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) 194s 1515: { return !(__x == __y); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 2113 "/usr/include/c++/15/bits/unordered_set.h" 3 4 194s 1515: 194s 1515: } 194s 1515: # 44 "/usr/include/c++/15/unordered_set" 2 3 4 194s 1515: # 57 "/usr/include/c++/15/unordered_set" 3 4 194s 1515: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 194s 1515: # 58 "/usr/include/c++/15/unordered_set" 2 3 4 194s 1515: # 3185 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: 194s 1515: 194s 1515: # 1 "/usr/include/c++/15/csignal" 1 3 4 194s 1515: # 52 "/usr/include/c++/15/csignal" 3 4 194s 1515: namespace std 194s 1515: { 194s 1515: using ::sig_atomic_t; 194s 1515: using ::signal; 194s 1515: using ::raise; 194s 1515: } 194s 1515: # 3188 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: # 1 "/usr/include/c++/15/cfloat" 1 3 4 194s 1515: # 47 "/usr/include/c++/15/cfloat" 3 4 194s 1515: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/float.h" 1 3 4 194s 1515: # 48 "/usr/include/c++/15/cfloat" 2 3 4 194s 1515: # 3189 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: # 3221 "/usr/include/doctest/doctest.h" 3 4 194s 1515: # 1 "/usr/include/arm-linux-gnueabihf/sys/time.h" 1 3 4 194s 1515: # 34 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 194s 1515: extern "C" { 194s 1515: # 52 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 194s 1515: struct timezone 194s 1515: { 194s 1515: int tz_minuteswest; 194s 1515: int tz_dsttime; 194s 1515: }; 194s 1515: # 71 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 194s 1515: extern int gettimeofday (struct timeval *__restrict __tv, void *__restrict __tz) noexcept (true) __asm__ ("" "__gettimeofday64") 194s 1515: 194s 1515: __attribute__ ((__nonnull__ (1))); 194s 1515: # 98 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 194s 1515: extern int settimeofday (const struct timeval *__tv, const struct timezone *__tz) noexcept (true) __asm__ ("" "__settimeofday64") 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: extern int adjtime (const struct timeval *__delta, struct timeval *__olddelta) noexcept (true) __asm__ ("" "__adjtime64") 194s 1515: 194s 1515: ; 194s 1515: # 114 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 194s 1515: enum __itimer_which 194s 1515: { 194s 1515: 194s 1515: ITIMER_REAL = 0, 194s 1515: 194s 1515: 194s 1515: ITIMER_VIRTUAL = 1, 194s 1515: 194s 1515: 194s 1515: 194s 1515: ITIMER_PROF = 2 194s 1515: 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct itimerval 194s 1515: { 194s 1515: 194s 1515: struct timeval it_interval; 194s 1515: 194s 1515: struct timeval it_value; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: typedef int __itimer_which_t; 194s 1515: # 167 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 194s 1515: extern int getitimer (__itimer_which_t __which, struct itimerval *__value) noexcept (true) __asm__ ("" "__getitimer64") 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: extern int setitimer (__itimer_which_t __which, const struct itimerval *__restrict __new, struct itimerval *__restrict __old) noexcept (true) __asm__ ("" "__setitimer64") 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: 194s 1515: extern int utimes (const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__utimes64") 194s 1515: 194s 1515: __attribute__ ((__nonnull__ (1))); 194s 1515: # 196 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 194s 1515: extern int lutimes (const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__lutimes64") 194s 1515: 194s 1515: __attribute__ ((__nonnull__ (1))); 194s 1515: 194s 1515: extern int futimes (int __fd, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__futimes64") 194s 1515: ; 194s 1515: # 218 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 194s 1515: extern int futimesat (int __fd, const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__futimesat64") 194s 1515: 194s 1515: ; 194s 1515: # 258 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 194s 1515: } 194s 1515: # 3222 "/usr/include/doctest/doctest.h" 2 3 4 194s 1515: # 3232 "/usr/include/doctest/doctest.h" 3 4 194s 1515: 194s 1515: # 3281 "/usr/include/doctest/doctest.h" 3 4 194s 1515: namespace doctest { 194s 1515: 194s 1515: bool is_running_in_test = false; 194s 1515: 194s 1515: namespace { 194s 1515: using namespace detail; 194s 1515: 194s 1515: template 194s 1515: [[noreturn]] void throw_exception(Ex const& e) { 194s 1515: 194s 1515: throw e; 194s 1515: # 3303 "/usr/include/doctest/doctest.h" 3 4 194s 1515: } 194s 1515: # 3312 "/usr/include/doctest/doctest.h" 3 4 194s 1515: int stricmp(const char* a, const char* b) { 194s 1515: for(;; a++, b++) { 194s 1515: const int d = tolower(*a) - tolower(*b); 194s 1515: if(d != 0 || !*a) 194s 1515: return d; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: struct Endianness 194s 1515: { 194s 1515: enum Arch 194s 1515: { 194s 1515: Big, 194s 1515: Little 194s 1515: }; 194s 1515: 194s 1515: static Arch which() { 194s 1515: int x = 1; 194s 1515: 194s 1515: auto ptr = reinterpret_cast(&x); 194s 1515: if(*ptr) 194s 1515: return Little; 194s 1515: return Big; 194s 1515: } 194s 1515: }; 194s 1515: } 194s 1515: 194s 1515: namespace detail { 194s 1515: thread_local class 194s 1515: { 194s 1515: std::vector stack; 194s 1515: std::stringstream ss; 194s 1515: 194s 1515: public: 194s 1515: std::ostream* push() { 194s 1515: stack.push_back(ss.tellp()); 194s 1515: return &ss; 194s 1515: } 194s 1515: 194s 1515: String pop() { 194s 1515: if (stack.empty()) 194s 1515: throw_exception(std::logic_error( "/usr/include/doctest/doctest.h" ":" "3353" ": Internal doctest error: " "TLSS was empty when trying to pop!")); 194s 1515: 194s 1515: std::streampos pos = stack.back(); 194s 1515: stack.pop_back(); 194s 1515: unsigned sz = static_cast(ss.tellp() - pos); 194s 1515: ss.rdbuf()->pubseekpos(pos, std::ios::in | std::ios::out); 194s 1515: return String(ss, sz); 194s 1515: } 194s 1515: } g_oss; 194s 1515: 194s 1515: std::ostream* tlssPush() { 194s 1515: return g_oss.push(); 194s 1515: } 194s 1515: 194s 1515: String tlssPop() { 194s 1515: return g_oss.pop(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: namespace timer_large_integer 194s 1515: { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using type = std::uint64_t; 194s 1515: 194s 1515: } 194s 1515: 194s 1515: using ticks_t = timer_large_integer::type; 194s 1515: # 3399 "/usr/include/doctest/doctest.h" 3 4 194s 1515: ticks_t getCurrentTicks() { 194s 1515: timeval t; 194s 1515: gettimeofday(&t, nullptr); 194s 1515: return static_cast(t.tv_sec) * 1000000 + static_cast(t.tv_usec); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: struct Timer 194s 1515: { 194s 1515: void start() { m_ticks = getCurrentTicks(); } 194s 1515: unsigned int getElapsedMicroseconds() const { 194s 1515: return static_cast(getCurrentTicks() - m_ticks); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: double getElapsedSeconds() const { return static_cast(getCurrentTicks() - m_ticks) / 1000000.0; } 194s 1515: 194s 1515: private: 194s 1515: ticks_t m_ticks = 0; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: template 194s 1515: using Atomic = std::atomic; 194s 1515: # 3443 "/usr/include/doctest/doctest.h" 3 4 194s 1515: template 194s 1515: class MultiLaneAtomic 194s 1515: { 194s 1515: struct CacheLineAlignedAtomic 194s 1515: { 194s 1515: Atomic atomic{}; 194s 1515: char padding[64 - sizeof(Atomic)]; 194s 1515: }; 194s 1515: CacheLineAlignedAtomic m_atomics[32]; 194s 1515: 194s 1515: static_assert(sizeof(CacheLineAlignedAtomic) == 64, 194s 1515: "guarantee one atomic takes exactly one cache line"); 194s 1515: 194s 1515: public: 194s 1515: T operator++() noexcept { return fetch_add(1) + 1; } 194s 1515: 194s 1515: T operator++(int) noexcept { return fetch_add(1); } 194s 1515: 194s 1515: T fetch_add(T arg, std::memory_order order = std::memory_order_seq_cst) noexcept { 194s 1515: return myAtomic().fetch_add(arg, order); 194s 1515: } 194s 1515: 194s 1515: T fetch_sub(T arg, std::memory_order order = std::memory_order_seq_cst) noexcept { 194s 1515: return myAtomic().fetch_sub(arg, order); 194s 1515: } 194s 1515: 194s 1515: operator T() const noexcept { return load(); } 194s 1515: 194s 1515: T load(std::memory_order order = std::memory_order_seq_cst) const noexcept { 194s 1515: auto result = T(); 194s 1515: for(auto const& c : m_atomics) { 194s 1515: result += c.atomic.load(order); 194s 1515: } 194s 1515: return result; 194s 1515: } 194s 1515: 194s 1515: T operator=(T desired) noexcept { 194s 1515: store(desired); 194s 1515: return desired; 194s 1515: } 194s 1515: 194s 1515: void store(T desired, std::memory_order order = std::memory_order_seq_cst) noexcept { 194s 1515: 194s 1515: for(auto& c : m_atomics) { 194s 1515: c.atomic.store(desired, order); 194s 1515: desired = {}; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: private: 194s 1515: # 3505 "/usr/include/doctest/doctest.h" 3 4 194s 1515: Atomic& myAtomic() noexcept { 194s 1515: static Atomic laneCounter; 194s 1515: thread_local size_t tlsLaneIdx = 194s 1515: laneCounter++ % 32; 194s 1515: 194s 1515: return m_atomics[tlsLaneIdx].atomic; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct ContextState : ContextOptions, TestRunStats, CurrentTestCaseStats 194s 1515: { 194s 1515: MultiLaneAtomic numAssertsCurrentTest_atomic; 194s 1515: MultiLaneAtomic numAssertsFailedCurrentTest_atomic; 194s 1515: 194s 1515: std::vector> filters = decltype(filters)(9); 194s 1515: 194s 1515: std::vector reporters_currently_used; 194s 1515: 194s 1515: assert_handler ah = nullptr; 194s 1515: 194s 1515: Timer timer; 194s 1515: 194s 1515: std::vector stringifiedContexts; 194s 1515: 194s 1515: 194s 1515: bool reachedLeaf; 194s 1515: std::vector subcaseStack; 194s 1515: std::vector nextSubcaseStack; 194s 1515: std::unordered_set fullyTraversedSubcases; 194s 1515: size_t currentSubcaseDepth; 194s 1515: Atomic shouldLogCurrentException; 194s 1515: 194s 1515: void resetRunData() { 194s 1515: numTestCases = 0; 194s 1515: numTestCasesPassingFilters = 0; 194s 1515: numTestSuitesPassingFilters = 0; 194s 1515: numTestCasesFailed = 0; 194s 1515: numAsserts = 0; 194s 1515: numAssertsFailed = 0; 194s 1515: numAssertsCurrentTest = 0; 194s 1515: numAssertsFailedCurrentTest = 0; 194s 1515: } 194s 1515: 194s 1515: void finalizeTestCaseData() { 194s 1515: seconds = timer.getElapsedSeconds(); 194s 1515: 194s 1515: 194s 1515: numAsserts += numAssertsCurrentTest_atomic; 194s 1515: numAssertsFailed += numAssertsFailedCurrentTest_atomic; 194s 1515: numAssertsCurrentTest = numAssertsCurrentTest_atomic; 194s 1515: numAssertsFailedCurrentTest = numAssertsFailedCurrentTest_atomic; 194s 1515: 194s 1515: if(numAssertsFailedCurrentTest) 194s 1515: failure_flags |= TestCaseFailureReason::AssertFailure; 194s 1515: 194s 1515: if(Approx(currentTest->m_timeout).epsilon(double(2.2204460492503131e-16L)) != 0 && 194s 1515: Approx(seconds).epsilon(double(2.2204460492503131e-16L)) > currentTest->m_timeout) 194s 1515: failure_flags |= TestCaseFailureReason::Timeout; 194s 1515: 194s 1515: if(currentTest->m_should_fail) { 194s 1515: if(failure_flags) { 194s 1515: failure_flags |= TestCaseFailureReason::ShouldHaveFailedAndDid; 194s 1515: } else { 194s 1515: failure_flags |= TestCaseFailureReason::ShouldHaveFailedButDidnt; 194s 1515: } 194s 1515: } else if(failure_flags && currentTest->m_may_fail) { 194s 1515: failure_flags |= TestCaseFailureReason::CouldHaveFailedAndDid; 194s 1515: } else if(currentTest->m_expected_failures > 0) { 194s 1515: if(numAssertsFailedCurrentTest == currentTest->m_expected_failures) { 194s 1515: failure_flags |= TestCaseFailureReason::FailedExactlyNumTimes; 194s 1515: } else { 194s 1515: failure_flags |= TestCaseFailureReason::DidntFailExactlyNumTimes; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: bool ok_to_fail = (TestCaseFailureReason::ShouldHaveFailedAndDid & failure_flags) || 194s 1515: (TestCaseFailureReason::CouldHaveFailedAndDid & failure_flags) || 194s 1515: (TestCaseFailureReason::FailedExactlyNumTimes & failure_flags); 194s 1515: 194s 1515: 194s 1515: testCaseSuccess = !(failure_flags && !ok_to_fail); 194s 1515: if(!testCaseSuccess) 194s 1515: numTestCasesFailed++; 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: ContextState* g_cs = nullptr; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: thread_local bool g_no_colors; 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: char* String::allocate(size_type sz) { 194s 1515: if (sz <= last) { 194s 1515: buf[sz] = '\0'; 194s 1515: setLast(last - sz); 194s 1515: return buf; 194s 1515: } else { 194s 1515: setOnHeap(); 194s 1515: data.size = sz; 194s 1515: data.capacity = data.size + 1; 194s 1515: data.ptr = new char[data.capacity]; 194s 1515: data.ptr[sz] = '\0'; 194s 1515: return data.ptr; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: void String::setOnHeap() noexcept { *reinterpret_cast(&buf[last]) = 128; } 194s 1515: void String::setLast(size_type in) noexcept { buf[last] = char(in); } 194s 1515: void String::setSize(size_type sz) noexcept { 194s 1515: if (isOnStack()) { buf[sz] = '\0'; setLast(last - sz); } 194s 1515: else { data.ptr[sz] = '\0'; data.size = sz; } 194s 1515: } 194s 1515: 194s 1515: void String::copy(const String& other) { 194s 1515: if(other.isOnStack()) { 194s 1515: memcpy(buf, other.buf, len); 194s 1515: } else { 194s 1515: memcpy(allocate(other.data.size), other.data.ptr, other.data.size); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: String::String() noexcept { 194s 1515: buf[0] = '\0'; 194s 1515: setLast(); 194s 1515: } 194s 1515: 194s 1515: String::~String() { 194s 1515: if(!isOnStack()) 194s 1515: delete[] data.ptr; 194s 1515: } 194s 1515: 194s 1515: String::String(const char* in) 194s 1515: : String(in, strlen(in)) {} 194s 1515: 194s 1515: String::String(const char* in, size_type in_size) { 194s 1515: memcpy(allocate(in_size), in, in_size); 194s 1515: } 194s 1515: 194s 1515: String::String(std::istream& in, size_type in_size) { 194s 1515: in.read(allocate(in_size), in_size); 194s 1515: } 194s 1515: 194s 1515: String::String(const String& other) { copy(other); } 194s 1515: 194s 1515: String& String::operator=(const String& other) { 194s 1515: if(this != &other) { 194s 1515: if(!isOnStack()) 194s 1515: delete[] data.ptr; 194s 1515: 194s 1515: copy(other); 194s 1515: } 194s 1515: 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: String& String::operator+=(const String& other) { 194s 1515: const size_type my_old_size = size(); 194s 1515: const size_type other_size = other.size(); 194s 1515: const size_type total_size = my_old_size + other_size; 194s 1515: if(isOnStack()) { 194s 1515: if(total_size < len) { 194s 1515: 194s 1515: memcpy(buf + my_old_size, other.c_str(), other_size + 1); 194s 1515: 194s 1515: setLast(last - total_size); 194s 1515: } else { 194s 1515: 194s 1515: char* temp = new char[total_size + 1]; 194s 1515: 194s 1515: memcpy(temp, buf, my_old_size); 194s 1515: 194s 1515: setOnHeap(); 194s 1515: data.size = total_size; 194s 1515: data.capacity = data.size + 1; 194s 1515: data.ptr = temp; 194s 1515: 194s 1515: memcpy(data.ptr + my_old_size, other.c_str(), other_size + 1); 194s 1515: } 194s 1515: } else { 194s 1515: if(data.capacity > total_size) { 194s 1515: 194s 1515: data.size = total_size; 194s 1515: memcpy(data.ptr + my_old_size, other.c_str(), other_size + 1); 194s 1515: } else { 194s 1515: 194s 1515: data.capacity *= 2; 194s 1515: if(data.capacity <= total_size) 194s 1515: data.capacity = total_size + 1; 194s 1515: 194s 1515: char* temp = new char[data.capacity]; 194s 1515: 194s 1515: memcpy(temp, data.ptr, my_old_size); 194s 1515: 194s 1515: delete[] data.ptr; 194s 1515: 194s 1515: data.size = total_size; 194s 1515: data.ptr = temp; 194s 1515: 194s 1515: memcpy(data.ptr + my_old_size, other.c_str(), other_size + 1); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: String::String(String&& other) noexcept { 194s 1515: memcpy(buf, other.buf, len); 194s 1515: other.buf[0] = '\0'; 194s 1515: other.setLast(); 194s 1515: } 194s 1515: 194s 1515: String& String::operator=(String&& other) noexcept { 194s 1515: if(this != &other) { 194s 1515: if(!isOnStack()) 194s 1515: delete[] data.ptr; 194s 1515: memcpy(buf, other.buf, len); 194s 1515: other.buf[0] = '\0'; 194s 1515: other.setLast(); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: char String::operator[](size_type i) const { 194s 1515: return const_cast(this)->operator[](i); 194s 1515: } 194s 1515: 194s 1515: char& String::operator[](size_type i) { 194s 1515: if(isOnStack()) 194s 1515: return reinterpret_cast(buf)[i]; 194s 1515: return data.ptr[i]; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: # 3744 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: # 3744 "/usr/include/doctest/doctest.h" 3 4 194s 1515: 194s 1515: # 3744 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" 194s 1515: String::size_type String::size() const { 194s 1515: if(isOnStack()) 194s 1515: return last - (size_type(buf[last]) & 31); 194s 1515: return data.size; 194s 1515: } 194s 1515: 194s 1515: # 3750 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: String::size_type String::capacity() const { 194s 1515: if(isOnStack()) 194s 1515: return len; 194s 1515: return data.capacity; 194s 1515: } 194s 1515: 194s 1515: String String::substr(size_type pos, size_type cnt) && { 194s 1515: cnt = std::min(cnt, size() - pos); 194s 1515: char* cptr = c_str(); 194s 1515: memmove(cptr, cptr + pos, cnt); 194s 1515: setSize(cnt); 194s 1515: return std::move(*this); 194s 1515: } 194s 1515: 194s 1515: String String::substr(size_type pos, size_type cnt) const & { 194s 1515: cnt = std::min(cnt, size() - pos); 194s 1515: return String{ c_str() + pos, cnt }; 194s 1515: } 194s 1515: 194s 1515: String::size_type String::find(char ch, size_type pos) const { 194s 1515: const char* begin = c_str(); 194s 1515: const char* end = begin + size(); 194s 1515: const char* it = begin + pos; 194s 1515: for (; it < end && *it != ch; it++); 194s 1515: if (it < end) { return static_cast(it - begin); } 194s 1515: else { return npos; } 194s 1515: } 194s 1515: 194s 1515: String::size_type String::rfind(char ch, size_type pos) const { 194s 1515: const char* begin = c_str(); 194s 1515: const char* it = begin + std::min(pos, size() - 1); 194s 1515: for (; it >= begin && *it != ch; it--); 194s 1515: if (it >= begin) { return static_cast(it - begin); } 194s 1515: else { return npos; } 194s 1515: } 194s 1515: 194s 1515: int String::compare(const char* other, bool no_case) const { 194s 1515: if(no_case) 194s 1515: return doctest::stricmp(c_str(), other); 194s 1515: return std::strcmp(c_str(), other); 194s 1515: } 194s 1515: 194s 1515: int String::compare(const String& other, bool no_case) const { 194s 1515: return compare(other.c_str(), no_case); 194s 1515: } 194s 1515: 194s 1515: String operator+(const String& lhs, const String& rhs) { return String(lhs) += rhs; } 194s 1515: 194s 1515: bool operator==(const String& lhs, const String& rhs) { return lhs.compare(rhs) == 0; } 194s 1515: bool operator!=(const String& lhs, const String& rhs) { return lhs.compare(rhs) != 0; } 194s 1515: bool operator< (const String& lhs, const String& rhs) { return lhs.compare(rhs) < 0; } 194s 1515: bool operator> (const String& lhs, const String& rhs) { return lhs.compare(rhs) > 0; } 194s 1515: bool operator<=(const String& lhs, const String& rhs) { return (lhs != rhs) ? lhs.compare(rhs) < 0 : true; } 194s 1515: bool operator>=(const String& lhs, const String& rhs) { return (lhs != rhs) ? lhs.compare(rhs) > 0 : true; } 194s 1515: 194s 1515: std::ostream& operator<<(std::ostream& s, const String& in) { return s << in.c_str(); } 194s 1515: 194s 1515: Contains::Contains(const String& str) : string(str) { } 194s 1515: 194s 1515: bool Contains::checkWith(const String& other) const { 194s 1515: return strstr(other.c_str(), string.c_str()) != nullptr; 194s 1515: } 194s 1515: 194s 1515: String toString(const Contains& in) { 194s 1515: return "Contains( " + in.string + " )"; 194s 1515: } 194s 1515: 194s 1515: bool operator==(const String& lhs, const Contains& rhs) { return rhs.checkWith(lhs); } 194s 1515: bool operator==(const Contains& lhs, const String& rhs) { return lhs.checkWith(rhs); } 194s 1515: bool operator!=(const String& lhs, const Contains& rhs) { return !rhs.checkWith(lhs); } 194s 1515: bool operator!=(const Contains& lhs, const String& rhs) { return !lhs.checkWith(rhs); } 194s 1515: 194s 1515: namespace { 194s 1515: void color_to_stream(std::ostream&, Color::Enum) ; 194s 1515: } 194s 1515: 194s 1515: namespace Color { 194s 1515: std::ostream& operator<<(std::ostream& s, Color::Enum code) { 194s 1515: color_to_stream(s, code); 194s 1515: return s; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const char* assertString(assertType::Enum at) { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: switch(at) { 194s 1515: case assertType::DT_WARN: return "WARN"; 194s 1515: case assertType::DT_CHECK: return "CHECK"; 194s 1515: case assertType::DT_REQUIRE: return "REQUIRE"; 194s 1515: 194s 1515: case assertType::DT_WARN_FALSE: return "WARN_FALSE"; case assertType::DT_CHECK_FALSE: return "CHECK_FALSE"; case assertType::DT_REQUIRE_FALSE: return "REQUIRE_FALSE"; 194s 1515: 194s 1515: case assertType::DT_WARN_THROWS: return "WARN_THROWS"; case assertType::DT_CHECK_THROWS: return "CHECK_THROWS"; case assertType::DT_REQUIRE_THROWS: return "REQUIRE_THROWS"; 194s 1515: 194s 1515: case assertType::DT_WARN_THROWS_AS: return "WARN_THROWS_AS"; case assertType::DT_CHECK_THROWS_AS: return "CHECK_THROWS_AS"; case assertType::DT_REQUIRE_THROWS_AS: return "REQUIRE_THROWS_AS"; 194s 1515: 194s 1515: case assertType::DT_WARN_THROWS_WITH: return "WARN_THROWS_WITH"; case assertType::DT_CHECK_THROWS_WITH: return "CHECK_THROWS_WITH"; case assertType::DT_REQUIRE_THROWS_WITH: return "REQUIRE_THROWS_WITH"; 194s 1515: 194s 1515: case assertType::DT_WARN_THROWS_WITH_AS: return "WARN_THROWS_WITH_AS"; case assertType::DT_CHECK_THROWS_WITH_AS: return "CHECK_THROWS_WITH_AS"; case assertType::DT_REQUIRE_THROWS_WITH_AS: return "REQUIRE_THROWS_WITH_AS"; 194s 1515: 194s 1515: case assertType::DT_WARN_NOTHROW: return "WARN_NOTHROW"; case assertType::DT_CHECK_NOTHROW: return "CHECK_NOTHROW"; case assertType::DT_REQUIRE_NOTHROW: return "REQUIRE_NOTHROW"; 194s 1515: 194s 1515: case assertType::DT_WARN_EQ: return "WARN_EQ"; case assertType::DT_CHECK_EQ: return "CHECK_EQ"; case assertType::DT_REQUIRE_EQ: return "REQUIRE_EQ"; 194s 1515: case assertType::DT_WARN_NE: return "WARN_NE"; case assertType::DT_CHECK_NE: return "CHECK_NE"; case assertType::DT_REQUIRE_NE: return "REQUIRE_NE"; 194s 1515: case assertType::DT_WARN_GT: return "WARN_GT"; case assertType::DT_CHECK_GT: return "CHECK_GT"; case assertType::DT_REQUIRE_GT: return "REQUIRE_GT"; 194s 1515: case assertType::DT_WARN_LT: return "WARN_LT"; case assertType::DT_CHECK_LT: return "CHECK_LT"; case assertType::DT_REQUIRE_LT: return "REQUIRE_LT"; 194s 1515: case assertType::DT_WARN_GE: return "WARN_GE"; case assertType::DT_CHECK_GE: return "CHECK_GE"; case assertType::DT_REQUIRE_GE: return "REQUIRE_GE"; 194s 1515: case assertType::DT_WARN_LE: return "WARN_LE"; case assertType::DT_CHECK_LE: return "CHECK_LE"; case assertType::DT_REQUIRE_LE: return "REQUIRE_LE"; 194s 1515: 194s 1515: case assertType::DT_WARN_UNARY: return "WARN_UNARY"; case assertType::DT_CHECK_UNARY: return "CHECK_UNARY"; case assertType::DT_REQUIRE_UNARY: return "REQUIRE_UNARY"; 194s 1515: case assertType::DT_WARN_UNARY_FALSE: return "WARN_UNARY_FALSE"; case assertType::DT_CHECK_UNARY_FALSE: return "CHECK_UNARY_FALSE"; case assertType::DT_REQUIRE_UNARY_FALSE: return "REQUIRE_UNARY_FALSE"; 194s 1515: 194s 1515: default: throw_exception(std::logic_error( "/usr/include/doctest/doctest.h" ":" "3870" ": Internal doctest error: " "Tried stringifying invalid assert type!")); 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: const char* failureString(assertType::Enum at) { 194s 1515: if(at & assertType::is_warn) 194s 1515: return "WARNING"; 194s 1515: if(at & assertType::is_check) 194s 1515: return "ERROR"; 194s 1515: if(at & assertType::is_require) 194s 1515: return "FATAL ERROR"; 194s 1515: return ""; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 3887 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: # 3887 "/usr/include/doctest/doctest.h" 3 4 194s 1515: 194s 1515: # 3887 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic ignored "-Wnull-dereference" 194s 1515: 194s 1515: const char* skipPathFromFilename(const char* file) { 194s 1515: 194s 1515: if(getContextOptions()->no_path_in_filenames) { 194s 1515: auto back = std::strrchr(file, '\\'); 194s 1515: auto forward = std::strrchr(file, '/'); 194s 1515: if(back || forward) { 194s 1515: if(back > forward) 194s 1515: forward = back; 194s 1515: return forward + 1; 194s 1515: } 194s 1515: } else { 194s 1515: const auto prefixes = getContextOptions()->strip_file_prefixes; 194s 1515: const char separator = ':'; 194s 1515: String::size_type longest_match = 0U; 194s 1515: for(String::size_type pos = 0U; pos < prefixes.size(); ++pos) 194s 1515: { 194s 1515: const auto prefix_start = pos; 194s 1515: pos = std::min(prefixes.find(separator, prefix_start), prefixes.size()); 194s 1515: 194s 1515: const auto prefix_size = pos - prefix_start; 194s 1515: if(prefix_size > longest_match) 194s 1515: { 194s 1515: 194s 1515: if(0 == std::strncmp(prefixes.c_str() + prefix_start, file, prefix_size)) 194s 1515: { 194s 1515: longest_match = prefix_size; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: return &file[longest_match]; 194s 1515: } 194s 1515: 194s 1515: return file; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: # 3924 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: bool SubcaseSignature::operator==(const SubcaseSignature& other) const { 194s 1515: return m_line == other.m_line 194s 1515: && std::strcmp(m_file, other.m_file) == 0 194s 1515: && m_name == other.m_name; 194s 1515: } 194s 1515: 194s 1515: bool SubcaseSignature::operator<(const SubcaseSignature& other) const { 194s 1515: if(m_line != other.m_line) 194s 1515: return m_line < other.m_line; 194s 1515: if(std::strcmp(m_file, other.m_file) != 0) 194s 1515: return std::strcmp(m_file, other.m_file) < 0; 194s 1515: return m_name.compare(other.m_name) < 0; 194s 1515: } 194s 1515: 194s 1515: IContextScope::~IContextScope() = default; 194s 1515: 194s 1515: namespace detail { 194s 1515: void filldata::fill(std::ostream* stream, const void* in) { 194s 1515: if (in) { *stream << in; } 194s 1515: else { *stream << "nullptr"; } 194s 1515: } 194s 1515: 194s 1515: template 194s 1515: String toStreamLit(T t) { 194s 1515: std::ostream* os = tlssPush(); 194s 1515: os->operator<<(t); 194s 1515: return tlssPop(); 194s 1515: } 194s 1515: } 194s 1515: # 3965 "/usr/include/doctest/doctest.h" 3 4 194s 1515: String toString(String in) { return in; } 194s 1515: 194s 1515: String toString(std::nullptr_t) { return "nullptr"; } 194s 1515: 194s 1515: String toString(bool in) { return in ? "true" : "false"; } 194s 1515: 194s 1515: String toString(float in) { return toStreamLit(in); } 194s 1515: String toString(double in) { return toStreamLit(in); } 194s 1515: String toString(double long in) { return toStreamLit(in); } 194s 1515: 194s 1515: String toString(char in) { return toStreamLit(static_cast(in)); } 194s 1515: String toString(char signed in) { return toStreamLit(static_cast(in)); } 194s 1515: String toString(char unsigned in) { return toStreamLit(static_cast(in)); } 194s 1515: String toString(short in) { return toStreamLit(in); } 194s 1515: String toString(short unsigned in) { return toStreamLit(in); } 194s 1515: String toString(signed in) { return toStreamLit(in); } 194s 1515: String toString(unsigned in) { return toStreamLit(in); } 194s 1515: String toString(long in) { return toStreamLit(in); } 194s 1515: String toString(long unsigned in) { return toStreamLit(in); } 194s 1515: String toString(long long in) { return toStreamLit(in); } 194s 1515: String toString(long long unsigned in) { return toStreamLit(in); } 194s 1515: 194s 1515: Approx::Approx(double value) 194s 1515: : m_epsilon(static_cast(std::numeric_limits::epsilon()) * 100) 194s 1515: , m_scale(1.0) 194s 1515: , m_value(value) {} 194s 1515: 194s 1515: Approx Approx::operator()(double value) const { 194s 1515: Approx approx(value); 194s 1515: approx.epsilon(m_epsilon); 194s 1515: approx.scale(m_scale); 194s 1515: return approx; 194s 1515: } 194s 1515: 194s 1515: Approx& Approx::epsilon(double newEpsilon) { 194s 1515: m_epsilon = newEpsilon; 194s 1515: return *this; 194s 1515: } 194s 1515: Approx& Approx::scale(double newScale) { 194s 1515: m_scale = newScale; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: bool operator==(double lhs, const Approx& rhs) { 194s 1515: 194s 1515: return std::fabs(lhs - rhs.m_value) < 194s 1515: rhs.m_epsilon * (rhs.m_scale + std::max(std::fabs(lhs), std::fabs(rhs.m_value))); 194s 1515: } 194s 1515: bool operator==(const Approx& lhs, double rhs) { return operator==(rhs, lhs); } 194s 1515: bool operator!=(double lhs, const Approx& rhs) { return !operator==(lhs, rhs); } 194s 1515: bool operator!=(const Approx& lhs, double rhs) { return !operator==(rhs, lhs); } 194s 1515: bool operator<=(double lhs, const Approx& rhs) { return lhs < rhs.m_value || lhs == rhs; } 194s 1515: bool operator<=(const Approx& lhs, double rhs) { return lhs.m_value < rhs || lhs == rhs; } 194s 1515: bool operator>=(double lhs, const Approx& rhs) { return lhs > rhs.m_value || lhs == rhs; } 194s 1515: bool operator>=(const Approx& lhs, double rhs) { return lhs.m_value > rhs || lhs == rhs; } 194s 1515: bool operator<(double lhs, const Approx& rhs) { return lhs < rhs.m_value && lhs != rhs; } 194s 1515: bool operator<(const Approx& lhs, double rhs) { return lhs.m_value < rhs && lhs != rhs; } 194s 1515: bool operator>(double lhs, const Approx& rhs) { return lhs > rhs.m_value && lhs != rhs; } 194s 1515: bool operator>(const Approx& lhs, double rhs) { return lhs.m_value > rhs && lhs != rhs; } 194s 1515: 194s 1515: String toString(const Approx& in) { 194s 1515: return "Approx( " + doctest::toString(in.m_value) + " )"; 194s 1515: } 194s 1515: const ContextOptions* getContextOptions() { return g_cs; } 194s 1515: 194s 1515: 194s 1515: template 194s 1515: IsNaN::operator bool() const { 194s 1515: return std::isnan(value) ^ flipped; 194s 1515: } 194s 1515: 194s 1515: template struct IsNaN; 194s 1515: template struct IsNaN; 194s 1515: template struct IsNaN; 194s 1515: template 194s 1515: String toString(IsNaN in) { return String(in.flipped ? "! " : "") + "IsNaN( " + doctest::toString(in.value) + " )"; } 194s 1515: String toString(IsNaN in) { return toString(in); } 194s 1515: String toString(IsNaN in) { return toString(in); } 194s 1515: String toString(IsNaN in) { return toString(in); } 194s 1515: 194s 1515: } 194s 1515: # 4083 "/usr/include/doctest/doctest.h" 3 4 194s 1515: namespace doctest_detail_test_suite_ns { 194s 1515: 194s 1515: doctest::detail::TestSuite& getCurrentTestSuite() { 194s 1515: static doctest::detail::TestSuite data{}; 194s 1515: return data; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: namespace doctest { 194s 1515: namespace { 194s 1515: 194s 1515: 194s 1515: using reporterMap = std::map, reporterCreatorFunc>; 194s 1515: 194s 1515: reporterMap& getReporters() { 194s 1515: static reporterMap data; 194s 1515: return data; 194s 1515: } 194s 1515: reporterMap& getListeners() { 194s 1515: static reporterMap data; 194s 1515: return data; 194s 1515: } 194s 1515: } 194s 1515: namespace detail { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: bool checkIfShouldThrow(assertType::Enum at) { 194s 1515: if(at & assertType::is_require) 194s 1515: return true; 194s 1515: 194s 1515: if((at & assertType::is_check) 194s 1515: && getContextOptions()->abort_after > 0 && 194s 1515: (g_cs->numAssertsFailed + g_cs->numAssertsFailedCurrentTest_atomic) >= 194s 1515: getContextOptions()->abort_after) 194s 1515: return true; 194s 1515: 194s 1515: return false; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: [[noreturn]] void throwException() { 194s 1515: g_cs->shouldLogCurrentException = false; 194s 1515: throw TestFailureException(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: namespace { 194s 1515: using namespace detail; 194s 1515: 194s 1515: 194s 1515: int wildcmp(const char* str, const char* wild, bool caseSensitive) { 194s 1515: const char* cp = str; 194s 1515: const char* mp = wild; 194s 1515: 194s 1515: while((*str) && (*wild != '*')) { 194s 1515: if((caseSensitive ? (*wild != *str) : (tolower(*wild) != tolower(*str))) && 194s 1515: (*wild != '?')) { 194s 1515: return 0; 194s 1515: } 194s 1515: wild++; 194s 1515: str++; 194s 1515: } 194s 1515: 194s 1515: while(*str) { 194s 1515: if(*wild == '*') { 194s 1515: if(!*++wild) { 194s 1515: return 1; 194s 1515: } 194s 1515: mp = wild; 194s 1515: cp = str + 1; 194s 1515: } else if((caseSensitive ? (*wild == *str) : (tolower(*wild) == tolower(*str))) || 194s 1515: (*wild == '?')) { 194s 1515: wild++; 194s 1515: str++; 194s 1515: } else { 194s 1515: wild = mp; 194s 1515: str = cp++; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: while(*wild == '*') { 194s 1515: wild++; 194s 1515: } 194s 1515: return !*wild; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool matchesAny(const char* name, const std::vector& filters, bool matchEmpty, 194s 1515: bool caseSensitive) { 194s 1515: if (filters.empty() && matchEmpty) 194s 1515: return true; 194s 1515: for (auto& curr : filters) 194s 1515: if (wildcmp(name, curr.c_str(), caseSensitive)) 194s 1515: return true; 194s 1515: return false; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: unsigned long long hash(unsigned long long a, unsigned long long b) { 194s 1515: return (a << 5) + b; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: unsigned long long hash(const char* str) { 194s 1515: unsigned long long hash = 5381; 194s 1515: char c; 194s 1515: while ((c = *str++)) 194s 1515: hash = ((hash << 5) + hash) + c; 194s 1515: return hash; 194s 1515: } 194s 1515: 194s 1515: unsigned long long hash(const SubcaseSignature& sig) { 194s 1515: return hash(hash(hash(sig.m_file), hash(sig.m_name.c_str())), sig.m_line); 194s 1515: } 194s 1515: 194s 1515: unsigned long long hash(const std::vector& sigs, size_t count) { 194s 1515: unsigned long long running = 0; 194s 1515: auto end = sigs.begin() + count; 194s 1515: for (auto it = sigs.begin(); it != end; it++) { 194s 1515: running = hash(running, hash(*it)); 194s 1515: } 194s 1515: return running; 194s 1515: } 194s 1515: 194s 1515: unsigned long long hash(const std::vector& sigs) { 194s 1515: unsigned long long running = 0; 194s 1515: for (const SubcaseSignature& sig : sigs) { 194s 1515: running = hash(running, hash(sig)); 194s 1515: } 194s 1515: return running; 194s 1515: } 194s 1515: } 194s 1515: namespace detail { 194s 1515: bool Subcase::checkFilters() { 194s 1515: if (g_cs->subcaseStack.size() < size_t(g_cs->subcase_filter_levels)) { 194s 1515: if (!matchesAny(m_signature.m_name.c_str(), g_cs->filters[6], true, g_cs->case_sensitive)) 194s 1515: return true; 194s 1515: if (matchesAny(m_signature.m_name.c_str(), g_cs->filters[7], false, g_cs->case_sensitive)) 194s 1515: return true; 194s 1515: } 194s 1515: return false; 194s 1515: } 194s 1515: 194s 1515: Subcase::Subcase(const String& name, const char* file, int line) 194s 1515: : m_signature({name, file, line}) { 194s 1515: if (!g_cs->reachedLeaf) { 194s 1515: if (g_cs->nextSubcaseStack.size() <= g_cs->subcaseStack.size() 194s 1515: || g_cs->nextSubcaseStack[g_cs->subcaseStack.size()] == m_signature) { 194s 1515: 194s 1515: if (checkFilters()) { return; } 194s 1515: 194s 1515: g_cs->subcaseStack.push_back(m_signature); 194s 1515: g_cs->currentSubcaseDepth++; 194s 1515: m_entered = true; 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->subcase_start(m_signature); 194s 1515: } 194s 1515: } else { 194s 1515: if (g_cs->subcaseStack[g_cs->currentSubcaseDepth] == m_signature) { 194s 1515: 194s 1515: g_cs->currentSubcaseDepth++; 194s 1515: m_entered = true; 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->subcase_start(m_signature); 194s 1515: } else if (g_cs->nextSubcaseStack.size() <= g_cs->currentSubcaseDepth 194s 1515: && g_cs->fullyTraversedSubcases.find(hash(hash(g_cs->subcaseStack, g_cs->currentSubcaseDepth), hash(m_signature))) 194s 1515: == g_cs->fullyTraversedSubcases.end()) { 194s 1515: if (checkFilters()) { return; } 194s 1515: 194s 1515: g_cs->nextSubcaseStack.clear(); 194s 1515: g_cs->nextSubcaseStack.insert(g_cs->nextSubcaseStack.end(), 194s 1515: g_cs->subcaseStack.begin(), g_cs->subcaseStack.begin() + g_cs->currentSubcaseDepth); 194s 1515: g_cs->nextSubcaseStack.push_back(m_signature); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 4265 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: # 4265 "/usr/include/doctest/doctest.h" 3 4 194s 1515: 194s 1515: # 4265 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: Subcase::~Subcase() { 194s 1515: if (m_entered) { 194s 1515: g_cs->currentSubcaseDepth--; 194s 1515: 194s 1515: if (!g_cs->reachedLeaf) { 194s 1515: 194s 1515: g_cs->fullyTraversedSubcases.insert(hash(g_cs->subcaseStack)); 194s 1515: g_cs->nextSubcaseStack.clear(); 194s 1515: g_cs->reachedLeaf = true; 194s 1515: } else if (g_cs->nextSubcaseStack.empty()) { 194s 1515: 194s 1515: g_cs->fullyTraversedSubcases.insert(hash(g_cs->subcaseStack)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if(std::uncaught_exception() 194s 1515: 194s 1515: && g_cs->shouldLogCurrentException) { 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_exception({"exception thrown in subcase - will translate later " "when the whole test case has been exited (cannot " "translate while there is an active exception)", false}) 194s 1515: 194s 1515: 194s 1515: 194s 1515: ; 194s 1515: g_cs->shouldLogCurrentException = false; 194s 1515: } 194s 1515: 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->subcase_end(); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 4301 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: Subcase::operator bool() const { return m_entered; } 194s 1515: 194s 1515: Result::Result(bool passed, const String& decomposition) 194s 1515: : m_passed(passed) 194s 1515: , m_decomp(decomposition) {} 194s 1515: 194s 1515: ExpressionDecomposer::ExpressionDecomposer(assertType::Enum at) 194s 1515: : m_at(at) {} 194s 1515: 194s 1515: TestSuite& TestSuite::operator*(const char* in) { 194s 1515: m_test_suite = in; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: TestCase::TestCase(funcType test, const char* file, unsigned line, const TestSuite& test_suite, 194s 1515: const String& type, int template_id) { 194s 1515: m_file = file; 194s 1515: m_line = line; 194s 1515: m_name = nullptr; 194s 1515: m_test_suite = test_suite.m_test_suite; 194s 1515: m_description = test_suite.m_description; 194s 1515: m_skip = test_suite.m_skip; 194s 1515: m_no_breaks = test_suite.m_no_breaks; 194s 1515: m_no_output = test_suite.m_no_output; 194s 1515: m_may_fail = test_suite.m_may_fail; 194s 1515: m_should_fail = test_suite.m_should_fail; 194s 1515: m_expected_failures = test_suite.m_expected_failures; 194s 1515: m_timeout = test_suite.m_timeout; 194s 1515: 194s 1515: m_test = test; 194s 1515: m_type = type; 194s 1515: m_template_id = template_id; 194s 1515: } 194s 1515: 194s 1515: TestCase::TestCase(const TestCase& other) 194s 1515: : TestCaseData() { 194s 1515: *this = other; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: TestCase& TestCase::operator=(const TestCase& other) { 194s 1515: TestCaseData::operator=(other); 194s 1515: m_test = other.m_test; 194s 1515: m_type = other.m_type; 194s 1515: m_template_id = other.m_template_id; 194s 1515: m_full_name = other.m_full_name; 194s 1515: 194s 1515: if(m_template_id != -1) 194s 1515: m_name = m_full_name.c_str(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: TestCase& TestCase::operator*(const char* in) { 194s 1515: m_name = in; 194s 1515: 194s 1515: if(m_template_id != -1) { 194s 1515: m_full_name = String(m_name) + "<" + m_type + ">"; 194s 1515: 194s 1515: m_name = m_full_name.c_str(); 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: bool TestCase::operator<(const TestCase& other) const { 194s 1515: 194s 1515: if(m_line != other.m_line) 194s 1515: return m_line < other.m_line; 194s 1515: const int name_cmp = strcmp(m_name, other.m_name); 194s 1515: if(name_cmp != 0) 194s 1515: return name_cmp < 0; 194s 1515: const int file_cmp = m_file.compare(other.m_file); 194s 1515: if(file_cmp != 0) 194s 1515: return file_cmp < 0; 194s 1515: return m_template_id < other.m_template_id; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: std::set& getRegisteredTests() { 194s 1515: static std::set data; 194s 1515: return data; 194s 1515: } 194s 1515: } 194s 1515: namespace { 194s 1515: using namespace detail; 194s 1515: 194s 1515: bool fileOrderComparator(const TestCase* lhs, const TestCase* rhs) { 194s 1515: 194s 1515: 194s 1515: const int res = lhs->m_file.compare(rhs->m_file, bool(0)); 194s 1515: if(res != 0) 194s 1515: return res < 0; 194s 1515: if(lhs->m_line != rhs->m_line) 194s 1515: return lhs->m_line < rhs->m_line; 194s 1515: return lhs->m_template_id < rhs->m_template_id; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool suiteOrderComparator(const TestCase* lhs, const TestCase* rhs) { 194s 1515: const int res = std::strcmp(lhs->m_test_suite, rhs->m_test_suite); 194s 1515: if(res != 0) 194s 1515: return res < 0; 194s 1515: return fileOrderComparator(lhs, rhs); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool nameOrderComparator(const TestCase* lhs, const TestCase* rhs) { 194s 1515: const int res = std::strcmp(lhs->m_name, rhs->m_name); 194s 1515: if(res != 0) 194s 1515: return res < 0; 194s 1515: return suiteOrderComparator(lhs, rhs); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void color_to_stream(std::ostream& s, Color::Enum code) { 194s 1515: static_cast(s); 194s 1515: static_cast(code); 194s 1515: 194s 1515: if(g_no_colors || 194s 1515: (isatty(1) == false && getContextOptions()->force_colors == false)) 194s 1515: return; 194s 1515: 194s 1515: auto col = ""; 194s 1515: 194s 1515: switch(code) { 194s 1515: case Color::Red: col = "[0;31m"; break; 194s 1515: case Color::Green: col = "[0;32m"; break; 194s 1515: case Color::Blue: col = "[0;34m"; break; 194s 1515: case Color::Cyan: col = "[0;36m"; break; 194s 1515: case Color::Yellow: col = "[0;33m"; break; 194s 1515: case Color::Grey: col = "[1;30m"; break; 194s 1515: case Color::LightGrey: col = "[0;37m"; break; 194s 1515: case Color::BrightRed: col = "[1;31m"; break; 194s 1515: case Color::BrightGreen: col = "[1;32m"; break; 194s 1515: case Color::BrightWhite: col = "[1;37m"; break; 194s 1515: case Color::Bright: 194s 1515: case Color::None: 194s 1515: case Color::White: 194s 1515: default: col = "[0m"; 194s 1515: } 194s 1515: 194s 1515: s << "\033" << col; 194s 1515: # 4490 "/usr/include/doctest/doctest.h" 3 4 194s 1515: } 194s 1515: 194s 1515: 194s 1515: std::vector& getExceptionTranslators() { 194s 1515: static std::vector data; 194s 1515: return data; 194s 1515: } 194s 1515: 194s 1515: String translateActiveException() { 194s 1515: 194s 1515: String res; 194s 1515: auto& translators = getExceptionTranslators(); 194s 1515: for(auto& curr : translators) 194s 1515: if(curr->translate(res)) 194s 1515: return res; 194s 1515: 194s 1515: 194s 1515: # 4506 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: # 4506 "/usr/include/doctest/doctest.h" 3 4 194s 1515: 194s 1515: # 4506 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic ignored "-Wcatch-value" 194s 1515: try { 194s 1515: throw; 194s 1515: } catch(std::exception& ex) { 194s 1515: return ex.what(); 194s 1515: } catch(std::string& msg) { 194s 1515: return msg.c_str(); 194s 1515: } catch(const char* msg) { 194s 1515: return msg; 194s 1515: } catch(...) { 194s 1515: return "unknown exception"; 194s 1515: } 194s 1515: 194s 1515: # 4518 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: namespace detail { 194s 1515: 194s 1515: int regTest(const TestCase& tc) { 194s 1515: getRegisteredTests().insert(tc); 194s 1515: return 0; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: int setTestSuite(const TestSuite& ts) { 194s 1515: doctest_detail_test_suite_ns::getCurrentTestSuite() = ts; 194s 1515: return 0; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: class ErrnoGuard { 194s 1515: public: 194s 1515: ErrnoGuard() : m_oldErrno((*__errno_location ())) {} 194s 1515: ~ErrnoGuard() { (*__errno_location ()) = m_oldErrno; } 194s 1515: private: 194s 1515: int m_oldErrno; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: bool isDebuggerActive() { 194s 1515: ErrnoGuard guard; 194s 1515: std::ifstream in("/proc/self/status"); 194s 1515: for(std::string line; std::getline(in, line);) { 194s 1515: static const int PREFIX_LEN = 11; 194s 1515: if(line.compare(0, PREFIX_LEN, "TracerPid:\t") == 0) { 194s 1515: return line.length() > PREFIX_LEN && line[PREFIX_LEN] != '0'; 194s 1515: } 194s 1515: } 194s 1515: return false; 194s 1515: } 194s 1515: # 4597 "/usr/include/doctest/doctest.h" 3 4 194s 1515: void registerExceptionTranslatorImpl(const IExceptionTranslator* et) { 194s 1515: if(std::find(getExceptionTranslators().begin(), getExceptionTranslators().end(), et) == 194s 1515: getExceptionTranslators().end()) 194s 1515: getExceptionTranslators().push_back(et); 194s 1515: } 194s 1515: 194s 1515: thread_local std::vector g_infoContexts; 194s 1515: 194s 1515: ContextScopeBase::ContextScopeBase() { 194s 1515: g_infoContexts.push_back(this); 194s 1515: } 194s 1515: 194s 1515: ContextScopeBase::ContextScopeBase(ContextScopeBase&& other) noexcept { 194s 1515: if (other.need_to_destroy) { 194s 1515: other.destroy(); 194s 1515: } 194s 1515: other.need_to_destroy = false; 194s 1515: g_infoContexts.push_back(this); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 4618 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic push 194s 1515: # 4618 "/usr/include/doctest/doctest.h" 3 4 194s 1515: 194s 1515: # 4618 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void ContextScopeBase::destroy() { 194s 1515: 194s 1515: 194s 1515: 194s 1515: if(std::uncaught_exception()) { 194s 1515: 194s 1515: std::ostringstream s; 194s 1515: this->stringify(&s); 194s 1515: g_cs->stringifiedContexts.push_back(s.str().c_str()); 194s 1515: } 194s 1515: g_infoContexts.pop_back(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 4638 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: } 194s 1515: namespace { 194s 1515: using namespace detail; 194s 1515: # 4653 "/usr/include/doctest/doctest.h" 3 4 194s 1515: void reportFatal(const std::string&); 194s 1515: # 4805 "/usr/include/doctest/doctest.h" 3 4 194s 1515: struct SignalDefs 194s 1515: { 194s 1515: int id; 194s 1515: const char* name; 194s 1515: }; 194s 1515: SignalDefs signalDefs[] = {{2, "SIGINT - Terminal interrupt signal"}, 194s 1515: {4, "SIGILL - Illegal instruction signal"}, 194s 1515: {8, "SIGFPE - Floating point error signal"}, 194s 1515: {11, "SIGSEGV - Segmentation violation signal"}, 194s 1515: {15, "SIGTERM - Termination request signal"}, 194s 1515: {6, "SIGABRT - Abort (abnormal termination) signal"}}; 194s 1515: 194s 1515: struct FatalConditionHandler 194s 1515: { 194s 1515: static bool isSet; 194s 1515: static struct sigaction oldSigActions[(sizeof(signalDefs) / sizeof(signalDefs[0]))]; 194s 1515: static stack_t oldSigStack; 194s 1515: static size_t altStackSize; 194s 1515: static char* altStackMem; 194s 1515: 194s 1515: static void handleSignal(int sig) { 194s 1515: const char* name = ""; 194s 1515: for(std::size_t i = 0; i < (sizeof(signalDefs) / sizeof(signalDefs[0])); ++i) { 194s 1515: SignalDefs& def = signalDefs[i]; 194s 1515: if(sig == def.id) { 194s 1515: name = def.name; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: reset(); 194s 1515: reportFatal(name); 194s 1515: raise(sig); 194s 1515: } 194s 1515: 194s 1515: static void allocateAltStackMem() { 194s 1515: altStackMem = new char[altStackSize]; 194s 1515: } 194s 1515: 194s 1515: static void freeAltStackMem() { 194s 1515: delete[] altStackMem; 194s 1515: } 194s 1515: 194s 1515: FatalConditionHandler() { 194s 1515: isSet = true; 194s 1515: stack_t sigStack; 194s 1515: sigStack.ss_sp = altStackMem; 194s 1515: sigStack.ss_size = altStackSize; 194s 1515: sigStack.ss_flags = 0; 194s 1515: sigaltstack(&sigStack, &oldSigStack); 194s 1515: struct sigaction sa = {}; 194s 1515: sa.__sigaction_handler.sa_handler = handleSignal; 194s 1515: sa.sa_flags = 0x08000000; 194s 1515: for(std::size_t i = 0; i < (sizeof(signalDefs) / sizeof(signalDefs[0])); ++i) { 194s 1515: sigaction(signalDefs[i].id, &sa, &oldSigActions[i]); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: ~FatalConditionHandler() { reset(); } 194s 1515: static void reset() { 194s 1515: if(isSet) { 194s 1515: 194s 1515: for(std::size_t i = 0; i < (sizeof(signalDefs) / sizeof(signalDefs[0])); ++i) { 194s 1515: sigaction(signalDefs[i].id, &oldSigActions[i], nullptr); 194s 1515: } 194s 1515: 194s 1515: sigaltstack(&oldSigStack, nullptr); 194s 1515: isSet = false; 194s 1515: } 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: bool FatalConditionHandler::isSet = false; 194s 1515: struct sigaction FatalConditionHandler::oldSigActions[(sizeof(signalDefs) / sizeof(signalDefs[0]))] = {}; 194s 1515: stack_t FatalConditionHandler::oldSigStack = {}; 194s 1515: size_t FatalConditionHandler::altStackSize = 4 * sysconf (_SC_SIGSTKSZ); 194s 1515: char* FatalConditionHandler::altStackMem = nullptr; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: namespace { 194s 1515: using namespace detail; 194s 1515: # 4897 "/usr/include/doctest/doctest.h" 3 4 194s 1515: void addAssert(assertType::Enum at) { 194s 1515: if((at & assertType::is_warn) == 0) 194s 1515: g_cs->numAssertsCurrentTest_atomic++; 194s 1515: } 194s 1515: 194s 1515: void addFailedAssert(assertType::Enum at) { 194s 1515: if((at & assertType::is_warn) == 0) 194s 1515: g_cs->numAssertsFailedCurrentTest_atomic++; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void reportFatal(const std::string& message) { 194s 1515: g_cs->failure_flags |= TestCaseFailureReason::Crash; 194s 1515: 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_exception({message.c_str(), true}); 194s 1515: 194s 1515: while (g_cs->subcaseStack.size()) { 194s 1515: g_cs->subcaseStack.pop_back(); 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->subcase_end(); 194s 1515: } 194s 1515: 194s 1515: g_cs->finalizeTestCaseData(); 194s 1515: 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_end(*g_cs); 194s 1515: 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_run_end(*g_cs); 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: 194s 1515: AssertData::AssertData(assertType::Enum at, const char* file, int line, const char* expr, 194s 1515: const char* exception_type, const StringContains& exception_string) 194s 1515: : m_test_case(g_cs->currentTest), m_at(at), m_file(file), m_line(line), m_expr(expr), 194s 1515: m_failed(true), m_threw(false), m_threw_as(false), m_exception_type(exception_type), 194s 1515: m_exception_string(exception_string) { 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: 194s 1515: namespace detail { 194s 1515: ResultBuilder::ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr, 194s 1515: const char* exception_type, const String& exception_string) 194s 1515: : AssertData(at, file, line, expr, exception_type, exception_string) { } 194s 1515: 194s 1515: ResultBuilder::ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr, 194s 1515: const char* exception_type, const Contains& exception_string) 194s 1515: : AssertData(at, file, line, expr, exception_type, exception_string) { } 194s 1515: 194s 1515: void ResultBuilder::setResult(const Result& res) { 194s 1515: m_decomp = res.m_decomp; 194s 1515: m_failed = !res.m_passed; 194s 1515: } 194s 1515: 194s 1515: void ResultBuilder::translateException() { 194s 1515: m_threw = true; 194s 1515: m_exception = translateActiveException(); 194s 1515: } 194s 1515: 194s 1515: bool ResultBuilder::log() { 194s 1515: if(m_at & assertType::is_throws) { 194s 1515: m_failed = !m_threw; 194s 1515: } else if((m_at & assertType::is_throws_as) && (m_at & assertType::is_throws_with)) { 194s 1515: m_failed = !m_threw_as || !m_exception_string.check(m_exception); 194s 1515: } else if(m_at & assertType::is_throws_as) { 194s 1515: m_failed = !m_threw_as; 194s 1515: } else if(m_at & assertType::is_throws_with) { 194s 1515: m_failed = !m_exception_string.check(m_exception); 194s 1515: } else if(m_at & assertType::is_nothrow) { 194s 1515: m_failed = m_threw; 194s 1515: } 194s 1515: 194s 1515: if(m_exception.size()) 194s 1515: m_exception = "\"" + m_exception + "\""; 194s 1515: 194s 1515: if(is_running_in_test) { 194s 1515: addAssert(m_at); 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->log_assert(*this); 194s 1515: 194s 1515: if(m_failed) 194s 1515: addFailedAssert(m_at); 194s 1515: } else if(m_failed) { 194s 1515: failed_out_of_a_testing_context(*this); 194s 1515: } 194s 1515: 194s 1515: return m_failed && isDebuggerActive() && !getContextOptions()->no_breaks && 194s 1515: (g_cs->currentTest == nullptr || !g_cs->currentTest->m_no_breaks); 194s 1515: } 194s 1515: 194s 1515: void ResultBuilder::react() const { 194s 1515: if(m_failed && checkIfShouldThrow(m_at)) 194s 1515: throwException(); 194s 1515: } 194s 1515: 194s 1515: void failed_out_of_a_testing_context(const AssertData& ad) { 194s 1515: if(g_cs->ah) 194s 1515: g_cs->ah(ad); 194s 1515: else 194s 1515: std::abort(); 194s 1515: } 194s 1515: 194s 1515: bool decomp_assert(assertType::Enum at, const char* file, int line, const char* expr, 194s 1515: const Result& result) { 194s 1515: bool failed = !result.m_passed; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: do { if(!is_running_in_test) { if(failed) { ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; rb.m_decomp = result.m_decomp; failed_out_of_a_testing_context(rb); if(isDebuggerActive() && !getContextOptions()->no_breaks) raise(5); if(checkIfShouldThrow(at)) throwException(); } return !failed; } } while(false); 194s 1515: ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; if(rb.m_failed || getContextOptions()->success) rb.m_decomp = result.m_decomp; if(rb.log()) raise(5); if(rb.m_failed && checkIfShouldThrow(at)) throwException(); 194s 1515: return !failed; 194s 1515: } 194s 1515: 194s 1515: MessageBuilder::MessageBuilder(const char* file, int line, assertType::Enum severity) { 194s 1515: m_stream = tlssPush(); 194s 1515: m_file = file; 194s 1515: m_line = line; 194s 1515: m_severity = severity; 194s 1515: } 194s 1515: 194s 1515: MessageBuilder::~MessageBuilder() { 194s 1515: if (!logged) 194s 1515: tlssPop(); 194s 1515: } 194s 1515: 194s 1515: IExceptionTranslator::~IExceptionTranslator() = default; 194s 1515: 194s 1515: bool MessageBuilder::log() { 194s 1515: if (!logged) { 194s 1515: m_string = tlssPop(); 194s 1515: logged = true; 194s 1515: } 194s 1515: 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->log_message(*this); 194s 1515: 194s 1515: const bool isWarn = m_severity & assertType::is_warn; 194s 1515: 194s 1515: 194s 1515: if(!isWarn) { 194s 1515: addAssert(m_severity); 194s 1515: addFailedAssert(m_severity); 194s 1515: } 194s 1515: 194s 1515: return isDebuggerActive() && !getContextOptions()->no_breaks && !isWarn && 194s 1515: (g_cs->currentTest == nullptr || !g_cs->currentTest->m_no_breaks); 194s 1515: } 194s 1515: 194s 1515: void MessageBuilder::react() { 194s 1515: if(m_severity & assertType::is_require) 194s 1515: throwException(); 194s 1515: } 194s 1515: } 194s 1515: namespace { 194s 1515: using namespace detail; 194s 1515: # 5061 "/usr/include/doctest/doctest.h" 3 4 194s 1515: class XmlEncode { 194s 1515: public: 194s 1515: enum ForWhat { ForTextNodes, ForAttributes }; 194s 1515: 194s 1515: XmlEncode( std::string const& str, ForWhat forWhat = ForTextNodes ); 194s 1515: 194s 1515: void encodeTo( std::ostream& os ) const; 194s 1515: 194s 1515: friend std::ostream& operator << ( std::ostream& os, XmlEncode const& xmlEncode ); 194s 1515: 194s 1515: private: 194s 1515: std::string m_str; 194s 1515: ForWhat m_forWhat; 194s 1515: }; 194s 1515: 194s 1515: class XmlWriter { 194s 1515: public: 194s 1515: 194s 1515: class ScopedElement { 194s 1515: public: 194s 1515: ScopedElement( XmlWriter* writer ); 194s 1515: 194s 1515: ScopedElement( ScopedElement&& other ) noexcept; 194s 1515: ScopedElement& operator=( ScopedElement&& other ) noexcept; 194s 1515: 194s 1515: ~ScopedElement(); 194s 1515: 194s 1515: ScopedElement& writeText( std::string const& text, bool indent = true ); 194s 1515: 194s 1515: template 194s 1515: ScopedElement& writeAttribute( std::string const& name, T const& attribute ) { 194s 1515: m_writer->writeAttribute( name, attribute ); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: private: 194s 1515: mutable XmlWriter* m_writer = nullptr; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: XmlWriter( std::ostream& os = std::cout ); 194s 1515: 194s 1515: 194s 1515: 194s 1515: ~XmlWriter(); 194s 1515: 194s 1515: XmlWriter( XmlWriter const& ) = delete; 194s 1515: XmlWriter& operator=( XmlWriter const& ) = delete; 194s 1515: 194s 1515: XmlWriter& startElement( std::string const& name ); 194s 1515: 194s 1515: ScopedElement scopedElement( std::string const& name ); 194s 1515: 194s 1515: XmlWriter& endElement(); 194s 1515: 194s 1515: XmlWriter& writeAttribute( std::string const& name, std::string const& attribute ); 194s 1515: 194s 1515: XmlWriter& writeAttribute( std::string const& name, const char* attribute ); 194s 1515: 194s 1515: XmlWriter& writeAttribute( std::string const& name, bool attribute ); 194s 1515: 194s 1515: template 194s 1515: XmlWriter& writeAttribute( std::string const& name, T const& attribute ) { 194s 1515: std::stringstream rss; 194s 1515: rss << attribute; 194s 1515: return writeAttribute( name, rss.str() ); 194s 1515: } 194s 1515: 194s 1515: XmlWriter& writeText( std::string const& text, bool indent = true ); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void ensureTagClosed(); 194s 1515: 194s 1515: void writeDeclaration(); 194s 1515: 194s 1515: private: 194s 1515: 194s 1515: void newlineIfNecessary(); 194s 1515: 194s 1515: bool m_tagIsOpen = false; 194s 1515: bool m_needsNewline = false; 194s 1515: std::vector m_tags; 194s 1515: std::string m_indent; 194s 1515: std::ostream& m_os; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: using uchar = unsigned char; 194s 1515: 194s 1515: namespace { 194s 1515: 194s 1515: size_t trailingBytes(unsigned char c) { 194s 1515: if ((c & 0xE0) == 0xC0) { 194s 1515: return 2; 194s 1515: } 194s 1515: if ((c & 0xF0) == 0xE0) { 194s 1515: return 3; 194s 1515: } 194s 1515: if ((c & 0xF8) == 0xF0) { 194s 1515: return 4; 194s 1515: } 194s 1515: throw_exception(std::logic_error( "/usr/include/doctest/doctest.h" ":" "5171" ": Internal doctest error: " "Invalid multibyte utf-8 start byte encountered")); 194s 1515: } 194s 1515: 194s 1515: uint32_t headerValue(unsigned char c) { 194s 1515: if ((c & 0xE0) == 0xC0) { 194s 1515: return c & 0x1F; 194s 1515: } 194s 1515: if ((c & 0xF0) == 0xE0) { 194s 1515: return c & 0x0F; 194s 1515: } 194s 1515: if ((c & 0xF8) == 0xF0) { 194s 1515: return c & 0x07; 194s 1515: } 194s 1515: throw_exception(std::logic_error( "/usr/include/doctest/doctest.h" ":" "5184" ": Internal doctest error: " "Invalid multibyte utf-8 start byte encountered")); 194s 1515: } 194s 1515: 194s 1515: void hexEscapeChar(std::ostream& os, unsigned char c) { 194s 1515: std::ios_base::fmtflags f(os.flags()); 194s 1515: os << "\\x" 194s 1515: << std::uppercase << std::hex << std::setfill('0') << std::setw(2) 194s 1515: << static_cast(c); 194s 1515: os.flags(f); 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: 194s 1515: XmlEncode::XmlEncode( std::string const& str, ForWhat forWhat ) 194s 1515: : m_str( str ), 194s 1515: m_forWhat( forWhat ) 194s 1515: {} 194s 1515: 194s 1515: void XmlEncode::encodeTo( std::ostream& os ) const { 194s 1515: 194s 1515: 194s 1515: 194s 1515: for( std::size_t idx = 0; idx < m_str.size(); ++ idx ) { 194s 1515: uchar c = m_str[idx]; 194s 1515: switch (c) { 194s 1515: case '<': os << "<"; break; 194s 1515: case '&': os << "&"; break; 194s 1515: 194s 1515: case '>': 194s 1515: 194s 1515: if (idx > 2 && m_str[idx - 1] == ']' && m_str[idx - 2] == ']') 194s 1515: os << ">"; 194s 1515: else 194s 1515: os << c; 194s 1515: break; 194s 1515: 194s 1515: case '\"': 194s 1515: if (m_forWhat == ForAttributes) 194s 1515: os << """; 194s 1515: else 194s 1515: os << c; 194s 1515: break; 194s 1515: 194s 1515: default: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (c < 0x09 || (c > 0x0D && c < 0x20) || c == 0x7F) { 194s 1515: hexEscapeChar(os, c); 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if (c < 0x7F) { 194s 1515: os << c; 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if (c < 0xC0 || 194s 1515: c >= 0xF8) { 194s 1515: hexEscapeChar(os, c); 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: auto encBytes = trailingBytes(c); 194s 1515: 194s 1515: if (idx + encBytes - 1 >= m_str.size()) { 194s 1515: hexEscapeChar(os, c); 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: bool valid = true; 194s 1515: uint32_t value = headerValue(c); 194s 1515: for (std::size_t n = 1; n < encBytes; ++n) { 194s 1515: uchar nc = m_str[idx + n]; 194s 1515: valid &= ((nc & 0xC0) == 0x80); 194s 1515: value = (value << 6) | (nc & 0x3F); 194s 1515: } 194s 1515: 194s 1515: if ( 194s 1515: 194s 1515: (!valid) || 194s 1515: 194s 1515: (value < 0x80) || 194s 1515: ( value < 0x800 && encBytes > 2) || 194s 1515: (0x800 < value && value < 0x10000 && encBytes > 3) || 194s 1515: 194s 1515: (value >= 0x110000) 194s 1515: ) { 194s 1515: hexEscapeChar(os, c); 194s 1515: break; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: for (std::size_t n = 0; n < encBytes; ++n) { 194s 1515: os << m_str[idx + n]; 194s 1515: } 194s 1515: idx += encBytes - 1; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: std::ostream& operator << ( std::ostream& os, XmlEncode const& xmlEncode ) { 194s 1515: xmlEncode.encodeTo( os ); 194s 1515: return os; 194s 1515: } 194s 1515: 194s 1515: XmlWriter::ScopedElement::ScopedElement( XmlWriter* writer ) 194s 1515: : m_writer( writer ) 194s 1515: {} 194s 1515: 194s 1515: XmlWriter::ScopedElement::ScopedElement( ScopedElement&& other ) noexcept 194s 1515: : m_writer( other.m_writer ){ 194s 1515: other.m_writer = nullptr; 194s 1515: } 194s 1515: XmlWriter::ScopedElement& XmlWriter::ScopedElement::operator=( ScopedElement&& other ) noexcept { 194s 1515: if ( m_writer ) { 194s 1515: m_writer->endElement(); 194s 1515: } 194s 1515: m_writer = other.m_writer; 194s 1515: other.m_writer = nullptr; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: XmlWriter::ScopedElement::~ScopedElement() { 194s 1515: if( m_writer ) 194s 1515: m_writer->endElement(); 194s 1515: } 194s 1515: 194s 1515: XmlWriter::ScopedElement& XmlWriter::ScopedElement::writeText( std::string const& text, bool indent ) { 194s 1515: m_writer->writeText( text, indent ); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: XmlWriter::XmlWriter( std::ostream& os ) : m_os( os ) 194s 1515: { 194s 1515: 194s 1515: } 194s 1515: 194s 1515: XmlWriter::~XmlWriter() { 194s 1515: while( !m_tags.empty() ) 194s 1515: endElement(); 194s 1515: } 194s 1515: 194s 1515: XmlWriter& XmlWriter::startElement( std::string const& name ) { 194s 1515: ensureTagClosed(); 194s 1515: newlineIfNecessary(); 194s 1515: m_os << m_indent << '<' << name; 194s 1515: m_tags.push_back( name ); 194s 1515: m_indent += " "; 194s 1515: m_tagIsOpen = true; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: XmlWriter::ScopedElement XmlWriter::scopedElement( std::string const& name ) { 194s 1515: ScopedElement scoped( this ); 194s 1515: startElement( name ); 194s 1515: return scoped; 194s 1515: } 194s 1515: 194s 1515: XmlWriter& XmlWriter::endElement() { 194s 1515: newlineIfNecessary(); 194s 1515: m_indent = m_indent.substr( 0, m_indent.size()-2 ); 194s 1515: if( m_tagIsOpen ) { 194s 1515: m_os << "/>"; 194s 1515: m_tagIsOpen = false; 194s 1515: } 194s 1515: else { 194s 1515: m_os << m_indent << ""; 194s 1515: } 194s 1515: m_os << std::endl; 194s 1515: m_tags.pop_back(); 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: XmlWriter& XmlWriter::writeAttribute( std::string const& name, std::string const& attribute ) { 194s 1515: if( !name.empty() && !attribute.empty() ) 194s 1515: m_os << ' ' << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << '"'; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: XmlWriter& XmlWriter::writeAttribute( std::string const& name, const char* attribute ) { 194s 1515: if( !name.empty() && attribute && attribute[0] != '\0' ) 194s 1515: m_os << ' ' << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << '"'; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: XmlWriter& XmlWriter::writeAttribute( std::string const& name, bool attribute ) { 194s 1515: m_os << ' ' << name << "=\"" << ( attribute ? "true" : "false" ) << '"'; 194s 1515: return *this; 194s 1515: } 194s 1515: 194s 1515: XmlWriter& XmlWriter::writeText( std::string const& text, bool indent ) { 194s 1515: if( !text.empty() ){ 194s 1515: bool tagWasOpen = m_tagIsOpen; 194s 1515: ensureTagClosed(); 194s 1515: if( tagWasOpen && indent ) 194s 1515: m_os << m_indent; 194s 1515: m_os << XmlEncode( text ); 194s 1515: m_needsNewline = true; 194s 1515: } 194s 1515: return *this; 194s 1515: } 194s 1515: # 5416 "/usr/include/doctest/doctest.h" 3 4 194s 1515: void XmlWriter::ensureTagClosed() { 194s 1515: if( m_tagIsOpen ) { 194s 1515: m_os << ">" << std::endl; 194s 1515: m_tagIsOpen = false; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: void XmlWriter::writeDeclaration() { 194s 1515: m_os << "\n"; 194s 1515: } 194s 1515: 194s 1515: void XmlWriter::newlineIfNecessary() { 194s 1515: if( m_needsNewline ) { 194s 1515: m_os << std::endl; 194s 1515: m_needsNewline = false; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct XmlReporter : public IReporter 194s 1515: { 194s 1515: XmlWriter xml; 194s 1515: std::mutex mutex; 194s 1515: 194s 1515: 194s 1515: const ContextOptions& opt; 194s 1515: const TestCaseData* tc = nullptr; 194s 1515: 194s 1515: XmlReporter(const ContextOptions& co) 194s 1515: : xml(*co.cout) 194s 1515: , opt(co) {} 194s 1515: 194s 1515: void log_contexts() { 194s 1515: int num_contexts = get_num_active_contexts(); 194s 1515: if(num_contexts) { 194s 1515: auto contexts = get_active_contexts(); 194s 1515: std::stringstream ss; 194s 1515: for(int i = 0; i < num_contexts; ++i) { 194s 1515: contexts[i]->stringify(&ss); 194s 1515: xml.scopedElement("Info").writeText(ss.str()); 194s 1515: ss.str(""); 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: unsigned line(unsigned l) const { return opt.no_line_numbers ? 0 : l; } 194s 1515: 194s 1515: void test_case_start_impl(const TestCaseData& in) { 194s 1515: bool open_ts_tag = false; 194s 1515: if(tc != nullptr) { 194s 1515: if(std::strcmp(tc->m_test_suite, in.m_test_suite) != 0) { 194s 1515: xml.endElement(); 194s 1515: open_ts_tag = true; 194s 1515: } 194s 1515: } 194s 1515: else { 194s 1515: open_ts_tag = true; 194s 1515: } 194s 1515: 194s 1515: if(open_ts_tag) { 194s 1515: xml.startElement("TestSuite"); 194s 1515: xml.writeAttribute("name", in.m_test_suite); 194s 1515: } 194s 1515: 194s 1515: tc = ∈ 194s 1515: xml.startElement("TestCase") 194s 1515: .writeAttribute("name", in.m_name) 194s 1515: .writeAttribute("filename", skipPathFromFilename(in.m_file.c_str())) 194s 1515: .writeAttribute("line", line(in.m_line)) 194s 1515: .writeAttribute("description", in.m_description); 194s 1515: 194s 1515: if(Approx(in.m_timeout) != 0) 194s 1515: xml.writeAttribute("timeout", in.m_timeout); 194s 1515: if(in.m_may_fail) 194s 1515: xml.writeAttribute("may_fail", true); 194s 1515: if(in.m_should_fail) 194s 1515: xml.writeAttribute("should_fail", true); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void report_query(const QueryData& in) override { 194s 1515: test_run_start(); 194s 1515: if(opt.list_reporters) { 194s 1515: for(auto& curr : getListeners()) 194s 1515: xml.scopedElement("Listener") 194s 1515: .writeAttribute("priority", curr.first.first) 194s 1515: .writeAttribute("name", curr.first.second); 194s 1515: for(auto& curr : getReporters()) 194s 1515: xml.scopedElement("Reporter") 194s 1515: .writeAttribute("priority", curr.first.first) 194s 1515: .writeAttribute("name", curr.first.second); 194s 1515: } else if(opt.count || opt.list_test_cases) { 194s 1515: for(unsigned i = 0; i < in.num_data; ++i) { 194s 1515: xml.scopedElement("TestCase").writeAttribute("name", in.data[i]->m_name) 194s 1515: .writeAttribute("testsuite", in.data[i]->m_test_suite) 194s 1515: .writeAttribute("filename", skipPathFromFilename(in.data[i]->m_file.c_str())) 194s 1515: .writeAttribute("line", line(in.data[i]->m_line)) 194s 1515: .writeAttribute("skipped", in.data[i]->m_skip); 194s 1515: } 194s 1515: xml.scopedElement("OverallResultsTestCases") 194s 1515: .writeAttribute("unskipped", in.run_stats->numTestCasesPassingFilters); 194s 1515: } else if(opt.list_test_suites) { 194s 1515: for(unsigned i = 0; i < in.num_data; ++i) 194s 1515: xml.scopedElement("TestSuite").writeAttribute("name", in.data[i]->m_test_suite); 194s 1515: xml.scopedElement("OverallResultsTestCases") 194s 1515: .writeAttribute("unskipped", in.run_stats->numTestCasesPassingFilters); 194s 1515: xml.scopedElement("OverallResultsTestSuites") 194s 1515: .writeAttribute("unskipped", in.run_stats->numTestSuitesPassingFilters); 194s 1515: } 194s 1515: xml.endElement(); 194s 1515: } 194s 1515: 194s 1515: void test_run_start() override { 194s 1515: xml.writeDeclaration(); 194s 1515: 194s 1515: 194s 1515: std::string binary_name = skipPathFromFilename(opt.binary_name.c_str()); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: xml.startElement("doctest").writeAttribute("binary", binary_name); 194s 1515: if(opt.no_version == false) 194s 1515: xml.writeAttribute("version", "2" "." "4" "." "12"); 194s 1515: 194s 1515: 194s 1515: xml.scopedElement("Options") 194s 1515: .writeAttribute("order_by", opt.order_by.c_str()) 194s 1515: .writeAttribute("rand_seed", opt.rand_seed) 194s 1515: .writeAttribute("first", opt.first) 194s 1515: .writeAttribute("last", opt.last) 194s 1515: .writeAttribute("abort_after", opt.abort_after) 194s 1515: .writeAttribute("subcase_filter_levels", opt.subcase_filter_levels) 194s 1515: .writeAttribute("case_sensitive", opt.case_sensitive) 194s 1515: .writeAttribute("no_throw", opt.no_throw) 194s 1515: .writeAttribute("no_skip", opt.no_skip); 194s 1515: } 194s 1515: 194s 1515: void test_run_end(const TestRunStats& p) override { 194s 1515: if(tc) 194s 1515: xml.endElement(); 194s 1515: 194s 1515: xml.scopedElement("OverallResultsAsserts") 194s 1515: .writeAttribute("successes", p.numAsserts - p.numAssertsFailed) 194s 1515: .writeAttribute("failures", p.numAssertsFailed); 194s 1515: 194s 1515: xml.startElement("OverallResultsTestCases") 194s 1515: .writeAttribute("successes", 194s 1515: p.numTestCasesPassingFilters - p.numTestCasesFailed) 194s 1515: .writeAttribute("failures", p.numTestCasesFailed); 194s 1515: if(opt.no_skipped_summary == false) 194s 1515: xml.writeAttribute("skipped", p.numTestCases - p.numTestCasesPassingFilters); 194s 1515: xml.endElement(); 194s 1515: 194s 1515: xml.endElement(); 194s 1515: } 194s 1515: 194s 1515: void test_case_start(const TestCaseData& in) override { 194s 1515: test_case_start_impl(in); 194s 1515: xml.ensureTagClosed(); 194s 1515: } 194s 1515: 194s 1515: void test_case_reenter(const TestCaseData&) override {} 194s 1515: 194s 1515: void test_case_end(const CurrentTestCaseStats& st) override { 194s 1515: xml.startElement("OverallResultsAsserts") 194s 1515: .writeAttribute("successes", 194s 1515: st.numAssertsCurrentTest - st.numAssertsFailedCurrentTest) 194s 1515: .writeAttribute("failures", st.numAssertsFailedCurrentTest) 194s 1515: .writeAttribute("test_case_success", st.testCaseSuccess); 194s 1515: if(opt.duration) 194s 1515: xml.writeAttribute("duration", st.seconds); 194s 1515: if(tc->m_expected_failures) 194s 1515: xml.writeAttribute("expected_failures", tc->m_expected_failures); 194s 1515: xml.endElement(); 194s 1515: 194s 1515: xml.endElement(); 194s 1515: } 194s 1515: 194s 1515: void test_case_exception(const TestCaseException& e) override { 194s 1515: std::lock_guard DOCTEST_ANON_LOCK_2(mutex); 194s 1515: 194s 1515: xml.scopedElement("Exception") 194s 1515: .writeAttribute("crash", e.is_crash) 194s 1515: .writeText(e.error_string.c_str()); 194s 1515: } 194s 1515: 194s 1515: void subcase_start(const SubcaseSignature& in) override { 194s 1515: xml.startElement("SubCase") 194s 1515: .writeAttribute("name", in.m_name) 194s 1515: .writeAttribute("filename", skipPathFromFilename(in.m_file)) 194s 1515: .writeAttribute("line", line(in.m_line)); 194s 1515: xml.ensureTagClosed(); 194s 1515: } 194s 1515: 194s 1515: void subcase_end() override { xml.endElement(); } 194s 1515: 194s 1515: void log_assert(const AssertData& rb) override { 194s 1515: if(!rb.m_failed && !opt.success) 194s 1515: return; 194s 1515: 194s 1515: std::lock_guard DOCTEST_ANON_LOCK_3(mutex); 194s 1515: 194s 1515: xml.startElement("Expression") 194s 1515: .writeAttribute("success", !rb.m_failed) 194s 1515: .writeAttribute("type", assertString(rb.m_at)) 194s 1515: .writeAttribute("filename", skipPathFromFilename(rb.m_file)) 194s 1515: .writeAttribute("line", line(rb.m_line)); 194s 1515: 194s 1515: xml.scopedElement("Original").writeText(rb.m_expr); 194s 1515: 194s 1515: if(rb.m_threw) 194s 1515: xml.scopedElement("Exception").writeText(rb.m_exception.c_str()); 194s 1515: 194s 1515: if(rb.m_at & assertType::is_throws_as) 194s 1515: xml.scopedElement("ExpectedException").writeText(rb.m_exception_type); 194s 1515: if(rb.m_at & assertType::is_throws_with) 194s 1515: xml.scopedElement("ExpectedExceptionString").writeText(rb.m_exception_string.c_str()); 194s 1515: if((rb.m_at & assertType::is_normal) && !rb.m_threw) 194s 1515: xml.scopedElement("Expanded").writeText(rb.m_decomp.c_str()); 194s 1515: 194s 1515: log_contexts(); 194s 1515: 194s 1515: xml.endElement(); 194s 1515: } 194s 1515: 194s 1515: void log_message(const MessageData& mb) override { 194s 1515: std::lock_guard DOCTEST_ANON_LOCK_4(mutex); 194s 1515: 194s 1515: xml.startElement("Message") 194s 1515: .writeAttribute("type", failureString(mb.m_severity)) 194s 1515: .writeAttribute("filename", skipPathFromFilename(mb.m_file)) 194s 1515: .writeAttribute("line", line(mb.m_line)); 194s 1515: 194s 1515: xml.scopedElement("Text").writeText(mb.m_string.c_str()); 194s 1515: 194s 1515: log_contexts(); 194s 1515: 194s 1515: xml.endElement(); 194s 1515: } 194s 1515: 194s 1515: void test_case_skipped(const TestCaseData& in) override { 194s 1515: if(opt.no_skipped_summary == false) { 194s 1515: test_case_start_impl(in); 194s 1515: xml.writeAttribute("skipped", "true"); 194s 1515: xml.endElement(); 194s 1515: } 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: static const int DOCTEST_ANON_REPORTER_5 = doctest::detail::consume(&DOCTEST_ANON_REPORTER_5, doctest::registerReporter("xml", 0, true)); static_assert(true, ""); 194s 1515: 194s 1515: void fulltext_log_assert_to_stream(std::ostream& s, const AssertData& rb) { 194s 1515: if((rb.m_at & (assertType::is_throws_as | assertType::is_throws_with)) == 194s 1515: 0) 194s 1515: s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << " ) " 194s 1515: << Color::None; 194s 1515: 194s 1515: if(rb.m_at & assertType::is_throws) { 194s 1515: s << (rb.m_threw ? "threw as expected!" : "did NOT throw at all!") << "\n"; 194s 1515: } else if((rb.m_at & assertType::is_throws_as) && 194s 1515: (rb.m_at & assertType::is_throws_with)) { 194s 1515: s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << ", \"" 194s 1515: << rb.m_exception_string.c_str() 194s 1515: << "\", " << rb.m_exception_type << " ) " << Color::None; 194s 1515: if(rb.m_threw) { 194s 1515: if(!rb.m_failed) { 194s 1515: s << "threw as expected!\n"; 194s 1515: } else { 194s 1515: s << "threw a DIFFERENT exception! (contents: " << rb.m_exception << ")\n"; 194s 1515: } 194s 1515: } else { 194s 1515: s << "did NOT throw at all!\n"; 194s 1515: } 194s 1515: } else if(rb.m_at & 194s 1515: assertType::is_throws_as) { 194s 1515: s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << ", " 194s 1515: << rb.m_exception_type << " ) " << Color::None 194s 1515: << (rb.m_threw ? (rb.m_threw_as ? "threw as expected!" : 194s 1515: "threw a DIFFERENT exception: ") : 194s 1515: "did NOT throw at all!") 194s 1515: << Color::Cyan << rb.m_exception << "\n"; 194s 1515: } else if(rb.m_at & 194s 1515: assertType::is_throws_with) { 194s 1515: s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << ", \"" 194s 1515: << rb.m_exception_string.c_str() 194s 1515: << "\" ) " << Color::None 194s 1515: << (rb.m_threw ? (!rb.m_failed ? "threw as expected!" : 194s 1515: "threw a DIFFERENT exception: ") : 194s 1515: "did NOT throw at all!") 194s 1515: << Color::Cyan << rb.m_exception << "\n"; 194s 1515: } else if(rb.m_at & assertType::is_nothrow) { 194s 1515: s << (rb.m_threw ? "THREW exception: " : "didn't throw!") << Color::Cyan 194s 1515: << rb.m_exception << "\n"; 194s 1515: } else { 194s 1515: s << (rb.m_threw ? "THREW exception: " : 194s 1515: (!rb.m_failed ? "is correct!\n" : "is NOT correct!\n")); 194s 1515: if(rb.m_threw) 194s 1515: s << rb.m_exception << "\n"; 194s 1515: else 194s 1515: s << " values: " << assertString(rb.m_at) << "( " << rb.m_decomp << " )\n"; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: struct JUnitReporter : public IReporter 194s 1515: { 194s 1515: XmlWriter xml; 194s 1515: std::mutex mutex; 194s 1515: Timer timer; 194s 1515: std::vector deepestSubcaseStackNames; 194s 1515: 194s 1515: struct JUnitTestCaseData 194s 1515: { 194s 1515: static std::string getCurrentTimestamp() { 194s 1515: 194s 1515: 194s 1515: time_t rawtime; 194s 1515: std::time(&rawtime); 194s 1515: auto const timeStampSize = sizeof("2017-01-16T17:06:45Z"); 194s 1515: 194s 1515: std::tm timeInfo; 194s 1515: 194s 1515: 194s 1515: 194s 1515: gmtime_r(&rawtime, &timeInfo); 194s 1515: 194s 1515: 194s 1515: char timeStamp[timeStampSize]; 194s 1515: const char* const fmt = "%Y-%m-%dT%H:%M:%SZ"; 194s 1515: 194s 1515: std::strftime(timeStamp, timeStampSize, fmt, &timeInfo); 194s 1515: return std::string(timeStamp); 194s 1515: } 194s 1515: 194s 1515: struct JUnitTestMessage 194s 1515: { 194s 1515: JUnitTestMessage(const std::string& _message, const std::string& _type, const std::string& _details) 194s 1515: : message(_message), type(_type), details(_details) {} 194s 1515: 194s 1515: JUnitTestMessage(const std::string& _message, const std::string& _details) 194s 1515: : message(_message), type(), details(_details) {} 194s 1515: 194s 1515: std::string message, type, details; 194s 1515: }; 194s 1515: 194s 1515: struct JUnitTestCase 194s 1515: { 194s 1515: JUnitTestCase(const std::string& _classname, const std::string& _name) 194s 1515: : classname(_classname), name(_name), time(0), failures() {} 194s 1515: 194s 1515: std::string classname, name; 194s 1515: double time; 194s 1515: std::vector failures, errors; 194s 1515: }; 194s 1515: 194s 1515: void add(const std::string& classname, const std::string& name) { 194s 1515: testcases.emplace_back(classname, name); 194s 1515: } 194s 1515: 194s 1515: void appendSubcaseNamesToLastTestcase(std::vector nameStack) { 194s 1515: for(auto& curr: nameStack) 194s 1515: if(curr.size()) 194s 1515: testcases.back().name += std::string("/") + curr.c_str(); 194s 1515: } 194s 1515: 194s 1515: void addTime(double time) { 194s 1515: if(time < 1e-4) 194s 1515: time = 0; 194s 1515: testcases.back().time = time; 194s 1515: totalSeconds += time; 194s 1515: } 194s 1515: 194s 1515: void addFailure(const std::string& message, const std::string& type, const std::string& details) { 194s 1515: testcases.back().failures.emplace_back(message, type, details); 194s 1515: ++totalFailures; 194s 1515: } 194s 1515: 194s 1515: void addError(const std::string& message, const std::string& details) { 194s 1515: testcases.back().errors.emplace_back(message, details); 194s 1515: ++totalErrors; 194s 1515: } 194s 1515: 194s 1515: std::vector testcases; 194s 1515: double totalSeconds = 0; 194s 1515: int totalErrors = 0, totalFailures = 0; 194s 1515: }; 194s 1515: 194s 1515: JUnitTestCaseData testCaseData; 194s 1515: 194s 1515: 194s 1515: const ContextOptions& opt; 194s 1515: const TestCaseData* tc = nullptr; 194s 1515: 194s 1515: JUnitReporter(const ContextOptions& co) 194s 1515: : xml(*co.cout) 194s 1515: , opt(co) {} 194s 1515: 194s 1515: unsigned line(unsigned l) const { return opt.no_line_numbers ? 0 : l; } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void report_query(const QueryData&) override { 194s 1515: xml.writeDeclaration(); 194s 1515: } 194s 1515: 194s 1515: void test_run_start() override { 194s 1515: xml.writeDeclaration(); 194s 1515: } 194s 1515: 194s 1515: void test_run_end(const TestRunStats& p) override { 194s 1515: 194s 1515: std::string binary_name = skipPathFromFilename(opt.binary_name.c_str()); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: xml.startElement("testsuites"); 194s 1515: xml.startElement("testsuite").writeAttribute("name", binary_name) 194s 1515: .writeAttribute("errors", testCaseData.totalErrors) 194s 1515: .writeAttribute("failures", testCaseData.totalFailures) 194s 1515: .writeAttribute("tests", p.numAsserts); 194s 1515: if(opt.no_time_in_output == false) { 194s 1515: xml.writeAttribute("time", testCaseData.totalSeconds); 194s 1515: xml.writeAttribute("timestamp", JUnitTestCaseData::getCurrentTimestamp()); 194s 1515: } 194s 1515: if(opt.no_version == false) 194s 1515: xml.writeAttribute("doctest_version", "2" "." "4" "." "12"); 194s 1515: 194s 1515: for(const auto& testCase : testCaseData.testcases) { 194s 1515: xml.startElement("testcase") 194s 1515: .writeAttribute("classname", testCase.classname) 194s 1515: .writeAttribute("name", testCase.name); 194s 1515: if(opt.no_time_in_output == false) 194s 1515: xml.writeAttribute("time", testCase.time); 194s 1515: 194s 1515: xml.writeAttribute("status", "run"); 194s 1515: 194s 1515: for(const auto& failure : testCase.failures) { 194s 1515: xml.scopedElement("failure") 194s 1515: .writeAttribute("message", failure.message) 194s 1515: .writeAttribute("type", failure.type) 194s 1515: .writeText(failure.details, false); 194s 1515: } 194s 1515: 194s 1515: for(const auto& error : testCase.errors) { 194s 1515: xml.scopedElement("error") 194s 1515: .writeAttribute("message", error.message) 194s 1515: .writeText(error.details); 194s 1515: } 194s 1515: 194s 1515: xml.endElement(); 194s 1515: } 194s 1515: xml.endElement(); 194s 1515: xml.endElement(); 194s 1515: } 194s 1515: 194s 1515: void test_case_start(const TestCaseData& in) override { 194s 1515: testCaseData.add(skipPathFromFilename(in.m_file.c_str()), in.m_name); 194s 1515: timer.start(); 194s 1515: } 194s 1515: 194s 1515: void test_case_reenter(const TestCaseData& in) override { 194s 1515: testCaseData.addTime(timer.getElapsedSeconds()); 194s 1515: testCaseData.appendSubcaseNamesToLastTestcase(deepestSubcaseStackNames); 194s 1515: deepestSubcaseStackNames.clear(); 194s 1515: 194s 1515: timer.start(); 194s 1515: testCaseData.add(skipPathFromFilename(in.m_file.c_str()), in.m_name); 194s 1515: } 194s 1515: 194s 1515: void test_case_end(const CurrentTestCaseStats&) override { 194s 1515: testCaseData.addTime(timer.getElapsedSeconds()); 194s 1515: testCaseData.appendSubcaseNamesToLastTestcase(deepestSubcaseStackNames); 194s 1515: deepestSubcaseStackNames.clear(); 194s 1515: } 194s 1515: 194s 1515: void test_case_exception(const TestCaseException& e) override { 194s 1515: std::lock_guard DOCTEST_ANON_LOCK_6(mutex); 194s 1515: testCaseData.addError("exception", e.error_string.c_str()); 194s 1515: } 194s 1515: 194s 1515: void subcase_start(const SubcaseSignature& in) override { 194s 1515: deepestSubcaseStackNames.push_back(in.m_name); 194s 1515: } 194s 1515: 194s 1515: void subcase_end() override {} 194s 1515: 194s 1515: void log_assert(const AssertData& rb) override { 194s 1515: if(!rb.m_failed) 194s 1515: return; 194s 1515: 194s 1515: std::lock_guard DOCTEST_ANON_LOCK_7(mutex); 194s 1515: 194s 1515: std::ostringstream os; 194s 1515: os << skipPathFromFilename(rb.m_file) << (opt.gnu_file_line ? ":" : "(") 194s 1515: << line(rb.m_line) << (opt.gnu_file_line ? ":" : "):") << std::endl; 194s 1515: 194s 1515: fulltext_log_assert_to_stream(os, rb); 194s 1515: log_contexts(os); 194s 1515: testCaseData.addFailure(rb.m_decomp.c_str(), assertString(rb.m_at), os.str()); 194s 1515: } 194s 1515: 194s 1515: void log_message(const MessageData& mb) override { 194s 1515: if(mb.m_severity & assertType::is_warn) 194s 1515: return; 194s 1515: 194s 1515: std::lock_guard DOCTEST_ANON_LOCK_8(mutex); 194s 1515: 194s 1515: std::ostringstream os; 194s 1515: os << skipPathFromFilename(mb.m_file) << (opt.gnu_file_line ? ":" : "(") 194s 1515: << line(mb.m_line) << (opt.gnu_file_line ? ":" : "):") << std::endl; 194s 1515: 194s 1515: os << mb.m_string.c_str() << "\n"; 194s 1515: log_contexts(os); 194s 1515: 194s 1515: testCaseData.addFailure(mb.m_string.c_str(), 194s 1515: mb.m_severity & assertType::is_check ? "FAIL_CHECK" : "FAIL", os.str()); 194s 1515: } 194s 1515: 194s 1515: void test_case_skipped(const TestCaseData&) override {} 194s 1515: 194s 1515: void log_contexts(std::ostringstream& s) { 194s 1515: int num_contexts = get_num_active_contexts(); 194s 1515: if(num_contexts) { 194s 1515: auto contexts = get_active_contexts(); 194s 1515: 194s 1515: s << " logged: "; 194s 1515: for(int i = 0; i < num_contexts; ++i) { 194s 1515: s << (i == 0 ? "" : " "); 194s 1515: contexts[i]->stringify(&s); 194s 1515: s << std::endl; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: }; 194s 1515: 194s 1515: static const int DOCTEST_ANON_REPORTER_9 = doctest::detail::consume(&DOCTEST_ANON_REPORTER_9, doctest::registerReporter("junit", 0, true)); static_assert(true, ""); 194s 1515: 194s 1515: struct Whitespace 194s 1515: { 194s 1515: int nrSpaces; 194s 1515: explicit Whitespace(int nr) 194s 1515: : nrSpaces(nr) {} 194s 1515: }; 194s 1515: 194s 1515: std::ostream& operator<<(std::ostream& out, const Whitespace& ws) { 194s 1515: if(ws.nrSpaces != 0) 194s 1515: out << std::setw(ws.nrSpaces) << ' '; 194s 1515: return out; 194s 1515: } 194s 1515: 194s 1515: struct ConsoleReporter : public IReporter 194s 1515: { 194s 1515: std::ostream& s; 194s 1515: bool hasLoggedCurrentTestStart; 194s 1515: std::vector subcasesStack; 194s 1515: size_t currentSubcaseLevel; 194s 1515: std::mutex mutex; 194s 1515: 194s 1515: 194s 1515: const ContextOptions& opt; 194s 1515: const TestCaseData* tc; 194s 1515: 194s 1515: ConsoleReporter(const ContextOptions& co) 194s 1515: : s(*co.cout) 194s 1515: , opt(co) {} 194s 1515: 194s 1515: ConsoleReporter(const ContextOptions& co, std::ostream& ostr) 194s 1515: : s(ostr) 194s 1515: , opt(co) {} 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void separator_to_stream() { 194s 1515: s << Color::Yellow 194s 1515: << "===============================================================================" 194s 1515: "\n"; 194s 1515: } 194s 1515: 194s 1515: const char* getSuccessOrFailString(bool success, assertType::Enum at, 194s 1515: const char* success_str) { 194s 1515: if(success) 194s 1515: return success_str; 194s 1515: return failureString(at); 194s 1515: } 194s 1515: 194s 1515: Color::Enum getSuccessOrFailColor(bool success, assertType::Enum at) { 194s 1515: return success ? Color::BrightGreen : 194s 1515: (at & assertType::is_warn) ? Color::Yellow : Color::Red; 194s 1515: } 194s 1515: 194s 1515: void successOrFailColoredStringToStream(bool success, assertType::Enum at, 194s 1515: const char* success_str = "SUCCESS") { 194s 1515: s << getSuccessOrFailColor(success, at) 194s 1515: << getSuccessOrFailString(success, at, success_str) << ": "; 194s 1515: } 194s 1515: 194s 1515: void log_contexts() { 194s 1515: int num_contexts = get_num_active_contexts(); 194s 1515: if(num_contexts) { 194s 1515: auto contexts = get_active_contexts(); 194s 1515: 194s 1515: s << Color::None << " logged: "; 194s 1515: for(int i = 0; i < num_contexts; ++i) { 194s 1515: s << (i == 0 ? "" : " "); 194s 1515: contexts[i]->stringify(&s); 194s 1515: s << "\n"; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: s << "\n"; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: virtual void file_line_to_stream(const char* file, int line, 194s 1515: const char* tail = "") { 194s 1515: s << Color::LightGrey << skipPathFromFilename(file) << (opt.gnu_file_line ? ":" : "(") 194s 1515: << (opt.no_line_numbers ? 0 : line) 194s 1515: << (opt.gnu_file_line ? ":" : "):") << tail; 194s 1515: } 194s 1515: 194s 1515: void logTestStart() { 194s 1515: if(hasLoggedCurrentTestStart) 194s 1515: return; 194s 1515: 194s 1515: separator_to_stream(); 194s 1515: file_line_to_stream(tc->m_file.c_str(), tc->m_line, "\n"); 194s 1515: if(tc->m_description) 194s 1515: s << Color::Yellow << "DESCRIPTION: " << Color::None << tc->m_description << "\n"; 194s 1515: if(tc->m_test_suite && tc->m_test_suite[0] != '\0') 194s 1515: s << Color::Yellow << "TEST SUITE: " << Color::None << tc->m_test_suite << "\n"; 194s 1515: if(strncmp(tc->m_name, " Scenario:", 11) != 0) 194s 1515: s << Color::Yellow << "TEST CASE: "; 194s 1515: s << Color::None << tc->m_name << "\n"; 194s 1515: 194s 1515: for(size_t i = 0; i < currentSubcaseLevel; ++i) { 194s 1515: if(subcasesStack[i].m_name[0] != '\0') 194s 1515: s << " " << subcasesStack[i].m_name << "\n"; 194s 1515: } 194s 1515: 194s 1515: if(currentSubcaseLevel != subcasesStack.size()) { 194s 1515: s << Color::Yellow << "\nDEEPEST SUBCASE STACK REACHED (DIFFERENT FROM THE CURRENT ONE):\n" << Color::None; 194s 1515: for(size_t i = 0; i < subcasesStack.size(); ++i) { 194s 1515: if(subcasesStack[i].m_name[0] != '\0') 194s 1515: s << " " << subcasesStack[i].m_name << "\n"; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: s << "\n"; 194s 1515: 194s 1515: hasLoggedCurrentTestStart = true; 194s 1515: } 194s 1515: 194s 1515: void printVersion() { 194s 1515: if(opt.no_version == false) 194s 1515: s << Color::Cyan << "[doctest] " << Color::None << "doctest version is \"" 194s 1515: << "2" "." "4" "." "12" << "\"\n"; 194s 1515: } 194s 1515: 194s 1515: void printIntro() { 194s 1515: if(opt.no_intro == false) { 194s 1515: printVersion(); 194s 1515: s << Color::Cyan << "[doctest] " << Color::None 194s 1515: << "run with \"--" "" "help\" for options\n"; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: void printHelp() { 194s 1515: int sizePrefixDisplay = static_cast(strlen("")); 194s 1515: printVersion(); 194s 1515: 194s 1515: s << Color::Cyan << "[doctest]\n" << Color::None; 194s 1515: s << Color::Cyan << "[doctest] " << Color::None; 194s 1515: s << "boolean values: \"1/on/yes/true\" or \"0/off/no/false\"\n"; 194s 1515: s << Color::Cyan << "[doctest] " << Color::None; 194s 1515: s << "filter values: \"str1,str2,str3\" (comma separated strings)\n"; 194s 1515: s << Color::Cyan << "[doctest]\n" << Color::None; 194s 1515: s << Color::Cyan << "[doctest] " << Color::None; 194s 1515: s << "filters use wildcards for matching strings\n"; 194s 1515: s << Color::Cyan << "[doctest] " << Color::None; 194s 1515: s << "something passes a filter if any of the strings in a filter matches\n"; 194s 1515: 194s 1515: s << Color::Cyan << "[doctest]\n" << Color::None; 194s 1515: s << Color::Cyan << "[doctest] " << Color::None; 194s 1515: s << "ALL FLAGS, OPTIONS AND FILTERS ALSO AVAILABLE WITH A \"" "dt-" "\" PREFIX!!!\n"; 194s 1515: 194s 1515: s << Color::Cyan << "[doctest]\n" << Color::None; 194s 1515: s << Color::Cyan << "[doctest] " << Color::None; 194s 1515: s << "Query flags - the program quits after them. Available:\n\n"; 194s 1515: s << " -" "" "?, --" "" "help, -" "" "h " 194s 1515: << Whitespace(sizePrefixDisplay*0) << "prints this message\n"; 194s 1515: s << " -" "" "v, --" "" "version " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "prints the version\n"; 194s 1515: s << " -" "" "c, --" "" "count " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "prints the number of matching tests\n"; 194s 1515: s << " -" "" "ltc, --" "" "list-test-cases " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "lists all matching tests by name\n"; 194s 1515: s << " -" "" "lts, --" "" "list-test-suites " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "lists all matching test suites\n"; 194s 1515: s << " -" "" "lr, --" "" "list-reporters " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "lists all registered reporters\n\n"; 194s 1515: 194s 1515: s << Color::Cyan << "[doctest] " << Color::None; 194s 1515: s << "The available / options/filters are:\n\n"; 194s 1515: s << " -" "" "tc, --" "" "test-case= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "filters tests by their name\n"; 194s 1515: s << " -" "" "tce, --" "" "test-case-exclude= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "filters OUT tests by their name\n"; 194s 1515: s << " -" "" "sf, --" "" "source-file= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "filters tests by their file\n"; 194s 1515: s << " -" "" "sfe, --" "" "source-file-exclude= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "filters OUT tests by their file\n"; 194s 1515: s << " -" "" "ts, --" "" "test-suite= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "filters tests by their test suite\n"; 194s 1515: s << " -" "" "tse, --" "" "test-suite-exclude= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "filters OUT tests by their test suite\n"; 194s 1515: s << " -" "" "sc, --" "" "subcase= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "filters subcases by their name\n"; 194s 1515: s << " -" "" "sce, --" "" "subcase-exclude= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "filters OUT subcases by their name\n"; 194s 1515: s << " -" "" "r, --" "" "reporters= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "reporters to use (console is default)\n"; 194s 1515: s << " -" "" "o, --" "" "out= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "output filename\n"; 194s 1515: s << " -" "" "ob, --" "" "order-by= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "how the tests should be ordered\n"; 194s 1515: s << Whitespace(sizePrefixDisplay*3) << " - [file/suite/name/rand/none]\n"; 194s 1515: s << " -" "" "rs, --" "" "rand-seed= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "seed for random ordering\n"; 194s 1515: s << " -" "" "f, --" "" "first= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "the first test passing the filters to\n"; 194s 1515: s << Whitespace(sizePrefixDisplay*3) << " execute - for range-based execution\n"; 194s 1515: s << " -" "" "l, --" "" "last= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "the last test passing the filters to\n"; 194s 1515: s << Whitespace(sizePrefixDisplay*3) << " execute - for range-based execution\n"; 194s 1515: s << " -" "" "aa, --" "" "abort-after= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "stop after failed assertions\n"; 194s 1515: s << " -" "" "scfl,--" "" "subcase-filter-levels= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "apply filters for the first levels\n"; 194s 1515: s << Color::Cyan << "\n[doctest] " << Color::None; 194s 1515: s << "Bool options - can be used like flags and true is assumed. Available:\n\n"; 194s 1515: s << " -" "" "s, --" "" "success= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "include successful assertions in output\n"; 194s 1515: s << " -" "" "cs, --" "" "case-sensitive= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "filters being treated as case sensitive\n"; 194s 1515: s << " -" "" "e, --" "" "exit= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "exits after the tests finish\n"; 194s 1515: s << " -" "" "d, --" "" "duration= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "prints the time duration of each test\n"; 194s 1515: s << " -" "" "m, --" "" "minimal= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "minimal console output (only failures)\n"; 194s 1515: s << " -" "" "q, --" "" "quiet= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "no console output\n"; 194s 1515: s << " -" "" "nt, --" "" "no-throw= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "skips exceptions-related assert checks\n"; 194s 1515: s << " -" "" "ne, --" "" "no-exitcode= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "returns (or exits) always with success\n"; 194s 1515: s << " -" "" "nr, --" "" "no-run= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "skips all runtime doctest operations\n"; 194s 1515: s << " -" "" "ni, --" "" "no-intro= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "omit the framework intro in the output\n"; 194s 1515: s << " -" "" "nv, --" "" "no-version= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "omit the framework version in the output\n"; 194s 1515: s << " -" "" "nc, --" "" "no-colors= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "disables colors in output\n"; 194s 1515: s << " -" "" "fc, --" "" "force-colors= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "use colors even when not in a tty\n"; 194s 1515: s << " -" "" "nb, --" "" "no-breaks= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "disables breakpoints in debuggers\n"; 194s 1515: s << " -" "" "ns, --" "" "no-skip= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "don't skip test cases marked as skip\n"; 194s 1515: s << " -" "" "gfl, --" "" "gnu-file-line= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << ":n: vs (n): for line numbers in output\n"; 194s 1515: s << " -" "" "npf, --" "" "no-path-filenames= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "only filenames and no paths in output\n"; 194s 1515: s << " -" "" "spp, --" "" "skip-path-prefixes= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "whenever file paths start with this prefix, remove it from the output\n"; 194s 1515: s << " -" "" "nln, --" "" "no-line-numbers= " 194s 1515: << Whitespace(sizePrefixDisplay*1) << "0 instead of real line numbers in output\n"; 194s 1515: 194s 1515: 194s 1515: 194s 1515: s << Color::Cyan << "\n[doctest] " << Color::None; 194s 1515: s << "for more information visit the project documentation\n\n"; 194s 1515: } 194s 1515: 194s 1515: void printRegisteredReporters() { 194s 1515: printVersion(); 194s 1515: auto printReporters = [this] (const reporterMap& reporters, const char* type) { 194s 1515: if(reporters.size()) { 194s 1515: s << Color::Cyan << "[doctest] " << Color::None << "listing all registered " << type << "\n"; 194s 1515: for(auto& curr : reporters) 194s 1515: s << "priority: " << std::setw(5) << curr.first.first 194s 1515: << " name: " << curr.first.second << "\n"; 194s 1515: } 194s 1515: }; 194s 1515: printReporters(getListeners(), "listeners"); 194s 1515: printReporters(getReporters(), "reporters"); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: void report_query(const QueryData& in) override { 194s 1515: if(opt.version) { 194s 1515: printVersion(); 194s 1515: } else if(opt.help) { 194s 1515: printHelp(); 194s 1515: } else if(opt.list_reporters) { 194s 1515: printRegisteredReporters(); 194s 1515: } else if(opt.count || opt.list_test_cases) { 194s 1515: if(opt.list_test_cases) { 194s 1515: s << Color::Cyan << "[doctest] " << Color::None 194s 1515: << "listing all test case names\n"; 194s 1515: separator_to_stream(); 194s 1515: } 194s 1515: 194s 1515: for(unsigned i = 0; i < in.num_data; ++i) 194s 1515: s << Color::None << in.data[i]->m_name << "\n"; 194s 1515: 194s 1515: separator_to_stream(); 194s 1515: 194s 1515: s << Color::Cyan << "[doctest] " << Color::None 194s 1515: << "unskipped test cases passing the current filters: " 194s 1515: << g_cs->numTestCasesPassingFilters << "\n"; 194s 1515: 194s 1515: } else if(opt.list_test_suites) { 194s 1515: s << Color::Cyan << "[doctest] " << Color::None << "listing all test suites\n"; 194s 1515: separator_to_stream(); 194s 1515: 194s 1515: for(unsigned i = 0; i < in.num_data; ++i) 194s 1515: s << Color::None << in.data[i]->m_test_suite << "\n"; 194s 1515: 194s 1515: separator_to_stream(); 194s 1515: 194s 1515: s << Color::Cyan << "[doctest] " << Color::None 194s 1515: << "unskipped test cases passing the current filters: " 194s 1515: << g_cs->numTestCasesPassingFilters << "\n"; 194s 1515: s << Color::Cyan << "[doctest] " << Color::None 194s 1515: << "test suites with unskipped test cases passing the current filters: " 194s 1515: << g_cs->numTestSuitesPassingFilters << "\n"; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: void test_run_start() override { 194s 1515: if(!opt.minimal) 194s 1515: printIntro(); 194s 1515: } 194s 1515: 194s 1515: void test_run_end(const TestRunStats& p) override { 194s 1515: if(opt.minimal && p.numTestCasesFailed == 0) 194s 1515: return; 194s 1515: 194s 1515: separator_to_stream(); 194s 1515: s << std::dec; 194s 1515: 194s 1515: auto totwidth = int(std::ceil(log10(static_cast(std::max(p.numTestCasesPassingFilters, static_cast(p.numAsserts))) + 1))); 194s 1515: auto passwidth = int(std::ceil(log10(static_cast(std::max(p.numTestCasesPassingFilters - p.numTestCasesFailed, static_cast(p.numAsserts - p.numAssertsFailed))) + 1))); 194s 1515: auto failwidth = int(std::ceil(log10(static_cast(std::max(p.numTestCasesFailed, static_cast(p.numAssertsFailed))) + 1))); 194s 1515: const bool anythingFailed = p.numTestCasesFailed > 0 || p.numAssertsFailed > 0; 194s 1515: s << Color::Cyan << "[doctest] " << Color::None << "test cases: " << std::setw(totwidth) 194s 1515: << p.numTestCasesPassingFilters << " | " 194s 1515: << ((p.numTestCasesPassingFilters == 0 || anythingFailed) ? Color::None : 194s 1515: Color::Green) 194s 1515: << std::setw(passwidth) << p.numTestCasesPassingFilters - p.numTestCasesFailed << " passed" 194s 1515: << Color::None << " | " << (p.numTestCasesFailed > 0 ? Color::Red : Color::None) 194s 1515: << std::setw(failwidth) << p.numTestCasesFailed << " failed" << Color::None << " |"; 194s 1515: if(opt.no_skipped_summary == false) { 194s 1515: const int numSkipped = p.numTestCases - p.numTestCasesPassingFilters; 194s 1515: s << " " << (numSkipped == 0 ? Color::None : Color::Yellow) << numSkipped 194s 1515: << " skipped" << Color::None; 194s 1515: } 194s 1515: s << "\n"; 194s 1515: s << Color::Cyan << "[doctest] " << Color::None << "assertions: " << std::setw(totwidth) 194s 1515: << p.numAsserts << " | " 194s 1515: << ((p.numAsserts == 0 || anythingFailed) ? Color::None : Color::Green) 194s 1515: << std::setw(passwidth) << (p.numAsserts - p.numAssertsFailed) << " passed" << Color::None 194s 1515: << " | " << (p.numAssertsFailed > 0 ? Color::Red : Color::None) << std::setw(failwidth) 194s 1515: << p.numAssertsFailed << " failed" << Color::None << " |\n"; 194s 1515: s << Color::Cyan << "[doctest] " << Color::None 194s 1515: << "Status: " << (p.numTestCasesFailed > 0 ? Color::Red : Color::Green) 194s 1515: << ((p.numTestCasesFailed > 0) ? "FAILURE!" : "SUCCESS!") << Color::None << std::endl; 194s 1515: } 194s 1515: 194s 1515: void test_case_start(const TestCaseData& in) override { 194s 1515: hasLoggedCurrentTestStart = false; 194s 1515: tc = ∈ 194s 1515: subcasesStack.clear(); 194s 1515: currentSubcaseLevel = 0; 194s 1515: } 194s 1515: 194s 1515: void test_case_reenter(const TestCaseData&) override { 194s 1515: subcasesStack.clear(); 194s 1515: } 194s 1515: 194s 1515: void test_case_end(const CurrentTestCaseStats& st) override { 194s 1515: if(tc->m_no_output) 194s 1515: return; 194s 1515: 194s 1515: 194s 1515: 194s 1515: if(opt.duration || 194s 1515: (st.failure_flags && st.failure_flags != static_cast(TestCaseFailureReason::AssertFailure))) 194s 1515: logTestStart(); 194s 1515: 194s 1515: if(opt.duration) 194s 1515: s << Color::None << std::setprecision(6) << std::fixed << st.seconds 194s 1515: << " s: " << tc->m_name << "\n"; 194s 1515: 194s 1515: if(st.failure_flags & TestCaseFailureReason::Timeout) 194s 1515: s << Color::Red << "Test case exceeded time limit of " << std::setprecision(6) 194s 1515: << std::fixed << tc->m_timeout << "!\n"; 194s 1515: 194s 1515: if(st.failure_flags & TestCaseFailureReason::ShouldHaveFailedButDidnt) { 194s 1515: s << Color::Red << "Should have failed but didn't! Marking it as failed!\n"; 194s 1515: } else if(st.failure_flags & TestCaseFailureReason::ShouldHaveFailedAndDid) { 194s 1515: s << Color::Yellow << "Failed as expected so marking it as not failed\n"; 194s 1515: } else if(st.failure_flags & TestCaseFailureReason::CouldHaveFailedAndDid) { 194s 1515: s << Color::Yellow << "Allowed to fail so marking it as not failed\n"; 194s 1515: } else if(st.failure_flags & TestCaseFailureReason::DidntFailExactlyNumTimes) { 194s 1515: s << Color::Red << "Didn't fail exactly " << tc->m_expected_failures 194s 1515: << " times so marking it as failed!\n"; 194s 1515: } else if(st.failure_flags & TestCaseFailureReason::FailedExactlyNumTimes) { 194s 1515: s << Color::Yellow << "Failed exactly " << tc->m_expected_failures 194s 1515: << " times as expected so marking it as not failed!\n"; 194s 1515: } 194s 1515: if(st.failure_flags & TestCaseFailureReason::TooManyFailedAsserts) { 194s 1515: s << Color::Red << "Aborting - too many failed asserts!\n"; 194s 1515: } 194s 1515: s << Color::None; 194s 1515: } 194s 1515: 194s 1515: void test_case_exception(const TestCaseException& e) override { 194s 1515: std::lock_guard DOCTEST_ANON_LOCK_10(mutex); 194s 1515: if(tc->m_no_output) 194s 1515: return; 194s 1515: 194s 1515: logTestStart(); 194s 1515: 194s 1515: file_line_to_stream(tc->m_file.c_str(), tc->m_line, " "); 194s 1515: successOrFailColoredStringToStream(false, e.is_crash ? assertType::is_require : 194s 1515: assertType::is_check); 194s 1515: s << Color::Red << (e.is_crash ? "test case CRASHED: " : "test case THREW exception: ") 194s 1515: << Color::Cyan << e.error_string << "\n"; 194s 1515: 194s 1515: int num_stringified_contexts = get_num_stringified_contexts(); 194s 1515: if(num_stringified_contexts) { 194s 1515: auto stringified_contexts = get_stringified_contexts(); 194s 1515: s << Color::None << " logged: "; 194s 1515: for(int i = num_stringified_contexts; i > 0; --i) { 194s 1515: s << (i == num_stringified_contexts ? "" : " ") 194s 1515: << stringified_contexts[i - 1] << "\n"; 194s 1515: } 194s 1515: } 194s 1515: s << "\n" << Color::None; 194s 1515: } 194s 1515: 194s 1515: void subcase_start(const SubcaseSignature& subc) override { 194s 1515: subcasesStack.push_back(subc); 194s 1515: ++currentSubcaseLevel; 194s 1515: hasLoggedCurrentTestStart = false; 194s 1515: } 194s 1515: 194s 1515: void subcase_end() override { 194s 1515: --currentSubcaseLevel; 194s 1515: hasLoggedCurrentTestStart = false; 194s 1515: } 194s 1515: 194s 1515: void log_assert(const AssertData& rb) override { 194s 1515: if((!rb.m_failed && !opt.success) || tc->m_no_output) 194s 1515: return; 194s 1515: 194s 1515: std::lock_guard DOCTEST_ANON_LOCK_11(mutex); 194s 1515: 194s 1515: logTestStart(); 194s 1515: 194s 1515: file_line_to_stream(rb.m_file, rb.m_line, " "); 194s 1515: successOrFailColoredStringToStream(!rb.m_failed, rb.m_at); 194s 1515: 194s 1515: fulltext_log_assert_to_stream(s, rb); 194s 1515: 194s 1515: log_contexts(); 194s 1515: } 194s 1515: 194s 1515: void log_message(const MessageData& mb) override { 194s 1515: if(tc->m_no_output) 194s 1515: return; 194s 1515: 194s 1515: std::lock_guard DOCTEST_ANON_LOCK_12(mutex); 194s 1515: 194s 1515: logTestStart(); 194s 1515: 194s 1515: file_line_to_stream(mb.m_file, mb.m_line, " "); 194s 1515: s << getSuccessOrFailColor(false, mb.m_severity) 194s 1515: << getSuccessOrFailString(mb.m_severity & assertType::is_warn, mb.m_severity, 194s 1515: "MESSAGE") << ": "; 194s 1515: s << Color::None << mb.m_string << "\n"; 194s 1515: log_contexts(); 194s 1515: } 194s 1515: 194s 1515: void test_case_skipped(const TestCaseData&) override {} 194s 1515: }; 194s 1515: 194s 1515: static const int DOCTEST_ANON_REPORTER_13 = doctest::detail::consume(&DOCTEST_ANON_REPORTER_13, doctest::registerReporter("console", 0, true)); static_assert(true, ""); 194s 1515: # 6477 "/usr/include/doctest/doctest.h" 3 4 194s 1515: bool parseOptionImpl(int argc, const char* const* argv, const char* pattern, String* value) { 194s 1515: 194s 1515: for(int i = argc; i > 0; --i) { 194s 1515: auto index = i - 1; 194s 1515: auto temp = std::strstr(argv[index], pattern); 194s 1515: if(temp && (value || strlen(temp) == strlen(pattern))) { 194s 1515: 194s 1515: bool noBadCharsFound = true; 194s 1515: auto curr = argv[index]; 194s 1515: while(curr != temp) { 194s 1515: if(*curr++ != '-') { 194s 1515: noBadCharsFound = false; 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: if(noBadCharsFound && argv[index][0] == '-') { 194s 1515: if(value) { 194s 1515: 194s 1515: temp += strlen(pattern); 194s 1515: const unsigned len = strlen(temp); 194s 1515: if(len) { 194s 1515: *value = temp; 194s 1515: return true; 194s 1515: } 194s 1515: } else { 194s 1515: 194s 1515: return true; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: return false; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool parseOption(int argc, const char* const* argv, const char* pattern, String* value = nullptr, 194s 1515: const String& defaultVal = String()) { 194s 1515: if(value) 194s 1515: *value = defaultVal; 194s 1515: 194s 1515: 194s 1515: if(parseOptionImpl(argc, argv, pattern + strlen("dt-"), value)) 194s 1515: return true; 194s 1515: 194s 1515: return parseOptionImpl(argc, argv, pattern, value); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool parseFlag(int argc, const char* const* argv, const char* pattern) { 194s 1515: return parseOption(argc, argv, pattern); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool parseCommaSepArgs(int argc, const char* const* argv, const char* pattern, 194s 1515: std::vector& res) { 194s 1515: String filtersString; 194s 1515: if(parseOption(argc, argv, pattern, &filtersString)) { 194s 1515: 194s 1515: std::ostringstream s; 194s 1515: auto flush = [&s, &res]() { 194s 1515: auto string = s.str(); 194s 1515: if(string.size() > 0) { 194s 1515: res.push_back(string.c_str()); 194s 1515: } 194s 1515: s.str(""); 194s 1515: }; 194s 1515: 194s 1515: bool seenBackslash = false; 194s 1515: const char* current = filtersString.c_str(); 194s 1515: const char* end = current + strlen(current); 194s 1515: while(current != end) { 194s 1515: char character = *current++; 194s 1515: if(seenBackslash) { 194s 1515: seenBackslash = false; 194s 1515: if(character == ',' || character == '\\') { 194s 1515: s.put(character); 194s 1515: continue; 194s 1515: } 194s 1515: s.put('\\'); 194s 1515: } 194s 1515: if(character == '\\') { 194s 1515: seenBackslash = true; 194s 1515: } else if(character == ',') { 194s 1515: flush(); 194s 1515: } else { 194s 1515: s.put(character); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: if(seenBackslash) { 194s 1515: s.put('\\'); 194s 1515: } 194s 1515: flush(); 194s 1515: return true; 194s 1515: } 194s 1515: return false; 194s 1515: } 194s 1515: 194s 1515: enum optionType 194s 1515: { 194s 1515: option_bool, 194s 1515: option_int 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: bool parseIntOption(int argc, const char* const* argv, const char* pattern, optionType type, 194s 1515: int& res) { 194s 1515: String parsedValue; 194s 1515: if(!parseOption(argc, argv, pattern, &parsedValue)) 194s 1515: return false; 194s 1515: 194s 1515: if(type) { 194s 1515: 194s 1515: 194s 1515: int theInt = std::atoi(parsedValue.c_str()); 194s 1515: if (theInt != 0) { 194s 1515: res = theInt; 194s 1515: return true; 194s 1515: } 194s 1515: } else { 194s 1515: 194s 1515: const char positive[][5] = { "1", "true", "on", "yes" }; 194s 1515: const char negative[][6] = { "0", "false", "off", "no" }; 194s 1515: 194s 1515: 194s 1515: for (unsigned i = 0; i < 4; i++) { 194s 1515: if (parsedValue.compare(positive[i], true) == 0) { 194s 1515: res = 1; 194s 1515: return true; 194s 1515: } 194s 1515: if (parsedValue.compare(negative[i], true) == 0) { 194s 1515: res = 0; 194s 1515: return true; 194s 1515: } 194s 1515: } 194s 1515: } 194s 1515: return false; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: Context::Context(int argc, const char* const* argv) 194s 1515: : p(new detail::ContextState) { 194s 1515: parseArgs(argc, argv, true); 194s 1515: if(argc) 194s 1515: p->binary_name = argv[0]; 194s 1515: } 194s 1515: 194s 1515: Context::~Context() { 194s 1515: if(g_cs == p) 194s 1515: g_cs = nullptr; 194s 1515: delete p; 194s 1515: } 194s 1515: 194s 1515: void Context::applyCommandLine(int argc, const char* const* argv) { 194s 1515: parseArgs(argc, argv); 194s 1515: if(argc) 194s 1515: p->binary_name = argv[0]; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void Context::parseArgs(int argc, const char* const* argv, bool withDefaults) { 194s 1515: using namespace detail; 194s 1515: 194s 1515: 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "source-file=", p->filters[0]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "sf=", p->filters[0]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "source-file-exclude=",p->filters[1]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "sfe=", p->filters[1]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "test-suite=", p->filters[2]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "ts=", p->filters[2]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "test-suite-exclude=", p->filters[3]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "tse=", p->filters[3]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "test-case=", p->filters[4]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "tc=", p->filters[4]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "test-case-exclude=", p->filters[5]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "tce=", p->filters[5]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "subcase=", p->filters[6]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "sc=", p->filters[6]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "subcase-exclude=", p->filters[7]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "sce=", p->filters[7]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "reporters=", p->filters[8]); 194s 1515: parseCommaSepArgs(argc, argv, "dt-" "r=", p->filters[8]); 194s 1515: 194s 1515: 194s 1515: int intRes = 0; 194s 1515: String strRes; 194s 1515: # 6688 "/usr/include/doctest/doctest.h" 3 4 194s 1515: if(parseOption(argc, argv, "dt-" "out" "=", &strRes, "") || parseOption(argc, argv, "dt-" "o" "=", &strRes, "") || withDefaults) p->out = strRes; 194s 1515: if(parseOption(argc, argv, "dt-" "order-by" "=", &strRes, "file") || parseOption(argc, argv, "dt-" "ob" "=", &strRes, "file") || withDefaults) p->order_by = strRes; 194s 1515: if(parseIntOption(argc, argv, "dt-" "rand-seed" "=", option_int, intRes) || parseIntOption(argc, argv, "dt-" "rs" "=", option_int, intRes)) p->rand_seed = intRes; else if(withDefaults) p->rand_seed = 0; 194s 1515: 194s 1515: if(parseIntOption(argc, argv, "dt-" "first" "=", option_int, intRes) || parseIntOption(argc, argv, "dt-" "f" "=", option_int, intRes)) p->first = intRes; else if(withDefaults) p->first = 0; 194s 1515: if(parseIntOption(argc, argv, "dt-" "last" "=", option_int, intRes) || parseIntOption(argc, argv, "dt-" "l" "=", option_int, intRes)) p->last = intRes; else if(withDefaults) p->last = (0x7fffffff * 2U + 1U); 194s 1515: 194s 1515: if(parseIntOption(argc, argv, "dt-" "abort-after" "=", option_int, intRes) || parseIntOption(argc, argv, "dt-" "aa" "=", option_int, intRes)) p->abort_after = intRes; else if(withDefaults) p->abort_after = 0; 194s 1515: if(parseIntOption(argc, argv, "dt-" "subcase-filter-levels" "=", option_int, intRes) || parseIntOption(argc, argv, "dt-" "scfl" "=", option_int, intRes)) p->subcase_filter_levels = intRes; else if(withDefaults) p->subcase_filter_levels = 0x7fffffff; 194s 1515: 194s 1515: if(parseIntOption(argc, argv, "dt-" "success" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "s" "=", option_bool, intRes)) p->success = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "success") || parseFlag(argc, argv, "dt-" "s")) p->success = true; else if(withDefaults) p->success = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "case-sensitive" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "cs" "=", option_bool, intRes)) p->case_sensitive = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "case-sensitive") || parseFlag(argc, argv, "dt-" "cs")) p->case_sensitive = true; else if(withDefaults) p->case_sensitive = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "exit" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "e" "=", option_bool, intRes)) p->exit = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "exit") || parseFlag(argc, argv, "dt-" "e")) p->exit = true; else if(withDefaults) p->exit = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "duration" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "d" "=", option_bool, intRes)) p->duration = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "duration") || parseFlag(argc, argv, "dt-" "d")) p->duration = true; else if(withDefaults) p->duration = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "minimal" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "m" "=", option_bool, intRes)) p->minimal = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "minimal") || parseFlag(argc, argv, "dt-" "m")) p->minimal = true; else if(withDefaults) p->minimal = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "quiet" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "q" "=", option_bool, intRes)) p->quiet = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "quiet") || parseFlag(argc, argv, "dt-" "q")) p->quiet = true; else if(withDefaults) p->quiet = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-throw" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nt" "=", option_bool, intRes)) p->no_throw = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-throw") || parseFlag(argc, argv, "dt-" "nt")) p->no_throw = true; else if(withDefaults) p->no_throw = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-exitcode" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "ne" "=", option_bool, intRes)) p->no_exitcode = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-exitcode") || parseFlag(argc, argv, "dt-" "ne")) p->no_exitcode = true; else if(withDefaults) p->no_exitcode = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-run" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nr" "=", option_bool, intRes)) p->no_run = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-run") || parseFlag(argc, argv, "dt-" "nr")) p->no_run = true; else if(withDefaults) p->no_run = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-intro" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "ni" "=", option_bool, intRes)) p->no_intro = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-intro") || parseFlag(argc, argv, "dt-" "ni")) p->no_intro = true; else if(withDefaults) p->no_intro = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-version" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nv" "=", option_bool, intRes)) p->no_version = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-version") || parseFlag(argc, argv, "dt-" "nv")) p->no_version = true; else if(withDefaults) p->no_version = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-colors" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nc" "=", option_bool, intRes)) p->no_colors = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-colors") || parseFlag(argc, argv, "dt-" "nc")) p->no_colors = true; else if(withDefaults) p->no_colors = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "force-colors" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "fc" "=", option_bool, intRes)) p->force_colors = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "force-colors") || parseFlag(argc, argv, "dt-" "fc")) p->force_colors = true; else if(withDefaults) p->force_colors = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-breaks" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nb" "=", option_bool, intRes)) p->no_breaks = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-breaks") || parseFlag(argc, argv, "dt-" "nb")) p->no_breaks = true; else if(withDefaults) p->no_breaks = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-skip" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "ns" "=", option_bool, intRes)) p->no_skip = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-skip") || parseFlag(argc, argv, "dt-" "ns")) p->no_skip = true; else if(withDefaults) p->no_skip = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "gnu-file-line" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "gfl" "=", option_bool, intRes)) p->gnu_file_line = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "gnu-file-line") || parseFlag(argc, argv, "dt-" "gfl")) p->gnu_file_line = true; else if(withDefaults) p->gnu_file_line = !bool(0); 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-path-filenames" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "npf" "=", option_bool, intRes)) p->no_path_in_filenames = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-path-filenames") || parseFlag(argc, argv, "dt-" "npf")) p->no_path_in_filenames = true; else if(withDefaults) p->no_path_in_filenames = false; 194s 1515: if(parseOption(argc, argv, "dt-" "strip-file-prefixes" "=", &strRes, "") || parseOption(argc, argv, "dt-" "sfp" "=", &strRes, "") || withDefaults) p->strip_file_prefixes = strRes; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-line-numbers" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nln" "=", option_bool, intRes)) p->no_line_numbers = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-line-numbers") || parseFlag(argc, argv, "dt-" "nln")) p->no_line_numbers = true; else if(withDefaults) p->no_line_numbers = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-debug-output" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "ndo" "=", option_bool, intRes)) p->no_debug_output = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-debug-output") || parseFlag(argc, argv, "dt-" "ndo")) p->no_debug_output = true; else if(withDefaults) p->no_debug_output = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-skipped-summary" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nss" "=", option_bool, intRes)) p->no_skipped_summary = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-skipped-summary") || parseFlag(argc, argv, "dt-" "nss")) p->no_skipped_summary = true; else if(withDefaults) p->no_skipped_summary = false; 194s 1515: if(parseIntOption(argc, argv, "dt-" "no-time-in-output" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "ntio" "=", option_bool, intRes)) p->no_time_in_output = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-time-in-output") || parseFlag(argc, argv, "dt-" "ntio")) p->no_time_in_output = true; else if(withDefaults) p->no_time_in_output = false; 194s 1515: 194s 1515: 194s 1515: if(withDefaults) { 194s 1515: p->help = false; 194s 1515: p->version = false; 194s 1515: p->count = false; 194s 1515: p->list_test_cases = false; 194s 1515: p->list_test_suites = false; 194s 1515: p->list_reporters = false; 194s 1515: } 194s 1515: if(parseFlag(argc, argv, "dt-" "help") || 194s 1515: parseFlag(argc, argv, "dt-" "h") || 194s 1515: parseFlag(argc, argv, "dt-" "?")) { 194s 1515: p->help = true; 194s 1515: p->exit = true; 194s 1515: } 194s 1515: if(parseFlag(argc, argv, "dt-" "version") || 194s 1515: parseFlag(argc, argv, "dt-" "v")) { 194s 1515: p->version = true; 194s 1515: p->exit = true; 194s 1515: } 194s 1515: if(parseFlag(argc, argv, "dt-" "count") || 194s 1515: parseFlag(argc, argv, "dt-" "c")) { 194s 1515: p->count = true; 194s 1515: p->exit = true; 194s 1515: } 194s 1515: if(parseFlag(argc, argv, "dt-" "list-test-cases") || 194s 1515: parseFlag(argc, argv, "dt-" "ltc")) { 194s 1515: p->list_test_cases = true; 194s 1515: p->exit = true; 194s 1515: } 194s 1515: if(parseFlag(argc, argv, "dt-" "list-test-suites") || 194s 1515: parseFlag(argc, argv, "dt-" "lts")) { 194s 1515: p->list_test_suites = true; 194s 1515: p->exit = true; 194s 1515: } 194s 1515: if(parseFlag(argc, argv, "dt-" "list-reporters") || 194s 1515: parseFlag(argc, argv, "dt-" "lr")) { 194s 1515: p->list_reporters = true; 194s 1515: p->exit = true; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void Context::addFilter(const char* filter, const char* value) { setOption(filter, value); } 194s 1515: 194s 1515: 194s 1515: void Context::clearFilters() { 194s 1515: for(auto& curr : p->filters) 194s 1515: curr.clear(); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void Context::setOption(const char* option, bool value) { 194s 1515: setOption(option, value ? "true" : "false"); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void Context::setOption(const char* option, int value) { 194s 1515: setOption(option, toString(value).c_str()); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: void Context::setOption(const char* option, const char* value) { 194s 1515: auto argv = String("-") + option + "=" + value; 194s 1515: auto lvalue = argv.c_str(); 194s 1515: parseArgs(1, &lvalue); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: bool Context::shouldExit() { return p->exit; } 194s 1515: 194s 1515: void Context::setAsDefaultForAssertsOutOfTestCases() { g_cs = p; } 194s 1515: 194s 1515: void Context::setAssertHandler(detail::assert_handler ah) { p->ah = ah; } 194s 1515: 194s 1515: void Context::setCout(std::ostream* out) { p->cout = out; } 194s 1515: 194s 1515: static class DiscardOStream : public std::ostream 194s 1515: { 194s 1515: private: 194s 1515: class : public std::streambuf 194s 1515: { 194s 1515: private: 194s 1515: 194s 1515: char buf[1024]; 194s 1515: 194s 1515: protected: 194s 1515: std::streamsize xsputn(const char_type*, std::streamsize count) override { return count; } 194s 1515: 194s 1515: int_type overflow(int_type ch) override { 194s 1515: setp(std::begin(buf), std::end(buf)); 194s 1515: return traits_type::not_eof(ch); 194s 1515: } 194s 1515: } discardBuf; 194s 1515: 194s 1515: public: 194s 1515: DiscardOStream() 194s 1515: : std::ostream(&discardBuf) {} 194s 1515: } discardOut; 194s 1515: 194s 1515: 194s 1515: int Context::run() { 194s 1515: using namespace detail; 194s 1515: 194s 1515: 194s 1515: auto old_cs = g_cs; 194s 1515: 194s 1515: g_cs = p; 194s 1515: is_running_in_test = true; 194s 1515: 194s 1515: g_no_colors = p->no_colors; 194s 1515: p->resetRunData(); 194s 1515: 194s 1515: std::fstream fstr; 194s 1515: if(p->cout == nullptr) { 194s 1515: if(p->quiet) { 194s 1515: p->cout = &discardOut; 194s 1515: } else if(p->out.size()) { 194s 1515: 194s 1515: fstr.open(p->out.c_str(), std::fstream::out); 194s 1515: p->cout = &fstr; 194s 1515: } else { 194s 1515: 194s 1515: 194s 1515: p->cout = &std::cout; 194s 1515: 194s 1515: 194s 1515: 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: FatalConditionHandler::allocateAltStackMem(); 194s 1515: 194s 1515: auto cleanup_and_return = [&]() { 194s 1515: FatalConditionHandler::freeAltStackMem(); 194s 1515: 194s 1515: if(fstr.is_open()) 194s 1515: fstr.close(); 194s 1515: 194s 1515: 194s 1515: g_cs = old_cs; 194s 1515: is_running_in_test = false; 194s 1515: 194s 1515: 194s 1515: for(auto& curr : p->reporters_currently_used) 194s 1515: delete curr; 194s 1515: p->reporters_currently_used.clear(); 194s 1515: 194s 1515: if(p->numTestCasesFailed && !p->no_exitcode) 194s 1515: return 1; 194s 1515: return 0; 194s 1515: }; 194s 1515: 194s 1515: 194s 1515: if(p->filters[8].empty()) 194s 1515: p->filters[8].push_back("console"); 194s 1515: 194s 1515: 194s 1515: for(auto& curr : getReporters()) { 194s 1515: if(matchesAny(curr.first.second.c_str(), p->filters[8], false, p->case_sensitive)) 194s 1515: p->reporters_currently_used.push_back(curr.second(*g_cs)); 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: for(auto& curr : getListeners()) 194s 1515: p->reporters_currently_used.insert(p->reporters_currently_used.begin(), curr.second(*g_cs)); 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: if(p->no_run || p->version || p->help || p->list_reporters) { 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->report_query(QueryData()); 194s 1515: 194s 1515: return cleanup_and_return(); 194s 1515: } 194s 1515: 194s 1515: std::vector testArray; 194s 1515: for(auto& curr : getRegisteredTests()) 194s 1515: testArray.push_back(&curr); 194s 1515: p->numTestCases = testArray.size(); 194s 1515: 194s 1515: 194s 1515: if(!testArray.empty()) { 194s 1515: if(p->order_by.compare("file", true) == 0) { 194s 1515: std::sort(testArray.begin(), testArray.end(), fileOrderComparator); 194s 1515: } else if(p->order_by.compare("suite", true) == 0) { 194s 1515: std::sort(testArray.begin(), testArray.end(), suiteOrderComparator); 194s 1515: } else if(p->order_by.compare("name", true) == 0) { 194s 1515: std::sort(testArray.begin(), testArray.end(), nameOrderComparator); 194s 1515: } else if(p->order_by.compare("rand", true) == 0) { 194s 1515: std::srand(p->rand_seed); 194s 1515: 194s 1515: 194s 1515: const auto first = &testArray[0]; 194s 1515: for(size_t i = testArray.size() - 1; i > 0; --i) { 194s 1515: int idxToSwap = std::rand() % (i + 1); 194s 1515: 194s 1515: const auto temp = first[i]; 194s 1515: 194s 1515: first[i] = first[idxToSwap]; 194s 1515: first[idxToSwap] = temp; 194s 1515: } 194s 1515: } else if(p->order_by.compare("none", true) == 0) { 194s 1515: 194s 1515: 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: std::set testSuitesPassingFilt; 194s 1515: 194s 1515: bool query_mode = p->count || p->list_test_cases || p->list_test_suites; 194s 1515: std::vector queryResults; 194s 1515: 194s 1515: if(!query_mode) 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_run_start(); 194s 1515: 194s 1515: 194s 1515: for(auto& curr : testArray) { 194s 1515: const auto& tc = *curr; 194s 1515: 194s 1515: bool skip_me = false; 194s 1515: if(tc.m_skip && !p->no_skip) 194s 1515: skip_me = true; 194s 1515: 194s 1515: if(!matchesAny(tc.m_file.c_str(), p->filters[0], true, p->case_sensitive)) 194s 1515: skip_me = true; 194s 1515: if(matchesAny(tc.m_file.c_str(), p->filters[1], false, p->case_sensitive)) 194s 1515: skip_me = true; 194s 1515: if(!matchesAny(tc.m_test_suite, p->filters[2], true, p->case_sensitive)) 194s 1515: skip_me = true; 194s 1515: if(matchesAny(tc.m_test_suite, p->filters[3], false, p->case_sensitive)) 194s 1515: skip_me = true; 194s 1515: if(!matchesAny(tc.m_name, p->filters[4], true, p->case_sensitive)) 194s 1515: skip_me = true; 194s 1515: if(matchesAny(tc.m_name, p->filters[5], false, p->case_sensitive)) 194s 1515: skip_me = true; 194s 1515: 194s 1515: if(!skip_me) 194s 1515: p->numTestCasesPassingFilters++; 194s 1515: 194s 1515: 194s 1515: if((p->last < p->numTestCasesPassingFilters && p->first <= p->last) || 194s 1515: (p->first > p->numTestCasesPassingFilters)) 194s 1515: skip_me = true; 194s 1515: 194s 1515: if(skip_me) { 194s 1515: if(!query_mode) 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_skipped(tc); 194s 1515: continue; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if(p->count) 194s 1515: continue; 194s 1515: 194s 1515: 194s 1515: if(p->list_test_cases) { 194s 1515: queryResults.push_back(&tc); 194s 1515: continue; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: if(p->list_test_suites) { 194s 1515: if((testSuitesPassingFilt.count(tc.m_test_suite) == 0) && tc.m_test_suite[0] != '\0') { 194s 1515: queryResults.push_back(&tc); 194s 1515: testSuitesPassingFilt.insert(tc.m_test_suite); 194s 1515: p->numTestSuitesPassingFilters++; 194s 1515: } 194s 1515: continue; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: { 194s 1515: p->currentTest = &tc; 194s 1515: 194s 1515: p->failure_flags = TestCaseFailureReason::None; 194s 1515: p->seconds = 0; 194s 1515: 194s 1515: 194s 1515: p->numAssertsFailedCurrentTest_atomic = 0; 194s 1515: p->numAssertsCurrentTest_atomic = 0; 194s 1515: 194s 1515: p->fullyTraversedSubcases.clear(); 194s 1515: 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_start(tc); 194s 1515: 194s 1515: p->timer.start(); 194s 1515: 194s 1515: bool run_test = true; 194s 1515: 194s 1515: do { 194s 1515: 194s 1515: p->reachedLeaf = false; 194s 1515: 194s 1515: p->subcaseStack.clear(); 194s 1515: p->currentSubcaseDepth = 0; 194s 1515: 194s 1515: p->shouldLogCurrentException = true; 194s 1515: 194s 1515: 194s 1515: p->stringifiedContexts.clear(); 194s 1515: 194s 1515: 194s 1515: try { 194s 1515: 194s 1515: 194s 1515: 194s 1515: FatalConditionHandler fatalConditionHandler; 194s 1515: 194s 1515: tc.m_test(); 194s 1515: fatalConditionHandler.reset(); 194s 1515: 194s 1515: 194s 1515: } catch(const TestFailureException&) { 194s 1515: p->failure_flags |= TestCaseFailureReason::AssertFailure; 194s 1515: } catch(...) { 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_exception({translateActiveException(), false}) 194s 1515: ; 194s 1515: p->failure_flags |= TestCaseFailureReason::Exception; 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: if(p->abort_after > 0 && 194s 1515: p->numAssertsFailed + p->numAssertsFailedCurrentTest_atomic >= p->abort_after) { 194s 1515: run_test = false; 194s 1515: p->failure_flags |= TestCaseFailureReason::TooManyFailedAsserts; 194s 1515: } 194s 1515: 194s 1515: if(!p->nextSubcaseStack.empty() && run_test) 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_reenter(tc); 194s 1515: if(p->nextSubcaseStack.empty()) 194s 1515: run_test = false; 194s 1515: } while(run_test); 194s 1515: 194s 1515: p->finalizeTestCaseData(); 194s 1515: 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_end(*g_cs); 194s 1515: 194s 1515: p->currentTest = nullptr; 194s 1515: 194s 1515: 194s 1515: if(p->abort_after > 0 && p->numAssertsFailed >= p->abort_after) 194s 1515: break; 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: if(!query_mode) { 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_run_end(*g_cs); 194s 1515: } else { 194s 1515: QueryData qdata; 194s 1515: qdata.run_stats = g_cs; 194s 1515: qdata.data = queryResults.data(); 194s 1515: qdata.num_data = unsigned(queryResults.size()); 194s 1515: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->report_query(qdata); 194s 1515: } 194s 1515: 194s 1515: return cleanup_and_return(); 194s 1515: } 194s 1515: 194s 1515: IReporter::~IReporter() = default; 194s 1515: 194s 1515: int IReporter::get_num_active_contexts() { return detail::g_infoContexts.size(); } 194s 1515: const IContextScope* const* IReporter::get_active_contexts() { 194s 1515: return get_num_active_contexts() ? &detail::g_infoContexts[0] : nullptr; 194s 1515: } 194s 1515: 194s 1515: int IReporter::get_num_stringified_contexts() { return detail::g_cs->stringifiedContexts.size(); } 194s 1515: const String* IReporter::get_stringified_contexts() { 194s 1515: return get_num_stringified_contexts() ? &detail::g_cs->stringifiedContexts[0] : nullptr; 194s 1515: } 194s 1515: 194s 1515: namespace detail { 194s 1515: void registerReporterImpl(const char* name, int priority, reporterCreatorFunc c, bool isReporter) { 194s 1515: if(isReporter) 194s 1515: getReporters().insert(reporterMap::value_type(reporterMap::key_type(priority, name), c)); 194s 1515: else 194s 1515: getListeners().insert(reporterMap::value_type(reporterMap::key_type(priority, name), c)); 194s 1515: } 194s 1515: } 194s 1515: 194s 1515: } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: int main(int argc, char** argv) { return doctest::Context(argc, argv).run(); } 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: 194s 1515: # 7119 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic pop 194s 1515: 194s 1515: 194s 1515: # 7121 "/usr/include/doctest/doctest.h" 3 4 194s 1515: #pragma GCC diagnostic pop 194s 1515: # 14 "/tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp" 2 194s === END GCC DUMP === 194s make[2]: *** [CMakeFiles/test_xsimd.dir/build.make:79: CMakeFiles/test_xsimd.dir/main.cpp.o] Error 1 194s make[1]: *** [CMakeFiles/Makefile2:133: CMakeFiles/test_xsimd.dir/all] Error 2 194s make: *** [Makefile:101: all] Error 2 194s autopkgtest [22:49:21]: test xsimd-test: -----------------------] 198s autopkgtest [22:49:25]: test xsimd-test: - - - - - - - - - - results - - - - - - - - - - 198s xsimd-test FAIL non-zero exit status 2 202s autopkgtest [22:49:29]: test xsimd-test-complex: preparing testbed 204s Reading package lists... 204s Building dependency tree... 204s Reading state information... 204s Solving dependencies... 206s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 213s autopkgtest [22:49:40]: test xsimd-test-complex: [----------------------- 215s 215s Running tests from test/run_test_complex 215s CMake Deprecation Warning at CMakeLists.txt:12 (cmake_minimum_required): 215s Compatibility with CMake < 3.10 will be removed from a future version of 215s CMake. 215s 215s Update the VERSION argument value. Or, use the ... syntax 215s to tell CMake that the project requires at least but has been updated 215s to work with policies introduced by or earlier. 215s 215s 215s -- The C compiler identification is GNU 15.2.0 215s -- The CXX compiler identification is GNU 15.2.0 215s -- Detecting C compiler ABI info 215s -- Detecting C compiler ABI info - done 216s -- Check for working C compiler: /usr/bin/cc - skipped 216s -- Detecting C compile features 216s -- Detecting C compile features - done 216s -- Detecting CXX compiler ABI info 216s -- Detecting CXX compiler ABI info - done 216s -- Check for working CXX compiler: /usr/bin/c++ - skipped 216s -- Detecting CXX compile features 216s -- Detecting CXX compile features - done 216s -- Setting tests build type to Release 216s -- Performing Test HAS_CPP14_FLAG 216s -- Performing Test HAS_CPP14_FLAG - Success 216s -- Performing Test FLAG_SUPPORTED_bdver1 216s -- Performing Test FLAG_SUPPORTED_bdver1 - Failed 216s -- Performing Test FLAG_SUPPORTED_knl 216s -- Performing Test FLAG_SUPPORTED_knl - Failed 216s -- Performing Test FLAG_SUPPORTED_knm 216s -- Performing Test FLAG_SUPPORTED_knm - Failed 216s -- Performing Test FLAG_SUPPORTED_skylake-avx512 216s -- Performing Test FLAG_SUPPORTED_skylake-avx512 - Failed 216s -- Performing Test FLAG_SUPPORTED_cannonlake 216s -- Performing Test FLAG_SUPPORTED_cannonlake - Failed 216s -- Performing Test FLAG_SUPPORTED_icelake-client 216s -- Performing Test FLAG_SUPPORTED_icelake-client - Failed 216s -- Performing Test FLAG_SUPPORTED_icelake-server 216s -- Performing Test FLAG_SUPPORTED_icelake-server - Failed 216s -- Performing Test FLAG_SUPPORTED_cascadelake 217s -- Performing Test FLAG_SUPPORTED_cascadelake - Failed 217s -- Performing Test FLAG_SUPPORTED_cooperlake 217s -- Performing Test FLAG_SUPPORTED_cooperlake - Failed 217s -- Performing Test FLAG_SUPPORTED_tigerlake 217s -- Performing Test FLAG_SUPPORTED_tigerlake - Failed 217s -- Performing Test FLAG_SUPPORTED_sapphirerapids 217s -- Performing Test FLAG_SUPPORTED_sapphirerapids - Failed 217s -- Performing Test FLAG_SUPPORTED_alderlake 217s -- Performing Test FLAG_SUPPORTED_alderlake - Failed 217s -- Performing Test FLAG_SUPPORTED_rocketlake 217s -- Performing Test FLAG_SUPPORTED_rocketlake - Failed 217s -- Performing Test FLAG_SUPPORTED_graniterapids 217s -- Performing Test FLAG_SUPPORTED_graniterapids - Failed 217s -- Performing Test FLAG_SUPPORTED_graniterapids-d 217s -- Performing Test FLAG_SUPPORTED_graniterapids-d - Failed 217s -- Performing Test FLAG_SUPPORTED_znver4 217s -- Performing Test FLAG_SUPPORTED_znver4 - Failed 217s -- Configuring done (2.1s) 217s -- Generating done (0.0s) 217s -- Build files have been written to: /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex 217s /usr/bin/cmake -S/tmp/autopkgtest.kjZSsr/build.hH9/src/test -B/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex --check-build-system CMakeFiles/Makefile.cmake 0 217s /usr/bin/cmake -E cmake_progress_start /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex/CMakeFiles /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex//CMakeFiles/progress.marks 217s make -f CMakeFiles/Makefile2 all 217s make[1]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex' 217s make -f CMakeFiles/test_xsimd.dir/build.make CMakeFiles/test_xsimd.dir/depend 217s make[2]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex' 217s cd /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /tmp/autopkgtest.kjZSsr/build.hH9/src/test /tmp/autopkgtest.kjZSsr/build.hH9/src/test /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex/CMakeFiles/test_xsimd.dir/DependInfo.cmake "--color=" 217s make[2]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex' 217s make -f CMakeFiles/test_xsimd.dir/build.make CMakeFiles/test_xsimd.dir/build 217s make[2]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex' 217s [ 2%] Building CXX object CMakeFiles/test_xsimd.dir/main.cpp.o 217s /usr/bin/c++ -DXSIMD_ENABLE_XTL_COMPLEX=1 -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++14 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/main.cpp.o -MF CMakeFiles/test_xsimd.dir/main.cpp.o.d -o CMakeFiles/test_xsimd.dir/main.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp 221s In file included from /tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp:13: 221s /usr/include/doctest/doctest.h: In function ‘bool doctest::operator==(double, const Approx&)’: 221s /usr/include/doctest/doctest.h:4012:1: error: unrecognizable insn: 221s 4012 | } 221s | ^ 221s (insn 18 17 19 2 (set (reg:DF 131 [ _14 ]) 221s (if_then_else:DF (gt (reg:CCFPE 100 cc) 221s (const_int 0 [0])) 221s (reg:DF 120 [ _7 ]) 221s (reg:DF 119 [ _6 ]))) "/usr/include/doctest/doctest.h":4011:41 discrim 1 -1 221s (nil)) 221s during RTL pass: vregs 221s /usr/include/doctest/doctest.h:4012:1: internal compiler error: in extract_insn, at recog.cc:2882 221s Please submit a full bug report, with preprocessed source (by using -freport-bug). 221s See for instructions. 233s Preprocessed source stored into /tmp/ccNHt2oQ.out file, please attach this to your bugreport. 233s === BEGIN GCC DUMP === 233s 1949: // Target: arm-linux-gnueabihf 233s 1949: // Configured with: ../src/configure -v --with-pkgversion='Ubuntu 15.2.0-12ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-15/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust,algol68 --prefix=/usr --with-gcc-major-version-only --program-suffix=-15 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --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-libstdcxx-backtrace --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv7-a+fp --with-float=hard --with-mode=thumb --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf 233s 1949: // Thread model: posix 233s 1949: // Supported LTO compression algorithms: zlib zstd 233s 1949: // gcc version 15.2.0 (Ubuntu 15.2.0-12ubuntu1) 233s 1949: // 233s 1949: // In file included from /tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp:13: 233s 1949: // /usr/include/doctest/doctest.h: In function ‘bool doctest::operator==(double, const Approx&)’: 233s 1949: // /usr/include/doctest/doctest.h:4012:1: error: unrecognizable insn: 233s 1949: // 4012 | } 233s 1949: // | ^ 233s 1949: // (insn 18 17 19 2 (set (reg:DF 131 [ _14 ]) 233s 1949: // (if_then_else:DF (gt (reg:CCFPE 100 cc) 233s 1949: // (const_int 0 [0])) 233s 1949: // (reg:DF 120 [ _7 ]) 233s 1949: // (reg:DF 119 [ _6 ]))) "/usr/include/doctest/doctest.h":4011:41 discrim 1 -1 233s 1949: // (nil)) 233s 1949: // during RTL pass: vregs 233s 1949: // /usr/include/doctest/doctest.h:4012:1: internal compiler error: in extract_insn, at recog.cc:2882 233s 1949: // Please submit a full bug report, with preprocessed source (by using -freport-bug). 233s 1949: // See for instructions. 233s 1949: 233s 1949: // /usr/libexec/gcc/arm-linux-gnueabihf/15/cc1plus -quiet -imultilib . -imultiarch arm-linux-gnueabihf -MD CMakeFiles/test_xsimd.dir/main.cpp.d -MF CMakeFiles/test_xsimd.dir/main.cpp.o.d -MT CMakeFiles/test_xsimd.dir/main.cpp.o -D_GNU_SOURCE -D XSIMD_ENABLE_XTL_COMPLEX=1 -D NDEBUG /tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=3 -quiet -dumpdir CMakeFiles/test_xsimd.dir/ -dumpbase main.cpp.cpp -dumpbase-ext .cpp -mfloat-abi=hard -mfpu=vfpv3 -mtls-dialect=gnu -mthumb -mlibarch=armv8.2-a+fp16+dotprod -march=armv8.2-a+fp16+dotprod -g -O3 -Wunused-parameter -Wextra -Wreorder -std=c++14 -fPIC -fstack-protector-strong -Wformat -Wformat-security -fzero-init-padding-bits=all -Wbidi-chars=any -o - -frandom-seed=0 -fdump-noaddr 233s 1949: 233s 1949: # 0 "/tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp" 233s 1949: # 1 "/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex//" 233s 1949: # 0 "" 233s 1949: # 0 "" 233s 1949: # 1 "/usr/include/stdc-predef.h" 1 3 4 233s 1949: # 0 "" 2 233s 1949: # 1 "/tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp" 233s 1949: # 13 "/tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp" 233s 1949: # 1 "/usr/include/doctest/doctest.h" 1 3 4 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic push 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wunknown-pragmas" 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wpragmas" 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Weffc++" 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wstrict-overflow" 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wstrict-aliasing" 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wmissing-declarations" 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wuseless-cast" 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 214 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wnoexcept" 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 220 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic push 233s 1949: 233s 1949: # 221 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 233s 1949: 233s 1949: # 222 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wnon-virtual-dtor" 233s 1949: 233s 1949: # 223 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wsign-promo" 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 446 "/usr/include/doctest/doctest.h" 3 4 233s 1949: namespace doctest { namespace detail { 233s 1949: static constexpr int consume(const int*, int) noexcept { return 0; } 233s 1949: }} 233s 1949: # 462 "/usr/include/doctest/doctest.h" 3 4 233s 1949: # 1 "/usr/include/signal.h" 1 3 4 233s 1949: # 25 "/usr/include/signal.h" 3 4 233s 1949: # 1 "/usr/include/features.h" 1 3 4 233s 1949: # 415 "/usr/include/features.h" 3 4 233s 1949: # 1 "/usr/include/features-time64.h" 1 3 4 233s 1949: # 20 "/usr/include/features-time64.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 233s 1949: # 21 "/usr/include/features-time64.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 1 3 4 233s 1949: # 22 "/usr/include/features-time64.h" 2 3 4 233s 1949: # 416 "/usr/include/features.h" 2 3 4 233s 1949: # 523 "/usr/include/features.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 1 3 4 233s 1949: # 730 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 233s 1949: # 731 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4 233s 1949: # 732 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4 233s 1949: # 524 "/usr/include/features.h" 2 3 4 233s 1949: # 547 "/usr/include/features.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 1 3 4 233s 1949: # 10 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h" 1 3 4 233s 1949: # 11 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 2 3 4 233s 1949: # 548 "/usr/include/features.h" 2 3 4 233s 1949: # 26 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: extern "C" { 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 233s 1949: # 28 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 1 3 4 233s 1949: # 29 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: typedef unsigned char __u_char; 233s 1949: typedef unsigned short int __u_short; 233s 1949: typedef unsigned int __u_int; 233s 1949: typedef unsigned long int __u_long; 233s 1949: 233s 1949: 233s 1949: typedef signed char __int8_t; 233s 1949: typedef unsigned char __uint8_t; 233s 1949: typedef signed short int __int16_t; 233s 1949: typedef unsigned short int __uint16_t; 233s 1949: typedef signed int __int32_t; 233s 1949: typedef unsigned int __uint32_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __extension__ typedef signed long long int __int64_t; 233s 1949: __extension__ typedef unsigned long long int __uint64_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __int8_t __int_least8_t; 233s 1949: typedef __uint8_t __uint_least8_t; 233s 1949: typedef __int16_t __int_least16_t; 233s 1949: typedef __uint16_t __uint_least16_t; 233s 1949: typedef __int32_t __int_least32_t; 233s 1949: typedef __uint32_t __uint_least32_t; 233s 1949: typedef __int64_t __int_least64_t; 233s 1949: typedef __uint64_t __uint_least64_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __extension__ typedef long long int __quad_t; 233s 1949: __extension__ typedef unsigned long long int __u_quad_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __extension__ typedef long long int __intmax_t; 233s 1949: __extension__ typedef unsigned long long int __uintmax_t; 233s 1949: # 141 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/typesizes.h" 1 3 4 233s 1949: # 142 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/time64.h" 1 3 4 233s 1949: # 143 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: __extension__ typedef __uint64_t __dev_t; 233s 1949: __extension__ typedef unsigned int __uid_t; 233s 1949: __extension__ typedef unsigned int __gid_t; 233s 1949: __extension__ typedef unsigned long int __ino_t; 233s 1949: __extension__ typedef __uint64_t __ino64_t; 233s 1949: __extension__ typedef unsigned int __mode_t; 233s 1949: __extension__ typedef unsigned int __nlink_t; 233s 1949: __extension__ typedef long int __off_t; 233s 1949: __extension__ typedef __int64_t __off64_t; 233s 1949: __extension__ typedef int __pid_t; 233s 1949: __extension__ typedef struct { int __val[2]; } __fsid_t; 233s 1949: __extension__ typedef long int __clock_t; 233s 1949: __extension__ typedef unsigned long int __rlim_t; 233s 1949: __extension__ typedef __uint64_t __rlim64_t; 233s 1949: __extension__ typedef unsigned int __id_t; 233s 1949: __extension__ typedef long int __time_t; 233s 1949: __extension__ typedef unsigned int __useconds_t; 233s 1949: __extension__ typedef long int __suseconds_t; 233s 1949: __extension__ typedef __int64_t __suseconds64_t; 233s 1949: 233s 1949: __extension__ typedef int __daddr_t; 233s 1949: __extension__ typedef int __key_t; 233s 1949: 233s 1949: 233s 1949: __extension__ typedef int __clockid_t; 233s 1949: 233s 1949: 233s 1949: __extension__ typedef void * __timer_t; 233s 1949: 233s 1949: 233s 1949: __extension__ typedef long int __blksize_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __extension__ typedef long int __blkcnt_t; 233s 1949: __extension__ typedef __int64_t __blkcnt64_t; 233s 1949: 233s 1949: 233s 1949: __extension__ typedef unsigned long int __fsblkcnt_t; 233s 1949: __extension__ typedef __uint64_t __fsblkcnt64_t; 233s 1949: 233s 1949: 233s 1949: __extension__ typedef unsigned long int __fsfilcnt_t; 233s 1949: __extension__ typedef __uint64_t __fsfilcnt64_t; 233s 1949: 233s 1949: 233s 1949: __extension__ typedef int __fsword_t; 233s 1949: 233s 1949: __extension__ typedef int __ssize_t; 233s 1949: 233s 1949: 233s 1949: __extension__ typedef long int __syscall_slong_t; 233s 1949: 233s 1949: __extension__ typedef unsigned long int __syscall_ulong_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __off64_t __loff_t; 233s 1949: typedef char *__caddr_t; 233s 1949: 233s 1949: 233s 1949: __extension__ typedef int __intptr_t; 233s 1949: 233s 1949: 233s 1949: __extension__ typedef unsigned int __socklen_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef int __sig_atomic_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __extension__ typedef __int64_t __time64_t; 233s 1949: # 30 "/usr/include/signal.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/signum-generic.h" 1 3 4 233s 1949: # 76 "/usr/include/arm-linux-gnueabihf/bits/signum-generic.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/signum-arch.h" 1 3 4 233s 1949: # 77 "/usr/include/arm-linux-gnueabihf/bits/signum-generic.h" 2 3 4 233s 1949: # 31 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sig_atomic_t.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __sig_atomic_t sig_atomic_t; 233s 1949: # 33 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__sigset_t.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef struct 233s 1949: { 233s 1949: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; 233s 1949: } __sigset_t; 233s 1949: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: typedef __sigset_t sigset_t; 233s 1949: # 36 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __pid_t pid_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __uid_t uid_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 1 3 4 233s 1949: # 35 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/endianness.h" 1 3 4 233s 1949: # 36 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 2 3 4 233s 1949: # 7 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/time_t.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __time64_t time_t; 233s 1949: # 8 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct timespec 233s 1949: { 233s 1949: 233s 1949: __time64_t tv_sec; 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 3 4 233s 1949: long int tv_nsec; 233s 1949: int: 32; 233s 1949: 233s 1949: 233s 1949: }; 233s 1949: # 54 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 233s 1949: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 2 3 4 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__sigval_t.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/types/__sigval_t.h" 3 4 233s 1949: union sigval 233s 1949: { 233s 1949: int sival_int; 233s 1949: void *sival_ptr; 233s 1949: }; 233s 1949: 233s 1949: typedef union sigval __sigval_t; 233s 1949: # 7 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 2 3 4 233s 1949: # 16 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/siginfo-arch.h" 1 3 4 233s 1949: # 17 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 2 3 4 233s 1949: # 36 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 3 4 233s 1949: typedef struct 233s 1949: { 233s 1949: int si_signo; 233s 1949: 233s 1949: int si_errno; 233s 1949: 233s 1949: int si_code; 233s 1949: # 51 "/usr/include/arm-linux-gnueabihf/bits/types/siginfo_t.h" 3 4 233s 1949: union 233s 1949: { 233s 1949: int _pad[((128 / sizeof (int)) - 3)]; 233s 1949: 233s 1949: 233s 1949: struct 233s 1949: { 233s 1949: __pid_t si_pid; 233s 1949: __uid_t si_uid; 233s 1949: } _kill; 233s 1949: 233s 1949: 233s 1949: struct 233s 1949: { 233s 1949: int si_tid; 233s 1949: int si_overrun; 233s 1949: __sigval_t si_sigval; 233s 1949: } _timer; 233s 1949: 233s 1949: 233s 1949: struct 233s 1949: { 233s 1949: __pid_t si_pid; 233s 1949: __uid_t si_uid; 233s 1949: __sigval_t si_sigval; 233s 1949: } _rt; 233s 1949: 233s 1949: 233s 1949: struct 233s 1949: { 233s 1949: __pid_t si_pid; 233s 1949: __uid_t si_uid; 233s 1949: int si_status; 233s 1949: __clock_t si_utime; 233s 1949: __clock_t si_stime; 233s 1949: } _sigchld; 233s 1949: 233s 1949: 233s 1949: struct 233s 1949: { 233s 1949: void *si_addr; 233s 1949: 233s 1949: short int si_addr_lsb; 233s 1949: union 233s 1949: { 233s 1949: 233s 1949: struct 233s 1949: { 233s 1949: void *_lower; 233s 1949: void *_upper; 233s 1949: } _addr_bnd; 233s 1949: 233s 1949: __uint32_t _pkey; 233s 1949: } _bounds; 233s 1949: } _sigfault; 233s 1949: 233s 1949: 233s 1949: struct 233s 1949: { 233s 1949: long int si_band; 233s 1949: int si_fd; 233s 1949: } _sigpoll; 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct 233s 1949: { 233s 1949: void *_call_addr; 233s 1949: int _syscall; 233s 1949: unsigned int _arch; 233s 1949: } _sigsys; 233s 1949: 233s 1949: } _sifields; 233s 1949: } siginfo_t ; 233s 1949: # 58 "/usr/include/signal.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 1 3 4 233s 1949: # 35 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 3 4 233s 1949: enum 233s 1949: { 233s 1949: SI_ASYNCNL = -60, 233s 1949: SI_DETHREAD = -7, 233s 1949: 233s 1949: SI_TKILL, 233s 1949: SI_SIGIO, 233s 1949: 233s 1949: SI_ASYNCIO, 233s 1949: SI_MESGQ, 233s 1949: SI_TIMER, 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: SI_QUEUE, 233s 1949: SI_USER, 233s 1949: SI_KERNEL = 0x80 233s 1949: # 66 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 3 4 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: ILL_ILLOPC = 1, 233s 1949: 233s 1949: ILL_ILLOPN, 233s 1949: 233s 1949: ILL_ILLADR, 233s 1949: 233s 1949: ILL_ILLTRP, 233s 1949: 233s 1949: ILL_PRVOPC, 233s 1949: 233s 1949: ILL_PRVREG, 233s 1949: 233s 1949: ILL_COPROC, 233s 1949: 233s 1949: ILL_BADSTK, 233s 1949: 233s 1949: ILL_BADIADDR 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: FPE_INTDIV = 1, 233s 1949: 233s 1949: FPE_INTOVF, 233s 1949: 233s 1949: FPE_FLTDIV, 233s 1949: 233s 1949: FPE_FLTOVF, 233s 1949: 233s 1949: FPE_FLTUND, 233s 1949: 233s 1949: FPE_FLTRES, 233s 1949: 233s 1949: FPE_FLTINV, 233s 1949: 233s 1949: FPE_FLTSUB, 233s 1949: 233s 1949: FPE_FLTUNK = 14, 233s 1949: 233s 1949: FPE_CONDTRAP 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: SEGV_MAPERR = 1, 233s 1949: 233s 1949: SEGV_ACCERR, 233s 1949: 233s 1949: SEGV_BNDERR, 233s 1949: 233s 1949: SEGV_PKUERR, 233s 1949: 233s 1949: SEGV_ACCADI, 233s 1949: 233s 1949: SEGV_ADIDERR, 233s 1949: 233s 1949: SEGV_ADIPERR, 233s 1949: 233s 1949: SEGV_MTEAERR, 233s 1949: 233s 1949: SEGV_MTESERR, 233s 1949: 233s 1949: SEGV_CPERR 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: BUS_ADRALN = 1, 233s 1949: 233s 1949: BUS_ADRERR, 233s 1949: 233s 1949: BUS_OBJERR, 233s 1949: 233s 1949: BUS_MCEERR_AR, 233s 1949: 233s 1949: BUS_MCEERR_AO 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: TRAP_BRKPT = 1, 233s 1949: 233s 1949: TRAP_TRACE, 233s 1949: 233s 1949: TRAP_BRANCH, 233s 1949: 233s 1949: TRAP_HWBKPT, 233s 1949: 233s 1949: TRAP_UNK 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: CLD_EXITED = 1, 233s 1949: 233s 1949: CLD_KILLED, 233s 1949: 233s 1949: CLD_DUMPED, 233s 1949: 233s 1949: CLD_TRAPPED, 233s 1949: 233s 1949: CLD_STOPPED, 233s 1949: 233s 1949: CLD_CONTINUED 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: POLL_IN = 1, 233s 1949: 233s 1949: POLL_OUT, 233s 1949: 233s 1949: POLL_MSG, 233s 1949: 233s 1949: POLL_ERR, 233s 1949: 233s 1949: POLL_PRI, 233s 1949: 233s 1949: POLL_HUP 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts-arch.h" 1 3 4 233s 1949: # 216 "/usr/include/arm-linux-gnueabihf/bits/siginfo-consts.h" 2 3 4 233s 1949: # 59 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigval_t.h" 1 3 4 233s 1949: # 16 "/usr/include/arm-linux-gnueabihf/bits/types/sigval_t.h" 3 4 233s 1949: typedef __sigval_t sigval_t; 233s 1949: # 63 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigevent_t.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 233s 1949: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/sigevent_t.h" 2 3 4 233s 1949: # 17 "/usr/include/arm-linux-gnueabihf/bits/types/sigevent_t.h" 3 4 233s 1949: typedef union pthread_attr_t pthread_attr_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef struct sigevent 233s 1949: { 233s 1949: __sigval_t sigev_value; 233s 1949: int sigev_signo; 233s 1949: int sigev_notify; 233s 1949: 233s 1949: union 233s 1949: { 233s 1949: int _pad[((64 / sizeof (int)) - 3)]; 233s 1949: 233s 1949: 233s 1949: 233s 1949: __pid_t _tid; 233s 1949: 233s 1949: struct 233s 1949: { 233s 1949: void (*_function) (__sigval_t); 233s 1949: pthread_attr_t *_attribute; 233s 1949: } _sigev_thread; 233s 1949: } _sigev_un; 233s 1949: } sigevent_t; 233s 1949: # 67 "/usr/include/signal.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigevent-consts.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/sigevent-consts.h" 3 4 233s 1949: enum 233s 1949: { 233s 1949: SIGEV_SIGNAL = 0, 233s 1949: 233s 1949: SIGEV_NONE, 233s 1949: 233s 1949: SIGEV_THREAD, 233s 1949: 233s 1949: 233s 1949: SIGEV_THREAD_ID = 4 233s 1949: 233s 1949: 233s 1949: }; 233s 1949: # 68 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef void (*__sighandler_t) (int); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) 233s 1949: noexcept (true); 233s 1949: 233s 1949: extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) 233s 1949: noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __sighandler_t signal (int __sig, __sighandler_t __handler) 233s 1949: noexcept (true); 233s 1949: # 112 "/usr/include/signal.h" 3 4 233s 1949: extern int kill (__pid_t __pid, int __sig) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int killpg (__pid_t __pgrp, int __sig) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int raise (int __sig) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) 233s 1949: noexcept (true); 233s 1949: extern int gsignal (int __sig) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void psignal (int __sig, const char *__s); 233s 1949: 233s 1949: 233s 1949: extern void psiginfo (const siginfo_t *__pinfo, const char *__s); 233s 1949: # 151 "/usr/include/signal.h" 3 4 233s 1949: extern int sigpause (int __sig) __asm__ ("__xpg_sigpause") 233s 1949: __attribute__ ((__deprecated__ ("Use the sigsuspend function instead"))); 233s 1949: # 173 "/usr/include/signal.h" 3 4 233s 1949: extern int sigblock (int __mask) noexcept (true) __attribute__ ((__deprecated__)); 233s 1949: 233s 1949: 233s 1949: extern int sigsetmask (int __mask) noexcept (true) __attribute__ ((__deprecated__)); 233s 1949: 233s 1949: 233s 1949: extern int siggetmask (void) noexcept (true) __attribute__ ((__deprecated__)); 233s 1949: # 188 "/usr/include/signal.h" 3 4 233s 1949: typedef __sighandler_t sighandler_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __sighandler_t sig_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sigemptyset (sigset_t *__set) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern int sigfillset (sigset_t *__set) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern int sigaddset (sigset_t *__set, int __signo) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern int sigdelset (sigset_t *__set, int __signo) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern int sigismember (const sigset_t *__set, int __signo) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sigisemptyset (const sigset_t *__set) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern int sigandset (sigset_t *__set, const sigset_t *__left, 233s 1949: const sigset_t *__right) noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); 233s 1949: 233s 1949: 233s 1949: extern int sigorset (sigset_t *__set, const sigset_t *__left, 233s 1949: const sigset_t *__right) noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigaction.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/sigaction.h" 3 4 233s 1949: struct sigaction 233s 1949: { 233s 1949: 233s 1949: 233s 1949: union 233s 1949: { 233s 1949: 233s 1949: __sighandler_t sa_handler; 233s 1949: 233s 1949: void (*sa_sigaction) (int, siginfo_t *, void *); 233s 1949: } 233s 1949: __sigaction_handler; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __sigset_t sa_mask; 233s 1949: 233s 1949: 233s 1949: int sa_flags; 233s 1949: 233s 1949: 233s 1949: void (*sa_restorer) (void); 233s 1949: }; 233s 1949: # 230 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: extern int sigprocmask (int __how, const sigset_t *__restrict __set, 233s 1949: sigset_t *__restrict __oset) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sigsuspend (const sigset_t *__set) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern int sigaction (int __sig, const struct sigaction *__restrict __act, 233s 1949: struct sigaction *__restrict __oact) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int sigpending (sigset_t *__set) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig) 233s 1949: __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sigwaitinfo (const sigset_t *__restrict __set, 233s 1949: siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); 233s 1949: # 279 "/usr/include/signal.h" 3 4 233s 1949: extern int sigtimedwait (const sigset_t *__restrict __set, siginfo_t *__restrict __info, const struct timespec *__restrict __timeout) __asm__ ("" "__sigtimedwait64") 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val) 233s 1949: noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 1 3 4 233s 1949: # 30 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/asm/sigcontext.h" 1 3 4 233s 1949: # 10 "/usr/include/arm-linux-gnueabihf/asm/sigcontext.h" 3 4 233s 1949: struct sigcontext { 233s 1949: unsigned long trap_no; 233s 1949: unsigned long error_code; 233s 1949: unsigned long oldmask; 233s 1949: unsigned long arm_r0; 233s 1949: unsigned long arm_r1; 233s 1949: unsigned long arm_r2; 233s 1949: unsigned long arm_r3; 233s 1949: unsigned long arm_r4; 233s 1949: unsigned long arm_r5; 233s 1949: unsigned long arm_r6; 233s 1949: unsigned long arm_r7; 233s 1949: unsigned long arm_r8; 233s 1949: unsigned long arm_r9; 233s 1949: unsigned long arm_r10; 233s 1949: unsigned long arm_fp; 233s 1949: unsigned long arm_ip; 233s 1949: unsigned long arm_sp; 233s 1949: unsigned long arm_lr; 233s 1949: unsigned long arm_pc; 233s 1949: unsigned long arm_cpsr; 233s 1949: unsigned long fault_address; 233s 1949: }; 233s 1949: # 31 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 35 "/usr/include/arm-linux-gnueabihf/bits/sigcontext.h" 2 3 4 233s 1949: # 302 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: extern int sigreturn (struct sigcontext *__scp) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 229 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 3 4 233s 1949: typedef unsigned int size_t; 233s 1949: # 312 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/stack_t.h" 1 3 4 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/stack_t.h" 3 4 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/types/stack_t.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: typedef struct 233s 1949: { 233s 1949: void *ss_sp; 233s 1949: int ss_flags; 233s 1949: size_t ss_size; 233s 1949: } stack_t; 233s 1949: # 314 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/sys/ucontext.h" 1 3 4 233s 1949: # 36 "/usr/include/arm-linux-gnueabihf/sys/ucontext.h" 3 4 233s 1949: typedef int greg_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef greg_t gregset_t[18]; 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: REG_R0 = 0, 233s 1949: 233s 1949: REG_R1 = 1, 233s 1949: 233s 1949: REG_R2 = 2, 233s 1949: 233s 1949: REG_R3 = 3, 233s 1949: 233s 1949: REG_R4 = 4, 233s 1949: 233s 1949: REG_R5 = 5, 233s 1949: 233s 1949: REG_R6 = 6, 233s 1949: 233s 1949: REG_R7 = 7, 233s 1949: 233s 1949: REG_R8 = 8, 233s 1949: 233s 1949: REG_R9 = 9, 233s 1949: 233s 1949: REG_R10 = 10, 233s 1949: 233s 1949: REG_R11 = 11, 233s 1949: 233s 1949: REG_R12 = 12, 233s 1949: 233s 1949: REG_R13 = 13, 233s 1949: 233s 1949: REG_R14 = 14, 233s 1949: 233s 1949: REG_R15 = 15 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: struct _libc_fpstate 233s 1949: { 233s 1949: struct 233s 1949: { 233s 1949: unsigned int sign1:1; 233s 1949: unsigned int unused:15; 233s 1949: unsigned int sign2:1; 233s 1949: unsigned int exponent:14; 233s 1949: unsigned int j:1; 233s 1949: unsigned int mantissa1:31; 233s 1949: unsigned int mantissa0:32; 233s 1949: } fpregs[8]; 233s 1949: unsigned int fpsr:32; 233s 1949: unsigned int fpcr:32; 233s 1949: unsigned char ftype[8]; 233s 1949: unsigned int init_flag; 233s 1949: }; 233s 1949: 233s 1949: typedef struct _libc_fpstate fpregset_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef struct 233s 1949: { 233s 1949: unsigned long int trap_no; 233s 1949: unsigned long int error_code; 233s 1949: unsigned long int oldmask; 233s 1949: unsigned long int arm_r0; 233s 1949: unsigned long int arm_r1; 233s 1949: unsigned long int arm_r2; 233s 1949: unsigned long int arm_r3; 233s 1949: unsigned long int arm_r4; 233s 1949: unsigned long int arm_r5; 233s 1949: unsigned long int arm_r6; 233s 1949: unsigned long int arm_r7; 233s 1949: unsigned long int arm_r8; 233s 1949: unsigned long int arm_r9; 233s 1949: unsigned long int arm_r10; 233s 1949: unsigned long int arm_fp; 233s 1949: unsigned long int arm_ip; 233s 1949: unsigned long int arm_sp; 233s 1949: unsigned long int arm_lr; 233s 1949: unsigned long int arm_pc; 233s 1949: unsigned long int arm_cpsr; 233s 1949: unsigned long int fault_address; 233s 1949: } mcontext_t; 233s 1949: 233s 1949: 233s 1949: typedef struct ucontext_t 233s 1949: { 233s 1949: unsigned long uc_flags; 233s 1949: struct ucontext_t *uc_link; 233s 1949: stack_t uc_stack; 233s 1949: mcontext_t uc_mcontext; 233s 1949: sigset_t uc_sigmask; 233s 1949: unsigned long uc_regspace[128] __attribute__((__aligned__(8))); 233s 1949: } ucontext_t; 233s 1949: # 317 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int siginterrupt (int __sig, int __interrupt) noexcept (true) 233s 1949: __attribute__ ((__deprecated__ ("Use sigaction with SA_RESTART instead"))); 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigstack.h" 1 3 4 233s 1949: # 328 "/usr/include/signal.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigstksz.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/sigstksz.h" 3 4 233s 1949: # 1 "/usr/include/unistd.h" 1 3 4 233s 1949: # 27 "/usr/include/unistd.h" 3 4 233s 1949: extern "C" { 233s 1949: # 202 "/usr/include/unistd.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix_opt.h" 1 3 4 233s 1949: # 203 "/usr/include/unistd.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 1 3 4 233s 1949: # 22 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 2 3 4 233s 1949: # 207 "/usr/include/unistd.h" 2 3 4 233s 1949: # 220 "/usr/include/unistd.h" 3 4 233s 1949: typedef __ssize_t ssize_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 227 "/usr/include/unistd.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __gid_t gid_t; 233s 1949: # 245 "/usr/include/unistd.h" 3 4 233s 1949: typedef __off64_t off_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __off64_t off64_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __useconds_t useconds_t; 233s 1949: # 267 "/usr/include/unistd.h" 3 4 233s 1949: typedef __intptr_t intptr_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __socklen_t socklen_t; 233s 1949: # 287 "/usr/include/unistd.h" 3 4 233s 1949: extern int access (const char *__name, int __type) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int euidaccess (const char *__name, int __type) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern int eaccess (const char *__name, int __type) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern int execveat (int __fd, const char *__path, char *const __argv[], 233s 1949: char *const __envp[], int __flags) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int faccessat (int __fd, const char *__file, int __type, int __flag) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 233s 1949: # 342 "/usr/include/unistd.h" 3 4 233s 1949: extern __off64_t lseek (int __fd, __off64_t __offset, int __whence) noexcept (true) __asm__ ("" "lseek64") 233s 1949: 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) 233s 1949: noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int close (int __fd); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void closefrom (int __lowfd) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__)) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__access__ (__read_only__, 2, 3))); 233s 1949: # 404 "/usr/include/unistd.h" 3 4 233s 1949: extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) 233s 1949: ; 233s 1949: extern ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pwrite64") 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__access__ (__read_only__, 2, 3))); 233s 1949: # 422 "/usr/include/unistd.h" 3 4 233s 1949: extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, 233s 1949: __off64_t __offset) __attribute__ ((__warn_unused_result__)) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, 233s 1949: __off64_t __offset) __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__access__ (__read_only__, 2, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int pipe (int __pipedes[2]) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int pipe2 (int __pipedes[2], int __flags) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: # 452 "/usr/include/unistd.h" 3 4 233s 1949: extern unsigned int alarm (unsigned int __seconds) noexcept (true); 233s 1949: # 464 "/usr/include/unistd.h" 3 4 233s 1949: extern unsigned int sleep (unsigned int __seconds); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) 233s 1949: noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int usleep (__useconds_t __useconds); 233s 1949: # 489 "/usr/include/unistd.h" 3 4 233s 1949: extern int pause (void); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int chown (const char *__file, __uid_t __owner, __gid_t __group) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fchown (int __fd, __uid_t __owner, __gid_t __group) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fchownat (int __fd, const char *__file, __uid_t __owner, 233s 1949: __gid_t __group, int __flag) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int chdir (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fchdir (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: # 531 "/usr/include/unistd.h" 3 4 233s 1949: extern char *getcwd (char *__buf, size_t __size) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *get_current_dir_name (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *getwd (char *__buf) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__access__ (__write_only__, 1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int dup (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: extern int dup2 (int __fd, int __fd2) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int dup3 (int __fd, int __fd2, int __flags) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char **__environ; 233s 1949: 233s 1949: extern char **environ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int execve (const char *__path, char *const __argv[], 233s 1949: char *const __envp[]) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fexecve (int __fd, char *const __argv[], char *const __envp[]) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int execv (const char *__path, char *const __argv[]) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int execle (const char *__path, const char *__arg, ...) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int execl (const char *__path, const char *__arg, ...) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int execvp (const char *__file, char *const __argv[]) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int execlp (const char *__file, const char *__arg, ...) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int execvpe (const char *__file, char *const __argv[], 233s 1949: char *const __envp[]) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int nice (int __inc) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void _exit (int __status) __attribute__ ((__noreturn__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 3 4 233s 1949: enum 233s 1949: { 233s 1949: _PC_LINK_MAX, 233s 1949: 233s 1949: _PC_MAX_CANON, 233s 1949: 233s 1949: _PC_MAX_INPUT, 233s 1949: 233s 1949: _PC_NAME_MAX, 233s 1949: 233s 1949: _PC_PATH_MAX, 233s 1949: 233s 1949: _PC_PIPE_BUF, 233s 1949: 233s 1949: _PC_CHOWN_RESTRICTED, 233s 1949: 233s 1949: _PC_NO_TRUNC, 233s 1949: 233s 1949: _PC_VDISABLE, 233s 1949: 233s 1949: _PC_SYNC_IO, 233s 1949: 233s 1949: _PC_ASYNC_IO, 233s 1949: 233s 1949: _PC_PRIO_IO, 233s 1949: 233s 1949: _PC_SOCK_MAXBUF, 233s 1949: 233s 1949: _PC_FILESIZEBITS, 233s 1949: 233s 1949: _PC_REC_INCR_XFER_SIZE, 233s 1949: 233s 1949: _PC_REC_MAX_XFER_SIZE, 233s 1949: 233s 1949: _PC_REC_MIN_XFER_SIZE, 233s 1949: 233s 1949: _PC_REC_XFER_ALIGN, 233s 1949: 233s 1949: _PC_ALLOC_SIZE_MIN, 233s 1949: 233s 1949: _PC_SYMLINK_MAX, 233s 1949: 233s 1949: _PC_2_SYMLINKS 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: _SC_ARG_MAX, 233s 1949: 233s 1949: _SC_CHILD_MAX, 233s 1949: 233s 1949: _SC_CLK_TCK, 233s 1949: 233s 1949: _SC_NGROUPS_MAX, 233s 1949: 233s 1949: _SC_OPEN_MAX, 233s 1949: 233s 1949: _SC_STREAM_MAX, 233s 1949: 233s 1949: _SC_TZNAME_MAX, 233s 1949: 233s 1949: _SC_JOB_CONTROL, 233s 1949: 233s 1949: _SC_SAVED_IDS, 233s 1949: 233s 1949: _SC_REALTIME_SIGNALS, 233s 1949: 233s 1949: _SC_PRIORITY_SCHEDULING, 233s 1949: 233s 1949: _SC_TIMERS, 233s 1949: 233s 1949: _SC_ASYNCHRONOUS_IO, 233s 1949: 233s 1949: _SC_PRIORITIZED_IO, 233s 1949: 233s 1949: _SC_SYNCHRONIZED_IO, 233s 1949: 233s 1949: _SC_FSYNC, 233s 1949: 233s 1949: _SC_MAPPED_FILES, 233s 1949: 233s 1949: _SC_MEMLOCK, 233s 1949: 233s 1949: _SC_MEMLOCK_RANGE, 233s 1949: 233s 1949: _SC_MEMORY_PROTECTION, 233s 1949: 233s 1949: _SC_MESSAGE_PASSING, 233s 1949: 233s 1949: _SC_SEMAPHORES, 233s 1949: 233s 1949: _SC_SHARED_MEMORY_OBJECTS, 233s 1949: 233s 1949: _SC_AIO_LISTIO_MAX, 233s 1949: 233s 1949: _SC_AIO_MAX, 233s 1949: 233s 1949: _SC_AIO_PRIO_DELTA_MAX, 233s 1949: 233s 1949: _SC_DELAYTIMER_MAX, 233s 1949: 233s 1949: _SC_MQ_OPEN_MAX, 233s 1949: 233s 1949: _SC_MQ_PRIO_MAX, 233s 1949: 233s 1949: _SC_VERSION, 233s 1949: 233s 1949: _SC_PAGESIZE, 233s 1949: 233s 1949: 233s 1949: _SC_RTSIG_MAX, 233s 1949: 233s 1949: _SC_SEM_NSEMS_MAX, 233s 1949: 233s 1949: _SC_SEM_VALUE_MAX, 233s 1949: 233s 1949: _SC_SIGQUEUE_MAX, 233s 1949: 233s 1949: _SC_TIMER_MAX, 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: _SC_BC_BASE_MAX, 233s 1949: 233s 1949: _SC_BC_DIM_MAX, 233s 1949: 233s 1949: _SC_BC_SCALE_MAX, 233s 1949: 233s 1949: _SC_BC_STRING_MAX, 233s 1949: 233s 1949: _SC_COLL_WEIGHTS_MAX, 233s 1949: 233s 1949: _SC_EQUIV_CLASS_MAX, 233s 1949: 233s 1949: _SC_EXPR_NEST_MAX, 233s 1949: 233s 1949: _SC_LINE_MAX, 233s 1949: 233s 1949: _SC_RE_DUP_MAX, 233s 1949: 233s 1949: _SC_CHARCLASS_NAME_MAX, 233s 1949: 233s 1949: 233s 1949: _SC_2_VERSION, 233s 1949: 233s 1949: _SC_2_C_BIND, 233s 1949: 233s 1949: _SC_2_C_DEV, 233s 1949: 233s 1949: _SC_2_FORT_DEV, 233s 1949: 233s 1949: _SC_2_FORT_RUN, 233s 1949: 233s 1949: _SC_2_SW_DEV, 233s 1949: 233s 1949: _SC_2_LOCALEDEF, 233s 1949: 233s 1949: 233s 1949: _SC_PII, 233s 1949: 233s 1949: _SC_PII_XTI, 233s 1949: 233s 1949: _SC_PII_SOCKET, 233s 1949: 233s 1949: _SC_PII_INTERNET, 233s 1949: 233s 1949: _SC_PII_OSI, 233s 1949: 233s 1949: _SC_POLL, 233s 1949: 233s 1949: _SC_SELECT, 233s 1949: 233s 1949: _SC_UIO_MAXIOV, 233s 1949: 233s 1949: _SC_IOV_MAX = _SC_UIO_MAXIOV, 233s 1949: 233s 1949: _SC_PII_INTERNET_STREAM, 233s 1949: 233s 1949: _SC_PII_INTERNET_DGRAM, 233s 1949: 233s 1949: _SC_PII_OSI_COTS, 233s 1949: 233s 1949: _SC_PII_OSI_CLTS, 233s 1949: 233s 1949: _SC_PII_OSI_M, 233s 1949: 233s 1949: _SC_T_IOV_MAX, 233s 1949: 233s 1949: 233s 1949: 233s 1949: _SC_THREADS, 233s 1949: 233s 1949: _SC_THREAD_SAFE_FUNCTIONS, 233s 1949: 233s 1949: _SC_GETGR_R_SIZE_MAX, 233s 1949: 233s 1949: _SC_GETPW_R_SIZE_MAX, 233s 1949: 233s 1949: _SC_LOGIN_NAME_MAX, 233s 1949: 233s 1949: _SC_TTY_NAME_MAX, 233s 1949: 233s 1949: _SC_THREAD_DESTRUCTOR_ITERATIONS, 233s 1949: 233s 1949: _SC_THREAD_KEYS_MAX, 233s 1949: 233s 1949: _SC_THREAD_STACK_MIN, 233s 1949: 233s 1949: _SC_THREAD_THREADS_MAX, 233s 1949: 233s 1949: _SC_THREAD_ATTR_STACKADDR, 233s 1949: 233s 1949: _SC_THREAD_ATTR_STACKSIZE, 233s 1949: 233s 1949: _SC_THREAD_PRIORITY_SCHEDULING, 233s 1949: 233s 1949: _SC_THREAD_PRIO_INHERIT, 233s 1949: 233s 1949: _SC_THREAD_PRIO_PROTECT, 233s 1949: 233s 1949: _SC_THREAD_PROCESS_SHARED, 233s 1949: 233s 1949: 233s 1949: _SC_NPROCESSORS_CONF, 233s 1949: 233s 1949: _SC_NPROCESSORS_ONLN, 233s 1949: 233s 1949: _SC_PHYS_PAGES, 233s 1949: 233s 1949: _SC_AVPHYS_PAGES, 233s 1949: 233s 1949: _SC_ATEXIT_MAX, 233s 1949: 233s 1949: _SC_PASS_MAX, 233s 1949: 233s 1949: 233s 1949: _SC_XOPEN_VERSION, 233s 1949: 233s 1949: _SC_XOPEN_XCU_VERSION, 233s 1949: 233s 1949: _SC_XOPEN_UNIX, 233s 1949: 233s 1949: _SC_XOPEN_CRYPT, 233s 1949: 233s 1949: _SC_XOPEN_ENH_I18N, 233s 1949: 233s 1949: _SC_XOPEN_SHM, 233s 1949: 233s 1949: 233s 1949: _SC_2_CHAR_TERM, 233s 1949: 233s 1949: _SC_2_C_VERSION, 233s 1949: 233s 1949: _SC_2_UPE, 233s 1949: 233s 1949: 233s 1949: _SC_XOPEN_XPG2, 233s 1949: 233s 1949: _SC_XOPEN_XPG3, 233s 1949: 233s 1949: _SC_XOPEN_XPG4, 233s 1949: 233s 1949: 233s 1949: _SC_CHAR_BIT, 233s 1949: 233s 1949: _SC_CHAR_MAX, 233s 1949: 233s 1949: _SC_CHAR_MIN, 233s 1949: 233s 1949: _SC_INT_MAX, 233s 1949: 233s 1949: _SC_INT_MIN, 233s 1949: 233s 1949: _SC_LONG_BIT, 233s 1949: 233s 1949: _SC_WORD_BIT, 233s 1949: 233s 1949: _SC_MB_LEN_MAX, 233s 1949: 233s 1949: _SC_NZERO, 233s 1949: 233s 1949: _SC_SSIZE_MAX, 233s 1949: 233s 1949: _SC_SCHAR_MAX, 233s 1949: 233s 1949: _SC_SCHAR_MIN, 233s 1949: 233s 1949: _SC_SHRT_MAX, 233s 1949: 233s 1949: _SC_SHRT_MIN, 233s 1949: 233s 1949: _SC_UCHAR_MAX, 233s 1949: 233s 1949: _SC_UINT_MAX, 233s 1949: 233s 1949: _SC_ULONG_MAX, 233s 1949: 233s 1949: _SC_USHRT_MAX, 233s 1949: 233s 1949: 233s 1949: _SC_NL_ARGMAX, 233s 1949: 233s 1949: _SC_NL_LANGMAX, 233s 1949: 233s 1949: _SC_NL_MSGMAX, 233s 1949: 233s 1949: _SC_NL_NMAX, 233s 1949: 233s 1949: _SC_NL_SETMAX, 233s 1949: 233s 1949: _SC_NL_TEXTMAX, 233s 1949: 233s 1949: 233s 1949: _SC_XBS5_ILP32_OFF32, 233s 1949: 233s 1949: _SC_XBS5_ILP32_OFFBIG, 233s 1949: 233s 1949: _SC_XBS5_LP64_OFF64, 233s 1949: 233s 1949: _SC_XBS5_LPBIG_OFFBIG, 233s 1949: 233s 1949: 233s 1949: _SC_XOPEN_LEGACY, 233s 1949: 233s 1949: _SC_XOPEN_REALTIME, 233s 1949: 233s 1949: _SC_XOPEN_REALTIME_THREADS, 233s 1949: 233s 1949: 233s 1949: _SC_ADVISORY_INFO, 233s 1949: 233s 1949: _SC_BARRIERS, 233s 1949: 233s 1949: _SC_BASE, 233s 1949: 233s 1949: _SC_C_LANG_SUPPORT, 233s 1949: 233s 1949: _SC_C_LANG_SUPPORT_R, 233s 1949: 233s 1949: _SC_CLOCK_SELECTION, 233s 1949: 233s 1949: _SC_CPUTIME, 233s 1949: 233s 1949: _SC_THREAD_CPUTIME, 233s 1949: 233s 1949: _SC_DEVICE_IO, 233s 1949: 233s 1949: _SC_DEVICE_SPECIFIC, 233s 1949: 233s 1949: _SC_DEVICE_SPECIFIC_R, 233s 1949: 233s 1949: _SC_FD_MGMT, 233s 1949: 233s 1949: _SC_FIFO, 233s 1949: 233s 1949: _SC_PIPE, 233s 1949: 233s 1949: _SC_FILE_ATTRIBUTES, 233s 1949: 233s 1949: _SC_FILE_LOCKING, 233s 1949: 233s 1949: _SC_FILE_SYSTEM, 233s 1949: 233s 1949: _SC_MONOTONIC_CLOCK, 233s 1949: 233s 1949: _SC_MULTI_PROCESS, 233s 1949: 233s 1949: _SC_SINGLE_PROCESS, 233s 1949: 233s 1949: _SC_NETWORKING, 233s 1949: 233s 1949: _SC_READER_WRITER_LOCKS, 233s 1949: 233s 1949: _SC_SPIN_LOCKS, 233s 1949: 233s 1949: _SC_REGEXP, 233s 1949: 233s 1949: _SC_REGEX_VERSION, 233s 1949: 233s 1949: _SC_SHELL, 233s 1949: 233s 1949: _SC_SIGNALS, 233s 1949: 233s 1949: _SC_SPAWN, 233s 1949: 233s 1949: _SC_SPORADIC_SERVER, 233s 1949: 233s 1949: _SC_THREAD_SPORADIC_SERVER, 233s 1949: 233s 1949: _SC_SYSTEM_DATABASE, 233s 1949: 233s 1949: _SC_SYSTEM_DATABASE_R, 233s 1949: 233s 1949: _SC_TIMEOUTS, 233s 1949: 233s 1949: _SC_TYPED_MEMORY_OBJECTS, 233s 1949: 233s 1949: _SC_USER_GROUPS, 233s 1949: 233s 1949: _SC_USER_GROUPS_R, 233s 1949: 233s 1949: _SC_2_PBS, 233s 1949: 233s 1949: _SC_2_PBS_ACCOUNTING, 233s 1949: 233s 1949: _SC_2_PBS_LOCATE, 233s 1949: 233s 1949: _SC_2_PBS_MESSAGE, 233s 1949: 233s 1949: _SC_2_PBS_TRACK, 233s 1949: 233s 1949: _SC_SYMLOOP_MAX, 233s 1949: 233s 1949: _SC_STREAMS, 233s 1949: 233s 1949: _SC_2_PBS_CHECKPOINT, 233s 1949: 233s 1949: 233s 1949: _SC_V6_ILP32_OFF32, 233s 1949: 233s 1949: _SC_V6_ILP32_OFFBIG, 233s 1949: 233s 1949: _SC_V6_LP64_OFF64, 233s 1949: 233s 1949: _SC_V6_LPBIG_OFFBIG, 233s 1949: 233s 1949: 233s 1949: _SC_HOST_NAME_MAX, 233s 1949: 233s 1949: _SC_TRACE, 233s 1949: 233s 1949: _SC_TRACE_EVENT_FILTER, 233s 1949: 233s 1949: _SC_TRACE_INHERIT, 233s 1949: 233s 1949: _SC_TRACE_LOG, 233s 1949: 233s 1949: 233s 1949: _SC_LEVEL1_ICACHE_SIZE, 233s 1949: 233s 1949: _SC_LEVEL1_ICACHE_ASSOC, 233s 1949: 233s 1949: _SC_LEVEL1_ICACHE_LINESIZE, 233s 1949: 233s 1949: _SC_LEVEL1_DCACHE_SIZE, 233s 1949: 233s 1949: _SC_LEVEL1_DCACHE_ASSOC, 233s 1949: 233s 1949: _SC_LEVEL1_DCACHE_LINESIZE, 233s 1949: 233s 1949: _SC_LEVEL2_CACHE_SIZE, 233s 1949: 233s 1949: _SC_LEVEL2_CACHE_ASSOC, 233s 1949: 233s 1949: _SC_LEVEL2_CACHE_LINESIZE, 233s 1949: 233s 1949: _SC_LEVEL3_CACHE_SIZE, 233s 1949: 233s 1949: _SC_LEVEL3_CACHE_ASSOC, 233s 1949: 233s 1949: _SC_LEVEL3_CACHE_LINESIZE, 233s 1949: 233s 1949: _SC_LEVEL4_CACHE_SIZE, 233s 1949: 233s 1949: _SC_LEVEL4_CACHE_ASSOC, 233s 1949: 233s 1949: _SC_LEVEL4_CACHE_LINESIZE, 233s 1949: 233s 1949: 233s 1949: 233s 1949: _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, 233s 1949: 233s 1949: _SC_RAW_SOCKETS, 233s 1949: 233s 1949: 233s 1949: _SC_V7_ILP32_OFF32, 233s 1949: 233s 1949: _SC_V7_ILP32_OFFBIG, 233s 1949: 233s 1949: _SC_V7_LP64_OFF64, 233s 1949: 233s 1949: _SC_V7_LPBIG_OFFBIG, 233s 1949: 233s 1949: 233s 1949: _SC_SS_REPL_MAX, 233s 1949: 233s 1949: 233s 1949: _SC_TRACE_EVENT_NAME_MAX, 233s 1949: 233s 1949: _SC_TRACE_NAME_MAX, 233s 1949: 233s 1949: _SC_TRACE_SYS_MAX, 233s 1949: 233s 1949: _SC_TRACE_USER_EVENT_MAX, 233s 1949: 233s 1949: 233s 1949: _SC_XOPEN_STREAMS, 233s 1949: 233s 1949: 233s 1949: _SC_THREAD_ROBUST_PRIO_INHERIT, 233s 1949: 233s 1949: _SC_THREAD_ROBUST_PRIO_PROTECT, 233s 1949: 233s 1949: 233s 1949: _SC_MINSIGSTKSZ, 233s 1949: 233s 1949: 233s 1949: _SC_SIGSTKSZ 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: _CS_PATH, 233s 1949: 233s 1949: 233s 1949: _CS_V6_WIDTH_RESTRICTED_ENVS, 233s 1949: 233s 1949: 233s 1949: 233s 1949: _CS_GNU_LIBC_VERSION, 233s 1949: 233s 1949: _CS_GNU_LIBPTHREAD_VERSION, 233s 1949: 233s 1949: 233s 1949: _CS_V5_WIDTH_RESTRICTED_ENVS, 233s 1949: 233s 1949: 233s 1949: 233s 1949: _CS_V7_WIDTH_RESTRICTED_ENVS, 233s 1949: 233s 1949: 233s 1949: 233s 1949: _CS_LFS_CFLAGS = 1000, 233s 1949: 233s 1949: _CS_LFS_LDFLAGS, 233s 1949: 233s 1949: _CS_LFS_LIBS, 233s 1949: 233s 1949: _CS_LFS_LINTFLAGS, 233s 1949: 233s 1949: _CS_LFS64_CFLAGS, 233s 1949: 233s 1949: _CS_LFS64_LDFLAGS, 233s 1949: 233s 1949: _CS_LFS64_LIBS, 233s 1949: 233s 1949: _CS_LFS64_LINTFLAGS, 233s 1949: 233s 1949: 233s 1949: _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, 233s 1949: 233s 1949: _CS_XBS5_ILP32_OFF32_LDFLAGS, 233s 1949: 233s 1949: _CS_XBS5_ILP32_OFF32_LIBS, 233s 1949: 233s 1949: _CS_XBS5_ILP32_OFF32_LINTFLAGS, 233s 1949: 233s 1949: _CS_XBS5_ILP32_OFFBIG_CFLAGS, 233s 1949: 233s 1949: _CS_XBS5_ILP32_OFFBIG_LDFLAGS, 233s 1949: 233s 1949: _CS_XBS5_ILP32_OFFBIG_LIBS, 233s 1949: 233s 1949: _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, 233s 1949: 233s 1949: _CS_XBS5_LP64_OFF64_CFLAGS, 233s 1949: 233s 1949: _CS_XBS5_LP64_OFF64_LDFLAGS, 233s 1949: 233s 1949: _CS_XBS5_LP64_OFF64_LIBS, 233s 1949: 233s 1949: _CS_XBS5_LP64_OFF64_LINTFLAGS, 233s 1949: 233s 1949: _CS_XBS5_LPBIG_OFFBIG_CFLAGS, 233s 1949: 233s 1949: _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, 233s 1949: 233s 1949: _CS_XBS5_LPBIG_OFFBIG_LIBS, 233s 1949: 233s 1949: _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, 233s 1949: 233s 1949: 233s 1949: _CS_POSIX_V6_ILP32_OFF32_CFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_ILP32_OFF32_LIBS, 233s 1949: 233s 1949: _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_ILP32_OFFBIG_LIBS, 233s 1949: 233s 1949: _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_LP64_OFF64_CFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_LP64_OFF64_LDFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_LP64_OFF64_LIBS, 233s 1949: 233s 1949: _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, 233s 1949: 233s 1949: _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, 233s 1949: 233s 1949: 233s 1949: _CS_POSIX_V7_ILP32_OFF32_CFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_ILP32_OFF32_LIBS, 233s 1949: 233s 1949: _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_ILP32_OFFBIG_LIBS, 233s 1949: 233s 1949: _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_LP64_OFF64_CFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_LP64_OFF64_LDFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_LP64_OFF64_LIBS, 233s 1949: 233s 1949: _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, 233s 1949: 233s 1949: _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, 233s 1949: 233s 1949: _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, 233s 1949: 233s 1949: 233s 1949: _CS_V6_ENV, 233s 1949: 233s 1949: _CS_V7_ENV 233s 1949: 233s 1949: }; 233s 1949: # 631 "/usr/include/unistd.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: extern long int pathconf (const char *__path, int __name) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern long int fpathconf (int __fd, int __name) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long int sysconf (int __name) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern size_t confstr (int __name, char *__buf, size_t __len) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __pid_t getpid (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern __pid_t getppid (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern __pid_t getpgrp (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern __pid_t __getpgid (__pid_t __pid) noexcept (true); 233s 1949: 233s 1949: extern __pid_t getpgid (__pid_t __pid) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setpgid (__pid_t __pid, __pid_t __pgid) noexcept (true); 233s 1949: # 682 "/usr/include/unistd.h" 3 4 233s 1949: extern int setpgrp (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __pid_t setsid (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __pid_t getsid (__pid_t __pid) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uid_t getuid (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern __uid_t geteuid (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern __gid_t getgid (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern __gid_t getegid (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getgroups (int __size, __gid_t __list[]) noexcept (true) __attribute__ ((__warn_unused_result__)) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern int group_member (__gid_t __gid) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setuid (__uid_t __uid) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setreuid (__uid_t __ruid, __uid_t __euid) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int seteuid (__uid_t __uid) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setgid (__gid_t __gid) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setregid (__gid_t __rgid, __gid_t __egid) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setegid (__gid_t __gid) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) 233s 1949: noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) 233s 1949: noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) 233s 1949: noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) 233s 1949: noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __pid_t fork (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __pid_t vfork (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __pid_t _Fork (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *ttyname (int __fd) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ttyname_r (int __fd, char *__buf, size_t __buflen) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int isatty (int __fd) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ttyslot (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int link (const char *__from, const char *__to) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int linkat (int __fromfd, const char *__from, int __tofd, 233s 1949: const char *__to, int __flags) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int symlink (const char *__from, const char *__to) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern ssize_t readlink (const char *__restrict __path, 233s 1949: char *__restrict __buf, size_t __len) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int symlinkat (const char *__from, int __tofd, 233s 1949: const char *__to) noexcept (true) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: extern ssize_t readlinkat (int __fd, const char *__restrict __path, 233s 1949: char *__restrict __buf, size_t __len) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int unlink (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int unlinkat (int __fd, const char *__name, int __flag) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int rmdir (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __pid_t tcgetpgrp (int __fd) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *getlogin (void); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setlogin (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 1 3 4 233s 1949: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 233s 1949: extern "C" { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *optarg; 233s 1949: # 50 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 233s 1949: extern int optind; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int opterr; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int optopt; 233s 1949: # 91 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 233s 1949: extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 233s 1949: 233s 1949: } 233s 1949: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 2 3 4 233s 1949: 233s 1949: extern "C" { 233s 1949: # 49 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4 233s 1949: } 233s 1949: # 904 "/usr/include/unistd.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int gethostname (char *__name, size_t __len) noexcept (true) __attribute__ ((__nonnull__ (1))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sethostname (const char *__name, size_t __len) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sethostid (long int __id) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getdomainname (char *__name, size_t __len) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) 233s 1949: ; 233s 1949: extern int setdomainname (const char *__name, size_t __len) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int vhangup (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int revoke (const char *__file) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int profil (unsigned short int *__sample_buffer, size_t __size, 233s 1949: size_t __offset, unsigned int __scale) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int acct (const char *__name) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *getusershell (void) noexcept (true); 233s 1949: extern void endusershell (void) noexcept (true); 233s 1949: extern void setusershell (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int daemon (int __nochdir, int __noclose) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int chroot (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fsync (int __fd); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int syncfs (int __fd) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int gethostid (void); 233s 1949: 233s 1949: 233s 1949: extern void sync (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getpagesize (void) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getdtablesize (void) noexcept (true); 233s 1949: # 1030 "/usr/include/unistd.h" 3 4 233s 1949: extern int truncate (const char *__file, __off64_t __length) noexcept (true) __asm__ ("" "truncate64") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int truncate64 (const char *__file, __off64_t __length) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: # 1052 "/usr/include/unistd.h" 3 4 233s 1949: extern int ftruncate (int __fd, __off64_t __length) noexcept (true) __asm__ ("" "ftruncate64") 233s 1949: __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ftruncate64 (int __fd, __off64_t __length) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: # 1070 "/usr/include/unistd.h" 3 4 233s 1949: extern int brk (void *__addr) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *sbrk (intptr_t __delta) noexcept (true); 233s 1949: # 1091 "/usr/include/unistd.h" 3 4 233s 1949: extern long int syscall (long int __sysno, ...) noexcept (true); 233s 1949: # 1117 "/usr/include/unistd.h" 3 4 233s 1949: extern int lockf (int __fd, int __cmd, __off64_t __len) __asm__ ("" "lockf64") 233s 1949: __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__)); 233s 1949: # 1142 "/usr/include/unistd.h" 3 4 233s 1949: ssize_t copy_file_range (int __infd, __off64_t *__pinoff, 233s 1949: int __outfd, __off64_t *__poutoff, 233s 1949: size_t __length, unsigned int __flags); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fdatasync (int __fildes); 233s 1949: # 1162 "/usr/include/unistd.h" 3 4 233s 1949: extern char *crypt (const char *__key, const char *__salt) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void swab (const void *__restrict __from, void *__restrict __to, 233s 1949: ssize_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))) 233s 1949: __attribute__ ((__access__ (__read_only__, 1, 3))) 233s 1949: __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: # 1201 "/usr/include/unistd.h" 3 4 233s 1949: int getentropy (void *__buffer, size_t __length) __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: # 1211 "/usr/include/unistd.h" 3 4 233s 1949: extern int close_range (unsigned int __fd, unsigned int __max_fd, 233s 1949: int __flags) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 1 3 4 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd-decl.h" 1 3 4 233s 1949: # 26 "/usr/include/arm-linux-gnueabihf/bits/unistd-decl.h" 3 4 233s 1949: extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes, 233s 1949: size_t __buflen) 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes, 233s 1949: __off_t __offset, size_t __bufsize) 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes, 233s 1949: __off64_t __offset, size_t __bufsize) 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer"))) 233s 1949: ; 233s 1949: extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern ssize_t __readlink_chk (const char *__restrict __path, 233s 1949: char *__restrict __buf, size_t __len, 233s 1949: size_t __buflen) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) noexcept (true) __asm__ ("" "readlink") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern ssize_t __readlink_chk_warn (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) noexcept (true) __asm__ ("" "__readlink_chk") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path, 233s 1949: char *__restrict __buf, size_t __len, 233s 1949: size_t __buflen) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); 233s 1949: extern ssize_t __readlinkat_alias (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) noexcept (true) __asm__ ("" "readlinkat") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); 233s 1949: extern ssize_t __readlinkat_chk_warn (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) noexcept (true) __asm__ ("" "__readlinkat_chk") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer"))) 233s 1949: 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) 233s 1949: noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: extern char *__getcwd_alias (char *__buf, size_t __size) noexcept (true) __asm__ ("" "getcwd") 233s 1949: __attribute__ ((__warn_unused_result__)); 233s 1949: extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) noexcept (true) __asm__ ("" "__getcwd_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern char *__getwd_chk (char *__buf, size_t buflen) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: extern char *__getwd_warn (char *__buf) noexcept (true) __asm__ ("" "getwd") 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern size_t __confstr_chk (int __name, char *__buf, size_t __len, 233s 1949: size_t __buflen) noexcept (true) 233s 1949: __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern size_t __confstr_alias (int __name, char *__buf, size_t __len) noexcept (true) __asm__ ("" "confstr") 233s 1949: 233s 1949: __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) noexcept (true) __asm__ ("" "__confstr_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen) 233s 1949: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); 233s 1949: extern int __getgroups_alias (int __size, __gid_t __list[]) noexcept (true) __asm__ ("" "getgroups") 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); 233s 1949: extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) noexcept (true) __asm__ ("" "__getgroups_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen, 233s 1949: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) 233s 1949: __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ttyname_r") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (2))); 233s 1949: extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ttyname_r_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal) 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: extern int __gethostname_alias (char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "gethostname") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__gethostname_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: extern int __getdomainname_alias (char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "getdomainname") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))) 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__getdomainname_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer"))) 233s 1949: 233s 1949: ; 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 2 3 4 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 233s 1949: read (int __fd, void * __buf, size_t __nbytes) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 0)) && (__builtin_dynamic_object_size (__buf, 0)) == (unsigned int) -1) || (((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char)))))) ? __read_alias (__fd, __buf, __nbytes) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) ? __read_chk_warn (__fd, __buf, __nbytes, __builtin_dynamic_object_size (__buf, 0)) : __read_chk (__fd, __buf, __nbytes, __builtin_dynamic_object_size (__buf, 0)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: # 51 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 233s 1949: pread (int __fd, void * __buf, 233s 1949: size_t __nbytes, __off64_t __offset) 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 0)) && (__builtin_dynamic_object_size (__buf, 0)) == (unsigned int) -1) || (((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char)))))) ? __pread64_alias (__fd, __buf, __nbytes, __offset) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) ? __pread64_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_dynamic_object_size (__buf, 0)) : __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_dynamic_object_size (__buf, 0)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 233s 1949: pread64 (int __fd, void * __buf, 233s 1949: size_t __nbytes, __off64_t __offset) 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 0)) && (__builtin_dynamic_object_size (__buf, 0)) == (unsigned int) -1) || (((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_dynamic_object_size (__buf, 0))) / ((sizeof (char)))))) ? __pread64_alias (__fd, __buf, __nbytes, __offset) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_dynamic_object_size (__buf, 0)) / (sizeof (char)))) ? __pread64_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_dynamic_object_size (__buf, 0)) : __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_dynamic_object_size (__buf, 0)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t 233s 1949: __attribute__ ((__leaf__)) readlink (const char *__restrict __path, char * __restrict __buf, size_t __len) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __readlink_alias (__path, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __readlink_chk_warn (__path, __buf, __len, __builtin_dynamic_object_size (__buf, 1)) : __readlink_chk (__path, __buf, __len, __builtin_dynamic_object_size (__buf, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t 233s 1949: __attribute__ ((__leaf__)) readlinkat (int __fd, const char *__restrict __path, char * __restrict __buf, size_t __len) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __readlinkat_alias (__fd, __path, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __readlinkat_chk_warn (__fd, __path, __buf, __len, __builtin_dynamic_object_size (__buf, 1)) : __readlinkat_chk (__fd, __path, __buf, __len, __builtin_dynamic_object_size (__buf, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 233s 1949: __attribute__ ((__leaf__)) getcwd (char * __buf, size_t __size) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__size)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __getcwd_alias (__buf, __size) : ((((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__size)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __getcwd_chk_warn (__buf, __size, __builtin_dynamic_object_size (__buf, 1)) : __getcwd_chk (__buf, __size, __builtin_dynamic_object_size (__buf, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) 233s 1949: __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * 233s 1949: __attribute__ ((__leaf__)) getwd (char * __buf) noexcept (true) 233s 1949: { 233s 1949: if (__builtin_dynamic_object_size (__buf, 1) != (size_t) -1) 233s 1949: return __getwd_chk (__buf, __builtin_dynamic_object_size (__buf, 1)); 233s 1949: return __getwd_warn (__buf); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 233s 1949: __attribute__ ((__leaf__)) confstr (int __name, char * __buf, size_t __len) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __confstr_alias (__name, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __confstr_chk_warn (__name, __buf, __len, __builtin_dynamic_object_size (__buf, 1)) : __confstr_chk (__name, __buf, __len, __builtin_dynamic_object_size (__buf, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) getgroups (int __size, __gid_t * __list) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__list, 1)) && (__builtin_dynamic_object_size (__list, 1)) == (unsigned int) -1) || (((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= ((__builtin_dynamic_object_size (__list, 1))) / ((sizeof (__gid_t))))) && (((unsigned int) (__size)) <= ((__builtin_dynamic_object_size (__list, 1))) / ((sizeof (__gid_t)))))) ? __getgroups_alias (__size, __list) : ((((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= (__builtin_dynamic_object_size (__list, 1)) / (sizeof (__gid_t)))) && !(((unsigned int) (__size)) <= (__builtin_dynamic_object_size (__list, 1)) / (sizeof (__gid_t)))) ? __getgroups_chk_warn (__size, __list, __builtin_dynamic_object_size (__list, 1)) : __getgroups_chk (__size, __list, __builtin_dynamic_object_size (__list, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) ttyname_r (int __fd, char * __buf, size_t __buflen) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __ttyname_r_alias (__fd, __buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_dynamic_object_size (__buf, 1)) : __ttyname_r_chk (__fd, __buf, __buflen, __builtin_dynamic_object_size (__buf, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: getlogin_r (char * __buf, size_t __buflen) 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __getlogin_r_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __getlogin_r_chk_warn (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)) : __getlogin_r_chk (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) gethostname (char * __buf, size_t __buflen) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __gethostname_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __gethostname_chk_warn (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)) : __gethostname_chk (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) getdomainname (char * __buf, size_t __buflen) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __getdomainname_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __getdomainname_chk_warn (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)) : __getdomainname_chk (__buf, __buflen, __builtin_dynamic_object_size (__buf, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: # 1218 "/usr/include/unistd.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 1 3 4 233s 1949: # 34 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 3 4 233s 1949: extern __pid_t gettid (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/linux/close_range.h" 1 3 4 233s 1949: # 39 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 2 3 4 233s 1949: # 1222 "/usr/include/unistd.h" 2 3 4 233s 1949: 233s 1949: } 233s 1949: # 25 "/usr/include/arm-linux-gnueabihf/bits/sigstksz.h" 2 3 4 233s 1949: # 329 "/usr/include/signal.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/ss_flags.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/ss_flags.h" 3 4 233s 1949: enum 233s 1949: { 233s 1949: SS_ONSTACK = 1, 233s 1949: 233s 1949: SS_DISABLE 233s 1949: 233s 1949: }; 233s 1949: # 330 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sigaltstack (const stack_t *__restrict __ss, 233s 1949: stack_t *__restrict __oss) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sigstack.h" 1 3 4 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sigstack.h" 3 4 233s 1949: struct sigstack 233s 1949: { 233s 1949: void *ss_sp; 233s 1949: int ss_onstack; 233s 1949: }; 233s 1949: # 340 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) 233s 1949: noexcept (true) __attribute__ ((__deprecated__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int sighold (int __sig) noexcept (true) 233s 1949: __attribute__ ((__deprecated__ ("Use the sigprocmask function instead"))); 233s 1949: 233s 1949: 233s 1949: extern int sigrelse (int __sig) noexcept (true) 233s 1949: __attribute__ ((__deprecated__ ("Use the sigprocmask function instead"))); 233s 1949: 233s 1949: 233s 1949: extern int sigignore (int __sig) noexcept (true) 233s 1949: __attribute__ ((__deprecated__ ("Use the signal function instead"))); 233s 1949: 233s 1949: 233s 1949: extern __sighandler_t sigset (int __sig, __sighandler_t __disp) noexcept (true) 233s 1949: __attribute__ ((__deprecated__ ("Use the signal and sigprocmask functions instead"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 1 3 4 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 1 3 4 233s 1949: # 44 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 1 3 4 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 2 3 4 233s 1949: # 45 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/atomic_wide_counter.h" 1 3 4 233s 1949: # 25 "/usr/include/arm-linux-gnueabihf/bits/atomic_wide_counter.h" 3 4 233s 1949: typedef union 233s 1949: { 233s 1949: __extension__ unsigned long long int __value64; 233s 1949: struct 233s 1949: { 233s 1949: unsigned int __low; 233s 1949: unsigned int __high; 233s 1949: } __value32; 233s 1949: } __atomic_wide_counter; 233s 1949: # 47 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef struct __pthread_internal_list 233s 1949: { 233s 1949: struct __pthread_internal_list *__prev; 233s 1949: struct __pthread_internal_list *__next; 233s 1949: } __pthread_list_t; 233s 1949: 233s 1949: typedef struct __pthread_internal_slist 233s 1949: { 233s 1949: struct __pthread_internal_slist *__next; 233s 1949: } __pthread_slist_t; 233s 1949: # 76 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 3 4 233s 1949: struct __pthread_mutex_s 233s 1949: { 233s 1949: int __lock ; 233s 1949: unsigned int __count; 233s 1949: int __owner; 233s 1949: # 58 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 3 4 233s 1949: int __kind; 233s 1949: 233s 1949: unsigned int __nusers; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __extension__ union 233s 1949: { 233s 1949: int __spins; 233s 1949: __pthread_slist_t __list; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: }; 233s 1949: # 77 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 233s 1949: # 89 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 1 3 4 233s 1949: # 29 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4 233s 1949: struct __pthread_rwlock_arch_t 233s 1949: { 233s 1949: unsigned int __readers; 233s 1949: unsigned int __writers; 233s 1949: unsigned int __wrphase_futex; 233s 1949: unsigned int __writers_futex; 233s 1949: unsigned int __pad3; 233s 1949: unsigned int __pad4; 233s 1949: # 45 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4 233s 1949: unsigned char __flags; 233s 1949: unsigned char __shared; 233s 1949: unsigned char __pad1; 233s 1949: unsigned char __pad2; 233s 1949: 233s 1949: int __cur_writer; 233s 1949: }; 233s 1949: # 90 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct __pthread_cond_s 233s 1949: { 233s 1949: __atomic_wide_counter __wseq; 233s 1949: __atomic_wide_counter __g1_start; 233s 1949: unsigned int __g_size[2] ; 233s 1949: unsigned int __g1_orig_size; 233s 1949: unsigned int __wrefs; 233s 1949: unsigned int __g_signals[2]; 233s 1949: unsigned int __unused_initialized_1; 233s 1949: unsigned int __unused_initialized_2; 233s 1949: }; 233s 1949: 233s 1949: typedef unsigned int __tss_t; 233s 1949: typedef unsigned long int __thrd_t; 233s 1949: 233s 1949: typedef struct 233s 1949: { 233s 1949: int __data ; 233s 1949: } __once_flag; 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef unsigned long int pthread_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef union 233s 1949: { 233s 1949: char __size[4]; 233s 1949: int __align; 233s 1949: } pthread_mutexattr_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef union 233s 1949: { 233s 1949: char __size[4]; 233s 1949: int __align; 233s 1949: } pthread_condattr_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef unsigned int pthread_key_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef int pthread_once_t; 233s 1949: 233s 1949: 233s 1949: union pthread_attr_t 233s 1949: { 233s 1949: char __size[36]; 233s 1949: long int __align; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef union 233s 1949: { 233s 1949: struct __pthread_mutex_s __data; 233s 1949: char __size[24]; 233s 1949: long int __align; 233s 1949: } pthread_mutex_t; 233s 1949: 233s 1949: 233s 1949: typedef union 233s 1949: { 233s 1949: struct __pthread_cond_s __data; 233s 1949: char __size[48]; 233s 1949: __extension__ long long int __align; 233s 1949: } pthread_cond_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef union 233s 1949: { 233s 1949: struct __pthread_rwlock_arch_t __data; 233s 1949: char __size[32]; 233s 1949: long int __align; 233s 1949: } pthread_rwlock_t; 233s 1949: 233s 1949: typedef union 233s 1949: { 233s 1949: char __size[8]; 233s 1949: long int __align; 233s 1949: } pthread_rwlockattr_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef volatile int pthread_spinlock_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef union 233s 1949: { 233s 1949: char __size[20]; 233s 1949: long int __align; 233s 1949: } pthread_barrier_t; 233s 1949: 233s 1949: typedef union 233s 1949: { 233s 1949: char __size[4]; 233s 1949: int __align; 233s 1949: } pthread_barrierattr_t; 233s 1949: # 376 "/usr/include/signal.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/sigthread.h" 1 3 4 233s 1949: # 31 "/usr/include/arm-linux-gnueabihf/bits/sigthread.h" 3 4 233s 1949: extern int pthread_sigmask (int __how, 233s 1949: const __sigset_t *__restrict __newmask, 233s 1949: __sigset_t *__restrict __oldmask)noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int pthread_kill (pthread_t __threadid, int __signo) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int pthread_sigqueue (pthread_t __threadid, int __signo, 233s 1949: const union sigval __value) noexcept (true); 233s 1949: # 377 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int __libc_current_sigrtmin (void) noexcept (true); 233s 1949: 233s 1949: extern int __libc_current_sigrtmax (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/signal_ext.h" 1 3 4 233s 1949: # 29 "/usr/include/arm-linux-gnueabihf/bits/signal_ext.h" 3 4 233s 1949: extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal); 233s 1949: # 392 "/usr/include/signal.h" 2 3 4 233s 1949: 233s 1949: } 233s 1949: # 463 "/usr/include/doctest/doctest.h" 2 3 4 233s 1949: # 520 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: 233s 1949: namespace std { 233s 1949: typedef decltype(nullptr) nullptr_t; 233s 1949: typedef decltype(sizeof(void*)) size_t; 233s 1949: template 233s 1949: struct char_traits; 233s 1949: template <> 233s 1949: struct char_traits; 233s 1949: template 233s 1949: class basic_ostream; 233s 1949: typedef basic_ostream> ostream; 233s 1949: template 233s 1949: 233s 1949: basic_ostream& operator<<(basic_ostream&, const char*); 233s 1949: template 233s 1949: class basic_istream; 233s 1949: typedef basic_istream> istream; 233s 1949: template 233s 1949: class tuple; 233s 1949: # 548 "/usr/include/doctest/doctest.h" 3 4 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: namespace doctest { 233s 1949: 233s 1949: using std::size_t; 233s 1949: 233s 1949: extern bool is_running_in_test; 233s 1949: # 587 "/usr/include/doctest/doctest.h" 3 4 233s 1949: class String 233s 1949: { 233s 1949: public: 233s 1949: using size_type = unsigned; 233s 1949: 233s 1949: private: 233s 1949: static constexpr size_type len = 24; 233s 1949: static constexpr size_type last = len - 1; 233s 1949: 233s 1949: struct view 233s 1949: { 233s 1949: char* ptr; 233s 1949: size_type size; 233s 1949: size_type capacity; 233s 1949: }; 233s 1949: 233s 1949: union 233s 1949: { 233s 1949: char buf[len]; 233s 1949: view data; 233s 1949: }; 233s 1949: 233s 1949: char* allocate(size_type sz); 233s 1949: 233s 1949: bool isOnStack() const noexcept { return (buf[last] & 128) == 0; } 233s 1949: void setOnHeap() noexcept; 233s 1949: void setLast(size_type in = last) noexcept; 233s 1949: void setSize(size_type sz) noexcept; 233s 1949: 233s 1949: void copy(const String& other); 233s 1949: 233s 1949: public: 233s 1949: static constexpr size_type npos = static_cast(-1); 233s 1949: 233s 1949: String() noexcept; 233s 1949: ~String(); 233s 1949: 233s 1949: 233s 1949: String(const char* in); 233s 1949: String(const char* in, size_type in_size); 233s 1949: 233s 1949: String(std::istream& in, size_type in_size); 233s 1949: 233s 1949: String(const String& other); 233s 1949: String& operator=(const String& other); 233s 1949: 233s 1949: String& operator+=(const String& other); 233s 1949: 233s 1949: String(String&& other) noexcept; 233s 1949: String& operator=(String&& other) noexcept; 233s 1949: 233s 1949: char operator[](size_type i) const; 233s 1949: char& operator[](size_type i); 233s 1949: 233s 1949: 233s 1949: const char* c_str() const { return const_cast(this)->c_str(); } 233s 1949: char* c_str() { 233s 1949: if (isOnStack()) { 233s 1949: return reinterpret_cast(buf); 233s 1949: } 233s 1949: return data.ptr; 233s 1949: } 233s 1949: 233s 1949: size_type size() const; 233s 1949: size_type capacity() const; 233s 1949: 233s 1949: String substr(size_type pos, size_type cnt = npos) &&; 233s 1949: String substr(size_type pos, size_type cnt = npos) const &; 233s 1949: 233s 1949: size_type find(char ch, size_type pos = 0) const; 233s 1949: size_type rfind(char ch, size_type pos = npos) const; 233s 1949: 233s 1949: int compare(const char* other, bool no_case = false) const; 233s 1949: int compare(const String& other, bool no_case = false) const; 233s 1949: 233s 1949: friend std::ostream& operator<<(std::ostream& s, const String& in); 233s 1949: }; 233s 1949: 233s 1949: String operator+(const String& lhs, const String& rhs); 233s 1949: 233s 1949: bool operator==(const String& lhs, const String& rhs); 233s 1949: bool operator!=(const String& lhs, const String& rhs); 233s 1949: bool operator<(const String& lhs, const String& rhs); 233s 1949: bool operator>(const String& lhs, const String& rhs); 233s 1949: bool operator<=(const String& lhs, const String& rhs); 233s 1949: bool operator>=(const String& lhs, const String& rhs); 233s 1949: 233s 1949: class Contains { 233s 1949: public: 233s 1949: explicit Contains(const String& string); 233s 1949: 233s 1949: bool checkWith(const String& other) const; 233s 1949: 233s 1949: String string; 233s 1949: }; 233s 1949: 233s 1949: String toString(const Contains& in); 233s 1949: 233s 1949: bool operator==(const String& lhs, const Contains& rhs); 233s 1949: bool operator==(const Contains& lhs, const String& rhs); 233s 1949: bool operator!=(const String& lhs, const Contains& rhs); 233s 1949: bool operator!=(const Contains& lhs, const String& rhs); 233s 1949: 233s 1949: namespace Color { 233s 1949: enum Enum 233s 1949: { 233s 1949: None = 0, 233s 1949: White, 233s 1949: Red, 233s 1949: Green, 233s 1949: Blue, 233s 1949: Cyan, 233s 1949: Yellow, 233s 1949: Grey, 233s 1949: 233s 1949: Bright = 0x10, 233s 1949: 233s 1949: BrightRed = Bright | Red, 233s 1949: BrightGreen = Bright | Green, 233s 1949: LightGrey = Bright | Grey, 233s 1949: BrightWhite = Bright | White 233s 1949: }; 233s 1949: 233s 1949: std::ostream& operator<<(std::ostream& s, Color::Enum code); 233s 1949: } 233s 1949: 233s 1949: namespace assertType { 233s 1949: enum Enum 233s 1949: { 233s 1949: 233s 1949: 233s 1949: is_warn = 1, 233s 1949: is_check = 2 * is_warn, 233s 1949: is_require = 2 * is_check, 233s 1949: 233s 1949: is_normal = 2 * is_require, 233s 1949: is_throws = 2 * is_normal, 233s 1949: is_throws_as = 2 * is_throws, 233s 1949: is_throws_with = 2 * is_throws_as, 233s 1949: is_nothrow = 2 * is_throws_with, 233s 1949: 233s 1949: is_false = 2 * is_nothrow, 233s 1949: is_unary = 2 * is_false, 233s 1949: 233s 1949: is_eq = 2 * is_unary, 233s 1949: is_ne = 2 * is_eq, 233s 1949: 233s 1949: is_lt = 2 * is_ne, 233s 1949: is_gt = 2 * is_lt, 233s 1949: 233s 1949: is_ge = 2 * is_gt, 233s 1949: is_le = 2 * is_ge, 233s 1949: 233s 1949: 233s 1949: 233s 1949: DT_WARN = is_normal | is_warn, 233s 1949: DT_CHECK = is_normal | is_check, 233s 1949: DT_REQUIRE = is_normal | is_require, 233s 1949: 233s 1949: DT_WARN_FALSE = is_normal | is_false | is_warn, 233s 1949: DT_CHECK_FALSE = is_normal | is_false | is_check, 233s 1949: DT_REQUIRE_FALSE = is_normal | is_false | is_require, 233s 1949: 233s 1949: DT_WARN_THROWS = is_throws | is_warn, 233s 1949: DT_CHECK_THROWS = is_throws | is_check, 233s 1949: DT_REQUIRE_THROWS = is_throws | is_require, 233s 1949: 233s 1949: DT_WARN_THROWS_AS = is_throws_as | is_warn, 233s 1949: DT_CHECK_THROWS_AS = is_throws_as | is_check, 233s 1949: DT_REQUIRE_THROWS_AS = is_throws_as | is_require, 233s 1949: 233s 1949: DT_WARN_THROWS_WITH = is_throws_with | is_warn, 233s 1949: DT_CHECK_THROWS_WITH = is_throws_with | is_check, 233s 1949: DT_REQUIRE_THROWS_WITH = is_throws_with | is_require, 233s 1949: 233s 1949: DT_WARN_THROWS_WITH_AS = is_throws_with | is_throws_as | is_warn, 233s 1949: DT_CHECK_THROWS_WITH_AS = is_throws_with | is_throws_as | is_check, 233s 1949: DT_REQUIRE_THROWS_WITH_AS = is_throws_with | is_throws_as | is_require, 233s 1949: 233s 1949: DT_WARN_NOTHROW = is_nothrow | is_warn, 233s 1949: DT_CHECK_NOTHROW = is_nothrow | is_check, 233s 1949: DT_REQUIRE_NOTHROW = is_nothrow | is_require, 233s 1949: 233s 1949: DT_WARN_EQ = is_normal | is_eq | is_warn, 233s 1949: DT_CHECK_EQ = is_normal | is_eq | is_check, 233s 1949: DT_REQUIRE_EQ = is_normal | is_eq | is_require, 233s 1949: 233s 1949: DT_WARN_NE = is_normal | is_ne | is_warn, 233s 1949: DT_CHECK_NE = is_normal | is_ne | is_check, 233s 1949: DT_REQUIRE_NE = is_normal | is_ne | is_require, 233s 1949: 233s 1949: DT_WARN_GT = is_normal | is_gt | is_warn, 233s 1949: DT_CHECK_GT = is_normal | is_gt | is_check, 233s 1949: DT_REQUIRE_GT = is_normal | is_gt | is_require, 233s 1949: 233s 1949: DT_WARN_LT = is_normal | is_lt | is_warn, 233s 1949: DT_CHECK_LT = is_normal | is_lt | is_check, 233s 1949: DT_REQUIRE_LT = is_normal | is_lt | is_require, 233s 1949: 233s 1949: DT_WARN_GE = is_normal | is_ge | is_warn, 233s 1949: DT_CHECK_GE = is_normal | is_ge | is_check, 233s 1949: DT_REQUIRE_GE = is_normal | is_ge | is_require, 233s 1949: 233s 1949: DT_WARN_LE = is_normal | is_le | is_warn, 233s 1949: DT_CHECK_LE = is_normal | is_le | is_check, 233s 1949: DT_REQUIRE_LE = is_normal | is_le | is_require, 233s 1949: 233s 1949: DT_WARN_UNARY = is_normal | is_unary | is_warn, 233s 1949: DT_CHECK_UNARY = is_normal | is_unary | is_check, 233s 1949: DT_REQUIRE_UNARY = is_normal | is_unary | is_require, 233s 1949: 233s 1949: DT_WARN_UNARY_FALSE = is_normal | is_false | is_unary | is_warn, 233s 1949: DT_CHECK_UNARY_FALSE = is_normal | is_false | is_unary | is_check, 233s 1949: DT_REQUIRE_UNARY_FALSE = is_normal | is_false | is_unary | is_require, 233s 1949: }; 233s 1949: } 233s 1949: 233s 1949: const char* assertString(assertType::Enum at); 233s 1949: const char* failureString(assertType::Enum at); 233s 1949: const char* skipPathFromFilename(const char* file); 233s 1949: 233s 1949: struct TestCaseData 233s 1949: { 233s 1949: String m_file; 233s 1949: unsigned m_line; 233s 1949: const char* m_name; 233s 1949: const char* m_test_suite; 233s 1949: const char* m_description; 233s 1949: bool m_skip; 233s 1949: bool m_no_breaks; 233s 1949: bool m_no_output; 233s 1949: bool m_may_fail; 233s 1949: bool m_should_fail; 233s 1949: int m_expected_failures; 233s 1949: double m_timeout; 233s 1949: }; 233s 1949: 233s 1949: struct AssertData 233s 1949: { 233s 1949: 233s 1949: const TestCaseData* m_test_case; 233s 1949: assertType::Enum m_at; 233s 1949: const char* m_file; 233s 1949: int m_line; 233s 1949: const char* m_expr; 233s 1949: bool m_failed; 233s 1949: 233s 1949: 233s 1949: bool m_threw; 233s 1949: String m_exception; 233s 1949: 233s 1949: 233s 1949: String m_decomp; 233s 1949: 233s 1949: 233s 1949: bool m_threw_as; 233s 1949: const char* m_exception_type; 233s 1949: 233s 1949: class StringContains { 233s 1949: private: 233s 1949: Contains content; 233s 1949: bool isContains; 233s 1949: 233s 1949: public: 233s 1949: StringContains(const String& str) : content(str), isContains(false) { } 233s 1949: StringContains(Contains cntn) : content(static_cast(cntn)), isContains(true) { } 233s 1949: 233s 1949: bool check(const String& str) { return isContains ? (content == str) : (content.string == str); } 233s 1949: 233s 1949: operator const String&() const { return content.string; } 233s 1949: 233s 1949: const char* c_str() const { return content.string.c_str(); } 233s 1949: } m_exception_string; 233s 1949: 233s 1949: AssertData(assertType::Enum at, const char* file, int line, const char* expr, 233s 1949: const char* exception_type, const StringContains& exception_string); 233s 1949: }; 233s 1949: 233s 1949: struct MessageData 233s 1949: { 233s 1949: String m_string; 233s 1949: const char* m_file; 233s 1949: int m_line; 233s 1949: assertType::Enum m_severity; 233s 1949: }; 233s 1949: 233s 1949: struct SubcaseSignature 233s 1949: { 233s 1949: String m_name; 233s 1949: const char* m_file; 233s 1949: int m_line; 233s 1949: 233s 1949: bool operator==(const SubcaseSignature& other) const; 233s 1949: bool operator<(const SubcaseSignature& other) const; 233s 1949: }; 233s 1949: 233s 1949: struct IContextScope 233s 1949: { 233s 1949: virtual ~IContextScope(); IContextScope() = default; IContextScope(const IContextScope&) = delete; IContextScope(IContextScope&&) = delete; IContextScope& operator=(const IContextScope&) = delete; IContextScope& operator=(IContextScope&&) = delete; 233s 1949: virtual void stringify(std::ostream*) const = 0; 233s 1949: }; 233s 1949: 233s 1949: namespace detail { 233s 1949: struct TestCase; 233s 1949: } 233s 1949: 233s 1949: struct ContextOptions 233s 1949: { 233s 1949: std::ostream* cout = nullptr; 233s 1949: String binary_name; 233s 1949: 233s 1949: const detail::TestCase* currentTest = nullptr; 233s 1949: 233s 1949: 233s 1949: String out; 233s 1949: String order_by; 233s 1949: unsigned rand_seed; 233s 1949: 233s 1949: unsigned first; 233s 1949: unsigned last; 233s 1949: 233s 1949: int abort_after; 233s 1949: int subcase_filter_levels; 233s 1949: 233s 1949: bool success; 233s 1949: bool case_sensitive; 233s 1949: bool exit; 233s 1949: bool duration; 233s 1949: bool minimal; 233s 1949: bool quiet; 233s 1949: bool no_throw; 233s 1949: bool no_exitcode; 233s 1949: bool no_run; 233s 1949: bool no_intro; 233s 1949: bool no_version; 233s 1949: bool no_colors; 233s 1949: bool force_colors; 233s 1949: bool no_breaks; 233s 1949: bool no_skip; 233s 1949: bool gnu_file_line; 233s 1949: bool no_path_in_filenames; 233s 1949: String strip_file_prefixes; 233s 1949: bool no_line_numbers; 233s 1949: bool no_debug_output; 233s 1949: bool no_skipped_summary; 233s 1949: bool no_time_in_output; 233s 1949: 233s 1949: bool help; 233s 1949: bool version; 233s 1949: bool count; 233s 1949: bool list_test_cases; 233s 1949: bool list_test_suites; 233s 1949: bool list_reporters; 233s 1949: }; 233s 1949: 233s 1949: namespace detail { 233s 1949: namespace types { 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct enable_if { }; 233s 1949: 233s 1949: template 233s 1949: struct enable_if { using type = T; }; 233s 1949: 233s 1949: struct true_type { static constexpr bool value = true; }; 233s 1949: struct false_type { static constexpr bool value = false; }; 233s 1949: 233s 1949: template struct remove_reference { using type = T; }; 233s 1949: template struct remove_reference { using type = T; }; 233s 1949: template struct remove_reference { using type = T; }; 233s 1949: 233s 1949: template struct is_rvalue_reference : false_type { }; 233s 1949: template struct is_rvalue_reference : true_type { }; 233s 1949: 233s 1949: template struct remove_const { using type = T; }; 233s 1949: template struct remove_const { using type = T; }; 233s 1949: 233s 1949: 233s 1949: template struct is_enum { static constexpr bool value = __is_enum(T); }; 233s 1949: template struct underlying_type { using type = __underlying_type(T); }; 233s 1949: 233s 1949: template struct is_pointer : false_type { }; 233s 1949: template struct is_pointer : true_type { }; 233s 1949: 233s 1949: template struct is_array : false_type { }; 233s 1949: 233s 1949: template struct is_array : true_type { }; 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: T&& declval(); 233s 1949: 233s 1949: template 233s 1949: constexpr T&& forward(typename types::remove_reference::type& t) noexcept { 233s 1949: return static_cast(t); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: constexpr T&& forward(typename types::remove_reference::type&& t) noexcept { 233s 1949: return static_cast(t); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: struct deferred_false : types::false_type { }; 233s 1949: # 1023 "/usr/include/doctest/doctest.h" 3 4 233s 1949: template 233s 1949: struct has_insertion_operator : types::false_type { }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct has_insertion_operator(), declval()), void())> : types::true_type { }; 233s 1949: 233s 1949: template 233s 1949: struct should_stringify_as_underlying_type { 233s 1949: static constexpr bool value = detail::types::is_enum::value && !doctest::detail::has_insertion_operator::value; 233s 1949: }; 233s 1949: 233s 1949: std::ostream* tlssPush(); 233s 1949: String tlssPop(); 233s 1949: 233s 1949: template 233s 1949: struct StringMakerBase { 233s 1949: template 233s 1949: static String convert(const T&) { 233s 1949: 233s 1949: 233s 1949: 233s 1949: return "{?}"; 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: template 233s 1949: struct filldata; 233s 1949: 233s 1949: template 233s 1949: void filloss(std::ostream* stream, const T& in) { 233s 1949: filldata::fill(stream, in); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: void filloss(std::ostream* stream, const T (&in)[N]) { 233s 1949: 233s 1949: 233s 1949: filloss::type>(stream, in); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: String toStream(const T& in) { 233s 1949: std::ostream* stream = tlssPush(); 233s 1949: filloss(stream, in); 233s 1949: return tlssPop(); 233s 1949: } 233s 1949: 233s 1949: template <> 233s 1949: struct StringMakerBase { 233s 1949: template 233s 1949: static String convert(const T& in) { 233s 1949: return toStream(in); 233s 1949: } 233s 1949: }; 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: struct StringMaker : public detail::StringMakerBase< 233s 1949: detail::has_insertion_operator::value || detail::types::is_pointer::value || detail::types::is_array::value> 233s 1949: {}; 233s 1949: # 1093 "/usr/include/doctest/doctest.h" 3 4 233s 1949: template 233s 1949: String toString() { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: String ret = __PRETTY_FUNCTION__; 233s 1949: String::size_type begin = ret.find('=') + 2; 233s 1949: return ret.substr(begin, ret.size() - begin - 1); 233s 1949: 233s 1949: } 233s 1949: 233s 1949: template ::value, bool>::type = true> 233s 1949: String toString(const T& value) { 233s 1949: return StringMaker::convert(value); 233s 1949: } 233s 1949: # 1120 "/usr/include/doctest/doctest.h" 3 4 233s 1949: String toString(String in); 233s 1949: 233s 1949: String toString(std::nullptr_t); 233s 1949: 233s 1949: String toString(bool in); 233s 1949: 233s 1949: String toString(float in); 233s 1949: String toString(double in); 233s 1949: String toString(double long in); 233s 1949: 233s 1949: String toString(char in); 233s 1949: String toString(char signed in); 233s 1949: String toString(char unsigned in); 233s 1949: String toString(short in); 233s 1949: String toString(short unsigned in); 233s 1949: String toString(signed in); 233s 1949: String toString(unsigned in); 233s 1949: String toString(long in); 233s 1949: String toString(long unsigned in); 233s 1949: String toString(long long in); 233s 1949: String toString(long long unsigned in); 233s 1949: 233s 1949: template ::value, bool>::type = true> 233s 1949: String toString(const T& value) { 233s 1949: using UT = typename detail::types::underlying_type::type; 233s 1949: return (toString(static_cast(value))); 233s 1949: } 233s 1949: 233s 1949: namespace detail { 233s 1949: template 233s 1949: struct filldata 233s 1949: { 233s 1949: static void fill(std::ostream* stream, const T& in) { 233s 1949: 233s 1949: 233s 1949: 233s 1949: operator<<(*stream, in); 233s 1949: 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct filldata { 233s 1949: static void fill(std::ostream* stream, const T(&in)[N]) { 233s 1949: *stream << "["; 233s 1949: for (size_t i = 0; i < N; i++) { 233s 1949: if (i != 0) { *stream << ", "; } 233s 1949: *stream << (toString(in[i])); 233s 1949: } 233s 1949: *stream << "]"; 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct filldata { 233s 1949: static void fill(std::ostream* stream, const char (&in)[N]) { 233s 1949: *stream << String(in, in[N - 1] ? N : N - 1); 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template <> 233s 1949: struct filldata { 233s 1949: static void fill(std::ostream* stream, const void* in); 233s 1949: }; 233s 1949: 233s 1949: template 233s 1949: struct filldata { 233s 1949: 233s 1949: static void fill(std::ostream* stream, const T* in) { 233s 1949: 233s 1949: 233s 1949: filldata::fill(stream, 233s 1949: 233s 1949: reinterpret_cast(in) 233s 1949: 233s 1949: 233s 1949: 233s 1949: ); 233s 1949: 233s 1949: } 233s 1949: }; 233s 1949: } 233s 1949: 233s 1949: struct Approx 233s 1949: { 233s 1949: Approx(double value); 233s 1949: 233s 1949: Approx operator()(double value) const; 233s 1949: # 1225 "/usr/include/doctest/doctest.h" 3 4 233s 1949: Approx& epsilon(double newEpsilon); 233s 1949: # 1236 "/usr/include/doctest/doctest.h" 3 4 233s 1949: Approx& scale(double newScale); 233s 1949: # 1248 "/usr/include/doctest/doctest.h" 3 4 233s 1949: friend bool operator==(double lhs, const Approx & rhs); 233s 1949: friend bool operator==(const Approx & lhs, double rhs); 233s 1949: friend bool operator!=(double lhs, const Approx & rhs); 233s 1949: friend bool operator!=(const Approx & lhs, double rhs); 233s 1949: friend bool operator<=(double lhs, const Approx & rhs); 233s 1949: friend bool operator<=(const Approx & lhs, double rhs); 233s 1949: friend bool operator>=(double lhs, const Approx & rhs); 233s 1949: friend bool operator>=(const Approx & lhs, double rhs); 233s 1949: friend bool operator< (double lhs, const Approx & rhs); 233s 1949: friend bool operator< (const Approx & lhs, double rhs); 233s 1949: friend bool operator> (double lhs, const Approx & rhs); 233s 1949: friend bool operator> (const Approx & lhs, double rhs); 233s 1949: # 1282 "/usr/include/doctest/doctest.h" 3 4 233s 1949: double m_epsilon; 233s 1949: double m_scale; 233s 1949: double m_value; 233s 1949: }; 233s 1949: 233s 1949: String toString(const Approx& in); 233s 1949: 233s 1949: const ContextOptions* getContextOptions(); 233s 1949: 233s 1949: template 233s 1949: struct IsNaN 233s 1949: { 233s 1949: F value; bool flipped; 233s 1949: IsNaN(F f, bool flip = false) : value(f), flipped(flip) { } 233s 1949: IsNaN operator!() const { return { value, !flipped }; } 233s 1949: operator bool() const; 233s 1949: }; 233s 1949: 233s 1949: extern template struct IsNaN; 233s 1949: extern template struct IsNaN; 233s 1949: extern template struct IsNaN; 233s 1949: 233s 1949: String toString(IsNaN in); 233s 1949: String toString(IsNaN in); 233s 1949: String toString(IsNaN in); 233s 1949: 233s 1949: 233s 1949: 233s 1949: namespace detail { 233s 1949: # 1325 "/usr/include/doctest/doctest.h" 3 4 233s 1949: struct TestFailureException 233s 1949: { 233s 1949: }; 233s 1949: 233s 1949: bool checkIfShouldThrow(assertType::Enum at); 233s 1949: 233s 1949: 233s 1949: [[noreturn]] 233s 1949: 233s 1949: void throwException(); 233s 1949: 233s 1949: struct Subcase 233s 1949: { 233s 1949: SubcaseSignature m_signature; 233s 1949: bool m_entered = false; 233s 1949: 233s 1949: Subcase(const String& name, const char* file, int line); 233s 1949: Subcase(const Subcase&) = delete; 233s 1949: Subcase(Subcase&&) = delete; 233s 1949: Subcase& operator=(const Subcase&) = delete; 233s 1949: Subcase& operator=(Subcase&&) = delete; 233s 1949: ~Subcase(); 233s 1949: 233s 1949: operator bool() const; 233s 1949: 233s 1949: private: 233s 1949: bool checkFilters(); 233s 1949: }; 233s 1949: 233s 1949: template 233s 1949: String stringifyBinaryExpr(const L& lhs, const char* op, 233s 1949: const R& rhs) { 233s 1949: return (toString(lhs)) + op + (toString(rhs)); 233s 1949: } 233s 1949: # 1396 "/usr/include/doctest/doctest.h" 3 4 233s 1949: struct Result 233s 1949: { 233s 1949: bool m_passed; 233s 1949: String m_decomp; 233s 1949: 233s 1949: Result() = default; 233s 1949: Result(bool passed, const String& decomposition = String()); 233s 1949: 233s 1949: 233s 1949: template Result& operator &(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator ^(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator |(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator &&(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator ||(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator ==(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator !=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator <(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator >(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator <=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator >=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator =(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator +=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator -=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator *=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator /=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator %=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator <<=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator >>=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator &=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator ^=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Result& operator |=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1438 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic push 233s 1949: 233s 1949: # 1439 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wsign-conversion" 233s 1949: 233s 1949: # 1440 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wsign-compare" 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1475 "/usr/include/doctest/doctest.h" 3 4 233s 1949: template bool eq(const L& lhs, const R& rhs) { return lhs == rhs; } 233s 1949: template bool ne(const L& lhs, const R& rhs) { return lhs != rhs; } 233s 1949: template bool lt(const L& lhs, const R& rhs) { return lhs < rhs; } 233s 1949: template bool gt(const L& lhs, const R& rhs) { return lhs > rhs; } 233s 1949: template bool le(const L& lhs, const R& rhs) { return lhs <= rhs; } 233s 1949: template bool ge(const L& lhs, const R& rhs) { return lhs >= rhs; } 233s 1949: # 1498 "/usr/include/doctest/doctest.h" 3 4 233s 1949: template 233s 1949: 233s 1949: struct Expression_lhs 233s 1949: { 233s 1949: L lhs; 233s 1949: assertType::Enum m_at; 233s 1949: 233s 1949: explicit Expression_lhs(L&& in, assertType::Enum at) 233s 1949: : lhs(static_cast(in)) 233s 1949: , m_at(at) {} 233s 1949: 233s 1949: __attribute__((noinline)) operator Result() { 233s 1949: 233s 1949: 233s 1949: bool res = static_cast(lhs); 233s 1949: 233s 1949: if(m_at & assertType::is_false) { 233s 1949: res = !res; 233s 1949: } 233s 1949: 233s 1949: if(!res || getContextOptions()->success) { 233s 1949: return { res, (toString(lhs)) }; 233s 1949: } 233s 1949: return { res }; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: operator L() const { return lhs; } 233s 1949: 233s 1949: 233s 1949: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() == doctest::detail::declval()),Result{}) operator ==(R&& rhs) { bool res = doctest::detail::forward(lhs) == doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " == ", rhs)); return Result(res); } 233s 1949: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() != doctest::detail::declval()),Result{}) operator !=(R&& rhs) { bool res = doctest::detail::forward(lhs) != doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " != ", rhs)); return Result(res); } 233s 1949: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() > doctest::detail::declval()),Result{}) operator >(R&& rhs) { bool res = doctest::detail::forward(lhs) > doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " > ", rhs)); return Result(res); } 233s 1949: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() < doctest::detail::declval()),Result{}) operator <(R&& rhs) { bool res = doctest::detail::forward(lhs) < doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " < ", rhs)); return Result(res); } 233s 1949: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() >= doctest::detail::declval()),Result{}) operator >=(R&& rhs) { bool res = doctest::detail::forward(lhs) >= doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " >= ", rhs)); return Result(res); } 233s 1949: template __attribute__((noinline)) decltype((void)(doctest::detail::declval() <= doctest::detail::declval()),Result{}) operator <=(R&& rhs) { bool res = doctest::detail::forward(lhs) <= doctest::detail::forward(rhs); if(m_at & assertType::is_false) res = !res; if(!res || doctest::getContextOptions()->success) return Result(res, stringifyBinaryExpr(lhs, " <= ", rhs)); return Result(res); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template Expression_lhs& operator &(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator ^(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator |(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator &&(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator ||(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator =(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator +=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator -=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator *=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator /=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator %=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator <<=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator >>=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator &=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator ^=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator |=(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: 233s 1949: 233s 1949: template Expression_lhs& operator <<(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: template Expression_lhs& operator >>(const R&) { static_assert(deferred_false::value, "Expression Too Complex Please Rewrite As Binary Comparison!"); return *this; } 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1563 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic pop 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct ExpressionDecomposer 233s 1949: { 233s 1949: assertType::Enum m_at; 233s 1949: 233s 1949: ExpressionDecomposer(assertType::Enum at); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: Expression_lhs operator<<(const L&& operand) { 233s 1949: return Expression_lhs(static_cast(operand), m_at); 233s 1949: } 233s 1949: 233s 1949: template ::value,void >::type* = nullptr> 233s 1949: Expression_lhs operator<<(const L &operand) { 233s 1949: return Expression_lhs(operand, m_at); 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: struct TestSuite 233s 1949: { 233s 1949: const char* m_test_suite = nullptr; 233s 1949: const char* m_description = nullptr; 233s 1949: bool m_skip = false; 233s 1949: bool m_no_breaks = false; 233s 1949: bool m_no_output = false; 233s 1949: bool m_may_fail = false; 233s 1949: bool m_should_fail = false; 233s 1949: int m_expected_failures = 0; 233s 1949: double m_timeout = 0; 233s 1949: 233s 1949: TestSuite& operator*(const char* in); 233s 1949: 233s 1949: template 233s 1949: TestSuite& operator*(const T& in) { 233s 1949: in.fill(*this); 233s 1949: return *this; 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: using funcType = void (*)(); 233s 1949: 233s 1949: struct TestCase : public TestCaseData 233s 1949: { 233s 1949: funcType m_test; 233s 1949: 233s 1949: String m_type; 233s 1949: int m_template_id; 233s 1949: String m_full_name; 233s 1949: 233s 1949: TestCase(funcType test, const char* file, unsigned line, const TestSuite& test_suite, 233s 1949: const String& type = String(), int template_id = -1); 233s 1949: 233s 1949: TestCase(const TestCase& other); 233s 1949: TestCase(TestCase&&) = delete; 233s 1949: 233s 1949: 233s 1949: TestCase& operator=(const TestCase& other); 233s 1949: 233s 1949: 233s 1949: TestCase& operator=(TestCase&&) = delete; 233s 1949: 233s 1949: TestCase& operator*(const char* in); 233s 1949: 233s 1949: template 233s 1949: TestCase& operator*(const T& in) { 233s 1949: in.fill(*this); 233s 1949: return *this; 233s 1949: } 233s 1949: 233s 1949: bool operator<(const TestCase& other) const; 233s 1949: 233s 1949: ~TestCase() = default; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: int regTest(const TestCase& tc); 233s 1949: int setTestSuite(const TestSuite& ts); 233s 1949: bool isDebuggerActive(); 233s 1949: 233s 1949: template 233s 1949: int instantiationHelper(const T&) { return 0; } 233s 1949: 233s 1949: namespace binaryAssertComparison { 233s 1949: enum Enum 233s 1949: { 233s 1949: eq = 0, 233s 1949: ne, 233s 1949: gt, 233s 1949: lt, 233s 1949: ge, 233s 1949: le 233s 1949: }; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: template struct RelationalComparator { bool operator()(const L&, const R& ) const { return false; } }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template struct RelationalComparator<0, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::eq(lhs, rhs); } }; 233s 1949: template struct RelationalComparator<1, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::ne(lhs, rhs); } }; 233s 1949: template struct RelationalComparator<2, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::gt(lhs, rhs); } }; 233s 1949: template struct RelationalComparator<3, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::lt(lhs, rhs); } }; 233s 1949: template struct RelationalComparator<4, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::ge(lhs, rhs); } }; 233s 1949: template struct RelationalComparator<5, L, R> { bool operator()(const L& lhs, const R& rhs) const { return doctest::detail::le(lhs, rhs); } }; 233s 1949: 233s 1949: struct ResultBuilder : public AssertData 233s 1949: { 233s 1949: ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr, 233s 1949: const char* exception_type = "", const String& exception_string = ""); 233s 1949: 233s 1949: ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr, 233s 1949: const char* exception_type, const Contains& exception_string); 233s 1949: 233s 1949: void setResult(const Result& res); 233s 1949: 233s 1949: template 233s 1949: __attribute__((noinline)) bool binary_assert(const L& lhs, 233s 1949: const R& rhs) { 233s 1949: m_failed = !RelationalComparator()(lhs, rhs); 233s 1949: if (m_failed || getContextOptions()->success) { 233s 1949: m_decomp = stringifyBinaryExpr(lhs, ", ", rhs); 233s 1949: } 233s 1949: return !m_failed; 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: __attribute__((noinline)) bool unary_assert(const L& val) { 233s 1949: m_failed = !val; 233s 1949: 233s 1949: if (m_at & assertType::is_false) { 233s 1949: m_failed = !m_failed; 233s 1949: } 233s 1949: 233s 1949: if (m_failed || getContextOptions()->success) { 233s 1949: m_decomp = (toString(val)); 233s 1949: } 233s 1949: 233s 1949: return !m_failed; 233s 1949: } 233s 1949: 233s 1949: void translateException(); 233s 1949: 233s 1949: bool log(); 233s 1949: void react() const; 233s 1949: }; 233s 1949: 233s 1949: namespace assertAction { 233s 1949: enum Enum 233s 1949: { 233s 1949: nothing = 0, 233s 1949: dbgbreak = 1, 233s 1949: shouldthrow = 2 233s 1949: }; 233s 1949: } 233s 1949: 233s 1949: void failed_out_of_a_testing_context(const AssertData& ad); 233s 1949: 233s 1949: bool decomp_assert(assertType::Enum at, const char* file, int line, 233s 1949: const char* expr, const Result& result); 233s 1949: # 1764 "/usr/include/doctest/doctest.h" 3 4 233s 1949: template 233s 1949: __attribute__((noinline)) bool binary_assert(assertType::Enum at, const char* file, int line, 233s 1949: const char* expr, const L& lhs, 233s 1949: const R& rhs) { 233s 1949: bool failed = !RelationalComparator()(lhs, rhs); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: do { if(!is_running_in_test) { if(failed) { ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; rb.m_decomp = stringifyBinaryExpr(lhs, ", ", rhs); failed_out_of_a_testing_context(rb); if(isDebuggerActive() && !getContextOptions()->no_breaks) raise(5); if(checkIfShouldThrow(at)) throwException(); } return !failed; } } while(false); 233s 1949: ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; if(rb.m_failed || getContextOptions()->success) rb.m_decomp = stringifyBinaryExpr(lhs, ", ", rhs); if(rb.log()) raise(5); if(rb.m_failed && checkIfShouldThrow(at)) throwException(); 233s 1949: return !failed; 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: __attribute__((noinline)) bool unary_assert(assertType::Enum at, const char* file, int line, 233s 1949: const char* expr, const L& val) { 233s 1949: bool failed = !val; 233s 1949: 233s 1949: if(at & assertType::is_false) 233s 1949: failed = !failed; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: do { if(!is_running_in_test) { if(failed) { ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; rb.m_decomp = (toString(val)); failed_out_of_a_testing_context(rb); if(isDebuggerActive() && !getContextOptions()->no_breaks) raise(5); if(checkIfShouldThrow(at)) throwException(); } return !failed; } } while(false); 233s 1949: ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; if(rb.m_failed || getContextOptions()->success) rb.m_decomp = (toString(val)); if(rb.log()) raise(5); if(rb.m_failed && checkIfShouldThrow(at)) throwException(); 233s 1949: return !failed; 233s 1949: } 233s 1949: 233s 1949: struct IExceptionTranslator 233s 1949: { 233s 1949: virtual ~IExceptionTranslator(); IExceptionTranslator() = default; IExceptionTranslator(const IExceptionTranslator&) = delete; IExceptionTranslator(IExceptionTranslator&&) = delete; IExceptionTranslator& operator=(const IExceptionTranslator&) = delete; IExceptionTranslator& operator=(IExceptionTranslator&&) = delete; 233s 1949: virtual bool translate(String&) const = 0; 233s 1949: }; 233s 1949: 233s 1949: template 233s 1949: class ExceptionTranslator : public IExceptionTranslator 233s 1949: { 233s 1949: public: 233s 1949: explicit ExceptionTranslator(String (*translateFunction)(T)) 233s 1949: : m_translateFunction(translateFunction) {} 233s 1949: 233s 1949: bool translate(String& res) const override { 233s 1949: 233s 1949: try { 233s 1949: throw; 233s 1949: 233s 1949: } catch(const T& ex) { 233s 1949: res = m_translateFunction(ex); 233s 1949: return true; 233s 1949: } catch(...) {} 233s 1949: 233s 1949: static_cast(res); 233s 1949: return false; 233s 1949: } 233s 1949: 233s 1949: private: 233s 1949: String (*m_translateFunction)(T); 233s 1949: }; 233s 1949: 233s 1949: void registerExceptionTranslatorImpl(const IExceptionTranslator* et); 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct ContextScopeBase : public IContextScope { 233s 1949: ContextScopeBase(const ContextScopeBase&) = delete; 233s 1949: 233s 1949: ContextScopeBase& operator=(const ContextScopeBase&) = delete; 233s 1949: ContextScopeBase& operator=(ContextScopeBase&&) = delete; 233s 1949: 233s 1949: ~ContextScopeBase() override = default; 233s 1949: 233s 1949: protected: 233s 1949: ContextScopeBase(); 233s 1949: ContextScopeBase(ContextScopeBase&& other) noexcept; 233s 1949: 233s 1949: void destroy(); 233s 1949: bool need_to_destroy{true}; 233s 1949: }; 233s 1949: 233s 1949: template class ContextScope : public ContextScopeBase 233s 1949: { 233s 1949: L lambda_; 233s 1949: 233s 1949: public: 233s 1949: explicit ContextScope(const L &lambda) : lambda_(lambda) {} 233s 1949: explicit ContextScope(L&& lambda) : lambda_(static_cast(lambda)) { } 233s 1949: 233s 1949: ContextScope(const ContextScope&) = delete; 233s 1949: ContextScope(ContextScope&&) noexcept = default; 233s 1949: 233s 1949: ContextScope& operator=(const ContextScope&) = delete; 233s 1949: ContextScope& operator=(ContextScope&&) = delete; 233s 1949: 233s 1949: void stringify(std::ostream* s) const override { lambda_(s); } 233s 1949: 233s 1949: ~ContextScope() override { 233s 1949: if (need_to_destroy) { 233s 1949: destroy(); 233s 1949: } 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: struct MessageBuilder : public MessageData 233s 1949: { 233s 1949: std::ostream* m_stream; 233s 1949: bool logged = false; 233s 1949: 233s 1949: MessageBuilder(const char* file, int line, assertType::Enum severity); 233s 1949: 233s 1949: MessageBuilder(const MessageBuilder&) = delete; 233s 1949: MessageBuilder(MessageBuilder&&) = delete; 233s 1949: 233s 1949: MessageBuilder& operator=(const MessageBuilder&) = delete; 233s 1949: MessageBuilder& operator=(MessageBuilder&&) = delete; 233s 1949: 233s 1949: ~MessageBuilder(); 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: MessageBuilder& operator,(const T& in) { 233s 1949: *m_stream << (toString(in)); 233s 1949: return *this; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: MessageBuilder& operator<<(const T& in) { return this->operator,(in); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: MessageBuilder& operator*(const T& in) { return this->operator,(in); } 233s 1949: 233s 1949: bool log(); 233s 1949: void react(); 233s 1949: }; 233s 1949: 233s 1949: template 233s 1949: ContextScope MakeContextScope(const L &lambda) { 233s 1949: return ContextScope(lambda); 233s 1949: } 233s 1949: } 233s 1949: # 1925 "/usr/include/doctest/doctest.h" 3 4 233s 1949: struct test_suite { const char* data; test_suite(const char* in = "") : data(in) {} void fill(detail::TestCase& state) const { state.m_test_suite = data; } void fill(detail::TestSuite& state) const { state.m_test_suite = data; } }; 233s 1949: struct description { const char* data; description(const char* in = "") : data(in) {} void fill(detail::TestCase& state) const { state.m_description = data; } void fill(detail::TestSuite& state) const { state.m_description = data; } }; 233s 1949: struct skip { bool data; skip(bool in = true) : data(in) {} void fill(detail::TestCase& state) const { state.m_skip = data; } void fill(detail::TestSuite& state) const { state.m_skip = data; } }; 233s 1949: struct no_breaks { bool data; no_breaks(bool in = true) : data(in) {} void fill(detail::TestCase& state) const { state.m_no_breaks = data; } void fill(detail::TestSuite& state) const { state.m_no_breaks = data; } }; 233s 1949: struct no_output { bool data; no_output(bool in = true) : data(in) {} void fill(detail::TestCase& state) const { state.m_no_output = data; } void fill(detail::TestSuite& state) const { state.m_no_output = data; } }; 233s 1949: struct timeout { double data; timeout(double in = 0) : data(in) {} void fill(detail::TestCase& state) const { state.m_timeout = data; } void fill(detail::TestSuite& state) const { state.m_timeout = data; } }; 233s 1949: struct may_fail { bool data; may_fail(bool in = true) : data(in) {} void fill(detail::TestCase& state) const { state.m_may_fail = data; } void fill(detail::TestSuite& state) const { state.m_may_fail = data; } }; 233s 1949: struct should_fail { bool data; should_fail(bool in = true) : data(in) {} void fill(detail::TestCase& state) const { state.m_should_fail = data; } void fill(detail::TestSuite& state) const { state.m_should_fail = data; } }; 233s 1949: struct expected_failures { int data; expected_failures(int in = 0) : data(in) {} void fill(detail::TestCase& state) const { state.m_expected_failures = data; } void fill(detail::TestSuite& state) const { state.m_expected_failures = data; } }; 233s 1949: 233s 1949: template 233s 1949: int registerExceptionTranslator(String (*translateFunction)(T)) { 233s 1949: 233s 1949: static detail::ExceptionTranslator exceptionTranslator(translateFunction); 233s 1949: 233s 1949: detail::registerExceptionTranslatorImpl(&exceptionTranslator); 233s 1949: return 0; 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: namespace doctest_detail_test_suite_ns { 233s 1949: doctest::detail::TestSuite& getCurrentTestSuite(); 233s 1949: } 233s 1949: 233s 1949: namespace doctest { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: namespace detail { 233s 1949: using assert_handler = void (*)(const AssertData&); 233s 1949: struct ContextState; 233s 1949: } 233s 1949: 233s 1949: class Context 233s 1949: { 233s 1949: detail::ContextState* p; 233s 1949: 233s 1949: void parseArgs(int argc, const char* const* argv, bool withDefaults = false); 233s 1949: 233s 1949: public: 233s 1949: explicit Context(int argc = 0, const char* const* argv = nullptr); 233s 1949: 233s 1949: Context(const Context&) = delete; 233s 1949: Context(Context&&) = delete; 233s 1949: 233s 1949: Context& operator=(const Context&) = delete; 233s 1949: Context& operator=(Context&&) = delete; 233s 1949: 233s 1949: ~Context(); 233s 1949: 233s 1949: void applyCommandLine(int argc, const char* const* argv); 233s 1949: 233s 1949: void addFilter(const char* filter, const char* value); 233s 1949: void clearFilters(); 233s 1949: void setOption(const char* option, bool value); 233s 1949: void setOption(const char* option, int value); 233s 1949: void setOption(const char* option, const char* value); 233s 1949: 233s 1949: bool shouldExit(); 233s 1949: 233s 1949: void setAsDefaultForAssertsOutOfTestCases(); 233s 1949: 233s 1949: void setAssertHandler(detail::assert_handler ah); 233s 1949: 233s 1949: void setCout(std::ostream* out); 233s 1949: 233s 1949: int run(); 233s 1949: }; 233s 1949: 233s 1949: namespace TestCaseFailureReason { 233s 1949: enum Enum 233s 1949: { 233s 1949: None = 0, 233s 1949: AssertFailure = 1, 233s 1949: Exception = 2, 233s 1949: Crash = 4, 233s 1949: TooManyFailedAsserts = 8, 233s 1949: Timeout = 16, 233s 1949: ShouldHaveFailedButDidnt = 32, 233s 1949: ShouldHaveFailedAndDid = 64, 233s 1949: DidntFailExactlyNumTimes = 128, 233s 1949: FailedExactlyNumTimes = 256, 233s 1949: CouldHaveFailedAndDid = 512 233s 1949: }; 233s 1949: } 233s 1949: 233s 1949: struct CurrentTestCaseStats 233s 1949: { 233s 1949: int numAssertsCurrentTest; 233s 1949: int numAssertsFailedCurrentTest; 233s 1949: double seconds; 233s 1949: int failure_flags; 233s 1949: bool testCaseSuccess; 233s 1949: }; 233s 1949: 233s 1949: struct TestCaseException 233s 1949: { 233s 1949: String error_string; 233s 1949: bool is_crash; 233s 1949: }; 233s 1949: 233s 1949: struct TestRunStats 233s 1949: { 233s 1949: unsigned numTestCases; 233s 1949: unsigned numTestCasesPassingFilters; 233s 1949: unsigned numTestSuitesPassingFilters; 233s 1949: unsigned numTestCasesFailed; 233s 1949: int numAsserts; 233s 1949: int numAssertsFailed; 233s 1949: }; 233s 1949: 233s 1949: struct QueryData 233s 1949: { 233s 1949: const TestRunStats* run_stats = nullptr; 233s 1949: const TestCaseData** data = nullptr; 233s 1949: unsigned num_data = 0; 233s 1949: }; 233s 1949: 233s 1949: struct IReporter 233s 1949: { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: virtual void report_query(const QueryData&) = 0; 233s 1949: 233s 1949: 233s 1949: virtual void test_run_start() = 0; 233s 1949: 233s 1949: virtual void test_run_end(const TestRunStats&) = 0; 233s 1949: 233s 1949: 233s 1949: virtual void test_case_start(const TestCaseData&) = 0; 233s 1949: 233s 1949: virtual void test_case_reenter(const TestCaseData&) = 0; 233s 1949: 233s 1949: virtual void test_case_end(const CurrentTestCaseStats&) = 0; 233s 1949: 233s 1949: 233s 1949: virtual void test_case_exception(const TestCaseException&) = 0; 233s 1949: 233s 1949: 233s 1949: virtual void subcase_start(const SubcaseSignature&) = 0; 233s 1949: 233s 1949: virtual void subcase_end() = 0; 233s 1949: 233s 1949: 233s 1949: virtual void log_assert(const AssertData&) = 0; 233s 1949: 233s 1949: virtual void log_message(const MessageData&) = 0; 233s 1949: 233s 1949: 233s 1949: 233s 1949: virtual void test_case_skipped(const TestCaseData&) = 0; 233s 1949: 233s 1949: virtual ~IReporter(); IReporter() = default; IReporter(const IReporter&) = delete; IReporter(IReporter&&) = delete; IReporter& operator=(const IReporter&) = delete; IReporter& operator=(IReporter&&) = delete; 233s 1949: 233s 1949: 233s 1949: static int get_num_active_contexts(); 233s 1949: static const IContextScope* const* get_active_contexts(); 233s 1949: 233s 1949: 233s 1949: static int get_num_stringified_contexts(); 233s 1949: static const String* get_stringified_contexts(); 233s 1949: }; 233s 1949: 233s 1949: namespace detail { 233s 1949: using reporterCreatorFunc = IReporter* (*)(const ContextOptions&); 233s 1949: 233s 1949: void registerReporterImpl(const char* name, int prio, reporterCreatorFunc c, bool isReporter); 233s 1949: 233s 1949: template 233s 1949: IReporter* reporterCreator(const ContextOptions& o) { 233s 1949: return new Reporter(o); 233s 1949: } 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: int registerReporter(const char* name, int priority, bool isReporter) { 233s 1949: detail::registerReporterImpl(name, priority, detail::reporterCreator, isReporter); 233s 1949: return 0; 233s 1949: } 233s 1949: } 233s 1949: # 3076 "/usr/include/doctest/doctest.h" 3 4 233s 1949: static const int DOCTEST_ANON_VAR_0 = doctest::detail::consume(&DOCTEST_ANON_VAR_0, doctest::detail::setTestSuite(doctest::detail::TestSuite() * "")); using DOCTEST_ANON_FOR_SEMICOLON_1 = int(); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 3082 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic pop 233s 1949: 233s 1949: 233s 1949: # 3084 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 3098 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic push 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wunknown-pragmas" 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wpragmas" 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Weffc++" 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wstrict-overflow" 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wstrict-aliasing" 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wmissing-declarations" 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wuseless-cast" 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: 233s 1949: # 3105 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wnoexcept" 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 3123 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic push 233s 1949: 233s 1949: # 3124 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wconversion" 233s 1949: 233s 1949: # 3125 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wsign-conversion" 233s 1949: 233s 1949: # 3126 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wmissing-field-initializers" 233s 1949: 233s 1949: # 3127 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wmissing-braces" 233s 1949: 233s 1949: # 3128 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wswitch" 233s 1949: 233s 1949: # 3129 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wswitch-enum" 233s 1949: 233s 1949: # 3130 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wswitch-default" 233s 1949: 233s 1949: # 3131 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations" 233s 1949: 233s 1949: # 3132 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wold-style-cast" 233s 1949: 233s 1949: # 3133 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wunused-function" 233s 1949: 233s 1949: # 3134 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wmultiple-inheritance" 233s 1949: 233s 1949: # 3135 "/usr/include/doctest/doctest.h" 3 4 233s 1949: #pragma GCC diagnostic ignored "-Wsuggest-attribute" 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/c++/15/ctime" 1 3 4 233s 1949: # 46 "/usr/include/c++/15/ctime" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 1 3 4 233s 1949: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 233s 1949: 233s 1949: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wvariadic-macros" 233s 1949: 233s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 233s 1949: #pragma GCC diagnostic ignored "-Wc++23-extensions" 233s 1949: # 336 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 233s 1949: namespace std 233s 1949: { 233s 1949: typedef unsigned int size_t; 233s 1949: typedef int ptrdiff_t; 233s 1949: 233s 1949: 233s 1949: typedef decltype(nullptr) nullptr_t; 233s 1949: 233s 1949: 233s 1949: #pragma GCC visibility push(default) 233s 1949: 233s 1949: 233s 1949: extern "C++" __attribute__ ((__noreturn__, __always_inline__)) 233s 1949: inline void __terminate() noexcept 233s 1949: { 233s 1949: void terminate() noexcept __attribute__ ((__noreturn__,__cold__)); 233s 1949: terminate(); 233s 1949: } 233s 1949: #pragma GCC visibility pop 233s 1949: } 233s 1949: # 369 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 233s 1949: namespace std 233s 1949: { 233s 1949: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 233s 1949: } 233s 1949: namespace __gnu_cxx 233s 1949: { 233s 1949: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 233s 1949: } 233s 1949: # 573 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 233s 1949: namespace std 233s 1949: { 233s 1949: #pragma GCC visibility push(default) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__((__always_inline__)) 233s 1949: constexpr inline bool 233s 1949: __is_constant_evaluated() noexcept 233s 1949: { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: return __builtin_is_constant_evaluated(); 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: #pragma GCC visibility pop 233s 1949: } 233s 1949: # 617 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 233s 1949: namespace std 233s 1949: { 233s 1949: #pragma GCC visibility push(default) 233s 1949: 233s 1949: extern "C++" __attribute__ ((__noreturn__)) __attribute__((__cold__)) 233s 1949: void 233s 1949: __glibcxx_assert_fail 233s 1949: (const char* __file, int __line, const char* __function, 233s 1949: const char* __condition) 233s 1949: noexcept; 233s 1949: #pragma GCC visibility pop 233s 1949: } 233s 1949: # 648 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 233s 1949: namespace std 233s 1949: { 233s 1949: __attribute__((__always_inline__,__visibility__("default"))) 233s 1949: inline void 233s 1949: __glibcxx_assert_fail() 233s 1949: { } 233s 1949: } 233s 1949: # 727 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/os_defines.h" 1 3 4 233s 1949: # 728 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/cpu_defines.h" 1 3 4 233s 1949: # 731 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 2 3 4 233s 1949: # 953 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++config.h" 3 4 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 47 "/usr/include/c++/15/ctime" 2 3 4 233s 1949: # 1 "/usr/include/time.h" 1 3 4 233s 1949: # 29 "/usr/include/time.h" 3 4 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 30 "/usr/include/time.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/time.h" 1 3 4 233s 1949: # 73 "/usr/include/arm-linux-gnueabihf/bits/time.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 1 3 4 233s 1949: # 22 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timeval.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct timeval 233s 1949: { 233s 1949: 233s 1949: __time64_t tv_sec; 233s 1949: __suseconds64_t tv_usec; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: }; 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct timex 233s 1949: { 233s 1949: 233s 1949: unsigned int modes; 233s 1949: int :32; 233s 1949: long long offset; 233s 1949: long long freq; 233s 1949: long long maxerror; 233s 1949: long long esterror; 233s 1949: int status; 233s 1949: int :32; 233s 1949: long long constant; 233s 1949: long long precision; 233s 1949: long long tolerance; 233s 1949: struct timeval time; 233s 1949: long long tick; 233s 1949: long long ppsfreq; 233s 1949: long long jitter; 233s 1949: int shift; 233s 1949: int :32; 233s 1949: long long stabil; 233s 1949: long long jitcnt; 233s 1949: long long calcnt; 233s 1949: long long errcnt; 233s 1949: long long stbcnt; 233s 1949: 233s 1949: int tai; 233s 1949: 233s 1949: int :32; int :32; int :32; int :32; 233s 1949: int :32; int :32; int :32; int :32; 233s 1949: int :32; int :32; int :32; 233s 1949: # 85 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 3 4 233s 1949: }; 233s 1949: # 74 "/usr/include/arm-linux-gnueabihf/bits/time.h" 2 3 4 233s 1949: 233s 1949: extern "C" { 233s 1949: 233s 1949: 233s 1949: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __asm__ ("" "__clock_adjtime64") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 34 "/usr/include/time.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clock_t.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __clock_t clock_t; 233s 1949: # 38 "/usr/include/time.h" 2 3 4 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_tm.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct tm 233s 1949: { 233s 1949: int tm_sec; 233s 1949: int tm_min; 233s 1949: int tm_hour; 233s 1949: int tm_mday; 233s 1949: int tm_mon; 233s 1949: int tm_year; 233s 1949: int tm_wday; 233s 1949: int tm_yday; 233s 1949: int tm_isdst; 233s 1949: 233s 1949: 233s 1949: long int tm_gmtoff; 233s 1949: const char *tm_zone; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: }; 233s 1949: # 40 "/usr/include/time.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clockid_t.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __clockid_t clockid_t; 233s 1949: # 47 "/usr/include/time.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/timer_t.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __timer_t timer_t; 233s 1949: # 48 "/usr/include/time.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_itimerspec.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct itimerspec 233s 1949: { 233s 1949: struct timespec it_interval; 233s 1949: struct timespec it_value; 233s 1949: }; 233s 1949: # 49 "/usr/include/time.h" 2 3 4 233s 1949: struct sigevent; 233s 1949: # 60 "/usr/include/time.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 1 3 4 233s 1949: # 22 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 3 4 233s 1949: struct __locale_struct 233s 1949: { 233s 1949: 233s 1949: struct __locale_data *__locales[13]; 233s 1949: 233s 1949: 233s 1949: const unsigned short int *__ctype_b; 233s 1949: const int *__ctype_tolower; 233s 1949: const int *__ctype_toupper; 233s 1949: 233s 1949: 233s 1949: const char *__names[13]; 233s 1949: }; 233s 1949: 233s 1949: typedef struct __locale_struct *__locale_t; 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 2 3 4 233s 1949: 233s 1949: typedef __locale_t locale_t; 233s 1949: # 61 "/usr/include/time.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C" { 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern clock_t clock (void) noexcept (true); 233s 1949: # 85 "/usr/include/time.h" 3 4 233s 1949: extern time_t time (time_t *__timer) noexcept (true) __asm__ ("" "__time64"); 233s 1949: extern double difftime (time_t __time1, time_t __time0) noexcept (true) __asm__ ("" "__difftime64") 233s 1949: ; 233s 1949: extern time_t mktime (struct tm *__tp) noexcept (true) __asm__ ("" "__mktime64"); 233s 1949: # 99 "/usr/include/time.h" 3 4 233s 1949: extern size_t strftime (char *__restrict __s, size_t __maxsize, 233s 1949: const char *__restrict __format, 233s 1949: const struct tm *__restrict __tp) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 3, 4))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *strptime (const char *__restrict __s, 233s 1949: const char *__restrict __fmt, struct tm *__tp) 233s 1949: noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, 233s 1949: const char *__restrict __format, 233s 1949: const struct tm *__restrict __tp, 233s 1949: locale_t __loc) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *strptime_l (const char *__restrict __s, 233s 1949: const char *__restrict __fmt, struct tm *__tp, 233s 1949: locale_t __loc) noexcept (true); 233s 1949: # 140 "/usr/include/time.h" 3 4 233s 1949: extern struct tm*gmtime (const time_t *__timer) noexcept (true) __asm__ ("" "__gmtime64"); 233s 1949: extern struct tm *localtime (const time_t *__timer) noexcept (true) __asm__ ("" "__localtime64") 233s 1949: ; 233s 1949: # 163 "/usr/include/time.h" 3 4 233s 1949: extern struct tm*gmtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp) noexcept (true) __asm__ ("" "__gmtime64_r") 233s 1949: 233s 1949: ; 233s 1949: 233s 1949: extern struct tm*localtime_r (const time_t *__restrict __t, struct tm *__restrict __tp) noexcept (true) __asm__ ("" "__localtime64_r") 233s 1949: 233s 1949: ; 233s 1949: # 179 "/usr/include/time.h" 3 4 233s 1949: extern char *asctime (const struct tm *__tp) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *ctime (const time_t *__timer) noexcept (true) __asm__ ("" "__ctime64"); 233s 1949: # 197 "/usr/include/time.h" 3 4 233s 1949: extern char *asctime_r (const struct tm *__restrict __tp, 233s 1949: char *__restrict __buf) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *ctime_r (const time_t *__restrict __timer, char *__restrict __buf) noexcept (true) __asm__ ("" "__ctime64_r") 233s 1949: ; 233s 1949: # 217 "/usr/include/time.h" 3 4 233s 1949: extern char *__tzname[2]; 233s 1949: extern int __daylight; 233s 1949: extern long int __timezone; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *tzname[2]; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void tzset (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int daylight; 233s 1949: extern long int timezone; 233s 1949: # 249 "/usr/include/time.h" 3 4 233s 1949: extern time_t timegm (struct tm *__tp) noexcept (true) __asm__ ("" "__timegm64"); 233s 1949: # 266 "/usr/include/time.h" 3 4 233s 1949: extern time_t timelocal (struct tm *__tp) noexcept (true) __asm__ ("" "__mktime64"); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int dysize (int __year) noexcept (true) __attribute__ ((__const__)); 233s 1949: # 296 "/usr/include/time.h" 3 4 233s 1949: extern int nanosleep (const struct timespec *__requested_time, struct timespec *__remaining) __asm__ ("" "__nanosleep64") 233s 1949: 233s 1949: ; 233s 1949: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) noexcept (true) __asm__ ("" "__clock_getres64") 233s 1949: 233s 1949: ; 233s 1949: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) noexcept (true) __asm__ ("" "__clock_gettime64") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (2))); 233s 1949: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) noexcept (true) __asm__ ("" "__clock_settime64") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (2))); 233s 1949: # 328 "/usr/include/time.h" 3 4 233s 1949: extern int clock_nanosleep (clockid_t __clock_id, int __flags, const struct timespec *__req, struct timespec *__rem) __asm__ ("" "__clock_nanosleep_time64") 233s 1949: 233s 1949: 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int timer_create (clockid_t __clock_id, 233s 1949: struct sigevent *__restrict __evp, 233s 1949: timer_t *__restrict __timerid) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int timer_delete (timer_t __timerid) noexcept (true); 233s 1949: # 361 "/usr/include/time.h" 3 4 233s 1949: extern int timer_settime (timer_t __timerid, int __flags, const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) noexcept (true) __asm__ ("" "__timer_settime64") 233s 1949: 233s 1949: 233s 1949: ; 233s 1949: 233s 1949: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) noexcept (true) __asm__ ("" "__timer_gettime64") 233s 1949: 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int timer_getoverrun (timer_t __timerid) noexcept (true); 233s 1949: # 387 "/usr/include/time.h" 3 4 233s 1949: extern int timespec_get (struct timespec *__ts, int __base) noexcept (true) __asm__ ("" "__timespec_get64") 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: # 403 "/usr/include/time.h" 3 4 233s 1949: extern int timespec_getres (struct timespec *__ts, int __base) noexcept (true) __asm__ ("" "__timespec_getres64") 233s 1949: 233s 1949: ; 233s 1949: # 425 "/usr/include/time.h" 3 4 233s 1949: extern int getdate_err; 233s 1949: # 434 "/usr/include/time.h" 3 4 233s 1949: extern struct tm *getdate (const char *__string); 233s 1949: # 448 "/usr/include/time.h" 3 4 233s 1949: extern int getdate_r (const char *__restrict __string, 233s 1949: struct tm *__restrict __resbufp); 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 48 "/usr/include/c++/15/ctime" 2 3 4 233s 1949: # 60 "/usr/include/c++/15/ctime" 3 4 233s 1949: namespace std 233s 1949: { 233s 1949: using ::clock_t; 233s 1949: using ::time_t; 233s 1949: using ::tm; 233s 1949: 233s 1949: using ::clock; 233s 1949: using ::difftime; 233s 1949: using ::mktime; 233s 1949: using ::time; 233s 1949: using ::asctime; 233s 1949: using ::ctime; 233s 1949: using ::gmtime; 233s 1949: using ::localtime; 233s 1949: using ::strftime; 233s 1949: } 233s 1949: # 3151 "/usr/include/doctest/doctest.h" 2 3 4 233s 1949: # 1 "/usr/include/c++/15/cmath" 1 3 4 233s 1949: # 46 "/usr/include/c++/15/cmath" 3 4 233s 1949: # 1 "/usr/include/c++/15/bits/requires_hosted.h" 1 3 4 233s 1949: # 47 "/usr/include/c++/15/cmath" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/c++/15/bits/cpp_type_traits.h" 1 3 4 233s 1949: # 40 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 233s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 233s 1949: # 41 "/usr/include/c++/15/bits/cpp_type_traits.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 233s 1949: # 76 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 233s 1949: extern "C++" { 233s 1949: 233s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: struct __true_type { }; 233s 1949: struct __false_type { }; 233s 1949: 233s 1949: template 233s 1949: struct __truth_type 233s 1949: { typedef __false_type __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __truth_type 233s 1949: { typedef __true_type __type; }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __traitor 233s 1949: { 233s 1949: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; 233s 1949: typedef typename __truth_type<__value>::__type __type; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __are_same 233s 1949: { 233s 1949: enum { __value = 0 }; 233s 1949: typedef __false_type __type; 233s 1949: }; 233s 1949: 233s 1949: template 233s 1949: struct __are_same<_Tp, _Tp> 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 0 }; 233s 1949: typedef __false_type __type; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: # 176 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_integer 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: # 281 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 233s 1949: template 233s 1949: struct __is_floating 233s 1949: { 233s 1949: enum { __value = 0 }; 233s 1949: typedef __false_type __type; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct __is_floating 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_floating 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_floating 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: # 358 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 233s 1949: template 233s 1949: struct __is_arithmetic 233s 1949: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > 233s 1949: { }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __is_char 233s 1949: { 233s 1949: enum { __value = 0 }; 233s 1949: typedef __false_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_char 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct __is_char 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __is_byte 233s 1949: { 233s 1949: enum { __value = 0 }; 233s 1949: typedef __false_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_byte 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_byte 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __is_byte 233s 1949: { 233s 1949: enum { __value = 1 }; 233s 1949: typedef __true_type __type; 233s 1949: }; 233s 1949: # 438 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 233s 1949: template 233s 1949: struct __is_nonvolatile_trivially_copyable 233s 1949: { 233s 1949: enum { __value = __is_trivially_copyable(_Tp) }; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __is_nonvolatile_trivially_copyable 233s 1949: { 233s 1949: enum { __value = 0 }; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __memcpyable 233s 1949: { 233s 1949: enum { __value = 0 }; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __memcpyable<_Tp*, _Tp*> 233s 1949: : __is_nonvolatile_trivially_copyable<_Tp> 233s 1949: { }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __memcpyable<_Tp*, const _Tp*> 233s 1949: : __is_nonvolatile_trivially_copyable<_Tp> 233s 1949: { }; 233s 1949: 233s 1949: template struct __memcpyable_integer; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __memcpyable<_Tp*, _Up*> 233s 1949: { 233s 1949: enum { 233s 1949: __value = __memcpyable_integer<_Tp>::__width != 0 233s 1949: && ((int)__memcpyable_integer<_Tp>::__width 233s 1949: == (int)__memcpyable_integer<_Up>::__width) 233s 1949: }; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __memcpyable<_Tp*, const _Up*> 233s 1949: : __memcpyable<_Tp*, _Up*> 233s 1949: { }; 233s 1949: 233s 1949: template 233s 1949: struct __memcpyable_integer 233s 1949: { 233s 1949: enum { 233s 1949: __width = __is_integer<_Tp>::__value ? (sizeof(_Tp) * 8) : 0 233s 1949: }; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __memcpyable_integer 233s 1949: { enum { __width = 0 }; }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct __memcpyable_integer 233s 1949: { enum { __width = 0 }; }; 233s 1949: # 567 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 233s 1949: template<> 233s 1949: struct __memcpyable { enum { __value = true }; }; 233s 1949: template<> 233s 1949: struct __memcpyable { enum { __value = true }; }; 233s 1949: # 599 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 233s 1949: template 233s 1949: struct __memcmpable 233s 1949: { 233s 1949: enum { __value = 0 }; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __memcmpable<_Tp*, _Tp*> 233s 1949: : __is_nonvolatile_trivially_copyable<_Tp> 233s 1949: { }; 233s 1949: 233s 1949: template 233s 1949: struct __memcmpable 233s 1949: : __is_nonvolatile_trivially_copyable<_Tp> 233s 1949: { }; 233s 1949: 233s 1949: template 233s 1949: struct __memcmpable<_Tp*, const _Tp*> 233s 1949: : __is_nonvolatile_trivially_copyable<_Tp> 233s 1949: { }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template::__value 233s 1949: 233s 1949: > 233s 1949: struct __is_memcmp_ordered 233s 1949: { 233s 1949: static const bool __value = _Tp(-1) > _Tp(1); 233s 1949: }; 233s 1949: 233s 1949: template 233s 1949: struct __is_memcmp_ordered<_Tp, false> 233s 1949: { 233s 1949: static const bool __value = false; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __is_memcmp_ordered_with 233s 1949: { 233s 1949: static const bool __value = __is_memcmp_ordered<_Tp>::__value 233s 1949: && __is_memcmp_ordered<_Up>::__value; 233s 1949: }; 233s 1949: 233s 1949: template 233s 1949: struct __is_memcmp_ordered_with<_Tp, _Up, false> 233s 1949: { 233s 1949: static const bool __value = false; 233s 1949: }; 233s 1949: # 693 "/usr/include/c++/15/bits/cpp_type_traits.h" 3 4 233s 1949: template 233s 1949: struct __is_move_iterator 233s 1949: { 233s 1949: enum { __value = 0 }; 233s 1949: typedef __false_type __type; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: 233s 1949: inline _Iterator 233s 1949: __miter_base(_Iterator __it) 233s 1949: { return __it; } 233s 1949: 233s 1949: 233s 1949: } 233s 1949: } 233s 1949: 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 50 "/usr/include/c++/15/cmath" 2 3 4 233s 1949: # 1 "/usr/include/c++/15/ext/type_traits.h" 1 3 4 233s 1949: # 39 "/usr/include/c++/15/ext/type_traits.h" 3 4 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 233s 1949: 233s 1949: extern "C++" { 233s 1949: 233s 1949: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __enable_if 233s 1949: { }; 233s 1949: 233s 1949: template 233s 1949: struct __enable_if 233s 1949: { typedef _Tp __type; }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __conditional_type 233s 1949: { typedef _Iftrue __type; }; 233s 1949: 233s 1949: template 233s 1949: struct __conditional_type 233s 1949: { typedef _Iffalse __type; }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __add_unsigned 233s 1949: { 233s 1949: private: 233s 1949: typedef __enable_if::__value, _Tp> __if_type; 233s 1949: 233s 1949: public: 233s 1949: typedef typename __if_type::__type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __add_unsigned 233s 1949: { typedef unsigned char __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __add_unsigned 233s 1949: { typedef unsigned char __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __add_unsigned 233s 1949: { typedef unsigned short __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __add_unsigned 233s 1949: { typedef unsigned int __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __add_unsigned 233s 1949: { typedef unsigned long __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __add_unsigned 233s 1949: { typedef unsigned long long __type; }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct __add_unsigned; 233s 1949: 233s 1949: template<> 233s 1949: struct __add_unsigned; 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __remove_unsigned 233s 1949: { 233s 1949: private: 233s 1949: typedef __enable_if::__value, _Tp> __if_type; 233s 1949: 233s 1949: public: 233s 1949: typedef typename __if_type::__type __type; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __remove_unsigned 233s 1949: { typedef signed char __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __remove_unsigned 233s 1949: { typedef signed char __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __remove_unsigned 233s 1949: { typedef short __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __remove_unsigned 233s 1949: { typedef int __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __remove_unsigned 233s 1949: { typedef long __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __remove_unsigned 233s 1949: { typedef long long __type; }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct __remove_unsigned; 233s 1949: 233s 1949: template<> 233s 1949: struct __remove_unsigned; 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr 233s 1949: inline bool 233s 1949: __is_null_pointer(_Type* __ptr) 233s 1949: { return __ptr == 0; } 233s 1949: 233s 1949: template 233s 1949: constexpr 233s 1949: inline bool 233s 1949: __is_null_pointer(_Type) 233s 1949: { return false; } 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: __is_null_pointer(std::nullptr_t) 233s 1949: { return true; } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template::__value> 233s 1949: struct __promote 233s 1949: { typedef double __type; }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __promote<_Tp, false> 233s 1949: { }; 233s 1949: 233s 1949: template<> 233s 1949: struct __promote 233s 1949: { typedef long double __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __promote 233s 1949: { typedef double __type; }; 233s 1949: 233s 1949: template<> 233s 1949: struct __promote 233s 1949: { typedef float __type; }; 233s 1949: # 246 "/usr/include/c++/15/ext/type_traits.h" 3 4 233s 1949: template::__type, 233s 1949: typename _Up2 = typename __promote<_Up>::__type> 233s 1949: struct __promote_2 233s 1949: { 233s 1949: typedef __typeof__(_Tp2() + _Up2()) __type; 233s 1949: }; 233s 1949: 233s 1949: template::__type, 233s 1949: typename _Up2 = typename __promote<_Up>::__type, 233s 1949: typename _Vp2 = typename __promote<_Vp>::__type> 233s 1949: struct __promote_3 233s 1949: { 233s 1949: typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; 233s 1949: }; 233s 1949: 233s 1949: template::__type, 233s 1949: typename _Up2 = typename __promote<_Up>::__type, 233s 1949: typename _Vp2 = typename __promote<_Vp>::__type, 233s 1949: typename _Wp2 = typename __promote<_Wp>::__type> 233s 1949: struct __promote_4 233s 1949: { 233s 1949: typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: } 233s 1949: 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 51 "/usr/include/c++/15/cmath" 2 3 4 233s 1949: 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wpedantic" 233s 1949: 233s 1949: # 1 "/usr/include/math.h" 1 3 4 233s 1949: # 27 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 233s 1949: # 28 "/usr/include/math.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C" { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/libm-simd-decl-stubs.h" 1 3 4 233s 1949: # 28 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 2 3 4 233s 1949: # 41 "/usr/include/math.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 233s 1949: # 52 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4 233s 1949: # 25 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 2 3 4 233s 1949: # 53 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 2 3 4 233s 1949: # 44 "/usr/include/math.h" 2 3 4 233s 1949: # 156 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/flt-eval-method.h" 1 3 4 233s 1949: # 157 "/usr/include/math.h" 2 3 4 233s 1949: # 167 "/usr/include/math.h" 3 4 233s 1949: typedef float float_t; 233s 1949: typedef double double_t; 233s 1949: # 208 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/fp-logb.h" 1 3 4 233s 1949: # 209 "/usr/include/math.h" 2 3 4 233s 1949: # 251 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/fp-fast.h" 1 3 4 233s 1949: # 252 "/usr/include/math.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: enum 233s 1949: { 233s 1949: FP_INT_UPWARD = 233s 1949: 233s 1949: 0, 233s 1949: FP_INT_DOWNWARD = 233s 1949: 233s 1949: 1, 233s 1949: FP_INT_TOWARDZERO = 233s 1949: 233s 1949: 2, 233s 1949: FP_INT_TONEARESTFROMZERO = 233s 1949: 233s 1949: 3, 233s 1949: FP_INT_TONEAREST = 233s 1949: 233s 1949: 4, 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-macros.h" 1 3 4 233s 1949: # 276 "/usr/include/math.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 233s 1949: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 233s 1949: extern int __fpclassify (double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __signbit (double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int __isinf (double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __finite (double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __isnan (double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __iseqsig (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int __issignaling (double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: # 282 "/usr/include/math.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 233s 1949: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern double acos (double __x) noexcept (true); extern double __acos (double __x) noexcept (true); 233s 1949: 233s 1949: extern double asin (double __x) noexcept (true); extern double __asin (double __x) noexcept (true); 233s 1949: 233s 1949: extern double atan (double __x) noexcept (true); extern double __atan (double __x) noexcept (true); 233s 1949: 233s 1949: extern double atan2 (double __y, double __x) noexcept (true); extern double __atan2 (double __y, double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double cos (double __x) noexcept (true); extern double __cos (double __x) noexcept (true); 233s 1949: 233s 1949: extern double sin (double __x) noexcept (true); extern double __sin (double __x) noexcept (true); 233s 1949: 233s 1949: extern double tan (double __x) noexcept (true); extern double __tan (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double acospi (double __x) noexcept (true); extern double __acospi (double __x) noexcept (true); 233s 1949: extern double acospi (double __x) noexcept (true); extern double __acospi (double __x) noexcept (true); 233s 1949: 233s 1949: extern double asinpi (double __x) noexcept (true); extern double __asinpi (double __x) noexcept (true); 233s 1949: extern double asinpi (double __x) noexcept (true); extern double __asinpi (double __x) noexcept (true); 233s 1949: 233s 1949: extern double atanpi (double __x) noexcept (true); extern double __atanpi (double __x) noexcept (true); 233s 1949: extern double atanpi (double __x) noexcept (true); extern double __atanpi (double __x) noexcept (true); 233s 1949: 233s 1949: extern double atan2pi (double __y, double __x) noexcept (true); extern double __atan2pi (double __y, double __x) noexcept (true); 233s 1949: extern double atan2pi (double __y, double __x) noexcept (true); extern double __atan2pi (double __y, double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double cospi (double __x) noexcept (true); extern double __cospi (double __x) noexcept (true); 233s 1949: 233s 1949: extern double sinpi (double __x) noexcept (true); extern double __sinpi (double __x) noexcept (true); 233s 1949: 233s 1949: extern double tanpi (double __x) noexcept (true); extern double __tanpi (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double cosh (double __x) noexcept (true); extern double __cosh (double __x) noexcept (true); 233s 1949: 233s 1949: extern double sinh (double __x) noexcept (true); extern double __sinh (double __x) noexcept (true); 233s 1949: 233s 1949: extern double tanh (double __x) noexcept (true); extern double __tanh (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void sincos (double __x, double *__sinx, double *__cosx) noexcept (true); extern void __sincos (double __x, double *__sinx, double *__cosx) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double acosh (double __x) noexcept (true); extern double __acosh (double __x) noexcept (true); 233s 1949: 233s 1949: extern double asinh (double __x) noexcept (true); extern double __asinh (double __x) noexcept (true); 233s 1949: 233s 1949: extern double atanh (double __x) noexcept (true); extern double __atanh (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double exp (double __x) noexcept (true); extern double __exp (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double frexp (double __x, int *__exponent) noexcept (true); extern double __frexp (double __x, int *__exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double ldexp (double __x, int __exponent) noexcept (true); extern double __ldexp (double __x, int __exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double log (double __x) noexcept (true); extern double __log (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double log10 (double __x) noexcept (true); extern double __log10 (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double modf (double __x, double *__iptr) noexcept (true); extern double __modf (double __x, double *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double exp10 (double __x) noexcept (true); extern double __exp10 (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double exp2m1 (double __x) noexcept (true); extern double __exp2m1 (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double exp10m1 (double __x) noexcept (true); extern double __exp10m1 (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double log2p1 (double __x) noexcept (true); extern double __log2p1 (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double log10p1 (double __x) noexcept (true); extern double __log10p1 (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double logp1 (double __x) noexcept (true); extern double __logp1 (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double expm1 (double __x) noexcept (true); extern double __expm1 (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double log1p (double __x) noexcept (true); extern double __log1p (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double logb (double __x) noexcept (true); extern double __logb (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double exp2 (double __x) noexcept (true); extern double __exp2 (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double log2 (double __x) noexcept (true); extern double __log2 (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double pow (double __x, double __y) noexcept (true); extern double __pow (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double sqrt (double __x) noexcept (true); extern double __sqrt (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double hypot (double __x, double __y) noexcept (true); extern double __hypot (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double cbrt (double __x) noexcept (true); extern double __cbrt (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double compoundn (double __x, long long int __y) noexcept (true); extern double __compoundn (double __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double pown (double __x, long long int __y) noexcept (true); extern double __pown (double __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double powr (double __x, double __y) noexcept (true); extern double __powr (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double rootn (double __x, long long int __y) noexcept (true); extern double __rootn (double __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double rsqrt (double __x) noexcept (true); extern double __rsqrt (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double ceil (double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fabs (double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double floor (double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fmod (double __x, double __y) noexcept (true); extern double __fmod (double __x, double __y) noexcept (true); 233s 1949: # 237 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern int finite (double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double drem (double __x, double __y) noexcept (true); extern double __drem (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double significand (double __x) noexcept (true); extern double __significand (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double copysign (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double nan (const char *__tagb) noexcept (true); extern double __nan (const char *__tagb) noexcept (true); 233s 1949: # 274 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern double j0 (double) noexcept (true); extern double __j0 (double) noexcept (true); 233s 1949: extern double j1 (double) noexcept (true); extern double __j1 (double) noexcept (true); 233s 1949: extern double jn (int, double) noexcept (true); extern double __jn (int, double) noexcept (true); 233s 1949: extern double y0 (double) noexcept (true); extern double __y0 (double) noexcept (true); 233s 1949: extern double y1 (double) noexcept (true); extern double __y1 (double) noexcept (true); 233s 1949: extern double yn (int, double) noexcept (true); extern double __yn (int, double) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double erf (double) noexcept (true); extern double __erf (double) noexcept (true); 233s 1949: extern double erfc (double) noexcept (true); extern double __erfc (double) noexcept (true); 233s 1949: extern double lgamma (double) noexcept (true); extern double __lgamma (double) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double tgamma (double) noexcept (true); extern double __tgamma (double) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double gamma (double) noexcept (true); extern double __gamma (double) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double lgamma_r (double, int *__signgamp) noexcept (true); extern double __lgamma_r (double, int *__signgamp) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double rint (double __x) noexcept (true); extern double __rint (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double nextafter (double __x, double __y) noexcept (true); extern double __nextafter (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: extern double nexttoward (double __x, long double __y) noexcept (true); extern double __nexttoward (double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double nextdown (double __x) noexcept (true); extern double __nextdown (double __x) noexcept (true); 233s 1949: 233s 1949: extern double nextup (double __x) noexcept (true); extern double __nextup (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double remainder (double __x, double __y) noexcept (true); extern double __remainder (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double scalbn (double __x, int __n) noexcept (true); extern double __scalbn (double __x, int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ilogb (double __x) noexcept (true); extern int __ilogb (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int llogb (double __x) noexcept (true); extern long int __llogb (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double scalbln (double __x, long int __n) noexcept (true); extern double __scalbln (double __x, long int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double nearbyint (double __x) noexcept (true); extern double __nearbyint (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double round (double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double trunc (double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double remquo (double __x, double __y, int *__quo) noexcept (true); extern double __remquo (double __x, double __y, int *__quo) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lrint (double __x) noexcept (true); extern long int __lrint (double __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llrint (double __x) noexcept (true); extern long long int __llrint (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lround (double __x) noexcept (true); extern long int __lround (double __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llround (double __x) noexcept (true); extern long long int __llround (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double fdim (double __x, double __y) noexcept (true); extern double __fdim (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double fmax (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fmin (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double fma (double __x, double __y, double __z) noexcept (true); extern double __fma (double __x, double __y, double __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double roundeven (double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfp (double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern int canonicalize (double *__cx, const double *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double fmaxmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fminmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double fmaximum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fminimum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fmaximum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fminimum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fmaximum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fminimum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fmaximum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern double fminimum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int totalorder (const double *__x, const double *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern int totalordermag (const double *__x, const double *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern double getpayload (const double *__x) noexcept (true); extern double __getpayload (const double *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayload (double *__x, double __payload) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadsig (double *__x, double __payload) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double scalb (double __x, double __n) noexcept (true); extern double __scalb (double __x, double __n) noexcept (true); 233s 1949: # 283 "/usr/include/math.h" 2 3 4 233s 1949: # 298 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 233s 1949: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 233s 1949: extern int __fpclassifyf (float __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __signbitf (float __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int __isinff (float __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __finitef (float __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __isnanf (float __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __iseqsigf (float __x, float __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int __issignalingf (float __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: # 299 "/usr/include/math.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 233s 1949: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern float acosf (float __x) noexcept (true); extern float __acosf (float __x) noexcept (true); 233s 1949: 233s 1949: extern float asinf (float __x) noexcept (true); extern float __asinf (float __x) noexcept (true); 233s 1949: 233s 1949: extern float atanf (float __x) noexcept (true); extern float __atanf (float __x) noexcept (true); 233s 1949: 233s 1949: extern float atan2f (float __y, float __x) noexcept (true); extern float __atan2f (float __y, float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float cosf (float __x) noexcept (true); extern float __cosf (float __x) noexcept (true); 233s 1949: 233s 1949: extern float sinf (float __x) noexcept (true); extern float __sinf (float __x) noexcept (true); 233s 1949: 233s 1949: extern float tanf (float __x) noexcept (true); extern float __tanf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float acospif (float __x) noexcept (true); extern float __acospif (float __x) noexcept (true); 233s 1949: extern float acospif (float __x) noexcept (true); extern float __acospif (float __x) noexcept (true); 233s 1949: 233s 1949: extern float asinpif (float __x) noexcept (true); extern float __asinpif (float __x) noexcept (true); 233s 1949: extern float asinpif (float __x) noexcept (true); extern float __asinpif (float __x) noexcept (true); 233s 1949: 233s 1949: extern float atanpif (float __x) noexcept (true); extern float __atanpif (float __x) noexcept (true); 233s 1949: extern float atanpif (float __x) noexcept (true); extern float __atanpif (float __x) noexcept (true); 233s 1949: 233s 1949: extern float atan2pif (float __y, float __x) noexcept (true); extern float __atan2pif (float __y, float __x) noexcept (true); 233s 1949: extern float atan2pif (float __y, float __x) noexcept (true); extern float __atan2pif (float __y, float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float cospif (float __x) noexcept (true); extern float __cospif (float __x) noexcept (true); 233s 1949: 233s 1949: extern float sinpif (float __x) noexcept (true); extern float __sinpif (float __x) noexcept (true); 233s 1949: 233s 1949: extern float tanpif (float __x) noexcept (true); extern float __tanpif (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float coshf (float __x) noexcept (true); extern float __coshf (float __x) noexcept (true); 233s 1949: 233s 1949: extern float sinhf (float __x) noexcept (true); extern float __sinhf (float __x) noexcept (true); 233s 1949: 233s 1949: extern float tanhf (float __x) noexcept (true); extern float __tanhf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void sincosf (float __x, float *__sinx, float *__cosx) noexcept (true); extern void __sincosf (float __x, float *__sinx, float *__cosx) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float acoshf (float __x) noexcept (true); extern float __acoshf (float __x) noexcept (true); 233s 1949: 233s 1949: extern float asinhf (float __x) noexcept (true); extern float __asinhf (float __x) noexcept (true); 233s 1949: 233s 1949: extern float atanhf (float __x) noexcept (true); extern float __atanhf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float expf (float __x) noexcept (true); extern float __expf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float frexpf (float __x, int *__exponent) noexcept (true); extern float __frexpf (float __x, int *__exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float ldexpf (float __x, int __exponent) noexcept (true); extern float __ldexpf (float __x, int __exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float logf (float __x) noexcept (true); extern float __logf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float log10f (float __x) noexcept (true); extern float __log10f (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float modff (float __x, float *__iptr) noexcept (true); extern float __modff (float __x, float *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float exp10f (float __x) noexcept (true); extern float __exp10f (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float exp2m1f (float __x) noexcept (true); extern float __exp2m1f (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float exp10m1f (float __x) noexcept (true); extern float __exp10m1f (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float log2p1f (float __x) noexcept (true); extern float __log2p1f (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float log10p1f (float __x) noexcept (true); extern float __log10p1f (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float logp1f (float __x) noexcept (true); extern float __logp1f (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float expm1f (float __x) noexcept (true); extern float __expm1f (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float log1pf (float __x) noexcept (true); extern float __log1pf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float logbf (float __x) noexcept (true); extern float __logbf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float exp2f (float __x) noexcept (true); extern float __exp2f (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float log2f (float __x) noexcept (true); extern float __log2f (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float powf (float __x, float __y) noexcept (true); extern float __powf (float __x, float __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float sqrtf (float __x) noexcept (true); extern float __sqrtf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float hypotf (float __x, float __y) noexcept (true); extern float __hypotf (float __x, float __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float cbrtf (float __x) noexcept (true); extern float __cbrtf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float compoundnf (float __x, long long int __y) noexcept (true); extern float __compoundnf (float __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float pownf (float __x, long long int __y) noexcept (true); extern float __pownf (float __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float powrf (float __x, float __y) noexcept (true); extern float __powrf (float __x, float __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float rootnf (float __x, long long int __y) noexcept (true); extern float __rootnf (float __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float rsqrtf (float __x) noexcept (true); extern float __rsqrtf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float ceilf (float __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fabsf (float __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float floorf (float __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fmodf (float __x, float __y) noexcept (true); extern float __fmodf (float __x, float __y) noexcept (true); 233s 1949: # 231 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern int isinff (float __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int finitef (float __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float dremf (float __x, float __y) noexcept (true); extern float __dremf (float __x, float __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float significandf (float __x) noexcept (true); extern float __significandf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float copysignf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float nanf (const char *__tagb) noexcept (true); extern float __nanf (const char *__tagb) noexcept (true); 233s 1949: # 267 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern int isnanf (float __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float j0f (float) noexcept (true); extern float __j0f (float) noexcept (true); 233s 1949: extern float j1f (float) noexcept (true); extern float __j1f (float) noexcept (true); 233s 1949: extern float jnf (int, float) noexcept (true); extern float __jnf (int, float) noexcept (true); 233s 1949: extern float y0f (float) noexcept (true); extern float __y0f (float) noexcept (true); 233s 1949: extern float y1f (float) noexcept (true); extern float __y1f (float) noexcept (true); 233s 1949: extern float ynf (int, float) noexcept (true); extern float __ynf (int, float) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float erff (float) noexcept (true); extern float __erff (float) noexcept (true); 233s 1949: extern float erfcf (float) noexcept (true); extern float __erfcf (float) noexcept (true); 233s 1949: extern float lgammaf (float) noexcept (true); extern float __lgammaf (float) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float tgammaf (float) noexcept (true); extern float __tgammaf (float) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float gammaf (float) noexcept (true); extern float __gammaf (float) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float lgammaf_r (float, int *__signgamp) noexcept (true); extern float __lgammaf_r (float, int *__signgamp) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float rintf (float __x) noexcept (true); extern float __rintf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float nextafterf (float __x, float __y) noexcept (true); extern float __nextafterf (float __x, float __y) noexcept (true); 233s 1949: 233s 1949: extern float nexttowardf (float __x, long double __y) noexcept (true); extern float __nexttowardf (float __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float nextdownf (float __x) noexcept (true); extern float __nextdownf (float __x) noexcept (true); 233s 1949: 233s 1949: extern float nextupf (float __x) noexcept (true); extern float __nextupf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float remainderf (float __x, float __y) noexcept (true); extern float __remainderf (float __x, float __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float scalbnf (float __x, int __n) noexcept (true); extern float __scalbnf (float __x, int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ilogbf (float __x) noexcept (true); extern int __ilogbf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int llogbf (float __x) noexcept (true); extern long int __llogbf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float scalblnf (float __x, long int __n) noexcept (true); extern float __scalblnf (float __x, long int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float nearbyintf (float __x) noexcept (true); extern float __nearbyintf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float roundf (float __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float truncf (float __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float remquof (float __x, float __y, int *__quo) noexcept (true); extern float __remquof (float __x, float __y, int *__quo) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lrintf (float __x) noexcept (true); extern long int __lrintf (float __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llrintf (float __x) noexcept (true); extern long long int __llrintf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lroundf (float __x) noexcept (true); extern long int __lroundf (float __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llroundf (float __x) noexcept (true); extern long long int __llroundf (float __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float fdimf (float __x, float __y) noexcept (true); extern float __fdimf (float __x, float __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float fmaxf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fminf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float fmaf (float __x, float __y, float __z) noexcept (true); extern float __fmaf (float __x, float __y, float __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float roundevenf (float __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern int canonicalizef (float *__cx, const float *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float fmaxmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fminmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float fmaximumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fminimumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fmaximum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fminimum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fmaximum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fminimum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fmaximum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern float fminimum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int totalorderf (const float *__x, const float *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern int totalordermagf (const float *__x, const float *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern float getpayloadf (const float *__x) noexcept (true); extern float __getpayloadf (const float *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadf (float *__x, float __payload) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadsigf (float *__x, float __payload) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float scalbf (float __x, float __n) noexcept (true); extern float __scalbf (float __x, float __n) noexcept (true); 233s 1949: # 300 "/usr/include/math.h" 2 3 4 233s 1949: # 367 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 233s 1949: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 233s 1949: extern int __fpclassifyl (long double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __signbitl (long double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int __isinfl (long double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __finitel (long double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __isnanl (long double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern int __iseqsigl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int __issignalingl (long double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: # 368 "/usr/include/math.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 233s 1949: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern long double acosl (long double __x) noexcept (true); extern long double __acosl (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double asinl (long double __x) noexcept (true); extern long double __asinl (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double atanl (long double __x) noexcept (true); extern long double __atanl (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double atan2l (long double __y, long double __x) noexcept (true); extern long double __atan2l (long double __y, long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double cosl (long double __x) noexcept (true); extern long double __cosl (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double sinl (long double __x) noexcept (true); extern long double __sinl (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double tanl (long double __x) noexcept (true); extern long double __tanl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double acospil (long double __x) noexcept (true); extern long double __acospil (long double __x) noexcept (true); 233s 1949: extern long double acospil (long double __x) noexcept (true); extern long double __acospil (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double asinpil (long double __x) noexcept (true); extern long double __asinpil (long double __x) noexcept (true); 233s 1949: extern long double asinpil (long double __x) noexcept (true); extern long double __asinpil (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double atanpil (long double __x) noexcept (true); extern long double __atanpil (long double __x) noexcept (true); 233s 1949: extern long double atanpil (long double __x) noexcept (true); extern long double __atanpil (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double atan2pil (long double __y, long double __x) noexcept (true); extern long double __atan2pil (long double __y, long double __x) noexcept (true); 233s 1949: extern long double atan2pil (long double __y, long double __x) noexcept (true); extern long double __atan2pil (long double __y, long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double cospil (long double __x) noexcept (true); extern long double __cospil (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double sinpil (long double __x) noexcept (true); extern long double __sinpil (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double tanpil (long double __x) noexcept (true); extern long double __tanpil (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double coshl (long double __x) noexcept (true); extern long double __coshl (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double sinhl (long double __x) noexcept (true); extern long double __sinhl (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double tanhl (long double __x) noexcept (true); extern long double __tanhl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void sincosl (long double __x, long double *__sinx, long double *__cosx) noexcept (true); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double acoshl (long double __x) noexcept (true); extern long double __acoshl (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double asinhl (long double __x) noexcept (true); extern long double __asinhl (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double atanhl (long double __x) noexcept (true); extern long double __atanhl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double expl (long double __x) noexcept (true); extern long double __expl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double frexpl (long double __x, int *__exponent) noexcept (true); extern long double __frexpl (long double __x, int *__exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double ldexpl (long double __x, int __exponent) noexcept (true); extern long double __ldexpl (long double __x, int __exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double logl (long double __x) noexcept (true); extern long double __logl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double log10l (long double __x) noexcept (true); extern long double __log10l (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double modfl (long double __x, long double *__iptr) noexcept (true); extern long double __modfl (long double __x, long double *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double exp10l (long double __x) noexcept (true); extern long double __exp10l (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double exp2m1l (long double __x) noexcept (true); extern long double __exp2m1l (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double exp10m1l (long double __x) noexcept (true); extern long double __exp10m1l (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double log2p1l (long double __x) noexcept (true); extern long double __log2p1l (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double log10p1l (long double __x) noexcept (true); extern long double __log10p1l (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double logp1l (long double __x) noexcept (true); extern long double __logp1l (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double expm1l (long double __x) noexcept (true); extern long double __expm1l (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double log1pl (long double __x) noexcept (true); extern long double __log1pl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double logbl (long double __x) noexcept (true); extern long double __logbl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double exp2l (long double __x) noexcept (true); extern long double __exp2l (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double log2l (long double __x) noexcept (true); extern long double __log2l (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double powl (long double __x, long double __y) noexcept (true); extern long double __powl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double sqrtl (long double __x) noexcept (true); extern long double __sqrtl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double hypotl (long double __x, long double __y) noexcept (true); extern long double __hypotl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double cbrtl (long double __x) noexcept (true); extern long double __cbrtl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double compoundnl (long double __x, long long int __y) noexcept (true); extern long double __compoundnl (long double __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double pownl (long double __x, long long int __y) noexcept (true); extern long double __pownl (long double __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double powrl (long double __x, long double __y) noexcept (true); extern long double __powrl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double rootnl (long double __x, long long int __y) noexcept (true); extern long double __rootnl (long double __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double rsqrtl (long double __x) noexcept (true); extern long double __rsqrtl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double ceill (long double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fabsl (long double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double floorl (long double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fmodl (long double __x, long double __y) noexcept (true); extern long double __fmodl (long double __x, long double __y) noexcept (true); 233s 1949: # 231 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern int isinfl (long double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int finitel (long double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double dreml (long double __x, long double __y) noexcept (true); extern long double __dreml (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double significandl (long double __x) noexcept (true); extern long double __significandl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double copysignl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double nanl (const char *__tagb) noexcept (true); extern long double __nanl (const char *__tagb) noexcept (true); 233s 1949: # 267 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern int isnanl (long double __value) noexcept (true) 233s 1949: __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double j0l (long double) noexcept (true); extern long double __j0l (long double) noexcept (true); 233s 1949: extern long double j1l (long double) noexcept (true); extern long double __j1l (long double) noexcept (true); 233s 1949: extern long double jnl (int, long double) noexcept (true); extern long double __jnl (int, long double) noexcept (true); 233s 1949: extern long double y0l (long double) noexcept (true); extern long double __y0l (long double) noexcept (true); 233s 1949: extern long double y1l (long double) noexcept (true); extern long double __y1l (long double) noexcept (true); 233s 1949: extern long double ynl (int, long double) noexcept (true); extern long double __ynl (int, long double) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double erfl (long double) noexcept (true); extern long double __erfl (long double) noexcept (true); 233s 1949: extern long double erfcl (long double) noexcept (true); extern long double __erfcl (long double) noexcept (true); 233s 1949: extern long double lgammal (long double) noexcept (true); extern long double __lgammal (long double) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double tgammal (long double) noexcept (true); extern long double __tgammal (long double) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double gammal (long double) noexcept (true); extern long double __gammal (long double) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double lgammal_r (long double, int *__signgamp) noexcept (true); extern long double __lgammal_r (long double, int *__signgamp) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double rintl (long double __x) noexcept (true); extern long double __rintl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern long double nextafterl (long double __x, long double __y) noexcept (true); extern long double __nextafterl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: extern long double nexttowardl (long double __x, long double __y) noexcept (true); extern long double __nexttowardl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double nextdownl (long double __x) noexcept (true); extern long double __nextdownl (long double __x) noexcept (true); 233s 1949: 233s 1949: extern long double nextupl (long double __x) noexcept (true); extern long double __nextupl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double remainderl (long double __x, long double __y) noexcept (true); extern long double __remainderl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double scalbnl (long double __x, int __n) noexcept (true); extern long double __scalbnl (long double __x, int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ilogbl (long double __x) noexcept (true); extern int __ilogbl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int llogbl (long double __x) noexcept (true); extern long int __llogbl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double scalblnl (long double __x, long int __n) noexcept (true); extern long double __scalblnl (long double __x, long int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double nearbyintl (long double __x) noexcept (true); extern long double __nearbyintl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double roundl (long double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double truncl (long double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double remquol (long double __x, long double __y, int *__quo) noexcept (true); extern long double __remquol (long double __x, long double __y, int *__quo) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lrintl (long double __x) noexcept (true); extern long int __lrintl (long double __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llrintl (long double __x) noexcept (true); extern long long int __llrintl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lroundl (long double __x) noexcept (true); extern long int __lroundl (long double __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llroundl (long double __x) noexcept (true); extern long long int __llroundl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double fdiml (long double __x, long double __y) noexcept (true); extern long double __fdiml (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double fmaxl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fminl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double fmal (long double __x, long double __y, long double __z) noexcept (true); extern long double __fmal (long double __x, long double __y, long double __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double roundevenl (long double __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern int canonicalizel (long double *__cx, const long double *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double fmaxmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fminmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double fmaximuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fminimuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fmaximum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fminimum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fmaximum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fminimum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fmaximum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern long double fminimum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int totalorderl (const long double *__x, const long double *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern int totalordermagl (const long double *__x, const long double *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern long double getpayloadl (const long double *__x) noexcept (true); extern long double __getpayloadl (const long double *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadl (long double *__x, long double __payload) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadsigl (long double *__x, long double __payload) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long double scalbl (long double __x, long double __n) noexcept (true); extern long double __scalbl (long double __x, long double __n) noexcept (true); 233s 1949: # 369 "/usr/include/math.h" 2 3 4 233s 1949: # 419 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 233s 1949: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float32 acosf32 (_Float32 __x) noexcept (true); extern _Float32 __acosf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 asinf32 (_Float32 __x) noexcept (true); extern _Float32 __asinf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 atanf32 (_Float32 __x) noexcept (true); extern _Float32 __atanf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 cosf32 (_Float32 __x) noexcept (true); extern _Float32 __cosf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 sinf32 (_Float32 __x) noexcept (true); extern _Float32 __sinf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 tanf32 (_Float32 __x) noexcept (true); extern _Float32 __tanf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 acospif32 (_Float32 __x) noexcept (true); extern _Float32 __acospif32 (_Float32 __x) noexcept (true); 233s 1949: extern _Float32 acospif32 (_Float32 __x) noexcept (true); extern _Float32 __acospif32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 asinpif32 (_Float32 __x) noexcept (true); extern _Float32 __asinpif32 (_Float32 __x) noexcept (true); 233s 1949: extern _Float32 asinpif32 (_Float32 __x) noexcept (true); extern _Float32 __asinpif32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 atanpif32 (_Float32 __x) noexcept (true); extern _Float32 __atanpif32 (_Float32 __x) noexcept (true); 233s 1949: extern _Float32 atanpif32 (_Float32 __x) noexcept (true); extern _Float32 __atanpif32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 atan2pif32 (_Float32 __y, _Float32 __x) noexcept (true); extern _Float32 __atan2pif32 (_Float32 __y, _Float32 __x) noexcept (true); 233s 1949: extern _Float32 atan2pif32 (_Float32 __y, _Float32 __x) noexcept (true); extern _Float32 __atan2pif32 (_Float32 __y, _Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 cospif32 (_Float32 __x) noexcept (true); extern _Float32 __cospif32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 sinpif32 (_Float32 __x) noexcept (true); extern _Float32 __sinpif32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 tanpif32 (_Float32 __x) noexcept (true); extern _Float32 __tanpif32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 coshf32 (_Float32 __x) noexcept (true); extern _Float32 __coshf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 sinhf32 (_Float32 __x) noexcept (true); extern _Float32 __sinhf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 tanhf32 (_Float32 __x) noexcept (true); extern _Float32 __tanhf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 acoshf32 (_Float32 __x) noexcept (true); extern _Float32 __acoshf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 asinhf32 (_Float32 __x) noexcept (true); extern _Float32 __asinhf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 atanhf32 (_Float32 __x) noexcept (true); extern _Float32 __atanhf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 expf32 (_Float32 __x) noexcept (true); extern _Float32 __expf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 frexpf32 (_Float32 __x, int *__exponent) noexcept (true); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 ldexpf32 (_Float32 __x, int __exponent) noexcept (true); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 logf32 (_Float32 __x) noexcept (true); extern _Float32 __logf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 log10f32 (_Float32 __x) noexcept (true); extern _Float32 __log10f32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 exp10f32 (_Float32 __x) noexcept (true); extern _Float32 __exp10f32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 exp2m1f32 (_Float32 __x) noexcept (true); extern _Float32 __exp2m1f32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 exp10m1f32 (_Float32 __x) noexcept (true); extern _Float32 __exp10m1f32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 log2p1f32 (_Float32 __x) noexcept (true); extern _Float32 __log2p1f32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 log10p1f32 (_Float32 __x) noexcept (true); extern _Float32 __log10p1f32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 logp1f32 (_Float32 __x) noexcept (true); extern _Float32 __logp1f32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 expm1f32 (_Float32 __x) noexcept (true); extern _Float32 __expm1f32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 log1pf32 (_Float32 __x) noexcept (true); extern _Float32 __log1pf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 logbf32 (_Float32 __x) noexcept (true); extern _Float32 __logbf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 exp2f32 (_Float32 __x) noexcept (true); extern _Float32 __exp2f32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 log2f32 (_Float32 __x) noexcept (true); extern _Float32 __log2f32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 powf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 sqrtf32 (_Float32 __x) noexcept (true); extern _Float32 __sqrtf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 cbrtf32 (_Float32 __x) noexcept (true); extern _Float32 __cbrtf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 compoundnf32 (_Float32 __x, long long int __y) noexcept (true); extern _Float32 __compoundnf32 (_Float32 __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 pownf32 (_Float32 __x, long long int __y) noexcept (true); extern _Float32 __pownf32 (_Float32 __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 powrf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __powrf32 (_Float32 __x, _Float32 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 rootnf32 (_Float32 __x, long long int __y) noexcept (true); extern _Float32 __rootnf32 (_Float32 __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 rsqrtf32 (_Float32 __x) noexcept (true); extern _Float32 __rsqrtf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 ceilf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fabsf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 floorf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); 233s 1949: # 252 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 nanf32 (const char *__tagb) noexcept (true); extern _Float32 __nanf32 (const char *__tagb) noexcept (true); 233s 1949: # 274 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float32 j0f32 (_Float32) noexcept (true); extern _Float32 __j0f32 (_Float32) noexcept (true); 233s 1949: extern _Float32 j1f32 (_Float32) noexcept (true); extern _Float32 __j1f32 (_Float32) noexcept (true); 233s 1949: extern _Float32 jnf32 (int, _Float32) noexcept (true); extern _Float32 __jnf32 (int, _Float32) noexcept (true); 233s 1949: extern _Float32 y0f32 (_Float32) noexcept (true); extern _Float32 __y0f32 (_Float32) noexcept (true); 233s 1949: extern _Float32 y1f32 (_Float32) noexcept (true); extern _Float32 __y1f32 (_Float32) noexcept (true); 233s 1949: extern _Float32 ynf32 (int, _Float32) noexcept (true); extern _Float32 __ynf32 (int, _Float32) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 erff32 (_Float32) noexcept (true); extern _Float32 __erff32 (_Float32) noexcept (true); 233s 1949: extern _Float32 erfcf32 (_Float32) noexcept (true); extern _Float32 __erfcf32 (_Float32) noexcept (true); 233s 1949: extern _Float32 lgammaf32 (_Float32) noexcept (true); extern _Float32 __lgammaf32 (_Float32) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 tgammaf32 (_Float32) noexcept (true); extern _Float32 __tgammaf32 (_Float32) noexcept (true); 233s 1949: # 306 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float32 lgammaf32_r (_Float32, int *__signgamp) noexcept (true); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 rintf32 (_Float32 __x) noexcept (true); extern _Float32 __rintf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 nextdownf32 (_Float32 __x) noexcept (true); extern _Float32 __nextdownf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32 nextupf32 (_Float32 __x) noexcept (true); extern _Float32 __nextupf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 scalbnf32 (_Float32 __x, int __n) noexcept (true); extern _Float32 __scalbnf32 (_Float32 __x, int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ilogbf32 (_Float32 __x) noexcept (true); extern int __ilogbf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int llogbf32 (_Float32 __x) noexcept (true); extern long int __llogbf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 scalblnf32 (_Float32 __x, long int __n) noexcept (true); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 nearbyintf32 (_Float32 __x) noexcept (true); extern _Float32 __nearbyintf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 roundf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 truncf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lrintf32 (_Float32 __x) noexcept (true); extern long int __lrintf32 (_Float32 __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llrintf32 (_Float32 __x) noexcept (true); extern long long int __llrintf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lroundf32 (_Float32 __x) noexcept (true); extern long int __lroundf32 (_Float32 __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llroundf32 (_Float32 __x) noexcept (true); extern long long int __llroundf32 (_Float32 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fminf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 roundevenf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32 fmaximumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fminimumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fmaximum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fminimum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fmaximum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fminimum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 fminimum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int totalorderf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern int totalordermagf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32 getpayloadf32 (const _Float32 *__x) noexcept (true); extern _Float32 __getpayloadf32 (const _Float32 *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) noexcept (true); 233s 1949: # 420 "/usr/include/math.h" 2 3 4 233s 1949: # 436 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 233s 1949: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float64 acosf64 (_Float64 __x) noexcept (true); extern _Float64 __acosf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 asinf64 (_Float64 __x) noexcept (true); extern _Float64 __asinf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 atanf64 (_Float64 __x) noexcept (true); extern _Float64 __atanf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 cosf64 (_Float64 __x) noexcept (true); extern _Float64 __cosf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 sinf64 (_Float64 __x) noexcept (true); extern _Float64 __sinf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 tanf64 (_Float64 __x) noexcept (true); extern _Float64 __tanf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 acospif64 (_Float64 __x) noexcept (true); extern _Float64 __acospif64 (_Float64 __x) noexcept (true); 233s 1949: extern _Float64 acospif64 (_Float64 __x) noexcept (true); extern _Float64 __acospif64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 asinpif64 (_Float64 __x) noexcept (true); extern _Float64 __asinpif64 (_Float64 __x) noexcept (true); 233s 1949: extern _Float64 asinpif64 (_Float64 __x) noexcept (true); extern _Float64 __asinpif64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 atanpif64 (_Float64 __x) noexcept (true); extern _Float64 __atanpif64 (_Float64 __x) noexcept (true); 233s 1949: extern _Float64 atanpif64 (_Float64 __x) noexcept (true); extern _Float64 __atanpif64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 atan2pif64 (_Float64 __y, _Float64 __x) noexcept (true); extern _Float64 __atan2pif64 (_Float64 __y, _Float64 __x) noexcept (true); 233s 1949: extern _Float64 atan2pif64 (_Float64 __y, _Float64 __x) noexcept (true); extern _Float64 __atan2pif64 (_Float64 __y, _Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 cospif64 (_Float64 __x) noexcept (true); extern _Float64 __cospif64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 sinpif64 (_Float64 __x) noexcept (true); extern _Float64 __sinpif64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 tanpif64 (_Float64 __x) noexcept (true); extern _Float64 __tanpif64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 coshf64 (_Float64 __x) noexcept (true); extern _Float64 __coshf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 sinhf64 (_Float64 __x) noexcept (true); extern _Float64 __sinhf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 tanhf64 (_Float64 __x) noexcept (true); extern _Float64 __tanhf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 acoshf64 (_Float64 __x) noexcept (true); extern _Float64 __acoshf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 asinhf64 (_Float64 __x) noexcept (true); extern _Float64 __asinhf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 atanhf64 (_Float64 __x) noexcept (true); extern _Float64 __atanhf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 expf64 (_Float64 __x) noexcept (true); extern _Float64 __expf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 frexpf64 (_Float64 __x, int *__exponent) noexcept (true); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 ldexpf64 (_Float64 __x, int __exponent) noexcept (true); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 logf64 (_Float64 __x) noexcept (true); extern _Float64 __logf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 log10f64 (_Float64 __x) noexcept (true); extern _Float64 __log10f64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 exp10f64 (_Float64 __x) noexcept (true); extern _Float64 __exp10f64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 exp2m1f64 (_Float64 __x) noexcept (true); extern _Float64 __exp2m1f64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 exp10m1f64 (_Float64 __x) noexcept (true); extern _Float64 __exp10m1f64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 log2p1f64 (_Float64 __x) noexcept (true); extern _Float64 __log2p1f64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 log10p1f64 (_Float64 __x) noexcept (true); extern _Float64 __log10p1f64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 logp1f64 (_Float64 __x) noexcept (true); extern _Float64 __logp1f64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 expm1f64 (_Float64 __x) noexcept (true); extern _Float64 __expm1f64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 log1pf64 (_Float64 __x) noexcept (true); extern _Float64 __log1pf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 logbf64 (_Float64 __x) noexcept (true); extern _Float64 __logbf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 exp2f64 (_Float64 __x) noexcept (true); extern _Float64 __exp2f64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 log2f64 (_Float64 __x) noexcept (true); extern _Float64 __log2f64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 powf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 sqrtf64 (_Float64 __x) noexcept (true); extern _Float64 __sqrtf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 cbrtf64 (_Float64 __x) noexcept (true); extern _Float64 __cbrtf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 compoundnf64 (_Float64 __x, long long int __y) noexcept (true); extern _Float64 __compoundnf64 (_Float64 __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 pownf64 (_Float64 __x, long long int __y) noexcept (true); extern _Float64 __pownf64 (_Float64 __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 powrf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __powrf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 rootnf64 (_Float64 __x, long long int __y) noexcept (true); extern _Float64 __rootnf64 (_Float64 __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 rsqrtf64 (_Float64 __x) noexcept (true); extern _Float64 __rsqrtf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 ceilf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fabsf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 floorf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: # 252 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 nanf64 (const char *__tagb) noexcept (true); extern _Float64 __nanf64 (const char *__tagb) noexcept (true); 233s 1949: # 274 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float64 j0f64 (_Float64) noexcept (true); extern _Float64 __j0f64 (_Float64) noexcept (true); 233s 1949: extern _Float64 j1f64 (_Float64) noexcept (true); extern _Float64 __j1f64 (_Float64) noexcept (true); 233s 1949: extern _Float64 jnf64 (int, _Float64) noexcept (true); extern _Float64 __jnf64 (int, _Float64) noexcept (true); 233s 1949: extern _Float64 y0f64 (_Float64) noexcept (true); extern _Float64 __y0f64 (_Float64) noexcept (true); 233s 1949: extern _Float64 y1f64 (_Float64) noexcept (true); extern _Float64 __y1f64 (_Float64) noexcept (true); 233s 1949: extern _Float64 ynf64 (int, _Float64) noexcept (true); extern _Float64 __ynf64 (int, _Float64) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 erff64 (_Float64) noexcept (true); extern _Float64 __erff64 (_Float64) noexcept (true); 233s 1949: extern _Float64 erfcf64 (_Float64) noexcept (true); extern _Float64 __erfcf64 (_Float64) noexcept (true); 233s 1949: extern _Float64 lgammaf64 (_Float64) noexcept (true); extern _Float64 __lgammaf64 (_Float64) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 tgammaf64 (_Float64) noexcept (true); extern _Float64 __tgammaf64 (_Float64) noexcept (true); 233s 1949: # 306 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float64 lgammaf64_r (_Float64, int *__signgamp) noexcept (true); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 rintf64 (_Float64 __x) noexcept (true); extern _Float64 __rintf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 nextdownf64 (_Float64 __x) noexcept (true); extern _Float64 __nextdownf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: extern _Float64 nextupf64 (_Float64 __x) noexcept (true); extern _Float64 __nextupf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 scalbnf64 (_Float64 __x, int __n) noexcept (true); extern _Float64 __scalbnf64 (_Float64 __x, int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ilogbf64 (_Float64 __x) noexcept (true); extern int __ilogbf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int llogbf64 (_Float64 __x) noexcept (true); extern long int __llogbf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 scalblnf64 (_Float64 __x, long int __n) noexcept (true); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 nearbyintf64 (_Float64 __x) noexcept (true); extern _Float64 __nearbyintf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 roundf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 truncf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lrintf64 (_Float64 __x) noexcept (true); extern long int __lrintf64 (_Float64 __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llrintf64 (_Float64 __x) noexcept (true); extern long long int __llrintf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lroundf64 (_Float64 __x) noexcept (true); extern long int __lroundf64 (_Float64 __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llroundf64 (_Float64 __x) noexcept (true); extern long long int __llroundf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fminf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 roundevenf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 fmaximumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fminimumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fmaximum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fminimum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fmaximum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fminimum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 fminimum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int totalorderf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern int totalordermagf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern _Float64 getpayloadf64 (const _Float64 *__x) noexcept (true); extern _Float64 __getpayloadf64 (const _Float64 *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) noexcept (true); 233s 1949: # 437 "/usr/include/math.h" 2 3 4 233s 1949: # 470 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 233s 1949: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float32x acosf32x (_Float32x __x) noexcept (true); extern _Float32x __acosf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x asinf32x (_Float32x __x) noexcept (true); extern _Float32x __asinf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x atanf32x (_Float32x __x) noexcept (true); extern _Float32x __atanf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x cosf32x (_Float32x __x) noexcept (true); extern _Float32x __cosf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x sinf32x (_Float32x __x) noexcept (true); extern _Float32x __sinf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x tanf32x (_Float32x __x) noexcept (true); extern _Float32x __tanf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x acospif32x (_Float32x __x) noexcept (true); extern _Float32x __acospif32x (_Float32x __x) noexcept (true); 233s 1949: extern _Float32x acospif32x (_Float32x __x) noexcept (true); extern _Float32x __acospif32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x asinpif32x (_Float32x __x) noexcept (true); extern _Float32x __asinpif32x (_Float32x __x) noexcept (true); 233s 1949: extern _Float32x asinpif32x (_Float32x __x) noexcept (true); extern _Float32x __asinpif32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x atanpif32x (_Float32x __x) noexcept (true); extern _Float32x __atanpif32x (_Float32x __x) noexcept (true); 233s 1949: extern _Float32x atanpif32x (_Float32x __x) noexcept (true); extern _Float32x __atanpif32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x atan2pif32x (_Float32x __y, _Float32x __x) noexcept (true); extern _Float32x __atan2pif32x (_Float32x __y, _Float32x __x) noexcept (true); 233s 1949: extern _Float32x atan2pif32x (_Float32x __y, _Float32x __x) noexcept (true); extern _Float32x __atan2pif32x (_Float32x __y, _Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x cospif32x (_Float32x __x) noexcept (true); extern _Float32x __cospif32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x sinpif32x (_Float32x __x) noexcept (true); extern _Float32x __sinpif32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x tanpif32x (_Float32x __x) noexcept (true); extern _Float32x __tanpif32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x coshf32x (_Float32x __x) noexcept (true); extern _Float32x __coshf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x sinhf32x (_Float32x __x) noexcept (true); extern _Float32x __sinhf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x tanhf32x (_Float32x __x) noexcept (true); extern _Float32x __tanhf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x acoshf32x (_Float32x __x) noexcept (true); extern _Float32x __acoshf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x asinhf32x (_Float32x __x) noexcept (true); extern _Float32x __asinhf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x atanhf32x (_Float32x __x) noexcept (true); extern _Float32x __atanhf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x expf32x (_Float32x __x) noexcept (true); extern _Float32x __expf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x frexpf32x (_Float32x __x, int *__exponent) noexcept (true); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x ldexpf32x (_Float32x __x, int __exponent) noexcept (true); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x logf32x (_Float32x __x) noexcept (true); extern _Float32x __logf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x log10f32x (_Float32x __x) noexcept (true); extern _Float32x __log10f32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x exp10f32x (_Float32x __x) noexcept (true); extern _Float32x __exp10f32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x exp2m1f32x (_Float32x __x) noexcept (true); extern _Float32x __exp2m1f32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x exp10m1f32x (_Float32x __x) noexcept (true); extern _Float32x __exp10m1f32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x log2p1f32x (_Float32x __x) noexcept (true); extern _Float32x __log2p1f32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x log10p1f32x (_Float32x __x) noexcept (true); extern _Float32x __log10p1f32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x logp1f32x (_Float32x __x) noexcept (true); extern _Float32x __logp1f32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x expm1f32x (_Float32x __x) noexcept (true); extern _Float32x __expm1f32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x log1pf32x (_Float32x __x) noexcept (true); extern _Float32x __log1pf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x logbf32x (_Float32x __x) noexcept (true); extern _Float32x __logbf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x exp2f32x (_Float32x __x) noexcept (true); extern _Float32x __exp2f32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x log2f32x (_Float32x __x) noexcept (true); extern _Float32x __log2f32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x powf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x sqrtf32x (_Float32x __x) noexcept (true); extern _Float32x __sqrtf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x cbrtf32x (_Float32x __x) noexcept (true); extern _Float32x __cbrtf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x compoundnf32x (_Float32x __x, long long int __y) noexcept (true); extern _Float32x __compoundnf32x (_Float32x __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x pownf32x (_Float32x __x, long long int __y) noexcept (true); extern _Float32x __pownf32x (_Float32x __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x powrf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __powrf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x rootnf32x (_Float32x __x, long long int __y) noexcept (true); extern _Float32x __rootnf32x (_Float32x __x, long long int __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x rsqrtf32x (_Float32x __x) noexcept (true); extern _Float32x __rsqrtf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x ceilf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fabsf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x floorf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: # 252 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x nanf32x (const char *__tagb) noexcept (true); extern _Float32x __nanf32x (const char *__tagb) noexcept (true); 233s 1949: # 274 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float32x j0f32x (_Float32x) noexcept (true); extern _Float32x __j0f32x (_Float32x) noexcept (true); 233s 1949: extern _Float32x j1f32x (_Float32x) noexcept (true); extern _Float32x __j1f32x (_Float32x) noexcept (true); 233s 1949: extern _Float32x jnf32x (int, _Float32x) noexcept (true); extern _Float32x __jnf32x (int, _Float32x) noexcept (true); 233s 1949: extern _Float32x y0f32x (_Float32x) noexcept (true); extern _Float32x __y0f32x (_Float32x) noexcept (true); 233s 1949: extern _Float32x y1f32x (_Float32x) noexcept (true); extern _Float32x __y1f32x (_Float32x) noexcept (true); 233s 1949: extern _Float32x ynf32x (int, _Float32x) noexcept (true); extern _Float32x __ynf32x (int, _Float32x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x erff32x (_Float32x) noexcept (true); extern _Float32x __erff32x (_Float32x) noexcept (true); 233s 1949: extern _Float32x erfcf32x (_Float32x) noexcept (true); extern _Float32x __erfcf32x (_Float32x) noexcept (true); 233s 1949: extern _Float32x lgammaf32x (_Float32x) noexcept (true); extern _Float32x __lgammaf32x (_Float32x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x tgammaf32x (_Float32x) noexcept (true); extern _Float32x __tgammaf32x (_Float32x) noexcept (true); 233s 1949: # 306 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 233s 1949: extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x rintf32x (_Float32x __x) noexcept (true); extern _Float32x __rintf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x nextdownf32x (_Float32x __x) noexcept (true); extern _Float32x __nextdownf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: extern _Float32x nextupf32x (_Float32x __x) noexcept (true); extern _Float32x __nextupf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x scalbnf32x (_Float32x __x, int __n) noexcept (true); extern _Float32x __scalbnf32x (_Float32x __x, int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ilogbf32x (_Float32x __x) noexcept (true); extern int __ilogbf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int llogbf32x (_Float32x __x) noexcept (true); extern long int __llogbf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x scalblnf32x (_Float32x __x, long int __n) noexcept (true); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x nearbyintf32x (_Float32x __x) noexcept (true); extern _Float32x __nearbyintf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x roundf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x truncf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lrintf32x (_Float32x __x) noexcept (true); extern long int __lrintf32x (_Float32x __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llrintf32x (_Float32x __x) noexcept (true); extern long long int __llrintf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int lroundf32x (_Float32x __x) noexcept (true); extern long int __lroundf32x (_Float32x __x) noexcept (true); 233s 1949: __extension__ 233s 1949: extern long long int llroundf32x (_Float32x __x) noexcept (true); extern long long int __llroundf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fminf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x roundevenf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float32x fmaximumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fminimumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fmaximum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fminimum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fmaximum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fminimum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x fminimum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int totalorderf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern int totalordermagf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__pure__)); 233s 1949: 233s 1949: 233s 1949: extern _Float32x getpayloadf32x (const _Float32x *__x) noexcept (true); extern _Float32x __getpayloadf32x (const _Float32x *__x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) noexcept (true); 233s 1949: # 471 "/usr/include/math.h" 2 3 4 233s 1949: # 535 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 233s 1949: extern float fadd (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float fdiv (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float ffma (double __x, double __y, double __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float fmul (double __x, double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float fsqrt (double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float fsub (double __x, double __y) noexcept (true); 233s 1949: # 536 "/usr/include/math.h" 2 3 4 233s 1949: # 556 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 233s 1949: extern float faddl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float fdivl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float ffmal (long double __x, long double __y, long double __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float fmull (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float fsqrtl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern float fsubl (long double __x, long double __y) noexcept (true); 233s 1949: # 557 "/usr/include/math.h" 2 3 4 233s 1949: # 585 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 233s 1949: extern double daddl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double ddivl (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double dfmal (long double __x, long double __y, long double __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double dmull (long double __x, long double __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double dsqrtl (long double __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern double dsubl (long double __x, long double __y) noexcept (true); 233s 1949: # 586 "/usr/include/math.h" 2 3 4 233s 1949: # 666 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 233s 1949: extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 f32fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 f32sqrtf32x (_Float32x __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) noexcept (true); 233s 1949: # 667 "/usr/include/math.h" 2 3 4 233s 1949: # 676 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 233s 1949: extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 f32fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 f32sqrtf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: # 677 "/usr/include/math.h" 2 3 4 233s 1949: # 716 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 233s 1949: extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x f32xfmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x f32xsqrtf64 (_Float64 __x) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) noexcept (true); 233s 1949: # 717 "/usr/include/math.h" 2 3 4 233s 1949: # 823 "/usr/include/math.h" 3 4 233s 1949: extern int signgam; 233s 1949: # 903 "/usr/include/math.h" 3 4 233s 1949: enum 233s 1949: { 233s 1949: FP_NAN = 233s 1949: 233s 1949: 0, 233s 1949: FP_INFINITE = 233s 1949: 233s 1949: 1, 233s 1949: FP_ZERO = 233s 1949: 233s 1949: 2, 233s 1949: FP_SUBNORMAL = 233s 1949: 233s 1949: 3, 233s 1949: FP_NORMAL = 233s 1949: 233s 1949: 4 233s 1949: }; 233s 1949: # 1024 "/usr/include/math.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/iscanonical.h" 1 3 4 233s 1949: # 1025 "/usr/include/math.h" 2 3 4 233s 1949: # 1036 "/usr/include/math.h" 3 4 233s 1949: extern "C++" { 233s 1949: inline int issignaling (float __val) { return __issignalingf (__val); } 233s 1949: inline int issignaling (double __val) { return __issignaling (__val); } 233s 1949: inline int 233s 1949: issignaling (long double __val) 233s 1949: { 233s 1949: 233s 1949: return __issignaling (__val); 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 1067 "/usr/include/math.h" 3 4 233s 1949: extern "C++" { 233s 1949: # 1098 "/usr/include/math.h" 3 4 233s 1949: template inline bool 233s 1949: iszero (__T __val) 233s 1949: { 233s 1949: return __val == 0; 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: # 1333 "/usr/include/math.h" 3 4 233s 1949: extern "C++" { 233s 1949: template struct __iseqsig_type; 233s 1949: 233s 1949: template<> struct __iseqsig_type 233s 1949: { 233s 1949: static int __call (float __x, float __y) throw () 233s 1949: { 233s 1949: return __iseqsigf (__x, __y); 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: template<> struct __iseqsig_type 233s 1949: { 233s 1949: static int __call (double __x, double __y) throw () 233s 1949: { 233s 1949: return __iseqsig (__x, __y); 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: template<> struct __iseqsig_type 233s 1949: { 233s 1949: static int __call (long double __x, long double __y) throw () 233s 1949: { 233s 1949: 233s 1949: 233s 1949: 233s 1949: return __iseqsig (__x, __y); 233s 1949: 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> struct __iseqsig_type<_Float32> 233s 1949: { 233s 1949: static int __call (_Float32 __x, _Float32 __y) throw () 233s 1949: { 233s 1949: return __iseqsigf (__x, __y); 233s 1949: } 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: template<> struct __iseqsig_type<_Float64> 233s 1949: { 233s 1949: static int __call (_Float64 __x, _Float64 __y) throw () 233s 1949: { 233s 1949: return __iseqsig (__x, __y); 233s 1949: } 233s 1949: }; 233s 1949: # 1401 "/usr/include/math.h" 3 4 233s 1949: template<> struct __iseqsig_type<_Float32x> 233s 1949: { 233s 1949: static int __call (_Float32x __x, _Float32x __y) throw () 233s 1949: { 233s 1949: return __iseqsig (__x, __y); 233s 1949: } 233s 1949: }; 233s 1949: # 1424 "/usr/include/math.h" 3 4 233s 1949: template 233s 1949: inline int 233s 1949: iseqsig (_T1 __x, _T2 __y) throw () 233s 1949: { 233s 1949: 233s 1949: typedef decltype (((__x) + (__y) + 0.0f)) _T3; 233s 1949: 233s 1949: 233s 1949: 233s 1949: return __iseqsig_type<_T3>::__call (__x, __y); 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 56 "/usr/include/c++/15/cmath" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 57 "/usr/include/c++/15/cmath" 3 4 233s 1949: #pragma GCC diagnostic pop 233s 1949: 233s 1949: # 1 "/usr/include/c++/15/bits/std_abs.h" 1 3 4 233s 1949: # 39 "/usr/include/c++/15/bits/std_abs.h" 3 4 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wpedantic" 233s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/stdlib.h" 1 3 4 233s 1949: # 26 "/usr/include/stdlib.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 233s 1949: # 27 "/usr/include/stdlib.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 33 "/usr/include/stdlib.h" 2 3 4 233s 1949: 233s 1949: extern "C" { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitflags.h" 1 3 4 233s 1949: # 41 "/usr/include/stdlib.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitstatus.h" 1 3 4 233s 1949: # 42 "/usr/include/stdlib.h" 2 3 4 233s 1949: # 56 "/usr/include/stdlib.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 233s 1949: # 57 "/usr/include/stdlib.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: typedef struct 233s 1949: { 233s 1949: int quot; 233s 1949: int rem; 233s 1949: } div_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef struct 233s 1949: { 233s 1949: long int quot; 233s 1949: long int rem; 233s 1949: } ldiv_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __extension__ typedef struct 233s 1949: { 233s 1949: long long int quot; 233s 1949: long long int rem; 233s 1949: } lldiv_t; 233s 1949: # 98 "/usr/include/stdlib.h" 3 4 233s 1949: extern size_t __ctype_get_mb_cur_max (void) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double atof (const char *__nptr) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: extern int atoi (const char *__nptr) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: extern long int atol (const char *__nptr) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: __extension__ extern long long int atoll (const char *__nptr) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double strtod (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern float strtof (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: extern long double strtold (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: # 141 "/usr/include/stdlib.h" 3 4 233s 1949: extern _Float32 strtof32 (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 strtof64 (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: # 159 "/usr/include/stdlib.h" 3 4 233s 1949: extern _Float32x strtof32x (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: # 177 "/usr/include/stdlib.h" 3 4 233s 1949: extern long int strtol (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, int __base) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: extern unsigned long int strtoul (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, int __base) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: __extension__ 233s 1949: extern long long int strtoq (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, int __base) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: __extension__ 233s 1949: extern unsigned long long int strtouq (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, int __base) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __extension__ 233s 1949: extern long long int strtoll (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, int __base) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: __extension__ 233s 1949: extern unsigned long long int strtoull (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, int __base) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtol") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: extern unsigned long int strtoul (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoul") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: __extension__ 233s 1949: extern long long int strtoq (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoll") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: __extension__ 233s 1949: extern unsigned long long int strtouq (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoull") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: __extension__ 233s 1949: extern long long int strtoll (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoll") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: __extension__ 233s 1949: extern unsigned long long int strtoull (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoull") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: # 278 "/usr/include/stdlib.h" 3 4 233s 1949: extern int strfromd (char *__dest, size_t __size, const char *__format, 233s 1949: double __f) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))); 233s 1949: 233s 1949: extern int strfromf (char *__dest, size_t __size, const char *__format, 233s 1949: float __f) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))); 233s 1949: 233s 1949: extern int strfroml (char *__dest, size_t __size, const char *__format, 233s 1949: long double __f) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))); 233s 1949: # 298 "/usr/include/stdlib.h" 3 4 233s 1949: extern int strfromf32 (char *__dest, size_t __size, const char * __format, 233s 1949: _Float32 __f) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int strfromf64 (char *__dest, size_t __size, const char * __format, 233s 1949: _Float64 __f) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))); 233s 1949: # 316 "/usr/include/stdlib.h" 3 4 233s 1949: extern int strfromf32x (char *__dest, size_t __size, const char * __format, 233s 1949: _Float32x __f) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))); 233s 1949: # 340 "/usr/include/stdlib.h" 3 4 233s 1949: extern long int strtol_l (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, int __base, 233s 1949: locale_t __loc) noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 233s 1949: 233s 1949: extern unsigned long int strtoul_l (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, 233s 1949: int __base, locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 233s 1949: 233s 1949: __extension__ 233s 1949: extern long long int strtoll_l (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, int __base, 233s 1949: locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 233s 1949: 233s 1949: __extension__ 233s 1949: extern unsigned long long int strtoull_l (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, 233s 1949: int __base, locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int strtol_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtol_l") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1, 4))); 233s 1949: extern unsigned long int strtoul_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoul_l") 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1, 4))); 233s 1949: __extension__ 233s 1949: extern long long int strtoll_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoll_l") 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1, 4))); 233s 1949: __extension__ 233s 1949: extern unsigned long long int strtoull_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoull_l") 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1, 4))); 233s 1949: # 415 "/usr/include/stdlib.h" 3 4 233s 1949: extern double strtod_l (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 233s 1949: 233s 1949: extern float strtof_l (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 233s 1949: 233s 1949: extern long double strtold_l (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, 233s 1949: locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 233s 1949: # 436 "/usr/include/stdlib.h" 3 4 233s 1949: extern _Float32 strtof32_l (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, 233s 1949: locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern _Float64 strtof64_l (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, 233s 1949: locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 233s 1949: # 457 "/usr/include/stdlib.h" 3 4 233s 1949: extern _Float32x strtof32x_l (const char *__restrict __nptr, 233s 1949: char **__restrict __endptr, 233s 1949: locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 233s 1949: # 480 "/usr/include/stdlib.h" 3 4 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: __attribute__ ((__leaf__)) atoi (const char *__nptr) noexcept (true) 233s 1949: { 233s 1949: return (int) strtol (__nptr, (char **) __null, 10); 233s 1949: } 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) long int 233s 1949: __attribute__ ((__leaf__)) atol (const char *__nptr) noexcept (true) 233s 1949: { 233s 1949: return strtol (__nptr, (char **) __null, 10); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int 233s 1949: __attribute__ ((__leaf__)) atoll (const char *__nptr) noexcept (true) 233s 1949: { 233s 1949: return strtoll (__nptr, (char **) __null, 10); 233s 1949: } 233s 1949: # 505 "/usr/include/stdlib.h" 3 4 233s 1949: extern char *l64a (long int __n) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: extern long int a64l (const char *__s) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/sys/types.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 233s 1949: extern "C" { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __u_char u_char; 233s 1949: typedef __u_short u_short; 233s 1949: typedef __u_int u_int; 233s 1949: typedef __u_long u_long; 233s 1949: typedef __quad_t quad_t; 233s 1949: typedef __u_quad_t u_quad_t; 233s 1949: typedef __fsid_t fsid_t; 233s 1949: 233s 1949: 233s 1949: typedef __loff_t loff_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __ino64_t ino_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __ino64_t ino64_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __dev_t dev_t; 233s 1949: # 69 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 233s 1949: typedef __mode_t mode_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __nlink_t nlink_t; 233s 1949: # 103 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 233s 1949: typedef __id_t id_t; 233s 1949: # 114 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 233s 1949: typedef __daddr_t daddr_t; 233s 1949: typedef __caddr_t caddr_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __key_t key_t; 233s 1949: # 138 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 233s 1949: typedef __suseconds_t suseconds_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 145 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef unsigned long int ulong; 233s 1949: typedef unsigned short int ushort; 233s 1949: typedef unsigned int uint; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 3 4 233s 1949: typedef __int8_t int8_t; 233s 1949: typedef __int16_t int16_t; 233s 1949: typedef __int32_t int32_t; 233s 1949: typedef __int64_t int64_t; 233s 1949: # 156 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: typedef __uint8_t u_int8_t; 233s 1949: typedef __uint16_t u_int16_t; 233s 1949: typedef __uint32_t u_int32_t; 233s 1949: typedef __uint64_t u_int64_t; 233s 1949: 233s 1949: 233s 1949: typedef int register_t __attribute__ ((__mode__ (__word__))); 233s 1949: # 176 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 233s 1949: # 1 "/usr/include/endian.h" 1 3 4 233s 1949: # 35 "/usr/include/endian.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 1 3 4 233s 1949: # 33 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 233s 1949: static __inline __uint16_t 233s 1949: __bswap_16 (__uint16_t __bsx) 233s 1949: { 233s 1949: 233s 1949: return __builtin_bswap16 (__bsx); 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static __inline __uint32_t 233s 1949: __bswap_32 (__uint32_t __bsx) 233s 1949: { 233s 1949: 233s 1949: return __builtin_bswap32 (__bsx); 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 69 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 233s 1949: __extension__ static __inline __uint64_t 233s 1949: __bswap_64 (__uint64_t __bsx) 233s 1949: { 233s 1949: 233s 1949: return __builtin_bswap64 (__bsx); 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 36 "/usr/include/endian.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 1 3 4 233s 1949: # 32 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 3 4 233s 1949: static __inline __uint16_t 233s 1949: __uint16_identity (__uint16_t __x) 233s 1949: { 233s 1949: return __x; 233s 1949: } 233s 1949: 233s 1949: static __inline __uint32_t 233s 1949: __uint32_identity (__uint32_t __x) 233s 1949: { 233s 1949: return __x; 233s 1949: } 233s 1949: 233s 1949: static __inline __uint64_t 233s 1949: __uint64_identity (__uint64_t __x) 233s 1949: { 233s 1949: return __x; 233s 1949: } 233s 1949: # 37 "/usr/include/endian.h" 2 3 4 233s 1949: # 177 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/sys/select.h" 1 3 4 233s 1949: # 30 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/select.h" 1 3 4 233s 1949: # 31 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 233s 1949: # 49 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 233s 1949: typedef long int __fd_mask; 233s 1949: # 59 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 233s 1949: typedef struct 233s 1949: { 233s 1949: 233s 1949: 233s 1949: 233s 1949: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: } fd_set; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __fd_mask fd_mask; 233s 1949: # 91 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 233s 1949: extern "C" { 233s 1949: # 108 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 233s 1949: extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout) __asm__ ("" "__select64") 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: ; 233s 1949: # 134 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 233s 1949: extern int pselect (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, const struct timespec *__restrict __timeout, const __sigset_t *__restrict __sigmask) __asm__ ("" "__pselect64") 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: ; 233s 1949: # 150 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 1 3 4 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/select-decl.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/select-decl.h" 3 4 233s 1949: extern long int __fdelt_chk (long int __d); 233s 1949: extern long int __fdelt_warn (long int __d) 233s 1949: __attribute__((__warning__ ("bit outside of fd_set selected"))); 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 2 3 4 233s 1949: # 151 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 180 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __blksize_t blksize_t; 233s 1949: # 205 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 233s 1949: typedef __blkcnt64_t blkcnt_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __fsblkcnt64_t fsblkcnt_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __fsfilcnt64_t fsfilcnt_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __blkcnt64_t blkcnt64_t; 233s 1949: typedef __fsblkcnt64_t fsblkcnt64_t; 233s 1949: typedef __fsfilcnt64_t fsfilcnt64_t; 233s 1949: # 230 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 233s 1949: } 233s 1949: # 515 "/usr/include/stdlib.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int random (void) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern void srandom (unsigned int __seed) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *initstate (unsigned int __seed, char *__statebuf, 233s 1949: size_t __statelen) noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *setstate (char *__statebuf) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct random_data 233s 1949: { 233s 1949: int32_t *fptr; 233s 1949: int32_t *rptr; 233s 1949: int32_t *state; 233s 1949: int rand_type; 233s 1949: int rand_deg; 233s 1949: int rand_sep; 233s 1949: int32_t *end_ptr; 233s 1949: }; 233s 1949: 233s 1949: extern int random_r (struct random_data *__restrict __buf, 233s 1949: int32_t *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: extern int srandom_r (unsigned int __seed, struct random_data *__buf) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, 233s 1949: size_t __statelen, 233s 1949: struct random_data *__restrict __buf) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2, 4))); 233s 1949: 233s 1949: extern int setstate_r (char *__restrict __statebuf, 233s 1949: struct random_data *__restrict __buf) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int rand (void) noexcept (true); 233s 1949: 233s 1949: extern void srand (unsigned int __seed) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int rand_r (unsigned int *__seed) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern double drand48 (void) noexcept (true); 233s 1949: extern double erand48 (unsigned short int __xsubi[3]) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern long int lrand48 (void) noexcept (true); 233s 1949: extern long int nrand48 (unsigned short int __xsubi[3]) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern long int mrand48 (void) noexcept (true); 233s 1949: extern long int jrand48 (unsigned short int __xsubi[3]) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern void srand48 (long int __seedval) noexcept (true); 233s 1949: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: extern void lcong48 (unsigned short int __param[7]) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct drand48_data 233s 1949: { 233s 1949: unsigned short int __x[3]; 233s 1949: unsigned short int __old_x[3]; 233s 1949: unsigned short int __c; 233s 1949: unsigned short int __init; 233s 1949: __extension__ unsigned long long int __a; 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: extern int drand48_r (struct drand48_data *__restrict __buffer, 233s 1949: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: extern int erand48_r (unsigned short int __xsubi[3], 233s 1949: struct drand48_data *__restrict __buffer, 233s 1949: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern int lrand48_r (struct drand48_data *__restrict __buffer, 233s 1949: long int *__restrict __result) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: extern int nrand48_r (unsigned short int __xsubi[3], 233s 1949: struct drand48_data *__restrict __buffer, 233s 1949: long int *__restrict __result) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern int mrand48_r (struct drand48_data *__restrict __buffer, 233s 1949: long int *__restrict __result) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: extern int jrand48_r (unsigned short int __xsubi[3], 233s 1949: struct drand48_data *__restrict __buffer, 233s 1949: long int *__restrict __result) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: extern int seed48_r (unsigned short int __seed16v[3], 233s 1949: struct drand48_data *__buffer) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: extern int lcong48_r (unsigned short int __param[7], 233s 1949: struct drand48_data *__buffer) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern __uint32_t arc4random (void) 233s 1949: noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: extern void arc4random_buf (void *__buf, size_t __size) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __uint32_t arc4random_uniform (__uint32_t __upper_bound) 233s 1949: noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *malloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) 233s 1949: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: extern void *calloc (size_t __nmemb, size_t __size) 233s 1949: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *realloc (void *__ptr, size_t __size) 233s 1949: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); 233s 1949: 233s 1949: 233s 1949: extern void free (void *__ptr) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 233s 1949: noexcept (true) __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__alloc_size__ (2, 3))) 233s 1949: __attribute__ ((__malloc__ (__builtin_free, 1))); 233s 1949: 233s 1949: 233s 1949: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 233s 1949: noexcept (true) __attribute__ ((__malloc__ (reallocarray, 1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/alloca.h" 1 3 4 233s 1949: # 24 "/usr/include/alloca.h" 3 4 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 25 "/usr/include/alloca.h" 2 3 4 233s 1949: 233s 1949: extern "C" { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *alloca (size_t __size) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 707 "/usr/include/stdlib.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *valloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) 233s 1949: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *aligned_alloc (size_t __alignment, size_t __size) 233s 1949: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1))) 233s 1949: __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void abort (void) noexcept (true) __attribute__ ((__noreturn__)) __attribute__ ((__cold__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int atexit (void (*__func) (void)) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C++" int at_quick_exit (void (*__func) (void)) 233s 1949: noexcept (true) __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); 233s 1949: # 749 "/usr/include/stdlib.h" 3 4 233s 1949: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void quick_exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void _Exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *getenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *secure_getenv (const char *__name) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int putenv (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setenv (const char *__name, const char *__value, int __replace) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: extern int unsetenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int clearenv (void) noexcept (true); 233s 1949: # 814 "/usr/include/stdlib.h" 3 4 233s 1949: extern char *mktemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: # 830 "/usr/include/stdlib.h" 3 4 233s 1949: extern int mkstemp (char *__template) __asm__ ("" "mkstemp64") 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: # 852 "/usr/include/stdlib.h" 3 4 233s 1949: extern int mkstemps (char *__template, int __suffixlen) __asm__ ("" "mkstemps64") 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int mkstemps64 (char *__template, int __suffixlen) 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: # 870 "/usr/include/stdlib.h" 3 4 233s 1949: extern char *mkdtemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: # 884 "/usr/include/stdlib.h" 3 4 233s 1949: extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64") 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: # 905 "/usr/include/stdlib.h" 3 4 233s 1949: extern int mkostemps (char *__template, int __suffixlen, int __flags) __asm__ ("" "mkostemps64") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) 233s 1949: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: # 923 "/usr/include/stdlib.h" 3 4 233s 1949: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *canonicalize_file_name (const char *__name) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) 233s 1949: __attribute__ ((__malloc__ (__builtin_free, 1))) __attribute__ ((__warn_unused_result__)); 233s 1949: # 940 "/usr/include/stdlib.h" 3 4 233s 1949: extern char *realpath (const char *__restrict __name, 233s 1949: char *__restrict __resolved) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef int (*__compar_fn_t) (const void *, const void *); 233s 1949: 233s 1949: 233s 1949: typedef __compar_fn_t comparison_fn_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *bsearch (const void *__key, const void *__base, 233s 1949: size_t __nmemb, size_t __size, __compar_fn_t __compar) 233s 1949: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 1 3 4 233s 1949: # 19 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 3 4 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) void * 233s 1949: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, 233s 1949: __compar_fn_t __compar) 233s 1949: { 233s 1949: const void *__p; 233s 1949: int __comparison; 233s 1949: 233s 1949: while (__nmemb) 233s 1949: { 233s 1949: __p = (const void *) (((const char *) __base) + ((__nmemb >> 1) * __size)); 233s 1949: __comparison = (*__compar) (__key, __p); 233s 1949: if (__comparison == 0) 233s 1949: { 233s 1949: 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wcast-qual" 233s 1949: 233s 1949: return (void *) __p; 233s 1949: 233s 1949: #pragma GCC diagnostic pop 233s 1949: 233s 1949: } 233s 1949: if (__comparison > 0) 233s 1949: { 233s 1949: __base = ((const char *) __p) + __size; 233s 1949: --__nmemb; 233s 1949: } 233s 1949: __nmemb >>= 1; 233s 1949: } 233s 1949: 233s 1949: return __null; 233s 1949: } 233s 1949: # 966 "/usr/include/stdlib.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void qsort (void *__base, size_t __nmemb, size_t __size, 233s 1949: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); 233s 1949: 233s 1949: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, 233s 1949: __compar_d_fn_t __compar, void *__arg) 233s 1949: __attribute__ ((__nonnull__ (1, 4))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int abs (int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 233s 1949: extern long int labs (long int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: __extension__ extern long long int llabs (long long int __x) 233s 1949: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern unsigned int uabs (int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 233s 1949: extern unsigned long int ulabs (long int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 233s 1949: __extension__ extern unsigned long long int ullabs (long long int __x) 233s 1949: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern div_t div (int __numer, int __denom) 233s 1949: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 233s 1949: extern ldiv_t ldiv (long int __numer, long int __denom) 233s 1949: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: __extension__ extern lldiv_t lldiv (long long int __numer, 233s 1949: long long int __denom) 233s 1949: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 233s 1949: # 1018 "/usr/include/stdlib.h" 3 4 233s 1949: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, 233s 1949: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, 233s 1949: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *gcvt (double __value, int __ndigit, char *__buf) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *qecvt (long double __value, int __ndigit, 233s 1949: int *__restrict __decpt, int *__restrict __sign) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 233s 1949: extern char *qfcvt (long double __value, int __ndigit, 233s 1949: int *__restrict __decpt, int *__restrict __sign) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 233s 1949: extern char *qgcvt (long double __value, int __ndigit, char *__buf) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, 233s 1949: int *__restrict __sign, char *__restrict __buf, 233s 1949: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 233s 1949: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, 233s 1949: int *__restrict __sign, char *__restrict __buf, 233s 1949: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 233s 1949: 233s 1949: extern int qecvt_r (long double __value, int __ndigit, 233s 1949: int *__restrict __decpt, int *__restrict __sign, 233s 1949: char *__restrict __buf, size_t __len) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 233s 1949: extern int qfcvt_r (long double __value, int __ndigit, 233s 1949: int *__restrict __decpt, int *__restrict __sign, 233s 1949: char *__restrict __buf, size_t __len) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int mblen (const char *__s, size_t __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int mbtowc (wchar_t *__restrict __pwc, 233s 1949: const char *__restrict __s, size_t __n) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern int wctomb (char *__s, wchar_t __wchar) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern size_t mbstowcs (wchar_t *__restrict __pwcs, 233s 1949: const char *__restrict __s, size_t __n) noexcept (true) 233s 1949: __attribute__ ((__access__ (__read_only__, 2))); 233s 1949: 233s 1949: extern size_t wcstombs (char *__restrict __s, 233s 1949: const wchar_t *__restrict __pwcs, size_t __n) 233s 1949: noexcept (true) 233s 1949: 233s 1949: __attribute__ ((__access__ (__read_only__, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int rpmatch (const char *__response) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 233s 1949: # 1105 "/usr/include/stdlib.h" 3 4 233s 1949: extern int getsubopt (char **__restrict __optionp, 233s 1949: char *const *__restrict __tokens, 233s 1949: char **__restrict __valuep) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int grantpt (int __fd) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int unlockpt (int __fd) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *ptsname (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))) ; 233s 1949: 233s 1949: 233s 1949: extern int getpt (void); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getloadavg (double __loadavg[], int __nelem) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: # 1161 "/usr/include/stdlib.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 1 3 4 233s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 3 4 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) double 233s 1949: __attribute__ ((__leaf__)) atof (const char *__nptr) noexcept (true) 233s 1949: { 233s 1949: return strtod (__nptr, (char **) __null); 233s 1949: } 233s 1949: # 1162 "/usr/include/stdlib.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 1 3 4 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 3 4 233s 1949: extern char *__realpath_chk (const char *__restrict __name, 233s 1949: char *__restrict __resolved, 233s 1949: size_t __resolvedlen) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) noexcept (true) __asm__ ("" "realpath") 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)); 233s 1949: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) noexcept (true) __asm__ ("" "__realpath_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) 233s 1949: ; 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 233s 1949: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char * __restrict __resolved) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: size_t __sz = __builtin_dynamic_object_size (__resolved, 1); 233s 1949: 233s 1949: if (__sz == (size_t) -1) 233s 1949: return __realpath_alias (__name, __resolved); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: return __realpath_chk (__name, __resolved, __sz); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, 233s 1949: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) 233s 1949: __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ptsname_r") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ptsname_r_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) 233s 1949: ; 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) ptsname_r (int __fd, char * __buf, size_t __buflen) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__buf, 1)) && (__builtin_dynamic_object_size (__buf, 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_dynamic_object_size (__buf, 1))) / ((sizeof (char)))))) ? __ptsname_r_alias (__fd, __buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_dynamic_object_size (__buf, 1)) / (sizeof (char)))) ? __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_dynamic_object_size (__buf, 1)) : __ptsname_r_chk (__fd, __buf, __buflen, __builtin_dynamic_object_size (__buf, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) 233s 1949: noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: extern int __wctomb_alias (char *__s, wchar_t __wchar) noexcept (true) __asm__ ("" "wctomb") 233s 1949: __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int 233s 1949: __attribute__ ((__leaf__)) wctomb (char * __s, wchar_t __wchar) noexcept (true) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: if (__builtin_dynamic_object_size (__s, 1) != (size_t) -1 233s 1949: && 16 > __builtin_dynamic_object_size (__s, 1)) 233s 1949: return __wctomb_chk (__s, __wchar, __builtin_dynamic_object_size (__s, 1)); 233s 1949: return __wctomb_alias (__s, __wchar); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, 233s 1949: const char *__restrict __src, 233s 1949: size_t __len, size_t __dstlen) noexcept (true) 233s 1949: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 233s 1949: extern size_t __mbstowcs_nulldst (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__access__ (__read_only__, 2))); 233s 1949: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 233s 1949: extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) noexcept (true) __asm__ ("" "__mbstowcs_chk") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 233s 1949: ; 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 233s 1949: __attribute__ ((__leaf__)) mbstowcs (wchar_t * __restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: if (__builtin_constant_p (__dst == __null) && __dst == __null) 233s 1949: return __mbstowcs_nulldst (__dst, __src, __len); 233s 1949: else 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t)))))) ? __mbstowcs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) ? __mbstowcs_chk_warn (__dst, __src, __len, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))) : __mbstowcs_chk (__dst, __src, __len, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))))) 233s 1949: ; 233s 1949: } 233s 1949: 233s 1949: extern size_t __wcstombs_chk (char *__restrict __dst, 233s 1949: const wchar_t *__restrict __src, 233s 1949: size_t __len, size_t __dstlen) noexcept (true) 233s 1949: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 233s 1949: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "wcstombs") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 233s 1949: extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) noexcept (true) __asm__ ("" "__wcstombs_chk") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 233s 1949: __attribute__ ((__leaf__)) wcstombs (char * __restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char)))))) ? __wcstombs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) ? __wcstombs_chk_warn (__dst, __src, __len, __builtin_dynamic_object_size (__dst, 1)) : __wcstombs_chk (__dst, __src, __len, __builtin_dynamic_object_size (__dst, 1)))) 233s 1949: 233s 1949: ; 233s 1949: } 233s 1949: # 1166 "/usr/include/stdlib.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 233s 1949: # 1169 "/usr/include/stdlib.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 45 "/usr/include/c++/15/bits/std_abs.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C++" 233s 1949: { 233s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: using ::abs; 233s 1949: 233s 1949: 233s 1949: inline long 233s 1949: abs(long __i) { return __builtin_labs(__i); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: inline long long 233s 1949: abs(long long __x) { return __builtin_llabs (__x); } 233s 1949: # 76 "/usr/include/c++/15/bits/std_abs.h" 3 4 233s 1949: inline constexpr double 233s 1949: abs(double __x) 233s 1949: { return __builtin_fabs(__x); } 233s 1949: 233s 1949: inline constexpr float 233s 1949: abs(float __x) 233s 1949: { return __builtin_fabsf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: abs(long double __x) 233s 1949: { return __builtin_fabsl(__x); } 233s 1949: # 156 "/usr/include/c++/15/bits/std_abs.h" 3 4 233s 1949: 233s 1949: } 233s 1949: } 233s 1949: 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 60 "/usr/include/c++/15/cmath" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 233s 1949: # 64 "/usr/include/c++/15/cmath" 2 3 4 233s 1949: # 90 "/usr/include/c++/15/cmath" 3 4 233s 1949: extern "C++" 233s 1949: { 233s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: using ::acos; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: acos(float __x) 233s 1949: { return __builtin_acosf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: acos(long double __x) 233s 1949: { return __builtin_acosl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: acos(_Tp __x) 233s 1949: { return __builtin_acos(__x); } 233s 1949: 233s 1949: using ::asin; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: asin(float __x) 233s 1949: { return __builtin_asinf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: asin(long double __x) 233s 1949: { return __builtin_asinl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: asin(_Tp __x) 233s 1949: { return __builtin_asin(__x); } 233s 1949: 233s 1949: using ::atan; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: atan(float __x) 233s 1949: { return __builtin_atanf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: atan(long double __x) 233s 1949: { return __builtin_atanl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: atan(_Tp __x) 233s 1949: { return __builtin_atan(__x); } 233s 1949: 233s 1949: using ::atan2; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: atan2(float __y, float __x) 233s 1949: { return __builtin_atan2f(__y, __x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: atan2(long double __y, long double __x) 233s 1949: { return __builtin_atan2l(__y, __x); } 233s 1949: 233s 1949: 233s 1949: using ::ceil; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: ceil(float __x) 233s 1949: { return __builtin_ceilf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: ceil(long double __x) 233s 1949: { return __builtin_ceill(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: ceil(_Tp __x) 233s 1949: { return __builtin_ceil(__x); } 233s 1949: 233s 1949: using ::cos; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: cos(float __x) 233s 1949: { return __builtin_cosf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: cos(long double __x) 233s 1949: { return __builtin_cosl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: cos(_Tp __x) 233s 1949: { return __builtin_cos(__x); } 233s 1949: 233s 1949: using ::cosh; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: cosh(float __x) 233s 1949: { return __builtin_coshf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: cosh(long double __x) 233s 1949: { return __builtin_coshl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: cosh(_Tp __x) 233s 1949: { return __builtin_cosh(__x); } 233s 1949: 233s 1949: using ::exp; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: exp(float __x) 233s 1949: { return __builtin_expf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: exp(long double __x) 233s 1949: { return __builtin_expl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: exp(_Tp __x) 233s 1949: { return __builtin_exp(__x); } 233s 1949: 233s 1949: using ::fabs; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: fabs(float __x) 233s 1949: { return __builtin_fabsf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: fabs(long double __x) 233s 1949: { return __builtin_fabsl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: fabs(_Tp __x) 233s 1949: { return __builtin_fabs(__x); } 233s 1949: 233s 1949: using ::floor; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: floor(float __x) 233s 1949: { return __builtin_floorf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: floor(long double __x) 233s 1949: { return __builtin_floorl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: floor(_Tp __x) 233s 1949: { return __builtin_floor(__x); } 233s 1949: 233s 1949: using ::fmod; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: fmod(float __x, float __y) 233s 1949: { return __builtin_fmodf(__x, __y); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: fmod(long double __x, long double __y) 233s 1949: { return __builtin_fmodl(__x, __y); } 233s 1949: 233s 1949: 233s 1949: using ::frexp; 233s 1949: 233s 1949: 233s 1949: inline float 233s 1949: frexp(float __x, int* __exp) 233s 1949: { return __builtin_frexpf(__x, __exp); } 233s 1949: 233s 1949: inline long double 233s 1949: frexp(long double __x, int* __exp) 233s 1949: { return __builtin_frexpl(__x, __exp); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: frexp(_Tp __x, int* __exp) 233s 1949: { return __builtin_frexp(__x, __exp); } 233s 1949: 233s 1949: using ::ldexp; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: ldexp(float __x, int __exp) 233s 1949: { return __builtin_ldexpf(__x, __exp); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: ldexp(long double __x, int __exp) 233s 1949: { return __builtin_ldexpl(__x, __exp); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: ldexp(_Tp __x, int __exp) 233s 1949: { return __builtin_ldexp(__x, __exp); } 233s 1949: 233s 1949: using ::log; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: log(float __x) 233s 1949: { return __builtin_logf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: log(long double __x) 233s 1949: { return __builtin_logl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: log(_Tp __x) 233s 1949: { return __builtin_log(__x); } 233s 1949: 233s 1949: using ::log10; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: log10(float __x) 233s 1949: { return __builtin_log10f(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: log10(long double __x) 233s 1949: { return __builtin_log10l(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: log10(_Tp __x) 233s 1949: { return __builtin_log10(__x); } 233s 1949: 233s 1949: using ::modf; 233s 1949: 233s 1949: 233s 1949: inline float 233s 1949: modf(float __x, float* __iptr) 233s 1949: { return __builtin_modff(__x, __iptr); } 233s 1949: 233s 1949: inline long double 233s 1949: modf(long double __x, long double* __iptr) 233s 1949: { return __builtin_modfl(__x, __iptr); } 233s 1949: 233s 1949: 233s 1949: using ::pow; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: pow(float __x, float __y) 233s 1949: { return __builtin_powf(__x, __y); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: pow(long double __x, long double __y) 233s 1949: { return __builtin_powl(__x, __y); } 233s 1949: # 407 "/usr/include/c++/15/cmath" 3 4 233s 1949: using ::sin; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: sin(float __x) 233s 1949: { return __builtin_sinf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: sin(long double __x) 233s 1949: { return __builtin_sinl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: sin(_Tp __x) 233s 1949: { return __builtin_sin(__x); } 233s 1949: 233s 1949: using ::sinh; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: sinh(float __x) 233s 1949: { return __builtin_sinhf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: sinh(long double __x) 233s 1949: { return __builtin_sinhl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: sinh(_Tp __x) 233s 1949: { return __builtin_sinh(__x); } 233s 1949: 233s 1949: using ::sqrt; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: sqrt(float __x) 233s 1949: { return __builtin_sqrtf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: sqrt(long double __x) 233s 1949: { return __builtin_sqrtl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: sqrt(_Tp __x) 233s 1949: { return __builtin_sqrt(__x); } 233s 1949: 233s 1949: using ::tan; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: tan(float __x) 233s 1949: { return __builtin_tanf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: tan(long double __x) 233s 1949: { return __builtin_tanl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: tan(_Tp __x) 233s 1949: { return __builtin_tan(__x); } 233s 1949: 233s 1949: using ::tanh; 233s 1949: 233s 1949: 233s 1949: inline constexpr float 233s 1949: tanh(float __x) 233s 1949: { return __builtin_tanhf(__x); } 233s 1949: 233s 1949: inline constexpr long double 233s 1949: tanh(long double __x) 233s 1949: { return __builtin_tanhl(__x); } 233s 1949: 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: tanh(_Tp __x) 233s 1949: { return __builtin_tanh(__x); } 233s 1949: # 1060 "/usr/include/c++/15/cmath" 3 4 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: atan2(_Tp __y, _Up __x) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return atan2(__type(__y), __type(__x)); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: fmod(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return fmod(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: inline constexpr 233s 1949: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: pow(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return pow(__type(__x), __type(__y)); 233s 1949: } 233s 1949: # 1107 "/usr/include/c++/15/cmath" 3 4 233s 1949: constexpr int 233s 1949: fpclassify(float __x) 233s 1949: { return __builtin_fpclassify(0, 1, 4, 233s 1949: 3, 2, __x); } 233s 1949: 233s 1949: constexpr int 233s 1949: fpclassify(double __x) 233s 1949: { return __builtin_fpclassify(0, 1, 4, 233s 1949: 3, 2, __x); } 233s 1949: 233s 1949: constexpr int 233s 1949: fpclassify(long double __x) 233s 1949: { return __builtin_fpclassify(0, 1, 4, 233s 1949: 3, 2, __x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: int>::__type 233s 1949: fpclassify(_Tp __x) 233s 1949: { return __x != 0 ? 4 : 2; } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isfinite(float __x) 233s 1949: { return __builtin_isfinite(__x); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isfinite(double __x) 233s 1949: { return __builtin_isfinite(__x); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isfinite(long double __x) 233s 1949: { return __builtin_isfinite(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: bool>::__type 233s 1949: isfinite(_Tp) 233s 1949: { return true; } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isinf(float __x) 233s 1949: { return __builtin_isinf(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isinf(double __x) 233s 1949: { return __builtin_isinf(__x); } 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isinf(long double __x) 233s 1949: { return __builtin_isinf(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: bool>::__type 233s 1949: isinf(_Tp) 233s 1949: { return false; } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isnan(float __x) 233s 1949: { return __builtin_isnan(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isnan(double __x) 233s 1949: { return __builtin_isnan(__x); } 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isnan(long double __x) 233s 1949: { return __builtin_isnan(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: bool>::__type 233s 1949: isnan(_Tp) 233s 1949: { return false; } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isnormal(float __x) 233s 1949: { return __builtin_isnormal(__x); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isnormal(double __x) 233s 1949: { return __builtin_isnormal(__x); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isnormal(long double __x) 233s 1949: { return __builtin_isnormal(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: bool>::__type 233s 1949: isnormal(_Tp __x) 233s 1949: { return __x != 0 ? true : false; } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: signbit(float __x) 233s 1949: { return __builtin_signbit(__x); } 233s 1949: 233s 1949: constexpr bool 233s 1949: signbit(double __x) 233s 1949: { return __builtin_signbit(__x); } 233s 1949: 233s 1949: constexpr bool 233s 1949: signbit(long double __x) 233s 1949: { return __builtin_signbit(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: bool>::__type 233s 1949: signbit(_Tp __x) 233s 1949: { return __x < 0 ? true : false; } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isgreater(float __x, float __y) 233s 1949: { return __builtin_isgreater(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isgreater(double __x, double __y) 233s 1949: { return __builtin_isgreater(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isgreater(long double __x, long double __y) 233s 1949: { return __builtin_isgreater(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename 233s 1949: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 233s 1949: && __is_arithmetic<_Up>::__value), bool>::__type 233s 1949: isgreater(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return __builtin_isgreater(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isgreaterequal(float __x, float __y) 233s 1949: { return __builtin_isgreaterequal(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isgreaterequal(double __x, double __y) 233s 1949: { return __builtin_isgreaterequal(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isgreaterequal(long double __x, long double __y) 233s 1949: { return __builtin_isgreaterequal(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename 233s 1949: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 233s 1949: && __is_arithmetic<_Up>::__value), bool>::__type 233s 1949: isgreaterequal(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return __builtin_isgreaterequal(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isless(float __x, float __y) 233s 1949: { return __builtin_isless(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isless(double __x, double __y) 233s 1949: { return __builtin_isless(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isless(long double __x, long double __y) 233s 1949: { return __builtin_isless(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename 233s 1949: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 233s 1949: && __is_arithmetic<_Up>::__value), bool>::__type 233s 1949: isless(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return __builtin_isless(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: islessequal(float __x, float __y) 233s 1949: { return __builtin_islessequal(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: islessequal(double __x, double __y) 233s 1949: { return __builtin_islessequal(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: islessequal(long double __x, long double __y) 233s 1949: { return __builtin_islessequal(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename 233s 1949: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 233s 1949: && __is_arithmetic<_Up>::__value), bool>::__type 233s 1949: islessequal(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return __builtin_islessequal(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: islessgreater(float __x, float __y) 233s 1949: { return __builtin_islessgreater(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: islessgreater(double __x, double __y) 233s 1949: { return __builtin_islessgreater(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: islessgreater(long double __x, long double __y) 233s 1949: { return __builtin_islessgreater(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename 233s 1949: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 233s 1949: && __is_arithmetic<_Up>::__value), bool>::__type 233s 1949: islessgreater(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return __builtin_islessgreater(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr bool 233s 1949: isunordered(float __x, float __y) 233s 1949: { return __builtin_isunordered(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isunordered(double __x, double __y) 233s 1949: { return __builtin_isunordered(__x, __y); } 233s 1949: 233s 1949: constexpr bool 233s 1949: isunordered(long double __x, long double __y) 233s 1949: { return __builtin_isunordered(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename 233s 1949: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 233s 1949: && __is_arithmetic<_Up>::__value), bool>::__type 233s 1949: isunordered(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return __builtin_isunordered(__type(__x), __type(__y)); 233s 1949: } 233s 1949: # 1827 "/usr/include/c++/15/cmath" 3 4 233s 1949: using ::acosf; 233s 1949: 233s 1949: 233s 1949: using ::acosl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::asinf; 233s 1949: 233s 1949: 233s 1949: using ::asinl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::atanf; 233s 1949: 233s 1949: 233s 1949: using ::atanl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::atan2f; 233s 1949: 233s 1949: 233s 1949: using ::atan2l; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::ceilf; 233s 1949: 233s 1949: 233s 1949: using ::ceill; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::cosf; 233s 1949: 233s 1949: 233s 1949: using ::cosl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::coshf; 233s 1949: 233s 1949: 233s 1949: using ::coshl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::expf; 233s 1949: 233s 1949: 233s 1949: using ::expl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::fabsf; 233s 1949: 233s 1949: 233s 1949: using ::fabsl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::floorf; 233s 1949: 233s 1949: 233s 1949: using ::floorl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::fmodf; 233s 1949: 233s 1949: 233s 1949: using ::fmodl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::frexpf; 233s 1949: 233s 1949: 233s 1949: using ::frexpl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::ldexpf; 233s 1949: 233s 1949: 233s 1949: using ::ldexpl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::logf; 233s 1949: 233s 1949: 233s 1949: using ::logl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::log10f; 233s 1949: 233s 1949: 233s 1949: using ::log10l; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::modff; 233s 1949: 233s 1949: 233s 1949: using ::modfl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::powf; 233s 1949: 233s 1949: 233s 1949: using ::powl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::sinf; 233s 1949: 233s 1949: 233s 1949: using ::sinl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::sinhf; 233s 1949: 233s 1949: 233s 1949: using ::sinhl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::sqrtf; 233s 1949: 233s 1949: 233s 1949: using ::sqrtl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::tanf; 233s 1949: 233s 1949: 233s 1949: using ::tanl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::tanhf; 233s 1949: 233s 1949: 233s 1949: using ::tanhl; 233s 1949: # 2092 "/usr/include/c++/15/cmath" 3 4 233s 1949: using ::double_t; 233s 1949: using ::float_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::acosh; 233s 1949: using ::acoshf; 233s 1949: using ::acoshl; 233s 1949: 233s 1949: using ::asinh; 233s 1949: using ::asinhf; 233s 1949: using ::asinhl; 233s 1949: 233s 1949: using ::atanh; 233s 1949: using ::atanhf; 233s 1949: using ::atanhl; 233s 1949: 233s 1949: using ::cbrt; 233s 1949: using ::cbrtf; 233s 1949: using ::cbrtl; 233s 1949: 233s 1949: using ::copysign; 233s 1949: using ::copysignf; 233s 1949: using ::copysignl; 233s 1949: 233s 1949: using ::erf; 233s 1949: using ::erff; 233s 1949: using ::erfl; 233s 1949: 233s 1949: using ::erfc; 233s 1949: using ::erfcf; 233s 1949: using ::erfcl; 233s 1949: 233s 1949: using ::exp2; 233s 1949: using ::exp2f; 233s 1949: using ::exp2l; 233s 1949: 233s 1949: using ::expm1; 233s 1949: using ::expm1f; 233s 1949: using ::expm1l; 233s 1949: 233s 1949: using ::fdim; 233s 1949: using ::fdimf; 233s 1949: using ::fdiml; 233s 1949: 233s 1949: using ::fma; 233s 1949: using ::fmaf; 233s 1949: using ::fmal; 233s 1949: 233s 1949: using ::fmax; 233s 1949: using ::fmaxf; 233s 1949: using ::fmaxl; 233s 1949: 233s 1949: using ::fmin; 233s 1949: using ::fminf; 233s 1949: using ::fminl; 233s 1949: 233s 1949: using ::hypot; 233s 1949: using ::hypotf; 233s 1949: using ::hypotl; 233s 1949: 233s 1949: using ::ilogb; 233s 1949: using ::ilogbf; 233s 1949: using ::ilogbl; 233s 1949: 233s 1949: using ::lgamma; 233s 1949: using ::lgammaf; 233s 1949: using ::lgammal; 233s 1949: 233s 1949: 233s 1949: using ::llrint; 233s 1949: using ::llrintf; 233s 1949: using ::llrintl; 233s 1949: 233s 1949: using ::llround; 233s 1949: using ::llroundf; 233s 1949: using ::llroundl; 233s 1949: 233s 1949: 233s 1949: using ::log1p; 233s 1949: using ::log1pf; 233s 1949: using ::log1pl; 233s 1949: 233s 1949: using ::log2; 233s 1949: using ::log2f; 233s 1949: using ::log2l; 233s 1949: 233s 1949: using ::logb; 233s 1949: using ::logbf; 233s 1949: using ::logbl; 233s 1949: 233s 1949: using ::lrint; 233s 1949: using ::lrintf; 233s 1949: using ::lrintl; 233s 1949: 233s 1949: using ::lround; 233s 1949: using ::lroundf; 233s 1949: using ::lroundl; 233s 1949: 233s 1949: using ::nan; 233s 1949: using ::nanf; 233s 1949: using ::nanl; 233s 1949: 233s 1949: using ::nearbyint; 233s 1949: using ::nearbyintf; 233s 1949: using ::nearbyintl; 233s 1949: 233s 1949: using ::nextafter; 233s 1949: using ::nextafterf; 233s 1949: using ::nextafterl; 233s 1949: 233s 1949: using ::nexttoward; 233s 1949: using ::nexttowardf; 233s 1949: using ::nexttowardl; 233s 1949: 233s 1949: using ::remainder; 233s 1949: using ::remainderf; 233s 1949: using ::remainderl; 233s 1949: 233s 1949: using ::remquo; 233s 1949: using ::remquof; 233s 1949: using ::remquol; 233s 1949: 233s 1949: using ::rint; 233s 1949: using ::rintf; 233s 1949: using ::rintl; 233s 1949: 233s 1949: using ::round; 233s 1949: using ::roundf; 233s 1949: using ::roundl; 233s 1949: 233s 1949: using ::scalbln; 233s 1949: using ::scalblnf; 233s 1949: using ::scalblnl; 233s 1949: 233s 1949: using ::scalbn; 233s 1949: using ::scalbnf; 233s 1949: using ::scalbnl; 233s 1949: 233s 1949: using ::tgamma; 233s 1949: using ::tgammaf; 233s 1949: using ::tgammal; 233s 1949: 233s 1949: using ::trunc; 233s 1949: using ::truncf; 233s 1949: using ::truncl; 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: acosh(float __x) 233s 1949: { return __builtin_acoshf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: acosh(long double __x) 233s 1949: { return __builtin_acoshl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: acosh(_Tp __x) 233s 1949: { return __builtin_acosh(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: asinh(float __x) 233s 1949: { return __builtin_asinhf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: asinh(long double __x) 233s 1949: { return __builtin_asinhl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: asinh(_Tp __x) 233s 1949: { return __builtin_asinh(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: atanh(float __x) 233s 1949: { return __builtin_atanhf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: atanh(long double __x) 233s 1949: { return __builtin_atanhl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: atanh(_Tp __x) 233s 1949: { return __builtin_atanh(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: cbrt(float __x) 233s 1949: { return __builtin_cbrtf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: cbrt(long double __x) 233s 1949: { return __builtin_cbrtl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: cbrt(_Tp __x) 233s 1949: { return __builtin_cbrt(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: copysign(float __x, float __y) 233s 1949: { return __builtin_copysignf(__x, __y); } 233s 1949: 233s 1949: constexpr long double 233s 1949: copysign(long double __x, long double __y) 233s 1949: { return __builtin_copysignl(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: erf(float __x) 233s 1949: { return __builtin_erff(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: erf(long double __x) 233s 1949: { return __builtin_erfl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: erf(_Tp __x) 233s 1949: { return __builtin_erf(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: erfc(float __x) 233s 1949: { return __builtin_erfcf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: erfc(long double __x) 233s 1949: { return __builtin_erfcl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: erfc(_Tp __x) 233s 1949: { return __builtin_erfc(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: exp2(float __x) 233s 1949: { return __builtin_exp2f(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: exp2(long double __x) 233s 1949: { return __builtin_exp2l(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: exp2(_Tp __x) 233s 1949: { return __builtin_exp2(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: expm1(float __x) 233s 1949: { return __builtin_expm1f(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: expm1(long double __x) 233s 1949: { return __builtin_expm1l(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: expm1(_Tp __x) 233s 1949: { return __builtin_expm1(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: fdim(float __x, float __y) 233s 1949: { return __builtin_fdimf(__x, __y); } 233s 1949: 233s 1949: constexpr long double 233s 1949: fdim(long double __x, long double __y) 233s 1949: { return __builtin_fdiml(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: fma(float __x, float __y, float __z) 233s 1949: { return __builtin_fmaf(__x, __y, __z); } 233s 1949: 233s 1949: constexpr long double 233s 1949: fma(long double __x, long double __y, long double __z) 233s 1949: { return __builtin_fmal(__x, __y, __z); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: fmax(float __x, float __y) 233s 1949: { return __builtin_fmaxf(__x, __y); } 233s 1949: 233s 1949: constexpr long double 233s 1949: fmax(long double __x, long double __y) 233s 1949: { return __builtin_fmaxl(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: fmin(float __x, float __y) 233s 1949: { return __builtin_fminf(__x, __y); } 233s 1949: 233s 1949: constexpr long double 233s 1949: fmin(long double __x, long double __y) 233s 1949: { return __builtin_fminl(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: hypot(float __x, float __y) 233s 1949: { return __builtin_hypotf(__x, __y); } 233s 1949: 233s 1949: constexpr long double 233s 1949: hypot(long double __x, long double __y) 233s 1949: { return __builtin_hypotl(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr int 233s 1949: ilogb(float __x) 233s 1949: { return __builtin_ilogbf(__x); } 233s 1949: 233s 1949: constexpr int 233s 1949: ilogb(long double __x) 233s 1949: { return __builtin_ilogbl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr 233s 1949: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: int>::__type 233s 1949: ilogb(_Tp __x) 233s 1949: { return __builtin_ilogb(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: lgamma(float __x) 233s 1949: { return __builtin_lgammaf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: lgamma(long double __x) 233s 1949: { return __builtin_lgammal(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: lgamma(_Tp __x) 233s 1949: { return __builtin_lgamma(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr long long 233s 1949: llrint(float __x) 233s 1949: { return __builtin_llrintf(__x); } 233s 1949: 233s 1949: constexpr long long 233s 1949: llrint(long double __x) 233s 1949: { return __builtin_llrintl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: long long>::__type 233s 1949: llrint(_Tp __x) 233s 1949: { return __builtin_llrint(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr long long 233s 1949: llround(float __x) 233s 1949: { return __builtin_llroundf(__x); } 233s 1949: 233s 1949: constexpr long long 233s 1949: llround(long double __x) 233s 1949: { return __builtin_llroundl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: long long>::__type 233s 1949: llround(_Tp __x) 233s 1949: { return __builtin_llround(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: log1p(float __x) 233s 1949: { return __builtin_log1pf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: log1p(long double __x) 233s 1949: { return __builtin_log1pl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: log1p(_Tp __x) 233s 1949: { return __builtin_log1p(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: log2(float __x) 233s 1949: { return __builtin_log2f(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: log2(long double __x) 233s 1949: { return __builtin_log2l(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: log2(_Tp __x) 233s 1949: { return __builtin_log2(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: logb(float __x) 233s 1949: { return __builtin_logbf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: logb(long double __x) 233s 1949: { return __builtin_logbl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: logb(_Tp __x) 233s 1949: { return __builtin_logb(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr long 233s 1949: lrint(float __x) 233s 1949: { return __builtin_lrintf(__x); } 233s 1949: 233s 1949: constexpr long 233s 1949: lrint(long double __x) 233s 1949: { return __builtin_lrintl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: long>::__type 233s 1949: lrint(_Tp __x) 233s 1949: { return __builtin_lrint(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr long 233s 1949: lround(float __x) 233s 1949: { return __builtin_lroundf(__x); } 233s 1949: 233s 1949: constexpr long 233s 1949: lround(long double __x) 233s 1949: { return __builtin_lroundl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: long>::__type 233s 1949: lround(_Tp __x) 233s 1949: { return __builtin_lround(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: nearbyint(float __x) 233s 1949: { return __builtin_nearbyintf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: nearbyint(long double __x) 233s 1949: { return __builtin_nearbyintl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: nearbyint(_Tp __x) 233s 1949: { return __builtin_nearbyint(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: nextafter(float __x, float __y) 233s 1949: { return __builtin_nextafterf(__x, __y); } 233s 1949: 233s 1949: constexpr long double 233s 1949: nextafter(long double __x, long double __y) 233s 1949: { return __builtin_nextafterl(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: nexttoward(float __x, long double __y) 233s 1949: { return __builtin_nexttowardf(__x, __y); } 233s 1949: 233s 1949: constexpr long double 233s 1949: nexttoward(long double __x, long double __y) 233s 1949: { return __builtin_nexttowardl(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: nexttoward(_Tp __x, long double __y) 233s 1949: { return __builtin_nexttoward(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: remainder(float __x, float __y) 233s 1949: { return __builtin_remainderf(__x, __y); } 233s 1949: 233s 1949: constexpr long double 233s 1949: remainder(long double __x, long double __y) 233s 1949: { return __builtin_remainderl(__x, __y); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: inline float 233s 1949: remquo(float __x, float __y, int* __pquo) 233s 1949: { return __builtin_remquof(__x, __y, __pquo); } 233s 1949: 233s 1949: inline long double 233s 1949: remquo(long double __x, long double __y, int* __pquo) 233s 1949: { return __builtin_remquol(__x, __y, __pquo); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: rint(float __x) 233s 1949: { return __builtin_rintf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: rint(long double __x) 233s 1949: { return __builtin_rintl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: rint(_Tp __x) 233s 1949: { return __builtin_rint(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: round(float __x) 233s 1949: { return __builtin_roundf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: round(long double __x) 233s 1949: { return __builtin_roundl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: round(_Tp __x) 233s 1949: { return __builtin_round(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: scalbln(float __x, long __ex) 233s 1949: { return __builtin_scalblnf(__x, __ex); } 233s 1949: 233s 1949: constexpr long double 233s 1949: scalbln(long double __x, long __ex) 233s 1949: { return __builtin_scalblnl(__x, __ex); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: scalbln(_Tp __x, long __ex) 233s 1949: { return __builtin_scalbln(__x, __ex); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: scalbn(float __x, int __ex) 233s 1949: { return __builtin_scalbnf(__x, __ex); } 233s 1949: 233s 1949: constexpr long double 233s 1949: scalbn(long double __x, int __ex) 233s 1949: { return __builtin_scalbnl(__x, __ex); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: scalbn(_Tp __x, int __ex) 233s 1949: { return __builtin_scalbn(__x, __ex); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: tgamma(float __x) 233s 1949: { return __builtin_tgammaf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: tgamma(long double __x) 233s 1949: { return __builtin_tgammal(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: tgamma(_Tp __x) 233s 1949: { return __builtin_tgamma(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: constexpr float 233s 1949: trunc(float __x) 233s 1949: { return __builtin_truncf(__x); } 233s 1949: 233s 1949: constexpr long double 233s 1949: trunc(long double __x) 233s 1949: { return __builtin_truncl(__x); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 233s 1949: double>::__type 233s 1949: trunc(_Tp __x) 233s 1949: { return __builtin_trunc(__x); } 233s 1949: # 3689 "/usr/include/c++/15/cmath" 3 4 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: copysign(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return copysign(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: fdim(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return fdim(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: fmax(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return fmax(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: fmin(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return fmin(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: hypot(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return hypot(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: nextafter(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return nextafter(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: remainder(_Tp __x, _Up __y) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return remainder(__type(__x), __type(__y)); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 233s 1949: remquo(_Tp __x, _Up __y, int* __pquo) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 233s 1949: return remquo(__type(__x), __type(__y), __pquo); 233s 1949: } 233s 1949: 233s 1949: template 233s 1949: constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type 233s 1949: fma(_Tp __x, _Up __y, _Vp __z) 233s 1949: { 233s 1949: typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; 233s 1949: return fma(__type(__x), __type(__y), __type(__z)); 233s 1949: } 233s 1949: # 3909 "/usr/include/c++/15/cmath" 3 4 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 3152 "/usr/include/doctest/doctest.h" 2 3 4 233s 1949: # 1 "/usr/include/c++/15/climits" 1 3 4 233s 1949: # 47 "/usr/include/c++/15/climits" 3 4 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 1 3 4 233s 1949: # 34 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 3 4 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/syslimits.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wpedantic" 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 1 3 4 233s 1949: # 210 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 3 4 233s 1949: # 1 "/usr/include/limits.h" 1 3 4 233s 1949: # 26 "/usr/include/limits.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 233s 1949: # 27 "/usr/include/limits.h" 2 3 4 233s 1949: # 195 "/usr/include/limits.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 233s 1949: # 28 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4 233s 1949: # 161 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 1 3 4 233s 1949: # 38 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 3 4 233s 1949: # 1 "/usr/include/linux/limits.h" 1 3 4 233s 1949: # 39 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 2 3 4 233s 1949: # 81 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthread_stack_min-dynamic.h" 1 3 4 233s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthread_stack_min-dynamic.h" 3 4 233s 1949: extern "C" { 233s 1949: extern long int __sysconf (int __name) noexcept (true); 233s 1949: } 233s 1949: # 82 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 2 3 4 233s 1949: # 162 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4 233s 1949: # 196 "/usr/include/limits.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix2_lim.h" 1 3 4 233s 1949: # 200 "/usr/include/limits.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 1 3 4 233s 1949: # 64 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/uio_lim.h" 1 3 4 233s 1949: # 65 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 2 3 4 233s 1949: # 204 "/usr/include/limits.h" 2 3 4 233s 1949: # 211 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 2 3 4 233s 1949: # 10 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/syslimits.h" 2 3 4 233s 1949: 233s 1949: # 10 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/syslimits.h" 3 4 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 35 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/limits.h" 2 3 4 233s 1949: # 48 "/usr/include/c++/15/climits" 2 3 4 233s 1949: 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 233s 1949: # 64 "/usr/include/c++/15/climits" 3 4 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 3153 "/usr/include/doctest/doctest.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/c++/15/new" 1 3 4 233s 1949: # 43 "/usr/include/c++/15/new" 3 4 233s 1949: # 1 "/usr/include/c++/15/bits/exception.h" 1 3 4 233s 1949: # 40 "/usr/include/c++/15/bits/exception.h" 3 4 233s 1949: extern "C++" { 233s 1949: 233s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: # 61 "/usr/include/c++/15/bits/exception.h" 3 4 233s 1949: class exception 233s 1949: { 233s 1949: public: 233s 1949: exception() noexcept { } 233s 1949: virtual ~exception() noexcept; 233s 1949: 233s 1949: exception(const exception&) = default; 233s 1949: exception& operator=(const exception&) = default; 233s 1949: exception(exception&&) = default; 233s 1949: exception& operator=(exception&&) = default; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: virtual const char* 233s 1949: what() const noexcept; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: # 44 "/usr/include/c++/15/new" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 233s 1949: # 50 "/usr/include/c++/15/new" 2 3 4 233s 1949: 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 233s 1949: 233s 1949: #pragma GCC visibility push(default) 233s 1949: 233s 1949: extern "C++" { 233s 1949: 233s 1949: namespace std 233s 1949: { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: class bad_alloc : public exception 233s 1949: { 233s 1949: public: 233s 1949: bad_alloc() throw() { } 233s 1949: 233s 1949: 233s 1949: bad_alloc(const bad_alloc&) = default; 233s 1949: bad_alloc& operator=(const bad_alloc&) = default; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: virtual ~bad_alloc() throw(); 233s 1949: 233s 1949: 233s 1949: virtual const char* what() const throw(); 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: class bad_array_new_length : public bad_alloc 233s 1949: { 233s 1949: public: 233s 1949: bad_array_new_length() throw() { } 233s 1949: 233s 1949: 233s 1949: 233s 1949: virtual ~bad_array_new_length() throw(); 233s 1949: 233s 1949: 233s 1949: virtual const char* what() const throw(); 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct nothrow_t 233s 1949: { 233s 1949: 233s 1949: explicit nothrow_t() = default; 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: extern const nothrow_t nothrow; 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef void (*new_handler)(); 233s 1949: 233s 1949: 233s 1949: 233s 1949: new_handler set_new_handler(new_handler) throw(); 233s 1949: 233s 1949: 233s 1949: 233s 1949: new_handler get_new_handler() noexcept; 233s 1949: 233s 1949: } 233s 1949: # 137 "/usr/include/c++/15/new" 3 4 233s 1949: [[__nodiscard__]] void* operator new(std::size_t) 233s 1949: 233s 1949: __attribute__((__externally_visible__, __malloc__)); 233s 1949: [[__nodiscard__]] void* operator new[](std::size_t) 233s 1949: 233s 1949: __attribute__((__externally_visible__, __malloc__)); 233s 1949: void operator delete(void*) noexcept 233s 1949: __attribute__((__externally_visible__)); 233s 1949: void operator delete[](void*) noexcept 233s 1949: __attribute__((__externally_visible__)); 233s 1949: 233s 1949: void operator delete(void*, std::size_t) 233s 1949: noexcept 233s 1949: __attribute__((__externally_visible__)); 233s 1949: void operator delete[](void*, std::size_t) 233s 1949: noexcept 233s 1949: __attribute__((__externally_visible__)); 233s 1949: 233s 1949: [[__nodiscard__]] void* operator new(std::size_t, const std::nothrow_t&) 233s 1949: noexcept 233s 1949: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); 233s 1949: [[__nodiscard__]] void* operator new[](std::size_t, const std::nothrow_t&) 233s 1949: noexcept 233s 1949: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); 233s 1949: void operator delete(void*, const std::nothrow_t&) 233s 1949: noexcept 233s 1949: __attribute__((__externally_visible__)); 233s 1949: void operator delete[](void*, const std::nothrow_t&) 233s 1949: noexcept 233s 1949: __attribute__((__externally_visible__)); 233s 1949: # 205 "/usr/include/c++/15/new" 3 4 233s 1949: [[__nodiscard__]] inline 233s 1949: void* operator new(std::size_t, void* __p) 233s 1949: noexcept 233s 1949: { return __p; } 233s 1949: [[__nodiscard__]] inline 233s 1949: void* operator new[](std::size_t, void* __p) 233s 1949: noexcept 233s 1949: { return __p; } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: inline void operator delete (void*, void*) 233s 1949: noexcept 233s 1949: { } 233s 1949: inline void operator delete[](void*, void*) 233s 1949: noexcept 233s 1949: { } 233s 1949: 233s 1949: } 233s 1949: 233s 1949: namespace std 233s 1949: { 233s 1949: # 264 "/usr/include/c++/15/new" 3 4 233s 1949: } 233s 1949: 233s 1949: #pragma GCC visibility pop 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 3158 "/usr/include/doctest/doctest.h" 2 3 4 233s 1949: # 1 "/usr/include/c++/15/cstdio" 1 3 4 233s 1949: # 47 "/usr/include/c++/15/cstdio" 3 4 233s 1949: # 1 "/usr/include/stdio.h" 1 3 4 233s 1949: # 28 "/usr/include/stdio.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 233s 1949: # 29 "/usr/include/stdio.h" 2 3 4 233s 1949: 233s 1949: extern "C" { 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 35 "/usr/include/stdio.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdarg.h" 1 3 4 233s 1949: # 40 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdarg.h" 3 4 233s 1949: typedef __builtin_va_list __gnuc_va_list; 233s 1949: # 38 "/usr/include/stdio.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 1 3 4 233s 1949: # 13 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 3 4 233s 1949: typedef struct 233s 1949: { 233s 1949: int __count; 233s 1949: union 233s 1949: { 233s 1949: unsigned int __wch; 233s 1949: char __wchb[4]; 233s 1949: } __value; 233s 1949: } __mbstate_t; 233s 1949: # 6 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef struct _G_fpos_t 233s 1949: { 233s 1949: __off_t __pos; 233s 1949: __mbstate_t __state; 233s 1949: } __fpos_t; 233s 1949: # 41 "/usr/include/stdio.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h" 1 3 4 233s 1949: # 10 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h" 3 4 233s 1949: typedef struct _G_fpos64_t 233s 1949: { 233s 1949: __off64_t __pos; 233s 1949: __mbstate_t __state; 233s 1949: } __fpos64_t; 233s 1949: # 42 "/usr/include/stdio.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__FILE.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct _IO_FILE; 233s 1949: typedef struct _IO_FILE __FILE; 233s 1949: # 43 "/usr/include/stdio.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/FILE.h" 1 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct _IO_FILE; 233s 1949: 233s 1949: 233s 1949: typedef struct _IO_FILE FILE; 233s 1949: # 44 "/usr/include/stdio.h" 2 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 1 3 4 233s 1949: # 35 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 233s 1949: # 36 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 2 3 4 233s 1949: 233s 1949: struct _IO_FILE; 233s 1949: struct _IO_marker; 233s 1949: struct _IO_codecvt; 233s 1949: struct _IO_wide_data; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef void _IO_lock_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct _IO_FILE 233s 1949: { 233s 1949: int _flags; 233s 1949: 233s 1949: 233s 1949: char *_IO_read_ptr; 233s 1949: char *_IO_read_end; 233s 1949: char *_IO_read_base; 233s 1949: char *_IO_write_base; 233s 1949: char *_IO_write_ptr; 233s 1949: char *_IO_write_end; 233s 1949: char *_IO_buf_base; 233s 1949: char *_IO_buf_end; 233s 1949: 233s 1949: 233s 1949: char *_IO_save_base; 233s 1949: char *_IO_backup_base; 233s 1949: char *_IO_save_end; 233s 1949: 233s 1949: struct _IO_marker *_markers; 233s 1949: 233s 1949: struct _IO_FILE *_chain; 233s 1949: 233s 1949: int _fileno; 233s 1949: int _flags2:24; 233s 1949: 233s 1949: char _short_backupbuf[1]; 233s 1949: __off_t _old_offset; 233s 1949: 233s 1949: 233s 1949: unsigned short _cur_column; 233s 1949: signed char _vtable_offset; 233s 1949: char _shortbuf[1]; 233s 1949: 233s 1949: _IO_lock_t *_lock; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __off64_t _offset; 233s 1949: 233s 1949: struct _IO_codecvt *_codecvt; 233s 1949: struct _IO_wide_data *_wide_data; 233s 1949: struct _IO_FILE *_freeres_list; 233s 1949: void *_freeres_buf; 233s 1949: struct _IO_FILE **_prevchain; 233s 1949: int _mode; 233s 1949: 233s 1949: 233s 1949: 233s 1949: __uint64_t _total_written; 233s 1949: 233s 1949: int _unused3; 233s 1949: 233s 1949: 233s 1949: char _unused2[12 * sizeof (int) - 5 * sizeof (void *)]; 233s 1949: }; 233s 1949: # 45 "/usr/include/stdio.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/cookie_io_functions_t.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/cookie_io_functions_t.h" 3 4 233s 1949: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, 233s 1949: size_t __nbytes); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, 233s 1949: size_t __nbytes); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); 233s 1949: 233s 1949: 233s 1949: typedef int cookie_close_function_t (void *__cookie); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef struct _IO_cookie_io_functions_t 233s 1949: { 233s 1949: cookie_read_function_t *read; 233s 1949: cookie_write_function_t *write; 233s 1949: cookie_seek_function_t *seek; 233s 1949: cookie_close_function_t *close; 233s 1949: } cookie_io_functions_t; 233s 1949: # 48 "/usr/include/stdio.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: typedef __gnuc_va_list va_list; 233s 1949: # 87 "/usr/include/stdio.h" 3 4 233s 1949: typedef __fpos64_t fpos_t; 233s 1949: 233s 1949: 233s 1949: typedef __fpos64_t fpos64_t; 233s 1949: # 129 "/usr/include/stdio.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h" 1 3 4 233s 1949: # 130 "/usr/include/stdio.h" 2 3 4 233s 1949: # 149 "/usr/include/stdio.h" 3 4 233s 1949: extern FILE *stdin; 233s 1949: extern FILE *stdout; 233s 1949: extern FILE *stderr; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int remove (const char *__filename) noexcept (true); 233s 1949: 233s 1949: extern int rename (const char *__old, const char *__new) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int renameat (int __oldfd, const char *__old, int __newfd, 233s 1949: const char *__new) noexcept (true); 233s 1949: # 179 "/usr/include/stdio.h" 3 4 233s 1949: extern int renameat2 (int __oldfd, const char *__old, int __newfd, 233s 1949: const char *__new, unsigned int __flags) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); 233s 1949: # 201 "/usr/include/stdio.h" 3 4 233s 1949: extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") 233s 1949: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern FILE *tmpfile64 (void) 233s 1949: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *tmpnam (char[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *tmpnam_r (char __s[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); 233s 1949: # 231 "/usr/include/stdio.h" 3 4 233s 1949: extern char *tempnam (const char *__dir, const char *__pfx) 233s 1949: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fflush (FILE *__stream); 233s 1949: # 248 "/usr/include/stdio.h" 3 4 233s 1949: extern int fflush_unlocked (FILE *__stream); 233s 1949: # 258 "/usr/include/stdio.h" 3 4 233s 1949: extern int fcloseall (void); 233s 1949: # 279 "/usr/include/stdio.h" 3 4 233s 1949: extern FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) __asm__ ("" "fopen64") 233s 1949: 233s 1949: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 233s 1949: extern FILE *freopen (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern FILE *fopen64 (const char *__restrict __filename, 233s 1949: const char *__restrict __modes) 233s 1949: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 233s 1949: extern FILE *freopen64 (const char *__restrict __filename, 233s 1949: const char *__restrict __modes, 233s 1949: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern FILE *fdopen (int __fd, const char *__modes) noexcept (true) 233s 1949: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern FILE *fopencookie (void *__restrict __magic_cookie, 233s 1949: const char *__restrict __modes, 233s 1949: cookie_io_functions_t __io_funcs) noexcept (true) 233s 1949: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) 233s 1949: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) noexcept (true) 233s 1949: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 233s 1949: # 337 "/usr/include/stdio.h" 3 4 233s 1949: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) noexcept (true) 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, 233s 1949: int __modes, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, 233s 1949: size_t __size) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern void setlinebuf (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fprintf (FILE *__restrict __stream, 233s 1949: const char *__restrict __format, ...) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int printf (const char *__restrict __format, ...); 233s 1949: 233s 1949: extern int sprintf (char *__restrict __s, 233s 1949: const char *__restrict __format, ...) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, 233s 1949: __gnuc_va_list __arg) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); 233s 1949: 233s 1949: extern int vsprintf (char *__restrict __s, const char *__restrict __format, 233s 1949: __gnuc_va_list __arg) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int snprintf (char *__restrict __s, size_t __maxlen, 233s 1949: const char *__restrict __format, ...) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); 233s 1949: 233s 1949: extern int vsnprintf (char *__restrict __s, size_t __maxlen, 233s 1949: const char *__restrict __format, __gnuc_va_list __arg) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, 233s 1949: __gnuc_va_list __arg) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 233s 1949: extern int __asprintf (char **__restrict __ptr, 233s 1949: const char *__restrict __fmt, ...) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 233s 1949: extern int asprintf (char **__restrict __ptr, 233s 1949: const char *__restrict __fmt, ...) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int vdprintf (int __fd, const char *__restrict __fmt, 233s 1949: __gnuc_va_list __arg) 233s 1949: __attribute__ ((__format__ (__printf__, 2, 0))); 233s 1949: extern int dprintf (int __fd, const char *__restrict __fmt, ...) 233s 1949: __attribute__ ((__format__ (__printf__, 2, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fscanf (FILE *__restrict __stream, 233s 1949: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: extern int sscanf (const char *__restrict __s, 233s 1949: const char *__restrict __format, ...) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 233s 1949: # 441 "/usr/include/stdio.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc23_fscanf") 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc23_scanf") 233s 1949: __attribute__ ((__warn_unused_result__)); 233s 1949: extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc23_sscanf") 233s 1949: 233s 1949: ; 233s 1949: # 493 "/usr/include/stdio.h" 3 4 233s 1949: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, 233s 1949: __gnuc_va_list __arg) 233s 1949: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) 233s 1949: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: extern int vsscanf (const char *__restrict __s, 233s 1949: const char *__restrict __format, __gnuc_va_list __arg) 233s 1949: noexcept (true) __attribute__ ((__format__ (__scanf__, 2, 0))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfscanf") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vscanf") 233s 1949: 233s 1949: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 233s 1949: extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc23_vsscanf") 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__format__ (__scanf__, 2, 0))); 233s 1949: # 578 "/usr/include/stdio.h" 3 4 233s 1949: extern int fgetc (FILE *__stream) __attribute__ ((__nonnull__ (1))); 233s 1949: extern int getc (FILE *__stream) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getchar (void); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getc_unlocked (FILE *__stream) __attribute__ ((__nonnull__ (1))); 233s 1949: extern int getchar_unlocked (void); 233s 1949: # 603 "/usr/include/stdio.h" 3 4 233s 1949: extern int fgetc_unlocked (FILE *__stream) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fputc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 233s 1949: extern int putc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int putchar (int __c); 233s 1949: # 627 "/usr/include/stdio.h" 3 4 233s 1949: extern int fputc_unlocked (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int putc_unlocked (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 233s 1949: extern int putchar_unlocked (int __c); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int getw (FILE *__stream) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern int putw (int __w, FILE *__stream) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 233s 1949: # 677 "/usr/include/stdio.h" 3 4 233s 1949: extern char *fgets_unlocked (char *__restrict __s, int __n, 233s 1949: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__nonnull__ (3))); 233s 1949: # 689 "/usr/include/stdio.h" 3 4 233s 1949: extern __ssize_t __getdelim (char **__restrict __lineptr, 233s 1949: size_t *__restrict __n, int __delimiter, 233s 1949: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))); 233s 1949: extern __ssize_t getdelim (char **__restrict __lineptr, 233s 1949: size_t *__restrict __n, int __delimiter, 233s 1949: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))); 233s 1949: 233s 1949: 233s 1949: extern __ssize_t getline (char **__restrict __lineptr, 233s 1949: size_t *__restrict __n, 233s 1949: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fputs (const char *__restrict __s, FILE *__restrict __stream) 233s 1949: __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int puts (const char *__s); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ungetc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern size_t fread (void *__restrict __ptr, size_t __size, 233s 1949: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__nonnull__ (4))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern size_t fwrite (const void *__restrict __ptr, size_t __size, 233s 1949: size_t __n, FILE *__restrict __s) __attribute__ ((__nonnull__ (4))); 233s 1949: # 745 "/usr/include/stdio.h" 3 4 233s 1949: extern int fputs_unlocked (const char *__restrict __s, 233s 1949: FILE *__restrict __stream) __attribute__ ((__nonnull__ (2))); 233s 1949: # 756 "/usr/include/stdio.h" 3 4 233s 1949: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, 233s 1949: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__nonnull__ (4))); 233s 1949: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, 233s 1949: size_t __n, FILE *__restrict __stream) 233s 1949: __attribute__ ((__nonnull__ (4))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fseek (FILE *__stream, long int __off, int __whence) 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void rewind (FILE *__stream) __attribute__ ((__nonnull__ (1))); 233s 1949: # 802 "/usr/include/stdio.h" 3 4 233s 1949: extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64") 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: # 828 "/usr/include/stdio.h" 3 4 233s 1949: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: extern int fsetpos (FILE *__stream, const fpos_t *__pos) __asm__ ("" "fsetpos64") 233s 1949: 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void clearerr (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: extern int feof (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: extern int ferror (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void clearerr_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: extern int feof_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern int ferror_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void perror (const char *__s) __attribute__ ((__cold__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fileno (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int fileno_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: # 887 "/usr/include/stdio.h" 3 4 233s 1949: extern int pclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern FILE *popen (const char *__command, const char *__modes) 233s 1949: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (pclose, 1))) __attribute__ ((__warn_unused_result__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *ctermid (char *__s) noexcept (true) 233s 1949: __attribute__ ((__access__ (__write_only__, 1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *cuserid (char *__s) 233s 1949: __attribute__ ((__access__ (__write_only__, 1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: struct obstack; 233s 1949: 233s 1949: 233s 1949: extern int obstack_printf (struct obstack *__restrict __obstack, 233s 1949: const char *__restrict __format, ...) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))); 233s 1949: extern int obstack_vprintf (struct obstack *__restrict __obstack, 233s 1949: const char *__restrict __format, 233s 1949: __gnuc_va_list __args) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void flockfile (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ftrylockfile (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern void funlockfile (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: # 949 "/usr/include/stdio.h" 3 4 233s 1949: extern int __uflow (FILE *); 233s 1949: extern int __overflow (FILE *, int); 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 1 3 4 233s 1949: # 26 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 3 4 233s 1949: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, 233s 1949: const char *__restrict __format, ...) noexcept (true) 233s 1949: __attribute__ ((__access__ (__write_only__, 1, 3))); 233s 1949: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, 233s 1949: const char *__restrict __format, 233s 1949: __gnuc_va_list __ap) noexcept (true) 233s 1949: __attribute__ ((__access__ (__write_only__, 1, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, 233s 1949: size_t __slen, const char *__restrict __format, 233s 1949: ...) noexcept (true) 233s 1949: __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, 233s 1949: size_t __slen, const char *__restrict __format, 233s 1949: __gnuc_va_list __ap) noexcept (true) 233s 1949: __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, 233s 1949: const char *__restrict __format, ...) 233s 1949: __attribute__ ((__nonnull__ (1))); 233s 1949: extern int __printf_chk (int __flag, const char *__restrict __format, ...); 233s 1949: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, 233s 1949: const char *__restrict __format, 233s 1949: __gnuc_va_list __ap) __attribute__ ((__nonnull__ (1))); 233s 1949: extern int __vprintf_chk (int __flag, const char *__restrict __format, 233s 1949: __gnuc_va_list __ap); 233s 1949: 233s 1949: 233s 1949: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, 233s 1949: ...) __attribute__ ((__format__ (__printf__, 3, 4))); 233s 1949: extern int __vdprintf_chk (int __fd, int __flag, 233s 1949: const char *__restrict __fmt, __gnuc_va_list __arg) 233s 1949: __attribute__ ((__format__ (__printf__, 3, 0))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int __asprintf_chk (char **__restrict __ptr, int __flag, 233s 1949: const char *__restrict __fmt, ...) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); 233s 1949: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, 233s 1949: const char *__restrict __fmt, __gnuc_va_list __arg) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); 233s 1949: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, 233s 1949: int __flag, const char *__restrict __format, 233s 1949: ...) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); 233s 1949: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, 233s 1949: int __flag, 233s 1949: const char *__restrict __format, 233s 1949: __gnuc_va_list __args) 233s 1949: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); 233s 1949: # 96 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 3 4 233s 1949: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, 233s 1949: FILE *__restrict __stream) 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__nonnull__ (4))); 233s 1949: 233s 1949: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)); 233s 1949: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, 233s 1949: size_t __size, size_t __n, 233s 1949: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (5))); 233s 1949: 233s 1949: 233s 1949: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 233s 1949: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, 233s 1949: int __n, FILE *__restrict __stream) 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__nonnull__ (4))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)); 233s 1949: 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") 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) 233s 1949: ; 233s 1949: 233s 1949: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, 233s 1949: size_t __size, size_t __n, 233s 1949: FILE *__restrict __stream) 233s 1949: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (5))); 233s 1949: # 955 "/usr/include/stdio.h" 2 3 4 233s 1949: # 966 "/usr/include/stdio.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 1 3 4 233s 1949: # 46 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 3 4 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: getchar (void) 233s 1949: { 233s 1949: return getc (stdin); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: fgetc_unlocked (FILE *__fp) 233s 1949: { 233s 1949: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: getc_unlocked (FILE *__fp) 233s 1949: { 233s 1949: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: getchar_unlocked (void) 233s 1949: { 233s 1949: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: putchar (int __c) 233s 1949: { 233s 1949: return putc (__c, stdout); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: fputc_unlocked (int __c, FILE *__stream) 233s 1949: { 233s 1949: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: putc_unlocked (int __c, FILE *__stream) 233s 1949: { 233s 1949: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: putchar_unlocked (int __c) 233s 1949: { 233s 1949: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t 233s 1949: getline (char **__lineptr, size_t *__n, FILE *__stream) 233s 1949: { 233s 1949: return __getdelim (__lineptr, __n, '\n', __stream); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) noexcept (true) 233s 1949: { 233s 1949: return (((__stream)->_flags & 0x0010) != 0); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 233s 1949: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) noexcept (true) 233s 1949: { 233s 1949: return (((__stream)->_flags & 0x0020) != 0); 233s 1949: } 233s 1949: # 967 "/usr/include/stdio.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 1 3 4 233s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) noexcept (true) 233s 1949: { 233s 1949: return __builtin___sprintf_chk (__s, 3 - 1, 233s 1949: __builtin_dynamic_object_size (__s, 1), __fmt, 233s 1949: __builtin_va_arg_pack ()); 233s 1949: } 233s 1949: # 54 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) vsprintf (char * __restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 233s 1949: 233s 1949: { 233s 1949: return __builtin___vsprintf_chk (__s, 3 - 1, 233s 1949: __builtin_dynamic_object_size (__s, 1), __fmt, __ap); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) noexcept (true) 233s 1949: 233s 1949: { 233s 1949: return __builtin___snprintf_chk (__s, __n, 3 - 1, 233s 1949: __builtin_dynamic_object_size (__s, 1), __fmt, 233s 1949: __builtin_va_arg_pack ()); 233s 1949: } 233s 1949: # 92 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) vsnprintf (char * __restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return __builtin___vsnprintf_chk (__s, __n, 3 - 1, 233s 1949: __builtin_dynamic_object_size (__s, 1), __fmt, __ap); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) int 233s 1949: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) 233s 1949: { 233s 1949: return __fprintf_chk (__stream, 3 - 1, __fmt, 233s 1949: __builtin_va_arg_pack ()); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: printf (const char *__restrict __fmt, ...) 233s 1949: { 233s 1949: return __printf_chk (3 - 1, __fmt, __builtin_va_arg_pack ()); 233s 1949: } 233s 1949: # 151 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: vprintf (const char * __restrict __fmt, 233s 1949: __gnuc_va_list __ap) 233s 1949: { 233s 1949: 233s 1949: return __vfprintf_chk (stdout, 3 - 1, __fmt, __ap); 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) int 233s 1949: vfprintf (FILE *__restrict __stream, 233s 1949: const char *__restrict __fmt, __gnuc_va_list __ap) 233s 1949: { 233s 1949: return __vfprintf_chk (__stream, 3 - 1, __fmt, __ap); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: dprintf (int __fd, const char *__restrict __fmt, ...) 233s 1949: { 233s 1949: return __dprintf_chk (__fd, 3 - 1, __fmt, 233s 1949: __builtin_va_arg_pack ()); 233s 1949: } 233s 1949: # 194 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) 233s 1949: { 233s 1949: return __vdprintf_chk (__fd, 3 - 1, __fmt, __ap); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) 233s 1949: { 233s 1949: return __asprintf_chk (__ptr, 3 - 1, __fmt, 233s 1949: __builtin_va_arg_pack ()); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) 233s 1949: 233s 1949: { 233s 1949: return __asprintf_chk (__ptr, 3 - 1, __fmt, 233s 1949: __builtin_va_arg_pack ()); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) noexcept (true) 233s 1949: 233s 1949: { 233s 1949: return __obstack_printf_chk (__obstack, 3 - 1, __fmt, 233s 1949: __builtin_va_arg_pack ()); 233s 1949: } 233s 1949: # 271 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 233s 1949: 233s 1949: { 233s 1949: return __vasprintf_chk (__ptr, 3 - 1, __fmt, __ap); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 233s 1949: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 233s 1949: 233s 1949: { 233s 1949: return __obstack_vprintf_chk (__obstack, 3 - 1, __fmt, 233s 1949: __ap); 233s 1949: } 233s 1949: # 303 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__nonnull__ (3))) char * 233s 1949: fgets (char * __restrict __s, int __n, 233s 1949: FILE *__restrict __stream) 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: size_t __sz = __builtin_dynamic_object_size (__s, 1); 233s 1949: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((sizeof (char))))) && (((unsigned int) (__n)) <= ((__sz)) / ((sizeof (char))))))) 233s 1949: return __fgets_alias (__s, __n, __stream); 233s 1949: 233s 1949: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (sizeof (char)))) && !(((unsigned int) (__n)) <= (__sz) / (sizeof (char))))) 233s 1949: return __fgets_chk_warn (__s, __sz, __n, __stream); 233s 1949: 233s 1949: return __fgets_chk (__s, __sz, __n, __stream); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))) size_t 233s 1949: fread (void * __restrict __ptr, 233s 1949: size_t __size, size_t __n, FILE *__restrict __stream) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: size_t __sz = __builtin_dynamic_object_size (__ptr, 0); 233s 1949: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((__size)))) && (((unsigned int) (__n)) <= ((__sz)) / ((__size)))))) 233s 1949: return __fread_alias (__ptr, __size, __n, __stream); 233s 1949: 233s 1949: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (__size))) && !(((unsigned int) (__n)) <= (__sz) / (__size)))) 233s 1949: return __fread_chk_warn (__ptr, __sz, __size, __n, __stream); 233s 1949: 233s 1949: return __fread_chk (__ptr, __sz, __size, __n, __stream); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) 233s 1949: __attribute__ ((__nonnull__ (3))) char * 233s 1949: fgets_unlocked (char * __restrict __s, 233s 1949: int __n, FILE *__restrict __stream) 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: size_t __sz = __builtin_dynamic_object_size (__s, 1); 233s 1949: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((sizeof (char))))) && (((unsigned int) (__n)) <= ((__sz)) / ((sizeof (char))))))) 233s 1949: return __fgets_unlocked_alias (__s, __n, __stream); 233s 1949: 233s 1949: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (sizeof (char)))) && !(((unsigned int) (__n)) <= (__sz) / (sizeof (char))))) 233s 1949: return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream); 233s 1949: 233s 1949: return __fgets_unlocked_chk (__s, __sz, __n, __stream); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))) size_t 233s 1949: fread_unlocked (void * __restrict __ptr, 233s 1949: size_t __size, size_t __n, FILE *__restrict __stream) 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: { 233s 1949: size_t __sz = __builtin_dynamic_object_size (__ptr, 0); 233s 1949: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((__size)))) && (((unsigned int) (__n)) <= ((__sz)) / ((__size)))))) 233s 1949: { 233s 1949: 233s 1949: if (__builtin_constant_p (__size) 233s 1949: && __builtin_constant_p (__n) 233s 1949: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) 233s 1949: && __size * __n <= 8) 233s 1949: { 233s 1949: size_t __cnt = __size * __n; 233s 1949: char *__cptr = (char *) __ptr; 233s 1949: if (__cnt == 0) 233s 1949: return 0; 233s 1949: 233s 1949: for (; __cnt > 0; --__cnt) 233s 1949: { 233s 1949: int __c = getc_unlocked (__stream); 233s 1949: if (__c == (-1)) 233s 1949: break; 233s 1949: *__cptr++ = __c; 233s 1949: } 233s 1949: return (__cptr - (char *) __ptr) / __size; 233s 1949: } 233s 1949: 233s 1949: return __fread_unlocked_alias (__ptr, __size, __n, __stream); 233s 1949: } 233s 1949: 233s 1949: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (__size))) && !(((unsigned int) (__n)) <= (__sz) / (__size)))) 233s 1949: return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream); 233s 1949: 233s 1949: return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream); 233s 1949: 233s 1949: } 233s 1949: # 971 "/usr/include/stdio.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 48 "/usr/include/c++/15/cstdio" 2 3 4 233s 1949: # 98 "/usr/include/c++/15/cstdio" 3 4 233s 1949: namespace std 233s 1949: { 233s 1949: using ::FILE; 233s 1949: using ::fpos_t; 233s 1949: 233s 1949: using ::clearerr; 233s 1949: using ::fclose; 233s 1949: using ::feof; 233s 1949: using ::ferror; 233s 1949: using ::fflush; 233s 1949: using ::fgetc; 233s 1949: using ::fgetpos; 233s 1949: using ::fgets; 233s 1949: using ::fopen; 233s 1949: using ::fprintf; 233s 1949: using ::fputc; 233s 1949: using ::fputs; 233s 1949: using ::fread; 233s 1949: using ::freopen; 233s 1949: using ::fscanf; 233s 1949: using ::fseek; 233s 1949: using ::fsetpos; 233s 1949: using ::ftell; 233s 1949: using ::fwrite; 233s 1949: using ::getc; 233s 1949: using ::getchar; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::perror; 233s 1949: using ::printf; 233s 1949: using ::putc; 233s 1949: using ::putchar; 233s 1949: using ::puts; 233s 1949: using ::remove; 233s 1949: using ::rename; 233s 1949: using ::rewind; 233s 1949: using ::scanf; 233s 1949: using ::setbuf; 233s 1949: using ::setvbuf; 233s 1949: using ::sprintf; 233s 1949: using ::sscanf; 233s 1949: using ::tmpfile; 233s 1949: 233s 1949: using ::tmpnam; 233s 1949: 233s 1949: using ::ungetc; 233s 1949: using ::vfprintf; 233s 1949: using ::vprintf; 233s 1949: using ::vsprintf; 233s 1949: } 233s 1949: # 159 "/usr/include/c++/15/cstdio" 3 4 233s 1949: namespace __gnu_cxx 233s 1949: { 233s 1949: # 177 "/usr/include/c++/15/cstdio" 3 4 233s 1949: using ::snprintf; 233s 1949: using ::vfscanf; 233s 1949: using ::vscanf; 233s 1949: using ::vsnprintf; 233s 1949: using ::vsscanf; 233s 1949: 233s 1949: } 233s 1949: 233s 1949: namespace std 233s 1949: { 233s 1949: using ::__gnu_cxx::snprintf; 233s 1949: using ::__gnu_cxx::vfscanf; 233s 1949: using ::__gnu_cxx::vscanf; 233s 1949: using ::__gnu_cxx::vsnprintf; 233s 1949: using ::__gnu_cxx::vsscanf; 233s 1949: } 233s 1949: # 3159 "/usr/include/doctest/doctest.h" 2 3 4 233s 1949: # 1 "/usr/include/c++/15/cstdlib" 1 3 4 233s 1949: # 80 "/usr/include/c++/15/cstdlib" 3 4 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wpedantic" 233s 1949: 233s 1949: 233s 1949: 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 131 "/usr/include/c++/15/cstdlib" 3 4 233s 1949: extern "C++" 233s 1949: { 233s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: using ::div_t; 233s 1949: using ::ldiv_t; 233s 1949: 233s 1949: using ::abort; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::atexit; 233s 1949: 233s 1949: 233s 1949: using ::at_quick_exit; 233s 1949: 233s 1949: 233s 1949: using ::atof; 233s 1949: using ::atoi; 233s 1949: using ::atol; 233s 1949: using ::bsearch; 233s 1949: using ::calloc; 233s 1949: using ::div; 233s 1949: using ::exit; 233s 1949: using ::free; 233s 1949: using ::getenv; 233s 1949: using ::labs; 233s 1949: using ::ldiv; 233s 1949: using ::malloc; 233s 1949: 233s 1949: using ::mblen; 233s 1949: using ::mbstowcs; 233s 1949: using ::mbtowc; 233s 1949: 233s 1949: using ::qsort; 233s 1949: 233s 1949: 233s 1949: using ::quick_exit; 233s 1949: 233s 1949: 233s 1949: using ::rand; 233s 1949: using ::realloc; 233s 1949: using ::srand; 233s 1949: using ::strtod; 233s 1949: using ::strtol; 233s 1949: using ::strtoul; 233s 1949: using ::system; 233s 1949: 233s 1949: using ::wcstombs; 233s 1949: using ::wctomb; 233s 1949: 233s 1949: 233s 1949: 233s 1949: inline ldiv_t 233s 1949: div(long __i, long __j) noexcept { return ldiv(__i, __j); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 205 "/usr/include/c++/15/cstdlib" 3 4 233s 1949: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::lldiv_t; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: using ::_Exit; 233s 1949: 233s 1949: 233s 1949: 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 233s 1949: using ::llabs; 233s 1949: 233s 1949: inline lldiv_t 233s 1949: div(long long __n, long long __d) 233s 1949: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } 233s 1949: 233s 1949: using ::lldiv; 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 240 "/usr/include/c++/15/cstdlib" 3 4 233s 1949: using ::atoll; 233s 1949: using ::strtoll; 233s 1949: using ::strtoull; 233s 1949: 233s 1949: using ::strtof; 233s 1949: using ::strtold; 233s 1949: 233s 1949: 233s 1949: } 233s 1949: 233s 1949: namespace std 233s 1949: { 233s 1949: 233s 1949: using ::__gnu_cxx::lldiv_t; 233s 1949: 233s 1949: using ::__gnu_cxx::_Exit; 233s 1949: 233s 1949: using ::__gnu_cxx::llabs; 233s 1949: using ::__gnu_cxx::div; 233s 1949: using ::__gnu_cxx::lldiv; 233s 1949: 233s 1949: using ::__gnu_cxx::atoll; 233s 1949: using ::__gnu_cxx::strtof; 233s 1949: using ::__gnu_cxx::strtoll; 233s 1949: using ::__gnu_cxx::strtoull; 233s 1949: using ::__gnu_cxx::strtold; 233s 1949: } 233s 1949: # 284 "/usr/include/c++/15/cstdlib" 3 4 233s 1949: } 233s 1949: # 3160 "/usr/include/doctest/doctest.h" 2 3 4 233s 1949: # 1 "/usr/include/c++/15/cstring" 1 3 4 233s 1949: # 47 "/usr/include/c++/15/cstring" 3 4 233s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 233s 1949: # 48 "/usr/include/c++/15/cstring" 2 3 4 233s 1949: # 1 "/usr/include/string.h" 1 3 4 233s 1949: # 26 "/usr/include/string.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 233s 1949: # 27 "/usr/include/string.h" 2 3 4 233s 1949: 233s 1949: extern "C" { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 34 "/usr/include/string.h" 2 3 4 233s 1949: # 43 "/usr/include/string.h" 3 4 233s 1949: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, 233s 1949: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern void *memmove (void *__dest, const void *__src, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, 233s 1949: int __c, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 4))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *memset (void *__s, int __c, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern int memcmp (const void *__s1, const void *__s2, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: # 80 "/usr/include/string.h" 3 4 233s 1949: extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C++" 233s 1949: { 233s 1949: extern void *memchr (void *__s, int __c, size_t __n) 233s 1949: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern const void *memchr (const void *__s, int __c, size_t __n) 233s 1949: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * 233s 1949: memchr (void *__s, int __c, size_t __n) noexcept (true) 233s 1949: { 233s 1949: return __builtin_memchr (__s, __c, __n); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * 233s 1949: memchr (const void *__s, int __c, size_t __n) noexcept (true) 233s 1949: { 233s 1949: return __builtin_memchr (__s, __c, __n); 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: # 115 "/usr/include/string.h" 3 4 233s 1949: extern "C++" void *rawmemchr (void *__s, int __c) 233s 1949: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern "C++" const void *rawmemchr (const void *__s, int __c) 233s 1949: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C++" void *memrchr (void *__s, int __c, size_t __n) 233s 1949: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) 233s 1949: __attribute__ ((__access__ (__read_only__, 1, 3))); 233s 1949: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) 233s 1949: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) 233s 1949: __attribute__ ((__access__ (__read_only__, 1, 3))); 233s 1949: # 141 "/usr/include/string.h" 3 4 233s 1949: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: extern char *strncpy (char *__restrict __dest, 233s 1949: const char *__restrict __src, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern char *strcat (char *__restrict __dest, const char *__restrict __src) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: extern char *strncat (char *__restrict __dest, const char *__restrict __src, 233s 1949: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern int strcmp (const char *__s1, const char *__s2) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: extern int strncmp (const char *__s1, const char *__s2, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern int strcoll (const char *__s1, const char *__s2) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: extern size_t strxfrm (char *__restrict __dest, 233s 1949: const char *__restrict __src, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 233s 1949: 233s 1949: 233s 1949: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, 233s 1949: locale_t __l) noexcept (true) __attribute__ ((__nonnull__ (2, 4))) 233s 1949: __attribute__ ((__access__ (__write_only__, 1, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *strdup (const char *__s) 233s 1949: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *strndup (const char *__string, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 233s 1949: # 224 "/usr/include/string.h" 3 4 233s 1949: extern "C++" 233s 1949: { 233s 1949: extern char *strchr (char *__s, int __c) 233s 1949: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern const char *strchr (const char *__s, int __c) 233s 1949: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 233s 1949: strchr (char *__s, int __c) noexcept (true) 233s 1949: { 233s 1949: return __builtin_strchr (__s, __c); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 233s 1949: strchr (const char *__s, int __c) noexcept (true) 233s 1949: { 233s 1949: return __builtin_strchr (__s, __c); 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C++" 233s 1949: { 233s 1949: extern char *strrchr (char *__s, int __c) 233s 1949: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern const char *strrchr (const char *__s, int __c) 233s 1949: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 233s 1949: strrchr (char *__s, int __c) noexcept (true) 233s 1949: { 233s 1949: return __builtin_strrchr (__s, __c); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 233s 1949: strrchr (const char *__s, int __c) noexcept (true) 233s 1949: { 233s 1949: return __builtin_strrchr (__s, __c); 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: # 281 "/usr/include/string.h" 3 4 233s 1949: extern "C++" char *strchrnul (char *__s, int __c) 233s 1949: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern "C++" const char *strchrnul (const char *__s, int __c) 233s 1949: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: # 293 "/usr/include/string.h" 3 4 233s 1949: extern size_t strcspn (const char *__s, const char *__reject) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern size_t strspn (const char *__s, const char *__accept) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern "C++" 233s 1949: { 233s 1949: extern char *strpbrk (char *__s, const char *__accept) 233s 1949: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: extern const char *strpbrk (const char *__s, const char *__accept) 233s 1949: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 233s 1949: strpbrk (char *__s, const char *__accept) noexcept (true) 233s 1949: { 233s 1949: return __builtin_strpbrk (__s, __accept); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 233s 1949: strpbrk (const char *__s, const char *__accept) noexcept (true) 233s 1949: { 233s 1949: return __builtin_strpbrk (__s, __accept); 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C++" 233s 1949: { 233s 1949: extern char *strstr (char *__haystack, const char *__needle) 233s 1949: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: extern const char *strstr (const char *__haystack, const char *__needle) 233s 1949: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 233s 1949: strstr (char *__haystack, const char *__needle) noexcept (true) 233s 1949: { 233s 1949: return __builtin_strstr (__haystack, __needle); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 233s 1949: strstr (const char *__haystack, const char *__needle) noexcept (true) 233s 1949: { 233s 1949: return __builtin_strstr (__haystack, __needle); 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *strtok (char *__restrict __s, const char *__restrict __delim) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *__strtok_r (char *__restrict __s, 233s 1949: const char *__restrict __delim, 233s 1949: char **__restrict __save_ptr) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 233s 1949: 233s 1949: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, 233s 1949: char **__restrict __save_ptr) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C++" char *strcasestr (char *__haystack, const char *__needle) 233s 1949: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: extern "C++" const char *strcasestr (const char *__haystack, 233s 1949: const char *__needle) 233s 1949: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: # 389 "/usr/include/string.h" 3 4 233s 1949: extern void *memmem (const void *__haystack, size_t __haystacklen, 233s 1949: const void *__needle, size_t __needlelen) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))) 233s 1949: __attribute__ ((__access__ (__read_only__, 1, 2))) 233s 1949: __attribute__ ((__access__ (__read_only__, 3, 4))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void *__mempcpy (void *__restrict __dest, 233s 1949: const void *__restrict __src, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: extern void *mempcpy (void *__restrict __dest, 233s 1949: const void *__restrict __src, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern size_t strlen (const char *__s) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern size_t strnlen (const char *__string, size_t __maxlen) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *strerror (int __errnum) noexcept (true); 233s 1949: # 444 "/usr/include/string.h" 3 4 233s 1949: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern const char *strerrordesc_np (int __err) noexcept (true); 233s 1949: 233s 1949: extern const char *strerrorname_np (int __err) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *strerror_l (int __errnum, locale_t __l) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/strings.h" 1 3 4 233s 1949: # 23 "/usr/include/strings.h" 3 4 233s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 233s 1949: # 24 "/usr/include/strings.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C" { 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int bcmp (const void *__s1, const void *__s2, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern void bcopy (const void *__src, void *__dest, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern void bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C++" 233s 1949: { 233s 1949: extern char *index (char *__s, int __c) 233s 1949: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern const char *index (const char *__s, int __c) 233s 1949: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 233s 1949: index (char *__s, int __c) noexcept (true) 233s 1949: { 233s 1949: return __builtin_index (__s, __c); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 233s 1949: index (const char *__s, int __c) noexcept (true) 233s 1949: { 233s 1949: return __builtin_index (__s, __c); 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C++" 233s 1949: { 233s 1949: extern char *rindex (char *__s, int __c) 233s 1949: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: extern const char *rindex (const char *__s, int __c) 233s 1949: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 233s 1949: rindex (char *__s, int __c) noexcept (true) 233s 1949: { 233s 1949: return __builtin_rindex (__s, __c); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 233s 1949: rindex (const char *__s, int __c) noexcept (true) 233s 1949: { 233s 1949: return __builtin_rindex (__s, __c); 233s 1949: } 233s 1949: 233s 1949: } 233s 1949: # 104 "/usr/include/strings.h" 3 4 233s 1949: extern int ffs (int __i) noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int ffsl (long int __l) noexcept (true) __attribute__ ((__const__)); 233s 1949: __extension__ extern int ffsll (long long int __ll) 233s 1949: noexcept (true) __attribute__ ((__const__)); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int strcasecmp (const char *__s1, const char *__s2) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int strncasecmp_l (const char *__s1, const char *__s2, 233s 1949: size_t __n, locale_t __loc) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); 233s 1949: 233s 1949: 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 1 3 4 233s 1949: # 22 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 233s 1949: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) noexcept (true) 233s 1949: { 233s 1949: (void) __builtin___memmove_chk (__dest, __src, __len, 233s 1949: __builtin_dynamic_object_size (__dest, 0)); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 233s 1949: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) noexcept (true) 233s 1949: { 233s 1949: (void) __builtin___memset_chk (__dest, '\0', __len, 233s 1949: __builtin_dynamic_object_size (__dest, 0)); 233s 1949: } 233s 1949: # 145 "/usr/include/strings.h" 2 3 4 233s 1949: # 463 "/usr/include/string.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern void explicit_bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) 233s 1949: ; 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *strsep (char **__restrict __stringp, 233s 1949: const char *__restrict __delim) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *strsignal (int __sig) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern const char *sigabbrev_np (int __sig) noexcept (true); 233s 1949: 233s 1949: 233s 1949: extern const char *sigdescr_np (int __sig) noexcept (true); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern char *__stpncpy (char *__restrict __dest, 233s 1949: const char *__restrict __src, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: extern char *stpncpy (char *__restrict __dest, 233s 1949: const char *__restrict __src, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern size_t strlcpy (char *__restrict __dest, 233s 1949: const char *__restrict __src, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern size_t strlcat (char *__restrict __dest, 233s 1949: const char *__restrict __src, size_t __n) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern int strverscmp (const char *__s1, const char *__s2) 233s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 233s 1949: 233s 1949: 233s 1949: extern char *strfry (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); 233s 1949: 233s 1949: 233s 1949: extern void *memfrob (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) 233s 1949: __attribute__ ((__access__ (__read_write__, 1, 2))); 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern "C++" char *basename (char *__filename) 233s 1949: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); 233s 1949: extern "C++" const char *basename (const char *__filename) 233s 1949: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); 233s 1949: # 548 "/usr/include/string.h" 3 4 233s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 1 3 4 233s 1949: # 25 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 233s 1949: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) 233s 1949: 233s 1949: { 233s 1949: return __builtin___memcpy_chk (__dest, __src, __len, 233s 1949: __builtin_dynamic_object_size (__dest, 0)); 233s 1949: } 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 233s 1949: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) noexcept (true) 233s 1949: { 233s 1949: return __builtin___memmove_chk (__dest, __src, __len, 233s 1949: __builtin_dynamic_object_size (__dest, 0)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 233s 1949: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) 233s 1949: 233s 1949: { 233s 1949: return __builtin___mempcpy_chk (__dest, __src, __len, 233s 1949: __builtin_dynamic_object_size (__dest, 0)); 233s 1949: } 233s 1949: # 56 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 233s 1949: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) noexcept (true) 233s 1949: { 233s 1949: return __builtin___memset_chk (__dest, __ch, __len, 233s 1949: __builtin_dynamic_object_size (__dest, 0)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) 233s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) ; 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 233s 1949: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) noexcept (true) 233s 1949: { 233s 1949: __explicit_bzero_chk (__dest, __len, __builtin_dynamic_object_size (__dest, 0)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 233s 1949: __attribute__ ((__leaf__)) strcpy (char * __restrict __dest, const char *__restrict __src) noexcept (true) 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return __builtin___strcpy_chk (__dest, __src, __builtin_dynamic_object_size (__dest, 1)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 233s 1949: __attribute__ ((__leaf__)) stpcpy (char * __restrict __dest, const char *__restrict __src) noexcept (true) 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return __builtin___stpcpy_chk (__dest, __src, __builtin_dynamic_object_size (__dest, 1)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 233s 1949: __attribute__ ((__leaf__)) strncpy (char * __restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return __builtin___strncpy_chk (__dest, __src, __len, 233s 1949: __builtin_dynamic_object_size (__dest, 1)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 233s 1949: __attribute__ ((__leaf__)) stpncpy (char * __dest, const char *__src, size_t __n) noexcept (true) 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return __builtin___stpncpy_chk (__dest, __src, __n, 233s 1949: __builtin_dynamic_object_size (__dest, 1)); 233s 1949: } 233s 1949: # 135 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 233s 1949: __attribute__ ((__leaf__)) strcat (char * __restrict __dest, const char *__restrict __src) noexcept (true) 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return __builtin___strcat_chk (__dest, __src, __builtin_dynamic_object_size (__dest, 1)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 233s 1949: __attribute__ ((__leaf__)) strncat (char * __restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) 233s 1949: 233s 1949: 233s 1949: { 233s 1949: return __builtin___strncat_chk (__dest, __src, __len, 233s 1949: __builtin_dynamic_object_size (__dest, 1)); 233s 1949: } 233s 1949: 233s 1949: 233s 1949: extern size_t __strlcpy_chk (char *__dest, const char *__src, size_t __n, 233s 1949: size_t __destlen) noexcept (true); 233s 1949: extern size_t __strlcpy_alias (char *__dest, const char *__src, size_t __n) noexcept (true) __asm__ ("" "strlcpy") 233s 1949: 233s 1949: ; 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 233s 1949: __attribute__ ((__leaf__)) strlcpy (char * __restrict __dest, const char *__restrict __src, size_t __n) noexcept (true) 233s 1949: 233s 1949: 233s 1949: { 233s 1949: if (__builtin_dynamic_object_size (__dest, 1) != (size_t) -1 233s 1949: && (!__builtin_constant_p (__n > __builtin_dynamic_object_size (__dest, 1)) 233s 1949: || __n > __builtin_dynamic_object_size (__dest, 1))) 233s 1949: return __strlcpy_chk (__dest, __src, __n, __builtin_dynamic_object_size (__dest, 1)); 233s 1949: return __strlcpy_alias (__dest, __src, __n); 233s 1949: } 233s 1949: 233s 1949: extern size_t __strlcat_chk (char *__dest, const char *__src, size_t __n, 233s 1949: size_t __destlen) noexcept (true); 233s 1949: extern size_t __strlcat_alias (char *__dest, const char *__src, size_t __n) noexcept (true) __asm__ ("" "strlcat") 233s 1949: 233s 1949: ; 233s 1949: 233s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 233s 1949: __attribute__ ((__leaf__)) strlcat (char * __restrict __dest, const char *__restrict __src, size_t __n) noexcept (true) 233s 1949: 233s 1949: { 233s 1949: if (__builtin_dynamic_object_size (__dest, 1) != (size_t) -1 233s 1949: && (!__builtin_constant_p (__n > __builtin_dynamic_object_size (__dest, 1)) 233s 1949: || __n > __builtin_dynamic_object_size (__dest, 1))) 233s 1949: return __strlcat_chk (__dest, __src, __n, __builtin_dynamic_object_size (__dest, 1)); 233s 1949: return __strlcat_alias (__dest, __src, __n); 233s 1949: } 233s 1949: # 549 "/usr/include/string.h" 2 3 4 233s 1949: 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 49 "/usr/include/c++/15/cstring" 2 3 4 233s 1949: # 74 "/usr/include/c++/15/cstring" 3 4 233s 1949: extern "C++" 233s 1949: { 233s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: using ::memchr; 233s 1949: using ::memcmp; 233s 1949: using ::memcpy; 233s 1949: using ::memmove; 233s 1949: using ::memset; 233s 1949: using ::strcat; 233s 1949: using ::strcmp; 233s 1949: using ::strcoll; 233s 1949: using ::strcpy; 233s 1949: using ::strcspn; 233s 1949: using ::strerror; 233s 1949: using ::strlen; 233s 1949: using ::strncat; 233s 1949: using ::strncmp; 233s 1949: using ::strncpy; 233s 1949: using ::strspn; 233s 1949: 233s 1949: using ::strtok; 233s 1949: 233s 1949: using ::strxfrm; 233s 1949: using ::strchr; 233s 1949: using ::strpbrk; 233s 1949: using ::strrchr; 233s 1949: using ::strstr; 233s 1949: # 127 "/usr/include/c++/15/cstring" 3 4 233s 1949: 233s 1949: } 233s 1949: } 233s 1949: # 3161 "/usr/include/doctest/doctest.h" 2 3 4 233s 1949: # 1 "/usr/include/c++/15/limits" 1 3 4 233s 1949: # 44 "/usr/include/c++/15/limits" 3 4 233s 1949: #pragma GCC diagnostic push 233s 1949: #pragma GCC diagnostic ignored "-Wpedantic" 233s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 233s 1949: #pragma GCC diagnostic ignored "-Wc++23-extensions" 233s 1949: # 165 "/usr/include/c++/15/limits" 3 4 233s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: enum float_round_style 233s 1949: { 233s 1949: round_indeterminate = -1, 233s 1949: round_toward_zero = 0, 233s 1949: round_to_nearest = 1, 233s 1949: round_toward_infinity = 2, 233s 1949: round_toward_neg_infinity = 3 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: enum float_denorm_style 233s 1949: { 233s 1949: 233s 1949: denorm_indeterminate = -1, 233s 1949: 233s 1949: denorm_absent = 0, 233s 1949: 233s 1949: denorm_present = 1 233s 1949: }; 233s 1949: # 209 "/usr/include/c++/15/limits" 3 4 233s 1949: struct __numeric_limits_base 233s 1949: { 233s 1949: 233s 1949: 233s 1949: static constexpr bool is_specialized = false; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr int digits = 0; 233s 1949: 233s 1949: 233s 1949: static constexpr int digits10 = 0; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr bool is_signed = false; 233s 1949: 233s 1949: 233s 1949: static constexpr bool is_integer = false; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr bool is_exact = false; 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr int radix = 0; 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr int max_exponent = 0; 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: 233s 1949: 233s 1949: static constexpr float_denorm_style has_denorm = denorm_absent; 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr bool is_bounded = false; 233s 1949: # 295 "/usr/include/c++/15/limits" 3 4 233s 1949: static constexpr bool is_modulo = false; 233s 1949: 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: 233s 1949: 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr float_round_style round_style = 233s 1949: round_toward_zero; 233s 1949: }; 233s 1949: # 318 "/usr/include/c++/15/limits" 3 4 233s 1949: template 233s 1949: struct numeric_limits : public __numeric_limits_base 233s 1949: { 233s 1949: 233s 1949: 233s 1949: static constexpr _Tp 233s 1949: min() noexcept { return _Tp(); } 233s 1949: 233s 1949: 233s 1949: static constexpr _Tp 233s 1949: max() noexcept { return _Tp(); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr _Tp 233s 1949: lowest() noexcept { return _Tp(); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr _Tp 233s 1949: epsilon() noexcept { return _Tp(); } 233s 1949: 233s 1949: 233s 1949: static constexpr _Tp 233s 1949: round_error() noexcept { return _Tp(); } 233s 1949: 233s 1949: 233s 1949: static constexpr _Tp 233s 1949: infinity() noexcept { return _Tp(); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr _Tp 233s 1949: quiet_NaN() noexcept { return _Tp(); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr _Tp 233s 1949: signaling_NaN() noexcept { return _Tp(); } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr _Tp 233s 1949: denorm_min() noexcept { return _Tp(); } 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct numeric_limits 233s 1949: : public numeric_limits<_Tp> { }; 233s 1949: 233s 1949: template 233s 1949: struct numeric_limits 233s 1949: : public numeric_limits<_Tp> { }; 233s 1949: 233s 1949: template 233s 1949: struct numeric_limits 233s 1949: : public numeric_limits<_Tp> { }; 233s 1949: # 390 "/usr/include/c++/15/limits" 3 4 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr bool 233s 1949: min() noexcept { return false; } 233s 1949: 233s 1949: static constexpr bool 233s 1949: max() noexcept { return true; } 233s 1949: 233s 1949: 233s 1949: static constexpr bool 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: static constexpr int digits = 1; 233s 1949: static constexpr int digits10 = 0; 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = false; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr bool 233s 1949: epsilon() noexcept { return false; } 233s 1949: 233s 1949: static constexpr bool 233s 1949: round_error() noexcept { return false; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr bool 233s 1949: infinity() noexcept { return false; } 233s 1949: 233s 1949: static constexpr bool 233s 1949: quiet_NaN() noexcept { return false; } 233s 1949: 233s 1949: static constexpr bool 233s 1949: signaling_NaN() noexcept { return false; } 233s 1949: 233s 1949: static constexpr bool 233s 1949: denorm_min() noexcept { return false; } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = false; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr char 233s 1949: 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); } 233s 1949: 233s 1949: static constexpr char 233s 1949: max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } 233s 1949: 233s 1949: 233s 1949: static constexpr char 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); 233s 1949: static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = ((char)(-1) < 0); 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr char 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr char 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr 233s 1949: char infinity() noexcept { return char(); } 233s 1949: 233s 1949: static constexpr char 233s 1949: quiet_NaN() noexcept { return char(); } 233s 1949: 233s 1949: static constexpr char 233s 1949: signaling_NaN() noexcept { return char(); } 233s 1949: 233s 1949: static constexpr char 233s 1949: denorm_min() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = !is_signed; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr signed char 233s 1949: min() noexcept { return -0x7f - 1; } 233s 1949: 233s 1949: static constexpr signed char 233s 1949: max() noexcept { return 0x7f; } 233s 1949: 233s 1949: 233s 1949: static constexpr signed char 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); 233s 1949: static constexpr int digits10 233s 1949: = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = true; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr signed char 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr signed char 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr signed char 233s 1949: infinity() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr signed char 233s 1949: quiet_NaN() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr signed char 233s 1949: signaling_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr signed char 233s 1949: denorm_min() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = false; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr unsigned char 233s 1949: min() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr unsigned char 233s 1949: max() noexcept { return 0x7f * 2U + 1; } 233s 1949: 233s 1949: 233s 1949: static constexpr unsigned char 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits 233s 1949: = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); 233s 1949: static constexpr int digits10 233s 1949: = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = false; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr unsigned char 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr unsigned char 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr unsigned char 233s 1949: infinity() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned char 233s 1949: quiet_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned char 233s 1949: signaling_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned char 233s 1949: denorm_min() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = true; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr wchar_t 233s 1949: 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); } 233s 1949: 233s 1949: static constexpr wchar_t 233s 1949: 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); } 233s 1949: 233s 1949: 233s 1949: static constexpr wchar_t 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); 233s 1949: static constexpr int digits10 233s 1949: = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = ((wchar_t)(-1) < 0); 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr wchar_t 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr wchar_t 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr wchar_t 233s 1949: infinity() noexcept { return wchar_t(); } 233s 1949: 233s 1949: static constexpr wchar_t 233s 1949: quiet_NaN() noexcept { return wchar_t(); } 233s 1949: 233s 1949: static constexpr wchar_t 233s 1949: signaling_NaN() noexcept { return wchar_t(); } 233s 1949: 233s 1949: static constexpr wchar_t 233s 1949: denorm_min() noexcept { return wchar_t(); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = !is_signed; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: # 803 "/usr/include/c++/15/limits" 3 4 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr char16_t 233s 1949: 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); } 233s 1949: 233s 1949: static constexpr char16_t 233s 1949: 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); } 233s 1949: 233s 1949: static constexpr char16_t 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)); 233s 1949: static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136); 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: static constexpr bool is_signed = ((char16_t)(-1) < 0); 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr char16_t 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr char16_t 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr char16_t 233s 1949: infinity() noexcept { return char16_t(); } 233s 1949: 233s 1949: static constexpr char16_t 233s 1949: quiet_NaN() noexcept { return char16_t(); } 233s 1949: 233s 1949: static constexpr char16_t 233s 1949: signaling_NaN() noexcept { return char16_t(); } 233s 1949: 233s 1949: static constexpr char16_t 233s 1949: denorm_min() noexcept { return char16_t(); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = !is_signed; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr char32_t 233s 1949: 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); } 233s 1949: 233s 1949: static constexpr char32_t 233s 1949: 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); } 233s 1949: 233s 1949: static constexpr char32_t 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)); 233s 1949: static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136); 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: static constexpr bool is_signed = ((char32_t)(-1) < 0); 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr char32_t 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr char32_t 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr char32_t 233s 1949: infinity() noexcept { return char32_t(); } 233s 1949: 233s 1949: static constexpr char32_t 233s 1949: quiet_NaN() noexcept { return char32_t(); } 233s 1949: 233s 1949: static constexpr char32_t 233s 1949: signaling_NaN() noexcept { return char32_t(); } 233s 1949: 233s 1949: static constexpr char32_t 233s 1949: denorm_min() noexcept { return char32_t(); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = !is_signed; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr short 233s 1949: min() noexcept { return -0x7fff - 1; } 233s 1949: 233s 1949: static constexpr short 233s 1949: max() noexcept { return 0x7fff; } 233s 1949: 233s 1949: 233s 1949: static constexpr short 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); 233s 1949: static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = true; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr short 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr short 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr short 233s 1949: infinity() noexcept { return short(); } 233s 1949: 233s 1949: static constexpr short 233s 1949: quiet_NaN() noexcept { return short(); } 233s 1949: 233s 1949: static constexpr short 233s 1949: signaling_NaN() noexcept { return short(); } 233s 1949: 233s 1949: static constexpr short 233s 1949: denorm_min() noexcept { return short(); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = false; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr unsigned short 233s 1949: min() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr unsigned short 233s 1949: max() noexcept { return 0x7fff * 2U + 1; } 233s 1949: 233s 1949: 233s 1949: static constexpr unsigned short 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits 233s 1949: = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); 233s 1949: static constexpr int digits10 233s 1949: = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = false; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr unsigned short 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr unsigned short 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr unsigned short 233s 1949: infinity() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned short 233s 1949: quiet_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned short 233s 1949: signaling_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned short 233s 1949: denorm_min() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = true; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr int 233s 1949: min() noexcept { return -0x7fffffff - 1; } 233s 1949: 233s 1949: static constexpr int 233s 1949: max() noexcept { return 0x7fffffff; } 233s 1949: 233s 1949: 233s 1949: static constexpr int 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); 233s 1949: static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = true; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr int 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr int 233s 1949: infinity() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr int 233s 1949: quiet_NaN() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr int 233s 1949: signaling_NaN() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr int 233s 1949: denorm_min() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = false; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr unsigned int 233s 1949: min() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr unsigned int 233s 1949: max() noexcept { return 0x7fffffff * 2U + 1; } 233s 1949: 233s 1949: 233s 1949: static constexpr unsigned int 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits 233s 1949: = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); 233s 1949: static constexpr int digits10 233s 1949: = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = false; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr unsigned int 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr unsigned int 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr unsigned int 233s 1949: infinity() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned int 233s 1949: quiet_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned int 233s 1949: signaling_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned int 233s 1949: denorm_min() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = true; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr long 233s 1949: min() noexcept { return -0x7fffffffL - 1; } 233s 1949: 233s 1949: static constexpr long 233s 1949: max() noexcept { return 0x7fffffffL; } 233s 1949: 233s 1949: 233s 1949: static constexpr long 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); 233s 1949: static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = true; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr long 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr long 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr long 233s 1949: infinity() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr long 233s 1949: quiet_NaN() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr long 233s 1949: signaling_NaN() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr long 233s 1949: denorm_min() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = false; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr unsigned long 233s 1949: min() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr unsigned long 233s 1949: max() noexcept { return 0x7fffffffL * 2UL + 1; } 233s 1949: 233s 1949: 233s 1949: static constexpr unsigned long 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits 233s 1949: = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); 233s 1949: static constexpr int digits10 233s 1949: = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = false; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr unsigned long 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr unsigned long 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr unsigned long 233s 1949: infinity() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned long 233s 1949: quiet_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned long 233s 1949: signaling_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned long 233s 1949: denorm_min() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = true; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr long long 233s 1949: min() noexcept { return -0x7fffffffffffffffLL - 1; } 233s 1949: 233s 1949: static constexpr long long 233s 1949: max() noexcept { return 0x7fffffffffffffffLL; } 233s 1949: 233s 1949: 233s 1949: static constexpr long long 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits 233s 1949: = (sizeof(long long) * 8 - ((long long)(-1) < 0)); 233s 1949: static constexpr int digits10 233s 1949: = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = true; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr long long 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr long long 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr long long 233s 1949: infinity() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr long long 233s 1949: quiet_NaN() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr long long 233s 1949: signaling_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr long long 233s 1949: denorm_min() noexcept { return static_cast(0); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = false; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr unsigned long long 233s 1949: min() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr unsigned long long 233s 1949: max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; } 233s 1949: 233s 1949: 233s 1949: static constexpr unsigned long long 233s 1949: lowest() noexcept { return min(); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits 233s 1949: = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); 233s 1949: static constexpr int digits10 233s 1949: = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); 233s 1949: 233s 1949: static constexpr int max_digits10 = 0; 233s 1949: 233s 1949: static constexpr bool is_signed = false; 233s 1949: static constexpr bool is_integer = true; 233s 1949: static constexpr bool is_exact = true; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr unsigned long long 233s 1949: epsilon() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr unsigned long long 233s 1949: round_error() noexcept { return 0; } 233s 1949: 233s 1949: static constexpr int min_exponent = 0; 233s 1949: static constexpr int min_exponent10 = 0; 233s 1949: static constexpr int max_exponent = 0; 233s 1949: static constexpr int max_exponent10 = 0; 233s 1949: 233s 1949: static constexpr bool has_infinity = false; 233s 1949: static constexpr bool has_quiet_NaN = false; 233s 1949: static constexpr bool has_signaling_NaN = false; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = denorm_absent; 233s 1949: static constexpr bool has_denorm_loss = false; 233s 1949: 233s 1949: static constexpr unsigned long long 233s 1949: infinity() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned long long 233s 1949: quiet_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned long long 233s 1949: signaling_NaN() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr unsigned long long 233s 1949: denorm_min() noexcept 233s 1949: { return static_cast(0); } 233s 1949: 233s 1949: static constexpr bool is_iec559 = false; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = true; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_toward_zero; 233s 1949: }; 233s 1949: # 1676 "/usr/include/c++/15/limits" 3 4 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr float 233s 1949: min() noexcept { return 1.1754943508222875e-38F; } 233s 1949: 233s 1949: static constexpr float 233s 1949: max() noexcept { return 3.4028234663852886e+38F; } 233s 1949: 233s 1949: 233s 1949: static constexpr float 233s 1949: lowest() noexcept { return -3.4028234663852886e+38F; } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits = 24; 233s 1949: static constexpr int digits10 = 6; 233s 1949: 233s 1949: static constexpr int max_digits10 233s 1949: = (2 + (24) * 643L / 2136); 233s 1949: 233s 1949: static constexpr bool is_signed = true; 233s 1949: static constexpr bool is_integer = false; 233s 1949: static constexpr bool is_exact = false; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr float 233s 1949: epsilon() noexcept { return 1.1920928955078125e-7F; } 233s 1949: 233s 1949: static constexpr float 233s 1949: round_error() noexcept { return 0.5F; } 233s 1949: 233s 1949: static constexpr int min_exponent = (-125); 233s 1949: static constexpr int min_exponent10 = (-37); 233s 1949: static constexpr int max_exponent = 128; 233s 1949: static constexpr int max_exponent10 = 38; 233s 1949: 233s 1949: static constexpr bool has_infinity = 1; 233s 1949: static constexpr bool has_quiet_NaN = 1; 233s 1949: static constexpr bool has_signaling_NaN = has_quiet_NaN; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = bool(1) ? denorm_present : denorm_absent; 233s 1949: static constexpr bool has_denorm_loss 233s 1949: = false; 233s 1949: 233s 1949: static constexpr float 233s 1949: infinity() noexcept { return __builtin_huge_valf(); } 233s 1949: 233s 1949: static constexpr float 233s 1949: quiet_NaN() noexcept { return __builtin_nanf(""); } 233s 1949: 233s 1949: static constexpr float 233s 1949: signaling_NaN() noexcept { return __builtin_nansf(""); } 233s 1949: 233s 1949: static constexpr float 233s 1949: denorm_min() noexcept { return 1.4012984643248171e-45F; } 233s 1949: 233s 1949: static constexpr bool is_iec559 233s 1949: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = false; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before 233s 1949: = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_to_nearest; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr double 233s 1949: min() noexcept { return double(2.2250738585072014e-308L); } 233s 1949: 233s 1949: static constexpr double 233s 1949: max() noexcept { return double(1.7976931348623157e+308L); } 233s 1949: 233s 1949: 233s 1949: static constexpr double 233s 1949: lowest() noexcept { return -double(1.7976931348623157e+308L); } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits = 53; 233s 1949: static constexpr int digits10 = 15; 233s 1949: 233s 1949: static constexpr int max_digits10 233s 1949: = (2 + (53) * 643L / 2136); 233s 1949: 233s 1949: static constexpr bool is_signed = true; 233s 1949: static constexpr bool is_integer = false; 233s 1949: static constexpr bool is_exact = false; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr double 233s 1949: epsilon() noexcept { return double(2.2204460492503131e-16L); } 233s 1949: 233s 1949: static constexpr double 233s 1949: round_error() noexcept { return 0.5; } 233s 1949: 233s 1949: static constexpr int min_exponent = (-1021); 233s 1949: static constexpr int min_exponent10 = (-307); 233s 1949: static constexpr int max_exponent = 1024; 233s 1949: static constexpr int max_exponent10 = 308; 233s 1949: 233s 1949: static constexpr bool has_infinity = 1; 233s 1949: static constexpr bool has_quiet_NaN = 1; 233s 1949: static constexpr bool has_signaling_NaN = has_quiet_NaN; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = bool(1) ? denorm_present : denorm_absent; 233s 1949: static constexpr bool has_denorm_loss 233s 1949: = false; 233s 1949: 233s 1949: static constexpr double 233s 1949: infinity() noexcept { return __builtin_huge_val(); } 233s 1949: 233s 1949: static constexpr double 233s 1949: quiet_NaN() noexcept { return __builtin_nan(""); } 233s 1949: 233s 1949: static constexpr double 233s 1949: signaling_NaN() noexcept { return __builtin_nans(""); } 233s 1949: 233s 1949: static constexpr double 233s 1949: denorm_min() noexcept { return double(4.9406564584124654e-324L); } 233s 1949: 233s 1949: static constexpr bool is_iec559 233s 1949: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = false; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before 233s 1949: = false; 233s 1949: static constexpr float_round_style round_style 233s 1949: = round_to_nearest; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template<> 233s 1949: struct numeric_limits 233s 1949: { 233s 1949: static constexpr bool is_specialized = true; 233s 1949: 233s 1949: static constexpr long double 233s 1949: min() noexcept { return 2.2250738585072014e-308L; } 233s 1949: 233s 1949: static constexpr long double 233s 1949: max() noexcept { return 1.7976931348623157e+308L; } 233s 1949: 233s 1949: 233s 1949: static constexpr long double 233s 1949: lowest() noexcept { return -1.7976931348623157e+308L; } 233s 1949: 233s 1949: 233s 1949: static constexpr int digits = 53; 233s 1949: static constexpr int digits10 = 15; 233s 1949: 233s 1949: static constexpr int max_digits10 233s 1949: = (2 + (53) * 643L / 2136); 233s 1949: 233s 1949: static constexpr bool is_signed = true; 233s 1949: static constexpr bool is_integer = false; 233s 1949: static constexpr bool is_exact = false; 233s 1949: static constexpr int radix = 2; 233s 1949: 233s 1949: static constexpr long double 233s 1949: epsilon() noexcept { return 2.2204460492503131e-16L; } 233s 1949: 233s 1949: static constexpr long double 233s 1949: round_error() noexcept { return 0.5L; } 233s 1949: 233s 1949: static constexpr int min_exponent = (-1021); 233s 1949: static constexpr int min_exponent10 = (-307); 233s 1949: static constexpr int max_exponent = 1024; 233s 1949: static constexpr int max_exponent10 = 308; 233s 1949: 233s 1949: static constexpr bool has_infinity = 1; 233s 1949: static constexpr bool has_quiet_NaN = 1; 233s 1949: static constexpr bool has_signaling_NaN = has_quiet_NaN; 233s 1949: static constexpr float_denorm_style has_denorm 233s 1949: = bool(1) ? denorm_present : denorm_absent; 233s 1949: static constexpr bool has_denorm_loss 233s 1949: = false; 233s 1949: 233s 1949: static constexpr long double 233s 1949: infinity() noexcept { return __builtin_huge_vall(); } 233s 1949: 233s 1949: static constexpr long double 233s 1949: quiet_NaN() noexcept { return __builtin_nanl(""); } 233s 1949: 233s 1949: static constexpr long double 233s 1949: signaling_NaN() noexcept { return __builtin_nansl(""); } 233s 1949: 233s 1949: static constexpr long double 233s 1949: denorm_min() noexcept { return 4.9406564584124654e-324L; } 233s 1949: 233s 1949: static constexpr bool is_iec559 233s 1949: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 233s 1949: static constexpr bool is_bounded = true; 233s 1949: static constexpr bool is_modulo = false; 233s 1949: 233s 1949: static constexpr bool traps = false; 233s 1949: static constexpr bool tinyness_before = 233s 1949: false; 233s 1949: static constexpr float_round_style round_style = 233s 1949: round_to_nearest; 233s 1949: }; 233s 1949: # 1996 "/usr/include/c++/15/limits" 3 4 233s 1949: __extension__ template<> struct numeric_limits<_Float32> { static constexpr bool is_specialized = true; static constexpr _Float32 min() noexcept { return 1.1754943508222875e-38F32; } static constexpr _Float32 max() noexcept { return 3.4028234663852886e+38F32; } static constexpr _Float32 lowest() noexcept { return -3.4028234663852886e+38F32; } static constexpr int digits = 24; static constexpr int digits10 = 6; static constexpr int max_digits10 = (2 + (24) * 643L / 2136); static constexpr bool is_signed = true; static constexpr bool is_integer = false; static constexpr bool is_exact = false; static constexpr int radix = 2; static constexpr _Float32 epsilon() noexcept { return 1.1920928955078125e-7F32; } static constexpr _Float32 round_error() noexcept { return 0.5F32; } static constexpr int min_exponent = (-125); static constexpr int min_exponent10 = (-37); static constexpr int max_exponent = 128; static constexpr int max_exponent10 = 38; static constexpr bool has_infinity = 1; static constexpr bool has_quiet_NaN = 1; static constexpr bool has_signaling_NaN = has_quiet_NaN; static constexpr float_denorm_style has_denorm = bool(1) ? denorm_present : denorm_absent; static constexpr bool has_denorm_loss = false; static constexpr _Float32 infinity() noexcept { return __builtin_huge_valf32(); } static constexpr _Float32 quiet_NaN() noexcept { return __builtin_nanf32(""); } static constexpr _Float32 signaling_NaN() noexcept { return __builtin_nansf32(""); } static constexpr _Float32 denorm_min() noexcept { return 1.4012984643248171e-45F32; } static constexpr bool is_iec559 = has_infinity && has_quiet_NaN && has_denorm == denorm_present; static constexpr bool is_bounded = true; static constexpr bool is_modulo = false; static constexpr bool traps = false; static constexpr bool tinyness_before = false; static constexpr float_round_style round_style = round_to_nearest; }; 233s 1949: 233s 1949: 233s 1949: __extension__ template<> struct numeric_limits<_Float64> { static constexpr bool is_specialized = true; static constexpr _Float64 min() noexcept { return 2.2250738585072014e-308F64; } static constexpr _Float64 max() noexcept { return 1.7976931348623157e+308F64; } static constexpr _Float64 lowest() noexcept { return -1.7976931348623157e+308F64; } static constexpr int digits = 53; static constexpr int digits10 = 15; static constexpr int max_digits10 = (2 + (53) * 643L / 2136); static constexpr bool is_signed = true; static constexpr bool is_integer = false; static constexpr bool is_exact = false; static constexpr int radix = 2; static constexpr _Float64 epsilon() noexcept { return 2.2204460492503131e-16F64; } static constexpr _Float64 round_error() noexcept { return 0.5F64; } static constexpr int min_exponent = (-1021); static constexpr int min_exponent10 = (-307); static constexpr int max_exponent = 1024; static constexpr int max_exponent10 = 308; static constexpr bool has_infinity = 1; static constexpr bool has_quiet_NaN = 1; static constexpr bool has_signaling_NaN = has_quiet_NaN; static constexpr float_denorm_style has_denorm = bool(1) ? denorm_present : denorm_absent; static constexpr bool has_denorm_loss = false; static constexpr _Float64 infinity() noexcept { return __builtin_huge_valf64(); } static constexpr _Float64 quiet_NaN() noexcept { return __builtin_nanf64(""); } static constexpr _Float64 signaling_NaN() noexcept { return __builtin_nansf64(""); } static constexpr _Float64 denorm_min() noexcept { return 4.9406564584124654e-324F64; } static constexpr bool is_iec559 = has_infinity && has_quiet_NaN && has_denorm == denorm_present; static constexpr bool is_bounded = true; static constexpr bool is_modulo = false; static constexpr bool traps = false; static constexpr bool tinyness_before = false; static constexpr float_round_style round_style = round_to_nearest; }; 233s 1949: # 2229 "/usr/include/c++/15/limits" 3 4 233s 1949: 233s 1949: } 233s 1949: # 2239 "/usr/include/c++/15/limits" 3 4 233s 1949: #pragma GCC diagnostic pop 233s 1949: # 3162 "/usr/include/doctest/doctest.h" 2 3 4 233s 1949: # 1 "/usr/include/c++/15/utility" 1 3 4 233s 1949: # 70 "/usr/include/c++/15/utility" 3 4 233s 1949: # 1 "/usr/include/c++/15/bits/stl_relops.h" 1 3 4 233s 1949: # 62 "/usr/include/c++/15/bits/stl_relops.h" 3 4 233s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: namespace rel_ops 233s 1949: { 233s 1949: # 86 "/usr/include/c++/15/bits/stl_relops.h" 3 4 233s 1949: template 233s 1949: inline bool 233s 1949: operator!=(const _Tp& __x, const _Tp& __y) 233s 1949: { return !(__x == __y); } 233s 1949: # 99 "/usr/include/c++/15/bits/stl_relops.h" 3 4 233s 1949: template 233s 1949: inline bool 233s 1949: operator>(const _Tp& __x, const _Tp& __y) 233s 1949: { return __y < __x; } 233s 1949: # 112 "/usr/include/c++/15/bits/stl_relops.h" 3 4 233s 1949: template 233s 1949: inline bool 233s 1949: operator<=(const _Tp& __x, const _Tp& __y) 233s 1949: { return !(__y < __x); } 233s 1949: # 125 "/usr/include/c++/15/bits/stl_relops.h" 3 4 233s 1949: template 233s 1949: inline bool 233s 1949: operator>=(const _Tp& __x, const _Tp& __y) 233s 1949: { return !(__x < __y); } 233s 1949: } 233s 1949: 233s 1949: 233s 1949: } 233s 1949: # 71 "/usr/include/c++/15/utility" 2 3 4 233s 1949: # 1 "/usr/include/c++/15/bits/stl_pair.h" 1 3 4 233s 1949: # 60 "/usr/include/c++/15/bits/stl_pair.h" 3 4 233s 1949: # 1 "/usr/include/c++/15/type_traits" 1 3 4 233s 1949: # 67 "/usr/include/c++/15/type_traits" 3 4 233s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 233s 1949: # 68 "/usr/include/c++/15/type_traits" 2 3 4 233s 1949: 233s 1949: extern "C++" 233s 1949: { 233s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 233s 1949: { 233s 1949: 233s 1949: 233s 1949: template 233s 1949: class reference_wrapper; 233s 1949: # 92 "/usr/include/c++/15/type_traits" 3 4 233s 1949: template 233s 1949: struct integral_constant 233s 1949: { 233s 1949: static constexpr _Tp value = __v; 233s 1949: using value_type = _Tp; 233s 1949: using type = integral_constant<_Tp, __v>; 233s 1949: constexpr operator value_type() const noexcept { return value; } 233s 1949: 233s 1949: 233s 1949: constexpr value_type operator()() const noexcept { return value; } 233s 1949: 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: constexpr _Tp integral_constant<_Tp, __v>::value; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: using __bool_constant = integral_constant; 233s 1949: 233s 1949: 233s 1949: 233s 1949: using true_type = __bool_constant; 233s 1949: 233s 1949: 233s 1949: using false_type = __bool_constant; 233s 1949: # 133 "/usr/include/c++/15/type_traits" 3 4 233s 1949: template 233s 1949: struct enable_if 233s 1949: { }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct enable_if 233s 1949: { using type = _Tp; }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: using __enable_if_t = typename enable_if<_Cond, _Tp>::type; 233s 1949: 233s 1949: template 233s 1949: struct __conditional 233s 1949: { 233s 1949: template 233s 1949: using type = _Tp; 233s 1949: }; 233s 1949: 233s 1949: template<> 233s 1949: struct __conditional 233s 1949: { 233s 1949: template 233s 1949: using type = _Up; 233s 1949: }; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: using __conditional_t 233s 1949: = typename __conditional<_Cond>::template type<_If, _Else>; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __type_identity 233s 1949: { using type = _Type; }; 233s 1949: 233s 1949: template 233s 1949: using __type_identity_t = typename __type_identity<_Tp>::type; 233s 1949: 233s 1949: namespace __detail 233s 1949: { 233s 1949: 233s 1949: template 233s 1949: using __first_t = _Tp; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: auto __or_fn(int) -> __first_t...>; 233s 1949: 233s 1949: template 233s 1949: auto __or_fn(...) -> true_type; 233s 1949: 233s 1949: template 233s 1949: auto __and_fn(int) -> __first_t...>; 233s 1949: 233s 1949: template 233s 1949: auto __and_fn(...) -> false_type; 233s 1949: } 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __or_ 233s 1949: : decltype(__detail::__or_fn<_Bn...>(0)) 233s 1949: { }; 233s 1949: 233s 1949: template 233s 1949: struct __and_ 233s 1949: : decltype(__detail::__and_fn<_Bn...>(0)) 233s 1949: { }; 233s 1949: 233s 1949: template 233s 1949: struct __not_ 233s 1949: : __bool_constant 233s 1949: { }; 233s 1949: # 283 "/usr/include/c++/15/type_traits" 3 4 233s 1949: template 233s 1949: struct is_reference; 233s 1949: template 233s 1949: struct is_function; 233s 1949: template 233s 1949: struct is_void; 233s 1949: template 233s 1949: struct remove_cv; 233s 1949: template 233s 1949: struct is_const; 233s 1949: 233s 1949: 233s 1949: template 233s 1949: struct __is_array_unknown_bounds; 233s 1949: 233s 1949: 233s 1949: 233s 1949: 233s 1949: template 234s 1949: constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) 234s 1949: { return {}; } 234s 1949: 234s 1949: template 234s 1949: constexpr typename __or_< 234s 1949: is_reference<_NestedType>, 234s 1949: is_function<_NestedType>, 234s 1949: is_void<_NestedType>, 234s 1949: __is_array_unknown_bounds<_NestedType> 234s 1949: >::type __is_complete_or_unbounded(_TypeIdentity) 234s 1949: { return {}; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __remove_cv_t = typename remove_cv<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_void 234s 1949: : public false_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct is_void 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct is_void 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct is_void 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct is_void 234s 1949: : public true_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_integral_helper 234s 1949: : public false_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_integral_helper 234s 1949: : public true_type { }; 234s 1949: # 466 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_integral 234s 1949: : public __is_integral_helper<__remove_cv_t<_Tp>>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_floating_point_helper 234s 1949: : public false_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_floating_point_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_floating_point_helper 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_floating_point_helper 234s 1949: : public true_type { }; 234s 1949: # 526 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_floating_point 234s 1949: : public __is_floating_point_helper<__remove_cv_t<_Tp>>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_array 234s 1949: : public __bool_constant<__is_array(_Tp)> 234s 1949: { }; 234s 1949: # 553 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_pointer 234s 1949: : public __bool_constant<__is_pointer(_Tp)> 234s 1949: { }; 234s 1949: # 580 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_lvalue_reference 234s 1949: : public false_type { }; 234s 1949: 234s 1949: template 234s 1949: struct is_lvalue_reference<_Tp&> 234s 1949: : public true_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_rvalue_reference 234s 1949: : public false_type { }; 234s 1949: 234s 1949: template 234s 1949: struct is_rvalue_reference<_Tp&&> 234s 1949: : public true_type { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_member_object_pointer 234s 1949: : public __bool_constant<__is_member_object_pointer(_Tp)> 234s 1949: { }; 234s 1949: # 621 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_member_function_pointer 234s 1949: : public __bool_constant<__is_member_function_pointer(_Tp)> 234s 1949: { }; 234s 1949: # 642 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_enum 234s 1949: : public __bool_constant<__is_enum(_Tp)> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_union 234s 1949: : public __bool_constant<__is_union(_Tp)> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_class 234s 1949: : public __bool_constant<__is_class(_Tp)> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_function 234s 1949: : public __bool_constant<__is_function(_Tp)> 234s 1949: { }; 234s 1949: # 681 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_null_pointer 234s 1949: : public false_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct is_null_pointer 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct is_null_pointer 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct is_null_pointer 234s 1949: : public true_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct is_null_pointer 234s 1949: : public true_type { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_nullptr_t 234s 1949: : public is_null_pointer<_Tp> 234s 1949: { } __attribute__ ((__deprecated__ ("use '" "std::is_null_pointer" "' instead"))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_reference 234s 1949: : public __bool_constant<__is_reference(_Tp)> 234s 1949: { }; 234s 1949: # 735 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_arithmetic 234s 1949: : public __or_, is_floating_point<_Tp>>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_fundamental 234s 1949: : public __or_, is_void<_Tp>, 234s 1949: is_null_pointer<_Tp>>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_object 234s 1949: : public __bool_constant<__is_object(_Tp)> 234s 1949: { }; 234s 1949: # 761 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_member_pointer; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_scalar 234s 1949: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, 234s 1949: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_compound 234s 1949: : public __bool_constant::value> { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_member_pointer 234s 1949: : public __bool_constant<__is_member_pointer(_Tp)> 234s 1949: { }; 234s 1949: # 799 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_same; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __is_one_of = __or_...>; 234s 1949: 234s 1949: 234s 1949: __extension__ 234s 1949: template 234s 1949: using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>, 234s 1949: signed char, signed short, signed int, signed long, 234s 1949: signed long long 234s 1949: # 824 "/usr/include/c++/15/type_traits" 3 4 234s 1949: >; 234s 1949: 234s 1949: 234s 1949: __extension__ 234s 1949: template 234s 1949: using __is_unsigned_integer = __is_one_of<__remove_cv_t<_Tp>, 234s 1949: unsigned char, unsigned short, unsigned int, unsigned long, 234s 1949: unsigned long long 234s 1949: # 844 "/usr/include/c++/15/type_traits" 3 4 234s 1949: >; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __is_standard_integer 234s 1949: = __or_<__is_signed_integer<_Tp>, __is_unsigned_integer<_Tp>>; 234s 1949: 234s 1949: 234s 1949: template using __void_t = void; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_const 234s 1949: : public __bool_constant<__is_const(_Tp)> 234s 1949: { }; 234s 1949: # 875 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_volatile 234s 1949: : public __bool_constant<__is_volatile(_Tp)> 234s 1949: { }; 234s 1949: # 896 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct 234s 1949: 234s 1949: is_trivial 234s 1949: : public __bool_constant<__is_trivial(_Tp)> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_trivially_copyable 234s 1949: : public __bool_constant<__is_trivially_copyable(_Tp)> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_standard_layout 234s 1949: : public __bool_constant<__is_standard_layout(_Tp)> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct 234s 1949: 234s 1949: is_pod 234s 1949: : public __bool_constant<__is_pod(_Tp)> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct 234s 1949: 234s 1949: is_literal_type 234s 1949: : public __bool_constant<__is_literal_type(_Tp)> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_empty 234s 1949: : public __bool_constant<__is_empty(_Tp)> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_polymorphic 234s 1949: : public __bool_constant<__is_polymorphic(_Tp)> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_final 234s 1949: : public __bool_constant<__is_final(_Tp)> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_abstract 234s 1949: : public __bool_constant<__is_abstract(_Tp)> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template::value> 234s 1949: struct __is_signed_helper 234s 1949: : public false_type { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_signed_helper<_Tp, true> 234s 1949: : public __bool_constant<_Tp(-1) < _Tp(0)> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_signed 234s 1949: : public __is_signed_helper<_Tp>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_unsigned 234s 1949: : public __and_, __not_>>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _Up 234s 1949: __declval(int); 234s 1949: 234s 1949: template 234s 1949: _Tp 234s 1949: __declval(long); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto declval() noexcept -> decltype(__declval<_Tp>(0)); 234s 1949: 234s 1949: template 234s 1949: struct remove_all_extents; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_array_known_bounds 234s 1949: : public false_type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_array_known_bounds<_Tp[_Size]> 234s 1949: : public true_type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_array_unknown_bounds 234s 1949: : public false_type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_array_unknown_bounds<_Tp[]> 234s 1949: : public true_type 234s 1949: { }; 234s 1949: # 1048 "/usr/include/c++/15/type_traits" 3 4 234s 1949: struct __do_is_destructible_impl 234s 1949: { 234s 1949: template().~_Tp())> 234s 1949: static true_type __test(int); 234s 1949: 234s 1949: template 234s 1949: static false_type __test(...); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __is_destructible_impl 234s 1949: : public __do_is_destructible_impl 234s 1949: { 234s 1949: using type = decltype(__test<_Tp>(0)); 234s 1949: }; 234s 1949: 234s 1949: template, 234s 1949: __is_array_unknown_bounds<_Tp>, 234s 1949: is_function<_Tp>>::value, 234s 1949: bool = __or_, is_scalar<_Tp>>::value> 234s 1949: struct __is_destructible_safe; 234s 1949: 234s 1949: template 234s 1949: struct __is_destructible_safe<_Tp, false, false> 234s 1949: : public __is_destructible_impl::type>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_destructible_safe<_Tp, true, false> 234s 1949: : public false_type { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_destructible_safe<_Tp, false, true> 234s 1949: : public true_type { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_destructible 234s 1949: : public __is_destructible_safe<_Tp>::type 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __do_is_nt_destructible_impl 234s 1949: { 234s 1949: template 234s 1949: static __bool_constant().~_Tp())> 234s 1949: __test(int); 234s 1949: 234s 1949: template 234s 1949: static false_type __test(...); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __is_nt_destructible_impl 234s 1949: : public __do_is_nt_destructible_impl 234s 1949: { 234s 1949: using type = decltype(__test<_Tp>(0)); 234s 1949: }; 234s 1949: 234s 1949: template, 234s 1949: __is_array_unknown_bounds<_Tp>, 234s 1949: is_function<_Tp>>::value, 234s 1949: bool = __or_, is_scalar<_Tp>>::value> 234s 1949: struct __is_nt_destructible_safe; 234s 1949: 234s 1949: template 234s 1949: struct __is_nt_destructible_safe<_Tp, false, false> 234s 1949: : public __is_nt_destructible_impl::type>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_nt_destructible_safe<_Tp, true, false> 234s 1949: : public false_type { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_nt_destructible_safe<_Tp, false, true> 234s 1949: : public true_type { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_nothrow_destructible 234s 1949: : public __is_nt_destructible_safe<_Tp>::type 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __is_constructible_impl 234s 1949: = __bool_constant<__is_constructible(_Tp, _Args...)>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_constructible 234s 1949: : public __is_constructible_impl<_Tp, _Args...> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_default_constructible 234s 1949: : public __is_constructible_impl<_Tp> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __add_lval_ref_t = __add_lvalue_reference(_Tp); 234s 1949: # 1192 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_copy_constructible 234s 1949: : public __is_constructible_impl<_Tp, __add_lval_ref_t> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __add_rval_ref_t = __add_rvalue_reference(_Tp); 234s 1949: # 1219 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_move_constructible 234s 1949: : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __is_nothrow_constructible_impl 234s 1949: = __bool_constant<__is_nothrow_constructible(_Tp, _Args...)>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_nothrow_constructible 234s 1949: : public __is_nothrow_constructible_impl<_Tp, _Args...> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_nothrow_default_constructible 234s 1949: : public __is_nothrow_constructible_impl<_Tp> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_nothrow_copy_constructible 234s 1949: : public __is_nothrow_constructible_impl<_Tp, __add_lval_ref_t> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_nothrow_move_constructible 234s 1949: : public __is_nothrow_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_assignable 234s 1949: : public __is_assignable_impl<_Tp, _Up> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_copy_assignable 234s 1949: : public __is_assignable_impl<__add_lval_ref_t<_Tp>, 234s 1949: __add_lval_ref_t> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_move_assignable 234s 1949: : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __is_nothrow_assignable_impl 234s 1949: = __bool_constant<__is_nothrow_assignable(_Tp, _Up)>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_nothrow_assignable 234s 1949: : public __is_nothrow_assignable_impl<_Tp, _Up> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_nothrow_copy_assignable 234s 1949: : public __is_nothrow_assignable_impl<__add_lval_ref_t<_Tp>, 234s 1949: __add_lval_ref_t> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_nothrow_move_assignable 234s 1949: : public __is_nothrow_assignable_impl<__add_lval_ref_t<_Tp>, 234s 1949: __add_rval_ref_t<_Tp>> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __is_trivially_constructible_impl 234s 1949: = __bool_constant<__is_trivially_constructible(_Tp, _Args...)>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_trivially_constructible 234s 1949: : public __is_trivially_constructible_impl<_Tp, _Args...> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_trivially_default_constructible 234s 1949: : public __is_trivially_constructible_impl<_Tp> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: # 1371 "/usr/include/c++/15/type_traits" 3 4 234s 1949: struct __do_is_implicitly_default_constructible_impl 234s 1949: { 234s 1949: template 234s 1949: static void __helper(const _Tp&); 234s 1949: 234s 1949: template 234s 1949: static true_type __test(const _Tp&, 234s 1949: decltype(__helper({}))* = 0); 234s 1949: 234s 1949: static false_type __test(...); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __is_implicitly_default_constructible_impl 234s 1949: : public __do_is_implicitly_default_constructible_impl 234s 1949: { 234s 1949: using type = decltype(__test(declval<_Tp>())); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __is_implicitly_default_constructible_safe 234s 1949: : public __is_implicitly_default_constructible_impl<_Tp>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_implicitly_default_constructible 234s 1949: : public __and_<__is_constructible_impl<_Tp>, 234s 1949: __is_implicitly_default_constructible_safe<_Tp>>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_trivially_copy_constructible 234s 1949: : public __is_trivially_constructible_impl<_Tp, __add_lval_ref_t> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_trivially_move_constructible 234s 1949: : public __is_trivially_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __is_trivially_assignable_impl 234s 1949: = __bool_constant<__is_trivially_assignable(_Tp, _Up)>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_trivially_assignable 234s 1949: : public __is_trivially_assignable_impl<_Tp, _Up> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_trivially_copy_assignable 234s 1949: : public __is_trivially_assignable_impl<__add_lval_ref_t<_Tp>, 234s 1949: __add_lval_ref_t> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_trivially_move_assignable 234s 1949: : public __is_trivially_assignable_impl<__add_lval_ref_t<_Tp>, 234s 1949: __add_rval_ref_t<_Tp>> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_trivially_destructible 234s 1949: : public __and_<__is_destructible_safe<_Tp>, 234s 1949: __bool_constant<__has_trivial_destructor(_Tp)>>::type 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct has_virtual_destructor 234s 1949: : public __bool_constant<__has_virtual_destructor(_Tp)> 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct alignment_of 234s 1949: : public integral_constant 234s 1949: { 234s 1949: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 234s 1949: "template argument must be a complete class or an unbounded array"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct rank 234s 1949: : public integral_constant { }; 234s 1949: # 1508 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct extent 234s 1949: : public integral_constant { }; 234s 1949: 234s 1949: template 234s 1949: struct extent<_Tp[_Size], 0> 234s 1949: : public integral_constant { }; 234s 1949: 234s 1949: template 234s 1949: struct extent<_Tp[_Size], _Uint> 234s 1949: : public extent<_Tp, _Uint - 1>::type { }; 234s 1949: 234s 1949: template 234s 1949: struct extent<_Tp[], 0> 234s 1949: : public integral_constant { }; 234s 1949: 234s 1949: template 234s 1949: struct extent<_Tp[], _Uint> 234s 1949: : public extent<_Tp, _Uint - 1>::type { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_same 234s 1949: : public __bool_constant<__is_same(_Tp, _Up)> 234s 1949: { }; 234s 1949: # 1550 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_base_of 234s 1949: : public __bool_constant<__is_base_of(_Base, _Derived)> 234s 1949: { }; 234s 1949: # 1565 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct is_convertible 234s 1949: : public __bool_constant<__is_convertible(_From, _To)> 234s 1949: { }; 234s 1949: # 1608 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: using __is_array_convertible 234s 1949: = is_convertible<_FromElementType(*)[], _ToElementType(*)[]>; 234s 1949: # 1668 "/usr/include/c++/15/type_traits" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++14-extensions" 234s 1949: template 234s 1949: struct __is_nothrow_new_constructible_impl 234s 1949: : __bool_constant< 234s 1949: noexcept(::new(std::declval()) _Tp(std::declval<_Args>()...)) 234s 1949: > 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: constexpr bool __is_nothrow_new_constructible 234s 1949: = __and_, 234s 1949: __is_nothrow_new_constructible_impl<_Tp, _Args...>>::value; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct remove_const 234s 1949: { using type = _Tp; }; 234s 1949: 234s 1949: template 234s 1949: struct remove_const<_Tp const> 234s 1949: { using type = _Tp; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct remove_volatile 234s 1949: { using type = _Tp; }; 234s 1949: 234s 1949: template 234s 1949: struct remove_volatile<_Tp volatile> 234s 1949: { using type = _Tp; }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct remove_cv 234s 1949: { using type = __remove_cv(_Tp); }; 234s 1949: # 1727 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct add_const 234s 1949: { using type = _Tp const; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct add_volatile 234s 1949: { using type = _Tp volatile; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct add_cv 234s 1949: { using type = _Tp const volatile; }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using remove_const_t = typename remove_const<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using remove_volatile_t = typename remove_volatile<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using remove_cv_t = typename remove_cv<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using add_const_t = typename add_const<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using add_volatile_t = typename add_volatile<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using add_cv_t = typename add_cv<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct remove_reference 234s 1949: { using type = __remove_reference(_Tp); }; 234s 1949: # 1789 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct add_lvalue_reference 234s 1949: { using type = __add_lval_ref_t<_Tp>; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct add_rvalue_reference 234s 1949: { using type = __add_rval_ref_t<_Tp>; }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using remove_reference_t = typename remove_reference<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __cv_selector; 234s 1949: 234s 1949: template 234s 1949: struct __cv_selector<_Unqualified, false, false> 234s 1949: { using __type = _Unqualified; }; 234s 1949: 234s 1949: template 234s 1949: struct __cv_selector<_Unqualified, false, true> 234s 1949: { using __type = volatile _Unqualified; }; 234s 1949: 234s 1949: template 234s 1949: struct __cv_selector<_Unqualified, true, false> 234s 1949: { using __type = const _Unqualified; }; 234s 1949: 234s 1949: template 234s 1949: struct __cv_selector<_Unqualified, true, true> 234s 1949: { using __type = const volatile _Unqualified; }; 234s 1949: 234s 1949: template::value, 234s 1949: bool _IsVol = is_volatile<_Qualified>::value> 234s 1949: class __match_cv_qualifiers 234s 1949: { 234s 1949: using __match = __cv_selector<_Unqualified, _IsConst, _IsVol>; 234s 1949: 234s 1949: public: 234s 1949: using __type = typename __match::__type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __make_unsigned 234s 1949: { using __type = _Tp; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_unsigned 234s 1949: { using __type = unsigned char; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_unsigned 234s 1949: { using __type = unsigned char; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_unsigned 234s 1949: { using __type = unsigned short; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_unsigned 234s 1949: { using __type = unsigned int; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_unsigned 234s 1949: { using __type = unsigned long; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_unsigned 234s 1949: { using __type = unsigned long long; }; 234s 1949: # 1902 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template::value, 234s 1949: bool _IsEnum = __is_enum(_Tp)> 234s 1949: class __make_unsigned_selector; 234s 1949: 234s 1949: template 234s 1949: class __make_unsigned_selector<_Tp, true, false> 234s 1949: { 234s 1949: using __unsigned_type 234s 1949: = typename __make_unsigned<__remove_cv_t<_Tp>>::__type; 234s 1949: 234s 1949: public: 234s 1949: using __type 234s 1949: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 234s 1949: }; 234s 1949: 234s 1949: class __make_unsigned_selector_base 234s 1949: { 234s 1949: protected: 234s 1949: template struct _List { }; 234s 1949: 234s 1949: template 234s 1949: struct _List<_Tp, _Up...> : _List<_Up...> 234s 1949: { static constexpr size_t __size = sizeof(_Tp); }; 234s 1949: 234s 1949: template 234s 1949: struct __select; 234s 1949: 234s 1949: template 234s 1949: struct __select<_Sz, _List<_Uint, _UInts...>, true> 234s 1949: { using __type = _Uint; }; 234s 1949: 234s 1949: template 234s 1949: struct __select<_Sz, _List<_Uint, _UInts...>, false> 234s 1949: : __select<_Sz, _List<_UInts...>> 234s 1949: { }; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class __make_unsigned_selector<_Tp, false, true> 234s 1949: : __make_unsigned_selector_base 234s 1949: { 234s 1949: 234s 1949: using _UInts = _List; 234s 1949: 234s 1949: using __unsigned_type = typename __select::__type; 234s 1949: 234s 1949: public: 234s 1949: using __type 234s 1949: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct __make_unsigned 234s 1949: { 234s 1949: using __type 234s 1949: = typename __make_unsigned_selector::__type; 234s 1949: }; 234s 1949: # 1976 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template<> 234s 1949: struct __make_unsigned 234s 1949: { 234s 1949: using __type 234s 1949: = typename __make_unsigned_selector::__type; 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_unsigned 234s 1949: { 234s 1949: using __type 234s 1949: = typename __make_unsigned_selector::__type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct make_unsigned 234s 1949: { using type = typename __make_unsigned_selector<_Tp>::__type; }; 234s 1949: 234s 1949: 234s 1949: template<> struct make_unsigned; 234s 1949: template<> struct make_unsigned; 234s 1949: template<> struct make_unsigned; 234s 1949: template<> struct make_unsigned; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __make_signed 234s 1949: { using __type = _Tp; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_signed 234s 1949: { using __type = signed char; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_signed 234s 1949: { using __type = signed char; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_signed 234s 1949: { using __type = signed short; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_signed 234s 1949: { using __type = signed int; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_signed 234s 1949: { using __type = signed long; }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_signed 234s 1949: { using __type = signed long long; }; 234s 1949: # 2062 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template::value, 234s 1949: bool _IsEnum = __is_enum(_Tp)> 234s 1949: class __make_signed_selector; 234s 1949: 234s 1949: template 234s 1949: class __make_signed_selector<_Tp, true, false> 234s 1949: { 234s 1949: using __signed_type 234s 1949: = typename __make_signed<__remove_cv_t<_Tp>>::__type; 234s 1949: 234s 1949: public: 234s 1949: using __type 234s 1949: = typename __match_cv_qualifiers<_Tp, __signed_type>::__type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class __make_signed_selector<_Tp, false, true> 234s 1949: { 234s 1949: using __unsigned_type = typename __make_unsigned_selector<_Tp>::__type; 234s 1949: 234s 1949: public: 234s 1949: using __type = typename __make_signed_selector<__unsigned_type>::__type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct __make_signed 234s 1949: { 234s 1949: using __type 234s 1949: = typename __make_signed_selector::__type; 234s 1949: }; 234s 1949: # 2108 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template<> 234s 1949: struct __make_signed 234s 1949: { 234s 1949: using __type 234s 1949: = typename __make_signed_selector::__type; 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_signed 234s 1949: { 234s 1949: using __type 234s 1949: = typename __make_signed_selector::__type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct make_signed 234s 1949: { using type = typename __make_signed_selector<_Tp>::__type; }; 234s 1949: 234s 1949: 234s 1949: template<> struct make_signed; 234s 1949: template<> struct make_signed; 234s 1949: template<> struct make_signed; 234s 1949: template<> struct make_signed; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using make_signed_t = typename make_signed<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using make_unsigned_t = typename make_unsigned<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct remove_extent 234s 1949: { using type = __remove_extent(_Tp); }; 234s 1949: # 2170 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct remove_all_extents 234s 1949: { using type = __remove_all_extents(_Tp); }; 234s 1949: # 2189 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: using remove_extent_t = typename remove_extent<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using remove_all_extents_t = typename remove_all_extents<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct remove_pointer 234s 1949: { using type = __remove_pointer(_Tp); }; 234s 1949: # 2221 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct add_pointer 234s 1949: { using type = __add_pointer(_Tp); }; 234s 1949: # 2249 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: using remove_pointer_t = typename remove_pointer<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using add_pointer_t = typename add_pointer<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __attribute__((__aligned__)) __aligned_storage_max_align_t 234s 1949: { }; 234s 1949: 234s 1949: constexpr size_t 234s 1949: __aligned_storage_default_alignment([[__maybe_unused__]] size_t __len) 234s 1949: { 234s 1949: # 2280 "/usr/include/c++/15/type_traits" 3 4 234s 1949: return alignof(__aligned_storage_max_align_t); 234s 1949: 234s 1949: } 234s 1949: # 2316 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct 234s 1949: 234s 1949: aligned_storage 234s 1949: { 234s 1949: struct type 234s 1949: { 234s 1949: alignas(_Align) unsigned char __data[_Len]; 234s 1949: }; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __strictest_alignment 234s 1949: { 234s 1949: static const size_t _S_alignment = 0; 234s 1949: static const size_t _S_size = 0; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __strictest_alignment<_Tp, _Types...> 234s 1949: { 234s 1949: static const size_t _S_alignment = 234s 1949: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment 234s 1949: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; 234s 1949: static const size_t _S_size = 234s 1949: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size 234s 1949: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; 234s 1949: }; 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: # 2361 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct 234s 1949: 234s 1949: aligned_union 234s 1949: { 234s 1949: private: 234s 1949: static_assert(sizeof...(_Types) != 0, "At least one type is required"); 234s 1949: 234s 1949: using __strictest = __strictest_alignment<_Types...>; 234s 1949: static const size_t _S_len = _Len > __strictest::_S_size 234s 1949: ? _Len : __strictest::_S_size; 234s 1949: public: 234s 1949: 234s 1949: static const size_t alignment_value = __strictest::_S_alignment; 234s 1949: 234s 1949: using type = typename aligned_storage<_S_len, alignment_value>::type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: const size_t aligned_union<_Len, _Types...>::alignment_value; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct decay 234s 1949: { using type = __decay(_Tp); }; 234s 1949: # 2426 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct __strip_reference_wrapper 234s 1949: { 234s 1949: using __type = _Tp; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __strip_reference_wrapper > 234s 1949: { 234s 1949: using __type = _Tp&; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __decay_t = typename decay<_Tp>::type; 234s 1949: 234s 1949: template 234s 1949: using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _Require = __enable_if_t<__and_<_Cond...>::value>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __remove_cvref_t 234s 1949: = typename remove_cv::type>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct conditional 234s 1949: { using type = _Iftrue; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct conditional 234s 1949: { using type = _Iffalse; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct common_type; 234s 1949: # 2482 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct __success_type 234s 1949: { using type = _Tp; }; 234s 1949: 234s 1949: struct __failure_type 234s 1949: { }; 234s 1949: 234s 1949: struct __do_common_type_impl 234s 1949: { 234s 1949: template 234s 1949: using __cond_t 234s 1949: = decltype(true ? std::declval<_Tp>() : std::declval<_Up>()); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: static __success_type<__decay_t<__cond_t<_Tp, _Up>>> 234s 1949: _S_test(int); 234s 1949: # 2509 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: static __failure_type 234s 1949: _S_test_2(...); 234s 1949: 234s 1949: template 234s 1949: static decltype(_S_test_2<_Tp, _Up>(0)) 234s 1949: _S_test(...); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct common_type<> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct common_type<_Tp0> 234s 1949: : public common_type<_Tp0, _Tp0> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template, typename _Dp2 = __decay_t<_Tp2>> 234s 1949: struct __common_type_impl 234s 1949: { 234s 1949: 234s 1949: 234s 1949: using type = common_type<_Dp1, _Dp2>; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __common_type_impl<_Tp1, _Tp2, _Tp1, _Tp2> 234s 1949: : private __do_common_type_impl 234s 1949: { 234s 1949: 234s 1949: 234s 1949: using type = decltype(_S_test<_Tp1, _Tp2>(0)); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct common_type<_Tp1, _Tp2> 234s 1949: : public __common_type_impl<_Tp1, _Tp2>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __common_type_pack 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __common_type_fold; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct common_type<_Tp1, _Tp2, _Rp...> 234s 1949: : public __common_type_fold, 234s 1949: __common_type_pack<_Rp...>> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __common_type_fold<_CTp, __common_type_pack<_Rp...>, 234s 1949: __void_t> 234s 1949: : public common_type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __common_type_fold<_CTp, _Rp, void> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __underlying_type_impl 234s 1949: { 234s 1949: using type = __underlying_type(_Tp); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __underlying_type_impl<_Tp, false> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct underlying_type 234s 1949: : public __underlying_type_impl<_Tp> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __declval_protector 234s 1949: { 234s 1949: static const bool __stop = false; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto declval() noexcept -> decltype(__declval<_Tp>(0)) 234s 1949: { 234s 1949: static_assert(__declval_protector<_Tp>::__stop, 234s 1949: "declval() must not be used!"); 234s 1949: return __declval<_Tp>(0); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct result_of; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __invoke_memfun_ref { }; 234s 1949: struct __invoke_memfun_deref { }; 234s 1949: struct __invoke_memobj_ref { }; 234s 1949: struct __invoke_memobj_deref { }; 234s 1949: struct __invoke_other { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __result_of_success : __success_type<_Tp> 234s 1949: { using __invoke_type = _Tag; }; 234s 1949: 234s 1949: 234s 1949: struct __result_of_memfun_ref_impl 234s 1949: { 234s 1949: template 234s 1949: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) 234s 1949: ), __invoke_memfun_ref> _S_test(int); 234s 1949: 234s 1949: template 234s 1949: static __failure_type _S_test(...); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_memfun_ref 234s 1949: : private __result_of_memfun_ref_impl 234s 1949: { 234s 1949: using type = decltype(_S_test<_MemPtr, _Arg, _Args...>(0)); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: struct __result_of_memfun_deref_impl 234s 1949: { 234s 1949: template 234s 1949: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) 234s 1949: ), __invoke_memfun_deref> _S_test(int); 234s 1949: 234s 1949: template 234s 1949: static __failure_type _S_test(...); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_memfun_deref 234s 1949: : private __result_of_memfun_deref_impl 234s 1949: { 234s 1949: using type = decltype(_S_test<_MemPtr, _Arg, _Args...>(0)); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: struct __result_of_memobj_ref_impl 234s 1949: { 234s 1949: template 234s 1949: static __result_of_success().*std::declval<_Fp>() 234s 1949: ), __invoke_memobj_ref> _S_test(int); 234s 1949: 234s 1949: template 234s 1949: static __failure_type _S_test(...); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_memobj_ref 234s 1949: : private __result_of_memobj_ref_impl 234s 1949: { 234s 1949: using type = decltype(_S_test<_MemPtr, _Arg>(0)); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: struct __result_of_memobj_deref_impl 234s 1949: { 234s 1949: template 234s 1949: static __result_of_success()).*std::declval<_Fp>() 234s 1949: ), __invoke_memobj_deref> _S_test(int); 234s 1949: 234s 1949: template 234s 1949: static __failure_type _S_test(...); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_memobj_deref 234s 1949: : private __result_of_memobj_deref_impl 234s 1949: { 234s 1949: using type = decltype(_S_test<_MemPtr, _Arg>(0)); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_memobj; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_memobj<_Res _Class::*, _Arg> 234s 1949: { 234s 1949: using _Argval = __remove_cvref_t<_Arg>; 234s 1949: using _MemPtr = _Res _Class::*; 234s 1949: using type = typename __conditional_t<__or_, 234s 1949: is_base_of<_Class, _Argval>>::value, 234s 1949: __result_of_memobj_ref<_MemPtr, _Arg>, 234s 1949: __result_of_memobj_deref<_MemPtr, _Arg> 234s 1949: >::type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_memfun; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> 234s 1949: { 234s 1949: using _Argval = typename remove_reference<_Arg>::type; 234s 1949: using _MemPtr = _Res _Class::*; 234s 1949: using type = typename __conditional_t::value, 234s 1949: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, 234s 1949: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> 234s 1949: >::type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: struct __inv_unwrap 234s 1949: { 234s 1949: using type = _Tp; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> 234s 1949: { 234s 1949: using type = _Up&; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_impl 234s 1949: { 234s 1949: using type = __failure_type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_impl 234s 1949: : public __result_of_memobj<__decay_t<_MemPtr>, 234s 1949: typename __inv_unwrap<_Arg>::type> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_impl 234s 1949: : public __result_of_memfun<__decay_t<_MemPtr>, 234s 1949: typename __inv_unwrap<_Arg>::type, _Args...> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: struct __result_of_other_impl 234s 1949: { 234s 1949: template 234s 1949: static __result_of_success()(std::declval<_Args>()...) 234s 1949: ), __invoke_other> _S_test(int); 234s 1949: 234s 1949: template 234s 1949: static __failure_type _S_test(...); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __result_of_impl 234s 1949: : private __result_of_other_impl 234s 1949: { 234s 1949: using type = decltype(_S_test<_Functor, _ArgTypes...>(0)); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __invoke_result 234s 1949: : public __result_of_impl< 234s 1949: is_member_object_pointer< 234s 1949: typename remove_reference<_Functor>::type 234s 1949: >::value, 234s 1949: is_member_function_pointer< 234s 1949: typename remove_reference<_Functor>::type 234s 1949: >::value, 234s 1949: _Functor, _ArgTypes... 234s 1949: >::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __invoke_result_t = typename __invoke_result<_Fn, _Args...>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct result_of<_Functor(_ArgTypes...)> 234s 1949: : public __invoke_result<_Functor, _ArgTypes...> 234s 1949: { } ; 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: template 234s 1949: using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; 234s 1949: 234s 1949: template 234s 1949: using aligned_union_t = typename aligned_union<_Len, _Types...>::type; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using decay_t = typename decay<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using enable_if_t = typename enable_if<_Cond, _Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using common_type_t = typename common_type<_Tp...>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using underlying_type_t = typename underlying_type<_Tp>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using result_of_t = typename result_of<_Tp>::type; 234s 1949: # 2886 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template class _Op, typename... _Args> 234s 1949: struct __detector 234s 1949: { 234s 1949: using type = _Default; 234s 1949: using __is_detected = false_type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template class _Op, 234s 1949: typename... _Args> 234s 1949: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> 234s 1949: { 234s 1949: using type = _Op<_Args...>; 234s 1949: using __is_detected = true_type; 234s 1949: }; 234s 1949: 234s 1949: template class _Op, 234s 1949: typename... _Args> 234s 1949: using __detected_or = __detector<_Default, void, _Op, _Args...>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template class _Op, 234s 1949: typename... _Args> 234s 1949: using __detected_or_t 234s 1949: = typename __detected_or<_Default, _Op, _Args...>::type; 234s 1949: # 2928 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template 234s 1949: struct __is_swappable; 234s 1949: 234s 1949: template 234s 1949: struct __is_nothrow_swappable; 234s 1949: 234s 1949: template 234s 1949: struct __is_tuple_like_impl : false_type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_tuple_like 234s 1949: : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline 234s 1949: _Require<__not_<__is_tuple_like<_Tp>>, 234s 1949: is_move_constructible<_Tp>, 234s 1949: is_move_assignable<_Tp>> 234s 1949: swap(_Tp&, _Tp&) 234s 1949: noexcept(__and_, 234s 1949: is_nothrow_move_assignable<_Tp>>::value); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline 234s 1949: __enable_if_t<__is_swappable<_Tp>::value> 234s 1949: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 234s 1949: noexcept(__is_nothrow_swappable<_Tp>::value); 234s 1949: 234s 1949: 234s 1949: namespace __swappable_details { 234s 1949: using std::swap; 234s 1949: 234s 1949: struct __do_is_swappable_impl 234s 1949: { 234s 1949: template(), std::declval<_Tp&>()))> 234s 1949: static true_type __test(int); 234s 1949: 234s 1949: template 234s 1949: static false_type __test(...); 234s 1949: }; 234s 1949: 234s 1949: struct __do_is_nothrow_swappable_impl 234s 1949: { 234s 1949: template 234s 1949: static __bool_constant< 234s 1949: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) 234s 1949: > __test(int); 234s 1949: 234s 1949: template 234s 1949: static false_type __test(...); 234s 1949: }; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: struct __is_swappable_impl 234s 1949: : public __swappable_details::__do_is_swappable_impl 234s 1949: { 234s 1949: using type = decltype(__test<_Tp>(0)); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __is_nothrow_swappable_impl 234s 1949: : public __swappable_details::__do_is_nothrow_swappable_impl 234s 1949: { 234s 1949: using type = decltype(__test<_Tp>(0)); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __is_swappable 234s 1949: : public __is_swappable_impl<_Tp>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_nothrow_swappable 234s 1949: : public __is_nothrow_swappable_impl<_Tp>::type 234s 1949: { }; 234s 1949: # 3150 "/usr/include/c++/15/type_traits" 3 4 234s 1949: template::value, typename = void> 234s 1949: struct __is_invocable_impl 234s 1949: : false_type 234s 1949: { 234s 1949: using __nothrow_conv = false_type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_invocable_impl<_Result, _Ret, 234s 1949: true, 234s 1949: __void_t> 234s 1949: : true_type 234s 1949: { 234s 1949: using __nothrow_conv = true_type; 234s 1949: }; 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 234s 1949: 234s 1949: template 234s 1949: struct __is_invocable_impl<_Result, _Ret, 234s 1949: false, 234s 1949: __void_t> 234s 1949: { 234s 1949: private: 234s 1949: 234s 1949: using _Res_t = typename _Result::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static _Res_t _S_get() noexcept; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: static void _S_conv(__type_identity_t<_Tp>) noexcept; 234s 1949: 234s 1949: 234s 1949: template(_S_get())), 234s 1949: typename = decltype(_S_conv<_Tp>(_S_get())), 234s 1949: 234s 1949: bool _Dangle = __reference_converts_from_temporary(_Tp, _Res_t) 234s 1949: 234s 1949: 234s 1949: 234s 1949: > 234s 1949: static __bool_constant<_Nothrow && !_Dangle> 234s 1949: _S_test(int); 234s 1949: 234s 1949: template 234s 1949: static false_type 234s 1949: _S_test(...); 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: using type = decltype(_S_test<_Ret, true>(1)); 234s 1949: 234s 1949: 234s 1949: using __nothrow_conv = decltype(_S_test<_Ret>(1)); 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: template 234s 1949: struct __is_invocable 234s 1949: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: constexpr bool __call_is_nt(__invoke_memfun_ref) 234s 1949: { 234s 1949: using _Up = typename __inv_unwrap<_Tp>::type; 234s 1949: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( 234s 1949: std::declval<_Args>()...)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr bool __call_is_nt(__invoke_memfun_deref) 234s 1949: { 234s 1949: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( 234s 1949: std::declval<_Args>()...)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr bool __call_is_nt(__invoke_memobj_ref) 234s 1949: { 234s 1949: using _Up = typename __inv_unwrap<_Tp>::type; 234s 1949: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr bool __call_is_nt(__invoke_memobj_deref) 234s 1949: { 234s 1949: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr bool __call_is_nt(__invoke_other) 234s 1949: { 234s 1949: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: struct __call_is_nothrow 234s 1949: : __bool_constant< 234s 1949: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) 234s 1949: > 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: using __call_is_nothrow_ 234s 1949: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_nothrow_invocable 234s 1949: : __and_<__is_invocable<_Fn, _Args...>, 234s 1949: __call_is_nothrow_<_Fn, _Args...>>::type 234s 1949: { }; 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 234s 1949: struct __nonesuchbase {}; 234s 1949: struct __nonesuch : private __nonesuchbase { 234s 1949: ~__nonesuch() = delete; 234s 1949: __nonesuch(__nonesuch const&) = delete; 234s 1949: void operator=(__nonesuch const&) = delete; 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 4184 "/usr/include/c++/15/type_traits" 3 4 234s 1949: 234s 1949: } 234s 1949: } 234s 1949: # 61 "/usr/include/c++/15/bits/stl_pair.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/move.h" 1 3 4 234s 1949: # 40 "/usr/include/c++/15/bits/move.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: inline constexpr _Tp* 234s 1949: __addressof(_Tp& __r) noexcept 234s 1949: { return __builtin_addressof(__r); } 234s 1949: # 69 "/usr/include/c++/15/bits/move.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__,__gnu__::__always_inline__]] 234s 1949: constexpr _Tp&& 234s 1949: forward(typename std::remove_reference<_Tp>::type& __t) noexcept 234s 1949: { return static_cast<_Tp&&>(__t); } 234s 1949: # 82 "/usr/include/c++/15/bits/move.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__,__gnu__::__always_inline__]] 234s 1949: constexpr _Tp&& 234s 1949: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept 234s 1949: { 234s 1949: static_assert(!std::is_lvalue_reference<_Tp>::value, 234s 1949: "std::forward must not be used to convert an rvalue to an lvalue"); 234s 1949: return static_cast<_Tp&&>(__t); 234s 1949: } 234s 1949: # 135 "/usr/include/c++/15/bits/move.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__,__gnu__::__always_inline__]] 234s 1949: constexpr typename std::remove_reference<_Tp>::type&& 234s 1949: move(_Tp&& __t) noexcept 234s 1949: { return static_cast::type&&>(__t); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __move_if_noexcept_cond 234s 1949: : public __and_<__not_>, 234s 1949: is_copy_constructible<_Tp>>::type { }; 234s 1949: # 156 "/usr/include/c++/15/bits/move.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__,__gnu__::__always_inline__]] 234s 1949: constexpr 234s 1949: __conditional_t<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&> 234s 1949: move_if_noexcept(_Tp& __x) noexcept 234s 1949: { return std::move(__x); } 234s 1949: # 173 "/usr/include/c++/15/bits/move.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__,__gnu__::__always_inline__]] 234s 1949: inline _Tp* 234s 1949: addressof(_Tp& __r) noexcept 234s 1949: { return std::__addressof(__r); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: const _Tp* addressof(const _Tp&&) = delete; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Tp 234s 1949: __exchange(_Tp& __obj, _Up&& __new_val) 234s 1949: { 234s 1949: _Tp __old_val = std::move(__obj); 234s 1949: __obj = std::forward<_Up>(__new_val); 234s 1949: return __old_val; 234s 1949: } 234s 1949: # 217 "/usr/include/c++/15/bits/move.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline 234s 1949: 234s 1949: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 234s 1949: is_move_constructible<_Tp>, 234s 1949: is_move_assignable<_Tp>>::value>::type 234s 1949: 234s 1949: 234s 1949: 234s 1949: swap(_Tp& __a, _Tp& __b) 234s 1949: noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value) 234s 1949: 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Tp __tmp = std::move(__a); 234s 1949: __a = std::move(__b); 234s 1949: __b = std::move(__tmp); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline 234s 1949: 234s 1949: typename enable_if<__is_swappable<_Tp>::value>::type 234s 1949: 234s 1949: 234s 1949: 234s 1949: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 234s 1949: noexcept(__is_nothrow_swappable<_Tp>::value) 234s 1949: { 234s 1949: for (size_t __n = 0; __n < _Nm; ++__n) 234s 1949: swap(__a[__n], __b[__n]); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 62 "/usr/include/c++/15/bits/stl_pair.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/utility.h" 1 3 4 234s 1949: # 45 "/usr/include/c++/15/bits/utility.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct tuple_size; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template::type, 234s 1949: typename = typename enable_if::value>::type, 234s 1949: size_t = tuple_size<_Tp>::value> 234s 1949: using __enable_if_has_tuple_size = _Tp; 234s 1949: 234s 1949: template 234s 1949: struct tuple_size> 234s 1949: : public tuple_size<_Tp> { }; 234s 1949: 234s 1949: template 234s 1949: struct tuple_size> 234s 1949: : public tuple_size<_Tp> { }; 234s 1949: 234s 1949: template 234s 1949: struct tuple_size> 234s 1949: : public tuple_size<_Tp> { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct tuple_element; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; 234s 1949: 234s 1949: template 234s 1949: struct tuple_element<__i, const _Tp> 234s 1949: { 234s 1949: using type = const __tuple_element_t<__i, _Tp>; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct tuple_element<__i, volatile _Tp> 234s 1949: { 234s 1949: using type = volatile __tuple_element_t<__i, _Tp>; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct tuple_element<__i, const volatile _Tp> 234s 1949: { 234s 1949: using type = const volatile __tuple_element_t<__i, _Tp>; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr size_t 234s 1949: __find_uniq_type_in_pack() 234s 1949: { 234s 1949: constexpr size_t __sz = sizeof...(_Types); 234s 1949: constexpr bool __found[__sz] = { __is_same(_Tp, _Types) ... }; 234s 1949: size_t __n = __sz; 234s 1949: for (size_t __i = 0; __i < __sz; ++__i) 234s 1949: { 234s 1949: if (__found[__i]) 234s 1949: { 234s 1949: if (__n < __sz) 234s 1949: return __sz; 234s 1949: __n = __i; 234s 1949: } 234s 1949: } 234s 1949: return __n; 234s 1949: } 234s 1949: # 136 "/usr/include/c++/15/bits/utility.h" 3 4 234s 1949: template 234s 1949: using tuple_element_t = typename tuple_element<__i, _Tp>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template struct _Index_tuple { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Build_index_tuple 234s 1949: { 234s 1949: # 156 "/usr/include/c++/15/bits/utility.h" 3 4 234s 1949: using __type = _Index_tuple<__integer_pack(_Num)...>; 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct integer_sequence 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _Tp value_type; 234s 1949: static constexpr size_t size() noexcept { return sizeof...(_Idx); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using make_integer_sequence 234s 1949: 234s 1949: 234s 1949: 234s 1949: = integer_sequence<_Tp, __integer_pack(_Num)...>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using index_sequence = integer_sequence; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using make_index_sequence = make_integer_sequence; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using index_sequence_for = make_index_sequence; 234s 1949: # 234 "/usr/include/c++/15/bits/utility.h" 3 4 234s 1949: template 234s 1949: struct _Nth_type 234s 1949: { using type = __type_pack_element<_Np, _Types...>; }; 234s 1949: # 284 "/usr/include/c++/15/bits/utility.h" 3 4 234s 1949: struct _Swallow_assign 234s 1949: { 234s 1949: template 234s 1949: constexpr const _Swallow_assign& 234s 1949: operator=(const _Tp&) const noexcept 234s 1949: { return *this; } 234s 1949: }; 234s 1949: # 309 "/usr/include/c++/15/bits/utility.h" 3 4 234s 1949: constexpr _Swallow_assign ignore{}; 234s 1949: # 319 "/usr/include/c++/15/bits/utility.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 63 "/usr/include/c++/15/bits/stl_pair.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 79 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; 234s 1949: 234s 1949: 234s 1949: constexpr piecewise_construct_t piecewise_construct = 234s 1949: piecewise_construct_t(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct pair; 234s 1949: 234s 1949: template 234s 1949: class tuple; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct array; 234s 1949: 234s 1949: template 234s 1949: struct _Index_tuple; 234s 1949: 234s 1949: template 234s 1949: class complex; 234s 1949: 234s 1949: template 234s 1949: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 234s 1949: get(pair<_Tp1, _Tp2>& __in) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 234s 1949: get(pair<_Tp1, _Tp2>&& __in) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 234s 1949: get(const pair<_Tp1, _Tp2>& __in) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 234s 1949: get(const pair<_Tp1, _Tp2>&& __in) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 234s 1949: get(tuple<_Elements...>& __t) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 234s 1949: get(const tuple<_Elements...>& __t) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 234s 1949: get(tuple<_Elements...>&& __t) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 234s 1949: get(const tuple<_Elements...>&& __t) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp& 234s 1949: get(array<_Tp, _Nm>&) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp&& 234s 1949: get(array<_Tp, _Nm>&&) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr const _Tp& 234s 1949: get(const array<_Tp, _Nm>&) noexcept; 234s 1949: 234s 1949: template 234s 1949: constexpr const _Tp&& 234s 1949: get(const array<_Tp, _Nm>&&) noexcept; 234s 1949: # 176 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: template 234s 1949: struct _PCC 234s 1949: { 234s 1949: template 234s 1949: static constexpr bool _ConstructiblePair() 234s 1949: { 234s 1949: return __and_, 234s 1949: is_constructible<_T2, const _U2&>>::value; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool _ImplicitlyConvertiblePair() 234s 1949: { 234s 1949: return __and_, 234s 1949: is_convertible>::value; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool _MoveConstructiblePair() 234s 1949: { 234s 1949: return __and_, 234s 1949: is_constructible<_T2, _U2&&>>::value; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool _ImplicitlyMoveConvertiblePair() 234s 1949: { 234s 1949: return __and_, 234s 1949: is_convertible<_U2&&, _T2>>::value; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _PCC 234s 1949: { 234s 1949: template 234s 1949: static constexpr bool _ConstructiblePair() 234s 1949: { 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool _ImplicitlyConvertiblePair() 234s 1949: { 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool _MoveConstructiblePair() 234s 1949: { 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool _ImplicitlyMoveConvertiblePair() 234s 1949: { 234s 1949: return false; 234s 1949: } 234s 1949: }; 234s 1949: # 278 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: template class __pair_base 234s 1949: { 234s 1949: 234s 1949: template friend struct pair; 234s 1949: __pair_base() = default; 234s 1949: ~__pair_base() = default; 234s 1949: __pair_base(const __pair_base&) = default; 234s 1949: __pair_base& operator=(const __pair_base&) = delete; 234s 1949: 234s 1949: }; 234s 1949: # 301 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: template 234s 1949: struct pair 234s 1949: : public __pair_base<_T1, _T2> 234s 1949: { 234s 1949: typedef _T1 first_type; 234s 1949: typedef _T2 second_type; 234s 1949: 234s 1949: _T1 first; 234s 1949: _T2 second; 234s 1949: 234s 1949: 234s 1949: constexpr pair(const pair&) = default; 234s 1949: constexpr pair(pair&&) = default; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: swap(pair& __p) 234s 1949: noexcept(__and_<__is_nothrow_swappable<_T1>, 234s 1949: __is_nothrow_swappable<_T2>>::value) 234s 1949: { 234s 1949: using std::swap; 234s 1949: swap(first, __p.first); 234s 1949: swap(second, __p.second); 234s 1949: } 234s 1949: # 349 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: private: 234s 1949: template 234s 1949: 234s 1949: pair(tuple<_Args1...>&, tuple<_Args2...>&, 234s 1949: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); 234s 1949: public: 234s 1949: # 739 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: template , 234s 1949: __is_implicitly_default_constructible<_U2>> 234s 1949: ::value, bool>::type = true> 234s 1949: constexpr pair() 234s 1949: : first(), second() { } 234s 1949: 234s 1949: template , 234s 1949: is_default_constructible<_U2>, 234s 1949: __not_< 234s 1949: __and_<__is_implicitly_default_constructible<_U1>, 234s 1949: __is_implicitly_default_constructible<_U2>>>> 234s 1949: ::value, bool>::type = false> 234s 1949: explicit constexpr pair() 234s 1949: : first(), second() { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: using _PCCP = _PCC; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template() 234s 1949: && _PCCP::template 234s 1949: _ImplicitlyConvertiblePair<_U1, _U2>(), 234s 1949: bool>::type=true> 234s 1949: constexpr pair(const _T1& __a, const _T2& __b) 234s 1949: : first(__a), second(__b) { } 234s 1949: 234s 1949: 234s 1949: template() 234s 1949: && !_PCCP::template 234s 1949: _ImplicitlyConvertiblePair<_U1, _U2>(), 234s 1949: bool>::type=false> 234s 1949: explicit constexpr pair(const _T1& __a, const _T2& __b) 234s 1949: : first(__a), second(__b) { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _PCCFP = _PCC::value 234s 1949: || !is_same<_T2, _U2>::value, 234s 1949: _T1, _T2>; 234s 1949: 234s 1949: 234s 1949: template::template 234s 1949: _ConstructiblePair<_U1, _U2>() 234s 1949: && _PCCFP<_U1, _U2>::template 234s 1949: _ImplicitlyConvertiblePair<_U1, _U2>(), 234s 1949: bool>::type=true> 234s 1949: constexpr pair(const pair<_U1, _U2>& __p) 234s 1949: : first(__p.first), second(__p.second) 234s 1949: { ; } 234s 1949: 234s 1949: template::template 234s 1949: _ConstructiblePair<_U1, _U2>() 234s 1949: && !_PCCFP<_U1, _U2>::template 234s 1949: _ImplicitlyConvertiblePair<_U1, _U2>(), 234s 1949: bool>::type=false> 234s 1949: explicit constexpr pair(const pair<_U1, _U2>& __p) 234s 1949: : first(__p.first), second(__p.second) 234s 1949: { ; } 234s 1949: # 823 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: private: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __zero_as_null_pointer_constant 234s 1949: { 234s 1949: __zero_as_null_pointer_constant(int __zero_as_null_pointer_constant::*) 234s 1949: { } 234s 1949: template::value>> 234s 1949: __zero_as_null_pointer_constant(_Tp) = delete; 234s 1949: }; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template>, 234s 1949: is_pointer<_T2>, 234s 1949: is_constructible<_T1, _U1>, 234s 1949: __not_>, 234s 1949: is_convertible<_U1, _T1>>::value, 234s 1949: bool> = true> 234s 1949: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 234s 1949: constexpr 234s 1949: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) 234s 1949: : first(std::forward<_U1>(__x)), second(nullptr) 234s 1949: { ; } 234s 1949: 234s 1949: template>, 234s 1949: is_pointer<_T2>, 234s 1949: is_constructible<_T1, _U1>, 234s 1949: __not_>, 234s 1949: __not_>>::value, 234s 1949: bool> = false> 234s 1949: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 234s 1949: explicit constexpr 234s 1949: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) 234s 1949: : first(std::forward<_U1>(__x)), second(nullptr) 234s 1949: { ; } 234s 1949: 234s 1949: template, 234s 1949: __not_>, 234s 1949: is_constructible<_T2, _U2>, 234s 1949: __not_>, 234s 1949: is_convertible<_U2, _T2>>::value, 234s 1949: bool> = true> 234s 1949: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 234s 1949: constexpr 234s 1949: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) 234s 1949: : first(nullptr), second(std::forward<_U2>(__y)) 234s 1949: { ; } 234s 1949: 234s 1949: template, 234s 1949: __not_>, 234s 1949: is_constructible<_T2, _U2>, 234s 1949: __not_>, 234s 1949: __not_>>::value, 234s 1949: bool> = false> 234s 1949: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 234s 1949: explicit constexpr 234s 1949: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) 234s 1949: : first(nullptr), second(std::forward<_U2>(__y)) 234s 1949: { ; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template() 234s 1949: && _PCCP::template 234s 1949: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 234s 1949: bool>::type=true> 234s 1949: constexpr pair(_U1&& __x, _U2&& __y) 234s 1949: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) 234s 1949: { ; } 234s 1949: 234s 1949: template() 234s 1949: && !_PCCP::template 234s 1949: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 234s 1949: bool>::type=false> 234s 1949: explicit constexpr pair(_U1&& __x, _U2&& __y) 234s 1949: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) 234s 1949: { ; } 234s 1949: 234s 1949: 234s 1949: template::template 234s 1949: _MoveConstructiblePair<_U1, _U2>() 234s 1949: && _PCCFP<_U1, _U2>::template 234s 1949: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 234s 1949: bool>::type=true> 234s 1949: constexpr pair(pair<_U1, _U2>&& __p) 234s 1949: : first(std::forward<_U1>(__p.first)), 234s 1949: second(std::forward<_U2>(__p.second)) 234s 1949: { ; } 234s 1949: 234s 1949: template::template 234s 1949: _MoveConstructiblePair<_U1, _U2>() 234s 1949: && !_PCCFP<_U1, _U2>::template 234s 1949: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 234s 1949: bool>::type=false> 234s 1949: explicit constexpr pair(pair<_U1, _U2>&& __p) 234s 1949: : first(std::forward<_U1>(__p.first)), 234s 1949: second(std::forward<_U2>(__p.second)) 234s 1949: { ; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: pair& 234s 1949: operator=(__conditional_t<__and_, 234s 1949: is_copy_assignable<_T2>>::value, 234s 1949: const pair&, const __nonesuch&> __p) 234s 1949: { 234s 1949: first = __p.first; 234s 1949: second = __p.second; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: pair& 234s 1949: operator=(__conditional_t<__and_, 234s 1949: is_move_assignable<_T2>>::value, 234s 1949: pair&&, __nonesuch&&> __p) 234s 1949: noexcept(__and_, 234s 1949: is_nothrow_move_assignable<_T2>>::value) 234s 1949: { 234s 1949: first = std::forward(__p.first); 234s 1949: second = std::forward(__p.second); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename enable_if<__and_, 234s 1949: is_assignable<_T2&, const _U2&>>::value, 234s 1949: pair&>::type 234s 1949: operator=(const pair<_U1, _U2>& __p) 234s 1949: { 234s 1949: first = __p.first; 234s 1949: second = __p.second; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename enable_if<__and_, 234s 1949: is_assignable<_T2&, _U2&&>>::value, 234s 1949: pair&>::type 234s 1949: operator=(pair<_U1, _U2>&& __p) 234s 1949: { 234s 1949: first = std::forward<_U1>(__p.first); 234s 1949: second = std::forward<_U2>(__p.second); 234s 1949: return *this; 234s 1949: } 234s 1949: # 1015 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: }; 234s 1949: # 1057 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline constexpr bool 234s 1949: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 234s 1949: { return __x.first == __y.first && __x.second == __y.second; } 234s 1949: # 1070 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline constexpr bool 234s 1949: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 234s 1949: { return __x.first < __y.first 234s 1949: || (!(__y.first < __x.first) && __x.second < __y.second); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline constexpr bool 234s 1949: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline constexpr bool 234s 1949: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 234s 1949: { return __y < __x; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline constexpr bool 234s 1949: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 234s 1949: { return !(__y < __x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline constexpr bool 234s 1949: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 234s 1949: { return !(__x < __y); } 234s 1949: # 1112 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: template 234s 1949: inline 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: 234s 1949: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) 234s 1949: noexcept(noexcept(__x.swap(__y))) 234s 1949: { __x.swap(__y); } 234s 1949: # 1161 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: template 234s 1949: constexpr pair::__type, 234s 1949: typename __decay_and_strip<_T2>::__type> 234s 1949: make_pair(_T1&& __x, _T2&& __y) 234s 1949: { 234s 1949: typedef typename __decay_and_strip<_T1>::__type __ds_type1; 234s 1949: typedef typename __decay_and_strip<_T2>::__type __ds_type2; 234s 1949: typedef pair<__ds_type1, __ds_type2> __pair_type; 234s 1949: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); 234s 1949: } 234s 1949: # 1184 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: template 234s 1949: struct __is_tuple_like_impl> : true_type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct tuple_size> 234s 1949: : public integral_constant { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct tuple_element<0, pair<_Tp1, _Tp2>> 234s 1949: { typedef _Tp1 type; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct tuple_element<1, pair<_Tp1, _Tp2>> 234s 1949: { typedef _Tp2 type; }; 234s 1949: # 1213 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++14-extensions" 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: inline constexpr bool __is_pair = false; 234s 1949: 234s 1949: template 234s 1949: inline constexpr bool __is_pair> = true; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __pair_get; 234s 1949: 234s 1949: template<> 234s 1949: struct __pair_get<0> 234s 1949: { 234s 1949: template 234s 1949: static constexpr _Tp1& 234s 1949: __get(pair<_Tp1, _Tp2>& __pair) noexcept 234s 1949: { return __pair.first; } 234s 1949: 234s 1949: template 234s 1949: static constexpr _Tp1&& 234s 1949: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept 234s 1949: { return std::forward<_Tp1>(__pair.first); } 234s 1949: 234s 1949: template 234s 1949: static constexpr const _Tp1& 234s 1949: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept 234s 1949: { return __pair.first; } 234s 1949: 234s 1949: template 234s 1949: static constexpr const _Tp1&& 234s 1949: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept 234s 1949: { return std::forward(__pair.first); } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __pair_get<1> 234s 1949: { 234s 1949: template 234s 1949: static constexpr _Tp2& 234s 1949: __get(pair<_Tp1, _Tp2>& __pair) noexcept 234s 1949: { return __pair.second; } 234s 1949: 234s 1949: template 234s 1949: static constexpr _Tp2&& 234s 1949: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept 234s 1949: { return std::forward<_Tp2>(__pair.second); } 234s 1949: 234s 1949: template 234s 1949: static constexpr const _Tp2& 234s 1949: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept 234s 1949: { return __pair.second; } 234s 1949: 234s 1949: template 234s 1949: static constexpr const _Tp2&& 234s 1949: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept 234s 1949: { return std::forward(__pair.second); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 234s 1949: get(pair<_Tp1, _Tp2>& __in) noexcept 234s 1949: { return __pair_get<_Int>::__get(__in); } 234s 1949: 234s 1949: template 234s 1949: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 234s 1949: get(pair<_Tp1, _Tp2>&& __in) noexcept 234s 1949: { return __pair_get<_Int>::__move_get(std::move(__in)); } 234s 1949: 234s 1949: template 234s 1949: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 234s 1949: get(const pair<_Tp1, _Tp2>& __in) noexcept 234s 1949: { return __pair_get<_Int>::__const_get(__in); } 234s 1949: 234s 1949: template 234s 1949: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 234s 1949: get(const pair<_Tp1, _Tp2>&& __in) noexcept 234s 1949: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp& 234s 1949: get(pair<_Tp, _Up>& __p) noexcept 234s 1949: { return __p.first; } 234s 1949: 234s 1949: template 234s 1949: constexpr const _Tp& 234s 1949: get(const pair<_Tp, _Up>& __p) noexcept 234s 1949: { return __p.first; } 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp&& 234s 1949: get(pair<_Tp, _Up>&& __p) noexcept 234s 1949: { return std::forward<_Tp>(__p.first); } 234s 1949: 234s 1949: template 234s 1949: constexpr const _Tp&& 234s 1949: get(const pair<_Tp, _Up>&& __p) noexcept 234s 1949: { return std::forward(__p.first); } 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp& 234s 1949: get(pair<_Up, _Tp>& __p) noexcept 234s 1949: { return __p.second; } 234s 1949: 234s 1949: template 234s 1949: constexpr const _Tp& 234s 1949: get(const pair<_Up, _Tp>& __p) noexcept 234s 1949: { return __p.second; } 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp&& 234s 1949: get(pair<_Up, _Tp>&& __p) noexcept 234s 1949: { return std::forward<_Tp>(__p.second); } 234s 1949: 234s 1949: template 234s 1949: constexpr const _Tp&& 234s 1949: get(const pair<_Up, _Tp>&& __p) noexcept 234s 1949: { return std::forward(__p.second); } 234s 1949: # 1365 "/usr/include/c++/15/bits/stl_pair.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 72 "/usr/include/c++/15/utility" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/initializer_list" 1 3 4 234s 1949: # 43 "/usr/include/c++/15/initializer_list" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: template 234s 1949: class initializer_list 234s 1949: { 234s 1949: public: 234s 1949: typedef _E value_type; 234s 1949: typedef const _E& reference; 234s 1949: typedef const _E& const_reference; 234s 1949: typedef size_t size_type; 234s 1949: typedef const _E* iterator; 234s 1949: typedef const _E* const_iterator; 234s 1949: 234s 1949: private: 234s 1949: iterator _M_array; 234s 1949: size_type _M_len; 234s 1949: 234s 1949: 234s 1949: constexpr initializer_list(const_iterator __a, size_type __l) 234s 1949: : _M_array(__a), _M_len(__l) { } 234s 1949: 234s 1949: public: 234s 1949: constexpr initializer_list() noexcept 234s 1949: : _M_array(0), _M_len(0) { } 234s 1949: 234s 1949: 234s 1949: constexpr size_type 234s 1949: size() const noexcept { return _M_len; } 234s 1949: 234s 1949: 234s 1949: constexpr const_iterator 234s 1949: begin() const noexcept { return _M_array; } 234s 1949: 234s 1949: 234s 1949: constexpr const_iterator 234s 1949: end() const noexcept { return begin() + size(); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr const _Tp* 234s 1949: begin(initializer_list<_Tp> __ils) noexcept 234s 1949: { return __ils.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr const _Tp* 234s 1949: end(initializer_list<_Tp> __ils) noexcept 234s 1949: { return __ils.end(); } 234s 1949: } 234s 1949: # 76 "/usr/include/c++/15/utility" 2 3 4 234s 1949: # 103 "/usr/include/c++/15/utility" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 104 "/usr/include/c++/15/utility" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Tp 234s 1949: exchange(_Tp& __obj, _Up&& __new_val) 234s 1949: noexcept(__and_, 234s 1949: is_nothrow_assignable<_Tp&, _Up>>::value) 234s 1949: { return std::__exchange(__obj, std::forward<_Up>(__new_val)); } 234s 1949: # 237 "/usr/include/c++/15/utility" 3 4 234s 1949: 234s 1949: } 234s 1949: # 3163 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/fstream" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/fstream" 3 4 234s 1949: # 1 "/usr/include/c++/15/istream" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/istream" 3 4 234s 1949: # 1 "/usr/include/c++/15/ios" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/ios" 3 4 234s 1949: # 1 "/usr/include/c++/15/iosfwd" 1 3 4 234s 1949: # 43 "/usr/include/c++/15/iosfwd" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stringfwd.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/stringfwd.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/memoryfwd.h" 1 3 4 234s 1949: # 52 "/usr/include/c++/15/bits/memoryfwd.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 66 "/usr/include/c++/15/bits/memoryfwd.h" 3 4 234s 1949: template 234s 1949: class allocator; 234s 1949: 234s 1949: template<> 234s 1949: class allocator; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct uses_allocator; 234s 1949: 234s 1949: template 234s 1949: struct allocator_traits; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 43 "/usr/include/c++/15/bits/stringfwd.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct char_traits; 234s 1949: 234s 1949: template<> struct char_traits; 234s 1949: 234s 1949: template<> struct char_traits; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> struct char_traits; 234s 1949: template<> struct char_traits; 234s 1949: 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: 234s 1949: template, 234s 1949: typename _Alloc = allocator<_CharT> > 234s 1949: class basic_string; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: typedef basic_string string; 234s 1949: 234s 1949: 234s 1949: typedef basic_string wstring; 234s 1949: # 91 "/usr/include/c++/15/bits/stringfwd.h" 3 4 234s 1949: typedef basic_string u16string; 234s 1949: 234s 1949: 234s 1949: typedef basic_string u32string; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 44 "/usr/include/c++/15/iosfwd" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/postypes.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/postypes.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/cwchar" 1 3 4 234s 1949: # 49 "/usr/include/c++/15/cwchar" 3 4 234s 1949: # 1 "/usr/include/wchar.h" 1 3 4 234s 1949: # 27 "/usr/include/wchar.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 234s 1949: # 28 "/usr/include/wchar.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 234s 1949: # 31 "/usr/include/wchar.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 234s 1949: # 36 "/usr/include/wchar.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdarg.h" 1 3 4 234s 1949: # 39 "/usr/include/wchar.h" 2 3 4 234s 1949: # 51 "/usr/include/wchar.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar.h" 1 3 4 234s 1949: # 52 "/usr/include/wchar.h" 2 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 1 3 4 234s 1949: # 20 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 3 4 234s 1949: typedef unsigned int wint_t; 234s 1949: # 53 "/usr/include/wchar.h" 2 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/mbstate_t.h" 1 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef __mbstate_t mbstate_t; 234s 1949: # 54 "/usr/include/wchar.h" 2 3 4 234s 1949: # 90 "/usr/include/wchar.h" 3 4 234s 1949: extern "C" { 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct tm; 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *wcscpy (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, size_t __n) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t wcslcpy (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, size_t __n) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t wcslcat (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, size_t __n) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *wcscat (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: extern wchar_t *wcsncat (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, size_t __n) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) 234s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 234s 1949: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, 234s 1949: size_t __n) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 234s 1949: locale_t __loc) noexcept (true); 234s 1949: 234s 1949: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 234s 1949: size_t __n, locale_t __loc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t wcsxfrm (wchar_t *__restrict __s1, 234s 1949: const wchar_t *__restrict __s2, size_t __n) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, 234s 1949: locale_t __loc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, 234s 1949: size_t __n, locale_t __loc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern wchar_t *wcsdup (const wchar_t *__s) noexcept (true) 234s 1949: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (__builtin_free, 1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) 234s 1949: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); 234s 1949: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) 234s 1949: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) 234s 1949: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); 234s 1949: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) 234s 1949: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); 234s 1949: # 206 "/usr/include/wchar.h" 3 4 234s 1949: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) 234s 1949: noexcept (true) __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) 234s 1949: noexcept (true) __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) 234s 1949: noexcept (true) __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) 234s 1949: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); 234s 1949: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, 234s 1949: const wchar_t *__accept) 234s 1949: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) 234s 1949: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); 234s 1949: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, 234s 1949: const wchar_t *__needle) 234s 1949: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *wcstok (wchar_t *__restrict __s, 234s 1949: const wchar_t *__restrict __delim, 234s 1949: wchar_t **__restrict __ptr) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern size_t wcslen (const wchar_t *__s) noexcept (true) __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) 234s 1949: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); 234s 1949: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, 234s 1949: const wchar_t *__needle) 234s 1949: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); 234s 1949: # 265 "/usr/include/wchar.h" 3 4 234s 1949: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) 234s 1949: noexcept (true) __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) 234s 1949: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); 234s 1949: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, 234s 1949: size_t __n) 234s 1949: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 234s 1949: noexcept (true) __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, 234s 1949: const wchar_t *__restrict __s2, size_t __n) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, 234s 1949: const wchar_t *__restrict __s2, size_t __n) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wint_t btowc (int __c) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int wctob (wint_t __c) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int mbsinit (const mbstate_t *__ps) noexcept (true) __attribute__ ((__pure__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t mbrtowc (wchar_t *__restrict __pwc, 234s 1949: const char *__restrict __s, size_t __n, 234s 1949: mbstate_t *__restrict __p) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, 234s 1949: mbstate_t *__restrict __ps) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern size_t __mbrlen (const char *__restrict __s, size_t __n, 234s 1949: mbstate_t *__restrict __ps) noexcept (true); 234s 1949: extern size_t mbrlen (const char *__restrict __s, size_t __n, 234s 1949: mbstate_t *__restrict __ps) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wint_t __btowc_alias (int __c) __asm ("btowc"); 234s 1949: extern __inline __attribute__ ((__gnu_inline__)) wint_t 234s 1949: __attribute__ ((__leaf__)) btowc (int __c) noexcept (true) 234s 1949: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' 234s 1949: ? (wint_t) __c : __btowc_alias (__c)); } 234s 1949: 234s 1949: extern int __wctob_alias (wint_t __c) __asm ("wctob"); 234s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 234s 1949: __attribute__ ((__leaf__)) wctob (wint_t __wc) noexcept (true) 234s 1949: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' 234s 1949: ? (int) __wc : __wctob_alias (__wc)); } 234s 1949: 234s 1949: extern __inline __attribute__ ((__gnu_inline__)) size_t 234s 1949: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) noexcept (true) 234s 1949: 234s 1949: { return (__ps != __null 234s 1949: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t mbsrtowcs (wchar_t *__restrict __dst, 234s 1949: const char **__restrict __src, size_t __len, 234s 1949: mbstate_t *__restrict __ps) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t wcsrtombs (char *__restrict __dst, 234s 1949: const wchar_t **__restrict __src, size_t __len, 234s 1949: mbstate_t *__restrict __ps) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, 234s 1949: const char **__restrict __src, size_t __nmc, 234s 1949: size_t __len, mbstate_t *__restrict __ps) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t wcsnrtombs (char *__restrict __dst, 234s 1949: const wchar_t **__restrict __src, 234s 1949: size_t __nwc, size_t __len, 234s 1949: mbstate_t *__restrict __ps) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int wcwidth (wchar_t __c) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int wcswidth (const wchar_t *__s, size_t __n) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern double wcstod (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern float wcstof (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr) noexcept (true); 234s 1949: extern long double wcstold (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr) noexcept (true); 234s 1949: # 422 "/usr/include/wchar.h" 3 4 234s 1949: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr) noexcept (true); 234s 1949: # 437 "/usr/include/wchar.h" 3 4 234s 1949: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr) noexcept (true); 234s 1949: # 455 "/usr/include/wchar.h" 3 4 234s 1949: extern long int wcstol (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, int __base) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, int __base) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __extension__ 234s 1949: extern long long int wcstoll (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, int __base) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: __extension__ 234s 1949: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, 234s 1949: int __base) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __extension__ 234s 1949: extern long long int wcstoq (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, int __base) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: __extension__ 234s 1949: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, 234s 1949: int __base) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern long int wcstol (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstol") 234s 1949: 234s 1949: ; 234s 1949: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoul") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: __extension__ 234s 1949: extern long long int wcstoll (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoll") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: __extension__ 234s 1949: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoull") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: __extension__ 234s 1949: extern long long int wcstoq (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoll") 234s 1949: 234s 1949: ; 234s 1949: __extension__ 234s 1949: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoull") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: # 561 "/usr/include/wchar.h" 3 4 234s 1949: extern long int wcstol_l (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, int __base, 234s 1949: locale_t __loc) noexcept (true); 234s 1949: 234s 1949: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, 234s 1949: int __base, locale_t __loc) noexcept (true); 234s 1949: 234s 1949: __extension__ 234s 1949: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, 234s 1949: int __base, locale_t __loc) noexcept (true); 234s 1949: 234s 1949: __extension__ 234s 1949: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, 234s 1949: int __base, locale_t __loc) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern long int wcstol_l (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_wcstol_l") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_wcstoul_l") 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: __extension__ 234s 1949: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_wcstoll_l") 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: __extension__ 234s 1949: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_wcstoull_l") 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: # 630 "/usr/include/wchar.h" 3 4 234s 1949: extern double wcstod_l (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, locale_t __loc) 234s 1949: noexcept (true); 234s 1949: 234s 1949: extern float wcstof_l (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, locale_t __loc) 234s 1949: noexcept (true); 234s 1949: 234s 1949: extern long double wcstold_l (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, 234s 1949: locale_t __loc) noexcept (true); 234s 1949: # 649 "/usr/include/wchar.h" 3 4 234s 1949: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, 234s 1949: locale_t __loc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, 234s 1949: locale_t __loc) noexcept (true); 234s 1949: # 667 "/usr/include/wchar.h" 3 4 234s 1949: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr, 234s 1949: wchar_t **__restrict __endptr, 234s 1949: locale_t __loc) noexcept (true); 234s 1949: # 689 "/usr/include/wchar.h" 3 4 234s 1949: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, size_t __n) 234s 1949: noexcept (true); 234s 1949: # 718 "/usr/include/wchar.h" 3 4 234s 1949: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) noexcept (true) 234s 1949: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int fwide (__FILE *__fp, int __mode) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int fwprintf (__FILE *__restrict __stream, 234s 1949: const wchar_t *__restrict __format, ...) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int wprintf (const wchar_t *__restrict __format, ...) 234s 1949: ; 234s 1949: 234s 1949: extern int swprintf (wchar_t *__restrict __s, size_t __n, 234s 1949: const wchar_t *__restrict __format, ...) 234s 1949: noexcept (true) ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int vfwprintf (__FILE *__restrict __s, 234s 1949: const wchar_t *__restrict __format, 234s 1949: __gnuc_va_list __arg) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int vwprintf (const wchar_t *__restrict __format, 234s 1949: __gnuc_va_list __arg) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: extern int vswprintf (wchar_t *__restrict __s, size_t __n, 234s 1949: const wchar_t *__restrict __format, 234s 1949: __gnuc_va_list __arg) 234s 1949: noexcept (true) ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int fwscanf (__FILE *__restrict __stream, 234s 1949: const wchar_t *__restrict __format, ...) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int wscanf (const wchar_t *__restrict __format, ...) 234s 1949: ; 234s 1949: 234s 1949: extern int swscanf (const wchar_t *__restrict __s, 234s 1949: const wchar_t *__restrict __format, ...) 234s 1949: noexcept (true) ; 234s 1949: # 795 "/usr/include/wchar.h" 3 4 234s 1949: extern int fwscanf (__FILE *__restrict __stream, const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc23_fwscanf") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: extern int wscanf (const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc23_wscanf") 234s 1949: 234s 1949: ; 234s 1949: extern int swscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc23_swscanf") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: # 851 "/usr/include/wchar.h" 3 4 234s 1949: extern int vfwscanf (__FILE *__restrict __s, 234s 1949: const wchar_t *__restrict __format, 234s 1949: __gnuc_va_list __arg) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int vwscanf (const wchar_t *__restrict __format, 234s 1949: __gnuc_va_list __arg) 234s 1949: ; 234s 1949: 234s 1949: extern int vswscanf (const wchar_t *__restrict __s, 234s 1949: const wchar_t *__restrict __format, 234s 1949: __gnuc_va_list __arg) 234s 1949: noexcept (true) ; 234s 1949: # 875 "/usr/include/wchar.h" 3 4 234s 1949: extern int vfwscanf (__FILE *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfwscanf") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: extern int vwscanf (const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vwscanf") 234s 1949: 234s 1949: ; 234s 1949: extern int vswscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc23_vswscanf") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: # 935 "/usr/include/wchar.h" 3 4 234s 1949: extern wint_t fgetwc (__FILE *__stream); 234s 1949: extern wint_t getwc (__FILE *__stream); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wint_t getwchar (void); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); 234s 1949: extern wint_t putwc (wchar_t __wc, __FILE *__stream); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wint_t putwchar (wchar_t __wc); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, 234s 1949: __FILE *__restrict __stream); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int fputws (const wchar_t *__restrict __ws, 234s 1949: __FILE *__restrict __stream); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); 234s 1949: # 990 "/usr/include/wchar.h" 3 4 234s 1949: extern wint_t getwc_unlocked (__FILE *__stream); 234s 1949: extern wint_t getwchar_unlocked (void); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wint_t fgetwc_unlocked (__FILE *__stream); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); 234s 1949: # 1016 "/usr/include/wchar.h" 3 4 234s 1949: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); 234s 1949: extern wint_t putwchar_unlocked (wchar_t __wc); 234s 1949: # 1026 "/usr/include/wchar.h" 3 4 234s 1949: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, 234s 1949: __FILE *__restrict __stream); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int fputws_unlocked (const wchar_t *__restrict __ws, 234s 1949: __FILE *__restrict __stream); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, 234s 1949: const wchar_t *__restrict __format, 234s 1949: const struct tm *__restrict __tp) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, 234s 1949: const wchar_t *__restrict __format, 234s 1949: const struct tm *__restrict __tp, 234s 1949: locale_t __loc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar2-decl.h" 1 3 4 234s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/wchar2-decl.h" 3 4 234s 1949: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, 234s 1949: const wchar_t *__restrict __s2, size_t __n, 234s 1949: size_t __ns1) noexcept (true); 234s 1949: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmemcpy") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: extern wchar_t *__wmemcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemcpy_chk") 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) 234s 1949: ; 234s 1949: 234s 1949: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, 234s 1949: size_t __n, size_t __ns1) noexcept (true); 234s 1949: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) noexcept (true) __asm__ ("" "wmemmove") 234s 1949: 234s 1949: ; 234s 1949: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemmove_chk") 234s 1949: 234s 1949: 234s 1949: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, 234s 1949: const wchar_t *__restrict __s2, size_t __n, 234s 1949: size_t __ns1) noexcept (true); 234s 1949: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmempcpy") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: extern wchar_t *__wmempcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmempcpy_chk") 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, 234s 1949: size_t __ns) noexcept (true); 234s 1949: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true) __asm__ ("" "wmemset") 234s 1949: ; 234s 1949: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) noexcept (true) __asm__ ("" "__wmemset_chk") 234s 1949: 234s 1949: 234s 1949: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) 234s 1949: ; 234s 1949: 234s 1949: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, 234s 1949: size_t __n) noexcept (true); 234s 1949: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscpy") 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, 234s 1949: size_t __destlen) noexcept (true); 234s 1949: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcpcpy") 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, size_t __n, 234s 1949: size_t __destlen) noexcept (true); 234s 1949: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncpy") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: extern wchar_t *__wcsncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) noexcept (true) __asm__ ("" "__wcsncpy_chk") 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) 234s 1949: ; 234s 1949: 234s 1949: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, size_t __n, 234s 1949: size_t __destlen) noexcept (true); 234s 1949: 234s 1949: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcpncpy") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: extern wchar_t *__wcpncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) noexcept (true) __asm__ ("" "__wcpncpy_chk") 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) 234s 1949: ; 234s 1949: 234s 1949: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, 234s 1949: size_t __destlen) noexcept (true); 234s 1949: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscat") 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, 234s 1949: const wchar_t *__restrict __src, 234s 1949: size_t __n, size_t __destlen) noexcept (true); 234s 1949: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncat") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, 234s 1949: int __flag, size_t __s_len, 234s 1949: const wchar_t *__restrict __format, ...) 234s 1949: noexcept (true) ; 234s 1949: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) __asm__ ("" "swprintf") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, 234s 1949: int __flag, size_t __s_len, 234s 1949: const wchar_t *__restrict __format, 234s 1949: __gnuc_va_list __arg) 234s 1949: noexcept (true) ; 234s 1949: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) __asm__ ("" "vswprintf") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, 234s 1949: const wchar_t *__restrict __format, ...); 234s 1949: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, 234s 1949: ...); 234s 1949: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, 234s 1949: const wchar_t *__restrict __format, 234s 1949: __gnuc_va_list __ap); 234s 1949: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, 234s 1949: __gnuc_va_list __ap); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, 234s 1949: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 234s 1949: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") 234s 1949: 234s 1949: __attribute__ ((__warn_unused_result__)); 234s 1949: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, 234s 1949: int __n, __FILE *__restrict __stream) 234s 1949: __attribute__ ((__warn_unused_result__)); 234s 1949: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__warn_unused_result__)); 234s 1949: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, 234s 1949: mbstate_t *__restrict __p, 234s 1949: size_t __buflen) noexcept (true) __attribute__ ((__warn_unused_result__)); 234s 1949: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcrtomb") 234s 1949: 234s 1949: __attribute__ ((__warn_unused_result__)); 234s 1949: 234s 1949: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, 234s 1949: const char **__restrict __src, 234s 1949: size_t __len, mbstate_t *__restrict __ps, 234s 1949: size_t __dstlen) noexcept (true); 234s 1949: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsrtowcs") 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: extern size_t __mbsrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__mbsrtowcs_chk") 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 234s 1949: ; 234s 1949: 234s 1949: extern size_t __wcsrtombs_chk (char *__restrict __dst, 234s 1949: const wchar_t **__restrict __src, 234s 1949: size_t __len, mbstate_t *__restrict __ps, 234s 1949: size_t __dstlen) noexcept (true); 234s 1949: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsrtombs") 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: extern size_t __wcsrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__wcsrtombs_chk") 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, 234s 1949: const char **__restrict __src, size_t __nmc, 234s 1949: size_t __len, mbstate_t *__restrict __ps, 234s 1949: size_t __dstlen) noexcept (true); 234s 1949: extern size_t __mbsnrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsnrtowcs") 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 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) noexcept (true) __asm__ ("" "__mbsnrtowcs_chk") 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 234s 1949: ; 234s 1949: 234s 1949: extern size_t __wcsnrtombs_chk (char *__restrict __dst, 234s 1949: const wchar_t **__restrict __src, 234s 1949: size_t __nwc, size_t __len, 234s 1949: mbstate_t *__restrict __ps, size_t __dstlen) 234s 1949: noexcept (true); 234s 1949: extern size_t __wcsnrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsnrtombs") 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 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) noexcept (true) __asm__ ("" "__wcsnrtombs_chk") 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern size_t __wcslcpy_chk (wchar_t *__dest, const wchar_t *__src, size_t __n, 234s 1949: size_t __destlen) noexcept (true); 234s 1949: extern size_t __wcslcpy_alias (wchar_t *__dest, const wchar_t *__src, size_t __n) noexcept (true) __asm__ ("" "wcslcpy") 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: extern size_t __wcslcat_chk (wchar_t *__dest, const wchar_t *__src, size_t __n, 234s 1949: size_t __destlen) noexcept (true); 234s 1949: extern size_t __wcslcat_alias (wchar_t *__dest, const wchar_t *__src, size_t __n) noexcept (true) __asm__ ("" "wcslcat") 234s 1949: 234s 1949: ; 234s 1949: # 1060 "/usr/include/wchar.h" 2 3 4 234s 1949: # 1070 "/usr/include/wchar.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 1 3 4 234s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 234s 1949: __attribute__ ((__leaf__)) wmemcpy (wchar_t * __restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__s1, 0)) && (__builtin_dynamic_object_size (__s1, 0)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmemcpy_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemcpy_chk_warn (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemcpy_chk (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))))) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 234s 1949: __attribute__ ((__leaf__)) wmemmove (wchar_t * __s1, const wchar_t *__s2, size_t __n) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__s1, 0)) && (__builtin_dynamic_object_size (__s1, 0)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmemmove_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemmove_chk_warn (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemmove_chk (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))))) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 234s 1949: __attribute__ ((__leaf__)) wmempcpy (wchar_t * __restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__s1, 0)) && (__builtin_dynamic_object_size (__s1, 0)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmempcpy_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmempcpy_chk_warn (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmempcpy_chk (__s1, __s2, __n, (__builtin_dynamic_object_size (__s1, 0)) / (sizeof (wchar_t))))) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 234s 1949: __attribute__ ((__leaf__)) wmemset (wchar_t * __s, wchar_t __c, size_t __n) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__s, 0)) && (__builtin_dynamic_object_size (__s, 0)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__s, 0))) / ((sizeof (wchar_t)))))) ? __wmemset_alias (__s, __c, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__s, 0)) / (sizeof (wchar_t)))) ? __wmemset_chk_warn (__s, __c, __n, (__builtin_dynamic_object_size (__s, 0)) / (sizeof (wchar_t))) : __wmemset_chk (__s, __c, __n, (__builtin_dynamic_object_size (__s, 0)) / (sizeof (wchar_t))))) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 234s 1949: __attribute__ ((__leaf__)) wcscpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) 234s 1949: 234s 1949: { 234s 1949: size_t __sz = __builtin_dynamic_object_size (__dest, 1); 234s 1949: if (__sz != (size_t) -1) 234s 1949: return __wcscpy_chk (__dest, __src, __sz / sizeof (wchar_t)); 234s 1949: return __wcscpy_alias (__dest, __src); 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 234s 1949: __attribute__ ((__leaf__)) wcpcpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) 234s 1949: 234s 1949: { 234s 1949: size_t __sz = __builtin_dynamic_object_size (__dest, 1); 234s 1949: if (__sz != (size_t) -1) 234s 1949: return __wcpcpy_chk (__dest, __src, __sz / sizeof (wchar_t)); 234s 1949: return __wcpcpy_alias (__dest, __src); 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 234s 1949: __attribute__ ((__leaf__)) wcsncpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dest, 1)) && (__builtin_dynamic_object_size (__dest, 1)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__dest, 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__dest, 1))) / ((sizeof (wchar_t)))))) ? __wcsncpy_alias (__dest, __src, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t)))) ? __wcsncpy_chk_warn (__dest, __src, __n, (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t))) : __wcsncpy_chk (__dest, __src, __n, (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t))))) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 234s 1949: __attribute__ ((__leaf__)) wcpncpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dest, 1)) && (__builtin_dynamic_object_size (__dest, 1)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__dest, 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_dynamic_object_size (__dest, 1))) / ((sizeof (wchar_t)))))) ? __wcpncpy_alias (__dest, __src, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t)))) ? __wcpncpy_chk_warn (__dest, __src, __n, (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t))) : __wcpncpy_chk (__dest, __src, __n, (__builtin_dynamic_object_size (__dest, 1)) / (sizeof (wchar_t))))) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 234s 1949: __attribute__ ((__leaf__)) wcscat (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) 234s 1949: 234s 1949: { 234s 1949: size_t __sz = __builtin_dynamic_object_size (__dest, 1); 234s 1949: if (__sz != (size_t) -1) 234s 1949: return __wcscat_chk (__dest, __src, __sz / sizeof (wchar_t)); 234s 1949: return __wcscat_alias (__dest, __src); 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 234s 1949: __attribute__ ((__leaf__)) wcsncat (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 234s 1949: 234s 1949: { 234s 1949: size_t __sz = __builtin_dynamic_object_size (__dest, 1); 234s 1949: if (__sz != (size_t) -1) 234s 1949: return __wcsncat_chk (__dest, __src, __n, __sz / sizeof (wchar_t)); 234s 1949: return __wcsncat_alias (__dest, __src, __n); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 234s 1949: __attribute__ ((__leaf__)) wcslcpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: if (__builtin_dynamic_object_size (__dest, 1) != (size_t) -1 234s 1949: && (!__builtin_constant_p (__n 234s 1949: > __builtin_dynamic_object_size (__dest, 1) / sizeof (wchar_t)) 234s 1949: || __n > __builtin_dynamic_object_size (__dest, 1) / sizeof (wchar_t))) 234s 1949: return __wcslcpy_chk (__dest, __src, __n, 234s 1949: __builtin_dynamic_object_size (__dest, 1) / sizeof (wchar_t)); 234s 1949: return __wcslcpy_alias (__dest, __src, __n); 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 234s 1949: __attribute__ ((__leaf__)) wcslcat (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 234s 1949: 234s 1949: { 234s 1949: if (__builtin_dynamic_object_size (__dest, 1) != (size_t) -1 234s 1949: && (!__builtin_constant_p (__n > __builtin_dynamic_object_size (__dest, 1) 234s 1949: / sizeof (wchar_t)) 234s 1949: || __n > __builtin_dynamic_object_size (__dest, 1) / sizeof (wchar_t))) 234s 1949: return __wcslcat_chk (__dest, __src, __n, 234s 1949: __builtin_dynamic_object_size (__dest, 1) / sizeof (wchar_t)); 234s 1949: return __wcslcat_alias (__dest, __src, __n); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 234s 1949: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) 234s 1949: 234s 1949: { 234s 1949: size_t __sz = __builtin_dynamic_object_size (__s, 1); 234s 1949: if (__sz != (size_t) -1 || 3 > 1) 234s 1949: return __swprintf_chk (__s, __n, 3 - 1, 234s 1949: __sz / sizeof (wchar_t), __fmt, __builtin_va_arg_pack ()); 234s 1949: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); 234s 1949: } 234s 1949: # 205 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 234s 1949: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 234s 1949: 234s 1949: { 234s 1949: size_t __sz = __builtin_dynamic_object_size (__s, 1); 234s 1949: if (__sz != (size_t) -1 || 3 > 1) 234s 1949: return __vswprintf_chk (__s, __n, 3 - 1, 234s 1949: __sz / sizeof (wchar_t), __fmt, __ap); 234s 1949: return __vswprintf_alias (__s, __n, __fmt, __ap); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 234s 1949: wprintf (const wchar_t *__restrict __fmt, ...) 234s 1949: { 234s 1949: return __wprintf_chk (3 - 1, __fmt, __builtin_va_arg_pack ()); 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 234s 1949: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) 234s 1949: { 234s 1949: return __fwprintf_chk (__stream, 3 - 1, __fmt, 234s 1949: __builtin_va_arg_pack ()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 234s 1949: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 234s 1949: { 234s 1949: return __vwprintf_chk (3 - 1, __fmt, __ap); 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 234s 1949: vfwprintf (__FILE *__restrict __stream, 234s 1949: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 234s 1949: { 234s 1949: return __vfwprintf_chk (__stream, 3 - 1, __fmt, __ap); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 234s 1949: fgetws (wchar_t * __restrict __s, int __n, 234s 1949: __FILE *__restrict __stream) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: size_t __sz = __builtin_dynamic_object_size (__s, 1); 234s 1949: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__sz)) / ((sizeof (wchar_t))))))) 234s 1949: return __fgetws_alias (__s, __n, __stream); 234s 1949: 234s 1949: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__sz) / (sizeof (wchar_t))))) 234s 1949: return __fgetws_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream); 234s 1949: 234s 1949: return __fgetws_chk (__s, __sz / sizeof (wchar_t), __n, __stream); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 234s 1949: fgetws_unlocked (wchar_t * __restrict __s, 234s 1949: int __n, __FILE *__restrict __stream) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: size_t __sz = __builtin_dynamic_object_size (__s, 1); 234s 1949: if (((__builtin_constant_p (__sz) && (__sz) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__sz)) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__sz)) / ((sizeof (wchar_t))))))) 234s 1949: return __fgetws_unlocked_alias (__s, __n, __stream); 234s 1949: 234s 1949: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= (__sz) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__sz) / (sizeof (wchar_t))))) 234s 1949: return __fgetws_unlocked_chk_warn (__s, __sz / sizeof (wchar_t), __n, 234s 1949: __stream); 234s 1949: 234s 1949: return __fgetws_unlocked_chk (__s, __sz / sizeof (wchar_t), __n, __stream); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 234s 1949: __attribute__ ((__leaf__)) wcrtomb (char * __restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) 234s 1949: 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__builtin_dynamic_object_size (__s, 1) != (size_t) -1 234s 1949: && 16 > __builtin_dynamic_object_size (__s, 1)) 234s 1949: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_dynamic_object_size (__s, 1)); 234s 1949: return __wcrtomb_alias (__s, __wchar, __ps); 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 234s 1949: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t * __restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t)))))) ? __mbsrtowcs_alias (__dst, __src, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) ? __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))) : __mbsrtowcs_chk (__dst, __src, __len, __ps, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))))) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 234s 1949: __attribute__ ((__leaf__)) wcsrtombs (char * __restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char)))))) ? __wcsrtombs_alias (__dst, __src, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) ? __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_dynamic_object_size (__dst, 1)) : __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_dynamic_object_size (__dst, 1)))) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 234s 1949: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t * __restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (wchar_t)))))) ? __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t)))) ? __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))) : __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (wchar_t))))) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: 234s 1949: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 234s 1949: __attribute__ ((__leaf__)) wcsnrtombs (char * __restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: return (((__builtin_constant_p (__builtin_dynamic_object_size (__dst, 1)) && (__builtin_dynamic_object_size (__dst, 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_dynamic_object_size (__dst, 1))) / ((sizeof (char)))))) ? __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_dynamic_object_size (__dst, 1)) / (sizeof (char)))) ? __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, __builtin_dynamic_object_size (__dst, 1)) : __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, __builtin_dynamic_object_size (__dst, 1)))) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: # 1071 "/usr/include/wchar.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 50 "/usr/include/c++/15/cwchar" 2 3 4 234s 1949: # 64 "/usr/include/c++/15/cwchar" 3 4 234s 1949: namespace std 234s 1949: { 234s 1949: using ::mbstate_t; 234s 1949: } 234s 1949: # 137 "/usr/include/c++/15/cwchar" 3 4 234s 1949: extern "C++" 234s 1949: { 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: using ::wint_t; 234s 1949: 234s 1949: using ::btowc; 234s 1949: using ::fgetwc; 234s 1949: using ::fgetws; 234s 1949: using ::fputwc; 234s 1949: using ::fputws; 234s 1949: using ::fwide; 234s 1949: using ::fwprintf; 234s 1949: using ::fwscanf; 234s 1949: using ::getwc; 234s 1949: using ::getwchar; 234s 1949: using ::mbrlen; 234s 1949: using ::mbrtowc; 234s 1949: using ::mbsinit; 234s 1949: using ::mbsrtowcs; 234s 1949: using ::putwc; 234s 1949: using ::putwchar; 234s 1949: 234s 1949: using ::swprintf; 234s 1949: 234s 1949: using ::swscanf; 234s 1949: using ::ungetwc; 234s 1949: using ::vfwprintf; 234s 1949: 234s 1949: using ::vfwscanf; 234s 1949: 234s 1949: 234s 1949: using ::vswprintf; 234s 1949: 234s 1949: 234s 1949: using ::vswscanf; 234s 1949: 234s 1949: using ::vwprintf; 234s 1949: 234s 1949: using ::vwscanf; 234s 1949: 234s 1949: using ::wcrtomb; 234s 1949: using ::wcscat; 234s 1949: using ::wcscmp; 234s 1949: using ::wcscoll; 234s 1949: using ::wcscpy; 234s 1949: using ::wcscspn; 234s 1949: using ::wcsftime; 234s 1949: using ::wcslen; 234s 1949: using ::wcsncat; 234s 1949: using ::wcsncmp; 234s 1949: using ::wcsncpy; 234s 1949: using ::wcsrtombs; 234s 1949: using ::wcsspn; 234s 1949: using ::wcstod; 234s 1949: 234s 1949: using ::wcstof; 234s 1949: 234s 1949: using ::wcstok; 234s 1949: using ::wcstol; 234s 1949: using ::wcstoul; 234s 1949: using ::wcsxfrm; 234s 1949: using ::wctob; 234s 1949: using ::wmemcmp; 234s 1949: using ::wmemcpy; 234s 1949: using ::wmemmove; 234s 1949: using ::wmemset; 234s 1949: using ::wprintf; 234s 1949: using ::wscanf; 234s 1949: using ::wcschr; 234s 1949: using ::wcspbrk; 234s 1949: using ::wcsrchr; 234s 1949: using ::wcsstr; 234s 1949: using ::wmemchr; 234s 1949: # 236 "/usr/include/c++/15/cwchar" 3 4 234s 1949: 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace __gnu_cxx 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using ::wcstold; 234s 1949: # 262 "/usr/include/c++/15/cwchar" 3 4 234s 1949: using ::wcstoll; 234s 1949: using ::wcstoull; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: namespace std 234s 1949: { 234s 1949: using ::__gnu_cxx::wcstold; 234s 1949: using ::__gnu_cxx::wcstoll; 234s 1949: using ::__gnu_cxx::wcstoull; 234s 1949: } 234s 1949: # 282 "/usr/include/c++/15/cwchar" 3 4 234s 1949: namespace std 234s 1949: { 234s 1949: 234s 1949: using std::wcstof; 234s 1949: 234s 1949: 234s 1949: using std::vfwscanf; 234s 1949: 234s 1949: 234s 1949: using std::vswscanf; 234s 1949: 234s 1949: 234s 1949: using std::vwscanf; 234s 1949: 234s 1949: 234s 1949: 234s 1949: using std::wcstold; 234s 1949: using std::wcstoll; 234s 1949: using std::wcstoull; 234s 1949: 234s 1949: } 234s 1949: # 43 "/usr/include/c++/15/bits/postypes.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 55 "/usr/include/c++/15/bits/postypes.h" 3 4 234s 1949: 234s 1949: # 55 "/usr/include/c++/15/bits/postypes.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: # 66 "/usr/include/c++/15/bits/postypes.h" 3 4 234s 1949: typedef long long int streamoff; 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: typedef ptrdiff_t streamsize; 234s 1949: # 86 "/usr/include/c++/15/bits/postypes.h" 3 4 234s 1949: template 234s 1949: class fpos 234s 1949: { 234s 1949: private: 234s 1949: streamoff _M_off; 234s 1949: _StateT _M_state; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: fpos() 234s 1949: : _M_off(0), _M_state() { } 234s 1949: # 108 "/usr/include/c++/15/bits/postypes.h" 3 4 234s 1949: fpos(streamoff __off) 234s 1949: : _M_off(__off), _M_state() { } 234s 1949: 234s 1949: 234s 1949: fpos(const fpos&) = default; 234s 1949: fpos& operator=(const fpos&) = default; 234s 1949: ~fpos() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: operator streamoff() const { return _M_off; } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: state(_StateT __st) 234s 1949: { _M_state = __st; } 234s 1949: 234s 1949: 234s 1949: _StateT 234s 1949: state() const 234s 1949: { return _M_state; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: fpos& 234s 1949: operator+=(streamoff __off) 234s 1949: { 234s 1949: _M_off += __off; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: fpos& 234s 1949: operator-=(streamoff __off) 234s 1949: { 234s 1949: _M_off -= __off; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: fpos 234s 1949: operator+(streamoff __off) const 234s 1949: { 234s 1949: fpos __pos(*this); 234s 1949: __pos += __off; 234s 1949: return __pos; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: fpos 234s 1949: operator-(streamoff __off) const 234s 1949: { 234s 1949: fpos __pos(*this); 234s 1949: __pos -= __off; 234s 1949: return __pos; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: streamoff 234s 1949: operator-(const fpos& __other) const 234s 1949: { return _M_off - __other._M_off; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 234s 1949: { return streamoff(__lhs) == streamoff(__rhs); } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 234s 1949: { return streamoff(__lhs) != streamoff(__rhs); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef fpos streampos; 234s 1949: 234s 1949: typedef fpos wstreampos; 234s 1949: # 220 "/usr/include/c++/15/bits/postypes.h" 3 4 234s 1949: typedef fpos u16streampos; 234s 1949: 234s 1949: typedef fpos u32streampos; 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 45 "/usr/include/c++/15/iosfwd" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 78 "/usr/include/c++/15/iosfwd" 3 4 234s 1949: class ios_base; 234s 1949: 234s 1949: template > 234s 1949: class basic_ios; 234s 1949: 234s 1949: template > 234s 1949: class basic_streambuf; 234s 1949: 234s 1949: template > 234s 1949: class basic_istream; 234s 1949: 234s 1949: template > 234s 1949: class basic_ostream; 234s 1949: 234s 1949: template > 234s 1949: class basic_iostream; 234s 1949: 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: 234s 1949: template, 234s 1949: typename _Alloc = allocator<_CharT> > 234s 1949: class basic_stringbuf; 234s 1949: 234s 1949: template, 234s 1949: typename _Alloc = allocator<_CharT> > 234s 1949: class basic_istringstream; 234s 1949: 234s 1949: template, 234s 1949: typename _Alloc = allocator<_CharT> > 234s 1949: class basic_ostringstream; 234s 1949: 234s 1949: template, 234s 1949: typename _Alloc = allocator<_CharT> > 234s 1949: class basic_stringstream; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: template > 234s 1949: class basic_filebuf; 234s 1949: 234s 1949: template > 234s 1949: class basic_ifstream; 234s 1949: 234s 1949: template > 234s 1949: class basic_ofstream; 234s 1949: 234s 1949: template > 234s 1949: class basic_fstream; 234s 1949: 234s 1949: template > 234s 1949: class istreambuf_iterator; 234s 1949: 234s 1949: template > 234s 1949: class ostreambuf_iterator; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef basic_ios ios; 234s 1949: 234s 1949: 234s 1949: typedef basic_streambuf streambuf; 234s 1949: 234s 1949: 234s 1949: typedef basic_istream istream; 234s 1949: 234s 1949: 234s 1949: typedef basic_ostream ostream; 234s 1949: 234s 1949: 234s 1949: typedef basic_iostream iostream; 234s 1949: 234s 1949: 234s 1949: typedef basic_stringbuf stringbuf; 234s 1949: 234s 1949: 234s 1949: typedef basic_istringstream istringstream; 234s 1949: 234s 1949: 234s 1949: typedef basic_ostringstream ostringstream; 234s 1949: 234s 1949: 234s 1949: typedef basic_stringstream stringstream; 234s 1949: 234s 1949: 234s 1949: typedef basic_filebuf filebuf; 234s 1949: 234s 1949: 234s 1949: typedef basic_ifstream ifstream; 234s 1949: 234s 1949: 234s 1949: typedef basic_ofstream ofstream; 234s 1949: 234s 1949: 234s 1949: typedef basic_fstream fstream; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef basic_ios wios; 234s 1949: 234s 1949: 234s 1949: typedef basic_streambuf wstreambuf; 234s 1949: 234s 1949: 234s 1949: typedef basic_istream wistream; 234s 1949: 234s 1949: 234s 1949: typedef basic_ostream wostream; 234s 1949: 234s 1949: 234s 1949: typedef basic_iostream wiostream; 234s 1949: 234s 1949: 234s 1949: typedef basic_stringbuf wstringbuf; 234s 1949: 234s 1949: 234s 1949: typedef basic_istringstream wistringstream; 234s 1949: 234s 1949: 234s 1949: typedef basic_ostringstream wostringstream; 234s 1949: 234s 1949: 234s 1949: typedef basic_stringstream wstringstream; 234s 1949: 234s 1949: 234s 1949: typedef basic_filebuf wfilebuf; 234s 1949: 234s 1949: 234s 1949: typedef basic_ifstream wifstream; 234s 1949: 234s 1949: 234s 1949: typedef basic_ofstream wofstream; 234s 1949: 234s 1949: 234s 1949: typedef basic_fstream wfstream; 234s 1949: # 257 "/usr/include/c++/15/iosfwd" 3 4 234s 1949: 234s 1949: } 234s 1949: # 43 "/usr/include/c++/15/ios" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/exception" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/exception" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/exception" 2 3 4 234s 1949: 234s 1949: extern "C++" { 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: # 56 "/usr/include/c++/15/exception" 3 4 234s 1949: class bad_exception : public exception 234s 1949: { 234s 1949: public: 234s 1949: bad_exception() noexcept { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual ~bad_exception() noexcept; 234s 1949: 234s 1949: 234s 1949: virtual const char* 234s 1949: what() const noexcept; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: typedef void (*terminate_handler) (); 234s 1949: 234s 1949: 234s 1949: terminate_handler set_terminate(terminate_handler) noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: terminate_handler get_terminate() noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void terminate() noexcept __attribute__ ((__noreturn__,__cold__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef void (*__attribute__ ((__deprecated__)) unexpected_handler) (); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__deprecated__)) 234s 1949: unexpected_handler set_unexpected(unexpected_handler) noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__deprecated__)) 234s 1949: unexpected_handler get_unexpected() noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__deprecated__)) 234s 1949: void unexpected() __attribute__ ((__noreturn__,__cold__)); 234s 1949: # 126 "/usr/include/c++/15/exception" 3 4 234s 1949: 234s 1949: bool uncaught_exception() noexcept __attribute__ ((__pure__)); 234s 1949: # 138 "/usr/include/c++/15/exception" 3 4 234s 1949: } 234s 1949: 234s 1949: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 160 "/usr/include/c++/15/exception" 3 4 234s 1949: void __verbose_terminate_handler(); 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/exception_ptr.h" 1 3 4 234s 1949: # 35 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/exception_defines.h" 1 3 4 234s 1949: # 36 "/usr/include/c++/15/bits/exception_ptr.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/cxxabi_init_exception.h" 1 3 4 234s 1949: # 38 "/usr/include/c++/15/bits/cxxabi_init_exception.h" 3 4 234s 1949: #pragma GCC visibility push(default) 234s 1949: 234s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 234s 1949: # 160 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 3 4 234s 1949: typedef int ptrdiff_t; 234s 1949: # 440 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 3 4 234s 1949: typedef struct { 234s 1949: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); 234s 1949: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); 234s 1949: # 451 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 3 4 234s 1949: } max_align_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef decltype(nullptr) nullptr_t; 234s 1949: # 41 "/usr/include/c++/15/bits/cxxabi_init_exception.h" 2 3 4 234s 1949: # 52 "/usr/include/c++/15/bits/cxxabi_init_exception.h" 3 4 234s 1949: namespace std 234s 1949: { 234s 1949: class type_info; 234s 1949: } 234s 1949: 234s 1949: namespace __cxxabiv1 234s 1949: { 234s 1949: struct __cxa_refcounted_exception; 234s 1949: 234s 1949: extern "C" 234s 1949: { 234s 1949: 234s 1949: void* 234s 1949: __cxa_allocate_exception(size_t) noexcept; 234s 1949: 234s 1949: void 234s 1949: __cxa_free_exception(void*) noexcept; 234s 1949: 234s 1949: 234s 1949: __cxa_refcounted_exception* 234s 1949: __cxa_init_primary_exception(void *__object, std::type_info *__tinfo, 234s 1949: void ( *__dest) (void *)) 234s 1949: noexcept; 234s 1949: 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC visibility pop 234s 1949: # 37 "/usr/include/c++/15/bits/exception_ptr.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/typeinfo" 1 3 4 234s 1949: # 38 "/usr/include/c++/15/typeinfo" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/hash_bytes.h" 1 3 4 234s 1949: # 39 "/usr/include/c++/15/bits/hash_bytes.h" 3 4 234s 1949: namespace std 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_t 234s 1949: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_t 234s 1949: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 39 "/usr/include/c++/15/typeinfo" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 43 "/usr/include/c++/15/typeinfo" 2 3 4 234s 1949: 234s 1949: #pragma GCC visibility push(default) 234s 1949: 234s 1949: extern "C++" { 234s 1949: 234s 1949: namespace __cxxabiv1 234s 1949: { 234s 1949: class __class_type_info; 234s 1949: } 234s 1949: # 85 "/usr/include/c++/15/typeinfo" 3 4 234s 1949: namespace std 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: class type_info 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual ~type_info(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: const char* name() const noexcept 234s 1949: { return __name[0] == '*' ? __name + 1 : __name; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: bool before(const type_info& __arg) const noexcept; 234s 1949: 234s 1949: 234s 1949: bool operator==(const type_info& __arg) const noexcept; 234s 1949: 234s 1949: 234s 1949: bool operator!=(const type_info& __arg) const noexcept 234s 1949: { return !operator==(__arg); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_t hash_code() const noexcept 234s 1949: { 234s 1949: 234s 1949: return _Hash_bytes(name(), __builtin_strlen(name()), 234s 1949: static_cast(0xc70f6907UL)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual bool __is_pointer_p() const; 234s 1949: 234s 1949: 234s 1949: virtual bool __is_function_p() const; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, 234s 1949: unsigned __outer) const; 234s 1949: 234s 1949: 234s 1949: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, 234s 1949: void **__obj_ptr) const; 234s 1949: 234s 1949: protected: 234s 1949: const char *__name; 234s 1949: 234s 1949: explicit type_info(const char *__n): __name(__n) { } 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: 234s 1949: type_info& operator=(const type_info&) = delete; 234s 1949: type_info(const type_info&) = delete; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: bool __equal(const type_info&) const noexcept; 234s 1949: 234s 1949: }; 234s 1949: # 224 "/usr/include/c++/15/typeinfo" 3 4 234s 1949: class bad_cast : public exception 234s 1949: { 234s 1949: public: 234s 1949: bad_cast() noexcept { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual ~bad_cast() noexcept; 234s 1949: 234s 1949: 234s 1949: virtual const char* what() const noexcept; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: class bad_typeid : public exception 234s 1949: { 234s 1949: public: 234s 1949: bad_typeid () noexcept { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual ~bad_typeid() noexcept; 234s 1949: 234s 1949: 234s 1949: virtual const char* what() const noexcept; 234s 1949: }; 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC visibility pop 234s 1949: # 38 "/usr/include/c++/15/bits/exception_ptr.h" 2 3 4 234s 1949: # 50 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 234s 1949: extern "C++" { 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: class type_info; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace __exception_ptr 234s 1949: { 234s 1949: class exception_ptr; 234s 1949: } 234s 1949: 234s 1949: using __exception_ptr::exception_ptr; 234s 1949: # 75 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 234s 1949: exception_ptr current_exception() noexcept; 234s 1949: 234s 1949: template 234s 1949: exception_ptr make_exception_ptr(_Ex) noexcept; 234s 1949: 234s 1949: 234s 1949: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); 234s 1949: 234s 1949: namespace __exception_ptr 234s 1949: { 234s 1949: using std::rethrow_exception; 234s 1949: # 97 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 234s 1949: class exception_ptr 234s 1949: { 234s 1949: void* _M_exception_object; 234s 1949: 234s 1949: explicit exception_ptr(void* __e) noexcept; 234s 1949: 234s 1949: void _M_addref() noexcept; 234s 1949: void _M_release() noexcept; 234s 1949: 234s 1949: void *_M_get() const noexcept __attribute__ ((__pure__)); 234s 1949: 234s 1949: friend exception_ptr std::current_exception() noexcept; 234s 1949: friend void std::rethrow_exception(exception_ptr); 234s 1949: template 234s 1949: friend exception_ptr std::make_exception_ptr(_Ex) noexcept; 234s 1949: 234s 1949: public: 234s 1949: exception_ptr() noexcept; 234s 1949: 234s 1949: exception_ptr(const exception_ptr&) noexcept; 234s 1949: 234s 1949: 234s 1949: exception_ptr(nullptr_t) noexcept 234s 1949: : _M_exception_object(nullptr) 234s 1949: { } 234s 1949: 234s 1949: exception_ptr(exception_ptr&& __o) noexcept 234s 1949: : _M_exception_object(__o._M_exception_object) 234s 1949: { __o._M_exception_object = nullptr; } 234s 1949: # 135 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 234s 1949: exception_ptr& 234s 1949: operator=(const exception_ptr&) noexcept; 234s 1949: 234s 1949: 234s 1949: exception_ptr& 234s 1949: operator=(exception_ptr&& __o) noexcept 234s 1949: { 234s 1949: exception_ptr(static_cast(__o)).swap(*this); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: ~exception_ptr() noexcept; 234s 1949: 234s 1949: void 234s 1949: swap(exception_ptr&) noexcept; 234s 1949: # 161 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 234s 1949: explicit operator bool() const noexcept 234s 1949: { return _M_exception_object; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: friend bool 234s 1949: operator==(const exception_ptr& __x, const exception_ptr& __y) 234s 1949: noexcept 234s 1949: { return __x._M_exception_object == __y._M_exception_object; } 234s 1949: 234s 1949: friend bool 234s 1949: operator!=(const exception_ptr& __x, const exception_ptr& __y) 234s 1949: noexcept 234s 1949: { return __x._M_exception_object != __y._M_exception_object; } 234s 1949: 234s 1949: 234s 1949: const class std::type_info* 234s 1949: __cxa_exception_type() const noexcept 234s 1949: __attribute__ ((__pure__)); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: inline 234s 1949: exception_ptr::exception_ptr() noexcept 234s 1949: : _M_exception_object(0) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: inline 234s 1949: exception_ptr::exception_ptr(const exception_ptr& __other) 234s 1949: noexcept 234s 1949: : _M_exception_object(__other._M_exception_object) 234s 1949: { 234s 1949: if (_M_exception_object) 234s 1949: _M_addref(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline 234s 1949: exception_ptr::~exception_ptr() noexcept 234s 1949: { 234s 1949: if (_M_exception_object) 234s 1949: _M_release(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline exception_ptr& 234s 1949: exception_ptr::operator=(const exception_ptr& __other) noexcept 234s 1949: { 234s 1949: exception_ptr(__other).swap(*this); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline void 234s 1949: exception_ptr::swap(exception_ptr &__other) noexcept 234s 1949: { 234s 1949: void *__tmp = _M_exception_object; 234s 1949: _M_exception_object = __other._M_exception_object; 234s 1949: __other._M_exception_object = __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline void 234s 1949: swap(exception_ptr& __lhs, exception_ptr& __rhs) 234s 1949: { __lhs.swap(__rhs); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __dest_thunk(void* __x) 234s 1949: { static_cast<_Ex*>(__x)->~_Ex(); } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: using __exception_ptr::swap; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: exception_ptr 234s 1949: make_exception_ptr(_Ex __ex) noexcept 234s 1949: { 234s 1949: 234s 1949: using _Ex2 = typename decay<_Ex>::type; 234s 1949: void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); 234s 1949: (void) __cxxabiv1::__cxa_init_primary_exception( 234s 1949: __e, const_cast(&typeid(_Ex)), 234s 1949: __exception_ptr::__dest_thunk<_Ex2>); 234s 1949: try 234s 1949: { 234s 1949: ::new (__e) _Ex2(__ex); 234s 1949: return exception_ptr(__e); 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: __cxxabiv1::__cxa_free_exception(__e); 234s 1949: return current_exception(); 234s 1949: } 234s 1949: # 276 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 234s 1949: } 234s 1949: # 290 "/usr/include/c++/15/bits/exception_ptr.h" 3 4 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: # 169 "/usr/include/c++/15/exception" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/nested_exception.h" 1 3 4 234s 1949: # 40 "/usr/include/c++/15/bits/nested_exception.h" 3 4 234s 1949: extern "C++" { 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: # 59 "/usr/include/c++/15/bits/nested_exception.h" 3 4 234s 1949: class nested_exception 234s 1949: { 234s 1949: exception_ptr _M_ptr; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: nested_exception() noexcept : _M_ptr(current_exception()) { } 234s 1949: 234s 1949: nested_exception(const nested_exception&) noexcept = default; 234s 1949: 234s 1949: nested_exception& operator=(const nested_exception&) noexcept = default; 234s 1949: 234s 1949: virtual ~nested_exception() noexcept; 234s 1949: 234s 1949: 234s 1949: [[noreturn]] 234s 1949: void 234s 1949: rethrow_nested() const 234s 1949: { 234s 1949: if (_M_ptr) 234s 1949: rethrow_exception(_M_ptr); 234s 1949: std::terminate(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: exception_ptr 234s 1949: nested_ptr() const noexcept 234s 1949: { return _M_ptr; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Nested_exception : public _Except, public nested_exception 234s 1949: { 234s 1949: explicit _Nested_exception(const _Except& __ex) 234s 1949: : _Except(__ex) 234s 1949: { } 234s 1949: 234s 1949: explicit _Nested_exception(_Except&& __ex) 234s 1949: : _Except(static_cast<_Except&&>(__ex)) 234s 1949: { } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[noreturn]] 234s 1949: inline void 234s 1949: __throw_with_nested_impl(_Tp&& __t, true_type) 234s 1949: { 234s 1949: throw _Nested_exception<__remove_cvref_t<_Tp>>{std::forward<_Tp>(__t)}; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[noreturn]] 234s 1949: inline void 234s 1949: __throw_with_nested_impl(_Tp&& __t, false_type) 234s 1949: { throw std::forward<_Tp>(__t); } 234s 1949: # 145 "/usr/include/c++/15/bits/nested_exception.h" 3 4 234s 1949: template 234s 1949: [[noreturn]] 234s 1949: inline void 234s 1949: throw_with_nested(_Tp&& __t) 234s 1949: { 234s 1949: using _Up = typename decay<_Tp>::type; 234s 1949: using _CopyConstructible 234s 1949: = __and_, is_move_constructible<_Up>>; 234s 1949: static_assert(_CopyConstructible::value, 234s 1949: "throw_with_nested argument must be CopyConstructible"); 234s 1949: # 163 "/usr/include/c++/15/bits/nested_exception.h" 3 4 234s 1949: using __nest = __and_, __bool_constant, 234s 1949: __not_>>; 234s 1949: std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{}); 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: __rethrow_if_nested_impl(const _Ex* __ptr, true_type) 234s 1949: { 234s 1949: if (auto __ne_ptr = dynamic_cast(__ptr)) 234s 1949: __ne_ptr->rethrow_nested(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline void 234s 1949: __rethrow_if_nested_impl(const void*, false_type) 234s 1949: { } 234s 1949: # 203 "/usr/include/c++/15/bits/nested_exception.h" 3 4 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline void 234s 1949: rethrow_if_nested(const _Ex& __ex) 234s 1949: { 234s 1949: const _Ex* __ptr = __builtin_addressof(__ex); 234s 1949: 234s 1949: 234s 1949: using __cast = __and_, 234s 1949: __or_<__not_>, 234s 1949: is_convertible<_Ex*, nested_exception*>>>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: std::__rethrow_if_nested_impl(__ptr, __cast{}); 234s 1949: # 235 "/usr/include/c++/15/bits/nested_exception.h" 3 4 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: # 170 "/usr/include/c++/15/exception" 2 3 4 234s 1949: # 44 "/usr/include/c++/15/ios" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/char_traits.h" 1 3 4 234s 1949: # 66 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 70 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wstringop-overflow" 234s 1949: #pragma GCC diagnostic ignored "-Wstringop-overread" 234s 1949: #pragma GCC diagnostic ignored "-Warray-bounds" 234s 1949: # 85 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: template 234s 1949: struct _Char_types 234s 1949: { 234s 1949: typedef unsigned long int_type; 234s 1949: 234s 1949: typedef std::streampos pos_type; 234s 1949: typedef std::streamoff off_type; 234s 1949: typedef std::mbstate_t state_type; 234s 1949: 234s 1949: }; 234s 1949: # 112 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: template 234s 1949: struct char_traits 234s 1949: { 234s 1949: typedef _CharT char_type; 234s 1949: typedef typename _Char_types<_CharT>::int_type int_type; 234s 1949: 234s 1949: typedef typename _Char_types<_CharT>::pos_type pos_type; 234s 1949: typedef typename _Char_types<_CharT>::off_type off_type; 234s 1949: typedef typename _Char_types<_CharT>::state_type state_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static constexpr void 234s 1949: assign(char_type& __c1, const char_type& __c2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __c1 = __c2; 234s 1949: } 234s 1949: 234s 1949: static constexpr bool 234s 1949: eq(const char_type& __c1, const char_type& __c2) 234s 1949: { return __c1 == __c2; } 234s 1949: 234s 1949: static constexpr bool 234s 1949: lt(const char_type& __c1, const char_type& __c2) 234s 1949: { return __c1 < __c2; } 234s 1949: 234s 1949: static constexpr int 234s 1949: compare(const char_type* __s1, const char_type* __s2, std::size_t __n); 234s 1949: 234s 1949: static constexpr std::size_t 234s 1949: length(const char_type* __s); 234s 1949: 234s 1949: static constexpr const char_type* 234s 1949: find(const char_type* __s, std::size_t __n, const char_type& __a); 234s 1949: 234s 1949: static char_type* 234s 1949: move(char_type* __s1, const char_type* __s2, std::size_t __n); 234s 1949: 234s 1949: static char_type* 234s 1949: copy(char_type* __s1, const char_type* __s2, std::size_t __n); 234s 1949: 234s 1949: static char_type* 234s 1949: assign(char_type* __s, std::size_t __n, char_type __a); 234s 1949: 234s 1949: static constexpr char_type 234s 1949: to_char_type(const int_type& __c) 234s 1949: { return static_cast(__c); } 234s 1949: 234s 1949: static constexpr int_type 234s 1949: to_int_type(const char_type& __c) 234s 1949: { return static_cast(__c); } 234s 1949: 234s 1949: static constexpr bool 234s 1949: eq_int_type(const int_type& __c1, const int_type& __c2) 234s 1949: { return __c1 == __c2; } 234s 1949: 234s 1949: 234s 1949: static constexpr int_type 234s 1949: eof() 234s 1949: { return static_cast(-1); } 234s 1949: 234s 1949: static constexpr int_type 234s 1949: not_eof(const int_type& __c) 234s 1949: { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: constexpr int 234s 1949: char_traits<_CharT>:: 234s 1949: compare(const char_type* __s1, const char_type* __s2, std::size_t __n) 234s 1949: { 234s 1949: for (std::size_t __i = 0; __i < __n; ++__i) 234s 1949: if (lt(__s1[__i], __s2[__i])) 234s 1949: return -1; 234s 1949: else if (lt(__s2[__i], __s1[__i])) 234s 1949: return 1; 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr std::size_t 234s 1949: char_traits<_CharT>:: 234s 1949: length(const char_type* __p) 234s 1949: { 234s 1949: std::size_t __i = 0; 234s 1949: while (!eq(__p[__i], char_type())) 234s 1949: ++__i; 234s 1949: return __i; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr const typename char_traits<_CharT>::char_type* 234s 1949: char_traits<_CharT>:: 234s 1949: find(const char_type* __s, std::size_t __n, const char_type& __a) 234s 1949: { 234s 1949: for (std::size_t __i = 0; __i < __n; ++__i) 234s 1949: if (eq(__s[__i], __a)) 234s 1949: return __s + __i; 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename char_traits<_CharT>::char_type* 234s 1949: char_traits<_CharT>:: 234s 1949: move(char_type* __s1, const char_type* __s2, std::size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s1; 234s 1949: # 248 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: __builtin_memmove(__s1, __s2, __n * sizeof(char_type)); 234s 1949: return __s1; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename char_traits<_CharT>::char_type* 234s 1949: char_traits<_CharT>:: 234s 1949: copy(char_type* __s1, const char_type* __s2, std::size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s1; 234s 1949: # 268 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: __builtin_memcpy(__s1, __s2, __n * sizeof(char_type)); 234s 1949: return __s1; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename char_traits<_CharT>::char_type* 234s 1949: char_traits<_CharT>:: 234s 1949: assign(char_type* __s, std::size_t __n, char_type __a) 234s 1949: { 234s 1949: # 287 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: if (sizeof(_CharT) == 1 && __is_trivial(_CharT)) 234s 1949: { 234s 1949: if (__n) 234s 1949: { 234s 1949: unsigned char __c; 234s 1949: __builtin_memcpy(&__c, __builtin_addressof(__a), 1); 234s 1949: __builtin_memset(__s, __c, __n); 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: for (std::size_t __i = 0; __i < __n; ++__i) 234s 1949: __s[__i] = __a; 234s 1949: } 234s 1949: return __s; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 324 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: template 234s 1949: struct char_traits : public __gnu_cxx::char_traits<_CharT> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct char_traits 234s 1949: { 234s 1949: typedef char char_type; 234s 1949: typedef int int_type; 234s 1949: 234s 1949: typedef streampos pos_type; 234s 1949: typedef streamoff off_type; 234s 1949: typedef mbstate_t state_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: assign(char_type& __c1, const char_type& __c2) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __c1 = __c2; 234s 1949: } 234s 1949: 234s 1949: static constexpr bool 234s 1949: eq(const char_type& __c1, const char_type& __c2) noexcept 234s 1949: { return __c1 == __c2; } 234s 1949: 234s 1949: static constexpr bool 234s 1949: lt(const char_type& __c1, const char_type& __c2) noexcept 234s 1949: { 234s 1949: 234s 1949: return (static_cast(__c1) 234s 1949: < static_cast(__c2)); 234s 1949: } 234s 1949: 234s 1949: static int 234s 1949: compare(const char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return 0; 234s 1949: # 383 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: return __builtin_memcmp(__s1, __s2, __n); 234s 1949: } 234s 1949: 234s 1949: static size_t 234s 1949: length(const char_type* __s) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return __builtin_strlen(__s); 234s 1949: } 234s 1949: 234s 1949: static const char_type* 234s 1949: find(const char_type* __s, size_t __n, const char_type& __a) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return 0; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return static_cast(__builtin_memchr(__s, __a, __n)); 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: move(char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s1; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return static_cast(__builtin_memmove(__s1, __s2, __n)); 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: copy(char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s1; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return static_cast(__builtin_memcpy(__s1, __s2, __n)); 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: assign(char_type* __s, size_t __n, char_type __a) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return static_cast(__builtin_memset(__s, __a, __n)); 234s 1949: } 234s 1949: 234s 1949: static constexpr char_type 234s 1949: to_char_type(const int_type& __c) noexcept 234s 1949: { return static_cast(__c); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: static constexpr int_type 234s 1949: to_int_type(const char_type& __c) noexcept 234s 1949: { return static_cast(static_cast(__c)); } 234s 1949: 234s 1949: static constexpr bool 234s 1949: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 234s 1949: { return __c1 == __c2; } 234s 1949: 234s 1949: 234s 1949: static constexpr int_type 234s 1949: eof() noexcept 234s 1949: { return static_cast(-1); } 234s 1949: 234s 1949: static constexpr int_type 234s 1949: not_eof(const int_type& __c) noexcept 234s 1949: { return (__c == eof()) ? 0 : __c; } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct char_traits 234s 1949: { 234s 1949: typedef wchar_t char_type; 234s 1949: typedef wint_t int_type; 234s 1949: 234s 1949: typedef streamoff off_type; 234s 1949: typedef wstreampos pos_type; 234s 1949: typedef mbstate_t state_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: assign(char_type& __c1, const char_type& __c2) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __c1 = __c2; 234s 1949: } 234s 1949: 234s 1949: static constexpr bool 234s 1949: eq(const char_type& __c1, const char_type& __c2) noexcept 234s 1949: { return __c1 == __c2; } 234s 1949: 234s 1949: static constexpr bool 234s 1949: lt(const char_type& __c1, const char_type& __c2) noexcept 234s 1949: { return __c1 < __c2; } 234s 1949: 234s 1949: static int 234s 1949: compare(const char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return 0; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return wmemcmp(__s1, __s2, __n); 234s 1949: } 234s 1949: 234s 1949: static size_t 234s 1949: length(const char_type* __s) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return wcslen(__s); 234s 1949: } 234s 1949: 234s 1949: static const char_type* 234s 1949: find(const char_type* __s, size_t __n, const char_type& __a) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return 0; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return wmemchr(__s, __a, __n); 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: move(char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s1; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return wmemmove(__s1, __s2, __n); 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: copy(char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s1; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return wmemcpy(__s1, __s2, __n); 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: assign(char_type* __s, size_t __n, char_type __a) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return wmemset(__s, __a, __n); 234s 1949: } 234s 1949: 234s 1949: static constexpr char_type 234s 1949: to_char_type(const int_type& __c) noexcept 234s 1949: { return char_type(__c); } 234s 1949: 234s 1949: static constexpr int_type 234s 1949: to_int_type(const char_type& __c) noexcept 234s 1949: { return int_type(__c); } 234s 1949: 234s 1949: static constexpr bool 234s 1949: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 234s 1949: { return __c1 == __c2; } 234s 1949: 234s 1949: 234s 1949: static constexpr int_type 234s 1949: eof() noexcept 234s 1949: { return static_cast((0xffffffffu)); } 234s 1949: 234s 1949: static constexpr int_type 234s 1949: not_eof(const int_type& __c) noexcept 234s 1949: { return eq_int_type(__c, eof()) ? 0 : __c; } 234s 1949: 234s 1949: }; 234s 1949: # 731 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct char_traits 234s 1949: { 234s 1949: typedef char16_t char_type; 234s 1949: 234s 1949: typedef short unsigned int int_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef streamoff off_type; 234s 1949: typedef u16streampos pos_type; 234s 1949: typedef mbstate_t state_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: assign(char_type& __c1, const char_type& __c2) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __c1 = __c2; 234s 1949: } 234s 1949: 234s 1949: static constexpr bool 234s 1949: eq(const char_type& __c1, const char_type& __c2) noexcept 234s 1949: { return __c1 == __c2; } 234s 1949: 234s 1949: static constexpr bool 234s 1949: lt(const char_type& __c1, const char_type& __c2) noexcept 234s 1949: { return __c1 < __c2; } 234s 1949: 234s 1949: static int 234s 1949: compare(const char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: for (size_t __i = 0; __i < __n; ++__i) 234s 1949: if (lt(__s1[__i], __s2[__i])) 234s 1949: return -1; 234s 1949: else if (lt(__s2[__i], __s1[__i])) 234s 1949: return 1; 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: static size_t 234s 1949: length(const char_type* __s) 234s 1949: { 234s 1949: size_t __i = 0; 234s 1949: while (!eq(__s[__i], char_type())) 234s 1949: ++__i; 234s 1949: return __i; 234s 1949: } 234s 1949: 234s 1949: static const char_type* 234s 1949: find(const char_type* __s, size_t __n, const char_type& __a) 234s 1949: { 234s 1949: for (size_t __i = 0; __i < __n; ++__i) 234s 1949: if (eq(__s[__i], __a)) 234s 1949: return __s + __i; 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: move(char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s1; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return (static_cast 234s 1949: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: copy(char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s1; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return (static_cast 234s 1949: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: assign(char_type* __s, size_t __n, char_type __a) 234s 1949: { 234s 1949: for (size_t __i = 0; __i < __n; ++__i) 234s 1949: assign(__s[__i], __a); 234s 1949: return __s; 234s 1949: } 234s 1949: 234s 1949: static constexpr char_type 234s 1949: to_char_type(const int_type& __c) noexcept 234s 1949: { return char_type(__c); } 234s 1949: 234s 1949: static constexpr bool 234s 1949: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 234s 1949: { return __c1 == __c2; } 234s 1949: 234s 1949: 234s 1949: static constexpr int_type 234s 1949: to_int_type(const char_type& __c) noexcept 234s 1949: { return __c == eof() ? int_type(0xfffd) : int_type(__c); } 234s 1949: 234s 1949: static constexpr int_type 234s 1949: eof() noexcept 234s 1949: { return static_cast(-1); } 234s 1949: 234s 1949: static constexpr int_type 234s 1949: not_eof(const int_type& __c) noexcept 234s 1949: { return eq_int_type(__c, eof()) ? 0 : __c; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct char_traits 234s 1949: { 234s 1949: typedef char32_t char_type; 234s 1949: 234s 1949: typedef unsigned int int_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef streamoff off_type; 234s 1949: typedef u32streampos pos_type; 234s 1949: typedef mbstate_t state_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: assign(char_type& __c1, const char_type& __c2) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __c1 = __c2; 234s 1949: } 234s 1949: 234s 1949: static constexpr bool 234s 1949: eq(const char_type& __c1, const char_type& __c2) noexcept 234s 1949: { return __c1 == __c2; } 234s 1949: 234s 1949: static constexpr bool 234s 1949: lt(const char_type& __c1, const char_type& __c2) noexcept 234s 1949: { return __c1 < __c2; } 234s 1949: 234s 1949: static int 234s 1949: compare(const char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: for (size_t __i = 0; __i < __n; ++__i) 234s 1949: if (lt(__s1[__i], __s2[__i])) 234s 1949: return -1; 234s 1949: else if (lt(__s2[__i], __s1[__i])) 234s 1949: return 1; 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: static size_t 234s 1949: length(const char_type* __s) 234s 1949: { 234s 1949: size_t __i = 0; 234s 1949: while (!eq(__s[__i], char_type())) 234s 1949: ++__i; 234s 1949: return __i; 234s 1949: } 234s 1949: 234s 1949: static const char_type* 234s 1949: find(const char_type* __s, size_t __n, const char_type& __a) 234s 1949: { 234s 1949: for (size_t __i = 0; __i < __n; ++__i) 234s 1949: if (eq(__s[__i], __a)) 234s 1949: return __s + __i; 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: move(char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s1; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return (static_cast 234s 1949: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: copy(char_type* __s1, const char_type* __s2, size_t __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __s1; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return (static_cast 234s 1949: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 234s 1949: } 234s 1949: 234s 1949: static char_type* 234s 1949: assign(char_type* __s, size_t __n, char_type __a) 234s 1949: { 234s 1949: for (size_t __i = 0; __i < __n; ++__i) 234s 1949: assign(__s[__i], __a); 234s 1949: return __s; 234s 1949: } 234s 1949: 234s 1949: static constexpr char_type 234s 1949: to_char_type(const int_type& __c) noexcept 234s 1949: { return char_type(__c); } 234s 1949: 234s 1949: static constexpr int_type 234s 1949: to_int_type(const char_type& __c) noexcept 234s 1949: { return int_type(__c); } 234s 1949: 234s 1949: static constexpr bool 234s 1949: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 234s 1949: { return __c1 == __c2; } 234s 1949: 234s 1949: 234s 1949: static constexpr int_type 234s 1949: eof() noexcept 234s 1949: { return static_cast(-1); } 234s 1949: 234s 1949: static constexpr int_type 234s 1949: not_eof(const int_type& __c) noexcept 234s 1949: { return eq_int_type(__c, eof()) ? 0 : __c; } 234s 1949: 234s 1949: }; 234s 1949: # 1009 "/usr/include/c++/15/bits/char_traits.h" 3 4 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 45 "/usr/include/c++/15/ios" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/localefwd.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/localefwd.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 1 3 4 234s 1949: # 39 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 3 4 234s 1949: 234s 1949: # 40 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 3 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/clocale" 1 3 234s 1949: # 47 "/usr/include/c++/15/clocale" 3 234s 1949: # 1 "/usr/include/locale.h" 1 3 4 234s 1949: # 28 "/usr/include/locale.h" 3 4 234s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 234s 1949: # 29 "/usr/include/locale.h" 2 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/locale.h" 1 3 4 234s 1949: # 30 "/usr/include/locale.h" 2 3 4 234s 1949: 234s 1949: extern "C" { 234s 1949: # 51 "/usr/include/locale.h" 3 4 234s 1949: struct lconv 234s 1949: { 234s 1949: 234s 1949: 234s 1949: char *decimal_point; 234s 1949: char *thousands_sep; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: char *grouping; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: char *int_curr_symbol; 234s 1949: char *currency_symbol; 234s 1949: char *mon_decimal_point; 234s 1949: char *mon_thousands_sep; 234s 1949: char *mon_grouping; 234s 1949: char *positive_sign; 234s 1949: char *negative_sign; 234s 1949: char int_frac_digits; 234s 1949: char frac_digits; 234s 1949: 234s 1949: char p_cs_precedes; 234s 1949: 234s 1949: char p_sep_by_space; 234s 1949: 234s 1949: char n_cs_precedes; 234s 1949: 234s 1949: char n_sep_by_space; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: char p_sign_posn; 234s 1949: char n_sign_posn; 234s 1949: 234s 1949: 234s 1949: char int_p_cs_precedes; 234s 1949: 234s 1949: char int_p_sep_by_space; 234s 1949: 234s 1949: char int_n_cs_precedes; 234s 1949: 234s 1949: char int_n_sep_by_space; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: char int_p_sign_posn; 234s 1949: char int_n_sign_posn; 234s 1949: # 118 "/usr/include/locale.h" 3 4 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *setlocale (int __category, const char *__locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern struct lconv *localeconv (void) noexcept (true); 234s 1949: # 141 "/usr/include/locale.h" 3 4 234s 1949: extern locale_t newlocale (int __category_mask, const char *__locale, 234s 1949: locale_t __base) noexcept (true); 234s 1949: # 176 "/usr/include/locale.h" 3 4 234s 1949: extern locale_t duplocale (locale_t __dataset) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern void freelocale (locale_t __dataset) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern locale_t uselocale (locale_t __dataset) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 48 "/usr/include/c++/15/clocale" 2 3 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std 234s 1949: { 234s 1949: using ::lconv; 234s 1949: using ::setlocale; 234s 1949: using ::localeconv; 234s 1949: } 234s 1949: # 42 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 2 3 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: extern "C" __typeof(uselocale) __uselocale; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: typedef __locale_t __c_locale; 234s 1949: # 73 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 3 234s 1949: inline int 234s 1949: __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), 234s 1949: char* __out, 234s 1949: const int __size __attribute__ ((__unused__)), 234s 1949: const char* __fmt, ...) 234s 1949: { 234s 1949: 234s 1949: __c_locale __old = __gnu_cxx::__uselocale(__cloc); 234s 1949: # 93 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++locale.h" 3 234s 1949: __builtin_va_list __args; 234s 1949: __builtin_va_start(__args, __fmt); 234s 1949: 234s 1949: 234s 1949: const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __builtin_va_end(__args); 234s 1949: 234s 1949: 234s 1949: __gnu_cxx::__uselocale(__old); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 43 "/usr/include/c++/15/bits/localefwd.h" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/cctype" 1 3 4 234s 1949: # 47 "/usr/include/c++/15/cctype" 3 4 234s 1949: # 1 "/usr/include/ctype.h" 1 3 4 234s 1949: # 28 "/usr/include/ctype.h" 3 4 234s 1949: extern "C" { 234s 1949: # 46 "/usr/include/ctype.h" 3 4 234s 1949: enum 234s 1949: { 234s 1949: _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), 234s 1949: _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), 234s 1949: _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), 234s 1949: _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), 234s 1949: _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), 234s 1949: _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), 234s 1949: _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), 234s 1949: _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), 234s 1949: _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), 234s 1949: _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), 234s 1949: _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), 234s 1949: _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) 234s 1949: }; 234s 1949: # 79 "/usr/include/ctype.h" 3 4 234s 1949: extern const unsigned short int **__ctype_b_loc (void) 234s 1949: noexcept (true) __attribute__ ((__const__)); 234s 1949: extern const __int32_t **__ctype_tolower_loc (void) 234s 1949: noexcept (true) __attribute__ ((__const__)); 234s 1949: extern const __int32_t **__ctype_toupper_loc (void) 234s 1949: noexcept (true) __attribute__ ((__const__)); 234s 1949: # 108 "/usr/include/ctype.h" 3 4 234s 1949: extern int isalnum (int) noexcept (true); 234s 1949: extern int isalpha (int) noexcept (true); 234s 1949: extern int iscntrl (int) noexcept (true); 234s 1949: extern int isdigit (int) noexcept (true); 234s 1949: extern int islower (int) noexcept (true); 234s 1949: extern int isgraph (int) noexcept (true); 234s 1949: extern int isprint (int) noexcept (true); 234s 1949: extern int ispunct (int) noexcept (true); 234s 1949: extern int isspace (int) noexcept (true); 234s 1949: extern int isupper (int) noexcept (true); 234s 1949: extern int isxdigit (int) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int tolower (int __c) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int toupper (int __c) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int isblank (int) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int isctype (int __c, int __mask) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int isascii (int __c) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int toascii (int __c) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int _toupper (int) noexcept (true); 234s 1949: extern int _tolower (int) noexcept (true); 234s 1949: # 251 "/usr/include/ctype.h" 3 4 234s 1949: extern int isalnum_l (int, locale_t) noexcept (true); 234s 1949: extern int isalpha_l (int, locale_t) noexcept (true); 234s 1949: extern int iscntrl_l (int, locale_t) noexcept (true); 234s 1949: extern int isdigit_l (int, locale_t) noexcept (true); 234s 1949: extern int islower_l (int, locale_t) noexcept (true); 234s 1949: extern int isgraph_l (int, locale_t) noexcept (true); 234s 1949: extern int isprint_l (int, locale_t) noexcept (true); 234s 1949: extern int ispunct_l (int, locale_t) noexcept (true); 234s 1949: extern int isspace_l (int, locale_t) noexcept (true); 234s 1949: extern int isupper_l (int, locale_t) noexcept (true); 234s 1949: extern int isxdigit_l (int, locale_t) noexcept (true); 234s 1949: 234s 1949: extern int isblank_l (int, locale_t) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int __tolower_l (int __c, locale_t __l) noexcept (true); 234s 1949: extern int tolower_l (int __c, locale_t __l) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int __toupper_l (int __c, locale_t __l) noexcept (true); 234s 1949: extern int toupper_l (int __c, locale_t __l) noexcept (true); 234s 1949: # 327 "/usr/include/ctype.h" 3 4 234s 1949: } 234s 1949: # 48 "/usr/include/c++/15/cctype" 2 3 4 234s 1949: # 64 "/usr/include/c++/15/cctype" 3 4 234s 1949: namespace std 234s 1949: { 234s 1949: using ::isalnum; 234s 1949: using ::isalpha; 234s 1949: using ::iscntrl; 234s 1949: using ::isdigit; 234s 1949: using ::isgraph; 234s 1949: using ::islower; 234s 1949: using ::isprint; 234s 1949: using ::ispunct; 234s 1949: using ::isspace; 234s 1949: using ::isupper; 234s 1949: using ::isxdigit; 234s 1949: using ::tolower; 234s 1949: using ::toupper; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std 234s 1949: { 234s 1949: using ::isblank; 234s 1949: } 234s 1949: # 45 "/usr/include/c++/15/bits/localefwd.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 57 "/usr/include/c++/15/bits/localefwd.h" 3 4 234s 1949: class locale; 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: has_facet(const locale&) throw(); 234s 1949: 234s 1949: template 234s 1949: const _Facet& 234s 1949: use_facet(const locale&); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: isspace(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: isprint(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: iscntrl(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: isupper(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: islower(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: isalpha(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: isdigit(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: ispunct(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: isxdigit(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: isalnum(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: isgraph(_CharT, const locale&); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: isblank(_CharT, const locale&); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _CharT 234s 1949: toupper(_CharT, const locale&); 234s 1949: 234s 1949: template 234s 1949: _CharT 234s 1949: tolower(_CharT, const locale&); 234s 1949: 234s 1949: 234s 1949: struct ctype_base; 234s 1949: template 234s 1949: class ctype; 234s 1949: template<> class ctype; 234s 1949: 234s 1949: template<> class ctype; 234s 1949: 234s 1949: template 234s 1949: class ctype_byname; 234s 1949: 234s 1949: 234s 1949: class codecvt_base; 234s 1949: template 234s 1949: class codecvt; 234s 1949: template<> class codecvt; 234s 1949: 234s 1949: template<> class codecvt; 234s 1949: 234s 1949: 234s 1949: template<> class codecvt; 234s 1949: template<> class codecvt; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class codecvt_byname; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template > 234s 1949: class num_get; 234s 1949: template > 234s 1949: class num_put; 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: template class numpunct; 234s 1949: template class numpunct_byname; 234s 1949: } 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: 234s 1949: template 234s 1949: class collate; 234s 1949: template 234s 1949: class collate_byname; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: class time_base; 234s 1949: namespace __cxx11 { 234s 1949: template > 234s 1949: class time_get; 234s 1949: template > 234s 1949: class time_get_byname; 234s 1949: } 234s 1949: template > 234s 1949: class time_put; 234s 1949: template > 234s 1949: class time_put_byname; 234s 1949: 234s 1949: 234s 1949: class money_base; 234s 1949: namespace __cxx11 { 234s 1949: template > 234s 1949: class money_get; 234s 1949: template > 234s 1949: class money_put; 234s 1949: } 234s 1949: namespace __cxx11 { 234s 1949: template 234s 1949: class moneypunct; 234s 1949: template 234s 1949: class moneypunct_byname; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: struct messages_base; 234s 1949: namespace __cxx11 { 234s 1949: template 234s 1949: class messages; 234s 1949: template 234s 1949: class messages_byname; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 46 "/usr/include/c++/15/ios" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/ios_base.h" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/ext/atomicity.h" 1 3 4 234s 1949: # 37 "/usr/include/c++/15/ext/atomicity.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr.h" 1 3 4 234s 1949: # 30 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr.h" 3 4 234s 1949: #pragma GCC visibility push(default) 234s 1949: # 157 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 1 3 4 234s 1949: # 35 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 234s 1949: # 1 "/usr/include/pthread.h" 1 3 4 234s 1949: # 22 "/usr/include/pthread.h" 3 4 234s 1949: # 1 "/usr/include/sched.h" 1 3 4 234s 1949: # 29 "/usr/include/sched.h" 3 4 234s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stddef.h" 1 3 4 234s 1949: # 30 "/usr/include/sched.h" 2 3 4 234s 1949: # 43 "/usr/include/sched.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 1 3 4 234s 1949: # 63 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 3 4 234s 1949: # 1 "/usr/include/linux/sched/types.h" 1 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/linux/types.h" 1 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/asm/types.h" 1 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/asm-generic/int-ll64.h" 1 3 4 234s 1949: # 12 "/usr/include/asm-generic/int-ll64.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/asm/bitsperlong.h" 1 3 4 234s 1949: # 1 "/usr/include/asm-generic/bitsperlong.h" 1 3 4 234s 1949: # 2 "/usr/include/arm-linux-gnueabihf/asm/bitsperlong.h" 2 3 4 234s 1949: # 13 "/usr/include/asm-generic/int-ll64.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef __signed__ char __s8; 234s 1949: typedef unsigned char __u8; 234s 1949: 234s 1949: typedef __signed__ short __s16; 234s 1949: typedef unsigned short __u16; 234s 1949: 234s 1949: typedef __signed__ int __s32; 234s 1949: typedef unsigned int __u32; 234s 1949: 234s 1949: 234s 1949: __extension__ typedef __signed__ long long __s64; 234s 1949: __extension__ typedef unsigned long long __u64; 234s 1949: # 6 "/usr/include/arm-linux-gnueabihf/asm/types.h" 2 3 4 234s 1949: # 6 "/usr/include/linux/types.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/linux/posix_types.h" 1 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/linux/stddef.h" 1 3 4 234s 1949: # 6 "/usr/include/linux/posix_types.h" 2 3 4 234s 1949: # 25 "/usr/include/linux/posix_types.h" 3 4 234s 1949: typedef struct { 234s 1949: unsigned long fds_bits[1024 / (8 * sizeof(long))]; 234s 1949: } __kernel_fd_set; 234s 1949: 234s 1949: 234s 1949: typedef void (*__kernel_sighandler_t)(int); 234s 1949: 234s 1949: 234s 1949: typedef int __kernel_key_t; 234s 1949: typedef int __kernel_mqd_t; 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/asm/posix_types.h" 1 3 4 234s 1949: # 23 "/usr/include/arm-linux-gnueabihf/asm/posix_types.h" 3 4 234s 1949: typedef unsigned short __kernel_mode_t; 234s 1949: 234s 1949: 234s 1949: typedef unsigned short __kernel_ipc_pid_t; 234s 1949: 234s 1949: 234s 1949: typedef unsigned short __kernel_uid_t; 234s 1949: typedef unsigned short __kernel_gid_t; 234s 1949: 234s 1949: 234s 1949: typedef unsigned short __kernel_old_dev_t; 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/asm-generic/posix_types.h" 1 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/asm/bitsperlong.h" 1 3 4 234s 1949: # 6 "/usr/include/asm-generic/posix_types.h" 2 3 4 234s 1949: # 15 "/usr/include/asm-generic/posix_types.h" 3 4 234s 1949: typedef long __kernel_long_t; 234s 1949: typedef unsigned long __kernel_ulong_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef __kernel_ulong_t __kernel_ino_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef int __kernel_pid_t; 234s 1949: # 41 "/usr/include/asm-generic/posix_types.h" 3 4 234s 1949: typedef __kernel_long_t __kernel_suseconds_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef int __kernel_daddr_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef unsigned int __kernel_uid32_t; 234s 1949: typedef unsigned int __kernel_gid32_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef __kernel_uid_t __kernel_old_uid_t; 234s 1949: typedef __kernel_gid_t __kernel_old_gid_t; 234s 1949: # 68 "/usr/include/asm-generic/posix_types.h" 3 4 234s 1949: typedef unsigned int __kernel_size_t; 234s 1949: typedef int __kernel_ssize_t; 234s 1949: typedef int __kernel_ptrdiff_t; 234s 1949: # 79 "/usr/include/asm-generic/posix_types.h" 3 4 234s 1949: typedef struct { 234s 1949: int val[2]; 234s 1949: } __kernel_fsid_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef __kernel_long_t __kernel_off_t; 234s 1949: typedef long long __kernel_loff_t; 234s 1949: typedef unsigned long long __kernel_uoff_t; 234s 1949: typedef __kernel_long_t __kernel_old_time_t; 234s 1949: typedef __kernel_long_t __kernel_time_t; 234s 1949: typedef long long __kernel_time64_t; 234s 1949: typedef __kernel_long_t __kernel_clock_t; 234s 1949: typedef int __kernel_timer_t; 234s 1949: typedef int __kernel_clockid_t; 234s 1949: typedef char * __kernel_caddr_t; 234s 1949: typedef unsigned short __kernel_uid16_t; 234s 1949: typedef unsigned short __kernel_gid16_t; 234s 1949: # 37 "/usr/include/arm-linux-gnueabihf/asm/posix_types.h" 2 3 4 234s 1949: # 37 "/usr/include/linux/posix_types.h" 2 3 4 234s 1949: # 10 "/usr/include/linux/types.h" 2 3 4 234s 1949: # 31 "/usr/include/linux/types.h" 3 4 234s 1949: typedef __u16 __le16; 234s 1949: typedef __u16 __be16; 234s 1949: typedef __u32 __le32; 234s 1949: typedef __u32 __be32; 234s 1949: typedef __u64 __le64; 234s 1949: typedef __u64 __be64; 234s 1949: 234s 1949: typedef __u16 __sum16; 234s 1949: typedef __u32 __wsum; 234s 1949: # 55 "/usr/include/linux/types.h" 3 4 234s 1949: typedef unsigned __poll_t; 234s 1949: # 6 "/usr/include/linux/sched/types.h" 2 3 4 234s 1949: # 98 "/usr/include/linux/sched/types.h" 3 4 234s 1949: struct sched_attr { 234s 1949: __u32 size; 234s 1949: 234s 1949: __u32 sched_policy; 234s 1949: __u64 sched_flags; 234s 1949: 234s 1949: 234s 1949: __s32 sched_nice; 234s 1949: 234s 1949: 234s 1949: __u32 sched_priority; 234s 1949: 234s 1949: 234s 1949: __u64 sched_runtime; 234s 1949: __u64 sched_deadline; 234s 1949: __u64 sched_period; 234s 1949: 234s 1949: 234s 1949: __u32 sched_util_min; 234s 1949: __u32 sched_util_max; 234s 1949: 234s 1949: }; 234s 1949: # 64 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 2 3 4 234s 1949: # 126 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sched_param.h" 1 3 4 234s 1949: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sched_param.h" 3 4 234s 1949: struct sched_param 234s 1949: { 234s 1949: int sched_priority; 234s 1949: }; 234s 1949: # 127 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 2 3 4 234s 1949: 234s 1949: extern "C" { 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int clone (int (*__fn) (void *__arg), void *__child_stack, 234s 1949: int __flags, void *__arg, ...) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int unshare (int __flags) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int sched_getcpu (void) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int getcpu (unsigned int *, unsigned int *) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int setns (int __fd, int __nstype) noexcept (true); 234s 1949: 234s 1949: 234s 1949: int sched_setattr (pid_t tid, struct sched_attr *attr, unsigned int flags) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: int sched_getattr (pid_t tid, struct sched_attr *attr, unsigned int size, 234s 1949: unsigned int flags) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 44 "/usr/include/sched.h" 2 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 1 3 4 234s 1949: # 32 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4 234s 1949: typedef unsigned long int __cpu_mask; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef struct 234s 1949: { 234s 1949: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; 234s 1949: } cpu_set_t; 234s 1949: # 115 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4 234s 1949: extern "C" { 234s 1949: 234s 1949: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) 234s 1949: noexcept (true); 234s 1949: extern cpu_set_t *__sched_cpualloc (size_t __count) noexcept (true) __attribute__ ((__warn_unused_result__)); 234s 1949: extern void __sched_cpufree (cpu_set_t *__set) noexcept (true); 234s 1949: 234s 1949: } 234s 1949: # 45 "/usr/include/sched.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern "C" { 234s 1949: 234s 1949: 234s 1949: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int sched_setscheduler (__pid_t __pid, int __policy, 234s 1949: const struct sched_param *__param) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int sched_getscheduler (__pid_t __pid) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int sched_yield (void) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int sched_get_priority_max (int __algorithm) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int sched_get_priority_min (int __algorithm) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) noexcept (true) __asm__ ("" "__sched_rr_get_interval64") 234s 1949: 234s 1949: ; 234s 1949: # 130 "/usr/include/sched.h" 3 4 234s 1949: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, 234s 1949: const cpu_set_t *__cpuset) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, 234s 1949: cpu_set_t *__cpuset) noexcept (true); 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 23 "/usr/include/pthread.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 1 3 4 234s 1949: # 33 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 3 4 234s 1949: typedef int __jmp_buf[64] __attribute__((__aligned__ (8))); 234s 1949: # 28 "/usr/include/pthread.h" 2 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 234s 1949: # 29 "/usr/include/pthread.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct___jmp_buf_tag.h" 1 3 4 234s 1949: # 26 "/usr/include/arm-linux-gnueabihf/bits/types/struct___jmp_buf_tag.h" 3 4 234s 1949: struct __jmp_buf_tag 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __jmp_buf __jmpbuf; 234s 1949: int __mask_was_saved; 234s 1949: __sigset_t __saved_mask; 234s 1949: }; 234s 1949: # 32 "/usr/include/pthread.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum 234s 1949: { 234s 1949: PTHREAD_CREATE_JOINABLE, 234s 1949: 234s 1949: PTHREAD_CREATE_DETACHED 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum 234s 1949: { 234s 1949: PTHREAD_MUTEX_TIMED_NP, 234s 1949: PTHREAD_MUTEX_RECURSIVE_NP, 234s 1949: PTHREAD_MUTEX_ERRORCHECK_NP, 234s 1949: PTHREAD_MUTEX_ADAPTIVE_NP 234s 1949: 234s 1949: , 234s 1949: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, 234s 1949: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, 234s 1949: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, 234s 1949: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL 234s 1949: 234s 1949: 234s 1949: 234s 1949: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum 234s 1949: { 234s 1949: PTHREAD_MUTEX_STALLED, 234s 1949: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, 234s 1949: PTHREAD_MUTEX_ROBUST, 234s 1949: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum 234s 1949: { 234s 1949: PTHREAD_PRIO_NONE, 234s 1949: PTHREAD_PRIO_INHERIT, 234s 1949: PTHREAD_PRIO_PROTECT 234s 1949: }; 234s 1949: # 104 "/usr/include/pthread.h" 3 4 234s 1949: enum 234s 1949: { 234s 1949: PTHREAD_RWLOCK_PREFER_READER_NP, 234s 1949: PTHREAD_RWLOCK_PREFER_WRITER_NP, 234s 1949: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, 234s 1949: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP 234s 1949: }; 234s 1949: # 124 "/usr/include/pthread.h" 3 4 234s 1949: enum 234s 1949: { 234s 1949: PTHREAD_INHERIT_SCHED, 234s 1949: 234s 1949: PTHREAD_EXPLICIT_SCHED 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum 234s 1949: { 234s 1949: PTHREAD_SCOPE_SYSTEM, 234s 1949: 234s 1949: PTHREAD_SCOPE_PROCESS 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum 234s 1949: { 234s 1949: PTHREAD_PROCESS_PRIVATE, 234s 1949: 234s 1949: PTHREAD_PROCESS_SHARED 234s 1949: 234s 1949: }; 234s 1949: # 159 "/usr/include/pthread.h" 3 4 234s 1949: struct _pthread_cleanup_buffer 234s 1949: { 234s 1949: void (*__routine) (void *); 234s 1949: void *__arg; 234s 1949: int __canceltype; 234s 1949: struct _pthread_cleanup_buffer *__prev; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: enum 234s 1949: { 234s 1949: PTHREAD_CANCEL_ENABLE, 234s 1949: 234s 1949: PTHREAD_CANCEL_DISABLE 234s 1949: 234s 1949: }; 234s 1949: enum 234s 1949: { 234s 1949: PTHREAD_CANCEL_DEFERRED, 234s 1949: 234s 1949: PTHREAD_CANCEL_ASYNCHRONOUS 234s 1949: 234s 1949: }; 234s 1949: # 197 "/usr/include/pthread.h" 3 4 234s 1949: extern "C" { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_create (pthread_t *__restrict __newthread, 234s 1949: const pthread_attr_t *__restrict __attr, 234s 1949: void *(*__start_routine) (void *), 234s 1949: void *__restrict __arg) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_join (pthread_t __th, void **__thread_return); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) noexcept (true); 234s 1949: # 248 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, const struct timespec *__abstime) __asm__ ("" "__pthread_timedjoin_np64") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return, clockid_t __clockid, const struct timespec *__abstime) __asm__ ("" "__pthread_clockjoin_np64") 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: # 269 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_detach (pthread_t __th) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern pthread_t pthread_self (void) noexcept (true) __attribute__ ((__const__)); 234s 1949: 234s 1949: 234s 1949: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) 234s 1949: noexcept (true) __attribute__ ((__const__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_init (pthread_attr_t *__attr) noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_destroy (pthread_attr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, 234s 1949: int *__detachstate) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, 234s 1949: int __detachstate) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, 234s 1949: size_t *__guardsize) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, 234s 1949: size_t __guardsize) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, 234s 1949: struct sched_param *__restrict __param) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, 234s 1949: const struct sched_param *__restrict 234s 1949: __param) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict 234s 1949: __attr, int *__restrict __policy) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict 234s 1949: __attr, int *__restrict __inherit) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, 234s 1949: int __inherit) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, 234s 1949: int *__restrict __scope) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict 234s 1949: __attr, void **__restrict __stackaddr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, 234s 1949: void *__stackaddr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict 234s 1949: __attr, size_t *__restrict __stacksize) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, 234s 1949: size_t __stacksize) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, 234s 1949: void **__restrict __stackaddr, 234s 1949: size_t *__restrict __stacksize) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, 234s 1949: size_t __stacksize) noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, 234s 1949: size_t __cpusetsize, 234s 1949: const cpu_set_t *__cpuset) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, 234s 1949: size_t __cpusetsize, 234s 1949: cpu_set_t *__cpuset) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_getattr_default_np (pthread_attr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr, 234s 1949: const __sigset_t *sigmask); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr, 234s 1949: __sigset_t *sigmask); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, 234s 1949: const struct sched_param *__param) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_getschedparam (pthread_t __target_thread, 234s 1949: int *__restrict __policy, 234s 1949: struct sched_param *__restrict __param) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, 234s 1949: size_t __buflen) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_getconcurrency (void) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int pthread_setconcurrency (int __level) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_yield (void) noexcept (true); 234s 1949: 234s 1949: extern int pthread_yield (void) noexcept (true) __asm__ ("" "sched_yield") 234s 1949: __attribute__ ((__deprecated__ ("pthread_yield is deprecated, use sched_yield instead"))) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, 234s 1949: const cpu_set_t *__cpuset) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, 234s 1949: cpu_set_t *__cpuset) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (3))); 234s 1949: # 509 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_once (pthread_once_t *__once_control, 234s 1949: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: # 521 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_setcancelstate (int __state, int *__oldstate); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_setcanceltype (int __type, int *__oldtype); 234s 1949: 234s 1949: 234s 1949: extern int pthread_cancel (pthread_t __th); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern void pthread_testcancel (void); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __cancel_jmp_buf_tag 234s 1949: { 234s 1949: __jmp_buf __cancel_jmp_buf; 234s 1949: int __mask_was_saved; 234s 1949: }; 234s 1949: 234s 1949: typedef struct 234s 1949: { 234s 1949: struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; 234s 1949: void *__pad[4]; 234s 1949: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); 234s 1949: # 557 "/usr/include/pthread.h" 3 4 234s 1949: struct __pthread_cleanup_frame 234s 1949: { 234s 1949: void (*__cancel_routine) (void *); 234s 1949: void *__cancel_arg; 234s 1949: int __do_it; 234s 1949: int __cancel_type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: class __pthread_cleanup_class 234s 1949: { 234s 1949: void (*__cancel_routine) (void *); 234s 1949: void *__cancel_arg; 234s 1949: int __do_it; 234s 1949: int __cancel_type; 234s 1949: 234s 1949: public: 234s 1949: __pthread_cleanup_class (void (*__fct) (void *), void *__arg) 234s 1949: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } 234s 1949: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } 234s 1949: void __setdoit (int __newval) { __do_it = __newval; } 234s 1949: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, 234s 1949: &__cancel_type); } 234s 1949: void __restore () const { pthread_setcanceltype (__cancel_type, 0); } 234s 1949: }; 234s 1949: # 766 "/usr/include/pthread.h" 3 4 234s 1949: extern int __sigsetjmp_cancel (struct __cancel_jmp_buf_tag __env[1], int __savemask) noexcept (true) __asm__ ("" "__sigsetjmp") 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__returns_twice__)); 234s 1949: # 781 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_mutex_init (pthread_mutex_t *__mutex, 234s 1949: const pthread_mutexattr_t *__mutexattr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: # 805 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_mutex_timedlock64") 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1, 2))); 234s 1949: # 823 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_mutex_clocklock64") 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1, 3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * 234s 1949: __restrict __mutex, 234s 1949: int *__restrict __prioceiling) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, 234s 1949: int __prioceiling, 234s 1949: int *__restrict __old_ceiling) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutex_consistent_np (pthread_mutex_t *) noexcept (true) __asm__ ("" "pthread_mutex_consistent") 234s 1949: __attribute__ ((__nonnull__ (1))) 234s 1949: __attribute__ ((__deprecated__ ("pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent"))) 234s 1949: ; 234s 1949: # 874 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * 234s 1949: __restrict __attr, 234s 1949: int *__restrict __pshared) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, 234s 1949: int __pshared) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict 234s 1949: __attr, int *__restrict __kind) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * 234s 1949: __restrict __attr, 234s 1949: int *__restrict __protocol) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, 234s 1949: int __protocol) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * 234s 1949: __restrict __attr, 234s 1949: int *__restrict __prioceiling) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, 234s 1949: int __prioceiling) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, 234s 1949: int *__robustness) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_getrobust_np (pthread_mutexattr_t *, int *) noexcept (true) __asm__ ("" "pthread_mutexattr_getrobust") 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1))) 234s 1949: __attribute__ ((__deprecated__ ("pthread_mutexattr_getrobust_np is deprecated, use pthread_mutexattr_getrobust"))) 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, 234s 1949: int __robustness) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *, int) noexcept (true) __asm__ ("" "pthread_mutexattr_setrobust") 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1))) 234s 1949: __attribute__ ((__deprecated__ ("pthread_mutexattr_setrobust_np is deprecated, use pthread_mutexattr_setrobust"))) 234s 1949: ; 234s 1949: # 967 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, 234s 1949: const pthread_rwlockattr_t *__restrict 234s 1949: __attr) noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: # 991 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_timedrdlock64") 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1, 2))); 234s 1949: # 1010 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_clockrdlock64") 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1, 3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: # 1038 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_timedwrlock64") 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1, 2))); 234s 1949: # 1058 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_clockwrlock64") 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1, 3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * 234s 1949: __restrict __attr, 234s 1949: int *__restrict __pshared) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, 234s 1949: int __pshared) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * 234s 1949: __restrict __attr, 234s 1949: int *__restrict __pref) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, 234s 1949: int __pref) noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, 234s 1949: const pthread_condattr_t *__restrict __cond_attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_cond_destroy (pthread_cond_t *__cond) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_cond_signal (pthread_cond_t *__cond) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_cond_broadcast (pthread_cond_t *__cond) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, 234s 1949: pthread_mutex_t *__restrict __mutex) 234s 1949: __attribute__ ((__nonnull__ (1, 2))); 234s 1949: # 1151 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) __asm__ ("" "__pthread_cond_timedwait64") 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1, 2, 3))); 234s 1949: # 1178 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, __clockid_t __clock_id, const struct timespec *__restrict __abstime) __asm__ ("" "__pthread_cond_clockwait64") 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1, 2, 4))); 234s 1949: # 1194 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_condattr_init (pthread_condattr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_condattr_getpshared (const pthread_condattr_t * 234s 1949: __restrict __attr, 234s 1949: int *__restrict __pshared) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, 234s 1949: int __pshared) noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_condattr_getclock (const pthread_condattr_t * 234s 1949: __restrict __attr, 234s 1949: __clockid_t *__restrict __clock_id) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, 234s 1949: __clockid_t __clock_id) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: # 1230 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_spin_lock (pthread_spinlock_t *__lock) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, 234s 1949: const pthread_barrierattr_t *__restrict 234s 1949: __attr, unsigned int __count) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * 234s 1949: __restrict __attr, 234s 1949: int *__restrict __pshared) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, 234s 1949: int __pshared) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: # 1297 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_key_create (pthread_key_t *__key, 234s 1949: void (*__destr_function) (void *)) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: 234s 1949: extern int pthread_key_delete (pthread_key_t __key) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern void *pthread_getspecific (pthread_key_t __key) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int pthread_setspecific (pthread_key_t __key, 234s 1949: const void *__pointer) 234s 1949: noexcept (true) __attribute__ ((__access__ (__none__, 2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int pthread_getcpuclockid (pthread_t __thread_id, 234s 1949: __clockid_t *__clock_id) 234s 1949: noexcept (true) __attribute__ ((__nonnull__ (2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern pid_t pthread_gettid_np (pthread_t __thread_id); 234s 1949: # 1337 "/usr/include/pthread.h" 3 4 234s 1949: extern int pthread_atfork (void (*__prepare) (void), 234s 1949: void (*__parent) (void), 234s 1949: void (*__child) (void)) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern __inline __attribute__ ((__gnu_inline__)) int 234s 1949: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) noexcept (true) 234s 1949: { 234s 1949: return __thread1 == __thread2; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 36 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 2 3 4 234s 1949: # 62 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 234s 1949: typedef pthread_t __gthread_t; 234s 1949: typedef pthread_key_t __gthread_key_t; 234s 1949: typedef pthread_once_t __gthread_once_t; 234s 1949: typedef pthread_mutex_t __gthread_mutex_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef pthread_mutex_t __gthread_recursive_mutex_t; 234s 1949: typedef pthread_cond_t __gthread_cond_t; 234s 1949: typedef struct timespec __gthread_time_t; 234s 1949: # 123 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 345 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_active_p (void) 234s 1949: { 234s 1949: return 1; 234s 1949: } 234s 1949: # 705 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), 234s 1949: void *__args) 234s 1949: { 234s 1949: return pthread_create (__threadid, __null, __func, __args); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_join (__gthread_t __threadid, void **__value_ptr) 234s 1949: { 234s 1949: return pthread_join (__threadid, __value_ptr); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_detach (__gthread_t __threadid) 234s 1949: { 234s 1949: return pthread_detach (__threadid); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_equal (__gthread_t __t1, __gthread_t __t2) 234s 1949: { 234s 1949: return pthread_equal (__t1, __t2); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __gthread_t 234s 1949: __gthread_self (void) 234s 1949: { 234s 1949: return pthread_self (); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_yield (void) 234s 1949: { 234s 1949: return sched_yield (); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) 234s 1949: { 234s 1949: if (__gthread_active_p ()) 234s 1949: return pthread_once (__once, __func); 234s 1949: else 234s 1949: return -1; 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) 234s 1949: { 234s 1949: return pthread_key_create (__key, __dtor); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_key_delete (__gthread_key_t __key) 234s 1949: { 234s 1949: return pthread_key_delete (__key); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) void * 234s 1949: __gthread_getspecific (__gthread_key_t __key) 234s 1949: { 234s 1949: return pthread_getspecific (__key); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) 234s 1949: { 234s 1949: return pthread_setspecific (__key, __ptr); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) void 234s 1949: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) 234s 1949: { 234s 1949: if (__gthread_active_p ()) 234s 1949: pthread_mutex_init (__mutex, __null); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) 234s 1949: { 234s 1949: if (__gthread_active_p ()) 234s 1949: return pthread_mutex_destroy (__mutex); 234s 1949: else 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_mutex_lock (__gthread_mutex_t *__mutex) 234s 1949: { 234s 1949: if (__gthread_active_p ()) 234s 1949: return pthread_mutex_lock (__mutex); 234s 1949: else 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) 234s 1949: { 234s 1949: if (__gthread_active_p ()) 234s 1949: return pthread_mutex_trylock (__mutex); 234s 1949: else 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, 234s 1949: const __gthread_time_t *__abs_timeout) 234s 1949: { 234s 1949: if (__gthread_active_p ()) 234s 1949: return pthread_mutex_timedlock (__mutex, __abs_timeout); 234s 1949: else 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) 234s 1949: { 234s 1949: if (__gthread_active_p ()) 234s 1949: return pthread_mutex_unlock (__mutex); 234s 1949: else 234s 1949: return 0; 234s 1949: } 234s 1949: # 854 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) 234s 1949: { 234s 1949: return __gthread_mutex_lock (__mutex); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) 234s 1949: { 234s 1949: return __gthread_mutex_trylock (__mutex); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, 234s 1949: const __gthread_time_t *__abs_timeout) 234s 1949: { 234s 1949: return __gthread_mutex_timedlock (__mutex, __abs_timeout); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) 234s 1949: { 234s 1949: return __gthread_mutex_unlock (__mutex); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) 234s 1949: { 234s 1949: return __gthread_mutex_destroy (__mutex); 234s 1949: } 234s 1949: # 896 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr-default.h" 3 4 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_cond_broadcast (__gthread_cond_t *__cond) 234s 1949: { 234s 1949: return pthread_cond_broadcast (__cond); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_cond_signal (__gthread_cond_t *__cond) 234s 1949: { 234s 1949: return pthread_cond_signal (__cond); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) 234s 1949: { 234s 1949: return pthread_cond_wait (__cond, __mutex); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, 234s 1949: const __gthread_time_t *__abs_timeout) 234s 1949: { 234s 1949: return pthread_cond_timedwait (__cond, __mutex, __abs_timeout); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, 234s 1949: __gthread_recursive_mutex_t *__mutex) 234s 1949: { 234s 1949: return __gthread_cond_wait (__cond, __mutex); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) int 234s 1949: __gthread_cond_destroy (__gthread_cond_t* __cond) 234s 1949: { 234s 1949: return pthread_cond_destroy (__cond); 234s 1949: } 234s 1949: # 158 "/usr/include/arm-linux-gnueabihf/c++/15/bits/gthr.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: #pragma GCC visibility pop 234s 1949: # 38 "/usr/include/c++/15/ext/atomicity.h" 2 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/atomic_word.h" 1 3 4 234s 1949: # 32 "/usr/include/arm-linux-gnueabihf/c++/15/bits/atomic_word.h" 3 4 234s 1949: typedef int _Atomic_word; 234s 1949: # 39 "/usr/include/c++/15/ext/atomicity.h" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/sys/single_threaded.h" 1 3 4 234s 1949: # 24 "/usr/include/arm-linux-gnueabihf/sys/single_threaded.h" 3 4 234s 1949: extern "C" { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char __libc_single_threaded; 234s 1949: 234s 1949: } 234s 1949: # 41 "/usr/include/c++/15/ext/atomicity.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: inline bool 234s 1949: __is_single_threaded() noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return ::__libc_single_threaded; 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline _Atomic_word 234s 1949: __attribute__((__always_inline__)) 234s 1949: __exchange_and_add(volatile _Atomic_word* __mem, int __val) 234s 1949: { return __atomic_fetch_add(__mem, __val, 4); } 234s 1949: 234s 1949: inline void 234s 1949: __attribute__((__always_inline__)) 234s 1949: __atomic_add(volatile _Atomic_word* __mem, int __val) 234s 1949: { __atomic_fetch_add(__mem, __val, 4); } 234s 1949: # 82 "/usr/include/c++/15/ext/atomicity.h" 3 4 234s 1949: inline _Atomic_word 234s 1949: __attribute__((__always_inline__)) 234s 1949: __exchange_and_add_single(_Atomic_word* __mem, int __val) 234s 1949: { 234s 1949: _Atomic_word __result = *__mem; 234s 1949: *__mem += __val; 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: inline void 234s 1949: __attribute__((__always_inline__)) 234s 1949: __atomic_add_single(_Atomic_word* __mem, int __val) 234s 1949: { *__mem += __val; } 234s 1949: 234s 1949: inline _Atomic_word 234s 1949: __attribute__ ((__always_inline__)) 234s 1949: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) 234s 1949: { 234s 1949: if (__is_single_threaded()) 234s 1949: return __exchange_and_add_single(__mem, __val); 234s 1949: else 234s 1949: return __exchange_and_add(__mem, __val); 234s 1949: } 234s 1949: 234s 1949: inline void 234s 1949: __attribute__ ((__always_inline__)) 234s 1949: __atomic_add_dispatch(_Atomic_word* __mem, int __val) 234s 1949: { 234s 1949: if (__is_single_threaded()) 234s 1949: __atomic_add_single(__mem, __val); 234s 1949: else 234s 1949: __atomic_add(__mem, __val); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 42 "/usr/include/c++/15/bits/ios_base.h" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/locale_classes.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/string" 1 3 4 234s 1949: # 45 "/usr/include/c++/15/string" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/allocator.h" 1 3 4 234s 1949: # 46 "/usr/include/c++/15/bits/allocator.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++allocator.h" 1 3 4 234s 1949: # 33 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++allocator.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/new_allocator.h" 1 3 4 234s 1949: # 35 "/usr/include/c++/15/bits/new_allocator.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/functexcept.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/functexcept.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: __throw_bad_exception(void) __attribute__((__noreturn__)); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: __throw_bad_alloc(void) __attribute__((__noreturn__)); 234s 1949: 234s 1949: void 234s 1949: __throw_bad_array_new_length(void) __attribute__((__noreturn__)); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: __throw_bad_cast(void) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: void 234s 1949: __throw_bad_typeid(void) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: __throw_logic_error(const char*) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: void 234s 1949: __throw_domain_error(const char*) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: void 234s 1949: __throw_invalid_argument(const char*) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: void 234s 1949: __throw_length_error(const char*) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: void 234s 1949: __throw_out_of_range(const char*) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: void 234s 1949: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__,__cold__)) 234s 1949: __attribute__((__format__(__gnu_printf__, 1, 2))); 234s 1949: 234s 1949: void 234s 1949: __throw_runtime_error(const char*) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: void 234s 1949: __throw_range_error(const char*) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: void 234s 1949: __throw_overflow_error(const char*) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: void 234s 1949: __throw_underflow_error(const char*) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: __throw_ios_failure(const char*) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: void 234s 1949: __throw_ios_failure(const char*, int) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: __throw_system_error(int) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: __throw_future_error(int) __attribute__((__noreturn__,__cold__)); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: __throw_bad_function_call() __attribute__((__noreturn__,__cold__)); 234s 1949: # 140 "/usr/include/c++/15/bits/functexcept.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 36 "/usr/include/c++/15/bits/new_allocator.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 62 "/usr/include/c++/15/bits/new_allocator.h" 3 4 234s 1949: template 234s 1949: class __new_allocator 234s 1949: { 234s 1949: public: 234s 1949: typedef _Tp value_type; 234s 1949: typedef std::size_t size_type; 234s 1949: typedef std::ptrdiff_t difference_type; 234s 1949: 234s 1949: typedef _Tp* pointer; 234s 1949: typedef const _Tp* const_pointer; 234s 1949: typedef _Tp& reference; 234s 1949: typedef const _Tp& const_reference; 234s 1949: 234s 1949: template 234s 1949: struct rebind 234s 1949: { typedef __new_allocator<_Tp1> other; }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef std::true_type propagate_on_container_move_assignment; 234s 1949: 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: __new_allocator() noexcept { } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: __new_allocator(const __new_allocator&) noexcept { } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: __new_allocator(const __new_allocator<_Tp1>&) noexcept { } 234s 1949: 234s 1949: 234s 1949: __new_allocator& operator=(const __new_allocator&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: ~__new_allocator() noexcept { } 234s 1949: 234s 1949: pointer 234s 1949: address(reference __x) const noexcept 234s 1949: { return std::__addressof(__x); } 234s 1949: 234s 1949: const_pointer 234s 1949: address(const_reference __x) const noexcept 234s 1949: { return std::__addressof(__x); } 234s 1949: # 125 "/usr/include/c++/15/bits/new_allocator.h" 3 4 234s 1949: [[__nodiscard__]] _Tp* 234s 1949: allocate(size_type __n, const void* = static_cast(0)) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: static_assert(sizeof(_Tp) != 0, "cannot allocate incomplete types"); 234s 1949: 234s 1949: 234s 1949: if (__builtin_expect(__n > this->_M_max_size(), false)) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__n > (std::size_t(-1) / sizeof(_Tp))) 234s 1949: std::__throw_bad_array_new_length(); 234s 1949: std::__throw_bad_alloc(); 234s 1949: } 234s 1949: # 151 "/usr/include/c++/15/bits/new_allocator.h" 3 4 234s 1949: return static_cast<_Tp*>(__builtin_operator_new(__n * sizeof(_Tp))); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: deallocate(_Tp* __p, size_type __n __attribute__ ((__unused__))) 234s 1949: { 234s 1949: # 172 "/usr/include/c++/15/bits/new_allocator.h" 3 4 234s 1949: __builtin_operator_delete((__p), (__n) * sizeof(_Tp)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { return _M_max_size(); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: void 234s 1949: construct(_Up* __p, _Args&&... __args) 234s 1949: noexcept(__is_nothrow_new_constructible<_Up, _Args...>) 234s 1949: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: void 234s 1949: destroy(_Up* __p) 234s 1949: noexcept(std::is_nothrow_destructible<_Up>::value) 234s 1949: { __p->~_Up(); } 234s 1949: # 213 "/usr/include/c++/15/bits/new_allocator.h" 3 4 234s 1949: template 234s 1949: friend __attribute__((__always_inline__)) bool 234s 1949: operator==(const __new_allocator&, const __new_allocator<_Up>&) 234s 1949: noexcept 234s 1949: { return true; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend __attribute__((__always_inline__)) bool 234s 1949: operator!=(const __new_allocator&, const __new_allocator<_Up>&) 234s 1949: noexcept 234s 1949: { return false; } 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: __attribute__((__always_inline__)) 234s 1949: constexpr size_type 234s 1949: _M_max_size() const noexcept 234s 1949: { 234s 1949: 234s 1949: return std::size_t(0x7fffffff) / sizeof(_Tp); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 34 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++allocator.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: namespace std 234s 1949: { 234s 1949: # 46 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++allocator.h" 3 4 234s 1949: template 234s 1949: using __allocator_base = __new_allocator<_Tp>; 234s 1949: } 234s 1949: # 47 "/usr/include/c++/15/bits/allocator.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 75 "/usr/include/c++/15/bits/allocator.h" 3 4 234s 1949: template<> 234s 1949: class allocator 234s 1949: { 234s 1949: public: 234s 1949: typedef void value_type; 234s 1949: typedef size_t size_type; 234s 1949: typedef ptrdiff_t difference_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef void* pointer; 234s 1949: typedef const void* const_pointer; 234s 1949: 234s 1949: template 234s 1949: struct rebind 234s 1949: { typedef allocator<_Tp1> other; }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_move_assignment = true_type; 234s 1949: 234s 1949: 234s 1949: using is_always_equal 234s 1949: 234s 1949: = true_type; 234s 1949: # 120 "/usr/include/c++/15/bits/allocator.h" 3 4 234s 1949: }; 234s 1949: # 132 "/usr/include/c++/15/bits/allocator.h" 3 4 234s 1949: template 234s 1949: class allocator : public __allocator_base<_Tp> 234s 1949: { 234s 1949: public: 234s 1949: typedef _Tp value_type; 234s 1949: typedef size_t size_type; 234s 1949: typedef ptrdiff_t difference_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _Tp* pointer; 234s 1949: typedef const _Tp* const_pointer; 234s 1949: typedef _Tp& reference; 234s 1949: typedef const _Tp& const_reference; 234s 1949: 234s 1949: template 234s 1949: struct rebind 234s 1949: { typedef allocator<_Tp1> other; }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_move_assignment = true_type; 234s 1949: 234s 1949: 234s 1949: using is_always_equal 234s 1949: 234s 1949: = true_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: allocator() noexcept { } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: allocator(const allocator& __a) noexcept 234s 1949: : __allocator_base<_Tp>(__a) { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: allocator& operator=(const allocator&) = default; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: allocator(const allocator<_Tp1>&) noexcept { } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: 234s 1949: 234s 1949: ~allocator() noexcept { } 234s 1949: # 219 "/usr/include/c++/15/bits/allocator.h" 3 4 234s 1949: friend __attribute__((__always_inline__)) 234s 1949: bool 234s 1949: operator==(const allocator&, const allocator&) noexcept 234s 1949: { return true; } 234s 1949: 234s 1949: 234s 1949: friend __attribute__((__always_inline__)) 234s 1949: bool 234s 1949: operator!=(const allocator&, const allocator&) noexcept 234s 1949: { return false; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: inline bool 234s 1949: operator==(const allocator<_T1>&, const allocator<_T2>&) 234s 1949: noexcept 234s 1949: { return true; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: inline bool 234s 1949: operator!=(const allocator<_T1>&, const allocator<_T2>&) 234s 1949: noexcept 234s 1949: { return false; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class allocator 234s 1949: { 234s 1949: public: 234s 1949: typedef _Tp value_type; 234s 1949: allocator() { } 234s 1949: template allocator(const allocator<_Up>&) { } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: class allocator 234s 1949: { 234s 1949: public: 234s 1949: typedef _Tp value_type; 234s 1949: allocator() { } 234s 1949: template allocator(const allocator<_Up>&) { } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: class allocator 234s 1949: { 234s 1949: public: 234s 1949: typedef _Tp value_type; 234s 1949: allocator() { } 234s 1949: template allocator(const allocator<_Up>&) { } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template class allocator; 234s 1949: extern template class allocator; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 46 "/usr/include/c++/15/string" 2 3 4 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/ostream_insert.h" 1 3 4 234s 1949: # 38 "/usr/include/c++/15/bits/ostream_insert.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/cxxabi_forced.h" 1 3 4 234s 1949: # 38 "/usr/include/c++/15/bits/cxxabi_forced.h" 3 4 234s 1949: #pragma GCC visibility push(default) 234s 1949: 234s 1949: 234s 1949: namespace __cxxabiv1 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: class __forced_unwind 234s 1949: { 234s 1949: virtual ~__forced_unwind() throw(); 234s 1949: 234s 1949: 234s 1949: virtual void __pure_dummy() = 0; 234s 1949: }; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: #pragma GCC visibility pop 234s 1949: # 39 "/usr/include/c++/15/bits/ostream_insert.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: __ostream_write(basic_ostream<_CharT, _Traits>& __out, 234s 1949: const _CharT* __s, streamsize __n) 234s 1949: { 234s 1949: typedef basic_ostream<_CharT, _Traits> __ostream_type; 234s 1949: typedef typename __ostream_type::ios_base __ios_base; 234s 1949: 234s 1949: const streamsize __put = __out.rdbuf()->sputn(__s, __n); 234s 1949: if (__put != __n) 234s 1949: __out.setstate(__ios_base::badbit); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) 234s 1949: { 234s 1949: typedef basic_ostream<_CharT, _Traits> __ostream_type; 234s 1949: typedef typename __ostream_type::ios_base __ios_base; 234s 1949: 234s 1949: const _CharT __c = __out.fill(); 234s 1949: for (; __n > 0; --__n) 234s 1949: { 234s 1949: const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); 234s 1949: if (_Traits::eq_int_type(__put, _Traits::eof())) 234s 1949: { 234s 1949: __out.setstate(__ios_base::badbit); 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: __ostream_insert(basic_ostream<_CharT, _Traits>& __out, 234s 1949: const _CharT* __s, streamsize __n) 234s 1949: { 234s 1949: typedef basic_ostream<_CharT, _Traits> __ostream_type; 234s 1949: typedef typename __ostream_type::ios_base __ios_base; 234s 1949: 234s 1949: typename __ostream_type::sentry __cerb(__out); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: const streamsize __w = __out.width(); 234s 1949: if (__w > __n) 234s 1949: { 234s 1949: const bool __left = ((__out.flags() 234s 1949: & __ios_base::adjustfield) 234s 1949: == __ios_base::left); 234s 1949: if (!__left) 234s 1949: __ostream_fill(__out, __w - __n); 234s 1949: if (__out.good()) 234s 1949: __ostream_write(__out, __s, __n); 234s 1949: if (__left && __out.good()) 234s 1949: __ostream_fill(__out, __w - __n); 234s 1949: } 234s 1949: else 234s 1949: __ostream_write(__out, __s, __n); 234s 1949: __out.width(0); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __out._M_setstate(__ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { __out._M_setstate(__ios_base::badbit); } 234s 1949: } 234s 1949: return __out; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template ostream& __ostream_insert(ostream&, const char*, streamsize); 234s 1949: 234s 1949: 234s 1949: extern template wostream& __ostream_insert(wostream&, const wchar_t*, 234s 1949: streamsize); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 49 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 1 3 4 234s 1949: # 66 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/concept_check.h" 1 3 4 234s 1949: # 39 "/usr/include/c++/15/bits/concept_check.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wvariadic-macros" 234s 1949: # 86 "/usr/include/c++/15/bits/concept_check.h" 3 4 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 67 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/debug/assertions.h" 1 3 4 234s 1949: # 68 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 1 3 4 234s 1949: # 76 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 95 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 3 4 234s 1949: struct input_iterator_tag { }; 234s 1949: 234s 1949: 234s 1949: struct output_iterator_tag { }; 234s 1949: 234s 1949: 234s 1949: struct forward_iterator_tag : public input_iterator_tag { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct bidirectional_iterator_tag : public forward_iterator_tag { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; 234s 1949: # 127 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 3 4 234s 1949: template 234s 1949: struct iterator 234s 1949: { 234s 1949: 234s 1949: typedef _Category iterator_category; 234s 1949: 234s 1949: typedef _Tp value_type; 234s 1949: 234s 1949: typedef _Distance difference_type; 234s 1949: 234s 1949: typedef _Pointer pointer; 234s 1949: 234s 1949: typedef _Reference reference; 234s 1949: }; 234s 1949: # 151 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 3 4 234s 1949: template 234s 1949: struct iterator_traits; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: struct __iterator_traits { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __iterator_traits<_Iterator, 234s 1949: __void_t> 234s 1949: { 234s 1949: typedef typename _Iterator::iterator_category iterator_category; 234s 1949: typedef typename _Iterator::value_type value_type; 234s 1949: typedef typename _Iterator::difference_type difference_type; 234s 1949: typedef typename _Iterator::pointer pointer; 234s 1949: typedef typename _Iterator::reference reference; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct iterator_traits 234s 1949: : public __iterator_traits<_Iterator> { }; 234s 1949: # 211 "/usr/include/c++/15/bits/stl_iterator_base_types.h" 3 4 234s 1949: template 234s 1949: struct iterator_traits<_Tp*> 234s 1949: { 234s 1949: typedef random_access_iterator_tag iterator_category; 234s 1949: typedef _Tp value_type; 234s 1949: typedef ptrdiff_t difference_type; 234s 1949: typedef _Tp* pointer; 234s 1949: typedef _Tp& reference; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct iterator_traits 234s 1949: { 234s 1949: typedef random_access_iterator_tag iterator_category; 234s 1949: typedef _Tp value_type; 234s 1949: typedef ptrdiff_t difference_type; 234s 1949: typedef const _Tp* pointer; 234s 1949: typedef const _Tp& reference; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: inline constexpr 234s 1949: typename iterator_traits<_Iter>::iterator_category 234s 1949: __iterator_category(const _Iter&) 234s 1949: { return typename iterator_traits<_Iter>::iterator_category(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __iter_category_t 234s 1949: = typename iterator_traits<_Iter>::iterator_category; 234s 1949: 234s 1949: template 234s 1949: using _RequireInputIter = 234s 1949: __enable_if_t, 234s 1949: input_iterator_tag>::value>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: struct __is_random_access_iter 234s 1949: : is_base_of 234s 1949: { 234s 1949: typedef is_base_of _Base; 234s 1949: enum { __value = _Base::value }; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 69 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template struct _List_iterator; 234s 1949: template struct _List_const_iterator; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline constexpr 234s 1949: typename iterator_traits<_InputIterator>::difference_type 234s 1949: __distance(_InputIterator __first, _InputIterator __last, 234s 1949: input_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: typename iterator_traits<_InputIterator>::difference_type __n = 0; 234s 1949: while (__first != __last) 234s 1949: { 234s 1949: ++__first; 234s 1949: ++__n; 234s 1949: } 234s 1949: return __n; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: inline constexpr 234s 1949: typename iterator_traits<_RandomAccessIterator>::difference_type 234s 1949: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: random_access_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return __last - __first; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: ptrdiff_t 234s 1949: __distance(std::_List_iterator<_Tp>, 234s 1949: std::_List_iterator<_Tp>, 234s 1949: input_iterator_tag); 234s 1949: 234s 1949: template 234s 1949: ptrdiff_t 234s 1949: __distance(std::_List_const_iterator<_Tp>, 234s 1949: std::_List_const_iterator<_Tp>, 234s 1949: input_iterator_tag); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __distance(_OutputIterator, _OutputIterator, output_iterator_tag) = delete; 234s 1949: # 146 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: inline 234s 1949: typename iterator_traits<_InputIterator>::difference_type 234s 1949: distance(_InputIterator __first, _InputIterator __last) 234s 1949: { 234s 1949: 234s 1949: return std::__distance(__first, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline constexpr void 234s 1949: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__n >= 0)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: while (__n--) 234s 1949: ++__i; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline constexpr void 234s 1949: __advance(_BidirectionalIterator& __i, _Distance __n, 234s 1949: bidirectional_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__n > 0) 234s 1949: while (__n--) 234s 1949: ++__i; 234s 1949: else 234s 1949: while (__n++) 234s 1949: --__i; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline constexpr void 234s 1949: __advance(_RandomAccessIterator& __i, _Distance __n, 234s 1949: random_access_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__builtin_constant_p(__n) && __n == 1) 234s 1949: ++__i; 234s 1949: else if (__builtin_constant_p(__n) && __n == -1) 234s 1949: --__i; 234s 1949: else 234s 1949: __i += __n; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __advance(_OutputIterator&, _Distance, output_iterator_tag) = delete; 234s 1949: # 219 "/usr/include/c++/15/bits/stl_iterator_base_funcs.h" 3 4 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: inline void 234s 1949: advance(_InputIterator& __i, _Distance __n) 234s 1949: { 234s 1949: 234s 1949: typename iterator_traits<_InputIterator>::difference_type __d = __n; 234s 1949: std::__advance(__i, __d, std::__iterator_category(__i)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] [[__gnu__::__always_inline__]] 234s 1949: inline _InputIterator 234s 1949: next(_InputIterator __x, typename 234s 1949: iterator_traits<_InputIterator>::difference_type __n = 1) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: std::advance(__x, __n); 234s 1949: return __x; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] [[__gnu__::__always_inline__]] 234s 1949: inline _BidirectionalIterator 234s 1949: prev(_BidirectionalIterator __x, typename 234s 1949: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: std::advance(__x, -__n); 234s 1949: return __x; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 50 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_iterator.h" 1 3 4 234s 1949: # 67 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/ptr_traits.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/ptr_traits.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: class __undefined; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __get_first_arg 234s 1949: { using type = __undefined; }; 234s 1949: 234s 1949: template class _SomeTemplate, typename _Tp, 234s 1949: typename... _Types> 234s 1949: struct __get_first_arg<_SomeTemplate<_Tp, _Types...>> 234s 1949: { using type = _Tp; }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __replace_first_arg 234s 1949: { }; 234s 1949: 234s 1949: template class _SomeTemplate, typename _Up, 234s 1949: typename _Tp, typename... _Types> 234s 1949: struct __replace_first_arg<_SomeTemplate<_Tp, _Types...>, _Up> 234s 1949: { using type = _SomeTemplate<_Up, _Types...>; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __ptr_traits_elem : __get_first_arg<_Ptr> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __ptr_traits_elem<_Ptr, __void_t> 234s 1949: { using type = typename _Ptr::element_type; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __ptr_traits_elem_t = typename __ptr_traits_elem<_Ptr>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template::value> 234s 1949: struct __ptr_traits_ptr_to 234s 1949: { 234s 1949: using pointer = _Ptr; 234s 1949: using element_type = _Elt; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static pointer 234s 1949: pointer_to(element_type& __r) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return pointer::pointer_to(__r); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __ptr_traits_ptr_to<_Ptr, _Elt, true> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __ptr_traits_ptr_to<_Tp*, _Tp, false> 234s 1949: { 234s 1949: using pointer = _Tp*; 234s 1949: using element_type = _Tp; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static pointer 234s 1949: pointer_to(element_type& __r) noexcept 234s 1949: { return std::addressof(__r); } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __ptr_traits_impl : __ptr_traits_ptr_to<_Ptr, _Elt> 234s 1949: { 234s 1949: private: 234s 1949: template 234s 1949: using __diff_t = typename _Tp::difference_type; 234s 1949: 234s 1949: template 234s 1949: using __rebind = __type_identity>; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: using pointer = _Ptr; 234s 1949: 234s 1949: 234s 1949: using element_type = _Elt; 234s 1949: 234s 1949: 234s 1949: using difference_type = __detected_or_t; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using rebind = typename __detected_or_t<__replace_first_arg<_Ptr, _Up>, 234s 1949: __rebind, _Ptr, _Up>::type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __ptr_traits_impl<_Ptr, __undefined> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct pointer_traits : __ptr_traits_impl<_Ptr, __ptr_traits_elem_t<_Ptr>> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct pointer_traits<_Tp*> : __ptr_traits_ptr_to<_Tp*, _Tp> 234s 1949: { 234s 1949: 234s 1949: typedef _Tp* pointer; 234s 1949: 234s 1949: typedef _Tp element_type; 234s 1949: 234s 1949: typedef ptrdiff_t difference_type; 234s 1949: 234s 1949: template using rebind = _Up*; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: constexpr _Tp* 234s 1949: __to_address(_Tp* __ptr) noexcept 234s 1949: { 234s 1949: static_assert(!std::is_function<_Tp>::value, "std::to_address argument " 234s 1949: "must not be a function pointer"); 234s 1949: return __ptr; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr typename std::pointer_traits<_Ptr>::element_type* 234s 1949: __to_address(const _Ptr& __ptr) 234s 1949: { return std::__to_address(__ptr.operator->()); } 234s 1949: # 268 "/usr/include/c++/15/bits/ptr_traits.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 68 "/usr/include/c++/15/bits/stl_iterator.h" 2 3 4 234s 1949: # 85 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 108 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: 234s 1949: # 108 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: # 130 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: class reverse_iterator 234s 1949: : public iterator::iterator_category, 234s 1949: typename iterator_traits<_Iterator>::value_type, 234s 1949: typename iterator_traits<_Iterator>::difference_type, 234s 1949: typename iterator_traits<_Iterator>::pointer, 234s 1949: typename iterator_traits<_Iterator>::reference> 234s 1949: { 234s 1949: template 234s 1949: friend class reverse_iterator; 234s 1949: # 149 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: protected: 234s 1949: _Iterator current; 234s 1949: 234s 1949: typedef iterator_traits<_Iterator> __traits_type; 234s 1949: 234s 1949: public: 234s 1949: typedef _Iterator iterator_type; 234s 1949: typedef typename __traits_type::pointer pointer; 234s 1949: 234s 1949: typedef typename __traits_type::difference_type difference_type; 234s 1949: typedef typename __traits_type::reference reference; 234s 1949: # 180 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: 234s 1949: reverse_iterator() 234s 1949: noexcept(noexcept(_Iterator())) 234s 1949: : current() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: reverse_iterator(iterator_type __x) 234s 1949: noexcept(noexcept(_Iterator(__x))) 234s 1949: : current(__x) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator(const reverse_iterator& __x) 234s 1949: noexcept(noexcept(_Iterator(__x.current))) 234s 1949: : current(__x.current) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: reverse_iterator& operator=(const reverse_iterator&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator(const reverse_iterator<_Iter>& __x) 234s 1949: noexcept(noexcept(_Iterator(__x.current))) 234s 1949: : current(__x.current) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator& 234s 1949: operator=(const reverse_iterator<_Iter>& __x) 234s 1949: noexcept(noexcept(current = __x.current)) 234s 1949: { 234s 1949: current = __x.current; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: iterator_type 234s 1949: base() const 234s 1949: noexcept(noexcept(_Iterator(current))) 234s 1949: { return current; } 234s 1949: # 257 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: operator*() const 234s 1949: { 234s 1949: _Iterator __tmp = current; 234s 1949: return *--__tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: pointer 234s 1949: operator->() const 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: 234s 1949: 234s 1949: _Iterator __tmp = current; 234s 1949: --__tmp; 234s 1949: return _S_to_pointer(__tmp); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator& 234s 1949: operator++() 234s 1949: { 234s 1949: --current; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: operator++(int) 234s 1949: { 234s 1949: reverse_iterator __tmp = *this; 234s 1949: --current; 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator& 234s 1949: operator--() 234s 1949: { 234s 1949: ++current; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: operator--(int) 234s 1949: { 234s 1949: reverse_iterator __tmp = *this; 234s 1949: ++current; 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reverse_iterator 234s 1949: operator+(difference_type __n) const 234s 1949: { return reverse_iterator(current - __n); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator& 234s 1949: operator+=(difference_type __n) 234s 1949: { 234s 1949: current -= __n; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reverse_iterator 234s 1949: operator-(difference_type __n) const 234s 1949: { return reverse_iterator(current + __n); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator& 234s 1949: operator-=(difference_type __n) 234s 1949: { 234s 1949: current += __n; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: operator[](difference_type __n) const 234s 1949: { return *(*this + __n); } 234s 1949: # 417 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: private: 234s 1949: template 234s 1949: static _Tp* 234s 1949: _S_to_pointer(_Tp* __p) 234s 1949: { return __p; } 234s 1949: 234s 1949: template 234s 1949: static pointer 234s 1949: _S_to_pointer(_Tp __t) 234s 1949: { return __t.operator->(); } 234s 1949: }; 234s 1949: # 440 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const reverse_iterator<_Iterator>& __x, 234s 1949: const reverse_iterator<_Iterator>& __y) 234s 1949: { return __x.base() == __y.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<(const reverse_iterator<_Iterator>& __x, 234s 1949: const reverse_iterator<_Iterator>& __y) 234s 1949: { return __y.base() < __x.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator!=(const reverse_iterator<_Iterator>& __x, 234s 1949: const reverse_iterator<_Iterator>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>(const reverse_iterator<_Iterator>& __x, 234s 1949: const reverse_iterator<_Iterator>& __y) 234s 1949: { return __y < __x; } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<=(const reverse_iterator<_Iterator>& __x, 234s 1949: const reverse_iterator<_Iterator>& __y) 234s 1949: { return !(__y < __x); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>=(const reverse_iterator<_Iterator>& __x, 234s 1949: const reverse_iterator<_Iterator>& __y) 234s 1949: { return !(__x < __y); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const reverse_iterator<_IteratorL>& __x, 234s 1949: const reverse_iterator<_IteratorR>& __y) 234s 1949: { return __x.base() == __y.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<(const reverse_iterator<_IteratorL>& __x, 234s 1949: const reverse_iterator<_IteratorR>& __y) 234s 1949: { return __x.base() > __y.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator!=(const reverse_iterator<_IteratorL>& __x, 234s 1949: const reverse_iterator<_IteratorR>& __y) 234s 1949: { return __x.base() != __y.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>(const reverse_iterator<_IteratorL>& __x, 234s 1949: const reverse_iterator<_IteratorR>& __y) 234s 1949: { return __x.base() < __y.base(); } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator<=(const reverse_iterator<_IteratorL>& __x, 234s 1949: const reverse_iterator<_IteratorR>& __y) 234s 1949: { return __x.base() >= __y.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>=(const reverse_iterator<_IteratorL>& __x, 234s 1949: const reverse_iterator<_IteratorR>& __y) 234s 1949: { return __x.base() <= __y.base(); } 234s 1949: # 617 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline auto 234s 1949: operator-(const reverse_iterator<_IteratorL>& __x, 234s 1949: const reverse_iterator<_IteratorR>& __y) 234s 1949: -> decltype(__y.base() - __x.base()) 234s 1949: { return __y.base() - __x.base(); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline reverse_iterator<_Iterator> 234s 1949: operator+(typename reverse_iterator<_Iterator>::difference_type __n, 234s 1949: const reverse_iterator<_Iterator>& __x) 234s 1949: { return reverse_iterator<_Iterator>(__x.base() - __n); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline reverse_iterator<_Iterator> 234s 1949: __make_reverse_iterator(_Iterator __i) 234s 1949: { return reverse_iterator<_Iterator>(__i); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline reverse_iterator<_Iterator> 234s 1949: make_reverse_iterator(_Iterator __i) 234s 1949: { return reverse_iterator<_Iterator>(__i); } 234s 1949: # 659 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: struct __is_move_iterator > 234s 1949: : __is_move_iterator<_Iterator> 234s 1949: { }; 234s 1949: # 676 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: class back_insert_iterator 234s 1949: : public iterator 234s 1949: { 234s 1949: protected: 234s 1949: _Container* container; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: typedef _Container container_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: back_insert_iterator(_Container& __x) 234s 1949: : container(std::__addressof(__x)) { } 234s 1949: # 714 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: 234s 1949: back_insert_iterator& 234s 1949: operator=(const typename _Container::value_type& __value) 234s 1949: { 234s 1949: container->push_back(__value); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: back_insert_iterator& 234s 1949: operator=(typename _Container::value_type&& __value) 234s 1949: { 234s 1949: container->push_back(std::move(__value)); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: back_insert_iterator& 234s 1949: operator*() 234s 1949: { return *this; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: back_insert_iterator& 234s 1949: operator++() 234s 1949: { return *this; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: back_insert_iterator 234s 1949: operator++(int) 234s 1949: { return *this; } 234s 1949: }; 234s 1949: # 761 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline back_insert_iterator<_Container> 234s 1949: back_inserter(_Container& __x) 234s 1949: { return back_insert_iterator<_Container>(__x); } 234s 1949: # 777 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: class front_insert_iterator 234s 1949: : public iterator 234s 1949: { 234s 1949: protected: 234s 1949: _Container* container; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: typedef _Container container_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: front_insert_iterator(_Container& __x) 234s 1949: : container(std::__addressof(__x)) { } 234s 1949: # 815 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: 234s 1949: front_insert_iterator& 234s 1949: operator=(const typename _Container::value_type& __value) 234s 1949: { 234s 1949: container->push_front(__value); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: front_insert_iterator& 234s 1949: operator=(typename _Container::value_type&& __value) 234s 1949: { 234s 1949: container->push_front(std::move(__value)); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: front_insert_iterator& 234s 1949: operator*() 234s 1949: { return *this; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: front_insert_iterator& 234s 1949: operator++() 234s 1949: { return *this; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: front_insert_iterator 234s 1949: operator++(int) 234s 1949: { return *this; } 234s 1949: }; 234s 1949: # 862 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline front_insert_iterator<_Container> 234s 1949: front_inserter(_Container& __x) 234s 1949: { return front_insert_iterator<_Container>(__x); } 234s 1949: # 882 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: class insert_iterator 234s 1949: : public iterator 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename _Container::iterator _Iter; 234s 1949: 234s 1949: protected: 234s 1949: _Container* container; 234s 1949: _Iter iter; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: typedef _Container container_type; 234s 1949: # 907 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: 234s 1949: insert_iterator(_Container& __x, _Iter __i) 234s 1949: : container(std::__addressof(__x)), iter(__i) {} 234s 1949: # 943 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: 234s 1949: insert_iterator& 234s 1949: operator=(const typename _Container::value_type& __value) 234s 1949: { 234s 1949: iter = container->insert(iter, __value); 234s 1949: ++iter; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: insert_iterator& 234s 1949: operator=(typename _Container::value_type&& __value) 234s 1949: { 234s 1949: iter = container->insert(iter, std::move(__value)); 234s 1949: ++iter; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: insert_iterator& 234s 1949: operator*() 234s 1949: { return *this; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: insert_iterator& 234s 1949: operator++() 234s 1949: { return *this; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: insert_iterator& 234s 1949: operator++(int) 234s 1949: { return *this; } 234s 1949: }; 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 1002 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline insert_iterator<_Container> 234s 1949: inserter(_Container& __x, typename _Container::iterator __i) 234s 1949: { return insert_iterator<_Container>(__x, __i); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 1025 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: class __normal_iterator 234s 1949: { 234s 1949: protected: 234s 1949: _Iterator _M_current; 234s 1949: 234s 1949: typedef std::iterator_traits<_Iterator> __traits_type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __convertible_from 234s 1949: = std::__enable_if_t::value>; 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: typedef _Iterator iterator_type; 234s 1949: typedef typename __traits_type::iterator_category iterator_category; 234s 1949: typedef typename __traits_type::value_type value_type; 234s 1949: typedef typename __traits_type::difference_type difference_type; 234s 1949: typedef typename __traits_type::reference reference; 234s 1949: typedef typename __traits_type::pointer pointer; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: __normal_iterator() noexcept 234s 1949: : _M_current() { } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: explicit constexpr 234s 1949: __normal_iterator(const _Iterator& __i) noexcept 234s 1949: : _M_current(__i) { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: constexpr 234s 1949: __normal_iterator(const __normal_iterator<_Iter, _Container>& __i) 234s 1949: noexcept 234s 1949: # 1082 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: : _M_current(__i.base()) { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: reference 234s 1949: operator*() const noexcept 234s 1949: { return *_M_current; } 234s 1949: 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: pointer 234s 1949: operator->() const noexcept 234s 1949: { return _M_current; } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: __normal_iterator& 234s 1949: operator++() noexcept 234s 1949: { 234s 1949: ++_M_current; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: __normal_iterator 234s 1949: operator++(int) noexcept 234s 1949: { return __normal_iterator(_M_current++); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: __normal_iterator& 234s 1949: operator--() noexcept 234s 1949: { 234s 1949: --_M_current; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: __normal_iterator 234s 1949: operator--(int) noexcept 234s 1949: { return __normal_iterator(_M_current--); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: reference 234s 1949: operator[](difference_type __n) const noexcept 234s 1949: { return _M_current[__n]; } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: __normal_iterator& 234s 1949: operator+=(difference_type __n) noexcept 234s 1949: { _M_current += __n; return *this; } 234s 1949: 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: __normal_iterator 234s 1949: operator+(difference_type __n) const noexcept 234s 1949: { return __normal_iterator(_M_current + __n); } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: __normal_iterator& 234s 1949: operator-=(difference_type __n) noexcept 234s 1949: { _M_current -= __n; return *this; } 234s 1949: 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: __normal_iterator 234s 1949: operator-(difference_type __n) const noexcept 234s 1949: { return __normal_iterator(_M_current - __n); } 234s 1949: 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: const _Iterator& 234s 1949: base() const noexcept 234s 1949: { return _M_current; } 234s 1949: }; 234s 1949: # 1217 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, 234s 1949: const __normal_iterator<_IteratorR, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() == __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, 234s 1949: const __normal_iterator<_Iterator, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() == __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, 234s 1949: const __normal_iterator<_IteratorR, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() != __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, 234s 1949: const __normal_iterator<_Iterator, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() != __rhs.base(); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, 234s 1949: const __normal_iterator<_IteratorR, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() < __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: inline bool 234s 1949: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, 234s 1949: const __normal_iterator<_Iterator, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() < __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, 234s 1949: const __normal_iterator<_IteratorR, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() > __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, 234s 1949: const __normal_iterator<_Iterator, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() > __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, 234s 1949: const __normal_iterator<_IteratorR, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() <= __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, 234s 1949: const __normal_iterator<_Iterator, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() <= __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, 234s 1949: const __normal_iterator<_IteratorR, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() >= __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline bool 234s 1949: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, 234s 1949: const __normal_iterator<_Iterator, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() >= __rhs.base(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: constexpr auto 234s 1949: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, 234s 1949: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept 234s 1949: -> decltype(__lhs.base() - __rhs.base()) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return __lhs.base() - __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline typename __normal_iterator<_Iterator, _Container>::difference_type 234s 1949: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, 234s 1949: const __normal_iterator<_Iterator, _Container>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.base() - __rhs.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 234s 1949: inline __normal_iterator<_Iterator, _Container> 234s 1949: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type 234s 1949: __n, const __normal_iterator<_Iterator, _Container>& __i) 234s 1949: noexcept 234s 1949: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 1434 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: class move_iterator 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: _Iterator _M_current; 234s 1949: 234s 1949: using __traits_type = iterator_traits<_Iterator>; 234s 1949: 234s 1949: using __base_ref = typename __traits_type::reference; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend class move_iterator; 234s 1949: # 1473 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: public: 234s 1949: using iterator_type = _Iterator; 234s 1949: # 1485 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: typedef typename __traits_type::iterator_category iterator_category; 234s 1949: typedef typename __traits_type::value_type value_type; 234s 1949: typedef typename __traits_type::difference_type difference_type; 234s 1949: 234s 1949: typedef _Iterator pointer; 234s 1949: 234s 1949: 234s 1949: using reference 234s 1949: = __conditional_t::value, 234s 1949: typename remove_reference<__base_ref>::type&&, 234s 1949: __base_ref>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: move_iterator() 234s 1949: : _M_current() { } 234s 1949: 234s 1949: explicit 234s 1949: move_iterator(iterator_type __i) 234s 1949: : _M_current(std::move(__i)) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: move_iterator(const move_iterator<_Iter>& __i) 234s 1949: : _M_current(__i._M_current) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: move_iterator& operator=(const move_iterator<_Iter>& __i) 234s 1949: { 234s 1949: _M_current = __i._M_current; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: iterator_type 234s 1949: base() const 234s 1949: { return _M_current; } 234s 1949: # 1543 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: operator*() const 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return static_cast(*_M_current); } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: pointer 234s 1949: operator->() const 234s 1949: { return _M_current; } 234s 1949: 234s 1949: move_iterator& 234s 1949: operator++() 234s 1949: { 234s 1949: ++_M_current; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: move_iterator 234s 1949: operator++(int) 234s 1949: { 234s 1949: move_iterator __tmp = *this; 234s 1949: ++_M_current; 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: move_iterator& 234s 1949: operator--() 234s 1949: { 234s 1949: --_M_current; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: move_iterator 234s 1949: operator--(int) 234s 1949: { 234s 1949: move_iterator __tmp = *this; 234s 1949: --_M_current; 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: move_iterator 234s 1949: operator+(difference_type __n) const 234s 1949: { return move_iterator(_M_current + __n); } 234s 1949: 234s 1949: move_iterator& 234s 1949: operator+=(difference_type __n) 234s 1949: { 234s 1949: _M_current += __n; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: move_iterator 234s 1949: operator-(difference_type __n) const 234s 1949: { return move_iterator(_M_current - __n); } 234s 1949: 234s 1949: move_iterator& 234s 1949: operator-=(difference_type __n) 234s 1949: { 234s 1949: _M_current -= __n; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: operator[](difference_type __n) const 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return std::move(_M_current[__n]); } 234s 1949: # 1657 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const move_iterator<_IteratorL>& __x, 234s 1949: const move_iterator<_IteratorR>& __y) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return __x.base() == __y.base(); } 234s 1949: # 1678 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator!=(const move_iterator<_IteratorL>& __x, 234s 1949: const move_iterator<_IteratorR>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<(const move_iterator<_IteratorL>& __x, 234s 1949: const move_iterator<_IteratorR>& __y) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return __x.base() < __y.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<=(const move_iterator<_IteratorL>& __x, 234s 1949: const move_iterator<_IteratorR>& __y) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return !(__y < __x); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>(const move_iterator<_IteratorL>& __x, 234s 1949: const move_iterator<_IteratorR>& __y) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return __y < __x; } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>=(const move_iterator<_IteratorL>& __x, 234s 1949: const move_iterator<_IteratorR>& __y) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return !(__x < __y); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const move_iterator<_Iterator>& __x, 234s 1949: const move_iterator<_Iterator>& __y) 234s 1949: 234s 1949: { return __x.base() == __y.base(); } 234s 1949: # 1745 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator!=(const move_iterator<_Iterator>& __x, 234s 1949: const move_iterator<_Iterator>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<(const move_iterator<_Iterator>& __x, 234s 1949: const move_iterator<_Iterator>& __y) 234s 1949: { return __x.base() < __y.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<=(const move_iterator<_Iterator>& __x, 234s 1949: const move_iterator<_Iterator>& __y) 234s 1949: { return !(__y < __x); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>(const move_iterator<_Iterator>& __x, 234s 1949: const move_iterator<_Iterator>& __y) 234s 1949: { return __y < __x; } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>=(const move_iterator<_Iterator>& __x, 234s 1949: const move_iterator<_Iterator>& __y) 234s 1949: { return !(__x < __y); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline auto 234s 1949: operator-(const move_iterator<_IteratorL>& __x, 234s 1949: const move_iterator<_IteratorR>& __y) 234s 1949: -> decltype(__x.base() - __y.base()) 234s 1949: { return __x.base() - __y.base(); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline move_iterator<_Iterator> 234s 1949: operator+(typename move_iterator<_Iterator>::difference_type __n, 234s 1949: const move_iterator<_Iterator>& __x) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return __x + __n; } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline move_iterator<_Iterator> 234s 1949: make_move_iterator(_Iterator __i) 234s 1949: { return move_iterator<_Iterator>(std::move(__i)); } 234s 1949: 234s 1949: template::value_type>::value, 234s 1949: _Iterator, move_iterator<_Iterator>>> 234s 1949: [[__nodiscard__]] 234s 1949: constexpr _ReturnType 234s 1949: __make_move_if_noexcept_iterator(_Iterator __i) 234s 1949: { return _ReturnType(__i); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template::value, 234s 1949: const _Tp*, move_iterator<_Tp*>>> 234s 1949: [[__nodiscard__]] 234s 1949: constexpr _ReturnType 234s 1949: __make_move_if_noexcept_iterator(_Tp* __i) 234s 1949: { return _ReturnType(__i); } 234s 1949: 234s 1949: template 234s 1949: struct __is_move_iterator > 234s 1949: { 234s 1949: enum { __value = 1 }; 234s 1949: typedef __true_type __type; 234s 1949: }; 234s 1949: # 2980 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: 234s 1949: } 234s 1949: 234s 1949: namespace __gnu_debug 234s 1949: { 234s 1949: template 234s 1949: class _Safe_iterator; 234s 1949: } 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _Iterator 234s 1949: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) 234s 1949: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 234s 1949: { return __it.base(); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _Iterator 234s 1949: __niter_base(_Iterator __it) 234s 1949: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 234s 1949: { return __it; } 234s 1949: # 3027 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: template 234s 1949: 234s 1949: decltype(std::__niter_base(std::declval<_Ite>())) 234s 1949: __niter_base(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, 234s 1949: std::random_access_iterator_tag>&) 234s 1949: noexcept(std::is_nothrow_copy_constructible<_Ite>::value); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline auto 234s 1949: __niter_base(reverse_iterator<_Iterator> __it) 234s 1949: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) 234s 1949: { return __make_reverse_iterator(__niter_base(__it.base())); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline auto 234s 1949: __niter_base(move_iterator<_Iterator> __it) 234s 1949: -> decltype(make_move_iterator(__niter_base(__it.base()))) 234s 1949: { return make_move_iterator(__niter_base(__it.base())); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline auto 234s 1949: __miter_base(reverse_iterator<_Iterator> __it) 234s 1949: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) 234s 1949: { return __make_reverse_iterator(__miter_base(__it.base())); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline auto 234s 1949: __miter_base(move_iterator<_Iterator> __it) 234s 1949: -> decltype(__miter_base(__it.base())) 234s 1949: { return __miter_base(__it.base()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: 234s 1949: inline _From 234s 1949: __niter_wrap(_From __from, _To __res) 234s 1949: { return __from + (std::__niter_base(__res) - std::__niter_base(__from)); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _Iterator 234s 1949: __niter_wrap(const _Iterator&, _Iterator __res) 234s 1949: { return __res; } 234s 1949: # 3113 "/usr/include/c++/15/bits/stl_iterator.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 51 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_function.h" 1 3 4 234s 1949: # 63 "/usr/include/c++/15/bits/stl_function.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 116 "/usr/include/c++/15/bits/stl_function.h" 3 4 234s 1949: template 234s 1949: struct unary_function 234s 1949: { 234s 1949: 234s 1949: typedef _Arg argument_type; 234s 1949: 234s 1949: 234s 1949: typedef _Result result_type; 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct binary_function 234s 1949: { 234s 1949: 234s 1949: typedef _Arg1 first_argument_type; 234s 1949: 234s 1949: 234s 1949: typedef _Arg2 second_argument_type; 234s 1949: 234s 1949: 234s 1949: typedef _Result result_type; 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: # 157 "/usr/include/c++/15/bits/stl_function.h" 3 4 234s 1949: struct __is_transparent; 234s 1949: 234s 1949: template 234s 1949: struct plus; 234s 1949: 234s 1949: template 234s 1949: struct minus; 234s 1949: 234s 1949: template 234s 1949: struct multiplies; 234s 1949: 234s 1949: template 234s 1949: struct divides; 234s 1949: 234s 1949: template 234s 1949: struct modulus; 234s 1949: 234s 1949: template 234s 1949: struct negate; 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct plus : public binary_function<_Tp, _Tp, _Tp> 234s 1949: { 234s 1949: 234s 1949: constexpr 234s 1949: _Tp 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x + __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct minus : public binary_function<_Tp, _Tp, _Tp> 234s 1949: { 234s 1949: constexpr 234s 1949: _Tp 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x - __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct multiplies : public binary_function<_Tp, _Tp, _Tp> 234s 1949: { 234s 1949: constexpr 234s 1949: _Tp 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x * __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct divides : public binary_function<_Tp, _Tp, _Tp> 234s 1949: { 234s 1949: constexpr 234s 1949: _Tp 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x / __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct modulus : public binary_function<_Tp, _Tp, _Tp> 234s 1949: { 234s 1949: constexpr 234s 1949: _Tp 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x % __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct negate : public unary_function<_Tp, _Tp> 234s 1949: { 234s 1949: constexpr 234s 1949: _Tp 234s 1949: operator()(const _Tp& __x) const 234s 1949: { return -__x; } 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct plus 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) + std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) + std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) + std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct minus 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) - std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) - std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) - std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct multiplies 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) * std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) * std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) * std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct divides 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) / std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) / std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) / std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct modulus 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) % std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) % std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) % std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct negate 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t) const 234s 1949: noexcept(noexcept(-std::forward<_Tp>(__t))) 234s 1949: -> decltype(-std::forward<_Tp>(__t)) 234s 1949: { return -std::forward<_Tp>(__t); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: # 346 "/usr/include/c++/15/bits/stl_function.h" 3 4 234s 1949: template 234s 1949: struct equal_to; 234s 1949: 234s 1949: template 234s 1949: struct not_equal_to; 234s 1949: 234s 1949: template 234s 1949: struct greater; 234s 1949: 234s 1949: template 234s 1949: struct less; 234s 1949: 234s 1949: template 234s 1949: struct greater_equal; 234s 1949: 234s 1949: template 234s 1949: struct less_equal; 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct equal_to : public binary_function<_Tp, _Tp, bool> 234s 1949: { 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x == __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct not_equal_to : public binary_function<_Tp, _Tp, bool> 234s 1949: { 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x != __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct greater : public binary_function<_Tp, _Tp, bool> 234s 1949: { 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x > __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct less : public binary_function<_Tp, _Tp, bool> 234s 1949: { 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x < __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct greater_equal : public binary_function<_Tp, _Tp, bool> 234s 1949: { 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x >= __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct less_equal : public binary_function<_Tp, _Tp, bool> 234s 1949: { 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x <= __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 234s 1949: { 234s 1949: constexpr bool 234s 1949: operator()(_Tp* __x, _Tp* __y) const noexcept 234s 1949: { 234s 1949: 234s 1949: if (std::__is_constant_evaluated()) 234s 1949: return __x > __y; 234s 1949: 234s 1949: return (unsigned long)__x > (unsigned long)__y; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 234s 1949: { 234s 1949: constexpr bool 234s 1949: operator()(_Tp* __x, _Tp* __y) const noexcept 234s 1949: { 234s 1949: 234s 1949: if (std::__is_constant_evaluated()) 234s 1949: return __x < __y; 234s 1949: 234s 1949: return (unsigned long)__x < (unsigned long)__y; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 234s 1949: { 234s 1949: constexpr bool 234s 1949: operator()(_Tp* __x, _Tp* __y) const noexcept 234s 1949: { 234s 1949: 234s 1949: if (std::__is_constant_evaluated()) 234s 1949: return __x >= __y; 234s 1949: 234s 1949: return (unsigned long)__x >= (unsigned long)__y; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 234s 1949: { 234s 1949: constexpr bool 234s 1949: operator()(_Tp* __x, _Tp* __y) const noexcept 234s 1949: { 234s 1949: 234s 1949: if (std::__is_constant_evaluated()) 234s 1949: return __x <= __y; 234s 1949: 234s 1949: return (unsigned long)__x <= (unsigned long)__y; 234s 1949: } 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct equal_to 234s 1949: { 234s 1949: template 234s 1949: constexpr auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) == std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) == std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct not_equal_to 234s 1949: { 234s 1949: template 234s 1949: constexpr auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) != std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) != std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) != std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct greater 234s 1949: { 234s 1949: template 234s 1949: constexpr auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) > std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) > std::forward<_Up>(__u)) 234s 1949: { 234s 1949: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), 234s 1949: __ptr_cmp<_Tp, _Up>{}); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator()(_Tp* __t, _Up* __u) const noexcept 234s 1949: { return greater>{}(__t, __u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: 234s 1949: private: 234s 1949: template 234s 1949: static constexpr decltype(auto) 234s 1949: _S_cmp(_Tp&& __t, _Up&& __u, false_type) 234s 1949: { return std::forward<_Tp>(__t) > std::forward<_Up>(__u); } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool 234s 1949: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept 234s 1949: { 234s 1949: return greater{}( 234s 1949: static_cast(std::forward<_Tp>(__t)), 234s 1949: static_cast(std::forward<_Up>(__u))); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded2 : true_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded2<_Tp, _Up, __void_t< 234s 1949: decltype(std::declval<_Tp>().operator>(std::declval<_Up>()))>> 234s 1949: : false_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded<_Tp, _Up, __void_t< 234s 1949: decltype(operator>(std::declval<_Tp>(), std::declval<_Up>()))>> 234s 1949: : false_type { }; 234s 1949: 234s 1949: template 234s 1949: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, 234s 1949: is_convertible<_Tp, const volatile void*>, 234s 1949: is_convertible<_Up, const volatile void*>>; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct less 234s 1949: { 234s 1949: template 234s 1949: constexpr auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) < std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) < std::forward<_Up>(__u)) 234s 1949: { 234s 1949: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), 234s 1949: __ptr_cmp<_Tp, _Up>{}); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator()(_Tp* __t, _Up* __u) const noexcept 234s 1949: { return less>{}(__t, __u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: 234s 1949: private: 234s 1949: template 234s 1949: static constexpr decltype(auto) 234s 1949: _S_cmp(_Tp&& __t, _Up&& __u, false_type) 234s 1949: { return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool 234s 1949: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept 234s 1949: { 234s 1949: return less{}( 234s 1949: static_cast(std::forward<_Tp>(__t)), 234s 1949: static_cast(std::forward<_Up>(__u))); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded2 : true_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded2<_Tp, _Up, __void_t< 234s 1949: decltype(std::declval<_Tp>().operator<(std::declval<_Up>()))>> 234s 1949: : false_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded<_Tp, _Up, __void_t< 234s 1949: decltype(operator<(std::declval<_Tp>(), std::declval<_Up>()))>> 234s 1949: : false_type { }; 234s 1949: 234s 1949: template 234s 1949: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, 234s 1949: is_convertible<_Tp, const volatile void*>, 234s 1949: is_convertible<_Up, const volatile void*>>; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct greater_equal 234s 1949: { 234s 1949: template 234s 1949: constexpr auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) >= std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) >= std::forward<_Up>(__u)) 234s 1949: { 234s 1949: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), 234s 1949: __ptr_cmp<_Tp, _Up>{}); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator()(_Tp* __t, _Up* __u) const noexcept 234s 1949: { return greater_equal>{}(__t, __u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: 234s 1949: private: 234s 1949: template 234s 1949: static constexpr decltype(auto) 234s 1949: _S_cmp(_Tp&& __t, _Up&& __u, false_type) 234s 1949: { return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool 234s 1949: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept 234s 1949: { 234s 1949: return greater_equal{}( 234s 1949: static_cast(std::forward<_Tp>(__t)), 234s 1949: static_cast(std::forward<_Up>(__u))); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded2 : true_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded2<_Tp, _Up, __void_t< 234s 1949: decltype(std::declval<_Tp>().operator>=(std::declval<_Up>()))>> 234s 1949: : false_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded<_Tp, _Up, __void_t< 234s 1949: decltype(operator>=(std::declval<_Tp>(), std::declval<_Up>()))>> 234s 1949: : false_type { }; 234s 1949: 234s 1949: template 234s 1949: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, 234s 1949: is_convertible<_Tp, const volatile void*>, 234s 1949: is_convertible<_Up, const volatile void*>>; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct less_equal 234s 1949: { 234s 1949: template 234s 1949: constexpr auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) <= std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) <= std::forward<_Up>(__u)) 234s 1949: { 234s 1949: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), 234s 1949: __ptr_cmp<_Tp, _Up>{}); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator()(_Tp* __t, _Up* __u) const noexcept 234s 1949: { return less_equal>{}(__t, __u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: 234s 1949: private: 234s 1949: template 234s 1949: static constexpr decltype(auto) 234s 1949: _S_cmp(_Tp&& __t, _Up&& __u, false_type) 234s 1949: { return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool 234s 1949: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept 234s 1949: { 234s 1949: return less_equal{}( 234s 1949: static_cast(std::forward<_Tp>(__t)), 234s 1949: static_cast(std::forward<_Up>(__u))); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded2 : true_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded2<_Tp, _Up, __void_t< 234s 1949: decltype(std::declval<_Tp>().operator<=(std::declval<_Up>()))>> 234s 1949: : false_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __not_overloaded<_Tp, _Up, __void_t< 234s 1949: decltype(operator<=(std::declval<_Tp>(), std::declval<_Up>()))>> 234s 1949: : false_type { }; 234s 1949: 234s 1949: template 234s 1949: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, 234s 1949: is_convertible<_Tp, const volatile void*>, 234s 1949: is_convertible<_Up, const volatile void*>>; 234s 1949: }; 234s 1949: # 778 "/usr/include/c++/15/bits/stl_function.h" 3 4 234s 1949: template 234s 1949: struct logical_and; 234s 1949: 234s 1949: template 234s 1949: struct logical_or; 234s 1949: 234s 1949: template 234s 1949: struct logical_not; 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct logical_and : public binary_function<_Tp, _Tp, bool> 234s 1949: { 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x && __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct logical_or : public binary_function<_Tp, _Tp, bool> 234s 1949: { 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x || __y; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct logical_not : public unary_function<_Tp, bool> 234s 1949: { 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const _Tp& __x) const 234s 1949: { return !__x; } 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct logical_and 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) && std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) && std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) && std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct logical_or 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) || std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) || std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) || std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct logical_not 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t) const 234s 1949: noexcept(noexcept(!std::forward<_Tp>(__t))) 234s 1949: -> decltype(!std::forward<_Tp>(__t)) 234s 1949: { return !std::forward<_Tp>(__t); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct bit_and; 234s 1949: 234s 1949: template 234s 1949: struct bit_or; 234s 1949: 234s 1949: template 234s 1949: struct bit_xor; 234s 1949: 234s 1949: template 234s 1949: struct bit_not; 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct bit_and : public binary_function<_Tp, _Tp, _Tp> 234s 1949: { 234s 1949: constexpr 234s 1949: _Tp 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x & __y; } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct bit_or : public binary_function<_Tp, _Tp, _Tp> 234s 1949: { 234s 1949: constexpr 234s 1949: _Tp 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x | __y; } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> 234s 1949: { 234s 1949: constexpr 234s 1949: _Tp 234s 1949: operator()(const _Tp& __x, const _Tp& __y) const 234s 1949: { return __x ^ __y; } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct bit_not : public unary_function<_Tp, _Tp> 234s 1949: { 234s 1949: constexpr 234s 1949: _Tp 234s 1949: operator()(const _Tp& __x) const 234s 1949: { return ~__x; } 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: template <> 234s 1949: struct bit_and 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) & std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) & std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) & std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: template <> 234s 1949: struct bit_or 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) | std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) | std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) | std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: template <> 234s 1949: struct bit_xor 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t, _Up&& __u) const 234s 1949: noexcept(noexcept(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u))) 234s 1949: -> decltype(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u)) 234s 1949: { return std::forward<_Tp>(__t) ^ std::forward<_Up>(__u); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: template <> 234s 1949: struct bit_not 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: auto 234s 1949: operator()(_Tp&& __t) const 234s 1949: noexcept(noexcept(~std::forward<_Tp>(__t))) 234s 1949: -> decltype(~std::forward<_Tp>(__t)) 234s 1949: { return ~std::forward<_Tp>(__t); } 234s 1949: 234s 1949: typedef __is_transparent is_transparent; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: # 1020 "/usr/include/c++/15/bits/stl_function.h" 3 4 234s 1949: template 234s 1949: class unary_negate 234s 1949: : public unary_function 234s 1949: { 234s 1949: protected: 234s 1949: _Predicate _M_pred; 234s 1949: 234s 1949: public: 234s 1949: constexpr 234s 1949: explicit 234s 1949: unary_negate(const _Predicate& __x) : _M_pred(__x) { } 234s 1949: 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const typename _Predicate::argument_type& __x) const 234s 1949: { return !_M_pred(__x); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: constexpr 234s 1949: inline unary_negate<_Predicate> 234s 1949: not1(const _Predicate& __pred) 234s 1949: { return unary_negate<_Predicate>(__pred); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class binary_negate 234s 1949: : public binary_function 234s 1949: { 234s 1949: protected: 234s 1949: _Predicate _M_pred; 234s 1949: 234s 1949: public: 234s 1949: constexpr 234s 1949: explicit 234s 1949: binary_negate(const _Predicate& __x) : _M_pred(__x) { } 234s 1949: 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(const typename _Predicate::first_argument_type& __x, 234s 1949: const typename _Predicate::second_argument_type& __y) const 234s 1949: { return !_M_pred(__x, __y); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: constexpr 234s 1949: inline binary_negate<_Predicate> 234s 1949: not2(const _Predicate& __pred) 234s 1949: { return binary_negate<_Predicate>(__pred); } 234s 1949: # 1101 "/usr/include/c++/15/bits/stl_function.h" 3 4 234s 1949: template 234s 1949: class pointer_to_unary_function : public unary_function<_Arg, _Result> 234s 1949: { 234s 1949: protected: 234s 1949: _Result (*_M_ptr)(_Arg); 234s 1949: 234s 1949: public: 234s 1949: pointer_to_unary_function() { } 234s 1949: 234s 1949: explicit 234s 1949: pointer_to_unary_function(_Result (*__x)(_Arg)) 234s 1949: : _M_ptr(__x) { } 234s 1949: 234s 1949: _Result 234s 1949: operator()(_Arg __x) const 234s 1949: { return _M_ptr(__x); } 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) 234s 1949: inline pointer_to_unary_function<_Arg, _Result> 234s 1949: ptr_fun(_Result (*__x)(_Arg)) 234s 1949: { return pointer_to_unary_function<_Arg, _Result>(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class pointer_to_binary_function 234s 1949: : public binary_function<_Arg1, _Arg2, _Result> 234s 1949: { 234s 1949: protected: 234s 1949: _Result (*_M_ptr)(_Arg1, _Arg2); 234s 1949: 234s 1949: public: 234s 1949: pointer_to_binary_function() { } 234s 1949: 234s 1949: explicit 234s 1949: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 234s 1949: : _M_ptr(__x) { } 234s 1949: 234s 1949: _Result 234s 1949: operator()(_Arg1 __x, _Arg2 __y) const 234s 1949: { return _M_ptr(__x, __y); } 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) 234s 1949: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> 234s 1949: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) 234s 1949: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Identity 234s 1949: : public unary_function<_Tp, _Tp> 234s 1949: { 234s 1949: _Tp& 234s 1949: operator()(_Tp& __x) const 234s 1949: { return __x; } 234s 1949: 234s 1949: const _Tp& 234s 1949: operator()(const _Tp& __x) const 234s 1949: { return __x; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template struct _Identity : _Identity<_Tp> { }; 234s 1949: 234s 1949: template 234s 1949: struct _Select1st 234s 1949: : public unary_function<_Pair, typename _Pair::first_type> 234s 1949: { 234s 1949: typename _Pair::first_type& 234s 1949: operator()(_Pair& __x) const 234s 1949: { return __x.first; } 234s 1949: 234s 1949: const typename _Pair::first_type& 234s 1949: operator()(const _Pair& __x) const 234s 1949: { return __x.first; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: typename _Pair2::first_type& 234s 1949: operator()(_Pair2& __x) const 234s 1949: { return __x.first; } 234s 1949: 234s 1949: template 234s 1949: const typename _Pair2::first_type& 234s 1949: operator()(const _Pair2& __x) const 234s 1949: { return __x.first; } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Select2nd 234s 1949: : public unary_function<_Pair, typename _Pair::second_type> 234s 1949: { 234s 1949: typename _Pair::second_type& 234s 1949: operator()(_Pair& __x) const 234s 1949: { return __x.second; } 234s 1949: 234s 1949: const typename _Pair::second_type& 234s 1949: operator()(const _Pair& __x) const 234s 1949: { return __x.second; } 234s 1949: }; 234s 1949: # 1228 "/usr/include/c++/15/bits/stl_function.h" 3 4 234s 1949: template 234s 1949: class mem_fun_t : public unary_function<_Tp*, _Ret> 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: mem_fun_t(_Ret (_Tp::*__pf)()) 234s 1949: : _M_f(__pf) { } 234s 1949: 234s 1949: _Ret 234s 1949: operator()(_Tp* __p) const 234s 1949: { return (__p->*_M_f)(); } 234s 1949: 234s 1949: private: 234s 1949: _Ret (_Tp::*_M_f)(); 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class const_mem_fun_t : public unary_function 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: const_mem_fun_t(_Ret (_Tp::*__pf)() const) 234s 1949: : _M_f(__pf) { } 234s 1949: 234s 1949: _Ret 234s 1949: operator()(const _Tp* __p) const 234s 1949: { return (__p->*_M_f)(); } 234s 1949: 234s 1949: private: 234s 1949: _Ret (_Tp::*_M_f)() const; 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class mem_fun_ref_t : public unary_function<_Tp, _Ret> 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: mem_fun_ref_t(_Ret (_Tp::*__pf)()) 234s 1949: : _M_f(__pf) { } 234s 1949: 234s 1949: _Ret 234s 1949: operator()(_Tp& __r) const 234s 1949: { return (__r.*_M_f)(); } 234s 1949: 234s 1949: private: 234s 1949: _Ret (_Tp::*_M_f)(); 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) 234s 1949: : _M_f(__pf) { } 234s 1949: 234s 1949: _Ret 234s 1949: operator()(const _Tp& __r) const 234s 1949: { return (__r.*_M_f)(); } 234s 1949: 234s 1949: private: 234s 1949: _Ret (_Tp::*_M_f)() const; 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) 234s 1949: : _M_f(__pf) { } 234s 1949: 234s 1949: _Ret 234s 1949: operator()(_Tp* __p, _Arg __x) const 234s 1949: { return (__p->*_M_f)(__x); } 234s 1949: 234s 1949: private: 234s 1949: _Ret (_Tp::*_M_f)(_Arg); 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class const_mem_fun1_t : public binary_function 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) 234s 1949: : _M_f(__pf) { } 234s 1949: 234s 1949: _Ret 234s 1949: operator()(const _Tp* __p, _Arg __x) const 234s 1949: { return (__p->*_M_f)(__x); } 234s 1949: 234s 1949: private: 234s 1949: _Ret (_Tp::*_M_f)(_Arg) const; 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) 234s 1949: : _M_f(__pf) { } 234s 1949: 234s 1949: _Ret 234s 1949: operator()(_Tp& __r, _Arg __x) const 234s 1949: { return (__r.*_M_f)(__x); } 234s 1949: 234s 1949: private: 234s 1949: _Ret (_Tp::*_M_f)(_Arg); 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) 234s 1949: : _M_f(__pf) { } 234s 1949: 234s 1949: _Ret 234s 1949: operator()(const _Tp& __r, _Arg __x) const 234s 1949: { return (__r.*_M_f)(__x); } 234s 1949: 234s 1949: private: 234s 1949: _Ret (_Tp::*_M_f)(_Arg) const; 234s 1949: } __attribute__ ((__deprecated__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 234s 1949: inline mem_fun_t<_Ret, _Tp> 234s 1949: mem_fun(_Ret (_Tp::*__f)()) 234s 1949: { return mem_fun_t<_Ret, _Tp>(__f); } 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 234s 1949: inline const_mem_fun_t<_Ret, _Tp> 234s 1949: mem_fun(_Ret (_Tp::*__f)() const) 234s 1949: { return const_mem_fun_t<_Ret, _Tp>(__f); } 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 234s 1949: inline mem_fun_ref_t<_Ret, _Tp> 234s 1949: mem_fun_ref(_Ret (_Tp::*__f)()) 234s 1949: { return mem_fun_ref_t<_Ret, _Tp>(__f); } 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 234s 1949: inline const_mem_fun_ref_t<_Ret, _Tp> 234s 1949: mem_fun_ref(_Ret (_Tp::*__f)() const) 234s 1949: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 234s 1949: inline mem_fun1_t<_Ret, _Tp, _Arg> 234s 1949: mem_fun(_Ret (_Tp::*__f)(_Arg)) 234s 1949: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 234s 1949: inline const_mem_fun1_t<_Ret, _Tp, _Arg> 234s 1949: mem_fun(_Ret (_Tp::*__f)(_Arg) const) 234s 1949: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 234s 1949: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> 234s 1949: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) 234s 1949: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 234s 1949: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> 234s 1949: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) 234s 1949: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: struct __has_is_transparent 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __has_is_transparent<_Func, _SfinaeType, 234s 1949: __void_t> 234s 1949: { typedef void type; }; 234s 1949: 234s 1949: template 234s 1949: using __has_is_transparent_t 234s 1949: = typename __has_is_transparent<_Func, _SfinaeType>::type; 234s 1949: # 1437 "/usr/include/c++/15/bits/stl_function.h" 3 4 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/backward/binders.h" 1 3 4 234s 1949: # 60 "/usr/include/c++/15/backward/binders.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 107 "/usr/include/c++/15/backward/binders.h" 3 4 234s 1949: template 234s 1949: class binder1st 234s 1949: : public unary_function 234s 1949: { 234s 1949: protected: 234s 1949: _Operation op; 234s 1949: typename _Operation::first_argument_type value; 234s 1949: 234s 1949: public: 234s 1949: binder1st(const _Operation& __x, 234s 1949: const typename _Operation::first_argument_type& __y) 234s 1949: : op(__x), value(__y) { } 234s 1949: 234s 1949: typename _Operation::result_type 234s 1949: operator()(const typename _Operation::second_argument_type& __x) const 234s 1949: { return op(value, __x); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: typename _Operation::result_type 234s 1949: operator()(typename _Operation::second_argument_type& __x) const 234s 1949: { return op(value, __x); } 234s 1949: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) 234s 1949: inline binder1st<_Operation> 234s 1949: bind1st(const _Operation& __fn, const _Tp& __x) 234s 1949: { 234s 1949: typedef typename _Operation::first_argument_type _Arg1_type; 234s 1949: return binder1st<_Operation>(__fn, _Arg1_type(__x)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class binder2nd 234s 1949: : public unary_function 234s 1949: { 234s 1949: protected: 234s 1949: _Operation op; 234s 1949: typename _Operation::second_argument_type value; 234s 1949: 234s 1949: public: 234s 1949: binder2nd(const _Operation& __x, 234s 1949: const typename _Operation::second_argument_type& __y) 234s 1949: : op(__x), value(__y) { } 234s 1949: 234s 1949: typename _Operation::result_type 234s 1949: operator()(const typename _Operation::first_argument_type& __x) const 234s 1949: { return op(__x, value); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: typename _Operation::result_type 234s 1949: operator()(typename _Operation::first_argument_type& __x) const 234s 1949: { return op(__x, value); } 234s 1949: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) 234s 1949: inline binder2nd<_Operation> 234s 1949: bind2nd(const _Operation& __fn, const _Tp& __x) 234s 1949: { 234s 1949: typedef typename _Operation::second_argument_type _Arg2_type; 234s 1949: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 1442 "/usr/include/c++/15/bits/stl_function.h" 2 3 4 234s 1949: # 52 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/ext/numeric_traits.h" 1 3 4 234s 1949: # 39 "/usr/include/c++/15/ext/numeric_traits.h" 3 4 234s 1949: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 52 "/usr/include/c++/15/ext/numeric_traits.h" 3 4 234s 1949: template 234s 1949: struct __is_integer_nonstrict 234s 1949: : public std::__is_integer<_Tp> 234s 1949: { 234s 1949: using std::__is_integer<_Tp>::__value; 234s 1949: 234s 1949: 234s 1949: enum { __width = __value ? sizeof(_Tp) * 8 : 0 }; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __numeric_traits_integer 234s 1949: { 234s 1949: 234s 1949: static_assert(__is_integer_nonstrict<_Value>::__value, 234s 1949: "invalid specialization"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const bool __is_signed = (_Value)(-1) < 0; 234s 1949: static const int __digits 234s 1949: = __is_integer_nonstrict<_Value>::__width - __is_signed; 234s 1949: 234s 1949: 234s 1949: static const _Value __max = __is_signed 234s 1949: ? (((((_Value)1 << (__digits - 1)) - 1) << 1) + 1) 234s 1949: : ~(_Value)0; 234s 1949: static const _Value __min = __is_signed ? -__max - 1 : (_Value)0; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: const _Value __numeric_traits_integer<_Value>::__min; 234s 1949: 234s 1949: template 234s 1949: const _Value __numeric_traits_integer<_Value>::__max; 234s 1949: 234s 1949: template 234s 1949: const bool __numeric_traits_integer<_Value>::__is_signed; 234s 1949: 234s 1949: template 234s 1949: const int __numeric_traits_integer<_Value>::__digits; 234s 1949: # 139 "/usr/include/c++/15/ext/numeric_traits.h" 3 4 234s 1949: template 234s 1949: using __int_traits = __numeric_traits_integer<_Tp>; 234s 1949: # 159 "/usr/include/c++/15/ext/numeric_traits.h" 3 4 234s 1949: template 234s 1949: struct __numeric_traits_floating 234s 1949: { 234s 1949: 234s 1949: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 53) * 643L / 2136); 234s 1949: 234s 1949: 234s 1949: static const bool __is_signed = true; 234s 1949: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 15); 234s 1949: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 308); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: const int __numeric_traits_floating<_Value>::__max_digits10; 234s 1949: 234s 1949: template 234s 1949: const bool __numeric_traits_floating<_Value>::__is_signed; 234s 1949: 234s 1949: template 234s 1949: const int __numeric_traits_floating<_Value>::__digits10; 234s 1949: 234s 1949: template 234s 1949: const int __numeric_traits_floating<_Value>::__max_exponent10; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __numeric_traits 234s 1949: : public __numeric_traits_integer<_Value> 234s 1949: { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __numeric_traits 234s 1949: : public __numeric_traits_floating 234s 1949: { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __numeric_traits 234s 1949: : public __numeric_traits_floating 234s 1949: { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __numeric_traits 234s 1949: : public __numeric_traits_floating 234s 1949: { }; 234s 1949: # 240 "/usr/include/c++/15/ext/numeric_traits.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 53 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_algobase.h" 1 3 4 234s 1949: # 69 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/debug/debug.h" 1 3 4 234s 1949: # 48 "/usr/include/c++/15/debug/debug.h" 3 4 234s 1949: namespace std 234s 1949: { 234s 1949: namespace __debug { } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace __gnu_debug 234s 1949: { 234s 1949: using namespace std::__debug; 234s 1949: 234s 1949: template 234s 1949: struct _Safe_iterator; 234s 1949: } 234s 1949: # 70 "/usr/include/c++/15/bits/stl_algobase.h" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/predefined_ops.h" 1 3 4 234s 1949: # 35 "/usr/include/c++/15/bits/predefined_ops.h" 3 4 234s 1949: namespace __gnu_cxx 234s 1949: { 234s 1949: namespace __ops 234s 1949: { 234s 1949: struct _Iter_less_iter 234s 1949: { 234s 1949: template 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(_Iterator1 __it1, _Iterator2 __it2) const 234s 1949: { return *__it1 < *__it2; } 234s 1949: }; 234s 1949: 234s 1949: constexpr 234s 1949: inline _Iter_less_iter 234s 1949: __iter_less_iter() 234s 1949: { return _Iter_less_iter(); } 234s 1949: 234s 1949: struct _Iter_less_val 234s 1949: { 234s 1949: 234s 1949: constexpr _Iter_less_val() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Iter_less_val(_Iter_less_iter) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Iterator __it, _Value& __val) const 234s 1949: { return *__it < __val; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: inline _Iter_less_val 234s 1949: __iter_less_val() 234s 1949: { return _Iter_less_val(); } 234s 1949: 234s 1949: 234s 1949: inline _Iter_less_val 234s 1949: __iter_comp_val(_Iter_less_iter) 234s 1949: { return _Iter_less_val(); } 234s 1949: 234s 1949: struct _Val_less_iter 234s 1949: { 234s 1949: 234s 1949: constexpr _Val_less_iter() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Val_less_iter(_Iter_less_iter) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Value& __val, _Iterator __it) const 234s 1949: { return __val < *__it; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: inline _Val_less_iter 234s 1949: __val_less_iter() 234s 1949: { return _Val_less_iter(); } 234s 1949: 234s 1949: 234s 1949: inline _Val_less_iter 234s 1949: __val_comp_iter(_Iter_less_iter) 234s 1949: { return _Val_less_iter(); } 234s 1949: 234s 1949: struct _Iter_equal_to_iter 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Iterator1 __it1, _Iterator2 __it2) const 234s 1949: { return *__it1 == *__it2; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: inline _Iter_equal_to_iter 234s 1949: __iter_equal_to_iter() 234s 1949: { return _Iter_equal_to_iter(); } 234s 1949: 234s 1949: struct _Iter_equal_to_val 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Iterator __it, _Value& __val) const 234s 1949: { return *__it == __val; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: inline _Iter_equal_to_val 234s 1949: __iter_equal_to_val() 234s 1949: { return _Iter_equal_to_val(); } 234s 1949: 234s 1949: 234s 1949: inline _Iter_equal_to_val 234s 1949: __iter_comp_val(_Iter_equal_to_iter) 234s 1949: { return _Iter_equal_to_val(); } 234s 1949: 234s 1949: template 234s 1949: struct _Iter_comp_iter 234s 1949: { 234s 1949: _Compare _M_comp; 234s 1949: 234s 1949: explicit constexpr 234s 1949: _Iter_comp_iter(_Compare __comp) 234s 1949: : _M_comp(std::move(__comp)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: bool 234s 1949: operator()(_Iterator1 __it1, _Iterator2 __it2) 234s 1949: { return bool(_M_comp(*__it1, *__it2)); } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: inline _Iter_comp_iter<_Compare> 234s 1949: __iter_comp_iter(_Compare __comp) 234s 1949: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } 234s 1949: 234s 1949: template 234s 1949: struct _Iter_comp_val 234s 1949: { 234s 1949: _Compare _M_comp; 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Iter_comp_val(_Compare __comp) 234s 1949: : _M_comp(std::move(__comp)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) 234s 1949: : _M_comp(__comp._M_comp) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) 234s 1949: : _M_comp(std::move(__comp._M_comp)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Iterator __it, _Value& __val) 234s 1949: { return bool(_M_comp(*__it, __val)); } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Iter_comp_val<_Compare> 234s 1949: __iter_comp_val(_Compare __comp) 234s 1949: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Iter_comp_val<_Compare> 234s 1949: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) 234s 1949: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 234s 1949: 234s 1949: template 234s 1949: struct _Val_comp_iter 234s 1949: { 234s 1949: _Compare _M_comp; 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Val_comp_iter(_Compare __comp) 234s 1949: : _M_comp(std::move(__comp)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) 234s 1949: : _M_comp(__comp._M_comp) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) 234s 1949: : _M_comp(std::move(__comp._M_comp)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Value& __val, _Iterator __it) 234s 1949: { return bool(_M_comp(__val, *__it)); } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Val_comp_iter<_Compare> 234s 1949: __val_comp_iter(_Compare __comp) 234s 1949: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Val_comp_iter<_Compare> 234s 1949: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) 234s 1949: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 234s 1949: 234s 1949: template 234s 1949: struct _Iter_equals_val 234s 1949: { 234s 1949: _Value& _M_value; 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Iter_equals_val(_Value& __value) 234s 1949: : _M_value(__value) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Iterator __it) 234s 1949: { return *__it == _M_value; } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Iter_equals_val<_Value> 234s 1949: __iter_equals_val(_Value& __val) 234s 1949: { return _Iter_equals_val<_Value>(__val); } 234s 1949: 234s 1949: template 234s 1949: struct _Iter_equals_iter 234s 1949: { 234s 1949: _Iterator1 _M_it1; 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Iter_equals_iter(_Iterator1 __it1) 234s 1949: : _M_it1(__it1) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Iterator2 __it2) 234s 1949: { return *__it2 == *_M_it1; } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Iter_equals_iter<_Iterator> 234s 1949: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) 234s 1949: { return _Iter_equals_iter<_Iterator>(__it); } 234s 1949: 234s 1949: template 234s 1949: struct _Iter_pred 234s 1949: { 234s 1949: _Predicate _M_pred; 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Iter_pred(_Predicate __pred) 234s 1949: : _M_pred(std::move(__pred)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Iterator __it) 234s 1949: { return bool(_M_pred(*__it)); } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Iter_pred<_Predicate> 234s 1949: __pred_iter(_Predicate __pred) 234s 1949: { return _Iter_pred<_Predicate>(std::move(__pred)); } 234s 1949: 234s 1949: template 234s 1949: struct _Iter_comp_to_val 234s 1949: { 234s 1949: _Compare _M_comp; 234s 1949: _Value& _M_value; 234s 1949: 234s 1949: 234s 1949: _Iter_comp_to_val(_Compare __comp, _Value& __value) 234s 1949: : _M_comp(std::move(__comp)), _M_value(__value) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Iterator __it) 234s 1949: { return bool(_M_comp(*__it, _M_value)); } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: _Iter_comp_to_val<_Compare, _Value> 234s 1949: 234s 1949: __iter_comp_val(_Compare __comp, _Value &__val) 234s 1949: { 234s 1949: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: struct _Iter_comp_to_iter 234s 1949: { 234s 1949: _Compare _M_comp; 234s 1949: _Iterator1 _M_it1; 234s 1949: 234s 1949: 234s 1949: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) 234s 1949: : _M_comp(std::move(__comp)), _M_it1(__it1) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Iterator2 __it2) 234s 1949: { return bool(_M_comp(*__it2, *_M_it1)); } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Iter_comp_to_iter<_Compare, _Iterator> 234s 1949: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) 234s 1949: { 234s 1949: return _Iter_comp_to_iter<_Compare, _Iterator>( 234s 1949: std::move(__comp._M_comp), __it); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: struct _Iter_negate 234s 1949: { 234s 1949: _Predicate _M_pred; 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: _Iter_negate(_Predicate __pred) 234s 1949: : _M_pred(std::move(__pred)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: operator()(_Iterator __it) 234s 1949: { return !bool(_M_pred(*__it)); } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Iter_negate<_Predicate> 234s 1949: __negate(_Iter_pred<_Predicate> __pred) 234s 1949: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } 234s 1949: 234s 1949: } 234s 1949: } 234s 1949: # 72 "/usr/include/c++/15/bits/stl_algobase.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bit" 1 3 4 234s 1949: # 38 "/usr/include/c++/15/bit" 3 4 234s 1949: # 1 "/usr/include/c++/15/concepts" 1 3 4 234s 1949: # 38 "/usr/include/c++/15/concepts" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 39 "/usr/include/c++/15/concepts" 2 3 4 234s 1949: # 39 "/usr/include/c++/15/bit" 2 3 4 234s 1949: # 63 "/usr/include/c++/15/bit" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 64 "/usr/include/c++/15/bit" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 157 "/usr/include/c++/15/bit" 3 4 234s 1949: template 234s 1949: constexpr _Tp 234s 1949: __rotl(_Tp __x, int __s) noexcept 234s 1949: { 234s 1949: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; 234s 1949: if ((_Nd & (_Nd - 1)) == 0) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: constexpr unsigned __uNd = _Nd; 234s 1949: const unsigned __r = __s; 234s 1949: return (__x << (__r % __uNd)) | (__x >> ((-__r) % __uNd)); 234s 1949: } 234s 1949: const int __r = __s % _Nd; 234s 1949: if (__r == 0) 234s 1949: return __x; 234s 1949: else if (__r > 0) 234s 1949: return (__x << __r) | (__x >> ((_Nd - __r) % _Nd)); 234s 1949: else 234s 1949: return (__x >> -__r) | (__x << ((_Nd + __r) % _Nd)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp 234s 1949: __rotr(_Tp __x, int __s) noexcept 234s 1949: { 234s 1949: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; 234s 1949: if ((_Nd & (_Nd - 1)) == 0) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: constexpr unsigned __uNd = _Nd; 234s 1949: const unsigned __r = __s; 234s 1949: return (__x >> (__r % __uNd)) | (__x << ((-__r) % __uNd)); 234s 1949: } 234s 1949: const int __r = __s % _Nd; 234s 1949: if (__r == 0) 234s 1949: return __x; 234s 1949: else if (__r > 0) 234s 1949: return (__x >> __r) | (__x << ((_Nd - __r) % _Nd)); 234s 1949: else 234s 1949: return (__x << -__r) | (__x >> ((_Nd + __r) % _Nd)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr int 234s 1949: __countl_zero(_Tp __x) noexcept 234s 1949: { 234s 1949: using __gnu_cxx::__int_traits; 234s 1949: constexpr auto _Nd = __int_traits<_Tp>::__digits; 234s 1949: 234s 1949: 234s 1949: return __builtin_clzg(__x, _Nd); 234s 1949: # 249 "/usr/include/c++/15/bit" 3 4 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr int 234s 1949: __countl_one(_Tp __x) noexcept 234s 1949: { 234s 1949: return std::__countl_zero<_Tp>((_Tp)~__x); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr int 234s 1949: __countr_zero(_Tp __x) noexcept 234s 1949: { 234s 1949: using __gnu_cxx::__int_traits; 234s 1949: constexpr auto _Nd = __int_traits<_Tp>::__digits; 234s 1949: 234s 1949: 234s 1949: return __builtin_ctzg(__x, _Nd); 234s 1949: # 294 "/usr/include/c++/15/bit" 3 4 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr int 234s 1949: __countr_one(_Tp __x) noexcept 234s 1949: { 234s 1949: return std::__countr_zero((_Tp)~__x); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr int 234s 1949: __popcount(_Tp __x) noexcept 234s 1949: { 234s 1949: 234s 1949: return __builtin_popcountg(__x); 234s 1949: # 334 "/usr/include/c++/15/bit" 3 4 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: __has_single_bit(_Tp __x) noexcept 234s 1949: { return std::__popcount(__x) == 1; } 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp 234s 1949: __bit_ceil(_Tp __x) noexcept 234s 1949: { 234s 1949: using __gnu_cxx::__int_traits; 234s 1949: constexpr auto _Nd = __int_traits<_Tp>::__digits; 234s 1949: if (__x == 0 || __x == 1) 234s 1949: return 1; 234s 1949: auto __shift_exponent = _Nd - std::__countl_zero((_Tp)(__x - 1u)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (!std::__is_constant_evaluated()) 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__shift_exponent != __int_traits<_Tp>::__digits)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: } 234s 1949: 234s 1949: using __promoted_type = decltype(__x << 1); 234s 1949: if (!is_same<__promoted_type, _Tp>::value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const int __extra_exp = sizeof(__promoted_type) / sizeof(_Tp) / 2; 234s 1949: __shift_exponent |= (__shift_exponent & _Nd) << __extra_exp; 234s 1949: } 234s 1949: return (_Tp)1u << __shift_exponent; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp 234s 1949: __bit_floor(_Tp __x) noexcept 234s 1949: { 234s 1949: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; 234s 1949: if (__x == 0) 234s 1949: return 0; 234s 1949: return (_Tp)1u << (_Nd - std::__countl_zero((_Tp)(__x >> 1))); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr int 234s 1949: __bit_width(_Tp __x) noexcept 234s 1949: { 234s 1949: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; 234s 1949: return _Nd - std::__countl_zero(__x); 234s 1949: } 234s 1949: # 496 "/usr/include/c++/15/bit" 3 4 234s 1949: 234s 1949: } 234s 1949: # 77 "/usr/include/c++/15/bits/stl_algobase.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: inline int 234s 1949: __memcmp(const _Tp* __first1, const _Up* __first2, size_t __num) 234s 1949: { 234s 1949: 234s 1949: static_assert(sizeof(_Tp) == sizeof(_Up), "can be compared with memcmp"); 234s 1949: # 109 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: return __builtin_memcmp(__first1, __first2, sizeof(_Tp) * __num); 234s 1949: } 234s 1949: # 153 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 186 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: swap(*__a, *__b); 234s 1949: 234s 1949: } 234s 1949: # 202 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator2 234s 1949: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: for (; __first1 != __last1; ++__first1, (void)++__first2) 234s 1949: std::iter_swap(__first1, __first2); 234s 1949: return __first2; 234s 1949: } 234s 1949: # 231 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline const _Tp& 234s 1949: min(const _Tp& __a, const _Tp& __b) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__b < __a) 234s 1949: return __b; 234s 1949: return __a; 234s 1949: } 234s 1949: # 255 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline const _Tp& 234s 1949: max(const _Tp& __a, const _Tp& __b) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__a < __b) 234s 1949: return __b; 234s 1949: return __a; 234s 1949: } 234s 1949: # 279 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline const _Tp& 234s 1949: min(const _Tp& __a, const _Tp& __b, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: if (__comp(__b, __a)) 234s 1949: return __b; 234s 1949: return __a; 234s 1949: } 234s 1949: # 301 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline const _Tp& 234s 1949: max(const _Tp& __a, const _Tp& __b, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: if (__comp(__a, __b)) 234s 1949: return __b; 234s 1949: return __a; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Deque_iterator; 234s 1949: 234s 1949: struct _Bit_iterator; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct char_traits; 234s 1949: 234s 1949: template 234s 1949: class istreambuf_iterator; 234s 1949: 234s 1949: template 234s 1949: class ostreambuf_iterator; 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 234s 1949: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 234s 1949: __copy_move_a2(_CharT*, _CharT*, 234s 1949: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 234s 1949: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 234s 1949: __copy_move_a2(const _CharT*, const _CharT*, 234s 1949: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 234s 1949: _CharT*>::__type 234s 1949: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, 234s 1949: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if< 234s 1949: __is_char<_CharT>::__value, 234s 1949: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type 234s 1949: __copy_move_a2( 234s 1949: istreambuf_iterator<_CharT, char_traits<_CharT> >, 234s 1949: istreambuf_iterator<_CharT, char_traits<_CharT> >, 234s 1949: std::_Deque_iterator<_CharT, _CharT&, _CharT*>); 234s 1949: # 395 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: inline void 234s 1949: __assign_one(_OutIter& __out, _InIter& __in) 234s 1949: { 234s 1949: 234s 1949: if constexpr (_IsMove) 234s 1949: *__out = std::move(*__in); 234s 1949: else 234s 1949: 234s 1949: *__out = *__in; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _OutIter 234s 1949: __copy_move_a2(_InIter __first, _Sent __last, _OutIter __result) 234s 1949: { 234s 1949: typedef __decltype(*__first) _InRef; 234s 1949: typedef __decltype(*__result) _OutRef; 234s 1949: if constexpr (!__is_trivially_assignable(_OutRef, _InRef)) 234s 1949: { } 234s 1949: else if (std::__is_constant_evaluated()) 234s 1949: { } 234s 1949: else if constexpr (__memcpyable<_OutIter, _InIter>::__value) 234s 1949: { 234s 1949: ptrdiff_t __n = std::distance(__first, __last); 234s 1949: if (__builtin_expect(__n > 1, true)) 234s 1949: { 234s 1949: __builtin_memmove(__result, 234s 1949: __first, 234s 1949: __n * sizeof(*__first)); 234s 1949: __result += __n; 234s 1949: } 234s 1949: else if (__n == 1) 234s 1949: { 234s 1949: std::__assign_one<_IsMove>(__result, __first); 234s 1949: ++__result; 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: # 461 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: for (; __first != __last; ++__result, (void)++__first) 234s 1949: std::__assign_one<_IsMove>(__result, __first); 234s 1949: return __result; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: template 234s 1949: _OI 234s 1949: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 234s 1949: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 234s 1949: _OI); 234s 1949: 234s 1949: template 234s 1949: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 234s 1949: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr>, 234s 1949: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 234s 1949: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if< 234s 1949: __is_random_access_iter<_II>::__value, 234s 1949: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 234s 1949: __copy_move_a1(_II, _II, std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _OI 234s 1949: __copy_move_a1(_II __first, _II __last, _OI __result) 234s 1949: { return std::__copy_move_a2<_IsMove>(__first, __last, __result); } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _OI 234s 1949: __copy_move_a(_II __first, _II __last, _OI __result) 234s 1949: { 234s 1949: return std::__niter_wrap(__result, 234s 1949: std::__copy_move_a1<_IsMove>(std::__niter_base(__first), 234s 1949: std::__niter_base(__last), 234s 1949: std::__niter_base(__result))); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OI 234s 1949: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 234s 1949: _OI); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 234s 1949: __copy_move_a(_II, _II, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 234s 1949: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: __copy_n_a(_InputIterator __first, _Size __n, _OutputIterator __result, 234s 1949: bool) 234s 1949: { 234s 1949: typedef __decltype(*__first) _InRef; 234s 1949: typedef __decltype(*__result) _OutRef; 234s 1949: if constexpr (!__is_trivially_assignable(_OutRef, _InRef)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: else if constexpr (__memcpyable<_OutputIterator, 234s 1949: _InputIterator>::__value) 234s 1949: { 234s 1949: if (__builtin_expect(__n > 1, true)) 234s 1949: { 234s 1949: __builtin_memmove(__result, 234s 1949: __first, 234s 1949: __n * sizeof(*__first)); 234s 1949: __result += __n; 234s 1949: } 234s 1949: else if (__n == 1) 234s 1949: *__result++ = *__first; 234s 1949: return __result; 234s 1949: } 234s 1949: # 581 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: if (__n > 0) 234s 1949: { 234s 1949: while (true) 234s 1949: { 234s 1949: *__result = *__first; 234s 1949: ++__result; 234s 1949: if (--__n > 0) 234s 1949: ++__first; 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if< 234s 1949: __is_char<_CharT>::__value, _CharT*>::__type 234s 1949: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, 234s 1949: _Size, _CharT*, bool); 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if< 234s 1949: __is_char<_CharT>::__value, 234s 1949: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type 234s 1949: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, _Size, 234s 1949: std::_Deque_iterator<_CharT, _CharT&, _CharT*>, 234s 1949: bool); 234s 1949: # 630 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OI 234s 1949: copy(_II __first, _II __last, _OI __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__copy_move_a<__is_move_iterator<_II>::__value> 234s 1949: (std::__miter_base(__first), std::__miter_base(__last), __result); 234s 1949: } 234s 1949: # 663 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OI 234s 1949: move(_II __first, _II __last, _OI __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__copy_move_a(std::__miter_base(__first), 234s 1949: std::__miter_base(__last), __result); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: 234s 1949: inline _BI2 234s 1949: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) 234s 1949: { 234s 1949: typedef __decltype(*__first) _InRef; 234s 1949: typedef __decltype(*__result) _OutRef; 234s 1949: if constexpr (!__is_trivially_assignable(_OutRef, _InRef)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: else if constexpr (__memcpyable<_BI2, _BI1>::__value) 234s 1949: { 234s 1949: ptrdiff_t __n = std::distance(__first, __last); 234s 1949: std::advance(__result, -__n); 234s 1949: if (__builtin_expect(__n > 1, true)) 234s 1949: { 234s 1949: __builtin_memmove(__result, 234s 1949: __first, 234s 1949: __n * sizeof(*__first)); 234s 1949: } 234s 1949: else if (__n == 1) 234s 1949: std::__assign_one<_IsMove>(__result, __first); 234s 1949: return __result; 234s 1949: } 234s 1949: # 735 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: while (__first != __last) 234s 1949: { 234s 1949: --__last; 234s 1949: --__result; 234s 1949: std::__assign_one<_IsMove>(__result, __last); 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _BI2 234s 1949: __copy_move_backward_a1(_BI1 __first, _BI1 __last, _BI2 __result) 234s 1949: { return std::__copy_move_backward_a2<_IsMove>(__first, __last, __result); } 234s 1949: 234s 1949: template 234s 1949: _OI 234s 1949: __copy_move_backward_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 234s 1949: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 234s 1949: _OI); 234s 1949: 234s 1949: template 234s 1949: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 234s 1949: __copy_move_backward_a1( 234s 1949: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 234s 1949: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 234s 1949: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if< 234s 1949: __is_random_access_iter<_II>::__value, 234s 1949: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 234s 1949: __copy_move_backward_a1(_II, _II, 234s 1949: std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _OI 234s 1949: __copy_move_backward_a(_II __first, _II __last, _OI __result) 234s 1949: { 234s 1949: return std::__niter_wrap(__result, 234s 1949: std::__copy_move_backward_a1<_IsMove> 234s 1949: (std::__niter_base(__first), std::__niter_base(__last), 234s 1949: std::__niter_base(__result))); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OI 234s 1949: __copy_move_backward_a( 234s 1949: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 234s 1949: _OI); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 234s 1949: __copy_move_backward_a(_II, _II, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 234s 1949: __copy_move_backward_a( 234s 1949: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 234s 1949: # 833 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _BI2 234s 1949: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__copy_move_backward_a<__is_move_iterator<_BI1>::__value> 234s 1949: (std::__miter_base(__first), std::__miter_base(__last), __result); 234s 1949: } 234s 1949: # 869 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _BI2 234s 1949: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__copy_move_backward_a(std::__miter_base(__first), 234s 1949: std::__miter_base(__last), 234s 1949: __result); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __value) 234s 1949: { 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const bool __load_outside_loop = 234s 1949: 234s 1949: 234s 1949: __is_trivially_constructible(_Tp, const _Tp&) 234s 1949: && __is_trivially_assignable(__decltype(*__first), const _Tp&) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: && sizeof(_Tp) <= sizeof(long long); 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename __gnu_cxx::__conditional_type<__load_outside_loop, 234s 1949: const _Tp, 234s 1949: const _Tp&>::__type _Up; 234s 1949: _Up __val(__value); 234s 1949: for (; __first != __last; ++__first) 234s 1949: *__first = __val; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline typename 234s 1949: __gnu_cxx::__enable_if<__is_byte<_Up>::__value 234s 1949: && (__are_same<_Up, _Tp>::__value 234s 1949: || __memcpyable_integer<_Tp>::__width), 234s 1949: void>::__type 234s 1949: __fill_a1(_Up* __first, _Up* __last, const _Tp& __x) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const _Up __val = __x; 234s 1949: # 950 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: if (const size_t __len = __last - __first) 234s 1949: __builtin_memset(__first, static_cast(__val), __len); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline void 234s 1949: __fill_a1(::__gnu_cxx::__normal_iterator<_Ite, _Cont> __first, 234s 1949: ::__gnu_cxx::__normal_iterator<_Ite, _Cont> __last, 234s 1949: const _Tp& __value) 234s 1949: { std::__fill_a1(__first.base(), __last.base(), __value); } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 234s 1949: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 234s 1949: const _VTp&); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: __fill_a1(std::_Bit_iterator, std::_Bit_iterator, 234s 1949: const bool&); 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline void 234s 1949: __fill_a(_FIte __first, _FIte __last, const _Tp& __value) 234s 1949: { std::__fill_a1(__first, __last, __value); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __fill_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 234s 1949: const _Tp&); 234s 1949: # 1000 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline void 234s 1949: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: std::__fill_a(__first, __last, __value); 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: 234s 1949: inline constexpr int 234s 1949: __size_to_integer(int __n) { return __n; } 234s 1949: inline constexpr unsigned 234s 1949: __size_to_integer(unsigned __n) { return __n; } 234s 1949: inline constexpr long 234s 1949: __size_to_integer(long __n) { return __n; } 234s 1949: inline constexpr unsigned long 234s 1949: __size_to_integer(unsigned long __n) { return __n; } 234s 1949: inline constexpr long long 234s 1949: __size_to_integer(long long __n) { return __n; } 234s 1949: inline constexpr unsigned long long 234s 1949: __size_to_integer(unsigned long long __n) { return __n; } 234s 1949: # 1055 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: inline constexpr long long 234s 1949: __size_to_integer(float __n) { return (long long)__n; } 234s 1949: inline constexpr long long 234s 1949: __size_to_integer(double __n) { return (long long)__n; } 234s 1949: inline constexpr long long 234s 1949: __size_to_integer(long double __n) { return (long long)__n; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) 234s 1949: { 234s 1949: 234s 1949: const bool __load_outside_loop = 234s 1949: 234s 1949: 234s 1949: __is_trivially_constructible(_Tp, const _Tp&) 234s 1949: && __is_trivially_assignable(__decltype(*__first), const _Tp&) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: && sizeof(_Tp) <= sizeof(long long); 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename __gnu_cxx::__conditional_type<__load_outside_loop, 234s 1949: const _Tp, 234s 1949: const _Tp&>::__type _Up; 234s 1949: _Up __val(__value); 234s 1949: for (; __n > 0; --__n, (void) ++__first) 234s 1949: *__first = __val; 234s 1949: return __first; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: template 234s 1949: 234s 1949: ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 234s 1949: __fill_n_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>& __first, 234s 1949: _Size __n, const _Tp& __value, 234s 1949: std::input_iterator_tag); 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 234s 1949: std::output_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 234s 1949: 234s 1949: return __fill_n_a1(__first, __n, __value); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 234s 1949: std::input_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 234s 1949: 234s 1949: return __fill_n_a1(__first, __n, __value); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 234s 1949: std::random_access_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 234s 1949: 234s 1949: if (__n <= 0) 234s 1949: return __first; 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: std::__fill_a(__first, __first + __n, __value); 234s 1949: return __first + __n; 234s 1949: } 234s 1949: # 1169 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline _OI 234s 1949: fill_n(_OI __first, _Size __n, const _Tp& __value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return std::__fill_n_a(__first, std::__size_to_integer(__n), __value, 234s 1949: std::__iterator_category(__first)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: struct __equal 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static bool 234s 1949: equal(_II1 __first1, _II1 __last1, _II2 __first2) 234s 1949: { 234s 1949: for (; __first1 != __last1; ++__first1, (void) ++__first2) 234s 1949: if (!(*__first1 == *__first2)) 234s 1949: return false; 234s 1949: return true; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __equal 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static bool 234s 1949: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) 234s 1949: { 234s 1949: if (const size_t __len = (__last1 - __first1)) 234s 1949: return !std::__memcmp(__first1, __first2, __len); 234s 1949: return true; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if< 234s 1949: __is_random_access_iter<_II>::__value, bool>::__type 234s 1949: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 234s 1949: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 234s 1949: _II); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 234s 1949: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 234s 1949: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if< 234s 1949: __is_random_access_iter<_II>::__value, bool>::__type 234s 1949: __equal_aux1(_II, _II, 234s 1949: std::_Deque_iterator<_Tp, _Ref, _Ptr>); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: __equal_aux1(_II1 __first1, _II1 __last1, _II2 __first2) 234s 1949: { 234s 1949: typedef typename iterator_traits<_II1>::value_type _ValueType1; 234s 1949: const bool __simple = ((__is_integer<_ValueType1>::__value 234s 1949: 234s 1949: || __is_pointer(_ValueType1) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ) && __memcmpable<_II1, _II2>::__value); 234s 1949: return std::__equal<__simple>::equal(__first1, __last1, __first2); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: 234s 1949: inline bool 234s 1949: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) 234s 1949: { 234s 1949: return std::__equal_aux1(std::__niter_base(__first1), 234s 1949: std::__niter_base(__last1), 234s 1949: std::__niter_base(__first2)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 234s 1949: _II2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __equal_aux(_II1, _II1, 234s 1949: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 234s 1949: 234s 1949: template 234s 1949: struct __lc_rai 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static _II1 234s 1949: __newlast1(_II1, _II1 __last1, _II2, _II2) 234s 1949: { return __last1; } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: static bool 234s 1949: __cnd2(_II __first, _II __last) 234s 1949: { return __first != __last; } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __lc_rai 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static _RAI1 234s 1949: __newlast1(_RAI1 __first1, _RAI1 __last1, 234s 1949: _RAI2 __first2, _RAI2 __last2) 234s 1949: { 234s 1949: const typename iterator_traits<_RAI1>::difference_type 234s 1949: __diff1 = __last1 - __first1; 234s 1949: const typename iterator_traits<_RAI2>::difference_type 234s 1949: __diff2 = __last2 - __first2; 234s 1949: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static bool 234s 1949: __cnd2(_RAI, _RAI) 234s 1949: { return true; } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, 234s 1949: _II2 __first2, _II2 __last2, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: typedef typename iterator_traits<_II1>::iterator_category _Category1; 234s 1949: typedef typename iterator_traits<_II2>::iterator_category _Category2; 234s 1949: typedef std::__lc_rai<_Category1, _Category2> __rai_type; 234s 1949: 234s 1949: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); 234s 1949: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); 234s 1949: ++__first1, (void)++__first2) 234s 1949: { 234s 1949: if (__comp(__first1, __first2)) 234s 1949: return true; 234s 1949: if (__comp(__first2, __first1)) 234s 1949: return false; 234s 1949: } 234s 1949: return __first1 == __last1 && __first2 != __last2; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: struct __lexicographical_compare 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static bool 234s 1949: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 234s 1949: { 234s 1949: using __gnu_cxx::__ops::__iter_less_iter; 234s 1949: return std::__lexicographical_compare_impl(__first1, __last1, 234s 1949: __first2, __last2, 234s 1949: __iter_less_iter()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: static int 234s 1949: __3way(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 234s 1949: { 234s 1949: while (__first1 != __last1) 234s 1949: { 234s 1949: if (__first2 == __last2) 234s 1949: return +1; 234s 1949: if (*__first1 < *__first2) 234s 1949: return -1; 234s 1949: if (*__first2 < *__first1) 234s 1949: return +1; 234s 1949: ++__first1; 234s 1949: ++__first2; 234s 1949: } 234s 1949: return int(__first2 == __last2) - 1; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __lexicographical_compare 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static bool 234s 1949: __lc(const _Tp* __first1, const _Tp* __last1, 234s 1949: const _Up* __first2, const _Up* __last2) 234s 1949: { return __3way(__first1, __last1, __first2, __last2) < 0; } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: static ptrdiff_t 234s 1949: __3way(const _Tp* __first1, const _Tp* __last1, 234s 1949: const _Up* __first2, const _Up* __last2) 234s 1949: { 234s 1949: const size_t __len1 = __last1 - __first1; 234s 1949: const size_t __len2 = __last2 - __first2; 234s 1949: if (const size_t __len = std::min(__len1, __len2)) 234s 1949: if (int __result = std::__memcmp(__first1, __first2, __len)) 234s 1949: return __result; 234s 1949: return ptrdiff_t(__len1 - __len2); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: __lexicographical_compare_aux1(_II1 __first1, _II1 __last1, 234s 1949: _II2 __first2, _II2 __last2) 234s 1949: { 234s 1949: typedef typename iterator_traits<_II1>::value_type _ValueType1; 234s 1949: typedef typename iterator_traits<_II2>::value_type _ValueType2; 234s 1949: 234s 1949: const bool __simple = 234s 1949: (__is_memcmp_ordered_with<_ValueType1, _ValueType2>::__value 234s 1949: && __is_pointer(_II1) && __is_pointer(_II2) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, 234s 1949: __first2, __last2); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: __lexicographical_compare_aux1( 234s 1949: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 234s 1949: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 234s 1949: _Tp2*, _Tp2*); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: __lexicographical_compare_aux1(_Tp1*, _Tp1*, 234s 1949: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, 234s 1949: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: __lexicographical_compare_aux1( 234s 1949: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 234s 1949: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 234s 1949: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, 234s 1949: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, 234s 1949: _II2 __first2, _II2 __last2) 234s 1949: { 234s 1949: return std::__lexicographical_compare_aux1(std::__niter_base(__first1), 234s 1949: std::__niter_base(__last1), 234s 1949: std::__niter_base(__first2), 234s 1949: std::__niter_base(__last2)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __lexicographical_compare_aux( 234s 1949: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 234s 1949: _II2, _II2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __lexicographical_compare_aux( 234s 1949: _II1, _II1, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __lexicographical_compare_aux( 234s 1949: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, 234s 1949: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val, _Compare __comp) 234s 1949: { 234s 1949: typedef typename iterator_traits<_ForwardIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: _DistanceType __len = std::distance(__first, __last); 234s 1949: 234s 1949: while (__len > 0) 234s 1949: { 234s 1949: _DistanceType __half = __len >> 1; 234s 1949: _ForwardIterator __middle = __first; 234s 1949: std::advance(__middle, __half); 234s 1949: if (__comp(__middle, __val)) 234s 1949: { 234s 1949: __first = __middle; 234s 1949: ++__first; 234s 1949: __len = __len - __half - 1; 234s 1949: } 234s 1949: else 234s 1949: __len = __half; 234s 1949: } 234s 1949: return __first; 234s 1949: } 234s 1949: # 1532 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__lower_bound(__first, __last, __val, 234s 1949: __gnu_cxx::__ops::__iter_less_val()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline constexpr _Tp 234s 1949: __lg(_Tp __n) 234s 1949: { 234s 1949: 234s 1949: return std::__bit_width(make_unsigned_t<_Tp>(__n)) - 1; 234s 1949: # 1568 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: } 234s 1949: 234s 1949: 234s 1949: # 1584 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: equal(_II1 __first1, _II1 __last1, _II2 __first2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__equal_aux(__first1, __last1, __first2); 234s 1949: } 234s 1949: # 1615 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: equal(_IIter1 __first1, _IIter1 __last1, 234s 1949: _IIter2 __first2, _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: for (; __first1 != __last1; ++__first1, (void)++__first2) 234s 1949: if (!bool(__binary_pred(*__first1, *__first2))) 234s 1949: return false; 234s 1949: return true; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 234s 1949: { 234s 1949: using _RATag = random_access_iterator_tag; 234s 1949: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 234s 1949: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 234s 1949: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 234s 1949: if constexpr (_RAIters::value) 234s 1949: { 234s 1949: if ((__last1 - __first1) != (__last2 - __first2)) 234s 1949: return false; 234s 1949: return std::equal(__first1, __last1, __first2); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: for (; __first1 != __last1 && __first2 != __last2; 234s 1949: ++__first1, (void)++__first2) 234s 1949: if (!(*__first1 == *__first2)) 234s 1949: return false; 234s 1949: return __first1 == __last1 && __first2 == __last2; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, 234s 1949: _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: using _RATag = random_access_iterator_tag; 234s 1949: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 234s 1949: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 234s 1949: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 234s 1949: if constexpr (_RAIters::value) 234s 1949: { 234s 1949: if ((__last1 - __first1) != (__last2 - __first2)) 234s 1949: return false; 234s 1949: return std::equal(__first1, __last1, __first2, 234s 1949: __binary_pred); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: for (; __first1 != __last1 && __first2 != __last2; 234s 1949: ++__first1, (void)++__first2) 234s 1949: if (!bool(__binary_pred(*__first1, *__first2))) 234s 1949: return false; 234s 1949: return __first1 == __last1 && __first2 == __last2; 234s 1949: } 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 1706 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: equal(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__equal4(__first1, __last1, __first2, __last2); 234s 1949: } 234s 1949: # 1739 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: equal(_IIter1 __first1, _IIter1 __last1, 234s 1949: _IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__equal4(__first1, __last1, __first2, __last2, 234s 1949: __binary_pred); 234s 1949: } 234s 1949: # 1771 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: lexicographical_compare(_II1 __first1, _II1 __last1, 234s 1949: _II2 __first2, _II2 __last2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__lexicographical_compare_aux(__first1, __last1, 234s 1949: __first2, __last2); 234s 1949: } 234s 1949: # 1806 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: lexicographical_compare(_II1 __first1, _II1 __last1, 234s 1949: _II2 __first2, _II2 __last2, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__lexicographical_compare_impl 234s 1949: (__first1, __last1, __first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: # 1921 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: 234s 1949: pair<_InputIterator1, _InputIterator2> 234s 1949: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: while (__first1 != __last1 && __binary_pred(__first1, __first2)) 234s 1949: { 234s 1949: ++__first1; 234s 1949: ++__first2; 234s 1949: } 234s 1949: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 234s 1949: } 234s 1949: # 1949 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline pair<_InputIterator1, _InputIterator2> 234s 1949: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__mismatch(__first1, __last1, __first2, 234s 1949: __gnu_cxx::__ops::__iter_equal_to_iter()); 234s 1949: } 234s 1949: # 1983 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline pair<_InputIterator1, _InputIterator2> 234s 1949: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__mismatch(__first1, __last1, __first2, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pair<_InputIterator1, _InputIterator2> 234s 1949: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: while (__first1 != __last1 && __first2 != __last2 234s 1949: && __binary_pred(__first1, __first2)) 234s 1949: { 234s 1949: ++__first1; 234s 1949: ++__first2; 234s 1949: } 234s 1949: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 234s 1949: } 234s 1949: # 2031 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline pair<_InputIterator1, _InputIterator2> 234s 1949: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__mismatch(__first1, __last1, __first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_equal_to_iter()); 234s 1949: } 234s 1949: # 2067 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline pair<_InputIterator1, _InputIterator2> 234s 1949: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__mismatch(__first1, __last1, __first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _Iterator 234s 1949: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) 234s 1949: { 234s 1949: #pragma GCC unroll 4 234s 1949: while (__first != __last && !__pred(__first)) 234s 1949: ++__first; 234s 1949: return __first; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename iterator_traits<_InputIterator>::difference_type 234s 1949: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 234s 1949: { 234s 1949: typename iterator_traits<_InputIterator>::difference_type __n = 0; 234s 1949: for (; __first != __last; ++__first) 234s 1949: if (__pred(__first)) 234s 1949: ++__n; 234s 1949: return __n; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __remove_if(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: __first = std::__find_if(__first, __last, __pred); 234s 1949: if (__first == __last) 234s 1949: return __first; 234s 1949: _ForwardIterator __result = __first; 234s 1949: ++__first; 234s 1949: for (; __first != __last; ++__first) 234s 1949: if (!__pred(__first)) 234s 1949: { 234s 1949: *__result = std::move(*__first); 234s 1949: ++__result; 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator1 234s 1949: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 234s 1949: _BinaryPredicate __predicate) 234s 1949: { 234s 1949: 234s 1949: if (__first1 == __last1 || __first2 == __last2) 234s 1949: return __first1; 234s 1949: 234s 1949: 234s 1949: _ForwardIterator2 __p1(__first2); 234s 1949: if (++__p1 == __last2) 234s 1949: return std::__find_if(__first1, __last1, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 234s 1949: 234s 1949: 234s 1949: _ForwardIterator1 __current = __first1; 234s 1949: 234s 1949: for (;;) 234s 1949: { 234s 1949: __first1 = 234s 1949: std::__find_if(__first1, __last1, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 234s 1949: 234s 1949: if (__first1 == __last1) 234s 1949: return __last1; 234s 1949: 234s 1949: _ForwardIterator2 __p = __p1; 234s 1949: __current = __first1; 234s 1949: if (++__current == __last1) 234s 1949: return __last1; 234s 1949: 234s 1949: while (__predicate(__current, __p)) 234s 1949: { 234s 1949: if (++__p == __last2) 234s 1949: return __first1; 234s 1949: if (++__current == __last1) 234s 1949: return __last1; 234s 1949: } 234s 1949: ++__first1; 234s 1949: } 234s 1949: return __first1; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _BinaryPredicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: for (; __first1 != __last1; ++__first1, (void)++__first2) 234s 1949: if (!__pred(__first1, __first2)) 234s 1949: break; 234s 1949: 234s 1949: if (__first1 == __last1) 234s 1949: return true; 234s 1949: 234s 1949: 234s 1949: 234s 1949: _ForwardIterator2 __last2 = __first2; 234s 1949: std::advance(__last2, std::distance(__first1, __last1)); 234s 1949: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 234s 1949: { 234s 1949: if (__scan != std::__find_if(__first1, __scan, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 234s 1949: continue; 234s 1949: 234s 1949: auto __matches 234s 1949: = std::__count_if(__first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 234s 1949: if (0 == __matches || 234s 1949: std::__count_if(__scan, __last1, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 234s 1949: != __matches) 234s 1949: return false; 234s 1949: } 234s 1949: return true; 234s 1949: } 234s 1949: # 2230 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__is_permutation(__first1, __last1, __first2, 234s 1949: __gnu_cxx::__ops::__iter_equal_to_iter()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 2272 "/usr/include/c++/15/bits/stl_algobase.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator1 234s 1949: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 234s 1949: _BinaryPredicate __predicate) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__search(__first1, __last1, __first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 54 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/refwrap.h" 1 3 4 234s 1949: # 40 "/usr/include/c++/15/bits/refwrap.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/invoke.h" 1 3 4 234s 1949: # 44 "/usr/include/c++/15/bits/invoke.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 55 "/usr/include/c++/15/bits/invoke.h" 3 4 234s 1949: template::type> 234s 1949: constexpr _Up&& 234s 1949: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept 234s 1949: { return static_cast<_Up&&>(__t); } 234s 1949: 234s 1949: template 234s 1949: constexpr _Res 234s 1949: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) 234s 1949: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } 234s 1949: 234s 1949: template 234s 1949: constexpr _Res 234s 1949: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, 234s 1949: _Args&&... __args) 234s 1949: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } 234s 1949: 234s 1949: template 234s 1949: constexpr _Res 234s 1949: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, 234s 1949: _Args&&... __args) 234s 1949: { 234s 1949: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr _Res 234s 1949: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) 234s 1949: { return __invfwd<_Tp>(__t).*__f; } 234s 1949: 234s 1949: template 234s 1949: constexpr _Res 234s 1949: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) 234s 1949: { return (*std::forward<_Tp>(__t)).*__f; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr typename __invoke_result<_Callable, _Args...>::type 234s 1949: __invoke(_Callable&& __fn, _Args&&... __args) 234s 1949: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) 234s 1949: { 234s 1949: using __result = __invoke_result<_Callable, _Args...>; 234s 1949: using __type = typename __result::type; 234s 1949: using __tag = typename __result::__invoke_type; 234s 1949: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: # 129 "/usr/include/c++/15/bits/invoke.h" 3 4 234s 1949: template 234s 1949: constexpr __enable_if_t::value, _Res> 234s 1949: __invoke_r(_Callable&& __fn, _Args&&... __args) 234s 1949: { 234s 1949: using __result = __invoke_result<_Callable, _Args...>; 234s 1949: using __type = typename __result::type; 234s 1949: 234s 1949: static_assert(!__reference_converts_from_temporary(_Res, __type), 234s 1949: "INVOKE must not create a dangling reference"); 234s 1949: 234s 1949: using __tag = typename __result::__invoke_type; 234s 1949: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr __enable_if_t::value, _Res> 234s 1949: __invoke_r(_Callable&& __fn, _Args&&... __args) 234s 1949: { 234s 1949: using __result = __invoke_result<_Callable, _Args...>; 234s 1949: using __type = typename __result::type; 234s 1949: using __tag = typename __result::__invoke_type; 234s 1949: std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 41 "/usr/include/c++/15/bits/refwrap.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 58 "/usr/include/c++/15/bits/refwrap.h" 3 4 234s 1949: template 234s 1949: struct _Maybe_unary_or_binary_function { }; 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Maybe_unary_or_binary_function<_Res, _T1> 234s 1949: : std::unary_function<_T1, _Res> { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> 234s 1949: : std::binary_function<_T1, _T2, _Res> { }; 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: template 234s 1949: struct _Mem_fn_traits; 234s 1949: 234s 1949: template 234s 1949: struct _Mem_fn_traits_base 234s 1949: { 234s 1949: using __result_type = _Res; 234s 1949: using __maybe_type 234s 1949: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; 234s 1949: using __arity = integral_constant; 234s 1949: }; 234s 1949: # 109 "/usr/include/c++/15/bits/refwrap.h" 3 4 234s 1949: 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; }; 234s 1949: 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; }; 234s 1949: 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; }; 234s 1949: # 123 "/usr/include/c++/15/bits/refwrap.h" 3 4 234s 1949: template> 234s 1949: struct _Maybe_get_result_type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Maybe_get_result_type<_Functor, 234s 1949: __void_t> 234s 1949: { typedef typename _Functor::result_type result_type; }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Weak_result_type_impl 234s 1949: : _Maybe_get_result_type<_Functor> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Weak_result_type_impl<_Res(_ArgTypes...) > 234s 1949: { typedef _Res result_type; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Weak_result_type_impl<_Res(_ArgTypes..., 234s 1949: ...) > 234s 1949: { typedef _Res result_type; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) > 234s 1949: { typedef _Res result_type; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct 234s 1949: _Weak_result_type_impl<_Res(*)(_ArgTypes..., ...) > 234s 1949: { typedef _Res result_type; }; 234s 1949: 234s 1949: 234s 1949: template::value> 234s 1949: struct _Weak_result_type_memfun 234s 1949: : _Weak_result_type_impl<_Functor> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Weak_result_type_memfun<_MemFunPtr, true> 234s 1949: { 234s 1949: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Weak_result_type_memfun<_Func _Class::*, false> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Weak_result_type 234s 1949: : _Weak_result_type_memfun::type> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: struct _Refwrap_base_arg1 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Refwrap_base_arg1<_Tp, 234s 1949: __void_t> 234s 1949: { 234s 1949: typedef typename _Tp::argument_type argument_type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: struct _Refwrap_base_arg2 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Refwrap_base_arg2<_Tp, 234s 1949: __void_t> 234s 1949: { 234s 1949: typedef typename _Tp::first_argument_type first_argument_type; 234s 1949: typedef typename _Tp::second_argument_type second_argument_type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base 234s 1949: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base<_Res(_T1) > 234s 1949: : unary_function<_T1, _Res> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base<_Res(_T1) const> 234s 1949: : unary_function<_T1, _Res> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base<_Res(_T1) volatile> 234s 1949: : unary_function<_T1, _Res> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base<_Res(_T1) const volatile> 234s 1949: : unary_function<_T1, _Res> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base<_Res(_T1, _T2) > 234s 1949: : binary_function<_T1, _T2, _Res> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base<_Res(_T1, _T2) const> 234s 1949: : binary_function<_T1, _T2, _Res> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> 234s 1949: : binary_function<_T1, _T2, _Res> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> 234s 1949: : binary_function<_T1, _T2, _Res> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base<_Res(*)(_T1) > 234s 1949: : unary_function<_T1, _Res> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) > 234s 1949: : binary_function<_T1, _T2, _Res> 234s 1949: { }; 234s 1949: 234s 1949: template::value> 234s 1949: struct _Reference_wrapper_base_memfun 234s 1949: : _Reference_wrapper_base<_Tp> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> 234s 1949: : _Mem_fn_traits<_MemFunPtr>::__maybe_type 234s 1949: { 234s 1949: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 309 "/usr/include/c++/15/bits/refwrap.h" 3 4 234s 1949: template 234s 1949: class reference_wrapper 234s 1949: 234s 1949: 234s 1949: 234s 1949: : public _Reference_wrapper_base_memfun::type> 234s 1949: 234s 1949: { 234s 1949: _Tp* _M_data; 234s 1949: 234s 1949: 234s 1949: static _Tp* _S_fun(_Tp& __r) noexcept { return std::__addressof(__r); } 234s 1949: 234s 1949: static void _S_fun(_Tp&&) = delete; 234s 1949: 234s 1949: template> 234s 1949: using __not_same 234s 1949: = typename enable_if::value>::type; 234s 1949: 234s 1949: public: 234s 1949: typedef _Tp type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template, typename 234s 1949: = decltype(reference_wrapper::_S_fun(std::declval<_Up>()))> 234s 1949: 234s 1949: reference_wrapper(_Up&& __uref) 234s 1949: noexcept(noexcept(reference_wrapper::_S_fun(std::declval<_Up>()))) 234s 1949: : _M_data(reference_wrapper::_S_fun(std::forward<_Up>(__uref))) 234s 1949: { } 234s 1949: 234s 1949: reference_wrapper(const reference_wrapper&) = default; 234s 1949: 234s 1949: reference_wrapper& 234s 1949: operator=(const reference_wrapper&) = default; 234s 1949: 234s 1949: 234s 1949: operator _Tp&() const noexcept 234s 1949: { return this->get(); } 234s 1949: 234s 1949: 234s 1949: _Tp& 234s 1949: get() const noexcept 234s 1949: { return *_M_data; } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename __invoke_result<_Tp&, _Args...>::type 234s 1949: operator()(_Args&&... __args) const 234s 1949: noexcept(__is_nothrow_invocable<_Tp&, _Args...>::value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return std::__invoke(get(), std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: # 415 "/usr/include/c++/15/bits/refwrap.h" 3 4 234s 1949: }; 234s 1949: # 425 "/usr/include/c++/15/bits/refwrap.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline reference_wrapper<_Tp> 234s 1949: ref(_Tp& __t) noexcept 234s 1949: { return reference_wrapper<_Tp>(__t); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline reference_wrapper 234s 1949: cref(const _Tp& __t) noexcept 234s 1949: { return reference_wrapper(__t); } 234s 1949: 234s 1949: template 234s 1949: void ref(const _Tp&&) = delete; 234s 1949: 234s 1949: template 234s 1949: void cref(const _Tp&&) = delete; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline reference_wrapper<_Tp> 234s 1949: ref(reference_wrapper<_Tp> __t) noexcept 234s 1949: { return __t; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline reference_wrapper 234s 1949: cref(reference_wrapper<_Tp> __t) noexcept 234s 1949: { return { __t.get() }; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 55 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/range_access.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/range_access.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline auto 234s 1949: begin(_Container& __cont) noexcept(noexcept(__cont.begin())) 234s 1949: -> decltype(__cont.begin()) 234s 1949: { return __cont.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline auto 234s 1949: begin(const _Container& __cont) noexcept(noexcept(__cont.begin())) 234s 1949: -> decltype(__cont.begin()) 234s 1949: { return __cont.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline auto 234s 1949: end(_Container& __cont) noexcept(noexcept(__cont.end())) 234s 1949: -> decltype(__cont.end()) 234s 1949: { return __cont.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline auto 234s 1949: end(const _Container& __cont) noexcept(noexcept(__cont.end())) 234s 1949: -> decltype(__cont.end()) 234s 1949: { return __cont.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline constexpr _Tp* 234s 1949: begin(_Tp (&__arr)[_Nm]) noexcept 234s 1949: { return __arr; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline constexpr _Tp* 234s 1949: end(_Tp (&__arr)[_Nm]) noexcept 234s 1949: { return __arr + _Nm; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template class valarray; 234s 1949: 234s 1949: template _Tp* begin(valarray<_Tp>&) noexcept; 234s 1949: template const _Tp* begin(const valarray<_Tp>&) noexcept; 234s 1949: template _Tp* end(valarray<_Tp>&) noexcept; 234s 1949: template const _Tp* end(const valarray<_Tp>&) noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: constexpr auto 234s 1949: cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont))) 234s 1949: -> decltype(std::begin(__cont)) 234s 1949: { return std::begin(__cont); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: constexpr auto 234s 1949: cend(const _Container& __cont) noexcept(noexcept(std::end(__cont))) 234s 1949: -> decltype(std::end(__cont)) 234s 1949: { return std::end(__cont); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline auto 234s 1949: rbegin(_Container& __cont) noexcept(noexcept(__cont.rbegin())) 234s 1949: -> decltype(__cont.rbegin()) 234s 1949: { return __cont.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline auto 234s 1949: rbegin(const _Container& __cont) noexcept(noexcept(__cont.rbegin())) 234s 1949: -> decltype(__cont.rbegin()) 234s 1949: { return __cont.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline auto 234s 1949: rend(_Container& __cont) noexcept(noexcept(__cont.rend())) 234s 1949: -> decltype(__cont.rend()) 234s 1949: { return __cont.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline auto 234s 1949: rend(const _Container& __cont) noexcept(noexcept(__cont.rend())) 234s 1949: -> decltype(__cont.rend()) 234s 1949: { return __cont.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline reverse_iterator<_Tp*> 234s 1949: rbegin(_Tp (&__arr)[_Nm]) noexcept 234s 1949: { return reverse_iterator<_Tp*>(__arr + _Nm); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline reverse_iterator<_Tp*> 234s 1949: rend(_Tp (&__arr)[_Nm]) noexcept 234s 1949: { return reverse_iterator<_Tp*>(__arr); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline reverse_iterator 234s 1949: rbegin(initializer_list<_Tp> __il) noexcept 234s 1949: { return reverse_iterator(__il.end()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline reverse_iterator 234s 1949: rend(initializer_list<_Tp> __il) noexcept 234s 1949: { return reverse_iterator(__il.begin()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline auto 234s 1949: crbegin(const _Container& __cont) noexcept(noexcept(std::rbegin(__cont))) 234s 1949: -> decltype(std::rbegin(__cont)) 234s 1949: { return std::rbegin(__cont); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__, __gnu__::__always_inline__]] 234s 1949: inline auto 234s 1949: crend(const _Container& __cont) noexcept(noexcept(std::rend(__cont))) 234s 1949: -> decltype(std::rend(__cont)) 234s 1949: { return std::rend(__cont); } 234s 1949: # 377 "/usr/include/c++/15/bits/range_access.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 56 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/basic_string.h" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/ext/alloc_traits.h" 1 3 4 234s 1949: # 36 "/usr/include/c++/15/ext/alloc_traits.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/alloc_traits.h" 1 3 4 234s 1949: # 33 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_construct.h" 1 3 4 234s 1949: # 73 "/usr/include/c++/15/bits/stl_construct.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 120 "/usr/include/c++/15/bits/stl_construct.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: _Construct(_Tp* __p, _Args&&... __args) 234s 1949: { 234s 1949: # 133 "/usr/include/c++/15/bits/stl_construct.h" 3 4 234s 1949: ::new(static_cast(__p)) _Tp(std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: # 146 "/usr/include/c++/15/bits/stl_construct.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: _Construct_novalue(_T1* __p) 234s 1949: { ::new(static_cast(__p)) _T1; } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Destroy(_ForwardIterator __first, _ForwardIterator __last); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr inline void 234s 1949: _Destroy(_Tp* __pointer) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: __pointer->~_Tp(); 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: # 217 "/usr/include/c++/15/bits/stl_construct.h" 3 4 234s 1949: template 234s 1949: inline void 234s 1949: _Destroy(_ForwardIterator __first, _ForwardIterator __last) 234s 1949: { 234s 1949: typedef typename iterator_traits<_ForwardIterator>::value_type 234s 1949: _Value_type; 234s 1949: 234s 1949: if constexpr (!is_trivially_destructible<_Value_type>::value) 234s 1949: for (; __first != __last; ++__first) 234s 1949: std::_Destroy(std::__addressof(*__first)); 234s 1949: # 236 "/usr/include/c++/15/bits/stl_construct.h" 3 4 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline _ForwardIterator 234s 1949: _Destroy_n(_ForwardIterator __first, _Size __count) 234s 1949: { 234s 1949: typedef typename iterator_traits<_ForwardIterator>::value_type 234s 1949: _Value_type; 234s 1949: 234s 1949: if constexpr (!is_trivially_destructible<_Value_type>::value) 234s 1949: for (; __count > 0; (void)++__first, --__count) 234s 1949: std::_Destroy(std::__addressof(*__first)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: else 234s 1949: std::advance(__first, __count); 234s 1949: return __first; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 284 "/usr/include/c++/15/bits/stl_construct.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 34 "/usr/include/c++/15/bits/alloc_traits.h" 2 3 4 234s 1949: # 46 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 52 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++14-extensions" 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: 234s 1949: 234s 1949: struct __allocator_traits_base 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: struct __rebind : __replace_first_arg<_Tp, _Up> 234s 1949: { 234s 1949: static_assert(is_same< 234s 1949: typename __replace_first_arg<_Tp, typename _Tp::value_type>::type, 234s 1949: _Tp>::value, 234s 1949: "allocator_traits::rebind_alloc must be A"); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __rebind<_Tp, _Up, 234s 1949: __void_t::other>> 234s 1949: 234s 1949: { 234s 1949: using type = typename _Tp::template rebind<_Up>::other; 234s 1949: 234s 1949: static_assert(is_same< 234s 1949: typename _Tp::template rebind::other, 234s 1949: _Tp>::value, 234s 1949: "allocator_traits::rebind_alloc must be A"); 234s 1949: }; 234s 1949: 234s 1949: protected: 234s 1949: template 234s 1949: using __pointer = typename _Tp::pointer; 234s 1949: template 234s 1949: using __c_pointer = typename _Tp::const_pointer; 234s 1949: template 234s 1949: using __v_pointer = typename _Tp::void_pointer; 234s 1949: template 234s 1949: using __cv_pointer = typename _Tp::const_void_pointer; 234s 1949: template 234s 1949: using __pocca = typename _Tp::propagate_on_container_copy_assignment; 234s 1949: template 234s 1949: using __pocma = typename _Tp::propagate_on_container_move_assignment; 234s 1949: template 234s 1949: using __pocs = typename _Tp::propagate_on_container_swap; 234s 1949: template 234s 1949: using __equal = __type_identity; 234s 1949: # 115 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: using __allocate_hint_t 234s 1949: = decltype(std::declval<_Alloc&>() 234s 1949: .allocate(std::declval<_Sz>(), std::declval<_Vp>())); 234s 1949: template 234s 1949: static constexpr bool __has_allocate_hint = false; 234s 1949: template 234s 1949: static constexpr bool 234s 1949: __has_allocate_hint<_Alloc, _Sz, _Vp, 234s 1949: __void_t<__allocate_hint_t<_Alloc, _Sz, _Vp>>> 234s 1949: = true; 234s 1949: # 152 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: using __construct_t 234s 1949: = decltype(std::declval<_Alloc&>().construct(std::declval<_Tp*>(), 234s 1949: std::declval<_Args>()...)); 234s 1949: template 234s 1949: static constexpr bool __has_construct_impl = false; 234s 1949: template 234s 1949: static constexpr bool 234s 1949: __has_construct_impl<_Alloc, _Tp, 234s 1949: __void_t<__construct_t<_Alloc, _Tp, _Args...>>, 234s 1949: _Args...> 234s 1949: = true; 234s 1949: template 234s 1949: static constexpr bool __has_construct 234s 1949: = __has_construct_impl<_Alloc, _Tp, void, _Args...>; 234s 1949: template 234s 1949: using __new_expr_t 234s 1949: = decltype(::new((void*)0) _Tp(std::declval<_Args>()...)); 234s 1949: template 234s 1949: static constexpr bool __has_new_expr = false; 234s 1949: template 234s 1949: static constexpr bool 234s 1949: __has_new_expr<_Tp, __void_t<__new_expr_t<_Tp, _Args...>>, _Args...> 234s 1949: = true; 234s 1949: template 234s 1949: static constexpr bool __can_construct 234s 1949: = __has_construct<_Alloc, _Tp, _Args...> 234s 1949: || __has_new_expr<_Tp, void, _Args...>; 234s 1949: # 189 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: using __destroy_t 234s 1949: = decltype(std::declval<_Alloc&>().destroy(std::declval<_Tp*>())); 234s 1949: template 234s 1949: static constexpr bool __has_destroy = false; 234s 1949: template 234s 1949: static constexpr bool __has_destroy<_Alloc, _Tp, 234s 1949: __void_t<__destroy_t<_Alloc, _Tp>>> 234s 1949: = true; 234s 1949: # 207 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: using __max_size_t = decltype(std::declval().max_size()); 234s 1949: template 234s 1949: static constexpr bool __has_max_size = false; 234s 1949: template 234s 1949: static constexpr bool __has_max_size<_Alloc, 234s 1949: __void_t<__max_size_t<_Alloc>>> 234s 1949: = true; 234s 1949: # 225 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: using __soccc_t 234s 1949: = decltype(std::declval() 234s 1949: .select_on_container_copy_construction()); 234s 1949: template 234s 1949: static constexpr bool __has_soccc = false; 234s 1949: template 234s 1949: static constexpr bool __has_soccc<_Alloc, __void_t<__soccc_t<_Alloc>>> 234s 1949: = true; 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: using __alloc_rebind 234s 1949: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; 234s 1949: # 248 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: struct allocator_traits : __allocator_traits_base 234s 1949: { 234s 1949: 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: typedef typename _Alloc::value_type value_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using pointer = __detected_or_t; 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: template class _Func, typename _Tp, typename = void> 234s 1949: struct _Ptr 234s 1949: { 234s 1949: using type = typename pointer_traits::template rebind<_Tp>; 234s 1949: }; 234s 1949: 234s 1949: template class _Func, typename _Tp> 234s 1949: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> 234s 1949: { 234s 1949: using type = _Func<_Alloc>; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Diff 234s 1949: { using type = typename pointer_traits<_PtrT>::difference_type; }; 234s 1949: 234s 1949: template 234s 1949: struct _Diff<_A2, _PtrT, __void_t> 234s 1949: { using type = typename _A2::difference_type; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Size : make_unsigned<_DiffT> { }; 234s 1949: 234s 1949: template 234s 1949: struct _Size<_A2, _DiffT, __void_t> 234s 1949: { using type = typename _A2::size_type; }; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using void_pointer = typename _Ptr<__v_pointer, void>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using difference_type = typename _Diff<_Alloc, pointer>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using size_type = typename _Size<_Alloc, difference_type>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_copy_assignment 234s 1949: = __detected_or_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_move_assignment 234s 1949: = __detected_or_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_swap 234s 1949: = __detected_or_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using is_always_equal 234s 1949: = typename __detected_or_t, __equal, _Alloc>::type; 234s 1949: 234s 1949: template 234s 1949: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; 234s 1949: template 234s 1949: using rebind_traits = allocator_traits>; 234s 1949: # 383 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: [[__nodiscard__]] static pointer 234s 1949: allocate(_Alloc& __a, size_type __n) 234s 1949: { return __a.allocate(__n); } 234s 1949: # 398 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: [[__nodiscard__]] static pointer 234s 1949: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) 234s 1949: { 234s 1949: if constexpr (__has_allocate_hint<_Alloc, size_type, const_void_pointer>) 234s 1949: return __a.allocate(__n, __hint); 234s 1949: else 234s 1949: return __a.allocate(__n); 234s 1949: } 234s 1949: # 415 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: static void 234s 1949: deallocate(_Alloc& __a, pointer __p, size_type __n) 234s 1949: { __a.deallocate(__p, __n); } 234s 1949: # 430 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static __enable_if_t<__can_construct<_Alloc, _Tp, _Args...>> 234s 1949: 234s 1949: construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 234s 1949: noexcept(_S_nothrow_construct<_Tp, _Args...>()) 234s 1949: { 234s 1949: if constexpr (__has_construct<_Alloc, _Tp, _Args...>) 234s 1949: __a.construct(__p, std::forward<_Args>(__args)...); 234s 1949: else 234s 1949: std::_Construct(__p, std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: # 454 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: static void 234s 1949: destroy(_Alloc& __a, _Tp* __p) 234s 1949: noexcept(_S_nothrow_destroy<_Tp>()) 234s 1949: { 234s 1949: if constexpr (__has_destroy<_Alloc, _Tp>) 234s 1949: __a.destroy(__p); 234s 1949: else 234s 1949: std::_Destroy(__p); 234s 1949: } 234s 1949: # 473 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: static size_type 234s 1949: max_size(const _Alloc& __a) noexcept 234s 1949: { 234s 1949: if constexpr (__has_max_size<_Alloc>) 234s 1949: return __a.max_size(); 234s 1949: else 234s 1949: 234s 1949: 234s 1949: return __gnu_cxx::__numeric_traits::__max 234s 1949: / sizeof(value_type); 234s 1949: } 234s 1949: # 493 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: static _Alloc 234s 1949: select_on_container_copy_construction(const _Alloc& __rhs) 234s 1949: { 234s 1949: if constexpr (__has_soccc<_Alloc>) 234s 1949: return __rhs.select_on_container_copy_construction(); 234s 1949: else 234s 1949: return __rhs; 234s 1949: } 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: template 234s 1949: static constexpr bool 234s 1949: _S_nothrow_construct(_Alloc* __a = nullptr, _Tp* __p = nullptr) 234s 1949: { 234s 1949: if constexpr (__has_construct<_Alloc, _Tp, _Args...>) 234s 1949: return noexcept(__a->construct(__p, std::declval<_Args>()...)); 234s 1949: else 234s 1949: return __is_nothrow_new_constructible<_Tp, _Args...>; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool 234s 1949: _S_nothrow_destroy(_Alloc* __a = nullptr, _Tp* __p = nullptr) 234s 1949: { 234s 1949: if constexpr (__has_destroy<_Alloc, _Tp>) 234s 1949: return noexcept(__a->destroy(__p)); 234s 1949: else 234s 1949: return is_nothrow_destructible<_Tp>::value; 234s 1949: } 234s 1949: # 548 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 559 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: struct allocator_traits> 234s 1949: { 234s 1949: 234s 1949: using allocator_type = allocator<_Tp>; 234s 1949: 234s 1949: 234s 1949: using value_type = _Tp; 234s 1949: 234s 1949: 234s 1949: using pointer = _Tp*; 234s 1949: 234s 1949: 234s 1949: using const_pointer = const _Tp*; 234s 1949: 234s 1949: 234s 1949: using void_pointer = void*; 234s 1949: 234s 1949: 234s 1949: using const_void_pointer = const void*; 234s 1949: 234s 1949: 234s 1949: using difference_type = std::ptrdiff_t; 234s 1949: 234s 1949: 234s 1949: using size_type = std::size_t; 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_copy_assignment = false_type; 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_move_assignment = true_type; 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_swap = false_type; 234s 1949: 234s 1949: 234s 1949: using is_always_equal = true_type; 234s 1949: 234s 1949: template 234s 1949: using rebind_alloc = allocator<_Up>; 234s 1949: 234s 1949: template 234s 1949: using rebind_traits = allocator_traits>; 234s 1949: # 611 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: [[__nodiscard__,__gnu__::__always_inline__]] 234s 1949: static pointer 234s 1949: allocate(allocator_type& __a, size_type __n) 234s 1949: { return __a.allocate(__n); } 234s 1949: # 626 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: [[__nodiscard__,__gnu__::__always_inline__]] 234s 1949: static pointer 234s 1949: allocate(allocator_type& __a, size_type __n, 234s 1949: [[maybe_unused]] const_void_pointer __hint) 234s 1949: { 234s 1949: 234s 1949: return __a.allocate(__n, __hint); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 646 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static void 234s 1949: deallocate(allocator_type& __a, pointer __p, size_type __n) 234s 1949: { __a.deallocate(__p, __n); } 234s 1949: # 662 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static void 234s 1949: construct(allocator_type& __a __attribute__((__unused__)), 234s 1949: _Up* __p, _Args&&... __args) 234s 1949: 234s 1949: noexcept(noexcept(__a.construct(__p, std::forward<_Args>(__args)...))) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: 234s 1949: __a.construct(__p, std::forward<_Args>(__args)...); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 689 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static void 234s 1949: destroy(allocator_type& __a __attribute__((__unused__)), _Up* __p) 234s 1949: noexcept(is_nothrow_destructible<_Up>::value) 234s 1949: { 234s 1949: 234s 1949: __a.destroy(__p); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static size_type 234s 1949: max_size(const allocator_type& __a __attribute__((__unused__))) noexcept 234s 1949: { 234s 1949: 234s 1949: return __a.max_size(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static allocator_type 234s 1949: select_on_container_copy_construction(const allocator_type& __rhs) 234s 1949: { return __rhs; } 234s 1949: }; 234s 1949: # 736 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template<> 234s 1949: struct allocator_traits> 234s 1949: { 234s 1949: 234s 1949: using allocator_type = allocator; 234s 1949: 234s 1949: 234s 1949: using value_type = void; 234s 1949: 234s 1949: 234s 1949: using pointer = void*; 234s 1949: 234s 1949: 234s 1949: using const_pointer = const void*; 234s 1949: 234s 1949: 234s 1949: using void_pointer = void*; 234s 1949: 234s 1949: 234s 1949: using const_void_pointer = const void*; 234s 1949: 234s 1949: 234s 1949: using difference_type = std::ptrdiff_t; 234s 1949: 234s 1949: 234s 1949: using size_type = std::size_t; 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_copy_assignment = false_type; 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_move_assignment = true_type; 234s 1949: 234s 1949: 234s 1949: using propagate_on_container_swap = false_type; 234s 1949: 234s 1949: 234s 1949: using is_always_equal = true_type; 234s 1949: 234s 1949: template 234s 1949: using rebind_alloc = allocator<_Up>; 234s 1949: 234s 1949: template 234s 1949: using rebind_traits = allocator_traits>; 234s 1949: 234s 1949: 234s 1949: static void* 234s 1949: allocate(allocator_type&, size_type, const void* = nullptr) = delete; 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: deallocate(allocator_type&, void*, size_type) = delete; 234s 1949: # 800 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static void 234s 1949: construct(allocator_type&, _Up* __p, _Args&&... __args) 234s 1949: noexcept(__is_nothrow_new_constructible<_Up, _Args...>) 234s 1949: { std::_Construct(__p, std::forward<_Args>(__args)...); } 234s 1949: # 814 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static void 234s 1949: destroy(allocator_type&, _Up* __p) 234s 1949: noexcept(is_nothrow_destructible<_Up>::value) 234s 1949: { std::_Destroy(__p); } 234s 1949: 234s 1949: 234s 1949: static size_type 234s 1949: max_size(const allocator_type&) = delete; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static allocator_type 234s 1949: select_on_container_copy_construction(const allocator_type& __rhs) 234s 1949: { return __rhs; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: constexpr inline void 234s 1949: __alloc_on_copy(_Alloc& __one, const _Alloc& __two) 234s 1949: { 234s 1949: using __traits = allocator_traits<_Alloc>; 234s 1949: using __pocca = 234s 1949: typename __traits::propagate_on_container_copy_assignment::type; 234s 1949: if constexpr (__pocca::value) 234s 1949: __one = __two; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: constexpr _Alloc 234s 1949: __alloc_on_copy(const _Alloc& __a) 234s 1949: { 234s 1949: typedef allocator_traits<_Alloc> __traits; 234s 1949: return __traits::select_on_container_copy_construction(__a); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: constexpr inline void 234s 1949: __alloc_on_move(_Alloc& __one, _Alloc& __two) 234s 1949: { 234s 1949: using __traits = allocator_traits<_Alloc>; 234s 1949: using __pocma 234s 1949: = typename __traits::propagate_on_container_move_assignment::type; 234s 1949: if constexpr (__pocma::value) 234s 1949: __one = std::move(__two); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: constexpr inline void 234s 1949: __alloc_on_swap(_Alloc& __one, _Alloc& __two) 234s 1949: { 234s 1949: using __traits = allocator_traits<_Alloc>; 234s 1949: using __pocs = typename __traits::propagate_on_container_swap::type; 234s 1949: if constexpr (__pocs::value) 234s 1949: { 234s 1949: using std::swap; 234s 1949: swap(__one, __two); 234s 1949: } 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: template, 234s 1949: typename = void> 234s 1949: struct __is_alloc_insertable_impl 234s 1949: : false_type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_alloc_insertable_impl<_Alloc, _Tp, _ValueT, 234s 1949: __void_t::construct( 234s 1949: std::declval<_Alloc&>(), std::declval<_ValueT*>(), 234s 1949: std::declval<_Tp>()))>> 234s 1949: : true_type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_copy_insertable 234s 1949: : __is_alloc_insertable_impl<_Alloc, 234s 1949: typename _Alloc::value_type const&>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_copy_insertable> 234s 1949: : is_copy_constructible<_Tp> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_move_insertable 234s 1949: : __is_alloc_insertable_impl<_Alloc, typename _Alloc::value_type>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_move_insertable> 234s 1949: : is_move_constructible<_Tp> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_allocator : false_type { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_allocator<_Alloc, 234s 1949: __void_t().allocate(size_t{}))>> 234s 1949: : true_type { }; 234s 1949: 234s 1949: template 234s 1949: using _RequireAllocator 234s 1949: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; 234s 1949: 234s 1949: template 234s 1949: using _RequireNotAllocator 234s 1949: = typename enable_if::value, _Alloc>::type; 234s 1949: # 970 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: struct __alloc_swap 234s 1949: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; 234s 1949: 234s 1949: template 234s 1949: struct __alloc_swap<_Alloc, false> 234s 1949: { 234s 1949: static void 234s 1949: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept 234s 1949: { 234s 1949: 234s 1949: if (__one != __two) 234s 1949: swap(__one, __two); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template, 234s 1949: is_nothrow_move_constructible>::value> 234s 1949: struct __shrink_to_fit_aux 234s 1949: { static bool _S_do_it(_Tp&) noexcept { return false; } }; 234s 1949: 234s 1949: template 234s 1949: struct __shrink_to_fit_aux<_Tp, true> 234s 1949: { 234s 1949: 234s 1949: static bool 234s 1949: _S_do_it(_Tp& __c) noexcept 234s 1949: { 234s 1949: 234s 1949: try 234s 1949: { 234s 1949: _Tp(__make_move_if_noexcept_iterator(__c.begin()), 234s 1949: __make_move_if_noexcept_iterator(__c.end()), 234s 1949: __c.get_allocator()).swap(__c); 234s 1949: return true; 234s 1949: } 234s 1949: catch(...) 234s 1949: { return false; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: }; 234s 1949: # 1023 "/usr/include/c++/15/bits/alloc_traits.h" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Allocator& __alloc) 234s 1949: { 234s 1949: for (; __first != __last; ++__first) 234s 1949: 234s 1949: 234s 1949: 234s 1949: allocator_traits<_Allocator>::destroy(__alloc, 234s 1949: std::__addressof(*__first)); 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__((__always_inline__)) 234s 1949: inline void 234s 1949: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: allocator<_Tp>&) 234s 1949: { 234s 1949: std::_Destroy(__first, __last); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 37 "/usr/include/c++/15/ext/alloc_traits.h" 2 3 4 234s 1949: 234s 1949: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __alloc_traits 234s 1949: 234s 1949: : std::allocator_traits<_Alloc> 234s 1949: 234s 1949: { 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: typedef std::allocator_traits<_Alloc> _Base_type; 234s 1949: typedef typename _Base_type::value_type value_type; 234s 1949: typedef typename _Base_type::pointer pointer; 234s 1949: typedef typename _Base_type::const_pointer const_pointer; 234s 1949: typedef typename _Base_type::size_type size_type; 234s 1949: typedef typename _Base_type::difference_type difference_type; 234s 1949: 234s 1949: typedef value_type& reference; 234s 1949: typedef const value_type& const_reference; 234s 1949: using _Base_type::allocate; 234s 1949: using _Base_type::deallocate; 234s 1949: using _Base_type::construct; 234s 1949: using _Base_type::destroy; 234s 1949: using _Base_type::max_size; 234s 1949: 234s 1949: private: 234s 1949: template 234s 1949: using __is_custom_pointer 234s 1949: = std::__and_, 234s 1949: std::__not_>>; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static constexpr 234s 1949: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 234s 1949: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) 234s 1949: noexcept(noexcept(_Base_type::construct(__a, std::__to_address(__p), 234s 1949: std::forward<_Args>(__args)...))) 234s 1949: { 234s 1949: _Base_type::construct(__a, std::__to_address(__p), 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static constexpr 234s 1949: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 234s 1949: destroy(_Alloc& __a, _Ptr __p) 234s 1949: noexcept(noexcept(_Base_type::destroy(__a, std::__to_address(__p)))) 234s 1949: { _Base_type::destroy(__a, std::__to_address(__p)); } 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static constexpr _Alloc _S_select_on_copy(const _Alloc& __a) 234s 1949: { return _Base_type::select_on_container_copy_construction(__a); } 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static constexpr void _S_on_swap(_Alloc& __a, _Alloc& __b) 234s 1949: { std::__alloc_on_swap(__a, __b); } 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static constexpr bool _S_propagate_on_copy_assign() 234s 1949: { return _Base_type::propagate_on_container_copy_assignment::value; } 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static constexpr bool _S_propagate_on_move_assign() 234s 1949: { return _Base_type::propagate_on_container_move_assignment::value; } 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static constexpr bool _S_propagate_on_swap() 234s 1949: { return _Base_type::propagate_on_container_swap::value; } 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static constexpr bool _S_always_equal() 234s 1949: { return _Base_type::is_always_equal::value; } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: static constexpr bool _S_nothrow_move() 234s 1949: { return _S_propagate_on_move_assign() || _S_always_equal(); } 234s 1949: 234s 1949: template 234s 1949: struct rebind 234s 1949: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; 234s 1949: # 182 "/usr/include/c++/15/ext/alloc_traits.h" 3 4 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 42 "/usr/include/c++/15/bits/basic_string.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 49 "/usr/include/c++/15/bits/basic_string.h" 2 3 4 234s 1949: # 68 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: # 93 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: class basic_string 234s 1949: { 234s 1949: # 104 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 234s 1949: rebind<_CharT>::other _Char_alloc_type; 234s 1949: 234s 1949: 234s 1949: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: typedef _Traits traits_type; 234s 1949: typedef typename _Traits::char_type value_type; 234s 1949: typedef _Char_alloc_type allocator_type; 234s 1949: typedef typename _Alloc_traits::size_type size_type; 234s 1949: typedef typename _Alloc_traits::difference_type difference_type; 234s 1949: typedef typename _Alloc_traits::reference reference; 234s 1949: typedef typename _Alloc_traits::const_reference const_reference; 234s 1949: typedef typename _Alloc_traits::pointer pointer; 234s 1949: typedef typename _Alloc_traits::const_pointer const_pointer; 234s 1949: typedef __gnu_cxx::__normal_iterator iterator; 234s 1949: typedef __gnu_cxx::__normal_iterator 234s 1949: const_iterator; 234s 1949: typedef std::reverse_iterator const_reverse_iterator; 234s 1949: typedef std::reverse_iterator reverse_iterator; 234s 1949: 234s 1949: 234s 1949: static const size_type npos = static_cast(-1); 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef const_iterator __const_iterator; 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: static pointer 234s 1949: _S_allocate(_Char_alloc_type& __a, size_type __n) 234s 1949: { 234s 1949: pointer __p = _Alloc_traits::allocate(__a, __n); 234s 1949: # 152 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: return __p; 234s 1949: } 234s 1949: # 197 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: struct _Alloc_hider : allocator_type 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Alloc_hider(pointer __dat, const _Alloc& __a) 234s 1949: : allocator_type(__a), _M_p(__dat) { } 234s 1949: 234s 1949: 234s 1949: _Alloc_hider(pointer __dat, _Alloc&& __a = _Alloc()) 234s 1949: : allocator_type(std::move(__a)), _M_p(__dat) { } 234s 1949: 234s 1949: 234s 1949: pointer _M_p; 234s 1949: }; 234s 1949: 234s 1949: _Alloc_hider _M_dataplus; 234s 1949: size_type _M_string_length; 234s 1949: 234s 1949: enum { _S_local_capacity = 15 / sizeof(_CharT) }; 234s 1949: 234s 1949: union 234s 1949: { 234s 1949: _CharT _M_local_buf[_S_local_capacity + 1]; 234s 1949: size_type _M_allocated_capacity; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_data(pointer __p) 234s 1949: { _M_dataplus._M_p = __p; } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_length(size_type __length) 234s 1949: { _M_string_length = __length; } 234s 1949: 234s 1949: 234s 1949: pointer 234s 1949: _M_data() const 234s 1949: { return _M_dataplus._M_p; } 234s 1949: 234s 1949: 234s 1949: pointer 234s 1949: _M_local_data() 234s 1949: { 234s 1949: 234s 1949: return std::pointer_traits::pointer_to(*_M_local_buf); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const_pointer 234s 1949: _M_local_data() const 234s 1949: { 234s 1949: 234s 1949: return std::pointer_traits::pointer_to(*_M_local_buf); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_capacity(size_type __capacity) 234s 1949: { _M_allocated_capacity = __capacity; } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_set_length(size_type __n) 234s 1949: { 234s 1949: _M_length(__n); 234s 1949: traits_type::assign(_M_data()[__n], _CharT()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: _M_is_local() const 234s 1949: { 234s 1949: if (_M_data() == _M_local_data()) 234s 1949: { 234s 1949: if (_M_string_length > _S_local_capacity) 234s 1949: __builtin_unreachable(); 234s 1949: return true; 234s 1949: } 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: pointer 234s 1949: _M_create(size_type&, size_type); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_dispose() 234s 1949: { 234s 1949: if (!_M_is_local()) 234s 1949: _M_destroy(_M_allocated_capacity); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_destroy(size_type __size) throw() 234s 1949: { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); } 234s 1949: # 332 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_construct(_InIterator __beg, _InIterator __end, 234s 1949: std::input_iterator_tag); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_construct(_FwdIterator __beg, _FwdIterator __end, 234s 1949: std::forward_iterator_tag); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_construct(size_type __req, _CharT __c); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_construct(const _CharT *__c, size_type __n); 234s 1949: 234s 1949: 234s 1949: allocator_type& 234s 1949: _M_get_allocator() 234s 1949: { return _M_dataplus; } 234s 1949: 234s 1949: 234s 1949: const allocator_type& 234s 1949: _M_get_allocator() const 234s 1949: { return _M_dataplus; } 234s 1949: 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: void 234s 1949: _M_init_local_buf() noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: constexpr 234s 1949: pointer 234s 1949: _M_use_local_data() noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_local_data(); 234s 1949: } 234s 1949: 234s 1949: private: 234s 1949: # 407 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: size_type 234s 1949: _M_check(size_type __pos, const char* __s) const 234s 1949: { 234s 1949: if (__pos > this->size()) 234s 1949: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") 234s 1949: , 234s 1949: __s, __pos, this->size()); 234s 1949: return __pos; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_check_length(size_type __n1, size_type __n2, const char* __s) const 234s 1949: { 234s 1949: if (this->max_size() - (this->size() - __n1) < __n2) 234s 1949: __throw_length_error((__s)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: _M_limit(size_type __pos, size_type __off) const noexcept 234s 1949: { 234s 1949: const bool __testoff = __off < this->size() - __pos; 234s 1949: return __testoff ? __off : this->size() - __pos; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: _M_disjunct(const _CharT* __s) const noexcept 234s 1949: { 234s 1949: return (less()(__s, _M_data()) 234s 1949: || less()(_M_data() + this->size(), __s)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: _S_copy(_CharT* __d, const _CharT* __s, size_type __n) 234s 1949: { 234s 1949: if (__n == 1) 234s 1949: traits_type::assign(*__d, *__s); 234s 1949: else 234s 1949: traits_type::copy(__d, __s, __n); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: _S_move(_CharT* __d, const _CharT* __s, size_type __n) 234s 1949: { 234s 1949: if (__n == 1) 234s 1949: traits_type::assign(*__d, *__s); 234s 1949: else 234s 1949: traits_type::move(__d, __s, __n); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: _S_assign(_CharT* __d, size_type __n, _CharT __c) 234s 1949: { 234s 1949: if (__n == 1) 234s 1949: traits_type::assign(*__d, __c); 234s 1949: else 234s 1949: traits_type::assign(__d, __n, __c); 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: static void 234s 1949: _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) 234s 1949: { 234s 1949: 234s 1949: using _IterBase = decltype(std::__niter_base(__k1)); 234s 1949: if constexpr (__or_, 234s 1949: is_same<_IterBase, const _CharT*>>::value) 234s 1949: _S_copy(__p, std::__niter_base(__k1), __k2 - __k1); 234s 1949: # 502 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: else 234s 1949: 234s 1949: for (; __k1 != __k2; ++__k1, (void)++__p) 234s 1949: traits_type::assign(*__p, static_cast<_CharT>(*__k1)); 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 549 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: static int 234s 1949: _S_compare(size_type __n1, size_type __n2) noexcept 234s 1949: { 234s 1949: const difference_type __d = difference_type(__n1 - __n2); 234s 1949: 234s 1949: if (__d > __gnu_cxx::__numeric_traits::__max) 234s 1949: return __gnu_cxx::__numeric_traits::__max; 234s 1949: else if (__d < __gnu_cxx::__numeric_traits::__min) 234s 1949: return __gnu_cxx::__numeric_traits::__min; 234s 1949: else 234s 1949: return int(__d); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_assign(const basic_string&); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 234s 1949: size_type __len2); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_erase(size_type __pos, size_type __n); 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string() 234s 1949: noexcept(is_nothrow_default_constructible<_Alloc>::value) 234s 1949: 234s 1949: 234s 1949: 234s 1949: : _M_dataplus(_M_local_data()) 234s 1949: { 234s 1949: _M_init_local_buf(); 234s 1949: _M_set_length(0); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: basic_string(const _Alloc& __a) noexcept 234s 1949: : _M_dataplus(_M_local_data(), __a) 234s 1949: { 234s 1949: _M_init_local_buf(); 234s 1949: _M_set_length(0); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string(const basic_string& __str) 234s 1949: : _M_dataplus(_M_local_data(), 234s 1949: _Alloc_traits::_S_select_on_copy(__str._M_get_allocator())) 234s 1949: { 234s 1949: _M_construct(__str._M_data(), __str.length()); 234s 1949: } 234s 1949: # 628 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string(const basic_string& __str, size_type __pos, 234s 1949: const _Alloc& __a = _Alloc()) 234s 1949: : _M_dataplus(_M_local_data(), __a) 234s 1949: { 234s 1949: const _CharT* __start = __str._M_data() 234s 1949: + __str._M_check(__pos, "basic_string::basic_string"); 234s 1949: _M_construct(__start, __start + __str._M_limit(__pos, npos), 234s 1949: std::forward_iterator_tag()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string(const basic_string& __str, size_type __pos, 234s 1949: size_type __n) 234s 1949: : _M_dataplus(_M_local_data()) 234s 1949: { 234s 1949: const _CharT* __start = __str._M_data() 234s 1949: + __str._M_check(__pos, "basic_string::basic_string"); 234s 1949: _M_construct(__start, __start + __str._M_limit(__pos, __n), 234s 1949: std::forward_iterator_tag()); 234s 1949: } 234s 1949: # 663 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string(const basic_string& __str, size_type __pos, 234s 1949: size_type __n, const _Alloc& __a) 234s 1949: : _M_dataplus(_M_local_data(), __a) 234s 1949: { 234s 1949: const _CharT* __start 234s 1949: = __str._M_data() + __str._M_check(__pos, "string::string"); 234s 1949: _M_construct(__start, __start + __str._M_limit(__pos, __n), 234s 1949: std::forward_iterator_tag()); 234s 1949: } 234s 1949: # 683 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string(const _CharT* __s, size_type __n, 234s 1949: const _Alloc& __a = _Alloc()) 234s 1949: : _M_dataplus(_M_local_data(), __a) 234s 1949: { 234s 1949: 234s 1949: if (__s == 0 && __n > 0) 234s 1949: std::__throw_logic_error(("basic_string: " "construction from null is not valid") 234s 1949: ); 234s 1949: _M_construct(__s, __s + __n, std::forward_iterator_tag()); 234s 1949: } 234s 1949: # 705 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) 234s 1949: : _M_dataplus(_M_local_data(), __a) 234s 1949: { 234s 1949: 234s 1949: if (__s == 0) 234s 1949: std::__throw_logic_error(("basic_string: " "construction from null is not valid") 234s 1949: ); 234s 1949: const _CharT* __end = __s + traits_type::length(__s); 234s 1949: _M_construct(__s, __end, forward_iterator_tag()); 234s 1949: } 234s 1949: # 728 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) 234s 1949: : _M_dataplus(_M_local_data(), __a) 234s 1949: { _M_construct(__n, __c); } 234s 1949: # 741 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string(basic_string&& __str) noexcept 234s 1949: : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator())) 234s 1949: { 234s 1949: if (__str._M_is_local()) 234s 1949: { 234s 1949: _M_init_local_buf(); 234s 1949: traits_type::copy(_M_local_buf, __str._M_local_buf, 234s 1949: __str.length() + 1); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: _M_data(__str._M_data()); 234s 1949: _M_capacity(__str._M_allocated_capacity); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_length(__str.length()); 234s 1949: __str._M_data(__str._M_use_local_data()); 234s 1949: __str._M_set_length(0); 234s 1949: } 234s 1949: # 797 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) 234s 1949: : _M_dataplus(_M_local_data(), __a) 234s 1949: { _M_construct(__l.begin(), __l.end(), std::forward_iterator_tag()); } 234s 1949: 234s 1949: 234s 1949: basic_string(const basic_string& __str, const _Alloc& __a) 234s 1949: : _M_dataplus(_M_local_data(), __a) 234s 1949: { _M_construct(__str.begin(), __str.end(), std::forward_iterator_tag()); } 234s 1949: 234s 1949: 234s 1949: basic_string(basic_string&& __str, const _Alloc& __a) 234s 1949: noexcept(_Alloc_traits::_S_always_equal()) 234s 1949: : _M_dataplus(_M_local_data(), __a) 234s 1949: { 234s 1949: if (__str._M_is_local()) 234s 1949: { 234s 1949: _M_init_local_buf(); 234s 1949: traits_type::copy(_M_local_buf, __str._M_local_buf, 234s 1949: __str.length() + 1); 234s 1949: _M_length(__str.length()); 234s 1949: __str._M_set_length(0); 234s 1949: } 234s 1949: else if (_Alloc_traits::_S_always_equal() 234s 1949: || __str.get_allocator() == __a) 234s 1949: { 234s 1949: _M_data(__str._M_data()); 234s 1949: _M_length(__str.length()); 234s 1949: _M_capacity(__str._M_allocated_capacity); 234s 1949: __str._M_data(__str._M_use_local_data()); 234s 1949: __str._M_set_length(0); 234s 1949: } 234s 1949: else 234s 1949: _M_construct(__str.begin(), __str.end(), std::forward_iterator_tag()); 234s 1949: } 234s 1949: # 846 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template> 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string(_InputIterator __beg, _InputIterator __end, 234s 1949: const _Alloc& __a = _Alloc()) 234s 1949: : _M_dataplus(_M_local_data(), __a), _M_string_length(0) 234s 1949: { 234s 1949: 234s 1949: _M_construct(__beg, __end, std::__iterator_category(__beg)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 894 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: ~basic_string() 234s 1949: { _M_dispose(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: operator=(const basic_string& __str) 234s 1949: { 234s 1949: return this->assign(__str); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: operator=(const _CharT* __s) 234s 1949: { return this->assign(__s); } 234s 1949: # 925 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: operator=(_CharT __c) 234s 1949: { 234s 1949: this->assign(1, __c); 234s 1949: return *this; 234s 1949: } 234s 1949: # 943 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: operator=(basic_string&& __str) 234s 1949: noexcept(_Alloc_traits::_S_nothrow_move()) 234s 1949: { 234s 1949: const bool __equal_allocs = _Alloc_traits::_S_always_equal() 234s 1949: || _M_get_allocator() == __str._M_get_allocator(); 234s 1949: if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign() 234s 1949: && !__equal_allocs) 234s 1949: { 234s 1949: 234s 1949: _M_destroy(_M_allocated_capacity); 234s 1949: _M_data(_M_local_data()); 234s 1949: _M_set_length(0); 234s 1949: } 234s 1949: 234s 1949: std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); 234s 1949: 234s 1949: if (__str._M_is_local()) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__builtin_expect(std::__addressof(__str) != this, true)) 234s 1949: { 234s 1949: if (__str.size()) 234s 1949: this->_S_copy(_M_data(), __str._M_data(), __str.size()); 234s 1949: _M_set_length(__str.size()); 234s 1949: } 234s 1949: } 234s 1949: else if (_Alloc_traits::_S_propagate_on_move_assign() || __equal_allocs) 234s 1949: { 234s 1949: 234s 1949: pointer __data = nullptr; 234s 1949: size_type __capacity; 234s 1949: if (!_M_is_local()) 234s 1949: { 234s 1949: if (__equal_allocs) 234s 1949: { 234s 1949: 234s 1949: __data = _M_data(); 234s 1949: __capacity = _M_allocated_capacity; 234s 1949: } 234s 1949: else 234s 1949: _M_destroy(_M_allocated_capacity); 234s 1949: } 234s 1949: 234s 1949: _M_data(__str._M_data()); 234s 1949: _M_length(__str.length()); 234s 1949: _M_capacity(__str._M_allocated_capacity); 234s 1949: if (__data) 234s 1949: { 234s 1949: __str._M_data(__data); 234s 1949: __str._M_capacity(__capacity); 234s 1949: } 234s 1949: else 234s 1949: __str._M_data(__str._M_use_local_data()); 234s 1949: } 234s 1949: else 234s 1949: _M_assign(__str); 234s 1949: __str.clear(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: operator=(initializer_list<_CharT> __l) 234s 1949: { 234s 1949: this->assign(__l.begin(), __l.size()); 234s 1949: return *this; 234s 1949: } 234s 1949: # 1045 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: iterator 234s 1949: begin() noexcept 234s 1949: { return iterator(_M_data()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: begin() const noexcept 234s 1949: { return const_iterator(_M_data()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: iterator 234s 1949: end() noexcept 234s 1949: { return iterator(_M_data() + this->size()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: end() const noexcept 234s 1949: { return const_iterator(_M_data() + this->size()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reverse_iterator 234s 1949: rbegin() noexcept 234s 1949: { return reverse_iterator(this->end()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: rbegin() const noexcept 234s 1949: { return const_reverse_iterator(this->end()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reverse_iterator 234s 1949: rend() noexcept 234s 1949: { return reverse_iterator(this->begin()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: rend() const noexcept 234s 1949: { return const_reverse_iterator(this->begin()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: cbegin() const noexcept 234s 1949: { return const_iterator(this->_M_data()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: cend() const noexcept 234s 1949: { return const_iterator(this->_M_data() + this->size()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: crbegin() const noexcept 234s 1949: { return const_reverse_iterator(this->end()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: crend() const noexcept 234s 1949: { return const_reverse_iterator(this->begin()); } 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { 234s 1949: size_type __sz = _M_string_length; 234s 1949: if (__sz > max_size ()) 234s 1949: __builtin_unreachable (); 234s 1949: return __sz; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: length() const noexcept 234s 1949: { return size(); } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { 234s 1949: const size_t __diffmax 234s 1949: = __gnu_cxx::__numeric_traits::__max / sizeof(_CharT); 234s 1949: const size_t __allocmax = _Alloc_traits::max_size(_M_get_allocator()); 234s 1949: return (std::min)(__diffmax, __allocmax) - 1; 234s 1949: } 234s 1949: # 1199 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: void 234s 1949: resize(size_type __n, _CharT __c); 234s 1949: # 1213 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: void 234s 1949: resize(size_type __n) 234s 1949: { this->resize(__n, _CharT()); } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: void 234s 1949: shrink_to_fit() noexcept 234s 1949: { reserve(); } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 1266 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: __resize_and_overwrite(size_type __n, _Operation __op); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: capacity() const noexcept 234s 1949: { 234s 1949: size_t __sz = _M_is_local() ? size_type(_S_local_capacity) 234s 1949: : _M_allocated_capacity; 234s 1949: if (__sz < _S_local_capacity || __sz > max_size ()) 234s 1949: __builtin_unreachable (); 234s 1949: return __sz; 234s 1949: } 234s 1949: # 1303 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: void 234s 1949: reserve(size_type __res_arg); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: reserve(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { _M_set_length(0); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: empty() const noexcept 234s 1949: { return _M_string_length == 0; } 234s 1949: # 1345 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: operator[] (size_type __pos) const noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__pos <= size())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return _M_data()[__pos]; 234s 1949: } 234s 1949: # 1363 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: operator[](size_type __pos) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__pos <= size())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: ; 234s 1949: return _M_data()[__pos]; 234s 1949: } 234s 1949: # 1385 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: at(size_type __n) const 234s 1949: { 234s 1949: if (__n >= this->size()) 234s 1949: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 234s 1949: 234s 1949: , 234s 1949: __n, this->size()); 234s 1949: return _M_data()[__n]; 234s 1949: } 234s 1949: # 1407 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: at(size_type __n) 234s 1949: { 234s 1949: if (__n >= size()) 234s 1949: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 234s 1949: 234s 1949: , 234s 1949: __n, this->size()); 234s 1949: return _M_data()[__n]; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: front() noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return operator[](0); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: front() const noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return operator[](0); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: back() noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return operator[](this->size() - 1); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: back() const noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return operator[](this->size() - 1); 234s 1949: } 234s 1949: # 1475 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: operator+=(const basic_string& __str) 234s 1949: { return this->append(__str); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: operator+=(const _CharT* __s) 234s 1949: { return this->append(__s); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: operator+=(_CharT __c) 234s 1949: { 234s 1949: this->push_back(__c); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: operator+=(initializer_list<_CharT> __l) 234s 1949: { return this->append(__l.begin(), __l.size()); } 234s 1949: # 1533 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: append(const basic_string& __str) 234s 1949: { return this->append(__str._M_data(), __str.size()); } 234s 1949: # 1551 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: append(const basic_string& __str, size_type __pos, size_type __n = npos) 234s 1949: { return this->append(__str._M_data() 234s 1949: + __str._M_check(__pos, "basic_string::append"), 234s 1949: __str._M_limit(__pos, __n)); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: append(const _CharT* __s, size_type __n) 234s 1949: { 234s 1949: ; 234s 1949: _M_check_length(size_type(0), __n, "basic_string::append"); 234s 1949: return _M_append(__s, __n); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: append(const _CharT* __s) 234s 1949: { 234s 1949: ; 234s 1949: const size_type __n = traits_type::length(__s); 234s 1949: _M_check_length(size_type(0), __n, "basic_string::append"); 234s 1949: return _M_append(__s, __n); 234s 1949: } 234s 1949: # 1596 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: append(size_type __n, _CharT __c) 234s 1949: { return _M_replace_aux(this->size(), size_type(0), __n, __c); } 234s 1949: # 1659 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: append(initializer_list<_CharT> __l) 234s 1949: { return this->append(__l.begin(), __l.size()); } 234s 1949: # 1674 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template> 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: append(_InputIterator __first, _InputIterator __last) 234s 1949: { return this->replace(end(), end(), __first, __last); } 234s 1949: # 1722 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: void 234s 1949: push_back(_CharT __c) 234s 1949: { 234s 1949: const size_type __size = this->size(); 234s 1949: if (__size + 1 > this->capacity()) 234s 1949: this->_M_mutate(__size, size_type(0), 0, size_type(1)); 234s 1949: traits_type::assign(this->_M_data()[__size], __c); 234s 1949: this->_M_set_length(__size + 1); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: assign(const basic_string& __str) 234s 1949: { 234s 1949: 234s 1949: if (_Alloc_traits::_S_propagate_on_copy_assign()) 234s 1949: { 234s 1949: if (!_Alloc_traits::_S_always_equal() && !_M_is_local() 234s 1949: && _M_get_allocator() != __str._M_get_allocator()) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__str.size() <= _S_local_capacity) 234s 1949: { 234s 1949: _M_destroy(_M_allocated_capacity); 234s 1949: _M_data(_M_use_local_data()); 234s 1949: _M_set_length(0); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: const auto __len = __str.size(); 234s 1949: auto __alloc = __str._M_get_allocator(); 234s 1949: 234s 1949: auto __ptr = _S_allocate(__alloc, __len + 1); 234s 1949: _M_destroy(_M_allocated_capacity); 234s 1949: _M_data(__ptr); 234s 1949: _M_capacity(__len); 234s 1949: _M_set_length(__len); 234s 1949: } 234s 1949: } 234s 1949: std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator()); 234s 1949: } 234s 1949: 234s 1949: this->_M_assign(__str); 234s 1949: return *this; 234s 1949: } 234s 1949: # 1784 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: assign(basic_string&& __str) 234s 1949: noexcept(_Alloc_traits::_S_nothrow_move()) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: return *this = std::move(__str); 234s 1949: } 234s 1949: # 1808 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: assign(const basic_string& __str, size_type __pos, size_type __n = npos) 234s 1949: { return _M_replace(size_type(0), this->size(), __str._M_data() 234s 1949: + __str._M_check(__pos, "basic_string::assign"), 234s 1949: __str._M_limit(__pos, __n)); } 234s 1949: # 1825 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: assign(const _CharT* __s, size_type __n) 234s 1949: { 234s 1949: ; 234s 1949: return _M_replace(size_type(0), this->size(), __s, __n); 234s 1949: } 234s 1949: # 1842 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: assign(const _CharT* __s) 234s 1949: { 234s 1949: ; 234s 1949: return _M_replace(size_type(0), this->size(), __s, 234s 1949: traits_type::length(__s)); 234s 1949: } 234s 1949: # 1860 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: assign(size_type __n, _CharT __c) 234s 1949: { return _M_replace_aux(size_type(0), this->size(), __n, __c); } 234s 1949: # 1874 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template> 234s 1949: 234s 1949: basic_string& 234s 1949: assign(_InputIterator __first, _InputIterator __last) 234s 1949: { 234s 1949: using _IterTraits = iterator_traits<_InputIterator>; 234s 1949: if constexpr (is_pointer::value 234s 1949: && is_same::value) 234s 1949: { 234s 1949: ; 234s 1949: return _M_replace(size_type(0), size(), 234s 1949: std::__niter_base(__first), __last - __first); 234s 1949: } 234s 1949: # 1901 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: else 234s 1949: return *this = basic_string(__first, __last, get_allocator()); 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 1937 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: assign(initializer_list<_CharT> __l) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const size_type __n = __l.size(); 234s 1949: if (__n > capacity()) 234s 1949: *this = basic_string(__l.begin(), __l.end(), get_allocator()); 234s 1949: else 234s 1949: { 234s 1949: if (__n) 234s 1949: _S_copy(_M_data(), __l.begin(), __n); 234s 1949: _M_set_length(__n); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: # 2007 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __p, size_type __n, _CharT __c) 234s 1949: { 234s 1949: ; 234s 1949: const size_type __pos = __p - begin(); 234s 1949: this->replace(__p, __p, __n, __c); 234s 1949: return iterator(this->_M_data() + __pos); 234s 1949: } 234s 1949: # 2050 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template> 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __p, _InputIterator __beg, _InputIterator __end) 234s 1949: { 234s 1949: ; 234s 1949: const size_type __pos = __p - begin(); 234s 1949: this->replace(__p, __p, __beg, __end); 234s 1949: return iterator(this->_M_data() + __pos); 234s 1949: } 234s 1949: # 2118 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __p, initializer_list<_CharT> __l) 234s 1949: { return this->insert(__p, __l.begin(), __l.end()); } 234s 1949: # 2146 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: insert(size_type __pos1, const basic_string& __str) 234s 1949: { return this->replace(__pos1, size_type(0), 234s 1949: __str._M_data(), __str.size()); } 234s 1949: # 2170 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: insert(size_type __pos1, const basic_string& __str, 234s 1949: size_type __pos2, size_type __n = npos) 234s 1949: { return this->replace(__pos1, size_type(0), __str._M_data() 234s 1949: + __str._M_check(__pos2, "basic_string::insert"), 234s 1949: __str._M_limit(__pos2, __n)); } 234s 1949: # 2194 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: insert(size_type __pos, const _CharT* __s, size_type __n) 234s 1949: { return this->replace(__pos, size_type(0), __s, __n); } 234s 1949: # 2214 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: insert(size_type __pos, const _CharT* __s) 234s 1949: { 234s 1949: ; 234s 1949: return this->replace(__pos, size_type(0), __s, 234s 1949: traits_type::length(__s)); 234s 1949: } 234s 1949: # 2239 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: insert(size_type __pos, size_type __n, _CharT __c) 234s 1949: { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), 234s 1949: size_type(0), __n, __c); } 234s 1949: # 2258 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: insert(__const_iterator __p, _CharT __c) 234s 1949: { 234s 1949: ; 234s 1949: const size_type __pos = __p - begin(); 234s 1949: _M_replace_aux(__pos, size_type(0), size_type(1), __c); 234s 1949: return iterator(_M_data() + __pos); 234s 1949: } 234s 1949: # 2321 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: erase(size_type __pos = 0, size_type __n = npos) 234s 1949: { 234s 1949: _M_check(__pos, "basic_string::erase"); 234s 1949: if (__n == npos) 234s 1949: this->_M_set_length(__pos); 234s 1949: else if (__n != 0) 234s 1949: this->_M_erase(__pos, _M_limit(__pos, __n)); 234s 1949: return *this; 234s 1949: } 234s 1949: # 2341 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: erase(__const_iterator __position) 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: const size_type __pos = __position - begin(); 234s 1949: this->_M_erase(__pos, size_type(1)); 234s 1949: return iterator(_M_data() + __pos); 234s 1949: } 234s 1949: # 2361 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: erase(__const_iterator __first, __const_iterator __last) 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: const size_type __pos = __first - begin(); 234s 1949: if (__last == end()) 234s 1949: this->_M_set_length(__pos); 234s 1949: else 234s 1949: this->_M_erase(__pos, __last - __first); 234s 1949: return iterator(this->_M_data() + __pos); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: pop_back() noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: _M_erase(size() - 1, 1); 234s 1949: } 234s 1949: # 2407 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: replace(size_type __pos, size_type __n, const basic_string& __str) 234s 1949: { return this->replace(__pos, __n, __str._M_data(), __str.size()); } 234s 1949: # 2430 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: replace(size_type __pos1, size_type __n1, const basic_string& __str, 234s 1949: size_type __pos2, size_type __n2 = npos) 234s 1949: { return this->replace(__pos1, __n1, __str._M_data() 234s 1949: + __str._M_check(__pos2, "basic_string::replace"), 234s 1949: __str._M_limit(__pos2, __n2)); } 234s 1949: # 2456 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: replace(size_type __pos, size_type __n1, const _CharT* __s, 234s 1949: size_type __n2) 234s 1949: { 234s 1949: ; 234s 1949: return _M_replace(_M_check(__pos, "basic_string::replace"), 234s 1949: _M_limit(__pos, __n1), __s, __n2); 234s 1949: } 234s 1949: # 2482 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: replace(size_type __pos, size_type __n1, const _CharT* __s) 234s 1949: { 234s 1949: ; 234s 1949: return this->replace(__pos, __n1, __s, traits_type::length(__s)); 234s 1949: } 234s 1949: # 2507 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) 234s 1949: { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), 234s 1949: _M_limit(__pos, __n1), __n2, __c); } 234s 1949: # 2526 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: replace(__const_iterator __i1, __const_iterator __i2, 234s 1949: const basic_string& __str) 234s 1949: { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } 234s 1949: # 2547 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: replace(__const_iterator __i1, __const_iterator __i2, 234s 1949: const _CharT* __s, size_type __n) 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: return this->replace(__i1 - begin(), __i2 - __i1, __s, __n); 234s 1949: } 234s 1949: # 2570 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s) 234s 1949: { 234s 1949: ; 234s 1949: return this->replace(__i1, __i2, __s, traits_type::length(__s)); 234s 1949: } 234s 1949: # 2592 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: replace(__const_iterator __i1, __const_iterator __i2, size_type __n, 234s 1949: _CharT __c) 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c); 234s 1949: } 234s 1949: # 2618 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template> 234s 1949: 234s 1949: basic_string& 234s 1949: replace(const_iterator __i1, const_iterator __i2, 234s 1949: _InputIterator __k1, _InputIterator __k2) 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, 234s 1949: std::__false_type()); 234s 1949: } 234s 1949: # 2651 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& 234s 1949: replace(__const_iterator __i1, __const_iterator __i2, 234s 1949: _CharT* __k1, _CharT* __k2) 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: return this->replace(__i1 - begin(), __i2 - __i1, 234s 1949: __k1, __k2 - __k1); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: replace(__const_iterator __i1, __const_iterator __i2, 234s 1949: const _CharT* __k1, const _CharT* __k2) 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: return this->replace(__i1 - begin(), __i2 - __i1, 234s 1949: __k1, __k2 - __k1); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: replace(__const_iterator __i1, __const_iterator __i2, 234s 1949: iterator __k1, iterator __k2) 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: return this->replace(__i1 - begin(), __i2 - __i1, 234s 1949: __k1.base(), __k2 - __k1); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: replace(__const_iterator __i1, __const_iterator __i2, 234s 1949: const_iterator __k1, const_iterator __k2) 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: return this->replace(__i1 - begin(), __i2 - __i1, 234s 1949: __k1.base(), __k2 - __k1); 234s 1949: } 234s 1949: # 2738 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: basic_string& replace(const_iterator __i1, const_iterator __i2, 234s 1949: initializer_list<_CharT> __l) 234s 1949: { return this->replace(__i1, __i2, __l.begin(), __l.size()); } 234s 1949: # 2802 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: private: 234s 1949: template 234s 1949: 234s 1949: basic_string& 234s 1949: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 234s 1949: _Integer __n, _Integer __val, __true_type) 234s 1949: { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: basic_string& 234s 1949: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 234s 1949: _InputIterator __k1, _InputIterator __k2, 234s 1949: __false_type); 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 234s 1949: _CharT __c); 234s 1949: 234s 1949: __attribute__((__noinline__, __noclone__, __cold__)) void 234s 1949: _M_replace_cold(pointer __p, size_type __len1, const _CharT* __s, 234s 1949: const size_type __len2, const size_type __how_much); 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 234s 1949: const size_type __len2); 234s 1949: 234s 1949: 234s 1949: basic_string& 234s 1949: _M_append(const _CharT* __s, size_type __n); 234s 1949: 234s 1949: public: 234s 1949: # 2849 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: size_type 234s 1949: copy(_CharT* __s, size_type __n, size_type __pos = 0) const; 234s 1949: # 2860 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: void 234s 1949: swap(basic_string& __s) noexcept; 234s 1949: # 2871 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: const _CharT* 234s 1949: c_str() const noexcept 234s 1949: { return _M_data(); } 234s 1949: # 2884 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: const _CharT* 234s 1949: data() const noexcept 234s 1949: { return _M_data(); } 234s 1949: # 2905 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return _M_get_allocator(); } 234s 1949: # 2922 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find(const _CharT* __s, size_type __pos, size_type __n) const 234s 1949: noexcept; 234s 1949: # 2937 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find(const basic_string& __str, size_type __pos = 0) const 234s 1949: noexcept 234s 1949: { return this->find(__str.data(), __pos, __str.size()); } 234s 1949: # 2971 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find(const _CharT* __s, size_type __pos = 0) const noexcept 234s 1949: { 234s 1949: ; 234s 1949: return this->find(__s, __pos, traits_type::length(__s)); 234s 1949: } 234s 1949: # 2989 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find(_CharT __c, size_type __pos = 0) const noexcept; 234s 1949: # 3003 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: rfind(const basic_string& __str, size_type __pos = npos) const 234s 1949: noexcept 234s 1949: { return this->rfind(__str.data(), __pos, __str.size()); } 234s 1949: # 3039 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: rfind(const _CharT* __s, size_type __pos, size_type __n) const 234s 1949: noexcept; 234s 1949: # 3054 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: rfind(const _CharT* __s, size_type __pos = npos) const 234s 1949: { 234s 1949: ; 234s 1949: return this->rfind(__s, __pos, traits_type::length(__s)); 234s 1949: } 234s 1949: # 3072 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: rfind(_CharT __c, size_type __pos = npos) const noexcept; 234s 1949: # 3087 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_first_of(const basic_string& __str, size_type __pos = 0) const 234s 1949: noexcept 234s 1949: { return this->find_first_of(__str.data(), __pos, __str.size()); } 234s 1949: # 3124 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 234s 1949: noexcept; 234s 1949: # 3139 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_first_of(const _CharT* __s, size_type __pos = 0) const 234s 1949: noexcept 234s 1949: { 234s 1949: ; 234s 1949: return this->find_first_of(__s, __pos, traits_type::length(__s)); 234s 1949: } 234s 1949: # 3160 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_first_of(_CharT __c, size_type __pos = 0) const noexcept 234s 1949: { return this->find(__c, __pos); } 234s 1949: # 3176 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_last_of(const basic_string& __str, size_type __pos = npos) const 234s 1949: noexcept 234s 1949: { return this->find_last_of(__str.data(), __pos, __str.size()); } 234s 1949: # 3213 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 234s 1949: noexcept; 234s 1949: # 3228 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_last_of(const _CharT* __s, size_type __pos = npos) const 234s 1949: noexcept 234s 1949: { 234s 1949: ; 234s 1949: return this->find_last_of(__s, __pos, traits_type::length(__s)); 234s 1949: } 234s 1949: # 3249 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_last_of(_CharT __c, size_type __pos = npos) const noexcept 234s 1949: { return this->rfind(__c, __pos); } 234s 1949: # 3264 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_first_not_of(const basic_string& __str, size_type __pos = 0) const 234s 1949: noexcept 234s 1949: { return this->find_first_not_of(__str.data(), __pos, __str.size()); } 234s 1949: # 3301 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_first_not_of(const _CharT* __s, size_type __pos, 234s 1949: size_type __n) const noexcept; 234s 1949: # 3316 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_first_not_of(const _CharT* __s, size_type __pos = 0) const 234s 1949: noexcept 234s 1949: { 234s 1949: ; 234s 1949: return this->find_first_not_of(__s, __pos, traits_type::length(__s)); 234s 1949: } 234s 1949: # 3335 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_first_not_of(_CharT __c, size_type __pos = 0) const 234s 1949: noexcept; 234s 1949: # 3351 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_last_not_of(const basic_string& __str, size_type __pos = npos) const 234s 1949: noexcept 234s 1949: { return this->find_last_not_of(__str.data(), __pos, __str.size()); } 234s 1949: # 3388 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_last_not_of(const _CharT* __s, size_type __pos, 234s 1949: size_type __n) const noexcept; 234s 1949: # 3403 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_last_not_of(const _CharT* __s, size_type __pos = npos) const 234s 1949: noexcept 234s 1949: { 234s 1949: ; 234s 1949: return this->find_last_not_of(__s, __pos, traits_type::length(__s)); 234s 1949: } 234s 1949: # 3422 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: find_last_not_of(_CharT __c, size_type __pos = npos) const 234s 1949: noexcept; 234s 1949: # 3439 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: basic_string 234s 1949: substr(size_type __pos = 0, size_type __n = npos) const 234s 1949: { return basic_string(*this, 234s 1949: _M_check(__pos, "basic_string::substr"), __n); } 234s 1949: # 3459 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: int 234s 1949: compare(const basic_string& __str) const 234s 1949: { 234s 1949: const size_type __size = this->size(); 234s 1949: const size_type __osize = __str.size(); 234s 1949: const size_type __len = std::min(__size, __osize); 234s 1949: 234s 1949: int __r = traits_type::compare(_M_data(), __str.data(), __len); 234s 1949: if (!__r) 234s 1949: __r = _S_compare(__size, __osize); 234s 1949: return __r; 234s 1949: } 234s 1949: # 3556 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: int 234s 1949: compare(size_type __pos, size_type __n, const basic_string& __str) const 234s 1949: { 234s 1949: _M_check(__pos, "basic_string::compare"); 234s 1949: __n = _M_limit(__pos, __n); 234s 1949: const size_type __osize = __str.size(); 234s 1949: const size_type __len = std::min(__n, __osize); 234s 1949: int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); 234s 1949: if (!__r) 234s 1949: __r = _S_compare(__n, __osize); 234s 1949: return __r; 234s 1949: } 234s 1949: # 3593 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: int 234s 1949: compare(size_type __pos1, size_type __n1, const basic_string& __str, 234s 1949: size_type __pos2, size_type __n2 = npos) const 234s 1949: { 234s 1949: _M_check(__pos1, "basic_string::compare"); 234s 1949: __str._M_check(__pos2, "basic_string::compare"); 234s 1949: __n1 = _M_limit(__pos1, __n1); 234s 1949: __n2 = __str._M_limit(__pos2, __n2); 234s 1949: const size_type __len = std::min(__n1, __n2); 234s 1949: int __r = traits_type::compare(_M_data() + __pos1, 234s 1949: __str.data() + __pos2, __len); 234s 1949: if (!__r) 234s 1949: __r = _S_compare(__n1, __n2); 234s 1949: return __r; 234s 1949: } 234s 1949: # 3624 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: int 234s 1949: compare(const _CharT* __s) const noexcept 234s 1949: { 234s 1949: ; 234s 1949: const size_type __size = this->size(); 234s 1949: const size_type __osize = traits_type::length(__s); 234s 1949: const size_type __len = std::min(__size, __osize); 234s 1949: int __r = traits_type::compare(_M_data(), __s, __len); 234s 1949: if (!__r) 234s 1949: __r = _S_compare(__size, __osize); 234s 1949: return __r; 234s 1949: } 234s 1949: # 3659 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: int 234s 1949: compare(size_type __pos, size_type __n1, const _CharT* __s) const 234s 1949: { 234s 1949: ; 234s 1949: _M_check(__pos, "basic_string::compare"); 234s 1949: __n1 = _M_limit(__pos, __n1); 234s 1949: const size_type __osize = traits_type::length(__s); 234s 1949: const size_type __len = std::min(__n1, __osize); 234s 1949: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 234s 1949: if (!__r) 234s 1949: __r = _S_compare(__n1, __osize); 234s 1949: return __r; 234s 1949: } 234s 1949: # 3698 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: int 234s 1949: compare(size_type __pos, size_type __n1, const _CharT* __s, 234s 1949: size_type __n2) const 234s 1949: { 234s 1949: ; 234s 1949: _M_check(__pos, "basic_string::compare"); 234s 1949: __n1 = _M_limit(__pos, __n1); 234s 1949: const size_type __len = std::min(__n1, __n2); 234s 1949: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 234s 1949: if (!__r) 234s 1949: __r = _S_compare(__n1, __n2); 234s 1949: return __r; 234s 1949: } 234s 1949: # 3763 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template friend class basic_stringbuf; 234s 1949: }; 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 3812 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _Str 234s 1949: __str_concat(typename _Str::value_type const* __lhs, 234s 1949: typename _Str::size_type __lhs_len, 234s 1949: typename _Str::value_type const* __rhs, 234s 1949: typename _Str::size_type __rhs_len, 234s 1949: typename _Str::allocator_type const& __a) 234s 1949: { 234s 1949: typedef typename _Str::allocator_type allocator_type; 234s 1949: typedef __gnu_cxx::__alloc_traits _Alloc_traits; 234s 1949: _Str __str(_Alloc_traits::_S_select_on_copy(__a)); 234s 1949: __str.reserve(__lhs_len + __rhs_len); 234s 1949: __str.append(__lhs, __lhs_len); 234s 1949: __str.append(__rhs, __rhs_len); 234s 1949: return __str; 234s 1949: } 234s 1949: # 3837 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline basic_string<_CharT, _Traits, _Alloc> 234s 1949: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: { 234s 1949: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 234s 1949: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), 234s 1949: __rhs.c_str(), __rhs.size(), 234s 1949: __lhs.get_allocator()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline basic_string<_CharT,_Traits,_Alloc> 234s 1949: operator+(const _CharT* __lhs, 234s 1949: const basic_string<_CharT,_Traits,_Alloc>& __rhs) 234s 1949: { 234s 1949: ; 234s 1949: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 234s 1949: return std::__str_concat<_Str>(__lhs, _Traits::length(__lhs), 234s 1949: __rhs.c_str(), __rhs.size(), 234s 1949: __rhs.get_allocator()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline basic_string<_CharT,_Traits,_Alloc> 234s 1949: operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs) 234s 1949: { 234s 1949: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 234s 1949: return std::__str_concat<_Str>(__builtin_addressof(__lhs), 1, 234s 1949: __rhs.c_str(), __rhs.size(), 234s 1949: __rhs.get_allocator()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline basic_string<_CharT, _Traits, _Alloc> 234s 1949: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const _CharT* __rhs) 234s 1949: { 234s 1949: ; 234s 1949: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 234s 1949: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), 234s 1949: __rhs, _Traits::length(__rhs), 234s 1949: __lhs.get_allocator()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline basic_string<_CharT, _Traits, _Alloc> 234s 1949: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) 234s 1949: { 234s 1949: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 234s 1949: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), 234s 1949: __builtin_addressof(__rhs), 1, 234s 1949: __lhs.get_allocator()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline basic_string<_CharT, _Traits, _Alloc> 234s 1949: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: { return std::move(__lhs.append(__rhs)); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline basic_string<_CharT, _Traits, _Alloc> 234s 1949: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 234s 1949: { return std::move(__rhs.insert(0, __lhs)); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline basic_string<_CharT, _Traits, _Alloc> 234s 1949: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 234s 1949: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 234s 1949: { 234s 1949: 234s 1949: using _Alloc_traits = allocator_traits<_Alloc>; 234s 1949: bool __use_rhs = false; 234s 1949: if (typename _Alloc_traits::is_always_equal{}) 234s 1949: __use_rhs = true; 234s 1949: else if (__lhs.get_allocator() == __rhs.get_allocator()) 234s 1949: __use_rhs = true; 234s 1949: if (__use_rhs) 234s 1949: 234s 1949: { 234s 1949: const auto __size = __lhs.size() + __rhs.size(); 234s 1949: if (__size > __lhs.capacity() && __size <= __rhs.capacity()) 234s 1949: return std::move(__rhs.insert(0, __lhs)); 234s 1949: } 234s 1949: return std::move(__lhs.append(__rhs)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] [[__nodiscard__]] 234s 1949: inline basic_string<_CharT, _Traits, _Alloc> 234s 1949: operator+(const _CharT* __lhs, 234s 1949: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 234s 1949: { return std::move(__rhs.insert(0, __lhs)); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline basic_string<_CharT, _Traits, _Alloc> 234s 1949: operator+(_CharT __lhs, 234s 1949: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 234s 1949: { return std::move(__rhs.insert(0, 1, __lhs)); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline basic_string<_CharT, _Traits, _Alloc> 234s 1949: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 234s 1949: const _CharT* __rhs) 234s 1949: { return std::move(__lhs.append(__rhs)); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline basic_string<_CharT, _Traits, _Alloc> 234s 1949: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 234s 1949: _CharT __rhs) 234s 1949: { return std::move(__lhs.append(1, __rhs)); } 234s 1949: # 4042 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: noexcept 234s 1949: { 234s 1949: return __lhs.size() == __rhs.size() 234s 1949: && !_Traits::compare(__lhs.data(), __rhs.data(), __lhs.size()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const _CharT* __rhs) 234s 1949: { 234s 1949: return __lhs.size() == _Traits::length(__rhs) 234s 1949: && !_Traits::compare(__lhs.data(), __rhs, __lhs.size()); 234s 1949: } 234s 1949: # 4106 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const _CharT* __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: { return __rhs == __lhs; } 234s 1949: # 4120 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: noexcept 234s 1949: { return !(__lhs == __rhs); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator!=(const _CharT* __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: { return !(__rhs == __lhs); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const _CharT* __rhs) 234s 1949: { return !(__lhs == __rhs); } 234s 1949: # 4161 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.compare(__rhs) < 0; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const _CharT* __rhs) 234s 1949: { return __lhs.compare(__rhs) < 0; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<(const _CharT* __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: { return __rhs.compare(__lhs) > 0; } 234s 1949: # 4202 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.compare(__rhs) > 0; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const _CharT* __rhs) 234s 1949: { return __lhs.compare(__rhs) > 0; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>(const _CharT* __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: { return __rhs.compare(__lhs) < 0; } 234s 1949: # 4243 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.compare(__rhs) <= 0; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const _CharT* __rhs) 234s 1949: { return __lhs.compare(__rhs) <= 0; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator<=(const _CharT* __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: { return __rhs.compare(__lhs) >= 0; } 234s 1949: # 4284 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: noexcept 234s 1949: { return __lhs.compare(__rhs) >= 0; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: const _CharT* __rhs) 234s 1949: { return __lhs.compare(__rhs) >= 0; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator>=(const _CharT* __lhs, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: { return __rhs.compare(__lhs) <= 0; } 234s 1949: # 4326 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __rhs) 234s 1949: noexcept(noexcept(__lhs.swap(__rhs))) 234s 1949: { __lhs.swap(__rhs); } 234s 1949: # 4347 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __is, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __str); 234s 1949: 234s 1949: template<> 234s 1949: basic_istream& 234s 1949: operator>>(basic_istream& __is, basic_string& __str); 234s 1949: # 4365 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __os, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __str) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: return __ostream_insert(__os, __str.data(), __str.size()); 234s 1949: } 234s 1949: # 4388 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: getline(basic_istream<_CharT, _Traits>& __is, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); 234s 1949: # 4405 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: inline basic_istream<_CharT, _Traits>& 234s 1949: getline(basic_istream<_CharT, _Traits>& __is, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __str) 234s 1949: { return std::getline(__is, __str, __is.widen('\n')); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline basic_istream<_CharT, _Traits>& 234s 1949: getline(basic_istream<_CharT, _Traits>&& __is, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 234s 1949: { return std::getline(__is, __str, __delim); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline basic_istream<_CharT, _Traits>& 234s 1949: getline(basic_istream<_CharT, _Traits>&& __is, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __str) 234s 1949: { return std::getline(__is, __str); } 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: basic_istream& 234s 1949: getline(basic_istream& __in, basic_string& __str, 234s 1949: char __delim); 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: basic_istream& 234s 1949: getline(basic_istream& __in, basic_string& __str, 234s 1949: wchar_t __delim); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/ext/string_conversions.h" 1 3 4 234s 1949: # 48 "/usr/include/c++/15/ext/string_conversions.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/cerrno" 1 3 4 234s 1949: # 47 "/usr/include/c++/15/cerrno" 3 4 234s 1949: # 1 "/usr/include/errno.h" 1 3 4 234s 1949: # 28 "/usr/include/errno.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 1 3 4 234s 1949: # 26 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 3 4 234s 1949: # 1 "/usr/include/linux/errno.h" 1 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/asm/errno.h" 1 3 4 234s 1949: # 1 "/usr/include/asm-generic/errno.h" 1 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 234s 1949: # 6 "/usr/include/asm-generic/errno.h" 2 3 4 234s 1949: # 2 "/usr/include/arm-linux-gnueabihf/asm/errno.h" 2 3 4 234s 1949: # 2 "/usr/include/linux/errno.h" 2 3 4 234s 1949: # 27 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 2 3 4 234s 1949: # 29 "/usr/include/errno.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern "C" { 234s 1949: 234s 1949: 234s 1949: extern int *__errno_location (void) noexcept (true) __attribute__ ((__const__)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *program_invocation_name; 234s 1949: extern char *program_invocation_short_name; 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/error_t.h" 1 3 4 234s 1949: # 22 "/usr/include/arm-linux-gnueabihf/bits/types/error_t.h" 3 4 234s 1949: typedef int error_t; 234s 1949: # 49 "/usr/include/errno.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 48 "/usr/include/c++/15/cerrno" 2 3 4 234s 1949: # 49 "/usr/include/c++/15/ext/string_conversions.h" 2 3 4 234s 1949: 234s 1949: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _Ret 234s 1949: __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...), 234s 1949: const char* __name, const _CharT* __str, std::size_t* __idx, 234s 1949: _Base... __base) 234s 1949: { 234s 1949: _Ret __ret; 234s 1949: 234s 1949: _CharT* __endptr; 234s 1949: 234s 1949: struct _Save_errno { 234s 1949: _Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; } 234s 1949: ~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; } 234s 1949: int _M_errno; 234s 1949: } const __save_errno; 234s 1949: 234s 1949: struct _Range_chk { 234s 1949: static bool 234s 1949: _S_chk(_TRet, std::false_type) { return false; } 234s 1949: 234s 1949: static bool 234s 1949: _S_chk(_TRet __val, std::true_type) 234s 1949: { 234s 1949: return __val < _TRet(__numeric_traits::__min) 234s 1949: || __val > _TRet(__numeric_traits::__max); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: const _TRet __tmp = __convf(__str, &__endptr, __base...); 234s 1949: 234s 1949: if (__endptr == __str) 234s 1949: std::__throw_invalid_argument(__name); 234s 1949: else if ((*__errno_location ()) == 34 234s 1949: || _Range_chk::_S_chk(__tmp, std::is_same<_Ret, int>{})) 234s 1949: std::__throw_out_of_range(__name); 234s 1949: else 234s 1949: __ret = __tmp; 234s 1949: 234s 1949: if (__idx) 234s 1949: *__idx = __endptr - __str; 234s 1949: 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _String 234s 1949: __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*, 234s 1949: __builtin_va_list), std::size_t __n, 234s 1949: const _CharT* __fmt, ...) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 234s 1949: * __n)); 234s 1949: 234s 1949: __builtin_va_list __args; 234s 1949: __builtin_va_start(__args, __fmt); 234s 1949: 234s 1949: const int __len = __convf(__s, __n, __fmt, __args); 234s 1949: 234s 1949: __builtin_va_end(__args); 234s 1949: 234s 1949: return _String(__s, __s + __len); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 4445 "/usr/include/c++/15/bits/basic_string.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/charconv.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/charconv.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: namespace __detail 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr bool __integer_to_chars_is_unsigned 234s 1949: = ! __gnu_cxx::__int_traits<_Tp>::__is_signed; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr unsigned 234s 1949: __to_chars_len(_Tp __value, int __base = 10) noexcept 234s 1949: { 234s 1949: 234s 1949: static_assert(__integer_to_chars_is_unsigned<_Tp>, "implementation bug"); 234s 1949: 234s 1949: 234s 1949: unsigned __n = 1; 234s 1949: const unsigned __b2 = __base * __base; 234s 1949: const unsigned __b3 = __b2 * __base; 234s 1949: const unsigned long __b4 = __b3 * __base; 234s 1949: for (;;) 234s 1949: { 234s 1949: if (__value < (unsigned)__base) return __n; 234s 1949: if (__value < __b2) return __n + 1; 234s 1949: if (__value < __b3) return __n + 2; 234s 1949: if (__value < __b4) return __n + 3; 234s 1949: __value /= __b4; 234s 1949: __n += 4; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __to_chars_10_impl(char* __first, unsigned __len, _Tp __val) noexcept 234s 1949: { 234s 1949: 234s 1949: static_assert(__integer_to_chars_is_unsigned<_Tp>, "implementation bug"); 234s 1949: 234s 1949: 234s 1949: constexpr char __digits[201] = 234s 1949: "0001020304050607080910111213141516171819" 234s 1949: "2021222324252627282930313233343536373839" 234s 1949: "4041424344454647484950515253545556575859" 234s 1949: "6061626364656667686970717273747576777879" 234s 1949: "8081828384858687888990919293949596979899"; 234s 1949: unsigned __pos = __len - 1; 234s 1949: while (__val >= 100) 234s 1949: { 234s 1949: auto const __num = (__val % 100) * 2; 234s 1949: __val /= 100; 234s 1949: __first[__pos] = __digits[__num + 1]; 234s 1949: __first[__pos - 1] = __digits[__num]; 234s 1949: __pos -= 2; 234s 1949: } 234s 1949: if (__val >= 10) 234s 1949: { 234s 1949: auto const __num = __val * 2; 234s 1949: __first[1] = __digits[__num + 1]; 234s 1949: __first[0] = __digits[__num]; 234s 1949: } 234s 1949: else 234s 1949: __first[0] = '0' + __val; 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: # 4446 "/usr/include/c++/15/bits/basic_string.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: 234s 1949: 234s 1949: inline int 234s 1949: stoi(const string& __str, size_t* __idx = 0, int __base = 10) 234s 1949: { return __gnu_cxx::__stoa(&std::strtol, "stoi", __str.c_str(), 234s 1949: __idx, __base); } 234s 1949: 234s 1949: inline long 234s 1949: stol(const string& __str, size_t* __idx = 0, int __base = 10) 234s 1949: { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(), 234s 1949: __idx, __base); } 234s 1949: 234s 1949: inline unsigned long 234s 1949: stoul(const string& __str, size_t* __idx = 0, int __base = 10) 234s 1949: { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(), 234s 1949: __idx, __base); } 234s 1949: 234s 1949: 234s 1949: inline long long 234s 1949: stoll(const string& __str, size_t* __idx = 0, int __base = 10) 234s 1949: { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(), 234s 1949: __idx, __base); } 234s 1949: 234s 1949: inline unsigned long long 234s 1949: stoull(const string& __str, size_t* __idx = 0, int __base = 10) 234s 1949: { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(), 234s 1949: __idx, __base); } 234s 1949: # 4488 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: inline double 234s 1949: stod(const string& __str, size_t* __idx = 0) 234s 1949: { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline float 234s 1949: stof(const string& __str, size_t* __idx = 0) 234s 1949: { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); } 234s 1949: # 4516 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: inline long double 234s 1949: stold(const string& __str, size_t* __idx = 0) 234s 1949: { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } 234s 1949: # 4528 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: inline string 234s 1949: to_string(int __val) 234s 1949: 234s 1949: noexcept 234s 1949: 234s 1949: { 234s 1949: const bool __neg = __val < 0; 234s 1949: const unsigned __uval = __neg ? (unsigned)~__val + 1u : __val; 234s 1949: const auto __len = __detail::__to_chars_len(__uval); 234s 1949: string __str; 234s 1949: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { 234s 1949: __p[0] = '-'; 234s 1949: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); 234s 1949: return __n; 234s 1949: }); 234s 1949: return __str; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline string 234s 1949: to_string(unsigned __val) 234s 1949: 234s 1949: noexcept 234s 1949: 234s 1949: { 234s 1949: const auto __len = __detail::__to_chars_len(__val); 234s 1949: string __str; 234s 1949: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { 234s 1949: __detail::__to_chars_10_impl(__p, __n, __val); 234s 1949: return __n; 234s 1949: }); 234s 1949: return __str; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline string 234s 1949: to_string(long __val) 234s 1949: 234s 1949: noexcept 234s 1949: 234s 1949: { 234s 1949: const bool __neg = __val < 0; 234s 1949: const unsigned long __uval = __neg ? (unsigned long)~__val + 1ul : __val; 234s 1949: const auto __len = __detail::__to_chars_len(__uval); 234s 1949: string __str; 234s 1949: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { 234s 1949: __p[0] = '-'; 234s 1949: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); 234s 1949: return __n; 234s 1949: }); 234s 1949: return __str; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline string 234s 1949: to_string(unsigned long __val) 234s 1949: 234s 1949: noexcept 234s 1949: 234s 1949: { 234s 1949: const auto __len = __detail::__to_chars_len(__val); 234s 1949: string __str; 234s 1949: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { 234s 1949: __detail::__to_chars_10_impl(__p, __n, __val); 234s 1949: return __n; 234s 1949: }); 234s 1949: return __str; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline string 234s 1949: to_string(long long __val) 234s 1949: { 234s 1949: const bool __neg = __val < 0; 234s 1949: const unsigned long long __uval 234s 1949: = __neg ? (unsigned long long)~__val + 1ull : __val; 234s 1949: const auto __len = __detail::__to_chars_len(__uval); 234s 1949: string __str; 234s 1949: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { 234s 1949: __p[0] = '-'; 234s 1949: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); 234s 1949: return __n; 234s 1949: }); 234s 1949: return __str; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline string 234s 1949: to_string(unsigned long long __val) 234s 1949: { 234s 1949: const auto __len = __detail::__to_chars_len(__val); 234s 1949: string __str; 234s 1949: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { 234s 1949: __detail::__to_chars_10_impl(__p, __n, __val); 234s 1949: return __n; 234s 1949: }); 234s 1949: return __str; 234s 1949: } 234s 1949: # 4687 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wsuggest-attribute=format" 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline string 234s 1949: to_string(float __val) 234s 1949: { 234s 1949: const int __n = 234s 1949: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 234s 1949: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 234s 1949: "%f", __val); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline string 234s 1949: to_string(double __val) 234s 1949: { 234s 1949: const int __n = 234s 1949: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 234s 1949: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 234s 1949: "%f", __val); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline string 234s 1949: to_string(long double __val) 234s 1949: { 234s 1949: const int __n = 234s 1949: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 234s 1949: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 234s 1949: "%Lf", __val); 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline int 234s 1949: stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) 234s 1949: { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), 234s 1949: __idx, __base); } 234s 1949: 234s 1949: inline long 234s 1949: stol(const wstring& __str, size_t* __idx = 0, int __base = 10) 234s 1949: { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(), 234s 1949: __idx, __base); } 234s 1949: 234s 1949: inline unsigned long 234s 1949: stoul(const wstring& __str, size_t* __idx = 0, int __base = 10) 234s 1949: { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(), 234s 1949: __idx, __base); } 234s 1949: 234s 1949: inline long long 234s 1949: stoll(const wstring& __str, size_t* __idx = 0, int __base = 10) 234s 1949: { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(), 234s 1949: __idx, __base); } 234s 1949: 234s 1949: inline unsigned long long 234s 1949: stoull(const wstring& __str, size_t* __idx = 0, int __base = 10) 234s 1949: { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(), 234s 1949: __idx, __base); } 234s 1949: 234s 1949: 234s 1949: inline float 234s 1949: stof(const wstring& __str, size_t* __idx = 0) 234s 1949: { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); } 234s 1949: 234s 1949: inline double 234s 1949: stod(const wstring& __str, size_t* __idx = 0) 234s 1949: { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); } 234s 1949: 234s 1949: inline long double 234s 1949: stold(const wstring& __str, size_t* __idx = 0) 234s 1949: { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: 234s 1949: inline void 234s 1949: __to_wstring_numeric(const char* __s, int __len, wchar_t* __wout) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if constexpr (wchar_t('0') == L'0' && wchar_t('-') == L'-' 234s 1949: && wchar_t('.') == L'.' && wchar_t('e') == L'e') 234s 1949: { 234s 1949: for (int __i = 0; __i < __len; ++__i) 234s 1949: __wout[__i] = (wchar_t) __s[__i]; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: wchar_t __wc[256]; 234s 1949: for (int __i = '0'; __i <= '9'; ++__i) 234s 1949: __wc[__i] = L'0' + __i; 234s 1949: __wc['.'] = L'.'; 234s 1949: __wc['+'] = L'+'; 234s 1949: __wc['-'] = L'-'; 234s 1949: __wc['a'] = L'a'; 234s 1949: __wc['b'] = L'b'; 234s 1949: __wc['c'] = L'c'; 234s 1949: __wc['d'] = L'd'; 234s 1949: __wc['e'] = L'e'; 234s 1949: __wc['f'] = L'f'; 234s 1949: __wc['i'] = L'i'; 234s 1949: __wc['n'] = L'n'; 234s 1949: __wc['p'] = L'p'; 234s 1949: __wc['x'] = L'x'; 234s 1949: __wc['A'] = L'A'; 234s 1949: __wc['B'] = L'B'; 234s 1949: __wc['C'] = L'C'; 234s 1949: __wc['D'] = L'D'; 234s 1949: __wc['E'] = L'E'; 234s 1949: __wc['F'] = L'F'; 234s 1949: __wc['I'] = L'I'; 234s 1949: __wc['N'] = L'N'; 234s 1949: __wc['P'] = L'P'; 234s 1949: __wc['X'] = L'X'; 234s 1949: 234s 1949: for (int __i = 0; __i < __len; ++__i) 234s 1949: __wout[__i] = __wc[(int)__s[__i]]; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline wstring 234s 1949: 234s 1949: 234s 1949: 234s 1949: __to_wstring_numeric(const string& __s) 234s 1949: 234s 1949: { 234s 1949: if constexpr (wchar_t('0') == L'0' && wchar_t('-') == L'-' 234s 1949: && wchar_t('.') == L'.' && wchar_t('e') == L'e') 234s 1949: return wstring(__s.data(), __s.data() + __s.size()); 234s 1949: else 234s 1949: { 234s 1949: wstring __ws; 234s 1949: auto __f = __s.data(); 234s 1949: __ws.__resize_and_overwrite(__s.size(), 234s 1949: [__f] (wchar_t* __to, int __n) { 234s 1949: std::__to_wstring_numeric(__f, __n, __to); 234s 1949: return __n; 234s 1949: }); 234s 1949: return __ws; 234s 1949: } 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline wstring 234s 1949: to_wstring(int __val) 234s 1949: { return std::__to_wstring_numeric(std::to_string(__val)); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline wstring 234s 1949: to_wstring(unsigned __val) 234s 1949: { return std::__to_wstring_numeric(std::to_string(__val)); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline wstring 234s 1949: to_wstring(long __val) 234s 1949: { return std::__to_wstring_numeric(std::to_string(__val)); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline wstring 234s 1949: to_wstring(unsigned long __val) 234s 1949: { return std::__to_wstring_numeric(std::to_string(__val)); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline wstring 234s 1949: to_wstring(long long __val) 234s 1949: { return std::__to_wstring_numeric(std::to_string(__val)); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline wstring 234s 1949: to_wstring(unsigned long long __val) 234s 1949: { return std::__to_wstring_numeric(std::to_string(__val)); } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline wstring 234s 1949: to_wstring(float __val) 234s 1949: { return std::__to_wstring_numeric(std::to_string(__val)); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline wstring 234s 1949: to_wstring(double __val) 234s 1949: { return std::__to_wstring_numeric(std::to_string(__val)); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline wstring 234s 1949: to_wstring(long double __val) 234s 1949: { return std::__to_wstring_numeric(std::to_string(__val)); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/functional_hash.h" 1 3 4 234s 1949: # 40 "/usr/include/c++/15/bits/functional_hash.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 52 "/usr/include/c++/15/bits/functional_hash.h" 3 4 234s 1949: template 234s 1949: struct __hash_base 234s 1949: { 234s 1949: 234s 1949: typedef _Result result_type ; 234s 1949: typedef _Arg argument_type ; 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template struct __hash_empty_base { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct hash; 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++14-extensions" 234s 1949: template 234s 1949: constexpr bool __is_hash_enabled_for = false; 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: __is_hash_enabled_for<_Tp, 234s 1949: __void_t()(declval<_Tp>()))>> 234s 1949: = true; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __hash_not_enabled 234s 1949: { 234s 1949: __hash_not_enabled(__hash_not_enabled&&) = delete; 234s 1949: ~__hash_not_enabled() = delete; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __hash_enum : public __hash_base 234s 1949: { 234s 1949: size_t 234s 1949: operator()(_Tp __val) const noexcept 234s 1949: { 234s 1949: using __type = typename underlying_type<_Tp>::type; 234s 1949: return hash<__type>{}(static_cast<__type>(__val)); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct hash 234s 1949: : __conditional_t<__is_enum(_Tp), __hash_enum<_Tp>, __hash_not_enabled<_Tp>> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct hash<_Tp*> : public __hash_base 234s 1949: { 234s 1949: size_t 234s 1949: operator()(_Tp* __p) const noexcept 234s 1949: { return reinterpret_cast(__p); } 234s 1949: }; 234s 1949: # 128 "/usr/include/c++/15/bits/functional_hash.h" 3 4 234s 1949: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; 234s 1949: 234s 1949: 234s 1949: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; 234s 1949: # 204 "/usr/include/c++/15/bits/functional_hash.h" 3 4 234s 1949: struct _Hash_impl 234s 1949: { 234s 1949: static size_t 234s 1949: hash(const void* __ptr, size_t __clength, 234s 1949: size_t __seed = static_cast(0xc70f6907UL)) 234s 1949: { return _Hash_bytes(__ptr, __clength, __seed); } 234s 1949: 234s 1949: template 234s 1949: static size_t 234s 1949: hash(const _Tp& __val) 234s 1949: { return hash(&__val, sizeof(__val)); } 234s 1949: 234s 1949: template 234s 1949: static size_t 234s 1949: __hash_combine(const _Tp& __val, size_t __hash) 234s 1949: { return hash(&__val, sizeof(__val), __hash); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: struct _Fnv_hash_impl 234s 1949: { 234s 1949: static size_t 234s 1949: hash(const void* __ptr, size_t __clength, 234s 1949: size_t __seed = static_cast(2166136261UL)) 234s 1949: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } 234s 1949: 234s 1949: template 234s 1949: static size_t 234s 1949: hash(const _Tp& __val) 234s 1949: { return hash(&__val, sizeof(__val)); } 234s 1949: 234s 1949: template 234s 1949: static size_t 234s 1949: __hash_combine(const _Tp& __val, size_t __hash) 234s 1949: { return hash(&__val, sizeof(__val), __hash); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct hash : public __hash_base 234s 1949: { 234s 1949: size_t 234s 1949: operator()(float __val) const noexcept 234s 1949: { 234s 1949: 234s 1949: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct hash : public __hash_base 234s 1949: { 234s 1949: size_t 234s 1949: operator()(double __val) const noexcept 234s 1949: { 234s 1949: 234s 1949: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct hash 234s 1949: : public __hash_base 234s 1949: { 234s 1949: __attribute__ ((__pure__)) size_t 234s 1949: operator()(long double __val) const noexcept; 234s 1949: }; 234s 1949: # 297 "/usr/include/c++/15/bits/functional_hash.h" 3 4 234s 1949: template 234s 1949: struct __is_fast_hash : public std::true_type 234s 1949: { }; 234s 1949: 234s 1949: template<> 234s 1949: struct __is_fast_hash> : public std::false_type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 4896 "/usr/include/c++/15/bits/basic_string.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template, _Alloc>> 234s 1949: struct __str_hash_base 234s 1949: : public __hash_base 234s 1949: { 234s 1949: [[__nodiscard__]] 234s 1949: size_t 234s 1949: operator()(const _StrT& __s) const noexcept 234s 1949: { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(_CharT)); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct hash, _Alloc>> 234s 1949: : public __str_hash_base 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct hash, _Alloc>> 234s 1949: : public __str_hash_base 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_fast_hash, 234s 1949: _Alloc>>> 234s 1949: : std::false_type 234s 1949: { }; 234s 1949: # 4944 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: template 234s 1949: struct hash, _Alloc>> 234s 1949: : public __str_hash_base 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct hash, _Alloc>> 234s 1949: : public __str_hash_base 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> struct __is_fast_hash> : std::false_type { }; 234s 1949: template<> struct __is_fast_hash> : std::false_type { }; 234s 1949: template<> struct __is_fast_hash> : std::false_type { }; 234s 1949: template<> struct __is_fast_hash> : std::false_type { }; 234s 1949: # 4973 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: inline namespace literals 234s 1949: { 234s 1949: inline namespace string_literals 234s 1949: { 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wliteral-suffix" 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: inline basic_string 234s 1949: operator""s(const char* __str, size_t __len) 234s 1949: { return basic_string{__str, __len}; } 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: inline basic_string 234s 1949: operator""s(const wchar_t* __str, size_t __len) 234s 1949: { return basic_string{__str, __len}; } 234s 1949: # 5003 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: inline basic_string 234s 1949: operator""s(const char16_t* __str, size_t __len) 234s 1949: { return basic_string{__str, __len}; } 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: inline basic_string 234s 1949: operator""s(const char32_t* __str, size_t __len) 234s 1949: { return basic_string{__str, __len}; } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: } 234s 1949: } 234s 1949: # 5036 "/usr/include/c++/15/bits/basic_string.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 57 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/basic_string.tcc" 1 3 4 234s 1949: # 46 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: const typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>::npos; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: swap(basic_string& __s) noexcept 234s 1949: { 234s 1949: if (this == std::__addressof(__s)) 234s 1949: return; 234s 1949: 234s 1949: _Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator()); 234s 1949: 234s 1949: if (_M_is_local()) 234s 1949: if (__s._M_is_local()) 234s 1949: { 234s 1949: if (length() && __s.length()) 234s 1949: { 234s 1949: _CharT __tmp_data[_S_local_capacity + 1]; 234s 1949: traits_type::copy(__tmp_data, __s._M_local_buf, 234s 1949: __s.length() + 1); 234s 1949: traits_type::copy(__s._M_local_buf, _M_local_buf, 234s 1949: length() + 1); 234s 1949: traits_type::copy(_M_local_buf, __tmp_data, 234s 1949: __s.length() + 1); 234s 1949: } 234s 1949: else if (__s.length()) 234s 1949: { 234s 1949: _M_init_local_buf(); 234s 1949: traits_type::copy(_M_local_buf, __s._M_local_buf, 234s 1949: __s.length() + 1); 234s 1949: _M_length(__s.length()); 234s 1949: __s._M_set_length(0); 234s 1949: return; 234s 1949: } 234s 1949: else if (length()) 234s 1949: { 234s 1949: __s._M_init_local_buf(); 234s 1949: traits_type::copy(__s._M_local_buf, _M_local_buf, 234s 1949: length() + 1); 234s 1949: __s._M_length(length()); 234s 1949: _M_set_length(0); 234s 1949: return; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: const size_type __tmp_capacity = __s._M_allocated_capacity; 234s 1949: __s._M_init_local_buf(); 234s 1949: traits_type::copy(__s._M_local_buf, _M_local_buf, 234s 1949: length() + 1); 234s 1949: _M_data(__s._M_data()); 234s 1949: __s._M_data(__s._M_local_buf); 234s 1949: _M_capacity(__tmp_capacity); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: const size_type __tmp_capacity = _M_allocated_capacity; 234s 1949: if (__s._M_is_local()) 234s 1949: { 234s 1949: _M_init_local_buf(); 234s 1949: traits_type::copy(_M_local_buf, __s._M_local_buf, 234s 1949: __s.length() + 1); 234s 1949: __s._M_data(_M_data()); 234s 1949: _M_data(_M_local_buf); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: pointer __tmp_ptr = _M_data(); 234s 1949: _M_data(__s._M_data()); 234s 1949: __s._M_data(__tmp_ptr); 234s 1949: _M_capacity(__s._M_allocated_capacity); 234s 1949: } 234s 1949: __s._M_capacity(__tmp_capacity); 234s 1949: } 234s 1949: 234s 1949: const size_type __tmp_length = length(); 234s 1949: _M_length(__s.length()); 234s 1949: __s._M_length(__tmp_length); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::pointer 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_create(size_type& __capacity, size_type __old_capacity) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__capacity > max_size()) 234s 1949: std::__throw_length_error(("basic_string::_M_create")); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) 234s 1949: { 234s 1949: __capacity = 2 * __old_capacity; 234s 1949: 234s 1949: if (__capacity > max_size()) 234s 1949: __capacity = max_size(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _S_allocate(_M_get_allocator(), __capacity + 1); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_construct(_InIterator __beg, _InIterator __end, 234s 1949: std::input_iterator_tag) 234s 1949: { 234s 1949: size_type __len = 0; 234s 1949: size_type __capacity = size_type(_S_local_capacity); 234s 1949: 234s 1949: _M_init_local_buf(); 234s 1949: 234s 1949: while (__beg != __end && __len < __capacity) 234s 1949: { 234s 1949: _M_local_buf[__len++] = *__beg; 234s 1949: ++__beg; 234s 1949: } 234s 1949: 234s 1949: struct _Guard 234s 1949: { 234s 1949: 234s 1949: explicit _Guard(basic_string* __s) : _M_guarded(__s) { } 234s 1949: 234s 1949: 234s 1949: ~_Guard() { if (_M_guarded) _M_guarded->_M_dispose(); } 234s 1949: 234s 1949: basic_string* _M_guarded; 234s 1949: } __guard(this); 234s 1949: 234s 1949: while (__beg != __end) 234s 1949: { 234s 1949: if (__len == __capacity) 234s 1949: { 234s 1949: 234s 1949: __capacity = __len + 1; 234s 1949: pointer __another = _M_create(__capacity, __len); 234s 1949: this->_S_copy(__another, _M_data(), __len); 234s 1949: _M_dispose(); 234s 1949: _M_data(__another); 234s 1949: _M_capacity(__capacity); 234s 1949: } 234s 1949: traits_type::assign(_M_data()[__len++], 234s 1949: static_cast<_CharT>(*__beg)); 234s 1949: ++__beg; 234s 1949: } 234s 1949: 234s 1949: __guard._M_guarded = 0; 234s 1949: 234s 1949: _M_set_length(__len); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_construct(_InIterator __beg, _InIterator __end, 234s 1949: std::forward_iterator_tag) 234s 1949: { 234s 1949: size_type __dnew = static_cast(std::distance(__beg, __end)); 234s 1949: 234s 1949: if (__dnew > size_type(_S_local_capacity)) 234s 1949: { 234s 1949: _M_data(_M_create(__dnew, size_type(0))); 234s 1949: _M_capacity(__dnew); 234s 1949: } 234s 1949: else 234s 1949: _M_init_local_buf(); 234s 1949: 234s 1949: 234s 1949: struct _Guard 234s 1949: { 234s 1949: 234s 1949: explicit _Guard(basic_string* __s) : _M_guarded(__s) { } 234s 1949: 234s 1949: 234s 1949: ~_Guard() { if (_M_guarded) _M_guarded->_M_dispose(); } 234s 1949: 234s 1949: basic_string* _M_guarded; 234s 1949: } __guard(this); 234s 1949: 234s 1949: this->_S_copy_chars(_M_data(), __beg, __end); 234s 1949: 234s 1949: __guard._M_guarded = 0; 234s 1949: 234s 1949: _M_set_length(__dnew); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_construct(size_type __n, _CharT __c) 234s 1949: { 234s 1949: if (__n > size_type(_S_local_capacity)) 234s 1949: { 234s 1949: _M_data(_M_create(__n, size_type(0))); 234s 1949: _M_capacity(__n); 234s 1949: } 234s 1949: else 234s 1949: _M_init_local_buf(); 234s 1949: 234s 1949: if (__n) 234s 1949: this->_S_assign(_M_data(), __n, __c); 234s 1949: 234s 1949: _M_set_length(__n); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_construct(const _CharT* __str, size_type __n) 234s 1949: { 234s 1949: if (__n > size_type(_S_local_capacity)) 234s 1949: { 234s 1949: _M_data(_M_create(__n, size_type(0))); 234s 1949: _M_capacity(__n); 234s 1949: } 234s 1949: else 234s 1949: _M_init_local_buf(); 234s 1949: 234s 1949: if (__n || _Terminated) 234s 1949: this->_S_copy(_M_data(), __str, __n + _Terminated); 234s 1949: 234s 1949: _M_length(__n); 234s 1949: if (!_Terminated) 234s 1949: traits_type::assign(_M_data()[__n], _CharT()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_assign(const basic_string& __str) 234s 1949: { 234s 1949: if (this != std::__addressof(__str)) 234s 1949: { 234s 1949: const size_type __rsize = __str.length(); 234s 1949: const size_type __capacity = capacity(); 234s 1949: 234s 1949: if (__rsize > __capacity) 234s 1949: { 234s 1949: size_type __new_capacity = __rsize; 234s 1949: pointer __tmp = _M_create(__new_capacity, __capacity); 234s 1949: _M_dispose(); 234s 1949: _M_data(__tmp); 234s 1949: _M_capacity(__new_capacity); 234s 1949: } 234s 1949: 234s 1949: if (__rsize) 234s 1949: this->_S_copy(_M_data(), __str._M_data(), __rsize); 234s 1949: 234s 1949: _M_set_length(__rsize); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: reserve(size_type __res) 234s 1949: { 234s 1949: const size_type __capacity = capacity(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__res <= __capacity) 234s 1949: return; 234s 1949: 234s 1949: pointer __tmp = _M_create(__res, __capacity); 234s 1949: this->_S_copy(__tmp, _M_data(), length() + 1); 234s 1949: _M_dispose(); 234s 1949: _M_data(__tmp); 234s 1949: _M_capacity(__res); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 234s 1949: size_type __len2) 234s 1949: { 234s 1949: const size_type __how_much = length() - __pos - __len1; 234s 1949: 234s 1949: size_type __new_capacity = length() + __len2 - __len1; 234s 1949: pointer __r = _M_create(__new_capacity, capacity()); 234s 1949: 234s 1949: if (__pos) 234s 1949: this->_S_copy(__r, _M_data(), __pos); 234s 1949: if (__s && __len2) 234s 1949: this->_S_copy(__r + __pos, __s, __len2); 234s 1949: if (__how_much) 234s 1949: this->_S_copy(__r + __pos + __len2, 234s 1949: _M_data() + __pos + __len1, __how_much); 234s 1949: 234s 1949: _M_dispose(); 234s 1949: _M_data(__r); 234s 1949: _M_capacity(__new_capacity); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_erase(size_type __pos, size_type __n) 234s 1949: { 234s 1949: const size_type __how_much = length() - __pos - __n; 234s 1949: 234s 1949: if (__how_much && __n) 234s 1949: this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); 234s 1949: 234s 1949: _M_set_length(length() - __n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: reserve() 234s 1949: { 234s 1949: if (_M_is_local()) 234s 1949: return; 234s 1949: 234s 1949: const size_type __length = length(); 234s 1949: const size_type __capacity = _M_allocated_capacity; 234s 1949: 234s 1949: if (__length <= size_type(_S_local_capacity)) 234s 1949: { 234s 1949: _M_init_local_buf(); 234s 1949: this->_S_copy(_M_local_buf, _M_data(), __length + 1); 234s 1949: _M_destroy(__capacity); 234s 1949: _M_data(_M_local_data()); 234s 1949: } 234s 1949: 234s 1949: else if (__length < __capacity) 234s 1949: try 234s 1949: { 234s 1949: pointer __tmp = _S_allocate(_M_get_allocator(), __length + 1); 234s 1949: this->_S_copy(__tmp, _M_data(), __length + 1); 234s 1949: _M_dispose(); 234s 1949: _M_data(__tmp); 234s 1949: _M_capacity(__length); 234s 1949: } 234s 1949: catch (const __cxxabiv1::__forced_unwind&) 234s 1949: { throw; } 234s 1949: catch (...) 234s 1949: { } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: resize(size_type __n, _CharT __c) 234s 1949: { 234s 1949: const size_type __size = this->size(); 234s 1949: if (__size < __n) 234s 1949: this->append(__n - __size, __c); 234s 1949: else if (__n < __size) 234s 1949: this->_M_set_length(__n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: basic_string<_CharT, _Traits, _Alloc>& 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_append(const _CharT* __s, size_type __n) 234s 1949: { 234s 1949: const size_type __len = __n + this->size(); 234s 1949: 234s 1949: if (__len <= this->capacity()) 234s 1949: { 234s 1949: if (__n) 234s 1949: this->_S_copy(this->_M_data() + this->size(), __s, __n); 234s 1949: } 234s 1949: else 234s 1949: this->_M_mutate(this->size(), size_type(0), __s, __n); 234s 1949: 234s 1949: this->_M_set_length(__len); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: basic_string<_CharT, _Traits, _Alloc>& 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 234s 1949: _InputIterator __k1, _InputIterator __k2, 234s 1949: std::__false_type) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const basic_string __s(__k1, __k2, this->get_allocator()); 234s 1949: const size_type __n1 = __i2 - __i1; 234s 1949: return _M_replace(__i1 - begin(), __n1, __s._M_data(), 234s 1949: __s.size()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: basic_string<_CharT, _Traits, _Alloc>& 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 234s 1949: _CharT __c) 234s 1949: { 234s 1949: _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); 234s 1949: 234s 1949: const size_type __old_size = this->size(); 234s 1949: const size_type __new_size = __old_size + __n2 - __n1; 234s 1949: 234s 1949: if (__new_size <= this->capacity()) 234s 1949: { 234s 1949: pointer __p = this->_M_data() + __pos1; 234s 1949: 234s 1949: const size_type __how_much = __old_size - __pos1 - __n1; 234s 1949: if (__how_much && __n1 != __n2) 234s 1949: this->_S_move(__p + __n2, __p + __n1, __how_much); 234s 1949: } 234s 1949: else 234s 1949: this->_M_mutate(__pos1, __n1, 0, __n2); 234s 1949: 234s 1949: if (__n2) 234s 1949: this->_S_assign(this->_M_data() + __pos1, __n2, __c); 234s 1949: 234s 1949: this->_M_set_length(__new_size); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__noinline__, __noclone__, __cold__)) void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_replace_cold(pointer __p, size_type __len1, const _CharT* __s, 234s 1949: const size_type __len2, const size_type __how_much) 234s 1949: { 234s 1949: 234s 1949: if (__len2 && __len2 <= __len1) 234s 1949: this->_S_move(__p, __s, __len2); 234s 1949: if (__how_much && __len1 != __len2) 234s 1949: this->_S_move(__p + __len2, __p + __len1, __how_much); 234s 1949: if (__len2 > __len1) 234s 1949: { 234s 1949: if (__s + __len2 <= __p + __len1) 234s 1949: this->_S_move(__p, __s, __len2); 234s 1949: else if (__s >= __p + __len1) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const size_type __poff = (__s - __p) + (__len2 - __len1); 234s 1949: this->_S_copy(__p, __p + __poff, __len2); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: const size_type __nleft = (__p + __len1) - __s; 234s 1949: this->_S_move(__p, __s, __nleft); 234s 1949: this->_S_copy(__p + __nleft, __p + __len2, __len2 - __nleft); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: basic_string<_CharT, _Traits, _Alloc>& 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 234s 1949: const size_type __len2) 234s 1949: { 234s 1949: _M_check_length(__len1, __len2, "basic_string::_M_replace"); 234s 1949: 234s 1949: const size_type __old_size = this->size(); 234s 1949: const size_type __new_size = __old_size + __len2 - __len1; 234s 1949: 234s 1949: if (__new_size <= this->capacity()) 234s 1949: { 234s 1949: pointer __p = this->_M_data() + __pos; 234s 1949: 234s 1949: const size_type __how_much = __old_size - __pos - __len1; 234s 1949: # 568 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 234s 1949: if (__builtin_expect(_M_disjunct(__s), true)) 234s 1949: { 234s 1949: if (__how_much && __len1 != __len2) 234s 1949: this->_S_move(__p + __len2, __p + __len1, __how_much); 234s 1949: if (__len2) 234s 1949: this->_S_copy(__p, __s, __len2); 234s 1949: } 234s 1949: else 234s 1949: _M_replace_cold(__p, __len1, __s, __len2, __how_much); 234s 1949: } 234s 1949: else 234s 1949: this->_M_mutate(__pos, __len1, __s, __len2); 234s 1949: 234s 1949: this->_M_set_length(__new_size); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: copy(_CharT* __s, size_type __n, size_type __pos) const 234s 1949: { 234s 1949: _M_check(__pos, "basic_string::copy"); 234s 1949: __n = _M_limit(__pos, __n); 234s 1949: ; 234s 1949: if (__n) 234s 1949: _S_copy(__s, _M_data() + __pos, __n); 234s 1949: 234s 1949: return __n; 234s 1949: } 234s 1949: # 611 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 234s 1949: template 234s 1949: template 234s 1949: void 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __resize_and_overwrite(const size_type __n, _Operation __op) 234s 1949: 234s 1949: { 234s 1949: reserve(__n); 234s 1949: _CharT* const __p = _M_data(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct _Terminator { 234s 1949: ~_Terminator() { _M_this->_M_set_length(_M_r); } 234s 1949: basic_string* _M_this; 234s 1949: size_type _M_r; 234s 1949: }; 234s 1949: _Terminator __term{this, 0}; 234s 1949: auto __r = std::move(__op)(__p + 0, __n + 0); 234s 1949: 234s 1949: 234s 1949: 234s 1949: static_assert(__gnu_cxx::__is_integer_nonstrict::__value, 234s 1949: "resize_and_overwrite operation must return an integer"); 234s 1949: 234s 1949: ; 234s 1949: __term._M_r = size_type(__r); 234s 1949: if (__term._M_r > __n) 234s 1949: __builtin_unreachable(); 234s 1949: } 234s 1949: # 654 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: find(const _CharT* __s, size_type __pos, size_type __n) const 234s 1949: noexcept 234s 1949: { 234s 1949: ; 234s 1949: const size_type __size = this->size(); 234s 1949: 234s 1949: if (__n == 0) 234s 1949: return __pos <= __size ? __pos : npos; 234s 1949: if (__pos >= __size) 234s 1949: return npos; 234s 1949: 234s 1949: const _CharT __elem0 = __s[0]; 234s 1949: const _CharT* const __data = data(); 234s 1949: const _CharT* __first = __data + __pos; 234s 1949: const _CharT* const __last = __data + __size; 234s 1949: size_type __len = __size - __pos; 234s 1949: 234s 1949: while (__len >= __n) 234s 1949: { 234s 1949: 234s 1949: __first = traits_type::find(__first, __len - __n + 1, __elem0); 234s 1949: if (!__first) 234s 1949: return npos; 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (traits_type::compare(__first, __s, __n) == 0) 234s 1949: return __first - __data; 234s 1949: __len = __last - ++__first; 234s 1949: } 234s 1949: return npos; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: find(_CharT __c, size_type __pos) const noexcept 234s 1949: { 234s 1949: size_type __ret = npos; 234s 1949: const size_type __size = this->size(); 234s 1949: if (__pos < __size) 234s 1949: { 234s 1949: const _CharT* __data = _M_data(); 234s 1949: const size_type __n = __size - __pos; 234s 1949: const _CharT* __p = traits_type::find(__data + __pos, __n, __c); 234s 1949: if (__p) 234s 1949: __ret = __p - __data; 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: rfind(const _CharT* __s, size_type __pos, size_type __n) const 234s 1949: noexcept 234s 1949: { 234s 1949: ; 234s 1949: const size_type __size = this->size(); 234s 1949: if (__n <= __size) 234s 1949: { 234s 1949: __pos = std::min(size_type(__size - __n), __pos); 234s 1949: const _CharT* __data = _M_data(); 234s 1949: do 234s 1949: { 234s 1949: if (traits_type::compare(__data + __pos, __s, __n) == 0) 234s 1949: return __pos; 234s 1949: } 234s 1949: while (__pos-- > 0); 234s 1949: } 234s 1949: return npos; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: rfind(_CharT __c, size_type __pos) const noexcept 234s 1949: { 234s 1949: size_type __size = this->size(); 234s 1949: if (__size) 234s 1949: { 234s 1949: if (--__size > __pos) 234s 1949: __size = __pos; 234s 1949: for (++__size; __size-- > 0; ) 234s 1949: if (traits_type::eq(_M_data()[__size], __c)) 234s 1949: return __size; 234s 1949: } 234s 1949: return npos; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 234s 1949: noexcept 234s 1949: { 234s 1949: ; 234s 1949: for (; __n && __pos < this->size(); ++__pos) 234s 1949: { 234s 1949: const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); 234s 1949: if (__p) 234s 1949: return __pos; 234s 1949: } 234s 1949: return npos; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 234s 1949: noexcept 234s 1949: { 234s 1949: ; 234s 1949: size_type __size = this->size(); 234s 1949: if (__size && __n) 234s 1949: { 234s 1949: if (--__size > __pos) 234s 1949: __size = __pos; 234s 1949: do 234s 1949: { 234s 1949: if (traits_type::find(__s, __n, _M_data()[__size])) 234s 1949: return __size; 234s 1949: } 234s 1949: while (__size-- != 0); 234s 1949: } 234s 1949: return npos; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const 234s 1949: noexcept 234s 1949: { 234s 1949: ; 234s 1949: for (; __pos < this->size(); ++__pos) 234s 1949: if (!traits_type::find(__s, __n, _M_data()[__pos])) 234s 1949: return __pos; 234s 1949: return npos; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: find_first_not_of(_CharT __c, size_type __pos) const noexcept 234s 1949: { 234s 1949: for (; __pos < this->size(); ++__pos) 234s 1949: if (!traits_type::eq(_M_data()[__pos], __c)) 234s 1949: return __pos; 234s 1949: return npos; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const 234s 1949: noexcept 234s 1949: { 234s 1949: ; 234s 1949: size_type __size = this->size(); 234s 1949: if (__size) 234s 1949: { 234s 1949: if (--__size > __pos) 234s 1949: __size = __pos; 234s 1949: do 234s 1949: { 234s 1949: if (!traits_type::find(__s, __n, _M_data()[__size])) 234s 1949: return __size; 234s 1949: } 234s 1949: while (__size--); 234s 1949: } 234s 1949: return npos; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename basic_string<_CharT, _Traits, _Alloc>::size_type 234s 1949: basic_string<_CharT, _Traits, _Alloc>:: 234s 1949: find_last_not_of(_CharT __c, size_type __pos) const noexcept 234s 1949: { 234s 1949: size_type __size = this->size(); 234s 1949: if (__size) 234s 1949: { 234s 1949: if (--__size > __pos) 234s 1949: __size = __pos; 234s 1949: do 234s 1949: { 234s 1949: if (!traits_type::eq(_M_data()[__size], __c)) 234s 1949: return __size; 234s 1949: } 234s 1949: while (__size--); 234s 1949: } 234s 1949: return npos; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __in, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __str) 234s 1949: { 234s 1949: typedef basic_istream<_CharT, _Traits> __istream_type; 234s 1949: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 234s 1949: typedef typename __istream_type::ios_base __ios_base; 234s 1949: typedef typename __istream_type::int_type __int_type; 234s 1949: typedef typename __string_type::size_type __size_type; 234s 1949: typedef ctype<_CharT> __ctype_type; 234s 1949: typedef typename __ctype_type::ctype_base __ctype_base; 234s 1949: 234s 1949: __size_type __extracted = 0; 234s 1949: typename __ios_base::iostate __err = __ios_base::goodbit; 234s 1949: typename __istream_type::sentry __cerb(__in, false); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: 234s 1949: __str.erase(); 234s 1949: _CharT __buf[128]; 234s 1949: __size_type __len = 0; 234s 1949: const streamsize __w = __in.width(); 234s 1949: const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) 234s 1949: : __str.max_size(); 234s 1949: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 234s 1949: const __int_type __eof = _Traits::eof(); 234s 1949: __int_type __c = __in.rdbuf()->sgetc(); 234s 1949: 234s 1949: while (__extracted < __n 234s 1949: && !_Traits::eq_int_type(__c, __eof) 234s 1949: && !__ct.is(__ctype_base::space, 234s 1949: _Traits::to_char_type(__c))) 234s 1949: { 234s 1949: if (__len == sizeof(__buf) / sizeof(_CharT)) 234s 1949: { 234s 1949: __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); 234s 1949: __len = 0; 234s 1949: } 234s 1949: __buf[__len++] = _Traits::to_char_type(__c); 234s 1949: ++__extracted; 234s 1949: __c = __in.rdbuf()->snextc(); 234s 1949: } 234s 1949: __str.append(__buf, __len); 234s 1949: 234s 1949: if (__extracted < __n && _Traits::eq_int_type(__c, __eof)) 234s 1949: __err |= __ios_base::eofbit; 234s 1949: __in.width(0); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __in._M_setstate(__ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: __in._M_setstate(__ios_base::badbit); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: if (!__extracted) 234s 1949: __err |= __ios_base::failbit; 234s 1949: if (__err) 234s 1949: __in.setstate(__err); 234s 1949: return __in; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: getline(basic_istream<_CharT, _Traits>& __in, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 234s 1949: { 234s 1949: typedef basic_istream<_CharT, _Traits> __istream_type; 234s 1949: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 234s 1949: typedef typename __istream_type::ios_base __ios_base; 234s 1949: typedef typename __istream_type::int_type __int_type; 234s 1949: typedef typename __string_type::size_type __size_type; 234s 1949: 234s 1949: __size_type __extracted = 0; 234s 1949: const __size_type __n = __str.max_size(); 234s 1949: typename __ios_base::iostate __err = __ios_base::goodbit; 234s 1949: typename __istream_type::sentry __cerb(__in, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: __str.erase(); 234s 1949: const __int_type __idelim = _Traits::to_int_type(__delim); 234s 1949: const __int_type __eof = _Traits::eof(); 234s 1949: __int_type __c = __in.rdbuf()->sgetc(); 234s 1949: 234s 1949: while (__extracted < __n 234s 1949: && !_Traits::eq_int_type(__c, __eof) 234s 1949: && !_Traits::eq_int_type(__c, __idelim)) 234s 1949: { 234s 1949: __str += _Traits::to_char_type(__c); 234s 1949: ++__extracted; 234s 1949: __c = __in.rdbuf()->snextc(); 234s 1949: } 234s 1949: 234s 1949: if (_Traits::eq_int_type(__c, __eof)) 234s 1949: __err |= __ios_base::eofbit; 234s 1949: else if (_Traits::eq_int_type(__c, __idelim)) 234s 1949: { 234s 1949: ++__extracted; 234s 1949: __in.rdbuf()->sbumpc(); 234s 1949: } 234s 1949: else 234s 1949: __err |= __ios_base::failbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __in._M_setstate(__ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: __in._M_setstate(__ios_base::badbit); 234s 1949: } 234s 1949: } 234s 1949: if (!__extracted) 234s 1949: __err |= __ios_base::failbit; 234s 1949: if (__err) 234s 1949: __in.setstate(__err); 234s 1949: return __in; 234s 1949: } 234s 1949: # 1008 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 234s 1949: extern template class basic_string; 234s 1949: # 1021 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 234s 1949: extern template 234s 1949: basic_istream& 234s 1949: operator>>(basic_istream&, string&); 234s 1949: extern template 234s 1949: basic_ostream& 234s 1949: operator<<(basic_ostream&, const string&); 234s 1949: extern template 234s 1949: basic_istream& 234s 1949: getline(basic_istream&, string&, char); 234s 1949: extern template 234s 1949: basic_istream& 234s 1949: getline(basic_istream&, string&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template class basic_string; 234s 1949: # 1047 "/usr/include/c++/15/bits/basic_string.tcc" 3 4 234s 1949: extern template 234s 1949: basic_istream& 234s 1949: operator>>(basic_istream&, wstring&); 234s 1949: extern template 234s 1949: basic_ostream& 234s 1949: operator<<(basic_ostream&, const wstring&); 234s 1949: extern template 234s 1949: basic_istream& 234s 1949: getline(basic_istream&, wstring&, wchar_t); 234s 1949: extern template 234s 1949: basic_istream& 234s 1949: getline(basic_istream&, wstring&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 58 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 69 "/usr/include/c++/15/string" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 70 "/usr/include/c++/15/string" 2 3 4 234s 1949: # 43 "/usr/include/c++/15/bits/locale_classes.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 68 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: class locale 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: typedef int category; 234s 1949: 234s 1949: 234s 1949: class facet; 234s 1949: class id; 234s 1949: class _Impl; 234s 1949: 234s 1949: friend class facet; 234s 1949: friend class _Impl; 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: has_facet(const locale&) throw(); 234s 1949: 234s 1949: template 234s 1949: friend const _Facet& 234s 1949: use_facet(const locale&); 234s 1949: 234s 1949: template 234s 1949: friend const _Facet* 234s 1949: __try_use_facet(const locale&) noexcept; 234s 1949: 234s 1949: template 234s 1949: friend struct __use_cache; 234s 1949: # 108 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: static const category none = 0; 234s 1949: static const category ctype = 1L << 0; 234s 1949: static const category numeric = 1L << 1; 234s 1949: static const category collate = 1L << 2; 234s 1949: static const category time = 1L << 3; 234s 1949: static const category monetary = 1L << 4; 234s 1949: static const category messages = 1L << 5; 234s 1949: static const category all = (ctype | numeric | collate | 234s 1949: time | monetary | messages); 234s 1949: # 127 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: locale() throw(); 234s 1949: # 136 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: locale(const locale& __other) throw(); 234s 1949: # 146 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: explicit 234s 1949: locale(const char* __s); 234s 1949: # 161 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: locale(const locale& __base, const char* __s, category __cat); 234s 1949: # 172 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: explicit 234s 1949: locale(const std::string& __s) : locale(__s.c_str()) { } 234s 1949: # 187 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: locale(const locale& __base, const std::string& __s, category __cat) 234s 1949: : locale(__base, __s.c_str(), __cat) { } 234s 1949: # 202 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: locale(const locale& __base, const locale& __add, category __cat); 234s 1949: # 215 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: template 234s 1949: locale(const locale& __other, _Facet* __f); 234s 1949: 234s 1949: 234s 1949: ~locale() throw(); 234s 1949: # 229 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: const locale& 234s 1949: operator=(const locale& __other) throw(); 234s 1949: # 244 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: locale 234s 1949: combine(const locale& __other) const; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: string 234s 1949: name() const; 234s 1949: # 275 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: operator==(const locale& __other) const throw(); 234s 1949: # 286 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: operator!=(const locale& __other) const throw() 234s 1949: { return !(this->operator==(__other)); } 234s 1949: # 307 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, 234s 1949: const basic_string<_Char, _Traits, _Alloc>& __s2) const; 234s 1949: # 324 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: static locale 234s 1949: global(const locale& __loc); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: static const locale& 234s 1949: classic(); 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: _Impl* _M_impl; 234s 1949: 234s 1949: 234s 1949: static _Impl* _S_classic; 234s 1949: 234s 1949: 234s 1949: static _Impl* _S_global; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const char* const* const _S_categories; 234s 1949: # 360 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: enum { _S_categories_size = 6 + 6 }; 234s 1949: 234s 1949: 234s 1949: static __gthread_once_t _S_once; 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: locale(_Impl*) throw(); 234s 1949: 234s 1949: static void 234s 1949: _S_initialize(); 234s 1949: 234s 1949: static void 234s 1949: _S_initialize_once() throw(); 234s 1949: 234s 1949: static category 234s 1949: _S_normalize_category(category); 234s 1949: 234s 1949: void 234s 1949: _M_coalesce(const locale& __base, const locale& __add, category __cat); 234s 1949: 234s 1949: 234s 1949: static const id* const _S_twinned_facets[]; 234s 1949: 234s 1949: }; 234s 1949: # 404 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: class locale::facet 234s 1949: { 234s 1949: private: 234s 1949: friend class locale; 234s 1949: friend class locale::_Impl; 234s 1949: 234s 1949: mutable _Atomic_word _M_refcount; 234s 1949: 234s 1949: 234s 1949: static __c_locale _S_c_locale; 234s 1949: 234s 1949: 234s 1949: static const char _S_c_name[2]; 234s 1949: 234s 1949: 234s 1949: static __gthread_once_t _S_once; 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: _S_initialize_once(); 234s 1949: 234s 1949: protected: 234s 1949: # 435 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: explicit 234s 1949: facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: virtual 234s 1949: ~facet(); 234s 1949: 234s 1949: static void 234s 1949: _S_create_c_locale(__c_locale& __cloc, const char* __s, 234s 1949: __c_locale __old = 0); 234s 1949: 234s 1949: static __c_locale 234s 1949: _S_clone_c_locale(__c_locale& __cloc) throw(); 234s 1949: 234s 1949: static void 234s 1949: _S_destroy_c_locale(__c_locale& __cloc); 234s 1949: 234s 1949: static __c_locale 234s 1949: _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s); 234s 1949: 234s 1949: 234s 1949: 234s 1949: static __c_locale 234s 1949: _S_get_c_locale(); 234s 1949: 234s 1949: __attribute__ ((__const__)) static const char* 234s 1949: _S_get_c_name() throw(); 234s 1949: # 471 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: facet(const facet&) = delete; 234s 1949: 234s 1949: facet& 234s 1949: operator=(const facet&) = delete; 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: void 234s 1949: _M_add_reference() const throw() 234s 1949: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 234s 1949: 234s 1949: void 234s 1949: _M_remove_reference() const throw() 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) 234s 1949: { 234s 1949: ; 234s 1949: try 234s 1949: { delete this; } 234s 1949: catch(...) 234s 1949: { } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: const facet* _M_sso_shim(const id*) const; 234s 1949: const facet* _M_cow_shim(const id*) const; 234s 1949: 234s 1949: protected: 234s 1949: class __shim; 234s 1949: }; 234s 1949: # 516 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: class locale::id 234s 1949: { 234s 1949: private: 234s 1949: friend class locale; 234s 1949: friend class locale::_Impl; 234s 1949: 234s 1949: template 234s 1949: friend const _Facet& 234s 1949: use_facet(const locale&); 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: has_facet(const locale&) throw(); 234s 1949: 234s 1949: template 234s 1949: friend const _Facet* 234s 1949: __try_use_facet(const locale&) noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: mutable size_t _M_index; 234s 1949: 234s 1949: 234s 1949: static _Atomic_word _S_refcount; 234s 1949: 234s 1949: void 234s 1949: operator=(const id&); 234s 1949: 234s 1949: id(const id&); 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: id() { } 234s 1949: 234s 1949: size_t 234s 1949: _M_id() const throw(); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: class locale::_Impl 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: friend class locale; 234s 1949: friend class locale::facet; 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: has_facet(const locale&) throw(); 234s 1949: 234s 1949: template 234s 1949: friend const _Facet& 234s 1949: use_facet(const locale&); 234s 1949: 234s 1949: template 234s 1949: friend const _Facet* 234s 1949: __try_use_facet(const locale&) noexcept; 234s 1949: 234s 1949: template 234s 1949: friend struct __use_cache; 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: _Atomic_word _M_refcount; 234s 1949: const facet** _M_facets; 234s 1949: size_t _M_facets_size; 234s 1949: const facet** _M_caches; 234s 1949: char** _M_names; 234s 1949: static const locale::id* const _S_id_ctype[]; 234s 1949: static const locale::id* const _S_id_numeric[]; 234s 1949: static const locale::id* const _S_id_collate[]; 234s 1949: static const locale::id* const _S_id_time[]; 234s 1949: static const locale::id* const _S_id_monetary[]; 234s 1949: static const locale::id* const _S_id_messages[]; 234s 1949: static const locale::id* const* const _S_facet_categories[]; 234s 1949: 234s 1949: void 234s 1949: _M_add_reference() throw() 234s 1949: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 234s 1949: 234s 1949: void 234s 1949: _M_remove_reference() throw() 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) 234s 1949: { 234s 1949: ; 234s 1949: try 234s 1949: { delete this; } 234s 1949: catch(...) 234s 1949: { } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: _Impl(const _Impl&, size_t); 234s 1949: _Impl(const char*, size_t); 234s 1949: _Impl(size_t) throw(); 234s 1949: 234s 1949: ~_Impl() throw(); 234s 1949: 234s 1949: _Impl(const _Impl&); 234s 1949: 234s 1949: void 234s 1949: operator=(const _Impl&); 234s 1949: 234s 1949: bool 234s 1949: _M_check_same_name() 234s 1949: { 234s 1949: bool __ret = true; 234s 1949: if (_M_names[1]) 234s 1949: 234s 1949: for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) 234s 1949: __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_replace_categories(const _Impl*, category); 234s 1949: 234s 1949: void 234s 1949: _M_replace_category(const _Impl*, const locale::id* const*); 234s 1949: 234s 1949: void 234s 1949: _M_replace_facet(const _Impl*, const locale::id*); 234s 1949: 234s 1949: void 234s 1949: _M_install_facet(const locale::id*, const facet*); 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _M_init_facet(_Facet* __facet) 234s 1949: { _M_install_facet(&_Facet::id, __facet); } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _M_init_facet_unchecked(_Facet* __facet) 234s 1949: { 234s 1949: __facet->_M_add_reference(); 234s 1949: _M_facets[_Facet::id._M_id()] = __facet; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_install_cache(const facet*, size_t); 234s 1949: 234s 1949: void _M_init_extra(facet**); 234s 1949: void _M_init_extra(void*, void*, const char*, const char*); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: # 686 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: template 234s 1949: class __cxx11:: collate : public locale::facet 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef basic_string<_CharT> string_type; 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: __c_locale _M_c_locale_collate; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: static locale::id id; 234s 1949: # 713 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: explicit 234s 1949: collate(size_t __refs = 0) 234s 1949: : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) 234s 1949: { } 234s 1949: # 727 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: explicit 234s 1949: collate(__c_locale __cloc, size_t __refs = 0) 234s 1949: : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) 234s 1949: { } 234s 1949: # 744 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: int 234s 1949: compare(const _CharT* __lo1, const _CharT* __hi1, 234s 1949: const _CharT* __lo2, const _CharT* __hi2) const 234s 1949: { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } 234s 1949: # 763 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: string_type 234s 1949: transform(const _CharT* __lo, const _CharT* __hi) const 234s 1949: { return this->do_transform(__lo, __hi); } 234s 1949: # 777 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: long 234s 1949: hash(const _CharT* __lo, const _CharT* __hi) const 234s 1949: { return this->do_hash(__lo, __hi); } 234s 1949: 234s 1949: 234s 1949: int 234s 1949: _M_compare(const _CharT*, const _CharT*) const throw(); 234s 1949: 234s 1949: size_t 234s 1949: _M_transform(_CharT*, const _CharT*, size_t) const throw(); 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: virtual 234s 1949: ~collate() 234s 1949: { _S_destroy_c_locale(_M_c_locale_collate); } 234s 1949: # 806 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: virtual int 234s 1949: do_compare(const _CharT* __lo1, const _CharT* __hi1, 234s 1949: const _CharT* __lo2, const _CharT* __hi2) const; 234s 1949: # 820 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: virtual string_type 234s 1949: do_transform(const _CharT* __lo, const _CharT* __hi) const; 234s 1949: # 833 "/usr/include/c++/15/bits/locale_classes.h" 3 4 234s 1949: virtual long 234s 1949: do_hash(const _CharT* __lo, const _CharT* __hi) const; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id collate<_CharT>::id; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: int 234s 1949: collate::_M_compare(const char*, const char*) const throw(); 234s 1949: 234s 1949: template<> 234s 1949: size_t 234s 1949: collate::_M_transform(char*, const char*, size_t) const throw(); 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: int 234s 1949: collate::_M_compare(const wchar_t*, const wchar_t*) const throw(); 234s 1949: 234s 1949: template<> 234s 1949: size_t 234s 1949: collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class __cxx11:: collate_byname : public collate<_CharT> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef basic_string<_CharT> string_type; 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: collate_byname(const char* __s, size_t __refs = 0) 234s 1949: : collate<_CharT>(__refs) 234s 1949: { 234s 1949: if (__builtin_strcmp(__s, "C") != 0 234s 1949: && __builtin_strcmp(__s, "POSIX") != 0) 234s 1949: { 234s 1949: this->_S_destroy_c_locale(this->_M_c_locale_collate); 234s 1949: this->_S_create_c_locale(this->_M_c_locale_collate, __s); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: collate_byname(const string& __s, size_t __refs = 0) 234s 1949: : collate_byname(__s.c_str(), __refs) { } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~collate_byname() { } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/locale_classes.tcc" 1 3 4 234s 1949: # 43 "/usr/include/c++/15/bits/locale_classes.tcc" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: #pragma GCC diagnostic ignored "-Wvariadic-macros" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: locale:: 234s 1949: locale(const locale& __other, _Facet* __f) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__builtin_expect(!__f, 0)) 234s 1949: { 234s 1949: _M_impl = __other._M_impl; 234s 1949: _M_impl->_M_add_reference(); 234s 1949: return; 234s 1949: } 234s 1949: 234s 1949: _M_impl = new _Impl(*__other._M_impl, 1); 234s 1949: 234s 1949: try 234s 1949: { _M_impl->_M_install_facet(&_Facet::id, __f); } 234s 1949: catch(...) 234s 1949: { 234s 1949: _M_impl->_M_remove_reference(); 234s 1949: throw; 234s 1949: } 234s 1949: delete [] _M_impl->_M_names[0]; 234s 1949: _M_impl->_M_names[0] = 0; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: locale 234s 1949: locale:: 234s 1949: combine(const locale& __other) const 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Impl* __tmp = new _Impl(*_M_impl, 1); 234s 1949: try 234s 1949: { 234s 1949: __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: __tmp->_M_remove_reference(); 234s 1949: throw; 234s 1949: } 234s 1949: delete[] __tmp->_M_names[0]; 234s 1949: __tmp->_M_names[0] = 0; 234s 1949: return locale(__tmp); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: locale:: 234s 1949: operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, 234s 1949: const basic_string<_CharT, _Traits, _Alloc>& __s2) const 234s 1949: { 234s 1949: typedef std::collate<_CharT> __collate_type; 234s 1949: const __collate_type& __collate = use_facet<__collate_type>(*this); 234s 1949: return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), 234s 1949: __s2.data(), __s2.data() + __s2.length()) < 0); 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: inline const _Facet* 234s 1949: __try_use_facet(const locale& __loc) noexcept 234s 1949: { 234s 1949: const size_t __i = _Facet::id._M_id(); 234s 1949: const locale::facet** __facets = __loc._M_impl->_M_facets; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if constexpr (__is_same(const _Facet, const ctype)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const num_get)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const num_put)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const codecvt)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const collate)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const moneypunct)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const moneypunct)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const money_get)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const money_put)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const numpunct)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const time_get)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const time_put)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const messages)) return static_cast(__facets[__i]); 234s 1949: 234s 1949: 234s 1949: if constexpr (__is_same(const _Facet, const ctype)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const num_get)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const num_put)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const codecvt)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const collate)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const moneypunct)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const moneypunct)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const money_get)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const money_put)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const numpunct)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const time_get)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const time_put)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const messages)) return static_cast(__facets[__i]); 234s 1949: 234s 1949: 234s 1949: if constexpr (__is_same(const _Facet, const codecvt)) return static_cast(__facets[__i]); 234s 1949: if constexpr (__is_same(const _Facet, const codecvt)) return static_cast(__facets[__i]); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) 234s 1949: return 0; 234s 1949: 234s 1949: 234s 1949: return dynamic_cast(__facets[__i]); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 187 "/usr/include/c++/15/bits/locale_classes.tcc" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: has_facet(const locale& __loc) noexcept 234s 1949: { 234s 1949: 234s 1949: static_assert(__is_base_of(locale::facet, _Facet), 234s 1949: "template argument must be derived from locale::facet"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: return std::__try_use_facet<_Facet>(__loc) != 0; 234s 1949: } 234s 1949: # 215 "/usr/include/c++/15/bits/locale_classes.tcc" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdangling-reference" 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline const _Facet& 234s 1949: use_facet(const locale& __loc) 234s 1949: { 234s 1949: 234s 1949: static_assert(__is_base_of(locale::facet, _Facet), 234s 1949: "template argument must be derived from locale::facet"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (const _Facet* __f = std::__try_use_facet<_Facet>(__loc)) 234s 1949: return *__f; 234s 1949: __throw_bad_cast(); 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: int 234s 1949: collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () 234s 1949: { return 0; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: size_t 234s 1949: collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () 234s 1949: { return 0; } 234s 1949: 234s 1949: template 234s 1949: int 234s 1949: collate<_CharT>:: 234s 1949: do_compare(const _CharT* __lo1, const _CharT* __hi1, 234s 1949: const _CharT* __lo2, const _CharT* __hi2) const 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const string_type __one(__lo1, __hi1); 234s 1949: const string_type __two(__lo2, __hi2); 234s 1949: 234s 1949: const _CharT* __p = __one.c_str(); 234s 1949: const _CharT* __pend = __one.data() + __one.length(); 234s 1949: const _CharT* __q = __two.c_str(); 234s 1949: const _CharT* __qend = __two.data() + __two.length(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: for (;;) 234s 1949: { 234s 1949: const int __res = _M_compare(__p, __q); 234s 1949: if (__res) 234s 1949: return __res; 234s 1949: 234s 1949: __p += char_traits<_CharT>::length(__p); 234s 1949: __q += char_traits<_CharT>::length(__q); 234s 1949: if (__p == __pend && __q == __qend) 234s 1949: return 0; 234s 1949: else if (__p == __pend) 234s 1949: return -1; 234s 1949: else if (__q == __qend) 234s 1949: return 1; 234s 1949: 234s 1949: __p++; 234s 1949: __q++; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename collate<_CharT>::string_type 234s 1949: collate<_CharT>:: 234s 1949: do_transform(const _CharT* __lo, const _CharT* __hi) const 234s 1949: { 234s 1949: string_type __ret; 234s 1949: 234s 1949: 234s 1949: const string_type __str(__lo, __hi); 234s 1949: 234s 1949: const _CharT* __p = __str.c_str(); 234s 1949: const _CharT* __pend = __str.data() + __str.length(); 234s 1949: 234s 1949: size_t __len = (__hi - __lo) * 2; 234s 1949: 234s 1949: struct _Buf 234s 1949: { 234s 1949: _Buf(size_t __n, void* __buf, int __e) 234s 1949: : _M_c(__buf ? (_CharT*)__buf : new _CharT[__n]), 234s 1949: _M_stackbuf(__buf), 234s 1949: _M_errno(__e) 234s 1949: { } 234s 1949: 234s 1949: ~_Buf() 234s 1949: { 234s 1949: if (_M_c != _M_stackbuf) 234s 1949: delete[] _M_c; 234s 1949: if ((*__errno_location ()) == 0) 234s 1949: (*__errno_location ()) = _M_errno; 234s 1949: } 234s 1949: 234s 1949: void _M_realloc(size_t __len) 234s 1949: { 234s 1949: _CharT* __p = new _CharT[__len]; 234s 1949: if (_M_c != _M_stackbuf) 234s 1949: delete[] _M_c; 234s 1949: _M_c = __p; 234s 1949: } 234s 1949: 234s 1949: _CharT* _M_c; 234s 1949: void* const _M_stackbuf; 234s 1949: int _M_errno; 234s 1949: }; 234s 1949: 234s 1949: const size_t __bytes = __len * sizeof(_CharT); 234s 1949: _Buf __buf(__len, __bytes <= 256 ? __builtin_alloca(__bytes) : 0, (*__errno_location ())); 234s 1949: (*__errno_location ()) = 0; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: for (;;) 234s 1949: { 234s 1949: 234s 1949: size_t __res = _M_transform(__buf._M_c, __p, __len); 234s 1949: 234s 1949: 234s 1949: if (__res >= __len) 234s 1949: { 234s 1949: if (__builtin_expect((*__errno_location ()), 0)) 234s 1949: { 234s 1949: 234s 1949: __throw_system_error((*__errno_location ())); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: __len = __res + 1; 234s 1949: __buf._M_realloc(__len); 234s 1949: __res = _M_transform(__buf._M_c, __p, __len); 234s 1949: } 234s 1949: 234s 1949: __ret.append(__buf._M_c, __res); 234s 1949: __p += char_traits<_CharT>::length(__p); 234s 1949: if (__p == __pend) 234s 1949: break; 234s 1949: 234s 1949: __p++; 234s 1949: __ret.push_back(_CharT()); 234s 1949: } 234s 1949: 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: long 234s 1949: collate<_CharT>:: 234s 1949: do_hash(const _CharT* __lo, const _CharT* __hi) const 234s 1949: { 234s 1949: unsigned long __val = 0; 234s 1949: for (; __lo < __hi; ++__lo) 234s 1949: __val = 234s 1949: *__lo + ((__val << 7) 234s 1949: | (__val >> (__gnu_cxx::__numeric_traits:: 234s 1949: __digits - 7))); 234s 1949: return static_cast(__val); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template class collate; 234s 1949: extern template class collate_byname; 234s 1949: 234s 1949: extern template 234s 1949: const collate* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const collate& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: 234s 1949: extern template class collate; 234s 1949: extern template class collate_byname; 234s 1949: 234s 1949: extern template 234s 1949: const collate* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const collate& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 897 "/usr/include/c++/15/bits/locale_classes.h" 2 3 4 234s 1949: # 44 "/usr/include/c++/15/bits/ios_base.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/system_error" 1 3 4 234s 1949: # 43 "/usr/include/c++/15/system_error" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/error_constants.h" 1 3 4 234s 1949: # 36 "/usr/include/arm-linux-gnueabihf/c++/15/bits/error_constants.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: enum class errc 234s 1949: { 234s 1949: address_family_not_supported = 97, 234s 1949: address_in_use = 98, 234s 1949: address_not_available = 99, 234s 1949: already_connected = 106, 234s 1949: argument_list_too_long = 7, 234s 1949: argument_out_of_domain = 33, 234s 1949: bad_address = 14, 234s 1949: bad_file_descriptor = 9, 234s 1949: 234s 1949: 234s 1949: bad_message = 74, 234s 1949: 234s 1949: 234s 1949: broken_pipe = 32, 234s 1949: connection_aborted = 103, 234s 1949: connection_already_in_progress = 114, 234s 1949: connection_refused = 111, 234s 1949: connection_reset = 104, 234s 1949: cross_device_link = 18, 234s 1949: destination_address_required = 89, 234s 1949: device_or_resource_busy = 16, 234s 1949: directory_not_empty = 39, 234s 1949: executable_format_error = 8, 234s 1949: file_exists = 17, 234s 1949: file_too_large = 27, 234s 1949: filename_too_long = 36, 234s 1949: function_not_supported = 38, 234s 1949: host_unreachable = 113, 234s 1949: 234s 1949: 234s 1949: identifier_removed = 43, 234s 1949: 234s 1949: 234s 1949: illegal_byte_sequence = 84, 234s 1949: inappropriate_io_control_operation = 25, 234s 1949: interrupted = 4, 234s 1949: invalid_argument = 22, 234s 1949: invalid_seek = 29, 234s 1949: io_error = 5, 234s 1949: is_a_directory = 21, 234s 1949: message_size = 90, 234s 1949: network_down = 100, 234s 1949: network_reset = 102, 234s 1949: network_unreachable = 101, 234s 1949: no_buffer_space = 105, 234s 1949: no_child_process = 10, 234s 1949: 234s 1949: 234s 1949: no_link = 67, 234s 1949: 234s 1949: 234s 1949: no_lock_available = 37, 234s 1949: 234s 1949: 234s 1949: no_message_available = 61, 234s 1949: 234s 1949: 234s 1949: no_message = 42, 234s 1949: no_protocol_option = 92, 234s 1949: no_space_on_device = 28, 234s 1949: 234s 1949: 234s 1949: no_stream_resources = 63, 234s 1949: 234s 1949: 234s 1949: no_such_device_or_address = 6, 234s 1949: no_such_device = 19, 234s 1949: no_such_file_or_directory = 2, 234s 1949: no_such_process = 3, 234s 1949: not_a_directory = 20, 234s 1949: not_a_socket = 88, 234s 1949: 234s 1949: 234s 1949: not_a_stream = 60, 234s 1949: 234s 1949: 234s 1949: not_connected = 107, 234s 1949: not_enough_memory = 12, 234s 1949: 234s 1949: 234s 1949: not_supported = 95, 234s 1949: 234s 1949: 234s 1949: 234s 1949: operation_canceled = 125, 234s 1949: 234s 1949: 234s 1949: operation_in_progress = 115, 234s 1949: operation_not_permitted = 1, 234s 1949: operation_not_supported = 95, 234s 1949: operation_would_block = 11, 234s 1949: 234s 1949: 234s 1949: owner_dead = 130, 234s 1949: 234s 1949: 234s 1949: permission_denied = 13, 234s 1949: 234s 1949: 234s 1949: protocol_error = 71, 234s 1949: 234s 1949: 234s 1949: protocol_not_supported = 93, 234s 1949: read_only_file_system = 30, 234s 1949: resource_deadlock_would_occur = 35, 234s 1949: resource_unavailable_try_again = 11, 234s 1949: result_out_of_range = 34, 234s 1949: 234s 1949: 234s 1949: state_not_recoverable = 131, 234s 1949: 234s 1949: 234s 1949: 234s 1949: stream_timeout = 62, 234s 1949: 234s 1949: 234s 1949: 234s 1949: text_file_busy = 26, 234s 1949: 234s 1949: 234s 1949: timed_out = 110, 234s 1949: too_many_files_open_in_system = 23, 234s 1949: too_many_files_open = 24, 234s 1949: too_many_links = 31, 234s 1949: too_many_symbolic_link_levels = 40, 234s 1949: 234s 1949: 234s 1949: value_too_large = 75, 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: wrong_protocol_type = 91 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 44 "/usr/include/c++/15/system_error" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/stdexcept" 1 3 4 234s 1949: # 43 "/usr/include/c++/15/stdexcept" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __cow_string 234s 1949: { 234s 1949: union { 234s 1949: const char* _M_p; 234s 1949: char _M_bytes[sizeof(const char*)]; 234s 1949: }; 234s 1949: 234s 1949: __cow_string(); 234s 1949: __cow_string(const std::string&); 234s 1949: __cow_string(const char*, size_t); 234s 1949: __cow_string(const __cow_string&) noexcept; 234s 1949: __cow_string& operator=(const __cow_string&) noexcept; 234s 1949: ~__cow_string(); 234s 1949: 234s 1949: __cow_string(__cow_string&&) noexcept; 234s 1949: __cow_string& operator=(__cow_string&&) noexcept; 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: typedef basic_string __sso_string; 234s 1949: # 115 "/usr/include/c++/15/stdexcept" 3 4 234s 1949: class logic_error : public exception 234s 1949: { 234s 1949: __cow_string _M_msg; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: explicit 234s 1949: logic_error(const string& __arg) ; 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: logic_error(const char*) ; 234s 1949: 234s 1949: logic_error(logic_error&&) noexcept; 234s 1949: logic_error& operator=(logic_error&&) noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: logic_error(const logic_error&) noexcept; 234s 1949: logic_error& operator=(const logic_error&) noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual ~logic_error() noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual const char* 234s 1949: what() const noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: class domain_error : public logic_error 234s 1949: { 234s 1949: public: 234s 1949: explicit domain_error(const string& __arg) ; 234s 1949: 234s 1949: explicit domain_error(const char*) ; 234s 1949: domain_error(const domain_error&) = default; 234s 1949: domain_error& operator=(const domain_error&) = default; 234s 1949: domain_error(domain_error&&) = default; 234s 1949: domain_error& operator=(domain_error&&) = default; 234s 1949: 234s 1949: virtual ~domain_error() noexcept; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: class invalid_argument : public logic_error 234s 1949: { 234s 1949: public: 234s 1949: explicit invalid_argument(const string& __arg) ; 234s 1949: 234s 1949: explicit invalid_argument(const char*) ; 234s 1949: invalid_argument(const invalid_argument&) = default; 234s 1949: invalid_argument& operator=(const invalid_argument&) = default; 234s 1949: invalid_argument(invalid_argument&&) = default; 234s 1949: invalid_argument& operator=(invalid_argument&&) = default; 234s 1949: 234s 1949: virtual ~invalid_argument() noexcept; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: class length_error : public logic_error 234s 1949: { 234s 1949: public: 234s 1949: explicit length_error(const string& __arg) ; 234s 1949: 234s 1949: explicit length_error(const char*) ; 234s 1949: length_error(const length_error&) = default; 234s 1949: length_error& operator=(const length_error&) = default; 234s 1949: length_error(length_error&&) = default; 234s 1949: length_error& operator=(length_error&&) = default; 234s 1949: 234s 1949: virtual ~length_error() noexcept; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: class out_of_range : public logic_error 234s 1949: { 234s 1949: public: 234s 1949: explicit out_of_range(const string& __arg) ; 234s 1949: 234s 1949: explicit out_of_range(const char*) ; 234s 1949: out_of_range(const out_of_range&) = default; 234s 1949: out_of_range& operator=(const out_of_range&) = default; 234s 1949: out_of_range(out_of_range&&) = default; 234s 1949: out_of_range& operator=(out_of_range&&) = default; 234s 1949: 234s 1949: virtual ~out_of_range() noexcept; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: class runtime_error : public exception 234s 1949: { 234s 1949: __cow_string _M_msg; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: explicit 234s 1949: runtime_error(const string& __arg) ; 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: runtime_error(const char*) ; 234s 1949: 234s 1949: runtime_error(runtime_error&&) noexcept; 234s 1949: runtime_error& operator=(runtime_error&&) noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: runtime_error(const runtime_error&) noexcept; 234s 1949: runtime_error& operator=(const runtime_error&) noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual ~runtime_error() noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual const char* 234s 1949: what() const noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: class range_error : public runtime_error 234s 1949: { 234s 1949: public: 234s 1949: explicit range_error(const string& __arg) ; 234s 1949: 234s 1949: explicit range_error(const char*) ; 234s 1949: range_error(const range_error&) = default; 234s 1949: range_error& operator=(const range_error&) = default; 234s 1949: range_error(range_error&&) = default; 234s 1949: range_error& operator=(range_error&&) = default; 234s 1949: 234s 1949: virtual ~range_error() noexcept; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: class overflow_error : public runtime_error 234s 1949: { 234s 1949: public: 234s 1949: explicit overflow_error(const string& __arg) ; 234s 1949: 234s 1949: explicit overflow_error(const char*) ; 234s 1949: overflow_error(const overflow_error&) = default; 234s 1949: overflow_error& operator=(const overflow_error&) = default; 234s 1949: overflow_error(overflow_error&&) = default; 234s 1949: overflow_error& operator=(overflow_error&&) = default; 234s 1949: 234s 1949: virtual ~overflow_error() noexcept; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: class underflow_error : public runtime_error 234s 1949: { 234s 1949: public: 234s 1949: explicit underflow_error(const string& __arg) ; 234s 1949: 234s 1949: explicit underflow_error(const char*) ; 234s 1949: underflow_error(const underflow_error&) = default; 234s 1949: underflow_error& operator=(const underflow_error&) = default; 234s 1949: underflow_error(underflow_error&&) = default; 234s 1949: underflow_error& operator=(underflow_error&&) = default; 234s 1949: 234s 1949: virtual ~underflow_error() noexcept; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 46 "/usr/include/c++/15/system_error" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: class error_code; 234s 1949: class error_condition; 234s 1949: class system_error; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_error_code_enum : public false_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct is_error_condition_enum : public false_type { }; 234s 1949: 234s 1949: template<> 234s 1949: struct is_error_condition_enum 234s 1949: : public true_type { }; 234s 1949: # 84 "/usr/include/c++/15/system_error" 3 4 234s 1949: inline namespace _V2 { 234s 1949: # 108 "/usr/include/c++/15/system_error" 3 4 234s 1949: class error_category 234s 1949: { 234s 1949: public: 234s 1949: constexpr error_category() noexcept = default; 234s 1949: 234s 1949: virtual ~error_category(); 234s 1949: 234s 1949: error_category(const error_category&) = delete; 234s 1949: error_category& operator=(const error_category&) = delete; 234s 1949: 234s 1949: 234s 1949: virtual const char* 234s 1949: name() const noexcept = 0; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: virtual __cow_string 234s 1949: _M_message(int) const; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: virtual string 234s 1949: message(int) const = 0; 234s 1949: # 146 "/usr/include/c++/15/system_error" 3 4 234s 1949: public: 234s 1949: 234s 1949: virtual error_condition 234s 1949: default_error_condition(int __i) const noexcept; 234s 1949: 234s 1949: 234s 1949: virtual bool 234s 1949: equivalent(int __i, const error_condition& __cond) const noexcept; 234s 1949: 234s 1949: 234s 1949: virtual bool 234s 1949: equivalent(const error_code& __code, int __i) const noexcept; 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: operator==(const error_category& __other) const noexcept 234s 1949: { return this == &__other; } 234s 1949: # 172 "/usr/include/c++/15/system_error" 3 4 234s 1949: bool 234s 1949: operator<(const error_category& __other) const noexcept 234s 1949: { return less()(this, &__other); } 234s 1949: 234s 1949: bool 234s 1949: operator!=(const error_category& __other) const noexcept 234s 1949: { return this != &__other; } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__, __gnu__::__const__]] 234s 1949: const error_category& 234s 1949: generic_category() noexcept; 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__, __gnu__::__const__]] 234s 1949: const error_category& 234s 1949: system_category() noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace __adl_only 234s 1949: { 234s 1949: void make_error_code() = delete; 234s 1949: void make_error_condition() = delete; 234s 1949: } 234s 1949: # 225 "/usr/include/c++/15/system_error" 3 4 234s 1949: class error_code 234s 1949: { 234s 1949: template 234s 1949: using _Check 234s 1949: = __enable_if_t::value>; 234s 1949: 234s 1949: public: 234s 1949: error_code() noexcept 234s 1949: : _M_value(0), _M_cat(&system_category()) { } 234s 1949: 234s 1949: error_code(int __v, const error_category& __cat) noexcept 234s 1949: : _M_value(__v), _M_cat(&__cat) { } 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: error_code(_ErrorCodeEnum __e) noexcept 234s 1949: { 234s 1949: using __adl_only::make_error_code; 234s 1949: *this = make_error_code(__e); 234s 1949: } 234s 1949: 234s 1949: error_code(const error_code&) = default; 234s 1949: error_code& operator=(const error_code&) = default; 234s 1949: 234s 1949: void 234s 1949: assign(int __v, const error_category& __cat) noexcept 234s 1949: { 234s 1949: _M_value = __v; 234s 1949: _M_cat = &__cat; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { assign(0, system_category()); } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: int 234s 1949: value() const noexcept { return _M_value; } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const error_category& 234s 1949: category() const noexcept { return *_M_cat; } 234s 1949: 234s 1949: 234s 1949: error_condition 234s 1949: default_error_condition() const noexcept; 234s 1949: 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: string 234s 1949: message() const 234s 1949: { return category().message(value()); } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: explicit operator bool() const noexcept 234s 1949: { return _M_value != 0; } 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: int _M_value; 234s 1949: const error_category* _M_cat; 234s 1949: }; 234s 1949: # 302 "/usr/include/c++/15/system_error" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: inline error_code 234s 1949: make_error_code(errc __e) noexcept 234s 1949: { return error_code(static_cast(__e), generic_category()); } 234s 1949: # 325 "/usr/include/c++/15/system_error" 3 4 234s 1949: inline bool 234s 1949: operator<(const error_code& __lhs, const error_code& __rhs) noexcept 234s 1949: { 234s 1949: return (__lhs.category() < __rhs.category() 234s 1949: || (__lhs.category() == __rhs.category() 234s 1949: && __lhs.value() < __rhs.value())); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) 234s 1949: { return (__os << __e.category().name() << ':' << __e.value()); } 234s 1949: # 356 "/usr/include/c++/15/system_error" 3 4 234s 1949: class error_condition 234s 1949: { 234s 1949: template 234s 1949: using _Check 234s 1949: = __enable_if_t::value>; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: error_condition() noexcept 234s 1949: : _M_value(0), _M_cat(&generic_category()) { } 234s 1949: 234s 1949: 234s 1949: error_condition(int __v, const error_category& __cat) noexcept 234s 1949: : _M_value(__v), _M_cat(&__cat) { } 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: error_condition(_ErrorConditionEnum __e) noexcept 234s 1949: { 234s 1949: using __adl_only::make_error_condition; 234s 1949: *this = make_error_condition(__e); 234s 1949: } 234s 1949: 234s 1949: error_condition(const error_condition&) = default; 234s 1949: error_condition& operator=(const error_condition&) = default; 234s 1949: 234s 1949: 234s 1949: void 234s 1949: assign(int __v, const error_category& __cat) noexcept 234s 1949: { 234s 1949: _M_value = __v; 234s 1949: _M_cat = &__cat; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { assign(0, generic_category()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: int 234s 1949: value() const noexcept { return _M_value; } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const error_category& 234s 1949: category() const noexcept { return *_M_cat; } 234s 1949: 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: string 234s 1949: message() const 234s 1949: { return category().message(value()); } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: explicit operator bool() const noexcept 234s 1949: { return _M_value != 0; } 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: int _M_value; 234s 1949: const error_category* _M_cat; 234s 1949: }; 234s 1949: # 435 "/usr/include/c++/15/system_error" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: inline error_condition 234s 1949: make_error_condition(errc __e) noexcept 234s 1949: { return error_condition(static_cast(__e), generic_category()); } 234s 1949: # 449 "/usr/include/c++/15/system_error" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const error_code& __lhs, const error_code& __rhs) noexcept 234s 1949: { 234s 1949: return __lhs.category() == __rhs.category() 234s 1949: && __lhs.value() == __rhs.value(); 234s 1949: } 234s 1949: # 465 "/usr/include/c++/15/system_error" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const error_code& __lhs, const error_condition& __rhs) noexcept 234s 1949: { 234s 1949: return __lhs.category().equivalent(__lhs.value(), __rhs) 234s 1949: || __rhs.category().equivalent(__lhs, __rhs.value()); 234s 1949: } 234s 1949: # 480 "/usr/include/c++/15/system_error" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const error_condition& __lhs, 234s 1949: const error_condition& __rhs) noexcept 234s 1949: { 234s 1949: return __lhs.category() == __rhs.category() 234s 1949: && __lhs.value() == __rhs.value(); 234s 1949: } 234s 1949: # 508 "/usr/include/c++/15/system_error" 3 4 234s 1949: inline bool 234s 1949: operator<(const error_condition& __lhs, 234s 1949: const error_condition& __rhs) noexcept 234s 1949: { 234s 1949: return (__lhs.category() < __rhs.category() 234s 1949: || (__lhs.category() == __rhs.category() 234s 1949: && __lhs.value() < __rhs.value())); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline bool 234s 1949: operator==(const error_condition& __lhs, const error_code& __rhs) noexcept 234s 1949: { 234s 1949: return (__rhs.category().equivalent(__rhs.value(), __lhs) 234s 1949: || __lhs.category().equivalent(__rhs, __lhs.value())); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline bool 234s 1949: operator!=(const error_code& __lhs, const error_code& __rhs) noexcept 234s 1949: { return !(__lhs == __rhs); } 234s 1949: 234s 1949: 234s 1949: inline bool 234s 1949: operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept 234s 1949: { return !(__lhs == __rhs); } 234s 1949: 234s 1949: 234s 1949: inline bool 234s 1949: operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept 234s 1949: { return !(__lhs == __rhs); } 234s 1949: 234s 1949: 234s 1949: inline bool 234s 1949: operator!=(const error_condition& __lhs, 234s 1949: const error_condition& __rhs) noexcept 234s 1949: { return !(__lhs == __rhs); } 234s 1949: # 558 "/usr/include/c++/15/system_error" 3 4 234s 1949: class system_error : public std::runtime_error 234s 1949: { 234s 1949: private: 234s 1949: error_code _M_code; 234s 1949: 234s 1949: public: 234s 1949: system_error(error_code __ec = error_code()) 234s 1949: : runtime_error(__ec.message()), _M_code(__ec) { } 234s 1949: 234s 1949: system_error(error_code __ec, const string& __what) 234s 1949: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } 234s 1949: 234s 1949: system_error(error_code __ec, const char* __what) 234s 1949: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } 234s 1949: 234s 1949: system_error(int __v, const error_category& __ecat, const char* __what) 234s 1949: : system_error(error_code(__v, __ecat), __what) { } 234s 1949: 234s 1949: system_error(int __v, const error_category& __ecat) 234s 1949: : runtime_error(error_code(__v, __ecat).message()), 234s 1949: _M_code(__v, __ecat) { } 234s 1949: 234s 1949: system_error(int __v, const error_category& __ecat, const string& __what) 234s 1949: : runtime_error(__what + (": " + error_code(__v, __ecat).message())), 234s 1949: _M_code(__v, __ecat) { } 234s 1949: 234s 1949: 234s 1949: system_error (const system_error &) = default; 234s 1949: system_error &operator= (const system_error &) = default; 234s 1949: 234s 1949: 234s 1949: virtual ~system_error() noexcept; 234s 1949: 234s 1949: const error_code& 234s 1949: code() const noexcept { return _M_code; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct hash 234s 1949: : public __hash_base 234s 1949: { 234s 1949: size_t 234s 1949: operator()(const error_code& __e) const noexcept 234s 1949: { 234s 1949: const size_t __tmp = std::_Hash_impl::hash(__e.value()); 234s 1949: return std::_Hash_impl::__hash_combine(&__e.category(), __tmp); 234s 1949: } 234s 1949: }; 234s 1949: # 638 "/usr/include/c++/15/system_error" 3 4 234s 1949: 234s 1949: } 234s 1949: # 49 "/usr/include/c++/15/bits/ios_base.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum _Ios_Fmtflags 234s 1949: { 234s 1949: _S_boolalpha = 1L << 0, 234s 1949: _S_dec = 1L << 1, 234s 1949: _S_fixed = 1L << 2, 234s 1949: _S_hex = 1L << 3, 234s 1949: _S_internal = 1L << 4, 234s 1949: _S_left = 1L << 5, 234s 1949: _S_oct = 1L << 6, 234s 1949: _S_right = 1L << 7, 234s 1949: _S_scientific = 1L << 8, 234s 1949: _S_showbase = 1L << 9, 234s 1949: _S_showpoint = 1L << 10, 234s 1949: _S_showpos = 1L << 11, 234s 1949: _S_skipws = 1L << 12, 234s 1949: _S_unitbuf = 1L << 13, 234s 1949: _S_uppercase = 1L << 14, 234s 1949: _S_adjustfield = _S_left | _S_right | _S_internal, 234s 1949: _S_basefield = _S_dec | _S_oct | _S_hex, 234s 1949: _S_floatfield = _S_scientific | _S_fixed, 234s 1949: _S_ios_fmtflags_end = 1L << 16, 234s 1949: _S_ios_fmtflags_max = 0x7fffffff, 234s 1949: _S_ios_fmtflags_min = ~0x7fffffff 234s 1949: }; 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Fmtflags 234s 1949: operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept 234s 1949: { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Fmtflags 234s 1949: operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept 234s 1949: { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Fmtflags 234s 1949: operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept 234s 1949: { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Fmtflags 234s 1949: operator~(_Ios_Fmtflags __a) noexcept 234s 1949: { return _Ios_Fmtflags(~static_cast(__a)); } 234s 1949: 234s 1949: constexpr 234s 1949: inline const _Ios_Fmtflags& 234s 1949: operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept 234s 1949: { return __a = __a | __b; } 234s 1949: 234s 1949: constexpr 234s 1949: inline const _Ios_Fmtflags& 234s 1949: operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept 234s 1949: { return __a = __a & __b; } 234s 1949: 234s 1949: constexpr 234s 1949: inline const _Ios_Fmtflags& 234s 1949: operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept 234s 1949: { return __a = __a ^ __b; } 234s 1949: # 127 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: enum __attribute__((__flag_enum__)) _Ios_Openmode 234s 1949: { 234s 1949: _S_app = 1L << 0, 234s 1949: _S_ate = 1L << 1, 234s 1949: _S_bin = 1L << 2, 234s 1949: _S_in = 1L << 3, 234s 1949: _S_out = 1L << 4, 234s 1949: _S_trunc = 1L << 5, 234s 1949: _S_noreplace __attribute__((__unused__)) = 1L << 6, 234s 1949: _S_ios_openmode_end __attribute__((__unused__)) = 1L << 16, 234s 1949: _S_ios_openmode_max __attribute__((__unused__)) = 0x7fffffff, 234s 1949: _S_ios_openmode_min __attribute__((__unused__)) = ~0x7fffffff 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Openmode 234s 1949: operator&(_Ios_Openmode __a, _Ios_Openmode __b) noexcept 234s 1949: { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Openmode 234s 1949: operator|(_Ios_Openmode __a, _Ios_Openmode __b) noexcept 234s 1949: { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Openmode 234s 1949: operator^(_Ios_Openmode __a, _Ios_Openmode __b) noexcept 234s 1949: { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Openmode 234s 1949: operator~(_Ios_Openmode __a) noexcept 234s 1949: { return _Ios_Openmode(~static_cast(__a)); } 234s 1949: 234s 1949: constexpr 234s 1949: inline const _Ios_Openmode& 234s 1949: operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept 234s 1949: { return __a = __a | __b; } 234s 1949: 234s 1949: constexpr 234s 1949: inline const _Ios_Openmode& 234s 1949: operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept 234s 1949: { return __a = __a & __b; } 234s 1949: 234s 1949: constexpr 234s 1949: inline const _Ios_Openmode& 234s 1949: operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept 234s 1949: { return __a = __a ^ __b; } 234s 1949: 234s 1949: 234s 1949: enum _Ios_Iostate 234s 1949: { 234s 1949: _S_goodbit = 0, 234s 1949: _S_badbit = 1L << 0, 234s 1949: _S_eofbit = 1L << 1, 234s 1949: _S_failbit = 1L << 2, 234s 1949: _S_ios_iostate_end = 1L << 16, 234s 1949: _S_ios_iostate_max = 0x7fffffff, 234s 1949: _S_ios_iostate_min = ~0x7fffffff 234s 1949: }; 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Iostate 234s 1949: operator&(_Ios_Iostate __a, _Ios_Iostate __b) noexcept 234s 1949: { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Iostate 234s 1949: operator|(_Ios_Iostate __a, _Ios_Iostate __b) noexcept 234s 1949: { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Iostate 234s 1949: operator^(_Ios_Iostate __a, _Ios_Iostate __b) noexcept 234s 1949: { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } 234s 1949: 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _Ios_Iostate 234s 1949: operator~(_Ios_Iostate __a) noexcept 234s 1949: { return _Ios_Iostate(~static_cast(__a)); } 234s 1949: 234s 1949: constexpr 234s 1949: inline const _Ios_Iostate& 234s 1949: operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept 234s 1949: { return __a = __a | __b; } 234s 1949: 234s 1949: constexpr 234s 1949: inline const _Ios_Iostate& 234s 1949: operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept 234s 1949: { return __a = __a & __b; } 234s 1949: 234s 1949: constexpr 234s 1949: inline const _Ios_Iostate& 234s 1949: operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept 234s 1949: { return __a = __a ^ __b; } 234s 1949: 234s 1949: 234s 1949: enum _Ios_Seekdir 234s 1949: { 234s 1949: _S_beg = 0, 234s 1949: _S_cur = 1, 234s 1949: _S_end = 2, 234s 1949: _S_ios_seekdir_end = 1L << 16 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum class io_errc { stream = 1 }; 234s 1949: 234s 1949: template <> struct is_error_code_enum : public true_type { }; 234s 1949: 234s 1949: [[__nodiscard__, __gnu__::__const__]] 234s 1949: const error_category& 234s 1949: iostream_category() noexcept; 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline error_code 234s 1949: make_error_code(io_errc __e) noexcept 234s 1949: { return error_code(static_cast(__e), iostream_category()); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: inline error_condition 234s 1949: make_error_condition(io_errc __e) noexcept 234s 1949: { return error_condition(static_cast(__e), iostream_category()); } 234s 1949: # 265 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: class ios_base 234s 1949: { 234s 1949: # 283 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: public: 234s 1949: # 292 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: failure(const string& __str); 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: failure(const string&, const error_code&); 234s 1949: 234s 1949: explicit 234s 1949: failure(const char*, const error_code& = io_errc::stream); 234s 1949: 234s 1949: 234s 1949: virtual 234s 1949: ~failure() throw(); 234s 1949: 234s 1949: virtual const char* 234s 1949: what() const throw(); 234s 1949: }; 234s 1949: # 378 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: typedef _Ios_Fmtflags fmtflags; 234s 1949: 234s 1949: 234s 1949: static const fmtflags boolalpha = _S_boolalpha; 234s 1949: 234s 1949: 234s 1949: static const fmtflags dec = _S_dec; 234s 1949: 234s 1949: 234s 1949: static const fmtflags fixed = _S_fixed; 234s 1949: 234s 1949: 234s 1949: static const fmtflags hex = _S_hex; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const fmtflags internal = _S_internal; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const fmtflags left = _S_left; 234s 1949: 234s 1949: 234s 1949: static const fmtflags oct = _S_oct; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const fmtflags right = _S_right; 234s 1949: 234s 1949: 234s 1949: static const fmtflags scientific = _S_scientific; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const fmtflags showbase = _S_showbase; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const fmtflags showpoint = _S_showpoint; 234s 1949: 234s 1949: 234s 1949: static const fmtflags showpos = _S_showpos; 234s 1949: 234s 1949: 234s 1949: static const fmtflags skipws = _S_skipws; 234s 1949: 234s 1949: 234s 1949: static const fmtflags unitbuf = _S_unitbuf; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const fmtflags uppercase = _S_uppercase; 234s 1949: 234s 1949: 234s 1949: static const fmtflags adjustfield = _S_adjustfield; 234s 1949: 234s 1949: 234s 1949: static const fmtflags basefield = _S_basefield; 234s 1949: 234s 1949: 234s 1949: static const fmtflags floatfield = _S_floatfield; 234s 1949: # 453 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: typedef _Ios_Iostate iostate; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const iostate badbit = _S_badbit; 234s 1949: 234s 1949: 234s 1949: static const iostate eofbit = _S_eofbit; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const iostate failbit = _S_failbit; 234s 1949: 234s 1949: 234s 1949: static const iostate goodbit = _S_goodbit; 234s 1949: # 484 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: typedef _Ios_Openmode openmode; 234s 1949: 234s 1949: 234s 1949: static const openmode app = _S_app; 234s 1949: 234s 1949: 234s 1949: static const openmode ate = _S_ate; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const openmode binary = _S_bin; 234s 1949: 234s 1949: 234s 1949: static const openmode in = _S_in; 234s 1949: 234s 1949: 234s 1949: static const openmode out = _S_out; 234s 1949: 234s 1949: 234s 1949: static const openmode trunc = _S_trunc; 234s 1949: 234s 1949: static const openmode __noreplace = _S_noreplace; 234s 1949: # 523 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: typedef _Ios_Seekdir seekdir; 234s 1949: 234s 1949: 234s 1949: static const seekdir beg = _S_beg; 234s 1949: 234s 1949: 234s 1949: static const seekdir cur = _S_cur; 234s 1949: 234s 1949: 234s 1949: static const seekdir end = _S_end; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef int io_state 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::iostate" "' instead"))); 234s 1949: typedef int open_mode 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::openmode" "' instead"))); 234s 1949: typedef int seek_dir 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::seekdir" "' instead"))); 234s 1949: 234s 1949: typedef std::streampos streampos 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::streampos" "' instead"))); 234s 1949: typedef std::streamoff streamoff 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::streamoff" "' instead"))); 234s 1949: # 556 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: enum event 234s 1949: { 234s 1949: erase_event, 234s 1949: imbue_event, 234s 1949: copyfmt_event 234s 1949: }; 234s 1949: # 573 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: typedef void (*event_callback) (event __e, ios_base& __b, int __i); 234s 1949: # 585 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: void 234s 1949: register_callback(event_callback __fn, int __index); 234s 1949: 234s 1949: protected: 234s 1949: streamsize _M_precision; 234s 1949: streamsize _M_width; 234s 1949: fmtflags _M_flags; 234s 1949: iostate _M_exception; 234s 1949: iostate _M_streambuf_state; 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct _Callback_list 234s 1949: { 234s 1949: 234s 1949: _Callback_list* _M_next; 234s 1949: ios_base::event_callback _M_fn; 234s 1949: int _M_index; 234s 1949: _Atomic_word _M_refcount; 234s 1949: 234s 1949: _Callback_list(ios_base::event_callback __fn, int __index, 234s 1949: _Callback_list* __cb) 234s 1949: : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } 234s 1949: 234s 1949: void 234s 1949: _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 234s 1949: 234s 1949: 234s 1949: int 234s 1949: _M_remove_reference() 234s 1949: { 234s 1949: 234s 1949: ; 234s 1949: int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); 234s 1949: if (__res == 0) 234s 1949: { 234s 1949: ; 234s 1949: } 234s 1949: return __res; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: _Callback_list* _M_callbacks; 234s 1949: 234s 1949: void 234s 1949: _M_call_callbacks(event __ev) throw(); 234s 1949: 234s 1949: void 234s 1949: _M_dispose_callbacks(void) throw(); 234s 1949: 234s 1949: 234s 1949: struct _Words 234s 1949: { 234s 1949: void* _M_pword; 234s 1949: long _M_iword; 234s 1949: _Words() : _M_pword(0), _M_iword(0) { } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: _Words _M_word_zero; 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum { _S_local_word_size = 8 }; 234s 1949: _Words _M_local_word[_S_local_word_size]; 234s 1949: 234s 1949: 234s 1949: int _M_word_size; 234s 1949: _Words* _M_word; 234s 1949: 234s 1949: _Words& 234s 1949: _M_grow_words(int __index, bool __iword); 234s 1949: 234s 1949: 234s 1949: locale _M_ios_locale; 234s 1949: 234s 1949: void 234s 1949: _M_init() throw(); 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: class Init 234s 1949: { 234s 1949: friend class ios_base; 234s 1949: public: 234s 1949: Init(); 234s 1949: ~Init(); 234s 1949: 234s 1949: 234s 1949: Init(const Init&) = default; 234s 1949: Init& operator=(const Init&) = default; 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: static _Atomic_word _S_refcount; 234s 1949: static bool _S_synced_with_stdio; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: fmtflags 234s 1949: flags() const 234s 1949: { return _M_flags; } 234s 1949: # 704 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: fmtflags 234s 1949: flags(fmtflags __fmtfl) 234s 1949: { 234s 1949: fmtflags __old = _M_flags; 234s 1949: _M_flags = __fmtfl; 234s 1949: return __old; 234s 1949: } 234s 1949: # 720 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: fmtflags 234s 1949: setf(fmtflags __fmtfl) 234s 1949: { 234s 1949: fmtflags __old = _M_flags; 234s 1949: _M_flags |= __fmtfl; 234s 1949: return __old; 234s 1949: } 234s 1949: # 737 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: fmtflags 234s 1949: setf(fmtflags __fmtfl, fmtflags __mask) 234s 1949: { 234s 1949: fmtflags __old = _M_flags; 234s 1949: _M_flags &= ~__mask; 234s 1949: _M_flags |= (__fmtfl & __mask); 234s 1949: return __old; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: unsetf(fmtflags __mask) 234s 1949: { _M_flags &= ~__mask; } 234s 1949: # 763 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: streamsize 234s 1949: precision() const 234s 1949: { return _M_precision; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: streamsize 234s 1949: precision(streamsize __prec) 234s 1949: { 234s 1949: streamsize __old = _M_precision; 234s 1949: _M_precision = __prec; 234s 1949: return __old; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: streamsize 234s 1949: width() const 234s 1949: { return _M_width; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: streamsize 234s 1949: width(streamsize __wide) 234s 1949: { 234s 1949: streamsize __old = _M_width; 234s 1949: _M_width = __wide; 234s 1949: return __old; 234s 1949: } 234s 1949: # 816 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: static bool 234s 1949: sync_with_stdio(bool __sync = true); 234s 1949: # 828 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: locale 234s 1949: imbue(const locale& __loc) throw(); 234s 1949: # 839 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: locale 234s 1949: getloc() const 234s 1949: { return _M_ios_locale; } 234s 1949: # 851 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: const locale& 234s 1949: _M_getloc() const 234s 1949: { return _M_ios_locale; } 234s 1949: # 870 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: static int 234s 1949: xalloc() throw(); 234s 1949: # 886 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: long& 234s 1949: iword(int __ix) 234s 1949: { 234s 1949: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size) 234s 1949: ? _M_word[__ix] : _M_grow_words(__ix, true); 234s 1949: return __word._M_iword; 234s 1949: } 234s 1949: # 907 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: void*& 234s 1949: pword(int __ix) 234s 1949: { 234s 1949: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size) 234s 1949: ? _M_word[__ix] : _M_grow_words(__ix, false); 234s 1949: return __word._M_pword; 234s 1949: } 234s 1949: # 924 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: virtual ~ios_base(); 234s 1949: 234s 1949: protected: 234s 1949: ios_base() throw (); 234s 1949: # 938 "/usr/include/c++/15/bits/ios_base.h" 3 4 234s 1949: public: 234s 1949: ios_base(const ios_base&) = delete; 234s 1949: 234s 1949: ios_base& 234s 1949: operator=(const ios_base&) = delete; 234s 1949: 234s 1949: protected: 234s 1949: void 234s 1949: _M_move(ios_base&) noexcept; 234s 1949: 234s 1949: void 234s 1949: _M_swap(ios_base& __rhs) noexcept; 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: boolalpha(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::boolalpha); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: noboolalpha(ios_base& __base) 234s 1949: { 234s 1949: __base.unsetf(ios_base::boolalpha); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: showbase(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::showbase); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: noshowbase(ios_base& __base) 234s 1949: { 234s 1949: __base.unsetf(ios_base::showbase); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: showpoint(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::showpoint); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: noshowpoint(ios_base& __base) 234s 1949: { 234s 1949: __base.unsetf(ios_base::showpoint); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: showpos(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::showpos); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: noshowpos(ios_base& __base) 234s 1949: { 234s 1949: __base.unsetf(ios_base::showpos); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: skipws(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::skipws); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: noskipws(ios_base& __base) 234s 1949: { 234s 1949: __base.unsetf(ios_base::skipws); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: uppercase(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::uppercase); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: nouppercase(ios_base& __base) 234s 1949: { 234s 1949: __base.unsetf(ios_base::uppercase); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: unitbuf(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::unitbuf); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: nounitbuf(ios_base& __base) 234s 1949: { 234s 1949: __base.unsetf(ios_base::unitbuf); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: internal(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::internal, ios_base::adjustfield); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: left(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::left, ios_base::adjustfield); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: right(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::right, ios_base::adjustfield); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: dec(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::dec, ios_base::basefield); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: hex(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::hex, ios_base::basefield); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: oct(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::oct, ios_base::basefield); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: fixed(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::fixed, ios_base::floatfield); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: scientific(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::scientific, ios_base::floatfield); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: hexfloat(ios_base& __base) 234s 1949: { 234s 1949: __base.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline ios_base& 234s 1949: defaultfloat(ios_base& __base) 234s 1949: { 234s 1949: __base.unsetf(ios_base::floatfield); 234s 1949: return __base; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 47 "/usr/include/c++/15/ios" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/streambuf" 1 3 4 234s 1949: # 49 "/usr/include/c++/15/streambuf" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: streamsize 234s 1949: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, 234s 1949: basic_streambuf<_CharT, _Traits>*, bool&); 234s 1949: # 125 "/usr/include/c++/15/streambuf" 3 4 234s 1949: template 234s 1949: class basic_streambuf 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: typedef typename traits_type::pos_type pos_type; 234s 1949: typedef typename traits_type::off_type off_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef basic_streambuf __streambuf_type; 234s 1949: 234s 1949: 234s 1949: friend class basic_ios; 234s 1949: friend class basic_istream; 234s 1949: friend class basic_ostream; 234s 1949: friend class istreambuf_iterator; 234s 1949: friend class ostreambuf_iterator; 234s 1949: 234s 1949: friend streamsize 234s 1949: __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); 234s 1949: 234s 1949: template 234s 1949: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 234s 1949: _CharT2*>::__type 234s 1949: __copy_move_a2(istreambuf_iterator<_CharT2>, 234s 1949: istreambuf_iterator<_CharT2>, _CharT2*); 234s 1949: 234s 1949: template 234s 1949: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 234s 1949: istreambuf_iterator<_CharT2> >::__type 234s 1949: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 234s 1949: const _CharT2&); 234s 1949: 234s 1949: template 234s 1949: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 234s 1949: void>::__type 234s 1949: advance(istreambuf_iterator<_CharT2>&, _Distance); 234s 1949: 234s 1949: friend void __istream_extract(istream&, char*, streamsize); 234s 1949: 234s 1949: template 234s 1949: friend basic_istream<_CharT2, _Traits2>& 234s 1949: operator>>(basic_istream<_CharT2, _Traits2>&, 234s 1949: basic_string<_CharT2, _Traits2, _Alloc>&); 234s 1949: 234s 1949: template 234s 1949: friend basic_istream<_CharT2, _Traits2>& 234s 1949: getline(basic_istream<_CharT2, _Traits2>&, 234s 1949: basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: char_type* _M_in_beg; 234s 1949: char_type* _M_in_cur; 234s 1949: char_type* _M_in_end; 234s 1949: char_type* _M_out_beg; 234s 1949: char_type* _M_out_cur; 234s 1949: char_type* _M_out_end; 234s 1949: 234s 1949: 234s 1949: locale _M_buf_locale; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: virtual 234s 1949: ~basic_streambuf() 234s 1949: { } 234s 1949: # 217 "/usr/include/c++/15/streambuf" 3 4 234s 1949: locale 234s 1949: pubimbue(const locale& __loc) 234s 1949: { 234s 1949: locale __tmp(this->getloc()); 234s 1949: this->imbue(__loc); 234s 1949: _M_buf_locale = __loc; 234s 1949: return __tmp; 234s 1949: } 234s 1949: # 234 "/usr/include/c++/15/streambuf" 3 4 234s 1949: locale 234s 1949: getloc() const 234s 1949: { return _M_buf_locale; } 234s 1949: # 247 "/usr/include/c++/15/streambuf" 3 4 234s 1949: basic_streambuf* 234s 1949: pubsetbuf(char_type* __s, streamsize __n) 234s 1949: { return this->setbuf(__s, __n); } 234s 1949: # 259 "/usr/include/c++/15/streambuf" 3 4 234s 1949: pos_type 234s 1949: pubseekoff(off_type __off, ios_base::seekdir __way, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out) 234s 1949: { return this->seekoff(__off, __way, __mode); } 234s 1949: # 271 "/usr/include/c++/15/streambuf" 3 4 234s 1949: pos_type 234s 1949: pubseekpos(pos_type __sp, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out) 234s 1949: { return this->seekpos(__sp, __mode); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: int 234s 1949: pubsync() { return this->sync(); } 234s 1949: # 292 "/usr/include/c++/15/streambuf" 3 4 234s 1949: streamsize 234s 1949: in_avail() 234s 1949: { 234s 1949: const streamsize __ret = this->egptr() - this->gptr(); 234s 1949: return __ret ? __ret : this->showmanyc(); 234s 1949: } 234s 1949: # 306 "/usr/include/c++/15/streambuf" 3 4 234s 1949: int_type 234s 1949: snextc() 234s 1949: { 234s 1949: int_type __ret = traits_type::eof(); 234s 1949: if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), 234s 1949: __ret), true)) 234s 1949: __ret = this->sgetc(); 234s 1949: return __ret; 234s 1949: } 234s 1949: # 324 "/usr/include/c++/15/streambuf" 3 4 234s 1949: int_type 234s 1949: sbumpc() 234s 1949: { 234s 1949: int_type __ret; 234s 1949: if (__builtin_expect(this->gptr() < this->egptr(), true)) 234s 1949: { 234s 1949: __ret = traits_type::to_int_type(*this->gptr()); 234s 1949: this->gbump(1); 234s 1949: } 234s 1949: else 234s 1949: __ret = this->uflow(); 234s 1949: return __ret; 234s 1949: } 234s 1949: # 346 "/usr/include/c++/15/streambuf" 3 4 234s 1949: int_type 234s 1949: sgetc() 234s 1949: { 234s 1949: int_type __ret; 234s 1949: if (__builtin_expect(this->gptr() < this->egptr(), true)) 234s 1949: __ret = traits_type::to_int_type(*this->gptr()); 234s 1949: else 234s 1949: __ret = this->underflow(); 234s 1949: return __ret; 234s 1949: } 234s 1949: # 365 "/usr/include/c++/15/streambuf" 3 4 234s 1949: streamsize 234s 1949: sgetn(char_type* __s, streamsize __n) 234s 1949: { return this->xsgetn(__s, __n); } 234s 1949: # 380 "/usr/include/c++/15/streambuf" 3 4 234s 1949: int_type 234s 1949: sputbackc(char_type __c) 234s 1949: { 234s 1949: int_type __ret; 234s 1949: const bool __testpos = this->eback() < this->gptr(); 234s 1949: if (__builtin_expect(!__testpos || 234s 1949: !traits_type::eq(__c, this->gptr()[-1]), false)) 234s 1949: __ret = this->pbackfail(traits_type::to_int_type(__c)); 234s 1949: else 234s 1949: { 234s 1949: this->gbump(-1); 234s 1949: __ret = traits_type::to_int_type(*this->gptr()); 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: # 405 "/usr/include/c++/15/streambuf" 3 4 234s 1949: int_type 234s 1949: sungetc() 234s 1949: { 234s 1949: int_type __ret; 234s 1949: if (__builtin_expect(this->eback() < this->gptr(), true)) 234s 1949: { 234s 1949: this->gbump(-1); 234s 1949: __ret = traits_type::to_int_type(*this->gptr()); 234s 1949: } 234s 1949: else 234s 1949: __ret = this->pbackfail(); 234s 1949: return __ret; 234s 1949: } 234s 1949: # 432 "/usr/include/c++/15/streambuf" 3 4 234s 1949: int_type 234s 1949: sputc(char_type __c) 234s 1949: { 234s 1949: int_type __ret; 234s 1949: if (__builtin_expect(this->pptr() < this->epptr(), true)) 234s 1949: { 234s 1949: *this->pptr() = __c; 234s 1949: this->pbump(1); 234s 1949: __ret = traits_type::to_int_type(__c); 234s 1949: } 234s 1949: else 234s 1949: __ret = this->overflow(traits_type::to_int_type(__c)); 234s 1949: return __ret; 234s 1949: } 234s 1949: # 458 "/usr/include/c++/15/streambuf" 3 4 234s 1949: streamsize 234s 1949: sputn(const char_type* __s, streamsize __n) 234s 1949: { return this->xsputn(__s, __n); } 234s 1949: 234s 1949: protected: 234s 1949: # 472 "/usr/include/c++/15/streambuf" 3 4 234s 1949: basic_streambuf() 234s 1949: : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), 234s 1949: _M_out_beg(0), _M_out_cur(0), _M_out_end(0), 234s 1949: _M_buf_locale(locale()) 234s 1949: { } 234s 1949: # 490 "/usr/include/c++/15/streambuf" 3 4 234s 1949: char_type* 234s 1949: eback() const { return _M_in_beg; } 234s 1949: 234s 1949: char_type* 234s 1949: gptr() const { return _M_in_cur; } 234s 1949: 234s 1949: char_type* 234s 1949: egptr() const { return _M_in_end; } 234s 1949: # 506 "/usr/include/c++/15/streambuf" 3 4 234s 1949: void 234s 1949: gbump(int __n) { _M_in_cur += __n; } 234s 1949: # 517 "/usr/include/c++/15/streambuf" 3 4 234s 1949: void 234s 1949: setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) 234s 1949: { 234s 1949: _M_in_beg = __gbeg; 234s 1949: _M_in_cur = __gnext; 234s 1949: _M_in_end = __gend; 234s 1949: } 234s 1949: # 537 "/usr/include/c++/15/streambuf" 3 4 234s 1949: char_type* 234s 1949: pbase() const { return _M_out_beg; } 234s 1949: 234s 1949: char_type* 234s 1949: pptr() const { return _M_out_cur; } 234s 1949: 234s 1949: char_type* 234s 1949: epptr() const { return _M_out_end; } 234s 1949: # 553 "/usr/include/c++/15/streambuf" 3 4 234s 1949: void 234s 1949: pbump(int __n) { _M_out_cur += __n; } 234s 1949: # 563 "/usr/include/c++/15/streambuf" 3 4 234s 1949: void 234s 1949: setp(char_type* __pbeg, char_type* __pend) 234s 1949: { 234s 1949: _M_out_beg = _M_out_cur = __pbeg; 234s 1949: _M_out_end = __pend; 234s 1949: } 234s 1949: # 584 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual void 234s 1949: imbue(const locale& __loc __attribute__ ((__unused__))) 234s 1949: { } 234s 1949: # 599 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual basic_streambuf* 234s 1949: setbuf(char_type*, streamsize) 234s 1949: { return this; } 234s 1949: # 610 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual pos_type 234s 1949: seekoff(off_type, ios_base::seekdir, 234s 1949: ios_base::openmode = ios_base::in | ios_base::out) 234s 1949: { return pos_type(off_type(-1)); } 234s 1949: # 622 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual pos_type 234s 1949: seekpos(pos_type, 234s 1949: ios_base::openmode = ios_base::in | ios_base::out) 234s 1949: { return pos_type(off_type(-1)); } 234s 1949: # 635 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual int 234s 1949: sync() { return 0; } 234s 1949: # 657 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual streamsize 234s 1949: showmanyc() { return 0; } 234s 1949: # 673 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual streamsize 234s 1949: xsgetn(char_type* __s, streamsize __n); 234s 1949: # 695 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual int_type 234s 1949: underflow() 234s 1949: { return traits_type::eof(); } 234s 1949: # 708 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual int_type 234s 1949: uflow() 234s 1949: { 234s 1949: int_type __ret = traits_type::eof(); 234s 1949: const bool __testeof = traits_type::eq_int_type(this->underflow(), 234s 1949: __ret); 234s 1949: if (!__testeof) 234s 1949: { 234s 1949: __ret = traits_type::to_int_type(*this->gptr()); 234s 1949: this->gbump(1); 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: # 732 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual int_type 234s 1949: pbackfail(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) 234s 1949: { return traits_type::eof(); } 234s 1949: # 750 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual streamsize 234s 1949: xsputn(const char_type* __s, streamsize __n); 234s 1949: # 776 "/usr/include/c++/15/streambuf" 3 4 234s 1949: virtual int_type 234s 1949: overflow(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) 234s 1949: { return traits_type::eof(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: # 791 "/usr/include/c++/15/streambuf" 3 4 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::basic_streambuf::sbumpc" "' instead"))) 234s 1949: void 234s 1949: stossc() 234s 1949: { 234s 1949: if (this->gptr() < this->egptr()) 234s 1949: this->gbump(1); 234s 1949: else 234s 1949: this->uflow(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: __safe_gbump(streamsize __n) { _M_in_cur += __n; } 234s 1949: 234s 1949: void 234s 1949: __safe_pbump(streamsize __n) { _M_out_cur += __n; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: basic_streambuf(const basic_streambuf&); 234s 1949: 234s 1949: basic_streambuf& 234s 1949: operator=(const basic_streambuf&); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: swap(basic_streambuf& __sb) 234s 1949: { 234s 1949: std::swap(_M_in_beg, __sb._M_in_beg); 234s 1949: std::swap(_M_in_cur, __sb._M_in_cur); 234s 1949: std::swap(_M_in_end, __sb._M_in_end); 234s 1949: std::swap(_M_out_beg, __sb._M_out_beg); 234s 1949: std::swap(_M_out_cur, __sb._M_out_cur); 234s 1949: std::swap(_M_out_end, __sb._M_out_end); 234s 1949: std::swap(_M_buf_locale, __sb._M_buf_locale); 234s 1949: } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: std::basic_streambuf<_CharT, _Traits>:: 234s 1949: basic_streambuf(const basic_streambuf&) = default; 234s 1949: 234s 1949: template 234s 1949: std::basic_streambuf<_CharT, _Traits>& 234s 1949: std::basic_streambuf<_CharT, _Traits>:: 234s 1949: operator=(const basic_streambuf&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: streamsize 234s 1949: __copy_streambufs_eof(basic_streambuf* __sbin, 234s 1949: basic_streambuf* __sbout, bool& __ineof); 234s 1949: 234s 1949: template<> 234s 1949: streamsize 234s 1949: __copy_streambufs_eof(basic_streambuf* __sbin, 234s 1949: basic_streambuf* __sbout, bool& __ineof); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/streambuf.tcc" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/bits/streambuf.tcc" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: streamsize 234s 1949: basic_streambuf<_CharT, _Traits>:: 234s 1949: xsgetn(char_type* __s, streamsize __n) 234s 1949: { 234s 1949: streamsize __ret = 0; 234s 1949: while (__ret < __n) 234s 1949: { 234s 1949: const streamsize __buf_len = this->egptr() - this->gptr(); 234s 1949: if (__buf_len) 234s 1949: { 234s 1949: const streamsize __remaining = __n - __ret; 234s 1949: const streamsize __len = std::min(__buf_len, __remaining); 234s 1949: traits_type::copy(__s, this->gptr(), __len); 234s 1949: __ret += __len; 234s 1949: __s += __len; 234s 1949: this->__safe_gbump(__len); 234s 1949: } 234s 1949: 234s 1949: if (__ret < __n) 234s 1949: { 234s 1949: const int_type __c = this->uflow(); 234s 1949: if (!traits_type::eq_int_type(__c, traits_type::eof())) 234s 1949: { 234s 1949: traits_type::assign(*__s++, traits_type::to_char_type(__c)); 234s 1949: ++__ret; 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: streamsize 234s 1949: basic_streambuf<_CharT, _Traits>:: 234s 1949: xsputn(const char_type* __s, streamsize __n) 234s 1949: { 234s 1949: streamsize __ret = 0; 234s 1949: while (__ret < __n) 234s 1949: { 234s 1949: const streamsize __buf_len = this->epptr() - this->pptr(); 234s 1949: if (__buf_len) 234s 1949: { 234s 1949: const streamsize __remaining = __n - __ret; 234s 1949: const streamsize __len = std::min(__buf_len, __remaining); 234s 1949: traits_type::copy(this->pptr(), __s, __len); 234s 1949: __ret += __len; 234s 1949: __s += __len; 234s 1949: this->__safe_pbump(__len); 234s 1949: } 234s 1949: 234s 1949: if (__ret < __n) 234s 1949: { 234s 1949: int_type __c = this->overflow(traits_type::to_int_type(*__s)); 234s 1949: if (!traits_type::eq_int_type(__c, traits_type::eof())) 234s 1949: { 234s 1949: ++__ret; 234s 1949: ++__s; 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: streamsize 234s 1949: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, 234s 1949: basic_streambuf<_CharT, _Traits>* __sbout, 234s 1949: bool& __ineof) 234s 1949: { 234s 1949: streamsize __ret = 0; 234s 1949: __ineof = true; 234s 1949: typename _Traits::int_type __c = __sbin->sgetc(); 234s 1949: while (!_Traits::eq_int_type(__c, _Traits::eof())) 234s 1949: { 234s 1949: __c = __sbout->sputc(_Traits::to_char_type(__c)); 234s 1949: if (_Traits::eq_int_type(__c, _Traits::eof())) 234s 1949: { 234s 1949: __ineof = false; 234s 1949: break; 234s 1949: } 234s 1949: ++__ret; 234s 1949: __c = __sbin->snextc(); 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline streamsize 234s 1949: __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, 234s 1949: basic_streambuf<_CharT, _Traits>* __sbout) 234s 1949: { 234s 1949: bool __ineof; 234s 1949: return __copy_streambufs_eof(__sbin, __sbout, __ineof); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template class basic_streambuf; 234s 1949: 234s 1949: extern template 234s 1949: streamsize 234s 1949: __copy_streambufs(basic_streambuf*, 234s 1949: basic_streambuf*); 234s 1949: 234s 1949: 234s 1949: extern template class basic_streambuf; 234s 1949: 234s 1949: extern template 234s 1949: streamsize 234s 1949: __copy_streambufs(basic_streambuf*, 234s 1949: basic_streambuf*); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 863 "/usr/include/c++/15/streambuf" 2 3 4 234s 1949: # 48 "/usr/include/c++/15/ios" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/basic_ios.h" 1 3 4 234s 1949: # 39 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/locale_facets.h" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/cwctype" 1 3 4 234s 1949: # 55 "/usr/include/c++/15/cwctype" 3 4 234s 1949: # 1 "/usr/include/wctype.h" 1 3 4 234s 1949: # 38 "/usr/include/wctype.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 1 3 4 234s 1949: # 38 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 234s 1949: typedef unsigned long int wctype_t; 234s 1949: # 56 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 234s 1949: enum 234s 1949: { 234s 1949: __ISwupper = 0, 234s 1949: __ISwlower = 1, 234s 1949: __ISwalpha = 2, 234s 1949: __ISwdigit = 3, 234s 1949: __ISwxdigit = 4, 234s 1949: __ISwspace = 5, 234s 1949: __ISwprint = 6, 234s 1949: __ISwgraph = 7, 234s 1949: __ISwblank = 8, 234s 1949: __ISwcntrl = 9, 234s 1949: __ISwpunct = 10, 234s 1949: __ISwalnum = 11, 234s 1949: 234s 1949: _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), 234s 1949: _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), 234s 1949: _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), 234s 1949: _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), 234s 1949: _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), 234s 1949: _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), 234s 1949: _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), 234s 1949: _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), 234s 1949: _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), 234s 1949: _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), 234s 1949: _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), 234s 1949: _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern "C" { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswalnum (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswalpha (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int iswcntrl (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswdigit (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswgraph (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswlower (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int iswprint (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswpunct (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswspace (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswupper (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswxdigit (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswblank (wint_t __wc) noexcept (true); 234s 1949: # 155 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 234s 1949: extern wctype_t wctype (const char *__property) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswctype (wint_t __wc, wctype_t __desc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wint_t towlower (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern wint_t towupper (wint_t __wc) noexcept (true); 234s 1949: 234s 1949: } 234s 1949: # 39 "/usr/include/wctype.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern "C" { 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef const __int32_t *wctrans_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wctrans_t wctrans (const char *__property) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern wint_t towctrans (wint_t __wc, wctrans_t __desc) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswalnum_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswalpha_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int iswcntrl_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswdigit_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswgraph_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswlower_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern int iswprint_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswpunct_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswspace_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswupper_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswxdigit_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswblank_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wctype_t wctype_l (const char *__property, locale_t __locale) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern int iswctype_l (wint_t __wc, wctype_t __desc, locale_t __locale) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wint_t towlower_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern wint_t towupper_l (wint_t __wc, locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern wctrans_t wctrans_l (const char *__property, locale_t __locale) 234s 1949: noexcept (true); 234s 1949: 234s 1949: 234s 1949: extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, 234s 1949: locale_t __locale) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 56 "/usr/include/c++/15/cwctype" 2 3 4 234s 1949: # 82 "/usr/include/c++/15/cwctype" 3 4 234s 1949: namespace std 234s 1949: { 234s 1949: using ::wctrans_t; 234s 1949: using ::wctype_t; 234s 1949: using ::wint_t; 234s 1949: 234s 1949: using ::iswalnum; 234s 1949: using ::iswalpha; 234s 1949: 234s 1949: using ::iswblank; 234s 1949: 234s 1949: using ::iswcntrl; 234s 1949: using ::iswctype; 234s 1949: using ::iswdigit; 234s 1949: using ::iswgraph; 234s 1949: using ::iswlower; 234s 1949: using ::iswprint; 234s 1949: using ::iswpunct; 234s 1949: using ::iswspace; 234s 1949: using ::iswupper; 234s 1949: using ::iswxdigit; 234s 1949: using ::towctrans; 234s 1949: using ::towlower; 234s 1949: using ::towupper; 234s 1949: using ::wctrans; 234s 1949: using ::wctype; 234s 1949: } 234s 1949: # 42 "/usr/include/c++/15/bits/locale_facets.h" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/ctype_base.h" 1 3 4 234s 1949: # 36 "/usr/include/arm-linux-gnueabihf/c++/15/bits/ctype_base.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct ctype_base 234s 1949: { 234s 1949: 234s 1949: typedef const int* __to_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef unsigned short mask; 234s 1949: static const mask upper = _ISupper; 234s 1949: static const mask lower = _ISlower; 234s 1949: static const mask alpha = _ISalpha; 234s 1949: static const mask digit = _ISdigit; 234s 1949: static const mask xdigit = _ISxdigit; 234s 1949: static const mask space = _ISspace; 234s 1949: static const mask print = _ISprint; 234s 1949: static const mask graph = _ISalpha | _ISdigit | _ISpunct; 234s 1949: static const mask cntrl = _IScntrl; 234s 1949: static const mask punct = _ISpunct; 234s 1949: static const mask alnum = _ISalpha | _ISdigit; 234s 1949: 234s 1949: static const mask blank = _ISblank; 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 44 "/usr/include/c++/15/bits/locale_facets.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/streambuf_iterator.h" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/bits/streambuf_iterator.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 51 "/usr/include/c++/15/bits/streambuf_iterator.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class istreambuf_iterator 234s 1949: : public iterator 234s 1949: { 234s 1949: public: 234s 1949: # 72 "/usr/include/c++/15/bits/streambuf_iterator.h" 3 4 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: typedef typename _Traits::int_type int_type; 234s 1949: typedef basic_streambuf<_CharT, _Traits> streambuf_type; 234s 1949: typedef basic_istream<_CharT, _Traits> istream_type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 234s 1949: ostreambuf_iterator<_CharT2> >::__type 234s 1949: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 234s 1949: ostreambuf_iterator<_CharT2>); 234s 1949: 234s 1949: template 234s 1949: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 234s 1949: _CharT2*>::__type 234s 1949: __copy_move_a2(istreambuf_iterator<_CharT2>, 234s 1949: istreambuf_iterator<_CharT2>, _CharT2*); 234s 1949: 234s 1949: template 234s 1949: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 234s 1949: _CharT2*>::__type 234s 1949: __copy_n_a(istreambuf_iterator<_CharT2>, _Size, _CharT2*, bool); 234s 1949: 234s 1949: template 234s 1949: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 234s 1949: istreambuf_iterator<_CharT2> >::__type 234s 1949: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 234s 1949: const _CharT2&); 234s 1949: 234s 1949: template 234s 1949: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 234s 1949: void>::__type 234s 1949: advance(istreambuf_iterator<_CharT2>&, _Distance); 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: mutable streambuf_type* _M_sbuf; 234s 1949: int_type _M_c; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: constexpr istreambuf_iterator() noexcept 234s 1949: : _M_sbuf(0), _M_c(traits_type::eof()) { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: istreambuf_iterator(const istreambuf_iterator&) noexcept = default; 234s 1949: 234s 1949: ~istreambuf_iterator() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: istreambuf_iterator(istream_type& __s) noexcept 234s 1949: : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } 234s 1949: 234s 1949: 234s 1949: istreambuf_iterator(streambuf_type* __s) noexcept 234s 1949: : _M_sbuf(__s), _M_c(traits_type::eof()) { } 234s 1949: 234s 1949: 234s 1949: istreambuf_iterator& 234s 1949: operator=(const istreambuf_iterator&) noexcept = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: char_type 234s 1949: operator*() const 234s 1949: { 234s 1949: int_type __c = _M_get(); 234s 1949: # 163 "/usr/include/c++/15/bits/streambuf_iterator.h" 3 4 234s 1949: return traits_type::to_char_type(__c); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: istreambuf_iterator& 234s 1949: operator++() 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: _M_sbuf->sbumpc(); 234s 1949: _M_c = traits_type::eof(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: istreambuf_iterator 234s 1949: operator++(int) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: istreambuf_iterator __old = *this; 234s 1949: __old._M_c = _M_sbuf->sbumpc(); 234s 1949: _M_c = traits_type::eof(); 234s 1949: return __old; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: equal(const istreambuf_iterator& __b) const 234s 1949: { return _M_at_eof() == __b._M_at_eof(); } 234s 1949: 234s 1949: private: 234s 1949: int_type 234s 1949: _M_get() const 234s 1949: { 234s 1949: int_type __ret = _M_c; 234s 1949: if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc())) 234s 1949: _M_sbuf = 0; 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: _M_at_eof() const 234s 1949: { return _S_is_eof(_M_get()); } 234s 1949: 234s 1949: static bool 234s 1949: _S_is_eof(int_type __c) 234s 1949: { 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: return traits_type::eq_int_type(__c, __eof); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const istreambuf_iterator<_CharT, _Traits>& __a, 234s 1949: const istreambuf_iterator<_CharT, _Traits>& __b) 234s 1949: { return __a.equal(__b); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, 234s 1949: const istreambuf_iterator<_CharT, _Traits>& __b) 234s 1949: { return !__a.equal(__b); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class ostreambuf_iterator 234s 1949: : public iterator 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: typedef basic_streambuf<_CharT, _Traits> streambuf_type; 234s 1949: typedef basic_ostream<_CharT, _Traits> ostream_type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 234s 1949: ostreambuf_iterator<_CharT2> >::__type 234s 1949: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 234s 1949: ostreambuf_iterator<_CharT2>); 234s 1949: 234s 1949: private: 234s 1949: streambuf_type* _M_sbuf; 234s 1949: bool _M_failed; 234s 1949: 234s 1949: public: 234s 1949: # 286 "/usr/include/c++/15/bits/streambuf_iterator.h" 3 4 234s 1949: ostreambuf_iterator(ostream_type& __s) noexcept 234s 1949: : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } 234s 1949: 234s 1949: 234s 1949: ostreambuf_iterator(streambuf_type* __s) noexcept 234s 1949: : _M_sbuf(__s), _M_failed(!_M_sbuf) { } 234s 1949: 234s 1949: 234s 1949: ostreambuf_iterator& 234s 1949: operator=(_CharT __c) 234s 1949: { 234s 1949: if (!_M_failed && 234s 1949: _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) 234s 1949: _M_failed = true; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: ostreambuf_iterator& 234s 1949: operator*() 234s 1949: { return *this; } 234s 1949: 234s 1949: 234s 1949: ostreambuf_iterator& 234s 1949: operator++(int) 234s 1949: { return *this; } 234s 1949: 234s 1949: 234s 1949: ostreambuf_iterator& 234s 1949: operator++() 234s 1949: { return *this; } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: failed() const noexcept 234s 1949: { return _M_failed; } 234s 1949: 234s 1949: ostreambuf_iterator& 234s 1949: _M_put(const _CharT* __ws, streamsize __len) 234s 1949: { 234s 1949: if (__builtin_expect(!_M_failed, true) 234s 1949: && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, 234s 1949: false)) 234s 1949: _M_failed = true; 234s 1949: return *this; 234s 1949: } 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 234s 1949: ostreambuf_iterator<_CharT> >::__type 234s 1949: copy(istreambuf_iterator<_CharT> __first, 234s 1949: istreambuf_iterator<_CharT> __last, 234s 1949: ostreambuf_iterator<_CharT> __result) 234s 1949: { 234s 1949: if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) 234s 1949: { 234s 1949: bool __ineof; 234s 1949: __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); 234s 1949: if (!__ineof) 234s 1949: __result._M_failed = true; 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 234s 1949: ostreambuf_iterator<_CharT> >::__type 234s 1949: __copy_move_a2(_CharT* __first, _CharT* __last, 234s 1949: ostreambuf_iterator<_CharT> __result) 234s 1949: { 234s 1949: const streamsize __num = __last - __first; 234s 1949: if (__num > 0) 234s 1949: __result._M_put(__first, __num); 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 234s 1949: ostreambuf_iterator<_CharT> >::__type 234s 1949: __copy_move_a2(const _CharT* __first, const _CharT* __last, 234s 1949: ostreambuf_iterator<_CharT> __result) 234s 1949: { 234s 1949: const streamsize __num = __last - __first; 234s 1949: if (__num > 0) 234s 1949: __result._M_put(__first, __num); 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 234s 1949: _CharT*>::__type 234s 1949: __copy_move_a2(istreambuf_iterator<_CharT> __first, 234s 1949: istreambuf_iterator<_CharT> __last, _CharT* __result) 234s 1949: { 234s 1949: typedef istreambuf_iterator<_CharT> __is_iterator_type; 234s 1949: typedef typename __is_iterator_type::traits_type traits_type; 234s 1949: typedef typename __is_iterator_type::streambuf_type streambuf_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: 234s 1949: if (__first._M_sbuf && !__last._M_sbuf) 234s 1949: { 234s 1949: streambuf_type* __sb = __first._M_sbuf; 234s 1949: int_type __c = __sb->sgetc(); 234s 1949: while (!traits_type::eq_int_type(__c, traits_type::eof())) 234s 1949: { 234s 1949: const streamsize __n = __sb->egptr() - __sb->gptr(); 234s 1949: if (__n > 1) 234s 1949: { 234s 1949: traits_type::copy(__result, __sb->gptr(), __n); 234s 1949: __sb->__safe_gbump(__n); 234s 1949: __result += __n; 234s 1949: __c = __sb->underflow(); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: *__result++ = traits_type::to_char_type(__c); 234s 1949: __c = __sb->snextc(); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 234s 1949: _CharT*>::__type 234s 1949: __copy_n_a(istreambuf_iterator<_CharT> __it, _Size __n, _CharT* __result, 234s 1949: bool __strict __attribute__((__unused__))) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return __result; 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: _CharT* __beg = __result; 234s 1949: __result += __it._M_sbuf->sgetn(__beg, __n); 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 234s 1949: istreambuf_iterator<_CharT> >::__type 234s 1949: find(istreambuf_iterator<_CharT> __first, 234s 1949: istreambuf_iterator<_CharT> __last, const _CharT& __val) 234s 1949: { 234s 1949: typedef istreambuf_iterator<_CharT> __is_iterator_type; 234s 1949: typedef typename __is_iterator_type::traits_type traits_type; 234s 1949: typedef typename __is_iterator_type::streambuf_type streambuf_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: 234s 1949: if (__first._M_sbuf && !__last._M_sbuf) 234s 1949: { 234s 1949: const int_type __ival = traits_type::to_int_type(__val); 234s 1949: streambuf_type* __sb = __first._M_sbuf; 234s 1949: int_type __c = __sb->sgetc(); 234s 1949: while (!traits_type::eq_int_type(__c, __eof) 234s 1949: && !traits_type::eq_int_type(__c, __ival)) 234s 1949: { 234s 1949: streamsize __n = __sb->egptr() - __sb->gptr(); 234s 1949: if (__n > 1) 234s 1949: { 234s 1949: const _CharT* __p = traits_type::find(__sb->gptr(), 234s 1949: __n, __val); 234s 1949: if (__p) 234s 1949: __n = __p - __sb->gptr(); 234s 1949: __sb->__safe_gbump(__n); 234s 1949: __c = __sb->sgetc(); 234s 1949: } 234s 1949: else 234s 1949: __c = __sb->snextc(); 234s 1949: } 234s 1949: 234s 1949: __first._M_c = __eof; 234s 1949: } 234s 1949: 234s 1949: return __first; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 234s 1949: void>::__type 234s 1949: advance(istreambuf_iterator<_CharT>& __i, _Distance __n) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return; 234s 1949: 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__n > 0)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: typedef istreambuf_iterator<_CharT> __is_iterator_type; 234s 1949: typedef typename __is_iterator_type::traits_type traits_type; 234s 1949: typedef typename __is_iterator_type::streambuf_type streambuf_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: 234s 1949: streambuf_type* __sb = __i._M_sbuf; 234s 1949: while (__n > 0) 234s 1949: { 234s 1949: streamsize __size = __sb->egptr() - __sb->gptr(); 234s 1949: if (__size > __n) 234s 1949: { 234s 1949: __sb->__safe_gbump(__n); 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: __sb->__safe_gbump(__size); 234s 1949: __n -= __size; 234s 1949: if (traits_type::eq_int_type(__sb->underflow(), __eof)) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: __i._M_c = __eof; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 51 "/usr/include/c++/15/bits/locale_facets.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 76 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: __convert_to_v(const char*, _Tp&, ios_base::iostate&, 234s 1949: const __c_locale&) throw(); 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: __convert_to_v(const char*, float&, ios_base::iostate&, 234s 1949: const __c_locale&) throw(); 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: __convert_to_v(const char*, double&, ios_base::iostate&, 234s 1949: const __c_locale&) throw(); 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: __convert_to_v(const char*, long double&, ios_base::iostate&, 234s 1949: const __c_locale&) throw(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __pad 234s 1949: { 234s 1949: static void 234s 1949: _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, 234s 1949: const _CharT* __olds, streamsize __newlen, streamsize __oldlen); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _CharT* 234s 1949: __add_grouping(_CharT* __s, _CharT __sep, 234s 1949: const char* __gbeg, size_t __gsize, 234s 1949: const _CharT* __first, const _CharT* __last); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline 234s 1949: ostreambuf_iterator<_CharT> 234s 1949: __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) 234s 1949: { 234s 1949: __s._M_put(__ws, __len); 234s 1949: return __s; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline 234s 1949: _OutIter 234s 1949: __write(_OutIter __s, const _CharT* __ws, int __len) 234s 1949: { 234s 1949: for (int __j = 0; __j < __len; __j++, ++__s) 234s 1949: *__s = __ws[__j]; 234s 1949: return __s; 234s 1949: } 234s 1949: # 154 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: template 234s 1949: class __ctype_abstract_base : public locale::facet, public ctype_base 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: # 173 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: bool 234s 1949: is(mask __m, char_type __c) const 234s 1949: { return this->do_is(__m, __c); } 234s 1949: # 190 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char_type* 234s 1949: is(const char_type *__lo, const char_type *__hi, mask *__vec) const 234s 1949: { return this->do_is(__lo, __hi, __vec); } 234s 1949: # 206 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char_type* 234s 1949: scan_is(mask __m, const char_type* __lo, const char_type* __hi) const 234s 1949: { return this->do_scan_is(__m, __lo, __hi); } 234s 1949: # 222 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char_type* 234s 1949: scan_not(mask __m, const char_type* __lo, const char_type* __hi) const 234s 1949: { return this->do_scan_not(__m, __lo, __hi); } 234s 1949: # 236 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: char_type 234s 1949: toupper(char_type __c) const 234s 1949: { return this->do_toupper(__c); } 234s 1949: # 251 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char_type* 234s 1949: toupper(char_type *__lo, const char_type* __hi) const 234s 1949: { return this->do_toupper(__lo, __hi); } 234s 1949: # 265 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: char_type 234s 1949: tolower(char_type __c) const 234s 1949: { return this->do_tolower(__c); } 234s 1949: # 280 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char_type* 234s 1949: tolower(char_type* __lo, const char_type* __hi) const 234s 1949: { return this->do_tolower(__lo, __hi); } 234s 1949: # 297 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: char_type 234s 1949: widen(char __c) const 234s 1949: { return this->do_widen(__c); } 234s 1949: # 316 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char* 234s 1949: widen(const char* __lo, const char* __hi, char_type* __to) const 234s 1949: { return this->do_widen(__lo, __hi, __to); } 234s 1949: # 335 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: char 234s 1949: narrow(char_type __c, char __dfault) const 234s 1949: { return this->do_narrow(__c, __dfault); } 234s 1949: # 357 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char_type* 234s 1949: narrow(const char_type* __lo, const char_type* __hi, 234s 1949: char __dfault, char* __to) const 234s 1949: { return this->do_narrow(__lo, __hi, __dfault, __to); } 234s 1949: 234s 1949: protected: 234s 1949: explicit 234s 1949: __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } 234s 1949: 234s 1949: virtual 234s 1949: ~__ctype_abstract_base() { } 234s 1949: # 382 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual bool 234s 1949: do_is(mask __m, char_type __c) const = 0; 234s 1949: # 401 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_is(const char_type* __lo, const char_type* __hi, 234s 1949: mask* __vec) const = 0; 234s 1949: # 420 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_scan_is(mask __m, const char_type* __lo, 234s 1949: const char_type* __hi) const = 0; 234s 1949: # 439 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_scan_not(mask __m, const char_type* __lo, 234s 1949: const char_type* __hi) const = 0; 234s 1949: # 457 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_toupper(char_type __c) const = 0; 234s 1949: # 474 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_toupper(char_type* __lo, const char_type* __hi) const = 0; 234s 1949: # 490 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_tolower(char_type __c) const = 0; 234s 1949: # 507 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_tolower(char_type* __lo, const char_type* __hi) const = 0; 234s 1949: # 526 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_widen(char __c) const = 0; 234s 1949: # 547 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char* 234s 1949: do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; 234s 1949: # 568 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char 234s 1949: do_narrow(char_type __c, char __dfault) const = 0; 234s 1949: # 593 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_narrow(const char_type* __lo, const char_type* __hi, 234s 1949: char __dfault, char* __to) const = 0; 234s 1949: }; 234s 1949: # 616 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: template 234s 1949: class ctype : public __ctype_abstract_base<_CharT> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef typename __ctype_abstract_base<_CharT>::mask mask; 234s 1949: 234s 1949: 234s 1949: static locale::id id; 234s 1949: 234s 1949: explicit 234s 1949: ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~ctype(); 234s 1949: 234s 1949: virtual bool 234s 1949: do_is(mask __m, char_type __c) const; 234s 1949: 234s 1949: virtual const char_type* 234s 1949: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; 234s 1949: 234s 1949: virtual const char_type* 234s 1949: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; 234s 1949: 234s 1949: virtual const char_type* 234s 1949: do_scan_not(mask __m, const char_type* __lo, 234s 1949: const char_type* __hi) const; 234s 1949: 234s 1949: virtual char_type 234s 1949: do_toupper(char_type __c) const; 234s 1949: 234s 1949: virtual const char_type* 234s 1949: do_toupper(char_type* __lo, const char_type* __hi) const; 234s 1949: 234s 1949: virtual char_type 234s 1949: do_tolower(char_type __c) const; 234s 1949: 234s 1949: virtual const char_type* 234s 1949: do_tolower(char_type* __lo, const char_type* __hi) const; 234s 1949: 234s 1949: virtual char_type 234s 1949: do_widen(char __c) const; 234s 1949: 234s 1949: virtual const char* 234s 1949: do_widen(const char* __lo, const char* __hi, char_type* __dest) const; 234s 1949: 234s 1949: virtual char 234s 1949: do_narrow(char_type, char __dfault) const; 234s 1949: 234s 1949: virtual const char_type* 234s 1949: do_narrow(const char_type* __lo, const char_type* __hi, 234s 1949: char __dfault, char* __to) const; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id ctype<_CharT>::id; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class ctype >; 234s 1949: # 690 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: template<> 234s 1949: class ctype : public locale::facet, public ctype_base 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: typedef char char_type; 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: __c_locale _M_c_locale_ctype; 234s 1949: bool _M_del; 234s 1949: __to_type _M_toupper; 234s 1949: __to_type _M_tolower; 234s 1949: const mask* _M_table; 234s 1949: mutable char _M_widen_ok; 234s 1949: mutable char _M_widen[1 + static_cast(-1)]; 234s 1949: mutable char _M_narrow[1 + static_cast(-1)]; 234s 1949: mutable char _M_narrow_ok; 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: static locale::id id; 234s 1949: 234s 1949: static const size_t table_size = 1 + static_cast(-1); 234s 1949: # 727 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: explicit 234s 1949: ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); 234s 1949: # 740 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: explicit 234s 1949: ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, 234s 1949: size_t __refs = 0); 234s 1949: # 753 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: inline bool 234s 1949: is(mask __m, char __c) const; 234s 1949: # 768 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: inline const char* 234s 1949: is(const char* __lo, const char* __hi, mask* __vec) const; 234s 1949: # 782 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: inline const char* 234s 1949: scan_is(mask __m, const char* __lo, const char* __hi) const; 234s 1949: # 796 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: inline const char* 234s 1949: scan_not(mask __m, const char* __lo, const char* __hi) const; 234s 1949: # 811 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: char_type 234s 1949: toupper(char_type __c) const 234s 1949: { return this->do_toupper(__c); } 234s 1949: # 828 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char_type* 234s 1949: toupper(char_type *__lo, const char_type* __hi) const 234s 1949: { return this->do_toupper(__lo, __hi); } 234s 1949: # 844 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: char_type 234s 1949: tolower(char_type __c) const 234s 1949: { return this->do_tolower(__c); } 234s 1949: # 861 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char_type* 234s 1949: tolower(char_type* __lo, const char_type* __hi) const 234s 1949: { return this->do_tolower(__lo, __hi); } 234s 1949: # 881 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: char_type 234s 1949: widen(char __c) const 234s 1949: { 234s 1949: if (_M_widen_ok) 234s 1949: return _M_widen[static_cast(__c)]; 234s 1949: this->_M_widen_init(); 234s 1949: return this->do_widen(__c); 234s 1949: } 234s 1949: # 908 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char* 234s 1949: widen(const char* __lo, const char* __hi, char_type* __to) const 234s 1949: { 234s 1949: if (_M_widen_ok == 1) 234s 1949: { 234s 1949: if (__builtin_expect(__hi != __lo, true)) 234s 1949: __builtin_memcpy(__to, __lo, __hi - __lo); 234s 1949: return __hi; 234s 1949: } 234s 1949: if (!_M_widen_ok) 234s 1949: _M_widen_init(); 234s 1949: return this->do_widen(__lo, __hi, __to); 234s 1949: } 234s 1949: # 940 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: char 234s 1949: narrow(char_type __c, char __dfault) const 234s 1949: { 234s 1949: if (_M_narrow[static_cast(__c)]) 234s 1949: return _M_narrow[static_cast(__c)]; 234s 1949: const char __t = do_narrow(__c, __dfault); 234s 1949: if (__t != __dfault) 234s 1949: _M_narrow[static_cast(__c)] = __t; 234s 1949: return __t; 234s 1949: } 234s 1949: # 973 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: const char_type* 234s 1949: narrow(const char_type* __lo, const char_type* __hi, 234s 1949: char __dfault, char* __to) const 234s 1949: { 234s 1949: if (__builtin_expect(_M_narrow_ok == 1, true)) 234s 1949: { 234s 1949: if (__builtin_expect(__hi != __lo, true)) 234s 1949: __builtin_memcpy(__to, __lo, __hi - __lo); 234s 1949: return __hi; 234s 1949: } 234s 1949: if (!_M_narrow_ok) 234s 1949: _M_narrow_init(); 234s 1949: return this->do_narrow(__lo, __hi, __dfault, __to); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const mask* 234s 1949: table() const throw() 234s 1949: { return _M_table; } 234s 1949: 234s 1949: 234s 1949: static const mask* 234s 1949: classic_table() throw(); 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual 234s 1949: ~ctype(); 234s 1949: # 1023 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_toupper(char_type __c) const; 234s 1949: # 1040 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_toupper(char_type* __lo, const char_type* __hi) const; 234s 1949: # 1056 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_tolower(char_type __c) const; 234s 1949: # 1073 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_tolower(char_type* __lo, const char_type* __hi) const; 234s 1949: # 1093 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_widen(char __c) const 234s 1949: { return __c; } 234s 1949: # 1116 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char* 234s 1949: do_widen(const char* __lo, const char* __hi, char_type* __to) const 234s 1949: { 234s 1949: if (__builtin_expect(__hi != __lo, true)) 234s 1949: __builtin_memcpy(__to, __lo, __hi - __lo); 234s 1949: return __hi; 234s 1949: } 234s 1949: # 1143 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char 234s 1949: do_narrow(char_type __c, char __dfault __attribute__((__unused__))) const 234s 1949: { return __c; } 234s 1949: # 1169 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_narrow(const char_type* __lo, const char_type* __hi, 234s 1949: char __dfault __attribute__((__unused__)), char* __to) const 234s 1949: { 234s 1949: if (__builtin_expect(__hi != __lo, true)) 234s 1949: __builtin_memcpy(__to, __lo, __hi - __lo); 234s 1949: return __hi; 234s 1949: } 234s 1949: 234s 1949: private: 234s 1949: void _M_narrow_init() const; 234s 1949: void _M_widen_init() const; 234s 1949: }; 234s 1949: # 1195 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: template<> 234s 1949: class ctype : public __ctype_abstract_base 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: typedef wchar_t char_type; 234s 1949: typedef wctype_t __wmask_type; 234s 1949: 234s 1949: protected: 234s 1949: __c_locale _M_c_locale_ctype; 234s 1949: 234s 1949: 234s 1949: bool _M_narrow_ok; 234s 1949: char _M_narrow[128]; 234s 1949: wint_t _M_widen[1 + static_cast(-1)]; 234s 1949: 234s 1949: 234s 1949: mask _M_bit[16]; 234s 1949: __wmask_type _M_wmask[16]; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: static locale::id id; 234s 1949: # 1228 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: explicit 234s 1949: ctype(size_t __refs = 0); 234s 1949: # 1239 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: explicit 234s 1949: ctype(__c_locale __cloc, size_t __refs = 0); 234s 1949: 234s 1949: protected: 234s 1949: __wmask_type 234s 1949: _M_convert_to_wmask(const mask __m) const throw(); 234s 1949: 234s 1949: 234s 1949: virtual 234s 1949: ~ctype(); 234s 1949: # 1263 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual bool 234s 1949: do_is(mask __m, char_type __c) const; 234s 1949: # 1282 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; 234s 1949: # 1300 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; 234s 1949: # 1318 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_scan_not(mask __m, const char_type* __lo, 234s 1949: const char_type* __hi) const; 234s 1949: # 1335 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_toupper(char_type __c) const; 234s 1949: # 1352 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_toupper(char_type* __lo, const char_type* __hi) const; 234s 1949: # 1368 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_tolower(char_type __c) const; 234s 1949: # 1385 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_tolower(char_type* __lo, const char_type* __hi) const; 234s 1949: # 1405 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_widen(char __c) const; 234s 1949: # 1427 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char* 234s 1949: do_widen(const char* __lo, const char* __hi, char_type* __to) const; 234s 1949: # 1450 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char 234s 1949: do_narrow(char_type __c, char __dfault) const; 234s 1949: # 1476 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual const char_type* 234s 1949: do_narrow(const char_type* __lo, const char_type* __hi, 234s 1949: char __dfault, char* __to) const; 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_initialize_ctype() throw(); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class ctype_byname : public ctype<_CharT> 234s 1949: { 234s 1949: public: 234s 1949: typedef typename ctype<_CharT>::mask mask; 234s 1949: 234s 1949: explicit 234s 1949: ctype_byname(const char* __s, size_t __refs = 0); 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: ctype_byname(const string& __s, size_t __refs = 0) 234s 1949: : ctype_byname(__s.c_str(), __refs) { } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~ctype_byname() { } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: class ctype_byname : public ctype 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: ctype_byname(const char* __s, size_t __refs = 0); 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: ctype_byname(const string& __s, size_t __refs = 0); 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~ctype_byname(); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: class ctype_byname : public ctype 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: ctype_byname(const char* __s, size_t __refs = 0); 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: ctype_byname(const string& __s, size_t __refs = 0); 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~ctype_byname(); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/ctype_inline.h" 1 3 4 234s 1949: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/ctype_inline.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: ctype:: 234s 1949: is(mask __m, char __c) const 234s 1949: { return _M_table[static_cast(__c)] & __m; } 234s 1949: 234s 1949: const char* 234s 1949: ctype:: 234s 1949: is(const char* __low, const char* __high, mask* __vec) const 234s 1949: { 234s 1949: while (__low < __high) 234s 1949: *__vec++ = _M_table[static_cast(*__low++)]; 234s 1949: return __high; 234s 1949: } 234s 1949: 234s 1949: const char* 234s 1949: ctype:: 234s 1949: scan_is(mask __m, const char* __low, const char* __high) const 234s 1949: { 234s 1949: while (__low < __high 234s 1949: && !(_M_table[static_cast(*__low)] & __m)) 234s 1949: ++__low; 234s 1949: return __low; 234s 1949: } 234s 1949: 234s 1949: const char* 234s 1949: ctype:: 234s 1949: scan_not(mask __m, const char* __low, const char* __high) const 234s 1949: { 234s 1949: while (__low < __high 234s 1949: && (_M_table[static_cast(*__low)] & __m) != 0) 234s 1949: ++__low; 234s 1949: return __low; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 1549 "/usr/include/c++/15/bits/locale_facets.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: class __num_base 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: enum 234s 1949: { 234s 1949: _S_ominus, 234s 1949: _S_oplus, 234s 1949: _S_ox, 234s 1949: _S_oX, 234s 1949: _S_odigits, 234s 1949: _S_odigits_end = _S_odigits + 16, 234s 1949: _S_oudigits = _S_odigits_end, 234s 1949: _S_oudigits_end = _S_oudigits + 16, 234s 1949: _S_oe = _S_odigits + 14, 234s 1949: _S_oE = _S_oudigits + 14, 234s 1949: _S_oend = _S_oudigits_end 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const char* _S_atoms_out; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const char* _S_atoms_in; 234s 1949: 234s 1949: enum 234s 1949: { 234s 1949: _S_iminus, 234s 1949: _S_iplus, 234s 1949: _S_ix, 234s 1949: _S_iX, 234s 1949: _S_izero, 234s 1949: _S_ie = _S_izero + 14, 234s 1949: _S_iE = _S_izero + 20, 234s 1949: _S_iend = 26 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw(); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __numpunct_cache : public locale::facet 234s 1949: { 234s 1949: const char* _M_grouping; 234s 1949: size_t _M_grouping_size; 234s 1949: bool _M_use_grouping; 234s 1949: const _CharT* _M_truename; 234s 1949: size_t _M_truename_size; 234s 1949: const _CharT* _M_falsename; 234s 1949: size_t _M_falsename_size; 234s 1949: _CharT _M_decimal_point; 234s 1949: _CharT _M_thousands_sep; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _CharT _M_atoms_out[__num_base::_S_oend]; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _CharT _M_atoms_in[__num_base::_S_iend]; 234s 1949: 234s 1949: bool _M_allocated; 234s 1949: 234s 1949: __numpunct_cache(size_t __refs = 0) 234s 1949: : facet(__refs), _M_grouping(0), _M_grouping_size(0), 234s 1949: _M_use_grouping(false), 234s 1949: _M_truename(0), _M_truename_size(0), _M_falsename(0), 234s 1949: _M_falsename_size(0), _M_decimal_point(_CharT()), 234s 1949: _M_thousands_sep(_CharT()), _M_allocated(false) 234s 1949: { } 234s 1949: 234s 1949: ~__numpunct_cache(); 234s 1949: 234s 1949: void 234s 1949: _M_cache(const locale& __loc); 234s 1949: 234s 1949: private: 234s 1949: __numpunct_cache& 234s 1949: operator=(const __numpunct_cache&); 234s 1949: 234s 1949: explicit 234s 1949: __numpunct_cache(const __numpunct_cache&); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: __numpunct_cache<_CharT>::~__numpunct_cache() 234s 1949: { 234s 1949: if (_M_allocated) 234s 1949: { 234s 1949: delete [] _M_grouping; 234s 1949: delete [] _M_truename; 234s 1949: delete [] _M_falsename; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: # 1679 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: template 234s 1949: class numpunct : public locale::facet 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef basic_string<_CharT> string_type; 234s 1949: 234s 1949: typedef __numpunct_cache<_CharT> __cache_type; 234s 1949: 234s 1949: protected: 234s 1949: __cache_type* _M_data; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: static locale::id id; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: numpunct(size_t __refs = 0) 234s 1949: : facet(__refs), _M_data(0) 234s 1949: { _M_initialize_numpunct(); } 234s 1949: # 1717 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: explicit 234s 1949: numpunct(__cache_type* __cache, size_t __refs = 0) 234s 1949: : facet(__refs), _M_data(__cache) 234s 1949: { _M_initialize_numpunct(); } 234s 1949: # 1731 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: explicit 234s 1949: numpunct(__c_locale __cloc, size_t __refs = 0) 234s 1949: : facet(__refs), _M_data(0) 234s 1949: { _M_initialize_numpunct(__cloc); } 234s 1949: # 1745 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: char_type 234s 1949: decimal_point() const 234s 1949: { return this->do_decimal_point(); } 234s 1949: # 1758 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: char_type 234s 1949: thousands_sep() const 234s 1949: { return this->do_thousands_sep(); } 234s 1949: # 1789 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: string 234s 1949: grouping() const 234s 1949: { return this->do_grouping(); } 234s 1949: # 1802 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: string_type 234s 1949: truename() const 234s 1949: { return this->do_truename(); } 234s 1949: # 1815 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: string_type 234s 1949: falsename() const 234s 1949: { return this->do_falsename(); } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: virtual 234s 1949: ~numpunct(); 234s 1949: # 1832 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_decimal_point() const 234s 1949: { return _M_data->_M_decimal_point; } 234s 1949: # 1844 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual char_type 234s 1949: do_thousands_sep() const 234s 1949: { return _M_data->_M_thousands_sep; } 234s 1949: # 1857 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual string 234s 1949: do_grouping() const 234s 1949: { return _M_data->_M_grouping; } 234s 1949: # 1870 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual string_type 234s 1949: do_truename() const 234s 1949: { return _M_data->_M_truename; } 234s 1949: # 1883 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual string_type 234s 1949: do_falsename() const 234s 1949: { return _M_data->_M_falsename; } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_initialize_numpunct(__c_locale __cloc = 0); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id numpunct<_CharT>::id; 234s 1949: 234s 1949: template<> 234s 1949: numpunct::~numpunct(); 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: numpunct::_M_initialize_numpunct(__c_locale __cloc); 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: numpunct::~numpunct(); 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: numpunct::_M_initialize_numpunct(__c_locale __cloc); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class numpunct_byname : public numpunct<_CharT> 234s 1949: { 234s 1949: public: 234s 1949: typedef _CharT char_type; 234s 1949: typedef basic_string<_CharT> string_type; 234s 1949: 234s 1949: explicit 234s 1949: numpunct_byname(const char* __s, size_t __refs = 0) 234s 1949: : numpunct<_CharT>(__refs) 234s 1949: { 234s 1949: if (__builtin_strcmp(__s, "C") != 0 234s 1949: && __builtin_strcmp(__s, "POSIX") != 0) 234s 1949: { 234s 1949: __c_locale __tmp; 234s 1949: this->_S_create_c_locale(__tmp, __s); 234s 1949: this->_M_initialize_numpunct(__tmp); 234s 1949: this->_S_destroy_c_locale(__tmp); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: numpunct_byname(const string& __s, size_t __refs = 0) 234s 1949: : numpunct_byname(__s.c_str(), __refs) { } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~numpunct_byname() { } 234s 1949: }; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: # 1961 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: template 234s 1949: class num_get : public locale::facet 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _InIter iter_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static locale::id id; 234s 1949: # 1982 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: explicit 234s 1949: num_get(size_t __refs = 0) : facet(__refs) { } 234s 1949: # 2008 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, bool& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: # 2045 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, long& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, unsigned short& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, unsigned int& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, unsigned long& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, long long& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, unsigned long long& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 2108 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, float& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, double& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, long double& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: # 2151 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: iter_type 234s 1949: get(iter_type __in, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, void*& __v) const 234s 1949: { return this->do_get(__in, __end, __io, __err, __v); } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: virtual ~num_get() { } 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iter_type 234s 1949: _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, 234s 1949: string&) const; 234s 1949: 234s 1949: template 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iter_type 234s 1949: _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, 234s 1949: _ValueT&) const; 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type 234s 1949: _M_find(const _CharT2*, size_t __len, _CharT2 __c) const 234s 1949: { 234s 1949: int __ret = -1; 234s 1949: if (__len <= 10) 234s 1949: { 234s 1949: if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) 234s 1949: __ret = __c - _CharT2('0'); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: if (__c >= _CharT2('0') && __c <= _CharT2('9')) 234s 1949: __ret = __c - _CharT2('0'); 234s 1949: else if (__c >= _CharT2('a') && __c <= _CharT2('f')) 234s 1949: __ret = 10 + (__c - _CharT2('a')); 234s 1949: else if (__c >= _CharT2('A') && __c <= _CharT2('F')) 234s 1949: __ret = 10 + (__c - _CharT2('A')); 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename __gnu_cxx::__enable_if::__value, 234s 1949: int>::__type 234s 1949: _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const 234s 1949: { 234s 1949: int __ret = -1; 234s 1949: const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); 234s 1949: if (__q) 234s 1949: { 234s 1949: __ret = __q - __zero; 234s 1949: if (__ret > 15) 234s 1949: __ret -= 6; 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: # 2224 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, long& __v) const 234s 1949: { return _M_extract_int(__beg, __end, __io, __err, __v); } 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, unsigned short& __v) const 234s 1949: { return _M_extract_int(__beg, __end, __io, __err, __v); } 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, unsigned int& __v) const 234s 1949: { return _M_extract_int(__beg, __end, __io, __err, __v); } 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, unsigned long& __v) const 234s 1949: { return _M_extract_int(__beg, __end, __io, __err, __v); } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: virtual iter_type 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, long long& __v) const 234s 1949: { return _M_extract_int(__beg, __end, __io, __err, __v); } 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, unsigned long long& __v) const 234s 1949: { return _M_extract_int(__beg, __end, __io, __err, __v); } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const; 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, 234s 1949: double&) const; 234s 1949: # 2279 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, 234s 1949: long double&) const; 234s 1949: 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; 234s 1949: # 2307 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id num_get<_CharT, _InIter>::id; 234s 1949: # 2325 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: template 234s 1949: class num_put : public locale::facet 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _OutIter iter_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static locale::id id; 234s 1949: # 2346 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: explicit 234s 1949: num_put(size_t __refs = 0) : facet(__refs) { } 234s 1949: # 2364 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: iter_type 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const 234s 1949: { return this->do_put(__s, __io, __fill, __v); } 234s 1949: # 2406 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: iter_type 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, long __v) const 234s 1949: { return this->do_put(__s, __io, __fill, __v); } 234s 1949: 234s 1949: iter_type 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: unsigned long __v) const 234s 1949: { return this->do_put(__s, __io, __fill, __v); } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: iter_type 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const 234s 1949: { return this->do_put(__s, __io, __fill, __v); } 234s 1949: 234s 1949: iter_type 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: unsigned long long __v) const 234s 1949: { return this->do_put(__s, __io, __fill, __v); } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 2472 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: iter_type 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, double __v) const 234s 1949: { return this->do_put(__s, __io, __fill, __v); } 234s 1949: 234s 1949: iter_type 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: long double __v) const 234s 1949: { return this->do_put(__s, __io, __fill, __v); } 234s 1949: # 2497 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: iter_type 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: const void* __v) const 234s 1949: { return this->do_put(__s, __io, __fill, __v); } 234s 1949: 234s 1949: protected: 234s 1949: template 234s 1949: iter_type 234s 1949: _M_insert_float(iter_type, ios_base& __io, char_type __fill, 234s 1949: char __mod, _ValueT __v) const; 234s 1949: 234s 1949: void 234s 1949: _M_group_float(const char* __grouping, size_t __grouping_size, 234s 1949: char_type __sep, const char_type* __p, char_type* __new, 234s 1949: char_type* __cs, int& __len) const; 234s 1949: 234s 1949: template 234s 1949: iter_type 234s 1949: _M_insert_int(iter_type, ios_base& __io, char_type __fill, 234s 1949: _ValueT __v) const; 234s 1949: 234s 1949: void 234s 1949: _M_group_int(const char* __grouping, size_t __grouping_size, 234s 1949: char_type __sep, ios_base& __io, char_type* __new, 234s 1949: char_type* __cs, int& __len) const; 234s 1949: 234s 1949: void 234s 1949: _M_pad(char_type __fill, streamsize __w, ios_base& __io, 234s 1949: char_type* __new, const char_type* __cs, int& __len) const; 234s 1949: 234s 1949: 234s 1949: virtual 234s 1949: ~num_put() { } 234s 1949: # 2545 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const; 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const 234s 1949: { return _M_insert_int(__s, __io, __fill, __v); } 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_put(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: unsigned long __v) const 234s 1949: { return _M_insert_int(__s, __io, __fill, __v); } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: virtual iter_type 234s 1949: do_put(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: long long __v) const 234s 1949: { return _M_insert_int(__s, __io, __fill, __v); } 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_put(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: unsigned long long __v) const 234s 1949: { return _M_insert_int(__s, __io, __fill, __v); } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_put(iter_type, ios_base&, char_type, double) const; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_put(iter_type, ios_base&, char_type, long double) const; 234s 1949: 234s 1949: 234s 1949: virtual iter_type 234s 1949: do_put(iter_type, ios_base&, char_type, const void*) const; 234s 1949: # 2600 "/usr/include/c++/15/bits/locale_facets.h" 3 4 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id num_put<_CharT, _OutIter>::id; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: isspace(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::space, __c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: isprint(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::print, __c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: iscntrl(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::cntrl, __c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: isupper(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::upper, __c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: islower(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::lower, __c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: isalpha(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::alpha, __c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: isdigit(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::digit, __c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: ispunct(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::punct, __c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: isxdigit(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::xdigit, __c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: isalnum(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::alnum, __c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: isgraph(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::graph, __c); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: isblank(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).is(ctype_base::blank, __c); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline _CharT 234s 1949: toupper(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).toupper(__c); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline _CharT 234s 1949: tolower(_CharT __c, const locale& __loc) 234s 1949: { return use_facet >(__loc).tolower(__c); } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/locale_facets.tcc" 1 3 4 234s 1949: # 36 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __use_cache 234s 1949: { 234s 1949: const _Facet* 234s 1949: operator() (const locale& __loc) const; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __use_cache<__numpunct_cache<_CharT> > 234s 1949: { 234s 1949: const __numpunct_cache<_CharT>* 234s 1949: operator() (const locale& __loc) const 234s 1949: { 234s 1949: const size_t __i = numpunct<_CharT>::id._M_id(); 234s 1949: const locale::facet** __caches = __loc._M_impl->_M_caches; 234s 1949: if (!__caches[__i]) 234s 1949: { 234s 1949: __numpunct_cache<_CharT>* __tmp = 0; 234s 1949: try 234s 1949: { 234s 1949: __tmp = new __numpunct_cache<_CharT>; 234s 1949: __tmp->_M_cache(__loc); 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: delete __tmp; 234s 1949: throw; 234s 1949: } 234s 1949: __loc._M_impl->_M_install_cache(__tmp, __i); 234s 1949: } 234s 1949: return static_cast*>(__caches[__i]); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __numpunct_cache<_CharT>::_M_cache(const locale& __loc) 234s 1949: { 234s 1949: const numpunct<_CharT>& __np = use_facet >(__loc); 234s 1949: 234s 1949: char* __grouping = 0; 234s 1949: _CharT* __truename = 0; 234s 1949: _CharT* __falsename = 0; 234s 1949: try 234s 1949: { 234s 1949: const string& __g = __np.grouping(); 234s 1949: _M_grouping_size = __g.size(); 234s 1949: __grouping = new char[_M_grouping_size]; 234s 1949: __g.copy(__grouping, _M_grouping_size); 234s 1949: _M_use_grouping = (_M_grouping_size 234s 1949: && static_cast(__grouping[0]) > 0 234s 1949: && (__grouping[0] 234s 1949: != __gnu_cxx::__numeric_traits::__max)); 234s 1949: 234s 1949: const basic_string<_CharT>& __tn = __np.truename(); 234s 1949: _M_truename_size = __tn.size(); 234s 1949: __truename = new _CharT[_M_truename_size]; 234s 1949: __tn.copy(__truename, _M_truename_size); 234s 1949: 234s 1949: const basic_string<_CharT>& __fn = __np.falsename(); 234s 1949: _M_falsename_size = __fn.size(); 234s 1949: __falsename = new _CharT[_M_falsename_size]; 234s 1949: __fn.copy(__falsename, _M_falsename_size); 234s 1949: 234s 1949: _M_decimal_point = __np.decimal_point(); 234s 1949: _M_thousands_sep = __np.thousands_sep(); 234s 1949: 234s 1949: const ctype<_CharT>& __ct = use_facet >(__loc); 234s 1949: __ct.widen(__num_base::_S_atoms_out, 234s 1949: __num_base::_S_atoms_out 234s 1949: + __num_base::_S_oend, _M_atoms_out); 234s 1949: __ct.widen(__num_base::_S_atoms_in, 234s 1949: __num_base::_S_atoms_in 234s 1949: + __num_base::_S_iend, _M_atoms_in); 234s 1949: 234s 1949: _M_grouping = __grouping; 234s 1949: _M_truename = __truename; 234s 1949: _M_falsename = __falsename; 234s 1949: _M_allocated = true; 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: delete [] __grouping; 234s 1949: delete [] __truename; 234s 1949: delete [] __falsename; 234s 1949: throw; 234s 1949: } 234s 1949: } 234s 1949: # 143 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 234s 1949: __attribute__ ((__pure__)) bool 234s 1949: __verify_grouping(const char* __grouping, size_t __grouping_size, 234s 1949: const string& __grouping_tmp) throw (); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: _InIter 234s 1949: num_get<_CharT, _InIter>:: 234s 1949: _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, string& __xtrc) const 234s 1949: { 234s 1949: typedef char_traits<_CharT> __traits_type; 234s 1949: typedef __numpunct_cache<_CharT> __cache_type; 234s 1949: __use_cache<__cache_type> __uc; 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __cache_type* __lc = __uc(__loc); 234s 1949: const _CharT* __lit = __lc->_M_atoms_in; 234s 1949: char_type __c = char_type(); 234s 1949: 234s 1949: 234s 1949: bool __testeof = __beg == __end; 234s 1949: 234s 1949: 234s 1949: if (!__testeof) 234s 1949: { 234s 1949: __c = *__beg; 234s 1949: const bool __plus = __c == __lit[__num_base::_S_iplus]; 234s 1949: if ((__plus || __c == __lit[__num_base::_S_iminus]) 234s 1949: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 234s 1949: && !(__c == __lc->_M_decimal_point)) 234s 1949: { 234s 1949: __xtrc += __plus ? '+' : '-'; 234s 1949: if (++__beg != __end) 234s 1949: __c = *__beg; 234s 1949: else 234s 1949: __testeof = true; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool __found_mantissa = false; 234s 1949: int __sep_pos = 0; 234s 1949: while (!__testeof) 234s 1949: { 234s 1949: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 234s 1949: || __c == __lc->_M_decimal_point) 234s 1949: break; 234s 1949: else if (__c == __lit[__num_base::_S_izero]) 234s 1949: { 234s 1949: if (!__found_mantissa) 234s 1949: { 234s 1949: __xtrc += '0'; 234s 1949: __found_mantissa = true; 234s 1949: } 234s 1949: ++__sep_pos; 234s 1949: 234s 1949: if (++__beg != __end) 234s 1949: __c = *__beg; 234s 1949: else 234s 1949: __testeof = true; 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool __found_dec = false; 234s 1949: bool __found_sci = false; 234s 1949: string __found_grouping; 234s 1949: if (__lc->_M_use_grouping) 234s 1949: __found_grouping.reserve(32); 234s 1949: const char_type* __lit_zero = __lit + __num_base::_S_izero; 234s 1949: 234s 1949: if (!__lc->_M_allocated) 234s 1949: 234s 1949: while (!__testeof) 234s 1949: { 234s 1949: const int __digit = _M_find(__lit_zero, 10, __c); 234s 1949: if (__digit != -1) 234s 1949: { 234s 1949: __xtrc += '0' + __digit; 234s 1949: __found_mantissa = true; 234s 1949: } 234s 1949: else if (__c == __lc->_M_decimal_point 234s 1949: && !__found_dec && !__found_sci) 234s 1949: { 234s 1949: __xtrc += '.'; 234s 1949: __found_dec = true; 234s 1949: } 234s 1949: else if ((__c == __lit[__num_base::_S_ie] 234s 1949: || __c == __lit[__num_base::_S_iE]) 234s 1949: && !__found_sci && __found_mantissa) 234s 1949: { 234s 1949: 234s 1949: __xtrc += 'e'; 234s 1949: __found_sci = true; 234s 1949: 234s 1949: 234s 1949: if (++__beg != __end) 234s 1949: { 234s 1949: __c = *__beg; 234s 1949: const bool __plus = __c == __lit[__num_base::_S_iplus]; 234s 1949: if (__plus || __c == __lit[__num_base::_S_iminus]) 234s 1949: __xtrc += __plus ? '+' : '-'; 234s 1949: else 234s 1949: continue; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __testeof = true; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: 234s 1949: if (++__beg != __end) 234s 1949: __c = *__beg; 234s 1949: else 234s 1949: __testeof = true; 234s 1949: } 234s 1949: else 234s 1949: while (!__testeof) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 234s 1949: { 234s 1949: if (!__found_dec && !__found_sci) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__sep_pos) 234s 1949: { 234s 1949: __found_grouping += static_cast(__sep_pos); 234s 1949: __sep_pos = 0; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: __xtrc.clear(); 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: else if (__c == __lc->_M_decimal_point) 234s 1949: { 234s 1949: if (!__found_dec && !__found_sci) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__found_grouping.size()) 234s 1949: __found_grouping += static_cast(__sep_pos); 234s 1949: __xtrc += '.'; 234s 1949: __found_dec = true; 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: const char_type* __q = 234s 1949: __traits_type::find(__lit_zero, 10, __c); 234s 1949: if (__q) 234s 1949: { 234s 1949: __xtrc += '0' + (__q - __lit_zero); 234s 1949: __found_mantissa = true; 234s 1949: ++__sep_pos; 234s 1949: } 234s 1949: else if ((__c == __lit[__num_base::_S_ie] 234s 1949: || __c == __lit[__num_base::_S_iE]) 234s 1949: && !__found_sci && __found_mantissa) 234s 1949: { 234s 1949: 234s 1949: if (__found_grouping.size() && !__found_dec) 234s 1949: __found_grouping += static_cast(__sep_pos); 234s 1949: __xtrc += 'e'; 234s 1949: __found_sci = true; 234s 1949: 234s 1949: 234s 1949: if (++__beg != __end) 234s 1949: { 234s 1949: __c = *__beg; 234s 1949: const bool __plus = __c == __lit[__num_base::_S_iplus]; 234s 1949: if ((__plus || __c == __lit[__num_base::_S_iminus]) 234s 1949: && !(__lc->_M_use_grouping 234s 1949: && __c == __lc->_M_thousands_sep) 234s 1949: && !(__c == __lc->_M_decimal_point)) 234s 1949: __xtrc += __plus ? '+' : '-'; 234s 1949: else 234s 1949: continue; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __testeof = true; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: if (++__beg != __end) 234s 1949: __c = *__beg; 234s 1949: else 234s 1949: __testeof = true; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__found_grouping.size()) 234s 1949: { 234s 1949: 234s 1949: if (!__found_dec && !__found_sci) 234s 1949: __found_grouping += static_cast(__sep_pos); 234s 1949: 234s 1949: if (!std::__verify_grouping(__lc->_M_grouping, 234s 1949: __lc->_M_grouping_size, 234s 1949: __found_grouping)) 234s 1949: __err = ios_base::failbit; 234s 1949: } 234s 1949: 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: _InIter 234s 1949: num_get<_CharT, _InIter>:: 234s 1949: _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, _ValueT& __v) const 234s 1949: { 234s 1949: typedef char_traits<_CharT> __traits_type; 234s 1949: using __gnu_cxx::__add_unsigned; 234s 1949: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; 234s 1949: typedef __numpunct_cache<_CharT> __cache_type; 234s 1949: __use_cache<__cache_type> __uc; 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __cache_type* __lc = __uc(__loc); 234s 1949: const _CharT* __lit = __lc->_M_atoms_in; 234s 1949: char_type __c = char_type(); 234s 1949: 234s 1949: 234s 1949: const ios_base::fmtflags __basefield = __io.flags() 234s 1949: & ios_base::basefield; 234s 1949: const bool __oct = __basefield == ios_base::oct; 234s 1949: int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); 234s 1949: 234s 1949: 234s 1949: bool __testeof = __beg == __end; 234s 1949: 234s 1949: 234s 1949: bool __negative = false; 234s 1949: if (!__testeof) 234s 1949: { 234s 1949: __c = *__beg; 234s 1949: __negative = __c == __lit[__num_base::_S_iminus]; 234s 1949: if ((__negative || __c == __lit[__num_base::_S_iplus]) 234s 1949: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 234s 1949: && !(__c == __lc->_M_decimal_point)) 234s 1949: { 234s 1949: if (++__beg != __end) 234s 1949: __c = *__beg; 234s 1949: else 234s 1949: __testeof = true; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: bool __found_zero = false; 234s 1949: int __sep_pos = 0; 234s 1949: while (!__testeof) 234s 1949: { 234s 1949: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 234s 1949: || __c == __lc->_M_decimal_point) 234s 1949: break; 234s 1949: else if (__c == __lit[__num_base::_S_izero] 234s 1949: && (!__found_zero || __base == 10)) 234s 1949: { 234s 1949: __found_zero = true; 234s 1949: ++__sep_pos; 234s 1949: if (__basefield == 0) 234s 1949: __base = 8; 234s 1949: if (__base == 8) 234s 1949: __sep_pos = 0; 234s 1949: } 234s 1949: else if (__found_zero 234s 1949: && (__c == __lit[__num_base::_S_ix] 234s 1949: || __c == __lit[__num_base::_S_iX])) 234s 1949: { 234s 1949: if (__basefield == 0) 234s 1949: __base = 16; 234s 1949: if (__base == 16) 234s 1949: { 234s 1949: __found_zero = false; 234s 1949: __sep_pos = 0; 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: 234s 1949: if (++__beg != __end) 234s 1949: { 234s 1949: __c = *__beg; 234s 1949: if (!__found_zero) 234s 1949: break; 234s 1949: } 234s 1949: else 234s 1949: __testeof = true; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: const size_t __len = (__base == 16 ? __num_base::_S_iend 234s 1949: - __num_base::_S_izero : __base); 234s 1949: 234s 1949: 234s 1949: typedef __gnu_cxx::__numeric_traits<_ValueT> __num_traits; 234s 1949: string __found_grouping; 234s 1949: if (__lc->_M_use_grouping) 234s 1949: __found_grouping.reserve(32); 234s 1949: bool __testfail = false; 234s 1949: bool __testoverflow = false; 234s 1949: const __unsigned_type __max = 234s 1949: (__negative && __num_traits::__is_signed) 234s 1949: ? -static_cast<__unsigned_type>(__num_traits::__min) 234s 1949: : __num_traits::__max; 234s 1949: const __unsigned_type __smax = __max / __base; 234s 1949: __unsigned_type __result = 0; 234s 1949: int __digit = 0; 234s 1949: const char_type* __lit_zero = __lit + __num_base::_S_izero; 234s 1949: 234s 1949: if (!__lc->_M_allocated) 234s 1949: 234s 1949: while (!__testeof) 234s 1949: { 234s 1949: __digit = _M_find(__lit_zero, __len, __c); 234s 1949: if (__digit == -1) 234s 1949: break; 234s 1949: 234s 1949: if (__result > __smax) 234s 1949: __testoverflow = true; 234s 1949: else 234s 1949: { 234s 1949: __result *= __base; 234s 1949: __testoverflow |= __result > __max - __digit; 234s 1949: __result += __digit; 234s 1949: ++__sep_pos; 234s 1949: } 234s 1949: 234s 1949: if (++__beg != __end) 234s 1949: __c = *__beg; 234s 1949: else 234s 1949: __testeof = true; 234s 1949: } 234s 1949: else 234s 1949: while (!__testeof) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__sep_pos) 234s 1949: { 234s 1949: __found_grouping += static_cast(__sep_pos); 234s 1949: __sep_pos = 0; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __testfail = true; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: else if (__c == __lc->_M_decimal_point) 234s 1949: break; 234s 1949: else 234s 1949: { 234s 1949: const char_type* __q = 234s 1949: __traits_type::find(__lit_zero, __len, __c); 234s 1949: if (!__q) 234s 1949: break; 234s 1949: 234s 1949: __digit = __q - __lit_zero; 234s 1949: if (__digit > 15) 234s 1949: __digit -= 6; 234s 1949: if (__result > __smax) 234s 1949: __testoverflow = true; 234s 1949: else 234s 1949: { 234s 1949: __result *= __base; 234s 1949: __testoverflow |= __result > __max - __digit; 234s 1949: __result += __digit; 234s 1949: ++__sep_pos; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: if (++__beg != __end) 234s 1949: __c = *__beg; 234s 1949: else 234s 1949: __testeof = true; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__found_grouping.size()) 234s 1949: { 234s 1949: 234s 1949: __found_grouping += static_cast(__sep_pos); 234s 1949: 234s 1949: if (!std::__verify_grouping(__lc->_M_grouping, 234s 1949: __lc->_M_grouping_size, 234s 1949: __found_grouping)) 234s 1949: __err = ios_base::failbit; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: if ((!__sep_pos && !__found_zero && !__found_grouping.size()) 234s 1949: || __testfail) 234s 1949: { 234s 1949: __v = 0; 234s 1949: __err = ios_base::failbit; 234s 1949: } 234s 1949: else if (__testoverflow) 234s 1949: { 234s 1949: if (__negative && __num_traits::__is_signed) 234s 1949: __v = __num_traits::__min; 234s 1949: else 234s 1949: __v = __num_traits::__max; 234s 1949: __err = ios_base::failbit; 234s 1949: } 234s 1949: else 234s 1949: __v = __negative ? -__result : __result; 234s 1949: 234s 1949: if (__testeof) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: num_get<_CharT, _InIter>:: 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, bool& __v) const 234s 1949: { 234s 1949: if (!(__io.flags() & ios_base::boolalpha)) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: long __l = -1; 234s 1949: __beg = _M_extract_int(__beg, __end, __io, __err, __l); 234s 1949: if (__l == 0 || __l == 1) 234s 1949: __v = bool(__l); 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: __v = true; 234s 1949: __err = ios_base::failbit; 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: typedef __numpunct_cache<_CharT> __cache_type; 234s 1949: __use_cache<__cache_type> __uc; 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __cache_type* __lc = __uc(__loc); 234s 1949: 234s 1949: bool __testf = true; 234s 1949: bool __testt = true; 234s 1949: bool __donef = __lc->_M_falsename_size == 0; 234s 1949: bool __donet = __lc->_M_truename_size == 0; 234s 1949: bool __testeof = false; 234s 1949: size_t __n = 0; 234s 1949: while (!__donef || !__donet) 234s 1949: { 234s 1949: if (__beg == __end) 234s 1949: { 234s 1949: __testeof = true; 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: const char_type __c = *__beg; 234s 1949: 234s 1949: if (!__donef) 234s 1949: __testf = __c == __lc->_M_falsename[__n]; 234s 1949: 234s 1949: if (!__testf && __donet) 234s 1949: break; 234s 1949: 234s 1949: if (!__donet) 234s 1949: __testt = __c == __lc->_M_truename[__n]; 234s 1949: 234s 1949: if (!__testt && __donef) 234s 1949: break; 234s 1949: 234s 1949: if (!__testt && !__testf) 234s 1949: break; 234s 1949: 234s 1949: ++__n; 234s 1949: ++__beg; 234s 1949: 234s 1949: __donef = !__testf || __n >= __lc->_M_falsename_size; 234s 1949: __donet = !__testt || __n >= __lc->_M_truename_size; 234s 1949: } 234s 1949: if (__testf && __n == __lc->_M_falsename_size && __n) 234s 1949: { 234s 1949: __v = false; 234s 1949: if (__testt && __n == __lc->_M_truename_size) 234s 1949: __err = ios_base::failbit; 234s 1949: else 234s 1949: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; 234s 1949: } 234s 1949: else if (__testt && __n == __lc->_M_truename_size && __n) 234s 1949: { 234s 1949: __v = true; 234s 1949: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: __v = false; 234s 1949: __err = ios_base::failbit; 234s 1949: if (__testeof) 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: } 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: num_get<_CharT, _InIter>:: 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, float& __v) const 234s 1949: { 234s 1949: string __xtrc; 234s 1949: __xtrc.reserve(32); 234s 1949: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 234s 1949: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: num_get<_CharT, _InIter>:: 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, double& __v) const 234s 1949: { 234s 1949: string __xtrc; 234s 1949: __xtrc.reserve(32); 234s 1949: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 234s 1949: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: # 739 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 234s 1949: template 234s 1949: _InIter 234s 1949: num_get<_CharT, _InIter>:: 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, long double& __v) const 234s 1949: { 234s 1949: string __xtrc; 234s 1949: __xtrc.reserve(32); 234s 1949: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 234s 1949: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: num_get<_CharT, _InIter>:: 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, void*& __v) const 234s 1949: { 234s 1949: 234s 1949: typedef ios_base::fmtflags fmtflags; 234s 1949: const fmtflags __fmt = __io.flags(); 234s 1949: __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex); 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: typedef __gnu_cxx::__conditional_type<(sizeof(void*) 234s 1949: <= sizeof(unsigned long)), 234s 1949: unsigned long, unsigned long long>::__type _UIntPtrType; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: _UIntPtrType __ul; 234s 1949: __beg = _M_extract_int(__beg, __end, __io, __err, __ul); 234s 1949: 234s 1949: 234s 1949: __io.flags(__fmt); 234s 1949: 234s 1949: __v = reinterpret_cast(__ul); 234s 1949: return __beg; 234s 1949: } 234s 1949: # 802 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 234s 1949: template 234s 1949: void 234s 1949: num_put<_CharT, _OutIter>:: 234s 1949: _M_pad(_CharT __fill, streamsize __w, ios_base& __io, 234s 1949: _CharT* __new, const _CharT* __cs, int& __len) const 234s 1949: { 234s 1949: 234s 1949: 234s 1949: __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, 234s 1949: __cs, __w, __len); 234s 1949: __len = static_cast(__w); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: int 234s 1949: __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, 234s 1949: ios_base::fmtflags __flags, bool __dec) 234s 1949: { 234s 1949: _CharT* __buf = __bufend; 234s 1949: if (__builtin_expect(__dec, true)) 234s 1949: { 234s 1949: 234s 1949: do 234s 1949: { 234s 1949: *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; 234s 1949: __v /= 10; 234s 1949: } 234s 1949: while (__v != 0); 234s 1949: } 234s 1949: else if ((__flags & ios_base::basefield) == ios_base::oct) 234s 1949: { 234s 1949: 234s 1949: do 234s 1949: { 234s 1949: *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; 234s 1949: __v >>= 3; 234s 1949: } 234s 1949: while (__v != 0); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: const bool __uppercase = __flags & ios_base::uppercase; 234s 1949: const int __case_offset = __uppercase ? __num_base::_S_oudigits 234s 1949: : __num_base::_S_odigits; 234s 1949: do 234s 1949: { 234s 1949: *--__buf = __lit[(__v & 0xf) + __case_offset]; 234s 1949: __v >>= 4; 234s 1949: } 234s 1949: while (__v != 0); 234s 1949: } 234s 1949: return __bufend - __buf; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: num_put<_CharT, _OutIter>:: 234s 1949: _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, 234s 1949: ios_base&, _CharT* __new, _CharT* __cs, int& __len) const 234s 1949: { 234s 1949: _CharT* __p = std::__add_grouping(__new, __sep, __grouping, 234s 1949: __grouping_size, __cs, __cs + __len); 234s 1949: __len = __p - __new; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: _OutIter 234s 1949: num_put<_CharT, _OutIter>:: 234s 1949: _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, 234s 1949: _ValueT __v) const 234s 1949: { 234s 1949: using __gnu_cxx::__add_unsigned; 234s 1949: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; 234s 1949: typedef __numpunct_cache<_CharT> __cache_type; 234s 1949: __use_cache<__cache_type> __uc; 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __cache_type* __lc = __uc(__loc); 234s 1949: const _CharT* __lit = __lc->_M_atoms_out; 234s 1949: const ios_base::fmtflags __flags = __io.flags(); 234s 1949: 234s 1949: 234s 1949: const int __ilen = 5 * sizeof(_ValueT); 234s 1949: _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 234s 1949: * __ilen)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: const ios_base::fmtflags __basefield = __flags & ios_base::basefield; 234s 1949: const bool __dec = (__basefield != ios_base::oct 234s 1949: && __basefield != ios_base::hex); 234s 1949: const __unsigned_type __u = ((__v > 0 || !__dec) 234s 1949: ? __unsigned_type(__v) 234s 1949: : -__unsigned_type(__v)); 234s 1949: int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); 234s 1949: __cs += __ilen - __len; 234s 1949: 234s 1949: 234s 1949: if (__lc->_M_use_grouping) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 234s 1949: * (__len + 1) 234s 1949: * 2)); 234s 1949: _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, 234s 1949: __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); 234s 1949: __cs = __cs2 + 2; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (__builtin_expect(__dec, true)) 234s 1949: { 234s 1949: 234s 1949: if (__v >= 0) 234s 1949: { 234s 1949: if (bool(__flags & ios_base::showpos) 234s 1949: && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) 234s 1949: *--__cs = __lit[__num_base::_S_oplus], ++__len; 234s 1949: } 234s 1949: else 234s 1949: *--__cs = __lit[__num_base::_S_ominus], ++__len; 234s 1949: } 234s 1949: else if (bool(__flags & ios_base::showbase) && __v) 234s 1949: { 234s 1949: if (__basefield == ios_base::oct) 234s 1949: *--__cs = __lit[__num_base::_S_odigits], ++__len; 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: const bool __uppercase = __flags & ios_base::uppercase; 234s 1949: *--__cs = __lit[__num_base::_S_ox + __uppercase]; 234s 1949: 234s 1949: *--__cs = __lit[__num_base::_S_odigits]; 234s 1949: __len += 2; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const streamsize __w = __io.width(); 234s 1949: if (__w > static_cast(__len)) 234s 1949: { 234s 1949: _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 234s 1949: * __w)); 234s 1949: _M_pad(__fill, __w, __io, __cs3, __cs, __len); 234s 1949: __cs = __cs3; 234s 1949: } 234s 1949: __io.width(0); 234s 1949: 234s 1949: 234s 1949: 234s 1949: return std::__write(__s, __cs, __len); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: num_put<_CharT, _OutIter>:: 234s 1949: _M_group_float(const char* __grouping, size_t __grouping_size, 234s 1949: _CharT __sep, const _CharT* __p, _CharT* __new, 234s 1949: _CharT* __cs, int& __len) const 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: const int __declen = __p ? __p - __cs : __len; 234s 1949: _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, 234s 1949: __grouping_size, 234s 1949: __cs, __cs + __declen); 234s 1949: 234s 1949: 234s 1949: int __newlen = __p2 - __new; 234s 1949: if (__p) 234s 1949: { 234s 1949: char_traits<_CharT>::copy(__p2, __p, __len - __declen); 234s 1949: __newlen += __len - __declen; 234s 1949: } 234s 1949: __len = __newlen; 234s 1949: } 234s 1949: # 996 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 234s 1949: template 234s 1949: template 234s 1949: _OutIter 234s 1949: num_put<_CharT, _OutIter>:: 234s 1949: _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, 234s 1949: _ValueT __v) const 234s 1949: { 234s 1949: typedef __numpunct_cache<_CharT> __cache_type; 234s 1949: __use_cache<__cache_type> __uc; 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __cache_type* __lc = __uc(__loc); 234s 1949: 234s 1949: 234s 1949: const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); 234s 1949: 234s 1949: const int __max_digits = 234s 1949: __gnu_cxx::__numeric_traits<_ValueT>::__digits10; 234s 1949: 234s 1949: 234s 1949: int __len; 234s 1949: 234s 1949: char __fbuf[16]; 234s 1949: __num_base::_S_format_float(__io, __fbuf, __mod); 234s 1949: 234s 1949: 234s 1949: 234s 1949: const bool __use_prec = 234s 1949: (__io.flags() & ios_base::floatfield) != ios_base::floatfield; 234s 1949: 234s 1949: 234s 1949: 234s 1949: int __cs_size = __max_digits * 3; 234s 1949: char* __cs = static_cast(__builtin_alloca(__cs_size)); 234s 1949: if (__use_prec) 234s 1949: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 234s 1949: __fbuf, __prec, __v); 234s 1949: else 234s 1949: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 234s 1949: __fbuf, __v); 234s 1949: 234s 1949: 234s 1949: if (__len >= __cs_size) 234s 1949: { 234s 1949: __cs_size = __len + 1; 234s 1949: __cs = static_cast(__builtin_alloca(__cs_size)); 234s 1949: if (__use_prec) 234s 1949: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 234s 1949: __fbuf, __prec, __v); 234s 1949: else 234s 1949: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 234s 1949: __fbuf, __v); 234s 1949: } 234s 1949: # 1069 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: 234s 1949: _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 234s 1949: * __len)); 234s 1949: __ctype.widen(__cs, __cs + __len, __ws); 234s 1949: 234s 1949: 234s 1949: _CharT* __wp = 0; 234s 1949: const char* __p = char_traits::find(__cs, __len, '.'); 234s 1949: if (__p) 234s 1949: { 234s 1949: __wp = __ws + (__p - __cs); 234s 1949: *__wp = __lc->_M_decimal_point; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__lc->_M_use_grouping 234s 1949: && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' 234s 1949: && __cs[1] >= '0' && __cs[2] >= '0'))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 234s 1949: * __len * 2)); 234s 1949: 234s 1949: streamsize __off = 0; 234s 1949: if (__cs[0] == '-' || __cs[0] == '+') 234s 1949: { 234s 1949: __off = 1; 234s 1949: __ws2[0] = __ws[0]; 234s 1949: __len -= 1; 234s 1949: } 234s 1949: 234s 1949: _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, 234s 1949: __lc->_M_thousands_sep, __wp, __ws2 + __off, 234s 1949: __ws + __off, __len); 234s 1949: __len += __off; 234s 1949: 234s 1949: __ws = __ws2; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const streamsize __w = __io.width(); 234s 1949: if (__w > static_cast(__len)) 234s 1949: { 234s 1949: _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 234s 1949: * __w)); 234s 1949: _M_pad(__fill, __w, __io, __ws3, __ws, __len); 234s 1949: __ws = __ws3; 234s 1949: } 234s 1949: __io.width(0); 234s 1949: 234s 1949: 234s 1949: 234s 1949: return std::__write(__s, __ws, __len); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _OutIter 234s 1949: num_put<_CharT, _OutIter>:: 234s 1949: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const 234s 1949: { 234s 1949: const ios_base::fmtflags __flags = __io.flags(); 234s 1949: if ((__flags & ios_base::boolalpha) == 0) 234s 1949: { 234s 1949: const long __l = __v; 234s 1949: __s = _M_insert_int(__s, __io, __fill, __l); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: typedef __numpunct_cache<_CharT> __cache_type; 234s 1949: __use_cache<__cache_type> __uc; 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __cache_type* __lc = __uc(__loc); 234s 1949: 234s 1949: const _CharT* __name = __v ? __lc->_M_truename 234s 1949: : __lc->_M_falsename; 234s 1949: int __len = __v ? __lc->_M_truename_size 234s 1949: : __lc->_M_falsename_size; 234s 1949: 234s 1949: const streamsize __w = __io.width(); 234s 1949: if (__w > static_cast(__len)) 234s 1949: { 234s 1949: const streamsize __plen = __w - __len; 234s 1949: _CharT* __ps 234s 1949: = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 234s 1949: * __plen)); 234s 1949: 234s 1949: char_traits<_CharT>::assign(__ps, __plen, __fill); 234s 1949: __io.width(0); 234s 1949: 234s 1949: if ((__flags & ios_base::adjustfield) == ios_base::left) 234s 1949: { 234s 1949: __s = std::__write(__s, __name, __len); 234s 1949: __s = std::__write(__s, __ps, __plen); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __s = std::__write(__s, __ps, __plen); 234s 1949: __s = std::__write(__s, __name, __len); 234s 1949: } 234s 1949: return __s; 234s 1949: } 234s 1949: __io.width(0); 234s 1949: __s = std::__write(__s, __name, __len); 234s 1949: } 234s 1949: return __s; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _OutIter 234s 1949: num_put<_CharT, _OutIter>:: 234s 1949: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const 234s 1949: { return _M_insert_float(__s, __io, __fill, char(), __v); } 234s 1949: # 1194 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 234s 1949: template 234s 1949: _OutIter 234s 1949: num_put<_CharT, _OutIter>:: 234s 1949: do_put(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: long double __v) const 234s 1949: { return _M_insert_float(__s, __io, __fill, 'L', __v); } 234s 1949: 234s 1949: template 234s 1949: _OutIter 234s 1949: num_put<_CharT, _OutIter>:: 234s 1949: do_put(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: const void* __v) const 234s 1949: { 234s 1949: const ios_base::fmtflags __flags = __io.flags(); 234s 1949: const ios_base::fmtflags __fmt = ~(ios_base::basefield 234s 1949: | ios_base::uppercase); 234s 1949: __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase)); 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: typedef __gnu_cxx::__conditional_type<(sizeof(const void*) 234s 1949: <= sizeof(unsigned long)), 234s 1949: unsigned long, unsigned long long>::__type _UIntPtrType; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: __s = _M_insert_int(__s, __io, __fill, 234s 1949: reinterpret_cast<_UIntPtrType>(__v)); 234s 1949: __io.flags(__flags); 234s 1949: return __s; 234s 1949: } 234s 1949: # 1234 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 234s 1949: 234s 1949: # 1243 "/usr/include/c++/15/bits/locale_facets.tcc" 3 4 234s 1949: template 234s 1949: void 234s 1949: __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, 234s 1949: _CharT* __news, const _CharT* __olds, 234s 1949: streamsize __newlen, streamsize __oldlen) 234s 1949: { 234s 1949: const size_t __plen = static_cast(__newlen - __oldlen); 234s 1949: const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; 234s 1949: 234s 1949: 234s 1949: if (__adjust == ios_base::left) 234s 1949: { 234s 1949: _Traits::copy(__news, __olds, __oldlen); 234s 1949: _Traits::assign(__news + __oldlen, __plen, __fill); 234s 1949: return; 234s 1949: } 234s 1949: 234s 1949: size_t __mod = 0; 234s 1949: if (__adjust == ios_base::internal) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: 234s 1949: if (__ctype.widen('-') == __olds[0] 234s 1949: || __ctype.widen('+') == __olds[0]) 234s 1949: { 234s 1949: __news[0] = __olds[0]; 234s 1949: __mod = 1; 234s 1949: ++__news; 234s 1949: } 234s 1949: else if (__ctype.widen('0') == __olds[0] 234s 1949: && __oldlen > 1 234s 1949: && (__ctype.widen('x') == __olds[1] 234s 1949: || __ctype.widen('X') == __olds[1])) 234s 1949: { 234s 1949: __news[0] = __olds[0]; 234s 1949: __news[1] = __olds[1]; 234s 1949: __mod = 2; 234s 1949: __news += 2; 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: _Traits::assign(__news, __plen, __fill); 234s 1949: _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _CharT* 234s 1949: __add_grouping(_CharT* __s, _CharT __sep, 234s 1949: const char* __gbeg, size_t __gsize, 234s 1949: const _CharT* __first, const _CharT* __last) 234s 1949: { 234s 1949: size_t __idx = 0; 234s 1949: size_t __ctr = 0; 234s 1949: 234s 1949: while (__last - __first > __gbeg[__idx] 234s 1949: && static_cast(__gbeg[__idx]) > 0 234s 1949: && __gbeg[__idx] != __gnu_cxx::__numeric_traits::__max) 234s 1949: { 234s 1949: __last -= __gbeg[__idx]; 234s 1949: __idx < __gsize - 1 ? ++__idx : ++__ctr; 234s 1949: } 234s 1949: 234s 1949: while (__first != __last) 234s 1949: *__s++ = *__first++; 234s 1949: 234s 1949: while (__ctr--) 234s 1949: { 234s 1949: *__s++ = __sep; 234s 1949: for (char __i = __gbeg[__idx]; __i > 0; --__i) 234s 1949: *__s++ = *__first++; 234s 1949: } 234s 1949: 234s 1949: while (__idx--) 234s 1949: { 234s 1949: *__s++ = __sep; 234s 1949: for (char __i = __gbeg[__idx]; __i > 0; --__i) 234s 1949: *__s++ = *__first++; 234s 1949: } 234s 1949: 234s 1949: return __s; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template class __cxx11:: numpunct; 234s 1949: extern template class __cxx11:: numpunct_byname; 234s 1949: extern template class num_get; 234s 1949: extern template class num_put; 234s 1949: extern template class ctype_byname; 234s 1949: 234s 1949: extern template 234s 1949: const ctype* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const numpunct* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const num_put* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const num_get* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const ctype& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const numpunct& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const num_put& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const num_get& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: 234s 1949: extern template class __cxx11:: numpunct; 234s 1949: extern template class __cxx11:: numpunct_byname; 234s 1949: extern template class num_get; 234s 1949: extern template class num_put; 234s 1949: extern template class ctype_byname; 234s 1949: 234s 1949: extern template 234s 1949: const ctype* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const numpunct* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const num_put* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const num_get* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const ctype& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const numpunct& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const num_put& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const num_get& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 2702 "/usr/include/c++/15/bits/locale_facets.h" 2 3 4 234s 1949: # 40 "/usr/include/c++/15/bits/basic_ios.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline const _Facet& 234s 1949: __check_facet(const _Facet* __f) 234s 1949: { 234s 1949: if (!__f) 234s 1949: __throw_bad_cast(); 234s 1949: return *__f; 234s 1949: } 234s 1949: # 68 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: template 234s 1949: class basic_ios : public ios_base 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef typename _Traits::int_type int_type; 234s 1949: typedef typename _Traits::pos_type pos_type; 234s 1949: typedef typename _Traits::off_type off_type; 234s 1949: typedef _Traits traits_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef ctype<_CharT> __ctype_type; 234s 1949: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > 234s 1949: __num_put_type; 234s 1949: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > 234s 1949: __num_get_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: basic_ostream<_CharT, _Traits>* _M_tie; 234s 1949: mutable char_type _M_fill; 234s 1949: mutable bool _M_fill_init; 234s 1949: basic_streambuf<_CharT, _Traits>* _M_streambuf; 234s 1949: 234s 1949: 234s 1949: const __ctype_type* _M_ctype; 234s 1949: 234s 1949: const __num_put_type* _M_num_put; 234s 1949: 234s 1949: const __num_get_type* _M_num_get; 234s 1949: 234s 1949: public: 234s 1949: # 123 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: explicit operator bool() const 234s 1949: { return !this->fail(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: operator!() const 234s 1949: { return this->fail(); } 234s 1949: # 144 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: iostate 234s 1949: rdstate() const 234s 1949: { return _M_streambuf_state; } 234s 1949: # 156 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: void 234s 1949: clear(iostate __state = goodbit); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: setstate(iostate __state) 234s 1949: { this->clear(this->rdstate() | __state); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_setstate(iostate __state) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: _M_streambuf_state |= __state; 234s 1949: if (this->exceptions() & __state) 234s 1949: { throw; } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: good() const 234s 1949: { return this->rdstate() == 0; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: eof() const 234s 1949: { return (this->rdstate() & eofbit) != 0; } 234s 1949: # 211 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: fail() const 234s 1949: { return (this->rdstate() & (badbit | failbit)) != 0; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: bad() const 234s 1949: { return (this->rdstate() & badbit) != 0; } 234s 1949: # 234 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: iostate 234s 1949: exceptions() const 234s 1949: { return _M_exception; } 234s 1949: # 270 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: void 234s 1949: exceptions(iostate __except) 234s 1949: { 234s 1949: _M_exception = __except; 234s 1949: this->clear(_M_streambuf_state); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: basic_ios(basic_streambuf<_CharT, _Traits>* __sb) 234s 1949: : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), 234s 1949: _M_ctype(0), _M_num_put(0), _M_num_get(0) 234s 1949: { this->init(__sb); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual 234s 1949: ~basic_ios() { } 234s 1949: # 308 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: basic_ostream<_CharT, _Traits>* 234s 1949: tie() const 234s 1949: { return _M_tie; } 234s 1949: # 321 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: basic_ostream<_CharT, _Traits>* 234s 1949: tie(basic_ostream<_CharT, _Traits>* __tiestr) 234s 1949: { 234s 1949: basic_ostream<_CharT, _Traits>* __old = _M_tie; 234s 1949: _M_tie = __tiestr; 234s 1949: return __old; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: basic_streambuf<_CharT, _Traits>* 234s 1949: rdbuf() const 234s 1949: { return _M_streambuf; } 234s 1949: # 362 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: basic_streambuf<_CharT, _Traits>* 234s 1949: rdbuf(basic_streambuf<_CharT, _Traits>* __sb); 234s 1949: # 376 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: basic_ios& 234s 1949: copyfmt(const basic_ios& __rhs); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: char_type 234s 1949: fill() const 234s 1949: { 234s 1949: if (__builtin_expect(!_M_fill_init, false)) 234s 1949: return this->widen(' '); 234s 1949: return _M_fill; 234s 1949: } 234s 1949: # 403 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: char_type 234s 1949: fill(char_type __ch) 234s 1949: { 234s 1949: char_type __old = _M_fill; 234s 1949: _M_fill = __ch; 234s 1949: _M_fill_init = true; 234s 1949: return __old; 234s 1949: } 234s 1949: # 424 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: locale 234s 1949: imbue(const locale& __loc); 234s 1949: # 444 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: char 234s 1949: narrow(char_type __c, char __dfault) const 234s 1949: { return __check_facet(_M_ctype).narrow(__c, __dfault); } 234s 1949: # 463 "/usr/include/c++/15/bits/basic_ios.h" 3 4 234s 1949: char_type 234s 1949: widen(char __c) const 234s 1949: { return __check_facet(_M_ctype).widen(__c); } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_ios() 234s 1949: : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), 234s 1949: _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: init(basic_streambuf<_CharT, _Traits>* __sb); 234s 1949: 234s 1949: 234s 1949: basic_ios(const basic_ios&) = delete; 234s 1949: basic_ios& operator=(const basic_ios&) = delete; 234s 1949: 234s 1949: void 234s 1949: move(basic_ios& __rhs) 234s 1949: { 234s 1949: ios_base::_M_move(__rhs); 234s 1949: _M_cache_locale(_M_ios_locale); 234s 1949: this->tie(__rhs.tie(nullptr)); 234s 1949: _M_fill = __rhs._M_fill; 234s 1949: _M_fill_init = __rhs._M_fill_init; 234s 1949: _M_streambuf = nullptr; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: move(basic_ios&& __rhs) 234s 1949: { this->move(__rhs); } 234s 1949: 234s 1949: void 234s 1949: swap(basic_ios& __rhs) noexcept 234s 1949: { 234s 1949: ios_base::_M_swap(__rhs); 234s 1949: _M_cache_locale(_M_ios_locale); 234s 1949: __rhs._M_cache_locale(__rhs._M_ios_locale); 234s 1949: std::swap(_M_tie, __rhs._M_tie); 234s 1949: std::swap(_M_fill, __rhs._M_fill); 234s 1949: std::swap(_M_fill_init, __rhs._M_fill_init); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb) 234s 1949: { _M_streambuf = __sb; } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_cache_locale(const locale& __loc); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/basic_ios.tcc" 1 3 4 234s 1949: # 37 "/usr/include/c++/15/bits/basic_ios.tcc" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: basic_ios<_CharT, _Traits>::clear(iostate __state) 234s 1949: { 234s 1949: if (this->rdbuf()) 234s 1949: _M_streambuf_state = __state; 234s 1949: else 234s 1949: _M_streambuf_state = __state | badbit; 234s 1949: if (this->exceptions() & this->rdstate()) 234s 1949: __throw_ios_failure(("basic_ios::clear")); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_streambuf<_CharT, _Traits>* 234s 1949: basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) 234s 1949: { 234s 1949: basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; 234s 1949: _M_streambuf = __sb; 234s 1949: this->clear(); 234s 1949: return __old; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ios<_CharT, _Traits>& 234s 1949: basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (this != std::__addressof(__rhs)) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? 234s 1949: _M_local_word : new _Words[__rhs._M_word_size]; 234s 1949: 234s 1949: 234s 1949: _Callback_list* __cb = __rhs._M_callbacks; 234s 1949: if (__cb) 234s 1949: __cb->_M_add_reference(); 234s 1949: _M_call_callbacks(erase_event); 234s 1949: if (_M_word != _M_local_word) 234s 1949: { 234s 1949: delete [] _M_word; 234s 1949: _M_word = 0; 234s 1949: } 234s 1949: _M_dispose_callbacks(); 234s 1949: 234s 1949: 234s 1949: _M_callbacks = __cb; 234s 1949: for (int __i = 0; __i < __rhs._M_word_size; ++__i) 234s 1949: __words[__i] = __rhs._M_word[__i]; 234s 1949: _M_word = __words; 234s 1949: _M_word_size = __rhs._M_word_size; 234s 1949: 234s 1949: this->flags(__rhs.flags()); 234s 1949: this->width(__rhs.width()); 234s 1949: this->precision(__rhs.precision()); 234s 1949: this->tie(__rhs.tie()); 234s 1949: this->fill(__rhs.fill()); 234s 1949: _M_ios_locale = __rhs.getloc(); 234s 1949: _M_cache_locale(_M_ios_locale); 234s 1949: 234s 1949: _M_call_callbacks(copyfmt_event); 234s 1949: 234s 1949: 234s 1949: this->exceptions(__rhs.exceptions()); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: locale 234s 1949: basic_ios<_CharT, _Traits>::imbue(const locale& __loc) 234s 1949: { 234s 1949: locale __old(this->getloc()); 234s 1949: ios_base::imbue(__loc); 234s 1949: _M_cache_locale(__loc); 234s 1949: if (this->rdbuf() != 0) 234s 1949: this->rdbuf()->pubimbue(__loc); 234s 1949: return __old; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) 234s 1949: { 234s 1949: 234s 1949: ios_base::_M_init(); 234s 1949: 234s 1949: 234s 1949: _M_cache_locale(_M_ios_locale); 234s 1949: # 153 "/usr/include/c++/15/bits/basic_ios.tcc" 3 4 234s 1949: if (_M_ctype) 234s 1949: { 234s 1949: _M_fill = _M_ctype->widen(' '); 234s 1949: _M_fill_init = true; 234s 1949: } 234s 1949: else 234s 1949: _M_fill_init = false; 234s 1949: 234s 1949: _M_tie = 0; 234s 1949: _M_exception = goodbit; 234s 1949: _M_streambuf = __sb; 234s 1949: _M_streambuf_state = __sb ? goodbit : badbit; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) 234s 1949: { 234s 1949: _M_ctype = std::__try_use_facet<__ctype_type>(__loc); 234s 1949: _M_num_put = std::__try_use_facet<__num_put_type>(__loc); 234s 1949: _M_num_get = std::__try_use_facet<__num_get_type>(__loc); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template class basic_ios; 234s 1949: 234s 1949: 234s 1949: extern template class basic_ios; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 532 "/usr/include/c++/15/bits/basic_ios.h" 2 3 4 234s 1949: # 49 "/usr/include/c++/15/ios" 2 3 4 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 52 "/usr/include/c++/15/ios" 2 3 4 234s 1949: # 43 "/usr/include/c++/15/istream" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/ostream" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/ostream" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/ostream.h" 1 3 4 234s 1949: # 47 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 48 "/usr/include/c++/15/bits/ostream.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 65 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: template 234s 1949: class basic_ostream : virtual public basic_ios<_CharT, _Traits> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef typename _Traits::int_type int_type; 234s 1949: typedef typename _Traits::pos_type pos_type; 234s 1949: typedef typename _Traits::off_type off_type; 234s 1949: typedef _Traits traits_type; 234s 1949: 234s 1949: 234s 1949: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 234s 1949: typedef basic_ios<_CharT, _Traits> __ios_type; 234s 1949: typedef basic_ostream<_CharT, _Traits> __ostream_type; 234s 1949: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > 234s 1949: __num_put_type; 234s 1949: typedef ctype<_CharT> __ctype_type; 234s 1949: # 91 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: explicit 234s 1949: basic_ostream(__streambuf_type* __sb) 234s 1949: { this->init(__sb); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual 234s 1949: ~basic_ostream() { } 234s 1949: 234s 1949: 234s 1949: class sentry; 234s 1949: friend class sentry; 234s 1949: # 115 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: __ostream_type& 234s 1949: operator<<(__ostream_type& (*__pf)(__ostream_type&)) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return __pf(*this); 234s 1949: } 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(__ios_type& (*__pf)(__ios_type&)) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: __pf(*this); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(ios_base& (*__pf) (ios_base&)) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: __pf(*this); 234s 1949: return *this; 234s 1949: } 234s 1949: # 173 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: __ostream_type& 234s 1949: operator<<(long __n) 234s 1949: { return _M_insert(__n); } 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(unsigned long __n) 234s 1949: { return _M_insert(__n); } 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(bool __n) 234s 1949: { return _M_insert(__n); } 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(short __n); 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(unsigned short __n) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: return _M_insert(static_cast(__n)); 234s 1949: } 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(int __n); 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(unsigned int __n) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: return _M_insert(static_cast(__n)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: __ostream_type& 234s 1949: operator<<(long long __n) 234s 1949: { return _M_insert(__n); } 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(unsigned long long __n) 234s 1949: { return _M_insert(__n); } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 230 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: __ostream_type& 234s 1949: operator<<(double __f) 234s 1949: { return _M_insert(__f); } 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(float __f) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: return _M_insert(_S_cast_flt(__f)); 234s 1949: } 234s 1949: 234s 1949: __ostream_type& 234s 1949: operator<<(long double __f) 234s 1949: { return _M_insert(__f); } 234s 1949: # 300 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: __ostream_type& 234s 1949: operator<<(const void* __p) 234s 1949: { return _M_insert(__p); } 234s 1949: # 338 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: __ostream_type& 234s 1949: operator<<(__streambuf_type* __sb); 234s 1949: # 371 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: __ostream_type& 234s 1949: put(char_type __c); 234s 1949: # 390 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: __ostream_type& 234s 1949: write(const char_type* __s, streamsize __n); 234s 1949: # 403 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: __ostream_type& 234s 1949: flush(); 234s 1949: # 413 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: pos_type 234s 1949: tellp(); 234s 1949: # 424 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: __ostream_type& 234s 1949: seekp(pos_type); 234s 1949: # 436 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: __ostream_type& 234s 1949: seekp(off_type, ios_base::seekdir); 234s 1949: 234s 1949: protected: 234s 1949: basic_ostream() 234s 1949: { this->init(0); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_ostream(basic_iostream<_CharT, _Traits>&) { } 234s 1949: 234s 1949: basic_ostream(const basic_ostream&) = delete; 234s 1949: 234s 1949: basic_ostream(basic_ostream&& __rhs) 234s 1949: : __ios_type() 234s 1949: { __ios_type::move(__rhs); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_ostream& operator=(const basic_ostream&) = delete; 234s 1949: 234s 1949: basic_ostream& 234s 1949: operator=(basic_ostream&& __rhs) 234s 1949: { 234s 1949: swap(__rhs); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(basic_ostream& __rhs) 234s 1949: { __ios_type::swap(__rhs); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __ostream_type& 234s 1949: _M_insert(_ValueT __v); 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: void 234s 1949: _M_write(const char_type* __s, streamsize __n) 234s 1949: { std::__ostream_insert(*this, __s, __n); } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: static _To 234s 1949: _S_cast_flt(_From __f) 234s 1949: { 234s 1949: _To __d = static_cast<_To>(__f); 234s 1949: # 507 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: return __d; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: struct _Disable_exceptions 234s 1949: { 234s 1949: _Disable_exceptions(basic_ostream& __os) 234s 1949: : _M_os(__os), _M_exception(_M_os._M_exception) 234s 1949: { _M_os._M_exception = ios_base::goodbit; } 234s 1949: 234s 1949: ~_Disable_exceptions() 234s 1949: { _M_os._M_exception = _M_exception; } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: _Disable_exceptions(const _Disable_exceptions&) = delete; 234s 1949: _Disable_exceptions& operator=(const _Disable_exceptions&) = delete; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: private: 234s 1949: basic_ostream& _M_os; 234s 1949: const ios_base::iostate _M_exception; 234s 1949: }; 234s 1949: }; 234s 1949: # 540 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: template 234s 1949: class basic_ostream<_CharT, _Traits>::sentry 234s 1949: { 234s 1949: 234s 1949: bool _M_ok; 234s 1949: basic_ostream<_CharT, _Traits>& _M_os; 234s 1949: 234s 1949: public: 234s 1949: # 559 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: explicit 234s 1949: sentry(basic_ostream<_CharT, _Traits>& __os); 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ~sentry() 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (bool(_M_os.flags() & ios_base::unitbuf) && _M_os.good() 234s 1949: && !uncaught_exception()) 234s 1949: { 234s 1949: _Disable_exceptions __noex(_M_os); 234s 1949: try 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) 234s 1949: _M_os.setstate(ios_base::badbit); 234s 1949: } 234s 1949: catch(...) 234s 1949: { _M_os.setstate(ios_base::badbit); } 234s 1949: } 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 602 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: explicit 234s 1949: 234s 1949: operator bool() const 234s 1949: { return _M_ok; } 234s 1949: }; 234s 1949: # 624 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) 234s 1949: { 234s 1949: if (__out.width() != 0) 234s 1949: return __ostream_insert(__out, &__c, 1); 234s 1949: __out.put(__c); 234s 1949: return __out; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) 234s 1949: { return (__out << __out.widen(__c)); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream& 234s 1949: operator<<(basic_ostream& __out, char __c) 234s 1949: { 234s 1949: if (__out.width() != 0) 234s 1949: return __ostream_insert(__out, &__c, 1); 234s 1949: __out.put(__c); 234s 1949: return __out; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream& 234s 1949: operator<<(basic_ostream& __out, signed char __c) 234s 1949: { return (__out << static_cast(__c)); } 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream& 234s 1949: operator<<(basic_ostream& __out, unsigned char __c) 234s 1949: { return (__out << static_cast(__c)); } 234s 1949: # 715 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) 234s 1949: { 234s 1949: if (!__s) 234s 1949: __out.setstate(ios_base::badbit); 234s 1949: else 234s 1949: __ostream_insert(__out, __s, 234s 1949: static_cast(_Traits::length(__s))); 234s 1949: return __out; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits> & 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream& 234s 1949: operator<<(basic_ostream& __out, const char* __s) 234s 1949: { 234s 1949: if (!__s) 234s 1949: __out.setstate(ios_base::badbit); 234s 1949: else 234s 1949: __ostream_insert(__out, __s, 234s 1949: static_cast(_Traits::length(__s))); 234s 1949: return __out; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream& 234s 1949: operator<<(basic_ostream& __out, const signed char* __s) 234s 1949: { return (__out << reinterpret_cast(__s)); } 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream & 234s 1949: operator<<(basic_ostream& __out, const unsigned char* __s) 234s 1949: { return (__out << reinterpret_cast(__s)); } 234s 1949: # 812 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: template 234s 1949: using _Require_derived_from_ios_base 234s 1949: = _Require, __not_>, 234s 1949: is_convertible::type, ios_base*>>; 234s 1949: 234s 1949: template, 234s 1949: typename 234s 1949: = decltype(std::declval<_Os&>() << std::declval())> 234s 1949: using __rvalue_stream_insertion_t = _Os&&; 234s 1949: # 834 "/usr/include/c++/15/bits/ostream.h" 3 4 234s 1949: template 234s 1949: inline __rvalue_stream_insertion_t<_Ostream, _Tp> 234s 1949: operator<<(_Ostream&& __os, const _Tp& __x) 234s 1949: { 234s 1949: __os << __x; 234s 1949: return std::move(__os); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 43 "/usr/include/c++/15/ostream" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 49 "/usr/include/c++/15/ostream" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 64 "/usr/include/c++/15/ostream" 3 4 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: endl(basic_ostream<_CharT, _Traits>& __os) 234s 1949: { return flush(__os.put(__os.widen('\n'))); } 234s 1949: # 76 "/usr/include/c++/15/ostream" 3 4 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: ends(basic_ostream<_CharT, _Traits>& __os) 234s 1949: { return __os.put(_CharT()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: flush(basic_ostream<_CharT, _Traits>& __os) 234s 1949: { return __os.flush(); } 234s 1949: # 291 "/usr/include/c++/15/ostream" 3 4 234s 1949: 234s 1949: } 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/ostream.tcc" 1 3 4 234s 1949: # 40 "/usr/include/c++/15/bits/ostream.tcc" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>::sentry:: 234s 1949: sentry(basic_ostream<_CharT, _Traits>& __os) 234s 1949: : _M_ok(false), _M_os(__os) 234s 1949: { 234s 1949: 234s 1949: if (__os.tie() && __os.good()) 234s 1949: __os.tie()->flush(); 234s 1949: 234s 1949: if (__os.good()) 234s 1949: _M_ok = true; 234s 1949: else if (__os.bad()) 234s 1949: __os.setstate(ios_base::failbit); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: basic_ostream<_CharT, _Traits>:: 234s 1949: _M_insert(_ValueT __v) 234s 1949: { 234s 1949: sentry __cerb(*this); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: 234s 1949: const __num_put_type& __np = __check_facet(this->_M_num_put); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__np.put(*this, *this, this->fill(), __v).failed()) 234s 1949: __err |= ios_base::badbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: basic_ostream<_CharT, _Traits>:: 234s 1949: operator<<(short __n) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; 234s 1949: if (__fmt == ios_base::oct || __fmt == ios_base::hex) 234s 1949: return _M_insert(static_cast(static_cast(__n))); 234s 1949: else 234s 1949: return _M_insert(static_cast(__n)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: basic_ostream<_CharT, _Traits>:: 234s 1949: operator<<(int __n) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; 234s 1949: if (__fmt == ios_base::oct || __fmt == ios_base::hex) 234s 1949: return _M_insert(static_cast(static_cast(__n))); 234s 1949: else 234s 1949: return _M_insert(static_cast(__n)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: basic_ostream<_CharT, _Traits>:: 234s 1949: operator<<(__streambuf_type* __sbin) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: sentry __cerb(*this); 234s 1949: if (__cerb && __sbin) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: if (!__copy_streambufs(__sbin, this->rdbuf())) 234s 1949: __err |= ios_base::failbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::failbit); } 234s 1949: } 234s 1949: else if (!__sbin) 234s 1949: __err |= ios_base::badbit; 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: basic_ostream<_CharT, _Traits>:: 234s 1949: put(char_type __c) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: sentry __cerb(*this); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: const int_type __put = this->rdbuf()->sputc(__c); 234s 1949: if (traits_type::eq_int_type(__put, traits_type::eof())) 234s 1949: __err |= ios_base::badbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: basic_ostream<_CharT, _Traits>:: 234s 1949: write(const _CharT* __s, streamsize __n) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: sentry __cerb(*this); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: if (this->rdbuf()->sputn(__s, __n) != __n) 234s 1949: __err = ios_base::badbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(ios_base::badbit); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: basic_ostream<_CharT, _Traits>:: 234s 1949: flush() 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__streambuf_type* __buf = this->rdbuf()) 234s 1949: { 234s 1949: sentry __cerb(*this); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: if (this->rdbuf()->pubsync() == -1) 234s 1949: __err |= ios_base::badbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_ostream<_CharT, _Traits>::pos_type 234s 1949: basic_ostream<_CharT, _Traits>:: 234s 1949: tellp() 234s 1949: { 234s 1949: sentry __cerb(*this); 234s 1949: pos_type __ret = pos_type(-1); 234s 1949: if (!this->fail()) 234s 1949: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: basic_ostream<_CharT, _Traits>:: 234s 1949: seekp(pos_type __pos) 234s 1949: { 234s 1949: sentry __cerb(*this); 234s 1949: if (!this->fail()) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const pos_type __p = this->rdbuf()->pubseekpos(__pos, ios_base::out); 234s 1949: 234s 1949: 234s 1949: if (__p == pos_type(off_type(-1))) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: basic_ostream<_CharT, _Traits>:: 234s 1949: seekp(off_type __off, ios_base::seekdir __dir) 234s 1949: { 234s 1949: sentry __cerb(*this); 234s 1949: if (!this->fail()) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, 234s 1949: ios_base::out); 234s 1949: 234s 1949: 234s 1949: if (__p == pos_type(off_type(-1))) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) 234s 1949: { 234s 1949: if (!__s) 234s 1949: __out.setstate(ios_base::badbit); 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const size_t __clen = char_traits::length(__s); 234s 1949: try 234s 1949: { 234s 1949: struct __ptr_guard 234s 1949: { 234s 1949: _CharT *__p; 234s 1949: __ptr_guard (_CharT *__ip): __p(__ip) { } 234s 1949: ~__ptr_guard() { delete[] __p; } 234s 1949: _CharT* __get() { return __p; } 234s 1949: } __pg (new _CharT[__clen]); 234s 1949: 234s 1949: _CharT *__ws = __pg.__get(); 234s 1949: for (size_t __i = 0; __i < __clen; ++__i) 234s 1949: __ws[__i] = __out.widen(__s[__i]); 234s 1949: __ostream_insert(__out, __ws, __clen); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __out._M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { __out._M_setstate(ios_base::badbit); } 234s 1949: } 234s 1949: return __out; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template class basic_ostream; 234s 1949: extern template ostream& endl(ostream&); 234s 1949: extern template ostream& ends(ostream&); 234s 1949: extern template ostream& flush(ostream&); 234s 1949: extern template ostream& operator<<(ostream&, char); 234s 1949: extern template ostream& operator<<(ostream&, unsigned char); 234s 1949: extern template ostream& operator<<(ostream&, signed char); 234s 1949: extern template ostream& operator<<(ostream&, const char*); 234s 1949: extern template ostream& operator<<(ostream&, const unsigned char*); 234s 1949: extern template ostream& operator<<(ostream&, const signed char*); 234s 1949: 234s 1949: extern template ostream& ostream::_M_insert(long); 234s 1949: extern template ostream& ostream::_M_insert(unsigned long); 234s 1949: extern template ostream& ostream::_M_insert(bool); 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: extern template ostream& ostream::_M_insert(long long); 234s 1949: extern template ostream& ostream::_M_insert(unsigned long long); 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: extern template ostream& ostream::_M_insert(double); 234s 1949: extern template ostream& ostream::_M_insert(long double); 234s 1949: extern template ostream& ostream::_M_insert(const void*); 234s 1949: 234s 1949: 234s 1949: extern template class basic_ostream; 234s 1949: extern template wostream& endl(wostream&); 234s 1949: extern template wostream& ends(wostream&); 234s 1949: extern template wostream& flush(wostream&); 234s 1949: extern template wostream& operator<<(wostream&, wchar_t); 234s 1949: extern template wostream& operator<<(wostream&, char); 234s 1949: extern template wostream& operator<<(wostream&, const wchar_t*); 234s 1949: extern template wostream& operator<<(wostream&, const char*); 234s 1949: 234s 1949: extern template wostream& wostream::_M_insert(long); 234s 1949: extern template wostream& wostream::_M_insert(unsigned long); 234s 1949: extern template wostream& wostream::_M_insert(bool); 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: extern template wostream& wostream::_M_insert(long long); 234s 1949: extern template wostream& wostream::_M_insert(unsigned long long); 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: extern template wostream& wostream::_M_insert(double); 234s 1949: extern template wostream& wostream::_M_insert(long double); 234s 1949: extern template wostream& wostream::_M_insert(const void*); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 295 "/usr/include/c++/15/ostream" 2 3 4 234s 1949: # 44 "/usr/include/c++/15/istream" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 61 "/usr/include/c++/15/istream" 3 4 234s 1949: template 234s 1949: class basic_istream : virtual public basic_ios<_CharT, _Traits> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef typename _Traits::int_type int_type; 234s 1949: typedef typename _Traits::pos_type pos_type; 234s 1949: typedef typename _Traits::off_type off_type; 234s 1949: typedef _Traits traits_type; 234s 1949: 234s 1949: 234s 1949: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 234s 1949: typedef basic_ios<_CharT, _Traits> __ios_type; 234s 1949: typedef basic_istream<_CharT, _Traits> __istream_type; 234s 1949: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > 234s 1949: __num_get_type; 234s 1949: typedef ctype<_CharT> __ctype_type; 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: streamsize _M_gcount; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: basic_istream(__streambuf_type* __sb) 234s 1949: : _M_gcount(streamsize(0)) 234s 1949: { this->init(__sb); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual 234s 1949: ~basic_istream() 234s 1949: { _M_gcount = streamsize(0); } 234s 1949: 234s 1949: 234s 1949: class sentry; 234s 1949: friend class sentry; 234s 1949: # 123 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: operator>>(__istream_type& (*__pf)(__istream_type&)) 234s 1949: { return __pf(*this); } 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(__ios_type& (*__pf)(__ios_type&)) 234s 1949: { 234s 1949: __pf(*this); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(ios_base& (*__pf)(ios_base&)) 234s 1949: { 234s 1949: __pf(*this); 234s 1949: return *this; 234s 1949: } 234s 1949: # 171 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: operator>>(bool& __n) 234s 1949: { return _M_extract(__n); } 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(short& __n); 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(unsigned short& __n) 234s 1949: { return _M_extract(__n); } 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(int& __n); 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(unsigned int& __n) 234s 1949: { return _M_extract(__n); } 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(long& __n) 234s 1949: { return _M_extract(__n); } 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(unsigned long& __n) 234s 1949: { return _M_extract(__n); } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: __istream_type& 234s 1949: operator>>(long long& __n) 234s 1949: { return _M_extract(__n); } 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(unsigned long long& __n) 234s 1949: { return _M_extract(__n); } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 220 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: operator>>(float& __f) 234s 1949: { return _M_extract(__f); } 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(double& __f) 234s 1949: { return _M_extract(__f); } 234s 1949: 234s 1949: __istream_type& 234s 1949: operator>>(long double& __f) 234s 1949: { return _M_extract(__f); } 234s 1949: # 329 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: operator>>(void*& __p) 234s 1949: { return _M_extract(__p); } 234s 1949: # 353 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: operator>>(__streambuf_type* __sb); 234s 1949: # 363 "/usr/include/c++/15/istream" 3 4 234s 1949: streamsize 234s 1949: gcount() const 234s 1949: { return _M_gcount; } 234s 1949: # 396 "/usr/include/c++/15/istream" 3 4 234s 1949: int_type 234s 1949: get(); 234s 1949: # 410 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: get(char_type& __c); 234s 1949: # 437 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: get(char_type* __s, streamsize __n, char_type __delim); 234s 1949: # 448 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: get(char_type* __s, streamsize __n) 234s 1949: { return this->get(__s, __n, this->widen('\n')); } 234s 1949: # 471 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: get(__streambuf_type& __sb, char_type __delim); 234s 1949: # 481 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: get(__streambuf_type& __sb) 234s 1949: { return this->get(__sb, this->widen('\n')); } 234s 1949: # 510 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: getline(char_type* __s, streamsize __n, char_type __delim); 234s 1949: # 521 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: getline(char_type* __s, streamsize __n) 234s 1949: { return this->getline(__s, __n, this->widen('\n')); } 234s 1949: # 545 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: ignore(streamsize __n, int_type __delim); 234s 1949: 234s 1949: __istream_type& 234s 1949: ignore(streamsize __n); 234s 1949: 234s 1949: __istream_type& 234s 1949: ignore(); 234s 1949: # 562 "/usr/include/c++/15/istream" 3 4 234s 1949: int_type 234s 1949: peek(); 234s 1949: # 580 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: read(char_type* __s, streamsize __n); 234s 1949: # 599 "/usr/include/c++/15/istream" 3 4 234s 1949: streamsize 234s 1949: readsome(char_type* __s, streamsize __n); 234s 1949: # 616 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: putback(char_type __c); 234s 1949: # 632 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: unget(); 234s 1949: # 650 "/usr/include/c++/15/istream" 3 4 234s 1949: int 234s 1949: sync(); 234s 1949: # 665 "/usr/include/c++/15/istream" 3 4 234s 1949: pos_type 234s 1949: tellg(); 234s 1949: # 680 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: seekg(pos_type); 234s 1949: # 696 "/usr/include/c++/15/istream" 3 4 234s 1949: __istream_type& 234s 1949: seekg(off_type, ios_base::seekdir); 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: basic_istream() 234s 1949: : _M_gcount(streamsize(0)) 234s 1949: { this->init(0); } 234s 1949: 234s 1949: 234s 1949: basic_istream(const basic_istream&) = delete; 234s 1949: 234s 1949: basic_istream(basic_istream&& __rhs) 234s 1949: : __ios_type(), _M_gcount(__rhs._M_gcount) 234s 1949: { 234s 1949: __ios_type::move(__rhs); 234s 1949: __rhs._M_gcount = 0; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_istream& operator=(const basic_istream&) = delete; 234s 1949: 234s 1949: basic_istream& 234s 1949: operator=(basic_istream&& __rhs) 234s 1949: { 234s 1949: swap(__rhs); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(basic_istream& __rhs) 234s 1949: { 234s 1949: __ios_type::swap(__rhs); 234s 1949: std::swap(_M_gcount, __rhs._M_gcount); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __istream_type& 234s 1949: _M_extract(_ValueT& __v); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: basic_istream& 234s 1949: basic_istream:: 234s 1949: getline(char_type* __s, streamsize __n, char_type __delim); 234s 1949: 234s 1949: template<> 234s 1949: basic_istream& 234s 1949: basic_istream:: 234s 1949: ignore(streamsize __n); 234s 1949: 234s 1949: template<> 234s 1949: basic_istream& 234s 1949: basic_istream:: 234s 1949: ignore(streamsize __n, int_type __delim); 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: basic_istream& 234s 1949: basic_istream:: 234s 1949: getline(char_type* __s, streamsize __n, char_type __delim); 234s 1949: 234s 1949: template<> 234s 1949: basic_istream& 234s 1949: basic_istream:: 234s 1949: ignore(streamsize __n); 234s 1949: 234s 1949: template<> 234s 1949: basic_istream& 234s 1949: basic_istream:: 234s 1949: ignore(streamsize __n, int_type __delim); 234s 1949: # 780 "/usr/include/c++/15/istream" 3 4 234s 1949: template 234s 1949: class basic_istream<_CharT, _Traits>::sentry 234s 1949: { 234s 1949: 234s 1949: bool _M_ok; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: typedef _Traits traits_type; 234s 1949: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 234s 1949: typedef basic_istream<_CharT, _Traits> __istream_type; 234s 1949: typedef typename __istream_type::__ctype_type __ctype_type; 234s 1949: typedef typename _Traits::int_type __int_type; 234s 1949: # 816 "/usr/include/c++/15/istream" 3 4 234s 1949: explicit 234s 1949: sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); 234s 1949: # 827 "/usr/include/c++/15/istream" 3 4 234s 1949: explicit 234s 1949: 234s 1949: operator bool() const 234s 1949: { return _M_ok; } 234s 1949: }; 234s 1949: # 845 "/usr/include/c++/15/istream" 3 4 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); 234s 1949: 234s 1949: template 234s 1949: inline basic_istream& 234s 1949: operator>>(basic_istream& __in, unsigned char& __c) 234s 1949: { return (__in >> reinterpret_cast(__c)); } 234s 1949: 234s 1949: template 234s 1949: inline basic_istream& 234s 1949: operator>>(basic_istream& __in, signed char& __c) 234s 1949: { return (__in >> reinterpret_cast(__c)); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __istream_extract(basic_istream<_CharT, _Traits>&, _CharT*, streamsize); 234s 1949: 234s 1949: void __istream_extract(istream&, char*, streamsize); 234s 1949: # 895 "/usr/include/c++/15/istream" 3 4 234s 1949: template 234s 1949: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) 234s 1949: inline basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_t __n = __builtin_object_size(__s, 0); 234s 1949: if (__n < sizeof(_CharT)) 234s 1949: { 234s 1949: 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__n >= sizeof(_CharT))) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: __in.width(0); 234s 1949: __in.setstate(ios_base::failbit); 234s 1949: } 234s 1949: else if (__n != (size_t)-1) 234s 1949: { 234s 1949: __n /= sizeof(_CharT); 234s 1949: streamsize __w = __in.width(); 234s 1949: std::__istream_extract(__in, __s, __n); 234s 1949: if (__in.good() && (__w <= 0 || __n < (size_t)__w)) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const typename _Traits::int_type __c = __in.rdbuf()->sgetc(); 234s 1949: const bool __eof = _Traits::eq_int_type(__c, _Traits::eof()); 234s 1949: if (__builtin_expect(__eof, true)) 234s 1949: __in.setstate(ios_base::eofbit); 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: 234s 1949: { 234s 1949: 234s 1949: streamsize __n = __gnu_cxx::__numeric_traits::__max; 234s 1949: __n /= sizeof(_CharT); 234s 1949: std::__istream_extract(__in, __s, __n); 234s 1949: } 234s 1949: return __in; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) 234s 1949: inline basic_istream& 234s 1949: operator>>(basic_istream& __in, unsigned char* __s) 234s 1949: { return __in >> reinterpret_cast(__s); } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) 234s 1949: inline basic_istream& 234s 1949: operator>>(basic_istream& __in, signed char* __s) 234s 1949: { return __in >> reinterpret_cast(__s); } 234s 1949: # 984 "/usr/include/c++/15/istream" 3 4 234s 1949: template 234s 1949: class basic_iostream 234s 1949: : public basic_istream<_CharT, _Traits>, 234s 1949: public basic_ostream<_CharT, _Traits> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef typename _Traits::int_type int_type; 234s 1949: typedef typename _Traits::pos_type pos_type; 234s 1949: typedef typename _Traits::off_type off_type; 234s 1949: typedef _Traits traits_type; 234s 1949: 234s 1949: 234s 1949: typedef basic_istream<_CharT, _Traits> __istream_type; 234s 1949: typedef basic_ostream<_CharT, _Traits> __ostream_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) 234s 1949: : __istream_type(__sb), __ostream_type(__sb) { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual 234s 1949: ~basic_iostream() { } 234s 1949: 234s 1949: protected: 234s 1949: basic_iostream() 234s 1949: : __istream_type(), __ostream_type() { } 234s 1949: 234s 1949: 234s 1949: basic_iostream(const basic_iostream&) = delete; 234s 1949: 234s 1949: basic_iostream(basic_iostream&& __rhs) 234s 1949: : __istream_type(std::move(__rhs)), __ostream_type(*this) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_iostream& operator=(const basic_iostream&) = delete; 234s 1949: 234s 1949: basic_iostream& 234s 1949: operator=(basic_iostream&& __rhs) 234s 1949: { 234s 1949: swap(__rhs); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(basic_iostream& __rhs) 234s 1949: { __istream_type::swap(__rhs); } 234s 1949: 234s 1949: }; 234s 1949: # 1067 "/usr/include/c++/15/istream" 3 4 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: ws(basic_istream<_CharT, _Traits>& __is); 234s 1949: # 1083 "/usr/include/c++/15/istream" 3 4 234s 1949: template, 234s 1949: typename = decltype(std::declval<_Is&>() >> std::declval<_Tp>())> 234s 1949: using __rvalue_stream_extraction_t = _Is&&; 234s 1949: # 1099 "/usr/include/c++/15/istream" 3 4 234s 1949: template 234s 1949: inline __rvalue_stream_extraction_t<_Istream, _Tp> 234s 1949: operator>>(_Istream&& __is, _Tp&& __x) 234s 1949: { 234s 1949: __is >> std::forward<_Tp>(__x); 234s 1949: return std::move(__is); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/istream.tcc" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/bits/istream.tcc" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>::sentry:: 234s 1949: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: if (__in.good()) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: if (__in.tie()) 234s 1949: __in.tie()->flush(); 234s 1949: if (!__noskip && bool(__in.flags() & ios_base::skipws)) 234s 1949: { 234s 1949: const __int_type __eof = traits_type::eof(); 234s 1949: __streambuf_type* __sb = __in.rdbuf(); 234s 1949: __int_type __c = __sb->sgetc(); 234s 1949: 234s 1949: const __ctype_type& __ct = __check_facet(__in._M_ctype); 234s 1949: while (!traits_type::eq_int_type(__c, __eof) 234s 1949: && __ct.is(ctype_base::space, 234s 1949: traits_type::to_char_type(__c))) 234s 1949: __c = __sb->snextc(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (traits_type::eq_int_type(__c, __eof)) 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __in._M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { __in._M_setstate(ios_base::badbit); } 234s 1949: } 234s 1949: 234s 1949: if (__in.good() && __err == ios_base::goodbit) 234s 1949: _M_ok = true; 234s 1949: else 234s 1949: { 234s 1949: __err |= ios_base::failbit; 234s 1949: __in.setstate(__err); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: _M_extract(_ValueT& __v) 234s 1949: { 234s 1949: sentry __cerb(*this, false); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: 234s 1949: const __num_get_type& __ng = __check_facet(this->_M_num_get); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __ng.get(*this, 0, *this, __err, __v); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: operator>>(short& __n) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: sentry __cerb(*this, false); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: long __l; 234s 1949: 234s 1949: const __num_get_type& __ng = __check_facet(this->_M_num_get); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __ng.get(*this, 0, *this, __err, __l); 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__l < __gnu_cxx::__numeric_traits::__min) 234s 1949: { 234s 1949: __err |= ios_base::failbit; 234s 1949: __n = __gnu_cxx::__numeric_traits::__min; 234s 1949: } 234s 1949: else if (__l > __gnu_cxx::__numeric_traits::__max) 234s 1949: { 234s 1949: __err |= ios_base::failbit; 234s 1949: __n = __gnu_cxx::__numeric_traits::__max; 234s 1949: } 234s 1949: else 234s 1949: __n = short(__l); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: operator>>(int& __n) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: sentry __cerb(*this, false); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: long __l; 234s 1949: 234s 1949: const __num_get_type& __ng = __check_facet(this->_M_num_get); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __ng.get(*this, 0, *this, __err, __l); 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__l < __gnu_cxx::__numeric_traits::__min) 234s 1949: { 234s 1949: __err |= ios_base::failbit; 234s 1949: __n = __gnu_cxx::__numeric_traits::__min; 234s 1949: } 234s 1949: else if (__l > __gnu_cxx::__numeric_traits::__max) 234s 1949: { 234s 1949: __err |= ios_base::failbit; 234s 1949: __n = __gnu_cxx::__numeric_traits::__max; 234s 1949: } 234s 1949: else 234s 1949: __n = int(__l); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: operator>>(__streambuf_type* __sbout) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: sentry __cerb(*this, false); 234s 1949: if (__cerb && __sbout) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: bool __ineof; 234s 1949: if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) 234s 1949: __err |= ios_base::failbit; 234s 1949: if (__ineof) 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::failbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::failbit); } 234s 1949: } 234s 1949: else if (!__sbout) 234s 1949: __err |= ios_base::failbit; 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_istream<_CharT, _Traits>::int_type 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: get(void) 234s 1949: { 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: int_type __c = __eof; 234s 1949: _M_gcount = 0; 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: __c = this->rdbuf()->sbumpc(); 234s 1949: 234s 1949: if (!traits_type::eq_int_type(__c, __eof)) 234s 1949: _M_gcount = 1; 234s 1949: else 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: } 234s 1949: if (!_M_gcount) 234s 1949: __err |= ios_base::failbit; 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: return __c; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: get(char_type& __c) 234s 1949: { 234s 1949: _M_gcount = 0; 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: const int_type __cb = this->rdbuf()->sbumpc(); 234s 1949: 234s 1949: if (!traits_type::eq_int_type(__cb, traits_type::eof())) 234s 1949: { 234s 1949: _M_gcount = 1; 234s 1949: __c = traits_type::to_char_type(__cb); 234s 1949: } 234s 1949: else 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: } 234s 1949: if (!_M_gcount) 234s 1949: __err |= ios_base::failbit; 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: get(char_type* __s, streamsize __n, char_type __delim) 234s 1949: { 234s 1949: _M_gcount = 0; 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: const int_type __idelim = traits_type::to_int_type(__delim); 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: __streambuf_type* __sb = this->rdbuf(); 234s 1949: int_type __c = __sb->sgetc(); 234s 1949: 234s 1949: while (_M_gcount + 1 < __n 234s 1949: && !traits_type::eq_int_type(__c, __eof) 234s 1949: && !traits_type::eq_int_type(__c, __idelim)) 234s 1949: { 234s 1949: *__s++ = traits_type::to_char_type(__c); 234s 1949: ++_M_gcount; 234s 1949: __c = __sb->snextc(); 234s 1949: } 234s 1949: if (traits_type::eq_int_type(__c, __eof)) 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (__n > 0) 234s 1949: *__s = char_type(); 234s 1949: if (!_M_gcount) 234s 1949: __err |= ios_base::failbit; 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: get(__streambuf_type& __sb, char_type __delim) 234s 1949: { 234s 1949: _M_gcount = 0; 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: const int_type __idelim = traits_type::to_int_type(__delim); 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: __streambuf_type* __this_sb = this->rdbuf(); 234s 1949: int_type __c = __this_sb->sgetc(); 234s 1949: char_type __c2 = traits_type::to_char_type(__c); 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: unsigned long long __gcount = 0; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: while (!traits_type::eq_int_type(__c, __eof) 234s 1949: && !traits_type::eq_int_type(__c, __idelim) 234s 1949: && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) 234s 1949: { 234s 1949: ++__gcount; 234s 1949: __c = __this_sb->snextc(); 234s 1949: __c2 = traits_type::to_char_type(__c); 234s 1949: } 234s 1949: if (traits_type::eq_int_type(__c, __eof)) 234s 1949: __err |= ios_base::eofbit; 234s 1949: 234s 1949: 234s 1949: if (__gcount <= __gnu_cxx::__numeric_traits::__max) 234s 1949: _M_gcount = __gcount; 234s 1949: else 234s 1949: _M_gcount = __gnu_cxx::__numeric_traits::__max; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: } 234s 1949: if (!_M_gcount) 234s 1949: __err |= ios_base::failbit; 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: getline(char_type* __s, streamsize __n, char_type __delim) 234s 1949: { 234s 1949: _M_gcount = 0; 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: const int_type __idelim = traits_type::to_int_type(__delim); 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: __streambuf_type* __sb = this->rdbuf(); 234s 1949: int_type __c = __sb->sgetc(); 234s 1949: 234s 1949: while (_M_gcount + 1 < __n 234s 1949: && !traits_type::eq_int_type(__c, __eof) 234s 1949: && !traits_type::eq_int_type(__c, __idelim)) 234s 1949: { 234s 1949: *__s++ = traits_type::to_char_type(__c); 234s 1949: __c = __sb->snextc(); 234s 1949: ++_M_gcount; 234s 1949: } 234s 1949: if (traits_type::eq_int_type(__c, __eof)) 234s 1949: __err |= ios_base::eofbit; 234s 1949: else 234s 1949: { 234s 1949: if (traits_type::eq_int_type(__c, __idelim)) 234s 1949: { 234s 1949: __sb->sbumpc(); 234s 1949: ++_M_gcount; 234s 1949: } 234s 1949: else 234s 1949: __err |= ios_base::failbit; 234s 1949: } 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (__n > 0) 234s 1949: *__s = char_type(); 234s 1949: if (!_M_gcount) 234s 1949: __err |= ios_base::failbit; 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: ignore(void) 234s 1949: { 234s 1949: _M_gcount = 0; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: __streambuf_type* __sb = this->rdbuf(); 234s 1949: 234s 1949: if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) 234s 1949: __err |= ios_base::eofbit; 234s 1949: else 234s 1949: _M_gcount = 1; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: ignore(streamsize __n) 234s 1949: { 234s 1949: _M_gcount = 0; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb && __n > 0) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: __streambuf_type* __sb = this->rdbuf(); 234s 1949: int_type __c = __sb->sgetc(); 234s 1949: # 553 "/usr/include/c++/15/bits/istream.tcc" 3 4 234s 1949: bool __large_ignore = false; 234s 1949: while (true) 234s 1949: { 234s 1949: while (_M_gcount < __n 234s 1949: && !traits_type::eq_int_type(__c, __eof)) 234s 1949: { 234s 1949: ++_M_gcount; 234s 1949: __c = __sb->snextc(); 234s 1949: } 234s 1949: if (__n == __gnu_cxx::__numeric_traits::__max 234s 1949: && !traits_type::eq_int_type(__c, __eof)) 234s 1949: { 234s 1949: _M_gcount = 234s 1949: __gnu_cxx::__numeric_traits::__min; 234s 1949: __large_ignore = true; 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: if (__n == __gnu_cxx::__numeric_traits::__max) 234s 1949: { 234s 1949: if (__large_ignore) 234s 1949: _M_gcount = __gnu_cxx::__numeric_traits::__max; 234s 1949: 234s 1949: if (traits_type::eq_int_type(__c, __eof)) 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: else if (_M_gcount < __n) 234s 1949: { 234s 1949: if (traits_type::eq_int_type(__c, __eof)) 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: ignore(streamsize __n, int_type __delim) 234s 1949: { 234s 1949: _M_gcount = 0; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb && __n > 0) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: __streambuf_type* __sb = this->rdbuf(); 234s 1949: int_type __c = __sb->sgetc(); 234s 1949: 234s 1949: 234s 1949: bool __large_ignore = false; 234s 1949: while (true) 234s 1949: { 234s 1949: while (_M_gcount < __n 234s 1949: && !traits_type::eq_int_type(__c, __eof) 234s 1949: && !traits_type::eq_int_type(__c, __delim)) 234s 1949: { 234s 1949: ++_M_gcount; 234s 1949: __c = __sb->snextc(); 234s 1949: } 234s 1949: if (__n == __gnu_cxx::__numeric_traits::__max 234s 1949: && !traits_type::eq_int_type(__c, __eof) 234s 1949: && !traits_type::eq_int_type(__c, __delim)) 234s 1949: { 234s 1949: _M_gcount = 234s 1949: __gnu_cxx::__numeric_traits::__min; 234s 1949: __large_ignore = true; 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: if (__n == __gnu_cxx::__numeric_traits::__max) 234s 1949: { 234s 1949: if (__large_ignore) 234s 1949: _M_gcount = __gnu_cxx::__numeric_traits::__max; 234s 1949: 234s 1949: if (traits_type::eq_int_type(__c, __eof)) 234s 1949: __err |= ios_base::eofbit; 234s 1949: else 234s 1949: { 234s 1949: if (_M_gcount != __n) 234s 1949: ++_M_gcount; 234s 1949: __sb->sbumpc(); 234s 1949: } 234s 1949: } 234s 1949: else if (_M_gcount < __n) 234s 1949: { 234s 1949: if (traits_type::eq_int_type(__c, __eof)) 234s 1949: __err |= ios_base::eofbit; 234s 1949: else 234s 1949: { 234s 1949: ++_M_gcount; 234s 1949: __sb->sbumpc(); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_istream<_CharT, _Traits>::int_type 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: peek(void) 234s 1949: { 234s 1949: int_type __c = traits_type::eof(); 234s 1949: _M_gcount = 0; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: __c = this->rdbuf()->sgetc(); 234s 1949: if (traits_type::eq_int_type(__c, traits_type::eof())) 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return __c; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: read(char_type* __s, streamsize __n) 234s 1949: { 234s 1949: _M_gcount = 0; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: _M_gcount = this->rdbuf()->sgetn(__s, __n); 234s 1949: if (_M_gcount != __n) 234s 1949: __err |= (ios_base::eofbit | ios_base::failbit); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: streamsize 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: readsome(char_type* __s, streamsize __n) 234s 1949: { 234s 1949: _M_gcount = 0; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: 234s 1949: const streamsize __num = this->rdbuf()->in_avail(); 234s 1949: if (__num > 0) 234s 1949: _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); 234s 1949: else if (__num == -1) 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return _M_gcount; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: putback(char_type __c) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: _M_gcount = 0; 234s 1949: 234s 1949: this->clear(this->rdstate() & ~ios_base::eofbit); 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: __streambuf_type* __sb = this->rdbuf(); 234s 1949: if (!__sb 234s 1949: || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) 234s 1949: __err |= ios_base::badbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: unget(void) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: _M_gcount = 0; 234s 1949: 234s 1949: this->clear(this->rdstate() & ~ios_base::eofbit); 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: const int_type __eof = traits_type::eof(); 234s 1949: __streambuf_type* __sb = this->rdbuf(); 234s 1949: if (!__sb 234s 1949: || traits_type::eq_int_type(__sb->sungetc(), __eof)) 234s 1949: __err |= ios_base::badbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: int 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: sync(void) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: int __ret = -1; 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: __streambuf_type* __sb = this->rdbuf(); 234s 1949: if (__sb) 234s 1949: { 234s 1949: if (__sb->pubsync() == -1) 234s 1949: __err |= ios_base::badbit; 234s 1949: else 234s 1949: __ret = 0; 234s 1949: } 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_istream<_CharT, _Traits>::pos_type 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: tellg(void) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: pos_type __ret = pos_type(-1); 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: if (!this->fail()) 234s 1949: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, 234s 1949: ios_base::in); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: seekg(pos_type __pos) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: this->clear(this->rdstate() & ~ios_base::eofbit); 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: if (!this->fail()) 234s 1949: { 234s 1949: 234s 1949: const pos_type __p = this->rdbuf()->pubseekpos(__pos, 234s 1949: ios_base::in); 234s 1949: 234s 1949: 234s 1949: if (__p == pos_type(off_type(-1))) 234s 1949: __err |= ios_base::failbit; 234s 1949: } 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: basic_istream<_CharT, _Traits>:: 234s 1949: seekg(off_type __off, ios_base::seekdir __dir) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: this->clear(this->rdstate() & ~ios_base::eofbit); 234s 1949: sentry __cerb(*this, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: if (!this->fail()) 234s 1949: { 234s 1949: 234s 1949: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, 234s 1949: ios_base::in); 234s 1949: 234s 1949: 234s 1949: if (__p == pos_type(off_type(-1))) 234s 1949: __err |= ios_base::failbit; 234s 1949: } 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: this->_M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { this->_M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: this->setstate(__err); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) 234s 1949: { 234s 1949: typedef basic_istream<_CharT, _Traits> __istream_type; 234s 1949: typedef typename __istream_type::int_type __int_type; 234s 1949: 234s 1949: typename __istream_type::sentry __cerb(__in, false); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: const __int_type __cb = __in.rdbuf()->sbumpc(); 234s 1949: if (!_Traits::eq_int_type(__cb, _Traits::eof())) 234s 1949: __c = _Traits::to_char_type(__cb); 234s 1949: else 234s 1949: __err |= (ios_base::eofbit | ios_base::failbit); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __in._M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { __in._M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: __in.setstate(__err); 234s 1949: } 234s 1949: return __in; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __istream_extract(basic_istream<_CharT, _Traits>& __in, _CharT* __s, 234s 1949: streamsize __num) 234s 1949: { 234s 1949: typedef basic_istream<_CharT, _Traits> __istream_type; 234s 1949: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 234s 1949: typedef typename _Traits::int_type int_type; 234s 1949: typedef _CharT char_type; 234s 1949: typedef ctype<_CharT> __ctype_type; 234s 1949: 234s 1949: streamsize __extracted = 0; 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: typename __istream_type::sentry __cerb(__in, false); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: 234s 1949: streamsize __width = __in.width(); 234s 1949: if (0 < __width && __width < __num) 234s 1949: __num = __width; 234s 1949: 234s 1949: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 234s 1949: 234s 1949: const int_type __eof = _Traits::eof(); 234s 1949: __streambuf_type* __sb = __in.rdbuf(); 234s 1949: int_type __c = __sb->sgetc(); 234s 1949: 234s 1949: while (__extracted < __num - 1 234s 1949: && !_Traits::eq_int_type(__c, __eof) 234s 1949: && !__ct.is(ctype_base::space, 234s 1949: _Traits::to_char_type(__c))) 234s 1949: { 234s 1949: *__s++ = _Traits::to_char_type(__c); 234s 1949: ++__extracted; 234s 1949: __c = __sb->snextc(); 234s 1949: } 234s 1949: 234s 1949: if (__extracted < __num - 1 234s 1949: && _Traits::eq_int_type(__c, __eof)) 234s 1949: __err |= ios_base::eofbit; 234s 1949: 234s 1949: 234s 1949: 234s 1949: *__s = char_type(); 234s 1949: __in.width(0); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __in._M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { __in._M_setstate(ios_base::badbit); } 234s 1949: } 234s 1949: if (!__extracted) 234s 1949: __err |= ios_base::failbit; 234s 1949: if (__err) 234s 1949: __in.setstate(__err); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: ws(basic_istream<_CharT, _Traits>& __in) 234s 1949: { 234s 1949: typedef basic_istream<_CharT, _Traits> __istream_type; 234s 1949: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 234s 1949: typedef typename __istream_type::int_type __int_type; 234s 1949: typedef ctype<_CharT> __ctype_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typename __istream_type::sentry __cerb(__in, true); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 234s 1949: const __int_type __eof = _Traits::eof(); 234s 1949: __streambuf_type* __sb = __in.rdbuf(); 234s 1949: __int_type __c = __sb->sgetc(); 234s 1949: 234s 1949: while (true) 234s 1949: { 234s 1949: if (_Traits::eq_int_type(__c, __eof)) 234s 1949: { 234s 1949: __err = ios_base::eofbit; 234s 1949: break; 234s 1949: } 234s 1949: if (!__ct.is(ctype_base::space, _Traits::to_char_type(__c))) 234s 1949: break; 234s 1949: __c = __sb->snextc(); 234s 1949: } 234s 1949: } 234s 1949: catch(const __cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __in._M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: __in._M_setstate(ios_base::badbit); 234s 1949: } 234s 1949: if (__err) 234s 1949: __in.setstate(__err); 234s 1949: } 234s 1949: return __in; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: extern template class basic_istream; 234s 1949: extern template istream& ws(istream&); 234s 1949: extern template istream& operator>>(istream&, char&); 234s 1949: extern template istream& operator>>(istream&, unsigned char&); 234s 1949: extern template istream& operator>>(istream&, signed char&); 234s 1949: 234s 1949: extern template istream& istream::_M_extract(unsigned short&); 234s 1949: extern template istream& istream::_M_extract(unsigned int&); 234s 1949: extern template istream& istream::_M_extract(long&); 234s 1949: extern template istream& istream::_M_extract(unsigned long&); 234s 1949: extern template istream& istream::_M_extract(bool&); 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: extern template istream& istream::_M_extract(long long&); 234s 1949: extern template istream& istream::_M_extract(unsigned long long&); 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: extern template istream& istream::_M_extract(float&); 234s 1949: extern template istream& istream::_M_extract(double&); 234s 1949: extern template istream& istream::_M_extract(long double&); 234s 1949: extern template istream& istream::_M_extract(void*&); 234s 1949: 234s 1949: extern template class basic_iostream; 234s 1949: 234s 1949: 234s 1949: extern template class basic_istream; 234s 1949: extern template wistream& ws(wistream&); 234s 1949: extern template wistream& operator>>(wistream&, wchar_t&); 234s 1949: extern template void __istream_extract(wistream&, wchar_t*, streamsize); 234s 1949: 234s 1949: extern template wistream& wistream::_M_extract(unsigned short&); 234s 1949: extern template wistream& wistream::_M_extract(unsigned int&); 234s 1949: extern template wistream& wistream::_M_extract(long&); 234s 1949: extern template wistream& wistream::_M_extract(unsigned long&); 234s 1949: extern template wistream& wistream::_M_extract(bool&); 234s 1949: 234s 1949: extern template wistream& wistream::_M_extract(long long&); 234s 1949: extern template wistream& wistream::_M_extract(unsigned long long&); 234s 1949: 234s 1949: extern template wistream& wistream::_M_extract(float&); 234s 1949: extern template wistream& wistream::_M_extract(double&); 234s 1949: extern template wistream& wistream::_M_extract(long double&); 234s 1949: extern template wistream& wistream::_M_extract(void*&); 234s 1949: 234s 1949: extern template class basic_iostream; 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 1112 "/usr/include/c++/15/istream" 2 3 4 234s 1949: # 43 "/usr/include/c++/15/fstream" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/codecvt.h" 1 3 4 234s 1949: # 46 "/usr/include/c++/15/bits/codecvt.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: class codecvt_base 234s 1949: { 234s 1949: public: 234s 1949: enum result 234s 1949: { 234s 1949: ok, 234s 1949: partial, 234s 1949: error, 234s 1949: noconv 234s 1949: }; 234s 1949: }; 234s 1949: # 75 "/usr/include/c++/15/bits/codecvt.h" 3 4 234s 1949: template 234s 1949: class __codecvt_abstract_base 234s 1949: : public locale::facet, public codecvt_base 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef codecvt_base::result result; 234s 1949: typedef _InternT intern_type; 234s 1949: typedef _ExternT extern_type; 234s 1949: typedef _StateT state_type; 234s 1949: # 123 "/usr/include/c++/15/bits/codecvt.h" 3 4 234s 1949: result 234s 1949: out(state_type& __state, const intern_type* __from, 234s 1949: const intern_type* __from_end, const intern_type*& __from_next, 234s 1949: extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const 234s 1949: { 234s 1949: return this->do_out(__state, __from, __from_end, __from_next, 234s 1949: __to, __to_end, __to_next); 234s 1949: } 234s 1949: # 162 "/usr/include/c++/15/bits/codecvt.h" 3 4 234s 1949: result 234s 1949: unshift(state_type& __state, extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const 234s 1949: { return this->do_unshift(__state, __to,__to_end,__to_next); } 234s 1949: # 203 "/usr/include/c++/15/bits/codecvt.h" 3 4 234s 1949: result 234s 1949: in(state_type& __state, const extern_type* __from, 234s 1949: const extern_type* __from_end, const extern_type*& __from_next, 234s 1949: intern_type* __to, intern_type* __to_end, 234s 1949: intern_type*& __to_next) const 234s 1949: { 234s 1949: return this->do_in(__state, __from, __from_end, __from_next, 234s 1949: __to, __to_end, __to_next); 234s 1949: } 234s 1949: 234s 1949: int 234s 1949: encoding() const throw() 234s 1949: { return this->do_encoding(); } 234s 1949: 234s 1949: bool 234s 1949: always_noconv() const throw() 234s 1949: { return this->do_always_noconv(); } 234s 1949: 234s 1949: int 234s 1949: length(state_type& __state, const extern_type* __from, 234s 1949: const extern_type* __end, size_t __max) const 234s 1949: { return this->do_length(__state, __from, __end, __max); } 234s 1949: 234s 1949: int 234s 1949: max_length() const throw() 234s 1949: { return this->do_max_length(); } 234s 1949: 234s 1949: protected: 234s 1949: explicit 234s 1949: __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { } 234s 1949: 234s 1949: virtual 234s 1949: ~__codecvt_abstract_base() { } 234s 1949: # 244 "/usr/include/c++/15/bits/codecvt.h" 3 4 234s 1949: virtual result 234s 1949: do_out(state_type& __state, const intern_type* __from, 234s 1949: const intern_type* __from_end, const intern_type*& __from_next, 234s 1949: extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const = 0; 234s 1949: 234s 1949: virtual result 234s 1949: do_unshift(state_type& __state, extern_type* __to, 234s 1949: extern_type* __to_end, extern_type*& __to_next) const = 0; 234s 1949: 234s 1949: virtual result 234s 1949: do_in(state_type& __state, const extern_type* __from, 234s 1949: const extern_type* __from_end, const extern_type*& __from_next, 234s 1949: intern_type* __to, intern_type* __to_end, 234s 1949: intern_type*& __to_next) const = 0; 234s 1949: 234s 1949: virtual int 234s 1949: do_encoding() const throw() = 0; 234s 1949: 234s 1949: virtual bool 234s 1949: do_always_noconv() const throw() = 0; 234s 1949: 234s 1949: virtual int 234s 1949: do_length(state_type&, const extern_type* __from, 234s 1949: const extern_type* __end, size_t __max) const = 0; 234s 1949: 234s 1949: virtual int 234s 1949: do_max_length() const throw() = 0; 234s 1949: }; 234s 1949: # 281 "/usr/include/c++/15/bits/codecvt.h" 3 4 234s 1949: template 234s 1949: class codecvt 234s 1949: : public __codecvt_abstract_base<_InternT, _ExternT, _StateT> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef codecvt_base::result result; 234s 1949: typedef _InternT intern_type; 234s 1949: typedef _ExternT extern_type; 234s 1949: typedef _StateT state_type; 234s 1949: 234s 1949: protected: 234s 1949: __c_locale _M_c_locale_codecvt; 234s 1949: 234s 1949: public: 234s 1949: static locale::id id; 234s 1949: 234s 1949: explicit 234s 1949: codecvt(size_t __refs = 0) 234s 1949: : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs), 234s 1949: _M_c_locale_codecvt(0) 234s 1949: { } 234s 1949: 234s 1949: explicit 234s 1949: codecvt(__c_locale __cloc, size_t __refs = 0); 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~codecvt() { } 234s 1949: 234s 1949: virtual result 234s 1949: do_out(state_type& __state, const intern_type* __from, 234s 1949: const intern_type* __from_end, const intern_type*& __from_next, 234s 1949: extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const; 234s 1949: 234s 1949: virtual result 234s 1949: do_unshift(state_type& __state, extern_type* __to, 234s 1949: extern_type* __to_end, extern_type*& __to_next) const; 234s 1949: 234s 1949: virtual result 234s 1949: do_in(state_type& __state, const extern_type* __from, 234s 1949: const extern_type* __from_end, const extern_type*& __from_next, 234s 1949: intern_type* __to, intern_type* __to_end, 234s 1949: intern_type*& __to_next) const; 234s 1949: 234s 1949: virtual int 234s 1949: do_encoding() const throw(); 234s 1949: 234s 1949: virtual bool 234s 1949: do_always_noconv() const throw(); 234s 1949: 234s 1949: virtual int 234s 1949: do_length(state_type&, const extern_type* __from, 234s 1949: const extern_type* __end, size_t __max) const; 234s 1949: 234s 1949: virtual int 234s 1949: do_max_length() const throw(); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id codecvt<_InternT, _ExternT, _StateT>::id; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: class codecvt 234s 1949: : public __codecvt_abstract_base 234s 1949: { 234s 1949: friend class messages; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: typedef char intern_type; 234s 1949: typedef char extern_type; 234s 1949: typedef mbstate_t state_type; 234s 1949: 234s 1949: protected: 234s 1949: __c_locale _M_c_locale_codecvt; 234s 1949: 234s 1949: public: 234s 1949: static locale::id id; 234s 1949: 234s 1949: explicit 234s 1949: codecvt(size_t __refs = 0); 234s 1949: 234s 1949: explicit 234s 1949: codecvt(__c_locale __cloc, size_t __refs = 0); 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~codecvt(); 234s 1949: 234s 1949: virtual result 234s 1949: do_out(state_type& __state, const intern_type* __from, 234s 1949: const intern_type* __from_end, const intern_type*& __from_next, 234s 1949: extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const; 234s 1949: 234s 1949: virtual result 234s 1949: do_unshift(state_type& __state, extern_type* __to, 234s 1949: extern_type* __to_end, extern_type*& __to_next) const; 234s 1949: 234s 1949: virtual result 234s 1949: do_in(state_type& __state, const extern_type* __from, 234s 1949: const extern_type* __from_end, const extern_type*& __from_next, 234s 1949: intern_type* __to, intern_type* __to_end, 234s 1949: intern_type*& __to_next) const; 234s 1949: 234s 1949: virtual int 234s 1949: do_encoding() const throw(); 234s 1949: 234s 1949: virtual bool 234s 1949: do_always_noconv() const throw(); 234s 1949: 234s 1949: virtual int 234s 1949: do_length(state_type&, const extern_type* __from, 234s 1949: const extern_type* __end, size_t __max) const; 234s 1949: 234s 1949: virtual int 234s 1949: do_max_length() const throw(); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: class codecvt 234s 1949: : public __codecvt_abstract_base 234s 1949: { 234s 1949: friend class messages; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: typedef wchar_t intern_type; 234s 1949: typedef char extern_type; 234s 1949: typedef mbstate_t state_type; 234s 1949: 234s 1949: protected: 234s 1949: __c_locale _M_c_locale_codecvt; 234s 1949: 234s 1949: public: 234s 1949: static locale::id id; 234s 1949: 234s 1949: explicit 234s 1949: codecvt(size_t __refs = 0); 234s 1949: 234s 1949: explicit 234s 1949: codecvt(__c_locale __cloc, size_t __refs = 0); 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~codecvt(); 234s 1949: 234s 1949: virtual result 234s 1949: do_out(state_type& __state, const intern_type* __from, 234s 1949: const intern_type* __from_end, const intern_type*& __from_next, 234s 1949: extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const; 234s 1949: 234s 1949: virtual result 234s 1949: do_unshift(state_type& __state, 234s 1949: extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const; 234s 1949: 234s 1949: virtual result 234s 1949: do_in(state_type& __state, 234s 1949: const extern_type* __from, const extern_type* __from_end, 234s 1949: const extern_type*& __from_next, 234s 1949: intern_type* __to, intern_type* __to_end, 234s 1949: intern_type*& __to_next) const; 234s 1949: 234s 1949: virtual 234s 1949: int do_encoding() const throw(); 234s 1949: 234s 1949: virtual 234s 1949: bool do_always_noconv() const throw(); 234s 1949: 234s 1949: virtual 234s 1949: int do_length(state_type&, const extern_type* __from, 234s 1949: const extern_type* __end, size_t __max) const; 234s 1949: 234s 1949: virtual int 234s 1949: do_max_length() const throw(); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: class codecvt 234s 1949: : public __codecvt_abstract_base 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef char16_t intern_type; 234s 1949: typedef char extern_type; 234s 1949: typedef mbstate_t state_type; 234s 1949: 234s 1949: public: 234s 1949: static locale::id id; 234s 1949: 234s 1949: explicit 234s 1949: codecvt(size_t __refs = 0) 234s 1949: : __codecvt_abstract_base(__refs) { } 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~codecvt(); 234s 1949: 234s 1949: virtual result 234s 1949: do_out(state_type& __state, const intern_type* __from, 234s 1949: const intern_type* __from_end, const intern_type*& __from_next, 234s 1949: extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const; 234s 1949: 234s 1949: virtual result 234s 1949: do_unshift(state_type& __state, 234s 1949: extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const; 234s 1949: 234s 1949: virtual result 234s 1949: do_in(state_type& __state, 234s 1949: const extern_type* __from, const extern_type* __from_end, 234s 1949: const extern_type*& __from_next, 234s 1949: intern_type* __to, intern_type* __to_end, 234s 1949: intern_type*& __to_next) const; 234s 1949: 234s 1949: virtual 234s 1949: int do_encoding() const throw(); 234s 1949: 234s 1949: virtual 234s 1949: bool do_always_noconv() const throw(); 234s 1949: 234s 1949: virtual 234s 1949: int do_length(state_type&, const extern_type* __from, 234s 1949: const extern_type* __end, size_t __max) const; 234s 1949: 234s 1949: virtual int 234s 1949: do_max_length() const throw(); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: class codecvt 234s 1949: : public __codecvt_abstract_base 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef char32_t intern_type; 234s 1949: typedef char extern_type; 234s 1949: typedef mbstate_t state_type; 234s 1949: 234s 1949: public: 234s 1949: static locale::id id; 234s 1949: 234s 1949: explicit 234s 1949: codecvt(size_t __refs = 0) 234s 1949: : __codecvt_abstract_base(__refs) { } 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~codecvt(); 234s 1949: 234s 1949: virtual result 234s 1949: do_out(state_type& __state, const intern_type* __from, 234s 1949: const intern_type* __from_end, const intern_type*& __from_next, 234s 1949: extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const; 234s 1949: 234s 1949: virtual result 234s 1949: do_unshift(state_type& __state, 234s 1949: extern_type* __to, extern_type* __to_end, 234s 1949: extern_type*& __to_next) const; 234s 1949: 234s 1949: virtual result 234s 1949: do_in(state_type& __state, 234s 1949: const extern_type* __from, const extern_type* __from_end, 234s 1949: const extern_type*& __from_next, 234s 1949: intern_type* __to, intern_type* __to_end, 234s 1949: intern_type*& __to_next) const; 234s 1949: 234s 1949: virtual 234s 1949: int do_encoding() const throw(); 234s 1949: 234s 1949: virtual 234s 1949: bool do_always_noconv() const throw(); 234s 1949: 234s 1949: virtual 234s 1949: int do_length(state_type&, const extern_type* __from, 234s 1949: const extern_type* __end, size_t __max) const; 234s 1949: 234s 1949: virtual int 234s 1949: do_max_length() const throw(); 234s 1949: }; 234s 1949: # 703 "/usr/include/c++/15/bits/codecvt.h" 3 4 234s 1949: template 234s 1949: class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: codecvt_byname(const char* __s, size_t __refs = 0) 234s 1949: : codecvt<_InternT, _ExternT, _StateT>(__refs) 234s 1949: { 234s 1949: if (__builtin_strcmp(__s, "C") != 0 234s 1949: && __builtin_strcmp(__s, "POSIX") != 0) 234s 1949: { 234s 1949: this->_S_destroy_c_locale(this->_M_c_locale_codecvt); 234s 1949: this->_S_create_c_locale(this->_M_c_locale_codecvt, __s); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: codecvt_byname(const string& __s, size_t __refs = 0) 234s 1949: : codecvt_byname(__s.c_str(), __refs) { } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~codecvt_byname() { } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: class codecvt_byname 234s 1949: : public codecvt 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: codecvt_byname(const char*, size_t __refs = 0) 234s 1949: : codecvt(__refs) { } 234s 1949: 234s 1949: explicit 234s 1949: codecvt_byname(const string& __s, size_t __refs = 0) 234s 1949: : codecvt_byname(__s.c_str(), __refs) { } 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~codecvt_byname() { } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: class codecvt_byname 234s 1949: : public codecvt 234s 1949: { 234s 1949: public: 234s 1949: explicit 234s 1949: codecvt_byname(const char*, size_t __refs = 0) 234s 1949: : codecvt(__refs) { } 234s 1949: 234s 1949: explicit 234s 1949: codecvt_byname(const string& __s, size_t __refs = 0) 234s 1949: : codecvt_byname(__s.c_str(), __refs) { } 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~codecvt_byname() { } 234s 1949: }; 234s 1949: # 810 "/usr/include/c++/15/bits/codecvt.h" 3 4 234s 1949: extern template class codecvt_byname; 234s 1949: 234s 1949: extern template 234s 1949: const codecvt& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: 234s 1949: extern template class codecvt_byname; 234s 1949: 234s 1949: extern template 234s 1949: const codecvt& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template class codecvt_byname; 234s 1949: extern template class codecvt_byname; 234s 1949: # 845 "/usr/include/c++/15/bits/codecvt.h" 3 4 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 45 "/usr/include/c++/15/fstream" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/basic_file.h" 1 3 4 234s 1949: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/basic_file.h" 3 4 234s 1949: 234s 1949: # 38 "/usr/include/arm-linux-gnueabihf/c++/15/bits/basic_file.h" 3 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++io.h" 1 3 234s 1949: # 38 "/usr/include/arm-linux-gnueabihf/c++/15/bits/c++io.h" 3 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef __gthread_mutex_t __c_lock; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef FILE __c_file; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 41 "/usr/include/arm-linux-gnueabihf/c++/15/bits/basic_file.h" 2 3 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class __basic_file; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: class __basic_file 234s 1949: { 234s 1949: 234s 1949: __c_file* _M_cfile; 234s 1949: 234s 1949: 234s 1949: bool _M_cfile_created; 234s 1949: 234s 1949: public: 234s 1949: __basic_file(__c_lock* __lock = 0) throw (); 234s 1949: 234s 1949: 234s 1949: __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept 234s 1949: : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) 234s 1949: { 234s 1949: __rv._M_cfile = nullptr; 234s 1949: __rv._M_cfile_created = false; 234s 1949: } 234s 1949: 234s 1949: __basic_file& operator=(const __basic_file&) = delete; 234s 1949: __basic_file& operator=(__basic_file&&) = delete; 234s 1949: 234s 1949: void 234s 1949: swap(__basic_file& __f) noexcept 234s 1949: { 234s 1949: std::swap(_M_cfile, __f._M_cfile); 234s 1949: std::swap(_M_cfile_created, __f._M_cfile_created); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: __basic_file* 234s 1949: open(const char* __name, ios_base::openmode __mode, int __prot = 0664); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __basic_file* 234s 1949: sys_open(__c_file* __file, ios_base::openmode); 234s 1949: 234s 1949: __basic_file* 234s 1949: sys_open(int __fd, ios_base::openmode __mode) throw (); 234s 1949: 234s 1949: __basic_file* 234s 1949: close(); 234s 1949: 234s 1949: __attribute__ ((__pure__)) bool 234s 1949: is_open() const throw (); 234s 1949: 234s 1949: __attribute__ ((__pure__)) int 234s 1949: fd() throw (); 234s 1949: 234s 1949: __attribute__ ((__pure__)) __c_file* 234s 1949: file() throw (); 234s 1949: 234s 1949: ~__basic_file(); 234s 1949: 234s 1949: streamsize 234s 1949: xsputn(const char* __s, streamsize __n); 234s 1949: 234s 1949: streamsize 234s 1949: xsputn_2(const char* __s1, streamsize __n1, 234s 1949: const char* __s2, streamsize __n2); 234s 1949: 234s 1949: streamsize 234s 1949: xsgetn(char* __s, streamsize __n); 234s 1949: 234s 1949: streamoff 234s 1949: seekoff(streamoff __off, ios_base::seekdir __way) throw (); 234s 1949: 234s 1949: int 234s 1949: sync(); 234s 1949: 234s 1949: streamsize 234s 1949: showmanyc(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using native_handle_type = int; 234s 1949: 234s 1949: 234s 1949: native_handle_type 234s 1949: native_handle() const noexcept; 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 47 "/usr/include/c++/15/fstream" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 53 "/usr/include/c++/15/fstream" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 91 "/usr/include/c++/15/fstream" 3 4 234s 1949: template 234s 1949: class basic_filebuf : public basic_streambuf<_CharT, _Traits> 234s 1949: { 234s 1949: 234s 1949: template 234s 1949: using __chk_state = __and_, 234s 1949: is_copy_constructible<_Tp>, 234s 1949: is_default_constructible<_Tp>>; 234s 1949: 234s 1949: static_assert(__chk_state::value, 234s 1949: "state_type must be CopyAssignable, CopyConstructible" 234s 1949: " and DefaultConstructible"); 234s 1949: 234s 1949: static_assert(is_same>::value, 234s 1949: "pos_type must be fpos"); 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: typedef typename traits_type::pos_type pos_type; 234s 1949: typedef typename traits_type::off_type off_type; 234s 1949: 234s 1949: typedef basic_streambuf __streambuf_type; 234s 1949: typedef basic_filebuf __filebuf_type; 234s 1949: typedef __basic_file __file_type; 234s 1949: typedef typename traits_type::state_type __state_type; 234s 1949: typedef codecvt __codecvt_type; 234s 1949: 234s 1949: friend class ios_base; 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: __c_lock _M_lock; 234s 1949: 234s 1949: 234s 1949: __file_type _M_file; 234s 1949: 234s 1949: 234s 1949: ios_base::openmode _M_mode; 234s 1949: 234s 1949: 234s 1949: __state_type _M_state_beg; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __state_type _M_state_cur; 234s 1949: 234s 1949: 234s 1949: 234s 1949: __state_type _M_state_last; 234s 1949: 234s 1949: 234s 1949: char_type* _M_buf; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_t _M_buf_size; 234s 1949: 234s 1949: 234s 1949: bool _M_buf_allocated; 234s 1949: # 167 "/usr/include/c++/15/fstream" 3 4 234s 1949: bool _M_reading; 234s 1949: bool _M_writing; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: char_type _M_pback; 234s 1949: char_type* _M_pback_cur_save; 234s 1949: char_type* _M_pback_end_save; 234s 1949: bool _M_pback_init; 234s 1949: 234s 1949: 234s 1949: 234s 1949: const __codecvt_type* _M_codecvt; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: char* _M_ext_buf; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: streamsize _M_ext_buf_size; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const char* _M_ext_next; 234s 1949: char* _M_ext_end; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_create_pback() 234s 1949: { 234s 1949: if (!_M_pback_init) 234s 1949: { 234s 1949: _M_pback_cur_save = this->gptr(); 234s 1949: _M_pback_end_save = this->egptr(); 234s 1949: this->setg(&_M_pback, &_M_pback, &_M_pback + 1); 234s 1949: _M_pback_init = true; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_destroy_pback() throw() 234s 1949: { 234s 1949: if (_M_pback_init) 234s 1949: { 234s 1949: 234s 1949: _M_pback_cur_save += this->gptr() != this->eback(); 234s 1949: this->setg(_M_buf, _M_pback_cur_save, _M_pback_end_save); 234s 1949: _M_pback_init = false; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_filebuf(); 234s 1949: 234s 1949: 234s 1949: basic_filebuf(const basic_filebuf&) = delete; 234s 1949: basic_filebuf(basic_filebuf&&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual 234s 1949: ~basic_filebuf() 234s 1949: { 234s 1949: try 234s 1949: { this->close(); } 234s 1949: catch(...) 234s 1949: { } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: basic_filebuf& operator=(const basic_filebuf&) = delete; 234s 1949: basic_filebuf& operator=(basic_filebuf&&); 234s 1949: void swap(basic_filebuf&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: is_open() const throw() 234s 1949: { return _M_file.is_open(); } 234s 1949: # 322 "/usr/include/c++/15/fstream" 3 4 234s 1949: __filebuf_type* 234s 1949: open(const char* __s, ios_base::openmode __mode); 234s 1949: # 343 "/usr/include/c++/15/fstream" 3 4 234s 1949: __filebuf_type* 234s 1949: open(const std::string& __s, ios_base::openmode __mode) 234s 1949: { return open(__s.c_str(), __mode); } 234s 1949: # 373 "/usr/include/c++/15/fstream" 3 4 234s 1949: __filebuf_type* 234s 1949: close(); 234s 1949: # 406 "/usr/include/c++/15/fstream" 3 4 234s 1949: protected: 234s 1949: void 234s 1949: _M_allocate_internal_buffer(); 234s 1949: 234s 1949: void 234s 1949: _M_destroy_internal_buffer() throw(); 234s 1949: 234s 1949: 234s 1949: virtual streamsize 234s 1949: showmanyc(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual int_type 234s 1949: underflow(); 234s 1949: 234s 1949: virtual int_type 234s 1949: pbackfail(int_type __c = _Traits::eof()); 234s 1949: # 435 "/usr/include/c++/15/fstream" 3 4 234s 1949: virtual int_type 234s 1949: overflow(int_type __c = _Traits::eof()); 234s 1949: 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: _M_convert_to_external(char_type*, streamsize); 234s 1949: # 455 "/usr/include/c++/15/fstream" 3 4 234s 1949: virtual __streambuf_type* 234s 1949: setbuf(char_type* __s, streamsize __n); 234s 1949: 234s 1949: virtual pos_type 234s 1949: seekoff(off_type __off, ios_base::seekdir __way, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out); 234s 1949: 234s 1949: virtual pos_type 234s 1949: seekpos(pos_type __pos, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out); 234s 1949: 234s 1949: 234s 1949: pos_type 234s 1949: _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state); 234s 1949: 234s 1949: int 234s 1949: _M_get_ext_pos(__state_type &__state); 234s 1949: 234s 1949: virtual int 234s 1949: sync(); 234s 1949: 234s 1949: virtual void 234s 1949: imbue(const locale& __loc); 234s 1949: 234s 1949: virtual streamsize 234s 1949: xsgetn(char_type* __s, streamsize __n); 234s 1949: 234s 1949: virtual streamsize 234s 1949: xsputn(const char_type* __s, streamsize __n); 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: _M_terminate_output(); 234s 1949: # 501 "/usr/include/c++/15/fstream" 3 4 234s 1949: void 234s 1949: _M_set_buffer(streamsize __off) 234s 1949: { 234s 1949: const bool __testin = _M_mode & ios_base::in; 234s 1949: const bool __testout = (_M_mode & ios_base::out 234s 1949: || _M_mode & ios_base::app); 234s 1949: 234s 1949: if (__testin && __off > 0) 234s 1949: this->setg(_M_buf, _M_buf, _M_buf + __off); 234s 1949: else 234s 1949: this->setg(_M_buf, _M_buf, _M_buf); 234s 1949: 234s 1949: if (__testout && __off == 0 && _M_buf_size > 1 ) 234s 1949: this->setp(_M_buf, _M_buf + _M_buf_size - 1); 234s 1949: else 234s 1949: this->setp(0, 0); 234s 1949: } 234s 1949: }; 234s 1949: # 534 "/usr/include/c++/15/fstream" 3 4 234s 1949: template 234s 1949: class basic_ifstream : public basic_istream<_CharT, _Traits> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: typedef typename traits_type::pos_type pos_type; 234s 1949: typedef typename traits_type::off_type off_type; 234s 1949: 234s 1949: 234s 1949: typedef basic_filebuf __filebuf_type; 234s 1949: typedef basic_istream __istream_type; 234s 1949: 234s 1949: private: 234s 1949: __filebuf_type _M_filebuf; 234s 1949: 234s 1949: public: 234s 1949: # 561 "/usr/include/c++/15/fstream" 3 4 234s 1949: basic_ifstream() : __istream_type(), _M_filebuf() 234s 1949: { this->init(&_M_filebuf); } 234s 1949: # 571 "/usr/include/c++/15/fstream" 3 4 234s 1949: explicit 234s 1949: basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) 234s 1949: : __istream_type(), _M_filebuf() 234s 1949: { 234s 1949: this->init(&_M_filebuf); 234s 1949: this->open(__s, __mode); 234s 1949: } 234s 1949: # 604 "/usr/include/c++/15/fstream" 3 4 234s 1949: explicit 234s 1949: basic_ifstream(const std::string& __s, 234s 1949: ios_base::openmode __mode = ios_base::in) 234s 1949: : __istream_type(), _M_filebuf() 234s 1949: { 234s 1949: this->init(&_M_filebuf); 234s 1949: this->open(__s, __mode); 234s 1949: } 234s 1949: # 628 "/usr/include/c++/15/fstream" 3 4 234s 1949: basic_ifstream(const basic_ifstream&) = delete; 234s 1949: 234s 1949: basic_ifstream(basic_ifstream&& __rhs) 234s 1949: : __istream_type(std::move(__rhs)), 234s 1949: _M_filebuf(std::move(__rhs._M_filebuf)) 234s 1949: { __istream_type::set_rdbuf(&_M_filebuf); } 234s 1949: # 642 "/usr/include/c++/15/fstream" 3 4 234s 1949: ~basic_ifstream() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_ifstream& 234s 1949: operator=(const basic_ifstream&) = delete; 234s 1949: 234s 1949: basic_ifstream& 234s 1949: operator=(basic_ifstream&& __rhs) 234s 1949: { 234s 1949: __istream_type::operator=(std::move(__rhs)); 234s 1949: _M_filebuf = std::move(__rhs._M_filebuf); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(basic_ifstream& __rhs) 234s 1949: { 234s 1949: __istream_type::swap(__rhs); 234s 1949: _M_filebuf.swap(__rhs._M_filebuf); 234s 1949: } 234s 1949: # 674 "/usr/include/c++/15/fstream" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: __filebuf_type* 234s 1949: rdbuf() const 234s 1949: { return const_cast<__filebuf_type*>(&_M_filebuf); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: is_open() 234s 1949: { return _M_filebuf.is_open(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: is_open() const 234s 1949: { return _M_filebuf.is_open(); } 234s 1949: # 703 "/usr/include/c++/15/fstream" 3 4 234s 1949: void 234s 1949: open(const char* __s, ios_base::openmode __mode = ios_base::in) 234s 1949: { 234s 1949: if (!_M_filebuf.open(__s, __mode | ios_base::in)) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: else 234s 1949: 234s 1949: 234s 1949: this->clear(); 234s 1949: } 234s 1949: # 742 "/usr/include/c++/15/fstream" 3 4 234s 1949: void 234s 1949: open(const std::string& __s, ios_base::openmode __mode = ios_base::in) 234s 1949: { 234s 1949: if (!_M_filebuf.open(__s, __mode | ios_base::in)) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: else 234s 1949: 234s 1949: 234s 1949: this->clear(); 234s 1949: } 234s 1949: # 775 "/usr/include/c++/15/fstream" 3 4 234s 1949: void 234s 1949: close() 234s 1949: { 234s 1949: if (!_M_filebuf.close()) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: } 234s 1949: # 790 "/usr/include/c++/15/fstream" 3 4 234s 1949: }; 234s 1949: # 807 "/usr/include/c++/15/fstream" 3 4 234s 1949: template 234s 1949: class basic_ofstream : public basic_ostream<_CharT,_Traits> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: typedef typename traits_type::pos_type pos_type; 234s 1949: typedef typename traits_type::off_type off_type; 234s 1949: 234s 1949: 234s 1949: typedef basic_filebuf __filebuf_type; 234s 1949: typedef basic_ostream __ostream_type; 234s 1949: 234s 1949: private: 234s 1949: __filebuf_type _M_filebuf; 234s 1949: 234s 1949: public: 234s 1949: # 834 "/usr/include/c++/15/fstream" 3 4 234s 1949: basic_ofstream(): __ostream_type(), _M_filebuf() 234s 1949: { this->init(&_M_filebuf); } 234s 1949: # 844 "/usr/include/c++/15/fstream" 3 4 234s 1949: explicit 234s 1949: basic_ofstream(const char* __s, 234s 1949: ios_base::openmode __mode = ios_base::out) 234s 1949: : __ostream_type(), _M_filebuf() 234s 1949: { 234s 1949: this->init(&_M_filebuf); 234s 1949: this->open(__s, __mode); 234s 1949: } 234s 1949: # 879 "/usr/include/c++/15/fstream" 3 4 234s 1949: explicit 234s 1949: basic_ofstream(const std::string& __s, 234s 1949: ios_base::openmode __mode = ios_base::out) 234s 1949: : __ostream_type(), _M_filebuf() 234s 1949: { 234s 1949: this->init(&_M_filebuf); 234s 1949: this->open(__s, __mode); 234s 1949: } 234s 1949: # 903 "/usr/include/c++/15/fstream" 3 4 234s 1949: basic_ofstream(const basic_ofstream&) = delete; 234s 1949: 234s 1949: basic_ofstream(basic_ofstream&& __rhs) 234s 1949: : __ostream_type(std::move(__rhs)), 234s 1949: _M_filebuf(std::move(__rhs._M_filebuf)) 234s 1949: { __ostream_type::set_rdbuf(&_M_filebuf); } 234s 1949: # 917 "/usr/include/c++/15/fstream" 3 4 234s 1949: ~basic_ofstream() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_ofstream& 234s 1949: operator=(const basic_ofstream&) = delete; 234s 1949: 234s 1949: basic_ofstream& 234s 1949: operator=(basic_ofstream&& __rhs) 234s 1949: { 234s 1949: __ostream_type::operator=(std::move(__rhs)); 234s 1949: _M_filebuf = std::move(__rhs._M_filebuf); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(basic_ofstream& __rhs) 234s 1949: { 234s 1949: __ostream_type::swap(__rhs); 234s 1949: _M_filebuf.swap(__rhs._M_filebuf); 234s 1949: } 234s 1949: # 949 "/usr/include/c++/15/fstream" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: __filebuf_type* 234s 1949: rdbuf() const 234s 1949: { return const_cast<__filebuf_type*>(&_M_filebuf); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: is_open() 234s 1949: { return _M_filebuf.is_open(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: is_open() const 234s 1949: { return _M_filebuf.is_open(); } 234s 1949: # 978 "/usr/include/c++/15/fstream" 3 4 234s 1949: void 234s 1949: open(const char* __s, ios_base::openmode __mode = ios_base::out) 234s 1949: { 234s 1949: if (!_M_filebuf.open(__s, __mode | ios_base::out)) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: else 234s 1949: 234s 1949: 234s 1949: this->clear(); 234s 1949: } 234s 1949: # 1017 "/usr/include/c++/15/fstream" 3 4 234s 1949: void 234s 1949: open(const std::string& __s, ios_base::openmode __mode = ios_base::out) 234s 1949: { 234s 1949: if (!_M_filebuf.open(__s, __mode | ios_base::out)) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: else 234s 1949: 234s 1949: 234s 1949: this->clear(); 234s 1949: } 234s 1949: # 1050 "/usr/include/c++/15/fstream" 3 4 234s 1949: void 234s 1949: close() 234s 1949: { 234s 1949: if (!_M_filebuf.close()) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: } 234s 1949: # 1065 "/usr/include/c++/15/fstream" 3 4 234s 1949: }; 234s 1949: # 1082 "/usr/include/c++/15/fstream" 3 4 234s 1949: template 234s 1949: class basic_fstream : public basic_iostream<_CharT, _Traits> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: typedef typename traits_type::pos_type pos_type; 234s 1949: typedef typename traits_type::off_type off_type; 234s 1949: 234s 1949: 234s 1949: typedef basic_filebuf __filebuf_type; 234s 1949: typedef basic_ios __ios_type; 234s 1949: typedef basic_iostream __iostream_type; 234s 1949: 234s 1949: private: 234s 1949: __filebuf_type _M_filebuf; 234s 1949: 234s 1949: public: 234s 1949: # 1110 "/usr/include/c++/15/fstream" 3 4 234s 1949: basic_fstream() 234s 1949: : __iostream_type(), _M_filebuf() 234s 1949: { this->init(&_M_filebuf); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: basic_fstream(const char* __s, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out) 234s 1949: : __iostream_type(0), _M_filebuf() 234s 1949: { 234s 1949: this->init(&_M_filebuf); 234s 1949: this->open(__s, __mode); 234s 1949: } 234s 1949: # 1149 "/usr/include/c++/15/fstream" 3 4 234s 1949: explicit 234s 1949: basic_fstream(const std::string& __s, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out) 234s 1949: : __iostream_type(0), _M_filebuf() 234s 1949: { 234s 1949: this->init(&_M_filebuf); 234s 1949: this->open(__s, __mode); 234s 1949: } 234s 1949: # 1171 "/usr/include/c++/15/fstream" 3 4 234s 1949: basic_fstream(const basic_fstream&) = delete; 234s 1949: 234s 1949: basic_fstream(basic_fstream&& __rhs) 234s 1949: : __iostream_type(std::move(__rhs)), 234s 1949: _M_filebuf(std::move(__rhs._M_filebuf)) 234s 1949: { __iostream_type::set_rdbuf(&_M_filebuf); } 234s 1949: # 1185 "/usr/include/c++/15/fstream" 3 4 234s 1949: ~basic_fstream() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: basic_fstream& 234s 1949: operator=(const basic_fstream&) = delete; 234s 1949: 234s 1949: basic_fstream& 234s 1949: operator=(basic_fstream&& __rhs) 234s 1949: { 234s 1949: __iostream_type::operator=(std::move(__rhs)); 234s 1949: _M_filebuf = std::move(__rhs._M_filebuf); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(basic_fstream& __rhs) 234s 1949: { 234s 1949: __iostream_type::swap(__rhs); 234s 1949: _M_filebuf.swap(__rhs._M_filebuf); 234s 1949: } 234s 1949: # 1217 "/usr/include/c++/15/fstream" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: __filebuf_type* 234s 1949: rdbuf() const 234s 1949: { return const_cast<__filebuf_type*>(&_M_filebuf); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: is_open() 234s 1949: { return _M_filebuf.is_open(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: is_open() const 234s 1949: { return _M_filebuf.is_open(); } 234s 1949: # 1246 "/usr/include/c++/15/fstream" 3 4 234s 1949: void 234s 1949: open(const char* __s, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out) 234s 1949: { 234s 1949: if (!_M_filebuf.open(__s, __mode)) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: else 234s 1949: 234s 1949: 234s 1949: this->clear(); 234s 1949: } 234s 1949: # 1287 "/usr/include/c++/15/fstream" 3 4 234s 1949: void 234s 1949: open(const std::string& __s, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out) 234s 1949: { 234s 1949: if (!_M_filebuf.open(__s, __mode)) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: else 234s 1949: 234s 1949: 234s 1949: this->clear(); 234s 1949: } 234s 1949: # 1322 "/usr/include/c++/15/fstream" 3 4 234s 1949: void 234s 1949: close() 234s 1949: { 234s 1949: if (!_M_filebuf.close()) 234s 1949: this->setstate(ios_base::failbit); 234s 1949: } 234s 1949: # 1337 "/usr/include/c++/15/fstream" 3 4 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(basic_filebuf<_CharT, _Traits>& __x, 234s 1949: basic_filebuf<_CharT, _Traits>& __y) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(basic_ifstream<_CharT, _Traits>& __x, 234s 1949: basic_ifstream<_CharT, _Traits>& __y) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(basic_ofstream<_CharT, _Traits>& __x, 234s 1949: basic_ofstream<_CharT, _Traits>& __y) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(basic_fstream<_CharT, _Traits>& __x, 234s 1949: basic_fstream<_CharT, _Traits>& __y) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/fstream.tcc" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/bits/fstream.tcc" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: _M_allocate_internal_buffer() 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (!_M_buf_allocated && !_M_buf) 234s 1949: { 234s 1949: _M_buf = new char_type[_M_buf_size]; 234s 1949: _M_buf_allocated = true; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: _M_destroy_internal_buffer() throw() 234s 1949: { 234s 1949: if (_M_buf_allocated) 234s 1949: { 234s 1949: delete [] _M_buf; 234s 1949: _M_buf = 0; 234s 1949: _M_buf_allocated = false; 234s 1949: } 234s 1949: delete [] _M_ext_buf; 234s 1949: _M_ext_buf = 0; 234s 1949: _M_ext_buf_size = 0; 234s 1949: _M_ext_next = 0; 234s 1949: _M_ext_end = 0; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock), 234s 1949: _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(), 234s 1949: _M_state_last(), _M_buf(0), _M_buf_size(8192), 234s 1949: _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(), 234s 1949: _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false), 234s 1949: _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0), 234s 1949: _M_ext_end(0) 234s 1949: { 234s 1949: _M_codecvt = std::__try_use_facet<__codecvt_type>(this->_M_buf_locale); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: basic_filebuf(basic_filebuf&& __rhs) 234s 1949: : __streambuf_type(__rhs), 234s 1949: _M_lock(), _M_file(std::move(__rhs._M_file), &_M_lock), 234s 1949: _M_mode(std::__exchange(__rhs._M_mode, ios_base::openmode(0))), 234s 1949: _M_state_beg(std::move(__rhs._M_state_beg)), 234s 1949: _M_state_cur(std::move(__rhs._M_state_cur)), 234s 1949: _M_state_last(std::move(__rhs._M_state_last)), 234s 1949: _M_buf(std::__exchange(__rhs._M_buf, nullptr)), 234s 1949: _M_buf_size(std::__exchange(__rhs._M_buf_size, 1)), 234s 1949: _M_buf_allocated(std::__exchange(__rhs._M_buf_allocated, false)), 234s 1949: _M_reading(std::__exchange(__rhs._M_reading, false)), 234s 1949: _M_writing(std::__exchange(__rhs._M_writing, false)), 234s 1949: _M_pback(__rhs._M_pback), 234s 1949: _M_pback_cur_save(std::__exchange(__rhs._M_pback_cur_save, nullptr)), 234s 1949: _M_pback_end_save(std::__exchange(__rhs._M_pback_end_save, nullptr)), 234s 1949: _M_pback_init(std::__exchange(__rhs._M_pback_init, false)), 234s 1949: _M_codecvt(__rhs._M_codecvt), 234s 1949: _M_ext_buf(std::__exchange(__rhs._M_ext_buf, nullptr)), 234s 1949: _M_ext_buf_size(std::__exchange(__rhs._M_ext_buf_size, 0)), 234s 1949: _M_ext_next(std::__exchange(__rhs._M_ext_next, nullptr)), 234s 1949: _M_ext_end(std::__exchange(__rhs._M_ext_end, nullptr)) 234s 1949: { 234s 1949: __rhs._M_set_buffer(-1); 234s 1949: __rhs._M_state_last = __rhs._M_state_cur = __rhs._M_state_beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: basic_filebuf<_CharT, _Traits>& 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: operator=(basic_filebuf&& __rhs) 234s 1949: { 234s 1949: this->close(); 234s 1949: __streambuf_type::operator=(__rhs); 234s 1949: _M_file.swap(__rhs._M_file); 234s 1949: _M_mode = std::__exchange(__rhs._M_mode, ios_base::openmode(0)); 234s 1949: _M_state_beg = std::move(__rhs._M_state_beg); 234s 1949: _M_state_cur = std::move(__rhs._M_state_cur); 234s 1949: _M_state_last = std::move(__rhs._M_state_last); 234s 1949: _M_buf = std::__exchange(__rhs._M_buf, nullptr); 234s 1949: _M_buf_size = std::__exchange(__rhs._M_buf_size, 1); 234s 1949: _M_buf_allocated = std::__exchange(__rhs._M_buf_allocated, false); 234s 1949: _M_ext_buf = std::__exchange(__rhs._M_ext_buf, nullptr); 234s 1949: _M_ext_buf_size = std::__exchange(__rhs._M_ext_buf_size, 0); 234s 1949: _M_ext_next = std::__exchange(__rhs._M_ext_next, nullptr); 234s 1949: _M_ext_end = std::__exchange(__rhs._M_ext_end, nullptr); 234s 1949: _M_reading = std::__exchange(__rhs._M_reading, false); 234s 1949: _M_writing = std::__exchange(__rhs._M_writing, false); 234s 1949: _M_pback_cur_save = std::__exchange(__rhs._M_pback_cur_save, nullptr); 234s 1949: _M_pback_end_save = std::__exchange(__rhs._M_pback_end_save, nullptr); 234s 1949: _M_pback_init = std::__exchange(__rhs._M_pback_init, false); 234s 1949: __rhs._M_set_buffer(-1); 234s 1949: __rhs._M_state_last = __rhs._M_state_cur = __rhs._M_state_beg; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: swap(basic_filebuf& __rhs) 234s 1949: { 234s 1949: __streambuf_type::swap(__rhs); 234s 1949: _M_file.swap(__rhs._M_file); 234s 1949: std::swap(_M_mode, __rhs._M_mode); 234s 1949: std::swap(_M_state_beg, __rhs._M_state_beg); 234s 1949: std::swap(_M_state_cur, __rhs._M_state_cur); 234s 1949: std::swap(_M_state_last, __rhs._M_state_last); 234s 1949: std::swap(_M_buf, __rhs._M_buf); 234s 1949: std::swap(_M_buf_size, __rhs._M_buf_size); 234s 1949: std::swap(_M_buf_allocated, __rhs._M_buf_allocated); 234s 1949: std::swap(_M_ext_buf, __rhs._M_ext_buf); 234s 1949: std::swap(_M_ext_buf_size, __rhs._M_ext_buf_size); 234s 1949: std::swap(_M_ext_next, __rhs._M_ext_next); 234s 1949: std::swap(_M_ext_end, __rhs._M_ext_end); 234s 1949: std::swap(_M_reading, __rhs._M_reading); 234s 1949: std::swap(_M_writing, __rhs._M_writing); 234s 1949: std::swap(_M_pback_cur_save, __rhs._M_pback_cur_save); 234s 1949: std::swap(_M_pback_end_save, __rhs._M_pback_end_save); 234s 1949: std::swap(_M_pback_init, __rhs._M_pback_init); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: typename basic_filebuf<_CharT, _Traits>::__filebuf_type* 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: open(const char* __s, ios_base::openmode __mode) 234s 1949: { 234s 1949: __filebuf_type *__ret = 0; 234s 1949: if (!this->is_open()) 234s 1949: { 234s 1949: _M_file.open(__s, __mode); 234s 1949: if (this->is_open()) 234s 1949: { 234s 1949: _M_allocate_internal_buffer(); 234s 1949: _M_mode = __mode; 234s 1949: 234s 1949: 234s 1949: _M_reading = false; 234s 1949: _M_writing = false; 234s 1949: _M_set_buffer(-1); 234s 1949: 234s 1949: 234s 1949: _M_state_last = _M_state_cur = _M_state_beg; 234s 1949: 234s 1949: 234s 1949: if ((__mode & ios_base::ate) 234s 1949: && this->seekoff(0, ios_base::end, __mode) 234s 1949: == pos_type(off_type(-1))) 234s 1949: this->close(); 234s 1949: else 234s 1949: __ret = this; 234s 1949: } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: # 251 "/usr/include/c++/15/bits/fstream.tcc" 3 4 234s 1949: template 234s 1949: typename basic_filebuf<_CharT, _Traits>::__filebuf_type* 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: close() 234s 1949: { 234s 1949: if (!this->is_open()) 234s 1949: return 0; 234s 1949: 234s 1949: bool __testfail = false; 234s 1949: { 234s 1949: 234s 1949: struct __close_sentry 234s 1949: { 234s 1949: basic_filebuf *__fb; 234s 1949: __close_sentry (basic_filebuf *__fbi): __fb(__fbi) { } 234s 1949: ~__close_sentry () 234s 1949: { 234s 1949: __fb->_M_mode = ios_base::openmode(0); 234s 1949: __fb->_M_pback_init = false; 234s 1949: __fb->_M_destroy_internal_buffer(); 234s 1949: __fb->_M_reading = false; 234s 1949: __fb->_M_writing = false; 234s 1949: __fb->_M_set_buffer(-1); 234s 1949: __fb->_M_state_last = __fb->_M_state_cur = __fb->_M_state_beg; 234s 1949: } 234s 1949: } __cs (this); 234s 1949: 234s 1949: try 234s 1949: { 234s 1949: if (!_M_terminate_output()) 234s 1949: __testfail = true; 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: _M_file.close(); 234s 1949: throw; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: if (!_M_file.close()) 234s 1949: __testfail = true; 234s 1949: 234s 1949: if (__testfail) 234s 1949: return 0; 234s 1949: else 234s 1949: return this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: streamsize 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: showmanyc() 234s 1949: { 234s 1949: streamsize __ret = -1; 234s 1949: const bool __testin = _M_mode & ios_base::in; 234s 1949: if (__testin && this->is_open()) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: __ret = this->egptr() - this->gptr(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__check_facet(_M_codecvt).encoding() >= 0) 234s 1949: 234s 1949: __ret += _M_file.showmanyc() / _M_codecvt->max_length(); 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_filebuf<_CharT, _Traits>::int_type 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: underflow() 234s 1949: { 234s 1949: int_type __ret = traits_type::eof(); 234s 1949: const bool __testin = _M_mode & ios_base::in; 234s 1949: if (__testin) 234s 1949: { 234s 1949: if (_M_writing) 234s 1949: { 234s 1949: if (overflow() == traits_type::eof()) 234s 1949: return __ret; 234s 1949: _M_set_buffer(-1); 234s 1949: _M_writing = false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_destroy_pback(); 234s 1949: 234s 1949: if (this->gptr() < this->egptr()) 234s 1949: return traits_type::to_int_type(*this->gptr()); 234s 1949: 234s 1949: 234s 1949: const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; 234s 1949: 234s 1949: 234s 1949: bool __got_eof = false; 234s 1949: 234s 1949: streamsize __ilen = 0; 234s 1949: codecvt_base::result __r = codecvt_base::ok; 234s 1949: if (__check_facet(_M_codecvt).always_noconv()) 234s 1949: { 234s 1949: __ilen = _M_file.xsgetn(reinterpret_cast(this->eback()), 234s 1949: __buflen); 234s 1949: if (__ilen == 0) 234s 1949: __got_eof = true; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const int __enc = _M_codecvt->encoding(); 234s 1949: streamsize __blen; 234s 1949: streamsize __rlen; 234s 1949: if (__enc > 0) 234s 1949: __blen = __rlen = __buflen * __enc; 234s 1949: else 234s 1949: { 234s 1949: __blen = __buflen + _M_codecvt->max_length() - 1; 234s 1949: __rlen = __buflen; 234s 1949: } 234s 1949: const streamsize __remainder = _M_ext_end - _M_ext_next; 234s 1949: __rlen = __rlen > __remainder ? __rlen - __remainder : 0; 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (_M_reading && this->egptr() == this->eback() && __remainder) 234s 1949: __rlen = 0; 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (_M_ext_buf_size < __blen) 234s 1949: { 234s 1949: char* __buf = new char[__blen]; 234s 1949: if (__remainder) 234s 1949: __builtin_memcpy(__buf, _M_ext_next, __remainder); 234s 1949: 234s 1949: delete [] _M_ext_buf; 234s 1949: _M_ext_buf = __buf; 234s 1949: _M_ext_buf_size = __blen; 234s 1949: } 234s 1949: else if (__remainder) 234s 1949: __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); 234s 1949: 234s 1949: _M_ext_next = _M_ext_buf; 234s 1949: _M_ext_end = _M_ext_buf + __remainder; 234s 1949: _M_state_last = _M_state_cur; 234s 1949: 234s 1949: do 234s 1949: { 234s 1949: if (__rlen > 0) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size) 234s 1949: { 234s 1949: __throw_ios_failure(("basic_filebuf::underflow " "codecvt::max_length() " "is not valid") 234s 1949: 234s 1949: ); 234s 1949: } 234s 1949: streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen); 234s 1949: if (__elen == 0) 234s 1949: __got_eof = true; 234s 1949: else if (__elen == -1) 234s 1949: break; 234s 1949: _M_ext_end += __elen; 234s 1949: } 234s 1949: 234s 1949: char_type* __iend = this->eback(); 234s 1949: if (_M_ext_next < _M_ext_end) 234s 1949: __r = _M_codecvt->in(_M_state_cur, _M_ext_next, 234s 1949: _M_ext_end, _M_ext_next, 234s 1949: this->eback(), 234s 1949: this->eback() + __buflen, __iend); 234s 1949: if (__r == codecvt_base::noconv) 234s 1949: { 234s 1949: size_t __avail = _M_ext_end - _M_ext_buf; 234s 1949: __ilen = std::min(__avail, __buflen); 234s 1949: traits_type::copy(this->eback(), 234s 1949: reinterpret_cast 234s 1949: (_M_ext_buf), __ilen); 234s 1949: _M_ext_next = _M_ext_buf + __ilen; 234s 1949: } 234s 1949: else 234s 1949: __ilen = __iend - this->eback(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__r == codecvt_base::error) 234s 1949: break; 234s 1949: 234s 1949: __rlen = 1; 234s 1949: } 234s 1949: while (__ilen == 0 && !__got_eof); 234s 1949: } 234s 1949: 234s 1949: if (__ilen > 0) 234s 1949: { 234s 1949: _M_set_buffer(__ilen); 234s 1949: _M_reading = true; 234s 1949: __ret = traits_type::to_int_type(*this->gptr()); 234s 1949: } 234s 1949: else if (__got_eof) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_set_buffer(-1); 234s 1949: _M_reading = false; 234s 1949: 234s 1949: 234s 1949: if (__r == codecvt_base::partial) 234s 1949: __throw_ios_failure(("basic_filebuf::underflow " "incomplete character in file") 234s 1949: ); 234s 1949: } 234s 1949: else if (__r == codecvt_base::error) 234s 1949: __throw_ios_failure(("basic_filebuf::underflow " "invalid byte sequence in file") 234s 1949: ); 234s 1949: else 234s 1949: __throw_ios_failure(("basic_filebuf::underflow " "error reading the file") 234s 1949: , (*__errno_location ())); 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_filebuf<_CharT, _Traits>::int_type 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: pbackfail(int_type __i) 234s 1949: { 234s 1949: int_type __ret = traits_type::eof(); 234s 1949: const bool __testin = _M_mode & ios_base::in; 234s 1949: if (__testin) 234s 1949: { 234s 1949: if (_M_writing) 234s 1949: { 234s 1949: if (overflow() == traits_type::eof()) 234s 1949: return __ret; 234s 1949: _M_set_buffer(-1); 234s 1949: _M_writing = false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const bool __testpb = _M_pback_init; 234s 1949: const bool __testeof = traits_type::eq_int_type(__i, __ret); 234s 1949: int_type __tmp; 234s 1949: if (this->eback() < this->gptr()) 234s 1949: { 234s 1949: this->gbump(-1); 234s 1949: __tmp = traits_type::to_int_type(*this->gptr()); 234s 1949: } 234s 1949: else if (this->seekoff(-1, ios_base::cur) != pos_type(off_type(-1))) 234s 1949: { 234s 1949: __tmp = this->underflow(); 234s 1949: if (traits_type::eq_int_type(__tmp, __ret)) 234s 1949: return __ret; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (!__testeof && traits_type::eq_int_type(__i, __tmp)) 234s 1949: __ret = __i; 234s 1949: else if (__testeof) 234s 1949: __ret = traits_type::not_eof(__i); 234s 1949: else if (!__testpb) 234s 1949: { 234s 1949: _M_create_pback(); 234s 1949: _M_reading = true; 234s 1949: *this->gptr() = traits_type::to_char_type(__i); 234s 1949: __ret = __i; 234s 1949: } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_filebuf<_CharT, _Traits>::int_type 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: overflow(int_type __c) 234s 1949: { 234s 1949: int_type __ret = traits_type::eof(); 234s 1949: const bool __testeof = traits_type::eq_int_type(__c, __ret); 234s 1949: const bool __testout = (_M_mode & ios_base::out 234s 1949: || _M_mode & ios_base::app); 234s 1949: if (__testout) 234s 1949: { 234s 1949: if (_M_reading) 234s 1949: { 234s 1949: _M_destroy_pback(); 234s 1949: const int __gptr_off = _M_get_ext_pos(_M_state_last); 234s 1949: if (_M_seek(__gptr_off, ios_base::cur, _M_state_last) 234s 1949: == pos_type(off_type(-1))) 234s 1949: return __ret; 234s 1949: } 234s 1949: if (this->pbase() < this->pptr()) 234s 1949: { 234s 1949: 234s 1949: if (!__testeof) 234s 1949: { 234s 1949: *this->pptr() = traits_type::to_char_type(__c); 234s 1949: this->pbump(1); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (_M_convert_to_external(this->pbase(), 234s 1949: this->pptr() - this->pbase())) 234s 1949: { 234s 1949: _M_set_buffer(0); 234s 1949: __ret = traits_type::not_eof(__c); 234s 1949: } 234s 1949: } 234s 1949: else if (_M_buf_size > 1) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_set_buffer(0); 234s 1949: _M_writing = true; 234s 1949: if (!__testeof) 234s 1949: { 234s 1949: *this->pptr() = traits_type::to_char_type(__c); 234s 1949: this->pbump(1); 234s 1949: } 234s 1949: __ret = traits_type::not_eof(__c); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: char_type __conv = traits_type::to_char_type(__c); 234s 1949: if (__testeof || _M_convert_to_external(&__conv, 1)) 234s 1949: { 234s 1949: _M_writing = true; 234s 1949: __ret = traits_type::not_eof(__c); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: _M_convert_to_external(_CharT* __ibuf, streamsize __ilen) 234s 1949: { 234s 1949: 234s 1949: streamsize __elen; 234s 1949: streamsize __plen; 234s 1949: if (__check_facet(_M_codecvt).always_noconv()) 234s 1949: { 234s 1949: __elen = _M_file.xsputn(reinterpret_cast(__ibuf), __ilen); 234s 1949: __plen = __ilen; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: streamsize __blen = __ilen * _M_codecvt->max_length(); 234s 1949: char* __buf = static_cast(__builtin_alloca(__blen)); 234s 1949: 234s 1949: char* __bend; 234s 1949: const char_type* __iend; 234s 1949: codecvt_base::result __r; 234s 1949: __r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen, 234s 1949: __iend, __buf, __buf + __blen, __bend); 234s 1949: 234s 1949: if (__r == codecvt_base::ok || __r == codecvt_base::partial) 234s 1949: __blen = __bend - __buf; 234s 1949: else if (__r == codecvt_base::noconv) 234s 1949: { 234s 1949: 234s 1949: __buf = reinterpret_cast(__ibuf); 234s 1949: __blen = __ilen; 234s 1949: } 234s 1949: else 234s 1949: __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error") 234s 1949: ); 234s 1949: 234s 1949: __elen = _M_file.xsputn(__buf, __blen); 234s 1949: __plen = __blen; 234s 1949: 234s 1949: 234s 1949: if (__r == codecvt_base::partial && __elen == __plen) 234s 1949: { 234s 1949: const char_type* __iresume = __iend; 234s 1949: streamsize __rlen = this->pptr() - __iend; 234s 1949: __r = _M_codecvt->out(_M_state_cur, __iresume, 234s 1949: __iresume + __rlen, __iend, __buf, 234s 1949: __buf + __blen, __bend); 234s 1949: if (__r != codecvt_base::error) 234s 1949: { 234s 1949: __rlen = __bend - __buf; 234s 1949: __elen = _M_file.xsputn(__buf, __rlen); 234s 1949: __plen = __rlen; 234s 1949: } 234s 1949: else 234s 1949: __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error") 234s 1949: ); 234s 1949: } 234s 1949: } 234s 1949: return __elen == __plen; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: streamsize 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: xsgetn(_CharT* __s, streamsize __n) 234s 1949: { 234s 1949: 234s 1949: streamsize __ret = 0; 234s 1949: if (_M_pback_init) 234s 1949: { 234s 1949: if (__n > 0 && this->gptr() == this->eback()) 234s 1949: { 234s 1949: *__s++ = *this->gptr(); 234s 1949: this->gbump(1); 234s 1949: __ret = 1; 234s 1949: --__n; 234s 1949: } 234s 1949: _M_destroy_pback(); 234s 1949: } 234s 1949: else if (_M_writing) 234s 1949: { 234s 1949: if (overflow() == traits_type::eof()) 234s 1949: return __ret; 234s 1949: _M_set_buffer(-1); 234s 1949: _M_writing = false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const bool __testin = _M_mode & ios_base::in; 234s 1949: const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; 234s 1949: 234s 1949: if (__n > __buflen && __check_facet(_M_codecvt).always_noconv() 234s 1949: && __testin) 234s 1949: { 234s 1949: 234s 1949: const streamsize __avail = this->egptr() - this->gptr(); 234s 1949: if (__avail != 0) 234s 1949: { 234s 1949: traits_type::copy(__s, this->gptr(), __avail); 234s 1949: __s += __avail; 234s 1949: this->setg(this->eback(), this->gptr() + __avail, this->egptr()); 234s 1949: __ret += __avail; 234s 1949: __n -= __avail; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: streamsize __len; 234s 1949: for (;;) 234s 1949: { 234s 1949: __len = _M_file.xsgetn(reinterpret_cast(__s), __n); 234s 1949: if (__len == -1) 234s 1949: __throw_ios_failure(("basic_filebuf::xsgetn " "error reading the file") 234s 1949: , (*__errno_location ())); 234s 1949: if (__len == 0) 234s 1949: break; 234s 1949: 234s 1949: __n -= __len; 234s 1949: __ret += __len; 234s 1949: if (__n == 0) 234s 1949: break; 234s 1949: 234s 1949: __s += __len; 234s 1949: } 234s 1949: 234s 1949: if (__n == 0) 234s 1949: { 234s 1949: 234s 1949: _M_reading = true; 234s 1949: } 234s 1949: else if (__len == 0) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_set_buffer(-1); 234s 1949: _M_reading = false; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: __ret += __streambuf_type::xsgetn(__s, __n); 234s 1949: 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: streamsize 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: xsputn(const _CharT* __s, streamsize __n) 234s 1949: { 234s 1949: streamsize __ret = 0; 234s 1949: 234s 1949: 234s 1949: 234s 1949: const bool __testout = (_M_mode & ios_base::out 234s 1949: || _M_mode & ios_base::app); 234s 1949: if (__check_facet(_M_codecvt).always_noconv() 234s 1949: && __testout && !_M_reading) 234s 1949: { 234s 1949: streamsize __bufavail = this->epptr() - this->pptr(); 234s 1949: 234s 1949: 234s 1949: if (!_M_writing && _M_buf_size > 1) 234s 1949: __bufavail = _M_buf_size - 1; 234s 1949: 234s 1949: if (__n >= __bufavail) 234s 1949: { 234s 1949: const streamsize __buffill = this->pptr() - this->pbase(); 234s 1949: const char* __buf = reinterpret_cast(this->pbase()); 234s 1949: __ret = _M_file.xsputn_2(__buf, __buffill, 234s 1949: reinterpret_cast(__s), 234s 1949: __n); 234s 1949: if (__ret == __buffill + __n) 234s 1949: { 234s 1949: _M_set_buffer(0); 234s 1949: _M_writing = true; 234s 1949: } 234s 1949: if (__ret > __buffill) 234s 1949: __ret -= __buffill; 234s 1949: else 234s 1949: __ret = 0; 234s 1949: } 234s 1949: else 234s 1949: __ret = __streambuf_type::xsputn(__s, __n); 234s 1949: } 234s 1949: else 234s 1949: __ret = __streambuf_type::xsputn(__s, __n); 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_filebuf<_CharT, _Traits>::__streambuf_type* 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: setbuf(char_type* __s, streamsize __n) 234s 1949: { 234s 1949: if (!this->is_open()) 234s 1949: { 234s 1949: if (__s == 0 && __n == 0) 234s 1949: _M_buf_size = 1; 234s 1949: else if (__s && __n > 0) 234s 1949: { 234s 1949: # 821 "/usr/include/c++/15/bits/fstream.tcc" 3 4 234s 1949: _M_buf = __s; 234s 1949: _M_buf_size = __n; 234s 1949: } 234s 1949: } 234s 1949: return this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: typename basic_filebuf<_CharT, _Traits>::pos_type 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode) 234s 1949: { 234s 1949: int __width = 0; 234s 1949: if (_M_codecvt) 234s 1949: __width = _M_codecvt->encoding(); 234s 1949: if (__width < 0) 234s 1949: __width = 0; 234s 1949: 234s 1949: pos_type __ret = pos_type(off_type(-1)); 234s 1949: const bool __testfail = __off != 0 && __width <= 0; 234s 1949: if (this->is_open() && !__testfail) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: bool __no_movement = __way == ios_base::cur && __off == 0 234s 1949: && (!_M_writing || _M_codecvt->always_noconv()); 234s 1949: 234s 1949: 234s 1949: if (!__no_movement) 234s 1949: _M_destroy_pback(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __state_type __state = _M_state_beg; 234s 1949: off_type __computed_off = __off * __width; 234s 1949: if (_M_reading && __way == ios_base::cur) 234s 1949: { 234s 1949: __state = _M_state_last; 234s 1949: __computed_off += _M_get_ext_pos(__state); 234s 1949: } 234s 1949: if (!__no_movement) 234s 1949: __ret = _M_seek(__computed_off, __way, __state); 234s 1949: else 234s 1949: { 234s 1949: if (_M_writing) 234s 1949: __computed_off = this->pptr() - this->pbase(); 234s 1949: 234s 1949: off_type __file_off = _M_file.seekoff(0, ios_base::cur); 234s 1949: if (__file_off != off_type(-1)) 234s 1949: { 234s 1949: __ret = __file_off + __computed_off; 234s 1949: __ret.state(__state); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: typename basic_filebuf<_CharT, _Traits>::pos_type 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: seekpos(pos_type __pos, ios_base::openmode) 234s 1949: { 234s 1949: pos_type __ret = pos_type(off_type(-1)); 234s 1949: if (this->is_open()) 234s 1949: { 234s 1949: 234s 1949: _M_destroy_pback(); 234s 1949: __ret = _M_seek(off_type(__pos), ios_base::beg, __pos.state()); 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_filebuf<_CharT, _Traits>::pos_type 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state) 234s 1949: { 234s 1949: pos_type __ret = pos_type(off_type(-1)); 234s 1949: if (_M_terminate_output()) 234s 1949: { 234s 1949: off_type __file_off = _M_file.seekoff(__off, __way); 234s 1949: if (__file_off != off_type(-1)) 234s 1949: { 234s 1949: _M_reading = false; 234s 1949: _M_writing = false; 234s 1949: _M_ext_next = _M_ext_end = _M_ext_buf; 234s 1949: _M_set_buffer(-1); 234s 1949: _M_state_cur = __state; 234s 1949: __ret = __file_off; 234s 1949: __ret.state(_M_state_cur); 234s 1949: } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: int basic_filebuf<_CharT, _Traits>:: 234s 1949: _M_get_ext_pos(__state_type& __state) 234s 1949: { 234s 1949: if (_M_codecvt->always_noconv()) 234s 1949: return this->gptr() - this->egptr(); 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: const int __gptr_off = 234s 1949: _M_codecvt->length(__state, _M_ext_buf, _M_ext_next, 234s 1949: this->gptr() - this->eback()); 234s 1949: return _M_ext_buf + __gptr_off - _M_ext_end; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: _M_terminate_output() 234s 1949: { 234s 1949: 234s 1949: bool __testvalid = true; 234s 1949: if (this->pbase() < this->pptr()) 234s 1949: { 234s 1949: const int_type __tmp = this->overflow(); 234s 1949: if (traits_type::eq_int_type(__tmp, traits_type::eof())) 234s 1949: __testvalid = false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (_M_writing && !__check_facet(_M_codecvt).always_noconv() 234s 1949: && __testvalid) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: const size_t __blen = 128; 234s 1949: char __buf[__blen]; 234s 1949: codecvt_base::result __r; 234s 1949: streamsize __ilen = 0; 234s 1949: 234s 1949: do 234s 1949: { 234s 1949: char* __next; 234s 1949: __r = _M_codecvt->unshift(_M_state_cur, __buf, 234s 1949: __buf + __blen, __next); 234s 1949: if (__r == codecvt_base::error) 234s 1949: __testvalid = false; 234s 1949: else if (__r == codecvt_base::ok || 234s 1949: __r == codecvt_base::partial) 234s 1949: { 234s 1949: __ilen = __next - __buf; 234s 1949: if (__ilen > 0) 234s 1949: { 234s 1949: const streamsize __elen = _M_file.xsputn(__buf, __ilen); 234s 1949: if (__elen != __ilen) 234s 1949: __testvalid = false; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: while (__r == codecvt_base::partial && __ilen > 0 && __testvalid); 234s 1949: 234s 1949: if (__testvalid) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const int_type __tmp = this->overflow(); 234s 1949: if (traits_type::eq_int_type(__tmp, traits_type::eof())) 234s 1949: __testvalid = false; 234s 1949: } 234s 1949: } 234s 1949: return __testvalid; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: int 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: sync() 234s 1949: { 234s 1949: 234s 1949: 234s 1949: int __ret = 0; 234s 1949: if (this->pbase() < this->pptr()) 234s 1949: { 234s 1949: const int_type __tmp = this->overflow(); 234s 1949: if (traits_type::eq_int_type(__tmp, traits_type::eof())) 234s 1949: __ret = -1; 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: basic_filebuf<_CharT, _Traits>:: 234s 1949: imbue(const locale& __loc) 234s 1949: { 234s 1949: bool __testvalid = true; 234s 1949: 234s 1949: const __codecvt_type* const _M_codecvt_tmp 234s 1949: = __try_use_facet<__codecvt_type>(__loc); 234s 1949: 234s 1949: if (this->is_open()) 234s 1949: { 234s 1949: 234s 1949: if ((_M_reading || _M_writing) 234s 1949: && __check_facet(_M_codecvt).encoding() == -1) 234s 1949: __testvalid = false; 234s 1949: else 234s 1949: { 234s 1949: if (_M_reading) 234s 1949: { 234s 1949: if (__check_facet(_M_codecvt).always_noconv()) 234s 1949: { 234s 1949: if (_M_codecvt_tmp 234s 1949: && !__check_facet(_M_codecvt_tmp).always_noconv()) 234s 1949: __testvalid = this->seekoff(0, ios_base::cur, _M_mode) 234s 1949: != pos_type(off_type(-1)); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: _M_ext_next = _M_ext_buf 234s 1949: + _M_codecvt->length(_M_state_last, _M_ext_buf, 234s 1949: _M_ext_next, 234s 1949: this->gptr() - this->eback()); 234s 1949: const streamsize __remainder = _M_ext_end - _M_ext_next; 234s 1949: if (__remainder) 234s 1949: __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); 234s 1949: 234s 1949: _M_ext_next = _M_ext_buf; 234s 1949: _M_ext_end = _M_ext_buf + __remainder; 234s 1949: _M_set_buffer(-1); 234s 1949: _M_state_last = _M_state_cur = _M_state_beg; 234s 1949: } 234s 1949: } 234s 1949: else if (_M_writing && (__testvalid = _M_terminate_output())) 234s 1949: _M_set_buffer(-1); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: if (__testvalid) 234s 1949: _M_codecvt = _M_codecvt_tmp; 234s 1949: else 234s 1949: _M_codecvt = 0; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template class basic_filebuf; 234s 1949: extern template class basic_ifstream; 234s 1949: extern template class basic_ofstream; 234s 1949: extern template class basic_fstream; 234s 1949: 234s 1949: 234s 1949: extern template class basic_filebuf; 234s 1949: extern template class basic_ifstream; 234s 1949: extern template class basic_ofstream; 234s 1949: extern template class basic_fstream; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 1373 "/usr/include/c++/15/fstream" 2 3 4 234s 1949: # 3164 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/sstream" 1 3 4 234s 1949: # 57 "/usr/include/c++/15/sstream" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: # 80 "/usr/include/c++/15/sstream" 3 4 234s 1949: template 234s 1949: class basic_stringbuf : public basic_streambuf<_CharT, _Traits> 234s 1949: { 234s 1949: struct __xfer_bufptrs; 234s 1949: 234s 1949: 234s 1949: using allocator_traits = std::allocator_traits<_Alloc>; 234s 1949: using _Noexcept_swap 234s 1949: = __or_; 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: 234s 1949: 234s 1949: typedef _Alloc allocator_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: typedef typename traits_type::pos_type pos_type; 234s 1949: typedef typename traits_type::off_type off_type; 234s 1949: 234s 1949: typedef basic_streambuf __streambuf_type; 234s 1949: typedef basic_string __string_type; 234s 1949: typedef typename __string_type::size_type __size_type; 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: ios_base::openmode _M_mode; 234s 1949: 234s 1949: 234s 1949: __string_type _M_string; 234s 1949: 234s 1949: public: 234s 1949: # 123 "/usr/include/c++/15/sstream" 3 4 234s 1949: basic_stringbuf() 234s 1949: : __streambuf_type(), _M_mode(ios_base::in | ios_base::out), _M_string() 234s 1949: { } 234s 1949: # 134 "/usr/include/c++/15/sstream" 3 4 234s 1949: explicit 234s 1949: basic_stringbuf(ios_base::openmode __mode) 234s 1949: : __streambuf_type(), _M_mode(__mode), _M_string() 234s 1949: { } 234s 1949: # 147 "/usr/include/c++/15/sstream" 3 4 234s 1949: explicit 234s 1949: basic_stringbuf(const __string_type& __str, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out) 234s 1949: : __streambuf_type(), _M_mode(), 234s 1949: _M_string(__str.data(), __str.size(), __str.get_allocator()) 234s 1949: { _M_stringbuf_init(__mode); } 234s 1949: 234s 1949: 234s 1949: basic_stringbuf(const basic_stringbuf&) = delete; 234s 1949: 234s 1949: basic_stringbuf(basic_stringbuf&& __rhs) 234s 1949: : basic_stringbuf(std::move(__rhs), __xfer_bufptrs(__rhs, this)) 234s 1949: { __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); } 234s 1949: # 211 "/usr/include/c++/15/sstream" 3 4 234s 1949: basic_stringbuf& 234s 1949: operator=(const basic_stringbuf&) = delete; 234s 1949: 234s 1949: basic_stringbuf& 234s 1949: operator=(basic_stringbuf&& __rhs) 234s 1949: { 234s 1949: __xfer_bufptrs __st{__rhs, this}; 234s 1949: const __streambuf_type& __base = __rhs; 234s 1949: __streambuf_type::operator=(__base); 234s 1949: this->pubimbue(__rhs.getloc()); 234s 1949: _M_mode = __rhs._M_mode; 234s 1949: _M_string = std::move(__rhs._M_string); 234s 1949: __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(basic_stringbuf& __rhs) noexcept(_Noexcept_swap::value) 234s 1949: { 234s 1949: __xfer_bufptrs __l_st{*this, std::__addressof(__rhs)}; 234s 1949: __xfer_bufptrs __r_st{__rhs, this}; 234s 1949: __streambuf_type& __base = __rhs; 234s 1949: __streambuf_type::swap(__base); 234s 1949: __rhs.pubimbue(this->pubimbue(__rhs.getloc())); 234s 1949: std::swap(_M_mode, __rhs._M_mode); 234s 1949: std::swap(_M_string, __rhs._M_string); 234s 1949: } 234s 1949: # 250 "/usr/include/c++/15/sstream" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: __string_type 234s 1949: str() const 234s 1949: { 234s 1949: __string_type __ret(_M_string.get_allocator()); 234s 1949: if (char_type* __hi = _M_high_mark()) 234s 1949: __ret.assign(this->pbase(), __hi); 234s 1949: else 234s 1949: __ret = _M_string; 234s 1949: return __ret; 234s 1949: } 234s 1949: # 309 "/usr/include/c++/15/sstream" 3 4 234s 1949: void 234s 1949: str(const __string_type& __s) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: _M_string.assign(__s.data(), __s.size()); 234s 1949: _M_stringbuf_init(_M_mode); 234s 1949: } 234s 1949: # 338 "/usr/include/c++/15/sstream" 3 4 234s 1949: protected: 234s 1949: 234s 1949: void 234s 1949: _M_stringbuf_init(ios_base::openmode __mode) 234s 1949: { 234s 1949: _M_mode = __mode; 234s 1949: __size_type __len = 0; 234s 1949: if (_M_mode & (ios_base::ate | ios_base::app)) 234s 1949: __len = _M_string.size(); 234s 1949: _M_sync(const_cast(_M_string.data()), 0, __len); 234s 1949: } 234s 1949: 234s 1949: virtual streamsize 234s 1949: showmanyc() 234s 1949: { 234s 1949: streamsize __ret = -1; 234s 1949: if (_M_mode & ios_base::in) 234s 1949: { 234s 1949: _M_update_egptr(); 234s 1949: __ret = this->egptr() - this->gptr(); 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: virtual int_type 234s 1949: underflow(); 234s 1949: 234s 1949: virtual int_type 234s 1949: pbackfail(int_type __c = traits_type::eof()); 234s 1949: 234s 1949: virtual int_type 234s 1949: overflow(int_type __c = traits_type::eof()); 234s 1949: # 382 "/usr/include/c++/15/sstream" 3 4 234s 1949: virtual __streambuf_type* 234s 1949: setbuf(char_type* __s, streamsize __n) 234s 1949: { 234s 1949: if (__s && __n >= 0) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_string.clear(); 234s 1949: 234s 1949: 234s 1949: _M_sync(__s, __n, 0); 234s 1949: } 234s 1949: return this; 234s 1949: } 234s 1949: 234s 1949: virtual pos_type 234s 1949: seekoff(off_type __off, ios_base::seekdir __way, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out); 234s 1949: 234s 1949: virtual pos_type 234s 1949: seekpos(pos_type __sp, 234s 1949: ios_base::openmode __mode = ios_base::in | ios_base::out); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_sync(char_type* __base, __size_type __i, __size_type __o); 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_update_egptr() 234s 1949: { 234s 1949: if (char_type* __pptr = this->pptr()) 234s 1949: { 234s 1949: char_type* __egptr = this->egptr(); 234s 1949: if (!__egptr || __pptr > __egptr) 234s 1949: { 234s 1949: if (_M_mode & ios_base::in) 234s 1949: this->setg(this->eback(), this->gptr(), __pptr); 234s 1949: else 234s 1949: this->setg(__pptr, __pptr, __pptr); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off); 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__((__always_inline__)) 234s 1949: char_type* 234s 1949: _M_high_mark() const noexcept 234s 1949: { 234s 1949: if (char_type* __pptr = this->pptr()) 234s 1949: { 234s 1949: char_type* __egptr = this->egptr(); 234s 1949: if (!__egptr || __pptr > __egptr) 234s 1949: return __pptr; 234s 1949: else 234s 1949: return __egptr; 234s 1949: } 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __xfer_bufptrs 234s 1949: { 234s 1949: __xfer_bufptrs(const basic_stringbuf& __from, basic_stringbuf* __to) 234s 1949: : _M_to{__to}, _M_goff{-1, -1, -1}, _M_poff{-1, -1, -1} 234s 1949: { 234s 1949: const _CharT* const __str = __from._M_string.data(); 234s 1949: const _CharT* __end = nullptr; 234s 1949: if (__from.eback()) 234s 1949: { 234s 1949: _M_goff[0] = __from.eback() - __str; 234s 1949: _M_goff[1] = __from.gptr() - __str; 234s 1949: _M_goff[2] = __from.egptr() - __str; 234s 1949: __end = __from.egptr(); 234s 1949: } 234s 1949: if (__from.pbase()) 234s 1949: { 234s 1949: _M_poff[0] = __from.pbase() - __str; 234s 1949: _M_poff[1] = __from.pptr() - __from.pbase(); 234s 1949: _M_poff[2] = __from.epptr() - __str; 234s 1949: if (!__end || __from.pptr() > __end) 234s 1949: __end = __from.pptr(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (__end) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: auto& __mut_from = const_cast(__from); 234s 1949: __mut_from._M_string._M_length(__end - __str); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: ~__xfer_bufptrs() 234s 1949: { 234s 1949: char_type* __str = const_cast(_M_to->_M_string.data()); 234s 1949: if (_M_goff[0] != -1) 234s 1949: _M_to->setg(__str+_M_goff[0], __str+_M_goff[1], __str+_M_goff[2]); 234s 1949: if (_M_poff[0] != -1) 234s 1949: _M_to->_M_pbump(__str+_M_poff[0], __str+_M_poff[2], _M_poff[1]); 234s 1949: } 234s 1949: 234s 1949: basic_stringbuf* _M_to; 234s 1949: off_type _M_goff[3]; 234s 1949: off_type _M_poff[3]; 234s 1949: }; 234s 1949: # 518 "/usr/include/c++/15/sstream" 3 4 234s 1949: basic_stringbuf(basic_stringbuf&& __rhs, __xfer_bufptrs&&) 234s 1949: : __streambuf_type(static_cast(__rhs)), 234s 1949: _M_mode(__rhs._M_mode), _M_string(std::move(__rhs._M_string)) 234s 1949: { } 234s 1949: # 533 "/usr/include/c++/15/sstream" 3 4 234s 1949: }; 234s 1949: # 551 "/usr/include/c++/15/sstream" 3 4 234s 1949: template 234s 1949: class basic_istringstream : public basic_istream<_CharT, _Traits> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: 234s 1949: 234s 1949: typedef _Alloc allocator_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: typedef typename traits_type::pos_type pos_type; 234s 1949: typedef typename traits_type::off_type off_type; 234s 1949: 234s 1949: 234s 1949: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 234s 1949: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; 234s 1949: typedef basic_istream __istream_type; 234s 1949: 234s 1949: private: 234s 1949: __stringbuf_type _M_stringbuf; 234s 1949: 234s 1949: public: 234s 1949: # 585 "/usr/include/c++/15/sstream" 3 4 234s 1949: basic_istringstream() 234s 1949: : __istream_type(), _M_stringbuf(ios_base::in) 234s 1949: { this->init(&_M_stringbuf); } 234s 1949: # 601 "/usr/include/c++/15/sstream" 3 4 234s 1949: explicit 234s 1949: basic_istringstream(ios_base::openmode __mode) 234s 1949: : __istream_type(), _M_stringbuf(__mode | ios_base::in) 234s 1949: { this->init(&_M_stringbuf); } 234s 1949: # 619 "/usr/include/c++/15/sstream" 3 4 234s 1949: explicit 234s 1949: basic_istringstream(const __string_type& __str, 234s 1949: ios_base::openmode __mode = ios_base::in) 234s 1949: : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in) 234s 1949: { this->init(&_M_stringbuf); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ~basic_istringstream() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: basic_istringstream(const basic_istringstream&) = delete; 234s 1949: 234s 1949: basic_istringstream(basic_istringstream&& __rhs) 234s 1949: : __istream_type(std::move(__rhs)), 234s 1949: _M_stringbuf(std::move(__rhs._M_stringbuf)) 234s 1949: { __istream_type::set_rdbuf(&_M_stringbuf); } 234s 1949: # 676 "/usr/include/c++/15/sstream" 3 4 234s 1949: basic_istringstream& 234s 1949: operator=(const basic_istringstream&) = delete; 234s 1949: 234s 1949: basic_istringstream& 234s 1949: operator=(basic_istringstream&& __rhs) 234s 1949: { 234s 1949: __istream_type::operator=(std::move(__rhs)); 234s 1949: _M_stringbuf = std::move(__rhs._M_stringbuf); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(basic_istringstream& __rhs) 234s 1949: { 234s 1949: __istream_type::swap(__rhs); 234s 1949: _M_stringbuf.swap(__rhs._M_stringbuf); 234s 1949: } 234s 1949: # 702 "/usr/include/c++/15/sstream" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: __stringbuf_type* 234s 1949: rdbuf() const 234s 1949: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: __string_type 234s 1949: str() const 234s 1949: { return _M_stringbuf.str(); } 234s 1949: # 744 "/usr/include/c++/15/sstream" 3 4 234s 1949: void 234s 1949: str(const __string_type& __s) 234s 1949: { _M_stringbuf.str(__s); } 234s 1949: # 761 "/usr/include/c++/15/sstream" 3 4 234s 1949: }; 234s 1949: # 779 "/usr/include/c++/15/sstream" 3 4 234s 1949: template 234s 1949: class basic_ostringstream : public basic_ostream<_CharT, _Traits> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: 234s 1949: 234s 1949: typedef _Alloc allocator_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: typedef typename traits_type::pos_type pos_type; 234s 1949: typedef typename traits_type::off_type off_type; 234s 1949: 234s 1949: 234s 1949: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 234s 1949: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; 234s 1949: typedef basic_ostream __ostream_type; 234s 1949: 234s 1949: private: 234s 1949: __stringbuf_type _M_stringbuf; 234s 1949: 234s 1949: public: 234s 1949: # 813 "/usr/include/c++/15/sstream" 3 4 234s 1949: basic_ostringstream() 234s 1949: : __ostream_type(), _M_stringbuf(ios_base::out) 234s 1949: { this->init(&_M_stringbuf); } 234s 1949: # 829 "/usr/include/c++/15/sstream" 3 4 234s 1949: explicit 234s 1949: basic_ostringstream(ios_base::openmode __mode) 234s 1949: : __ostream_type(), _M_stringbuf(__mode | ios_base::out) 234s 1949: { this->init(&_M_stringbuf); } 234s 1949: # 847 "/usr/include/c++/15/sstream" 3 4 234s 1949: explicit 234s 1949: basic_ostringstream(const __string_type& __str, 234s 1949: ios_base::openmode __mode = ios_base::out) 234s 1949: : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out) 234s 1949: { this->init(&_M_stringbuf); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ~basic_ostringstream() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: basic_ostringstream(const basic_ostringstream&) = delete; 234s 1949: 234s 1949: basic_ostringstream(basic_ostringstream&& __rhs) 234s 1949: : __ostream_type(std::move(__rhs)), 234s 1949: _M_stringbuf(std::move(__rhs._M_stringbuf)) 234s 1949: { __ostream_type::set_rdbuf(&_M_stringbuf); } 234s 1949: # 904 "/usr/include/c++/15/sstream" 3 4 234s 1949: basic_ostringstream& 234s 1949: operator=(const basic_ostringstream&) = delete; 234s 1949: 234s 1949: basic_ostringstream& 234s 1949: operator=(basic_ostringstream&& __rhs) 234s 1949: { 234s 1949: __ostream_type::operator=(std::move(__rhs)); 234s 1949: _M_stringbuf = std::move(__rhs._M_stringbuf); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(basic_ostringstream& __rhs) 234s 1949: { 234s 1949: __ostream_type::swap(__rhs); 234s 1949: _M_stringbuf.swap(__rhs._M_stringbuf); 234s 1949: } 234s 1949: # 930 "/usr/include/c++/15/sstream" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: __stringbuf_type* 234s 1949: rdbuf() const 234s 1949: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: __string_type 234s 1949: str() const 234s 1949: { return _M_stringbuf.str(); } 234s 1949: # 972 "/usr/include/c++/15/sstream" 3 4 234s 1949: void 234s 1949: str(const __string_type& __s) 234s 1949: { _M_stringbuf.str(__s); } 234s 1949: # 989 "/usr/include/c++/15/sstream" 3 4 234s 1949: }; 234s 1949: # 1007 "/usr/include/c++/15/sstream" 3 4 234s 1949: template 234s 1949: class basic_stringstream : public basic_iostream<_CharT, _Traits> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _Traits traits_type; 234s 1949: 234s 1949: 234s 1949: typedef _Alloc allocator_type; 234s 1949: typedef typename traits_type::int_type int_type; 234s 1949: typedef typename traits_type::pos_type pos_type; 234s 1949: typedef typename traits_type::off_type off_type; 234s 1949: 234s 1949: 234s 1949: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 234s 1949: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; 234s 1949: typedef basic_iostream __iostream_type; 234s 1949: 234s 1949: private: 234s 1949: __stringbuf_type _M_stringbuf; 234s 1949: 234s 1949: public: 234s 1949: # 1041 "/usr/include/c++/15/sstream" 3 4 234s 1949: basic_stringstream() 234s 1949: : __iostream_type(), _M_stringbuf(ios_base::out | ios_base::in) 234s 1949: { this->init(&_M_stringbuf); } 234s 1949: # 1055 "/usr/include/c++/15/sstream" 3 4 234s 1949: explicit 234s 1949: basic_stringstream(ios_base::openmode __m) 234s 1949: : __iostream_type(), _M_stringbuf(__m) 234s 1949: { this->init(&_M_stringbuf); } 234s 1949: # 1071 "/usr/include/c++/15/sstream" 3 4 234s 1949: explicit 234s 1949: basic_stringstream(const __string_type& __str, 234s 1949: ios_base::openmode __m = ios_base::out | ios_base::in) 234s 1949: : __iostream_type(), _M_stringbuf(__str, __m) 234s 1949: { this->init(&_M_stringbuf); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ~basic_stringstream() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: basic_stringstream(const basic_stringstream&) = delete; 234s 1949: 234s 1949: basic_stringstream(basic_stringstream&& __rhs) 234s 1949: : __iostream_type(std::move(__rhs)), 234s 1949: _M_stringbuf(std::move(__rhs._M_stringbuf)) 234s 1949: { __iostream_type::set_rdbuf(&_M_stringbuf); } 234s 1949: # 1130 "/usr/include/c++/15/sstream" 3 4 234s 1949: basic_stringstream& 234s 1949: operator=(const basic_stringstream&) = delete; 234s 1949: 234s 1949: basic_stringstream& 234s 1949: operator=(basic_stringstream&& __rhs) 234s 1949: { 234s 1949: __iostream_type::operator=(std::move(__rhs)); 234s 1949: _M_stringbuf = std::move(__rhs._M_stringbuf); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(basic_stringstream& __rhs) 234s 1949: { 234s 1949: __iostream_type::swap(__rhs); 234s 1949: _M_stringbuf.swap(__rhs._M_stringbuf); 234s 1949: } 234s 1949: # 1156 "/usr/include/c++/15/sstream" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: __stringbuf_type* 234s 1949: rdbuf() const 234s 1949: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: __string_type 234s 1949: str() const 234s 1949: { return _M_stringbuf.str(); } 234s 1949: # 1198 "/usr/include/c++/15/sstream" 3 4 234s 1949: void 234s 1949: str(const __string_type& __s) 234s 1949: { _M_stringbuf.str(__s); } 234s 1949: # 1215 "/usr/include/c++/15/sstream" 3 4 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(basic_stringbuf<_CharT, _Traits, _Allocator>& __x, 234s 1949: basic_stringbuf<_CharT, _Traits, _Allocator>& __y) 234s 1949: noexcept(noexcept(__x.swap(__y))) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(basic_istringstream<_CharT, _Traits, _Allocator>& __x, 234s 1949: basic_istringstream<_CharT, _Traits, _Allocator>& __y) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(basic_ostringstream<_CharT, _Traits, _Allocator>& __x, 234s 1949: basic_ostringstream<_CharT, _Traits, _Allocator>& __y) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(basic_stringstream<_CharT, _Traits, _Allocator>& __x, 234s 1949: basic_stringstream<_CharT, _Traits, _Allocator>& __y) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/sstream.tcc" 1 3 4 234s 1949: # 40 "/usr/include/c++/15/bits/sstream.tcc" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type 234s 1949: basic_stringbuf<_CharT, _Traits, _Alloc>:: 234s 1949: pbackfail(int_type __c) 234s 1949: { 234s 1949: int_type __ret = traits_type::eof(); 234s 1949: if (this->eback() < this->gptr()) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const bool __testeof = traits_type::eq_int_type(__c, __ret); 234s 1949: if (!__testeof) 234s 1949: { 234s 1949: const bool __testeq = traits_type::eq(traits_type:: 234s 1949: to_char_type(__c), 234s 1949: this->gptr()[-1]); 234s 1949: const bool __testout = this->_M_mode & ios_base::out; 234s 1949: if (__testeq || __testout) 234s 1949: { 234s 1949: this->gbump(-1); 234s 1949: if (!__testeq) 234s 1949: *this->gptr() = traits_type::to_char_type(__c); 234s 1949: __ret = __c; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: this->gbump(-1); 234s 1949: __ret = traits_type::not_eof(__c); 234s 1949: } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type 234s 1949: basic_stringbuf<_CharT, _Traits, _Alloc>:: 234s 1949: overflow(int_type __c) 234s 1949: { 234s 1949: const bool __testout = this->_M_mode & ios_base::out; 234s 1949: if (__builtin_expect(!__testout, false)) 234s 1949: return traits_type::eof(); 234s 1949: 234s 1949: const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof()); 234s 1949: if (__builtin_expect(__testeof, false)) 234s 1949: return traits_type::not_eof(__c); 234s 1949: 234s 1949: const __size_type __capacity = _M_string.capacity(); 234s 1949: 234s 1949: 234s 1949: if (size_t(this->epptr() - this->pbase()) < __capacity) 234s 1949: { 234s 1949: 234s 1949: char_type* __base = const_cast(_M_string.data()); 234s 1949: _M_pbump(__base, __base + __capacity, this->pptr() - this->pbase()); 234s 1949: if (_M_mode & ios_base::in) 234s 1949: { 234s 1949: const __size_type __nget = this->gptr() - this->eback(); 234s 1949: const __size_type __eget = this->egptr() - this->eback(); 234s 1949: this->setg(__base, __base + __nget, __base + __eget + 1); 234s 1949: } 234s 1949: *this->pptr() = traits_type::to_char_type(__c); 234s 1949: this->pbump(1); 234s 1949: return __c; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const __size_type __max_size = _M_string.max_size(); 234s 1949: const bool __testput = this->pptr() < this->epptr(); 234s 1949: if (__builtin_expect(!__testput && __capacity == __max_size, false)) 234s 1949: return traits_type::eof(); 234s 1949: 234s 1949: 234s 1949: 234s 1949: const char_type __conv = traits_type::to_char_type(__c); 234s 1949: if (!__testput) 234s 1949: { 234s 1949: # 133 "/usr/include/c++/15/bits/sstream.tcc" 3 4 234s 1949: const __size_type __opt_len = std::max(__size_type(2 * __capacity), 234s 1949: __size_type(512)); 234s 1949: const __size_type __len = std::min(__opt_len, __max_size); 234s 1949: __string_type __tmp(_M_string.get_allocator()); 234s 1949: __tmp.reserve(__len); 234s 1949: if (this->pbase()) 234s 1949: __tmp.assign(this->pbase(), this->epptr() - this->pbase()); 234s 1949: __tmp.push_back(__conv); 234s 1949: _M_string.swap(__tmp); 234s 1949: _M_sync(const_cast(_M_string.data()), 234s 1949: this->gptr() - this->eback(), this->pptr() - this->pbase()); 234s 1949: } 234s 1949: else 234s 1949: *this->pptr() = __conv; 234s 1949: this->pbump(1); 234s 1949: return __c; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type 234s 1949: basic_stringbuf<_CharT, _Traits, _Alloc>:: 234s 1949: underflow() 234s 1949: { 234s 1949: int_type __ret = traits_type::eof(); 234s 1949: const bool __testin = this->_M_mode & ios_base::in; 234s 1949: if (__testin) 234s 1949: { 234s 1949: 234s 1949: _M_update_egptr(); 234s 1949: 234s 1949: if (this->gptr() < this->egptr()) 234s 1949: __ret = traits_type::to_int_type(*this->gptr()); 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type 234s 1949: basic_stringbuf<_CharT, _Traits, _Alloc>:: 234s 1949: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) 234s 1949: { 234s 1949: pos_type __ret = pos_type(off_type(-1)); 234s 1949: bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; 234s 1949: bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; 234s 1949: const bool __testboth = __testin && __testout && __way != ios_base::cur; 234s 1949: __testin &= !(__mode & ios_base::out); 234s 1949: __testout &= !(__mode & ios_base::in); 234s 1949: 234s 1949: 234s 1949: 234s 1949: const char_type* __beg = __testin ? this->eback() : this->pbase(); 234s 1949: if ((__beg || !__off) && (__testin || __testout || __testboth)) 234s 1949: { 234s 1949: _M_update_egptr(); 234s 1949: 234s 1949: off_type __newoffi = __off; 234s 1949: off_type __newoffo = __newoffi; 234s 1949: if (__way == ios_base::cur) 234s 1949: { 234s 1949: __newoffi += this->gptr() - __beg; 234s 1949: __newoffo += this->pptr() - __beg; 234s 1949: } 234s 1949: else if (__way == ios_base::end) 234s 1949: __newoffo = __newoffi += this->egptr() - __beg; 234s 1949: 234s 1949: if ((__testin || __testboth) 234s 1949: && __newoffi >= 0 234s 1949: && this->egptr() - __beg >= __newoffi) 234s 1949: { 234s 1949: this->setg(this->eback(), this->eback() + __newoffi, 234s 1949: this->egptr()); 234s 1949: __ret = pos_type(__newoffi); 234s 1949: } 234s 1949: if ((__testout || __testboth) 234s 1949: && __newoffo >= 0 234s 1949: && this->egptr() - __beg >= __newoffo) 234s 1949: { 234s 1949: _M_pbump(this->pbase(), this->epptr(), __newoffo); 234s 1949: __ret = pos_type(__newoffo); 234s 1949: } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type 234s 1949: basic_stringbuf<_CharT, _Traits, _Alloc>:: 234s 1949: seekpos(pos_type __sp, ios_base::openmode __mode) 234s 1949: { 234s 1949: pos_type __ret = pos_type(off_type(-1)); 234s 1949: const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; 234s 1949: const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; 234s 1949: 234s 1949: const char_type* __beg = __testin ? this->eback() : this->pbase(); 234s 1949: if ((__beg || !off_type(__sp)) && (__testin || __testout)) 234s 1949: { 234s 1949: _M_update_egptr(); 234s 1949: 234s 1949: const off_type __pos(__sp); 234s 1949: const bool __testpos = (0 <= __pos 234s 1949: && __pos <= this->egptr() - __beg); 234s 1949: if (__testpos) 234s 1949: { 234s 1949: if (__testin) 234s 1949: this->setg(this->eback(), this->eback() + __pos, 234s 1949: this->egptr()); 234s 1949: if (__testout) 234s 1949: _M_pbump(this->pbase(), this->epptr(), __pos); 234s 1949: __ret = __sp; 234s 1949: } 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: basic_stringbuf<_CharT, _Traits, _Alloc>:: 234s 1949: _M_sync(char_type* __base, __size_type __i, __size_type __o) 234s 1949: { 234s 1949: const bool __testin = _M_mode & ios_base::in; 234s 1949: const bool __testout = _M_mode & ios_base::out; 234s 1949: char_type* __endg = __base + _M_string.size(); 234s 1949: char_type* __endp = __base + _M_string.capacity(); 234s 1949: 234s 1949: if (__base != _M_string.data()) 234s 1949: { 234s 1949: 234s 1949: __endg += __i; 234s 1949: __i = 0; 234s 1949: __endp = __endg; 234s 1949: } 234s 1949: 234s 1949: if (__testin) 234s 1949: this->setg(__base, __base + __i, __endg); 234s 1949: if (__testout) 234s 1949: { 234s 1949: _M_pbump(__base, __endp, __o); 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (!__testin) 234s 1949: this->setg(__endg, __endg, __endg); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: basic_stringbuf<_CharT, _Traits, _Alloc>:: 234s 1949: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off) 234s 1949: { 234s 1949: this->setp(__pbeg, __pend); 234s 1949: while (__off > __gnu_cxx::__numeric_traits::__max) 234s 1949: { 234s 1949: this->pbump(__gnu_cxx::__numeric_traits::__max); 234s 1949: __off -= __gnu_cxx::__numeric_traits::__max; 234s 1949: } 234s 1949: this->pbump(__off); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern template class basic_stringbuf; 234s 1949: extern template class basic_istringstream; 234s 1949: extern template class basic_ostringstream; 234s 1949: extern template class basic_stringstream; 234s 1949: 234s 1949: 234s 1949: extern template class basic_stringbuf; 234s 1949: extern template class basic_istringstream; 234s 1949: extern template class basic_ostringstream; 234s 1949: extern template class basic_stringstream; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 1256 "/usr/include/c++/15/sstream" 2 3 4 234s 1949: # 3165 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/iostream" 1 3 4 234s 1949: # 46 "/usr/include/c++/15/iostream" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 64 "/usr/include/c++/15/iostream" 3 4 234s 1949: extern istream cin; 234s 1949: extern ostream cout; 234s 1949: extern ostream cerr; 234s 1949: extern ostream clog; 234s 1949: 234s 1949: 234s 1949: extern wistream wcin; 234s 1949: extern wostream wcout; 234s 1949: extern wostream wcerr; 234s 1949: extern wostream wclog; 234s 1949: # 84 "/usr/include/c++/15/iostream" 3 4 234s 1949: __extension__ __asm (".globl _ZSt21ios_base_library_initv"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 3167 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/algorithm" 1 3 4 234s 1949: # 63 "/usr/include/c++/15/algorithm" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_algo.h" 1 3 4 234s 1949: # 59 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/algorithmfwd.h" 1 3 4 234s 1949: # 44 "/usr/include/c++/15/bits/algorithmfwd.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 200 "/usr/include/c++/15/bits/algorithmfwd.h" 3 4 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: all_of(_IIter, _IIter, _Predicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: any_of(_IIter, _IIter, _Predicate); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: binary_search(_FIter, _FIter, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: binary_search(_FIter, _FIter, const _Tp&, _Compare); 234s 1949: # 234 "/usr/include/c++/15/bits/algorithmfwd.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: copy(_IIter, _IIter, _OIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _BIter2 234s 1949: copy_backward(_BIter1, _BIter1, _BIter2); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: copy_if(_IIter, _IIter, _OIter, _Predicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: copy_n(_IIter, _Size, _OIter); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pair<_FIter, _FIter> 234s 1949: equal_range(_FIter, _FIter, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pair<_FIter, _FIter> 234s 1949: equal_range(_FIter, _FIter, const _Tp&, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: fill(_FIter, _FIter, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: fill_n(_OIter, _Size, const _Tp&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter1 234s 1949: find_end(_FIter1, _FIter1, _FIter2, _FIter2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter1 234s 1949: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _IIter 234s 1949: find_if_not(_IIter, _IIter, _Predicate); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: includes(_IIter1, _IIter1, _IIter2, _IIter2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: inplace_merge(_BIter, _BIter, _BIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: inplace_merge(_BIter, _BIter, _BIter, _Compare); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: is_heap(_RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: is_heap(_RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _RAIter 234s 1949: is_heap_until(_RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _RAIter 234s 1949: is_heap_until(_RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: is_partitioned(_IIter, _IIter, _Predicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: is_permutation(_FIter1, _FIter1, _FIter2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: is_sorted(_FIter, _FIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: is_sorted(_FIter, _FIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: is_sorted_until(_FIter, _FIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: is_sorted_untmake[2]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex' 234s make[1]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_complex' 234s il(_FIter, _FIter, _Compare); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: iter_swap(_FIter1, _FIter2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: lower_bound(_FIter, _FIter, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: lower_bound(_FIter, _FIter, const _Tp&, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: make_heap(_RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: make_heap(_RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: const _Tp& 234s 1949: max(const _Tp&, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: const _Tp& 234s 1949: max(const _Tp&, const _Tp&, _Compare); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: const _Tp& 234s 1949: min(const _Tp&, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: const _Tp& 234s 1949: min(const _Tp&, const _Tp&, _Compare); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: pair 234s 1949: minmax(const _Tp&, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: pair 234s 1949: minmax(const _Tp&, const _Tp&, _Compare); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: pair<_FIter, _FIter> 234s 1949: minmax_element(_FIter, _FIter); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: pair<_FIter, _FIter> 234s 1949: minmax_element(_FIter, _FIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _Tp 234s 1949: min(initializer_list<_Tp>); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _Tp 234s 1949: min(initializer_list<_Tp>, _Compare); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _Tp 234s 1949: max(initializer_list<_Tp>); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _Tp 234s 1949: max(initializer_list<_Tp>, _Compare); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: pair<_Tp, _Tp> 234s 1949: minmax(initializer_list<_Tp>); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: pair<_Tp, _Tp> 234s 1949: minmax(initializer_list<_Tp>, _Compare); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: next_permutation(_BIter, _BIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: next_permutation(_BIter, _BIter, _Compare); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: none_of(_IIter, _IIter, _Predicate); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _RAIter 234s 1949: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _RAIter 234s 1949: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pair<_OIter1, _OIter2> 234s 1949: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: partition_point(_FIter, _FIter, _Predicate); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: pop_heap(_RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: pop_heap(_RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: prev_permutation(_BIter, _BIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: prev_permutation(_BIter, _BIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: push_heap(_RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: push_heap(_RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: remove(_FIter, _FIter, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: remove_if(_FIter, _FIter, _Predicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: remove_copy(_IIter, _IIter, _OIter, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: remove_copy_if(_IIter, _IIter, _OIter, _Predicate); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: reverse(_BIter, _BIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: reverse_copy(_BIter, _BIter, _OIter); 234s 1949: 234s 1949: inline namespace _V2 { 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: rotate(_FIter, _FIter, _FIter); 234s 1949: 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: rotate_copy(_FIter, _FIter, _FIter, _OIter); 234s 1949: # 635 "/usr/include/c++/15/bits/algorithmfwd.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: shuffle(_RAIter, _RAIter, _UGenerator&&); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: sort_heap(_RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: sort_heap(_RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _BIter 234s 1949: stable_partition(_BIter, _BIter, _Predicate); 234s 1949: # 671 "/usr/include/c++/15/bits/algorithmfwd.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _FIter2 234s 1949: swap_ranges(_FIter1, _FIter1, _FIter2); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: unique(_FIter, _FIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: unique(_FIter, _FIter, _BinaryPredicate); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: upper_bound(_FIter, _FIter, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: upper_bound(_FIter, _FIter, const _Tp&, _Compare); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: adjacent_find(_FIter, _FIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: adjacent_find(_FIter, _FIter, _BinaryPredicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename iterator_traits<_IIter>::difference_type 234s 1949: count(_IIter, _IIter, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename iterator_traits<_IIter>::difference_type 234s 1949: count_if(_IIter, _IIter, _Predicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: equal(_IIter1, _IIter1, _IIter2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _IIter 234s 1949: find(_IIter, _IIter, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter1 234s 1949: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter1 234s 1949: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _IIter 234s 1949: find_if(_IIter, _IIter, _Predicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Funct 234s 1949: for_each(_IIter, _IIter, _Funct); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: generate(_FIter, _FIter, _Generator); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: generate_n(_OIter, _Size, _Generator); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _FIter 234s 1949: max_element(_FIter, _FIter); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _FIter 234s 1949: max_element(_FIter, _FIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _FIter 234s 1949: min_element(_FIter, _FIter); 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _FIter 234s 1949: min_element(_FIter, _FIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pair<_IIter1, _IIter2> 234s 1949: mismatch(_IIter1, _IIter1, _IIter2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pair<_IIter1, _IIter2> 234s 1949: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: nth_element(_RAIter, _RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: nth_element(_RAIter, _RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: partial_sort(_RAIter, _RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: partial_sort(_RAIter, _RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _BIter 234s 1949: partition(_BIter, _BIter, _Predicate); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) 234s 1949: void 234s 1949: random_shuffle(_RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) 234s 1949: void 234s 1949: random_shuffle(_RAIter, _RAIter, 234s 1949: 234s 1949: _Generator&&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: replace(_FIter, _FIter, const _Tp&, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: replace_if(_FIter, _FIter, _Predicate, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter1 234s 1949: search(_FIter1, _FIter1, _FIter2, _FIter2); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter1 234s 1949: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: search_n(_FIter, _FIter, _Size, const _Tp&); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _FIter 234s 1949: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, 234s 1949: _OIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: sort(_RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: sort(_RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: stable_sort(_RAIter, _RAIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: stable_sort(_RAIter, _RAIter, _Compare); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: transform(_IIter, _IIter, _OIter, _UnaryOperation); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: unique_copy(_IIter, _IIter, _OIter); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OIter 234s 1949: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 60 "/usr/include/c++/15/bits/stl_algo.h" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/stl_heap.h" 1 3 4 234s 1949: # 63 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Distance 234s 1949: __is_heap_until(_RandomAccessIterator __first, _Distance __n, 234s 1949: _Compare& __comp) 234s 1949: { 234s 1949: _Distance __parent = 0; 234s 1949: for (_Distance __child = 1; __child < __n; ++__child) 234s 1949: { 234s 1949: if (__comp(__first + __parent, __first + __child)) 234s 1949: return __child; 234s 1949: if ((__child & 1) == 0) 234s 1949: ++__parent; 234s 1949: } 234s 1949: return __n; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: __is_heap(_RandomAccessIterator __first, _Distance __n) 234s 1949: { 234s 1949: __gnu_cxx::__ops::_Iter_less_iter __comp; 234s 1949: return std::__is_heap_until(__first, __n, __comp) == __n; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) 234s 1949: { 234s 1949: typedef __decltype(__comp) _Cmp; 234s 1949: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 234s 1949: return std::__is_heap_until(__first, __n, __cmp) == __n; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 234s 1949: { return std::__is_heap(__first, std::distance(__first, __last)); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: return std::__is_heap(__first, std::move(__comp), 234s 1949: std::distance(__first, __last)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __push_heap(_RandomAccessIterator __first, 234s 1949: _Distance __holeIndex, _Distance __topIndex, _Tp __value, 234s 1949: _Compare& __comp) 234s 1949: { 234s 1949: _Distance __parent = (__holeIndex - 1) / 2; 234s 1949: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) 234s 1949: { 234s 1949: *(__first + __holeIndex) = std::move(*(__first + __parent)); 234s 1949: __holeIndex = __parent; 234s 1949: __parent = (__holeIndex - 1) / 2; 234s 1949: } 234s 1949: *(__first + __holeIndex) = std::move(__value); 234s 1949: } 234s 1949: # 159 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 234s 1949: { 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::value_type 234s 1949: _ValueType; 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: __gnu_cxx::__ops::_Iter_less_val __comp; 234s 1949: _ValueType __value = std::move(*(__last - 1)); 234s 1949: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 234s 1949: _DistanceType(0), std::move(__value), __comp); 234s 1949: } 234s 1949: # 195 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::value_type 234s 1949: _ValueType; 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 234s 1949: __cmp(std::move(__comp)); 234s 1949: _ValueType __value = std::move(*(__last - 1)); 234s 1949: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 234s 1949: _DistanceType(0), std::move(__value), __cmp); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, 234s 1949: _Distance __len, _Tp __value, _Compare __comp) 234s 1949: { 234s 1949: const _Distance __topIndex = __holeIndex; 234s 1949: _Distance __secondChild = __holeIndex; 234s 1949: while (__secondChild < (__len - 1) / 2) 234s 1949: { 234s 1949: __secondChild = 2 * (__secondChild + 1); 234s 1949: if (__comp(__first + __secondChild, 234s 1949: __first + (__secondChild - 1))) 234s 1949: __secondChild--; 234s 1949: *(__first + __holeIndex) = std::move(*(__first + __secondChild)); 234s 1949: __holeIndex = __secondChild; 234s 1949: } 234s 1949: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) 234s 1949: { 234s 1949: __secondChild = 2 * (__secondChild + 1); 234s 1949: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) 234s 1949: ; 234s 1949: __holeIndex = __secondChild - 1; 234s 1949: } 234s 1949: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 234s 1949: __cmp(std::move(__comp)); 234s 1949: std::__push_heap(__first, __holeIndex, __topIndex, 234s 1949: std::move(__value), __cmp); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _RandomAccessIterator __result, _Compare& __comp) 234s 1949: { 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::value_type 234s 1949: _ValueType; 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: _ValueType __value = std::move(*__result); 234s 1949: *__result = std::move(*__first); 234s 1949: std::__adjust_heap(__first, _DistanceType(0), 234s 1949: _DistanceType(__last - __first), 234s 1949: std::move(__value), __comp); 234s 1949: } 234s 1949: # 280 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__first != __last)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: if (__last - __first > 1) 234s 1949: { 234s 1949: --__last; 234s 1949: __gnu_cxx::__ops::_Iter_less_iter __comp; 234s 1949: std::__pop_heap(__first, __last, __last, __comp); 234s 1949: } 234s 1949: } 234s 1949: # 314 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: pop_heap(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__first != __last)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: ; 234s 1949: 234s 1949: if (__last - __first > 1) 234s 1949: { 234s 1949: typedef __decltype(__comp) _Cmp; 234s 1949: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 234s 1949: --__last; 234s 1949: std::__pop_heap(__first, __last, __last, __cmp); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare& __comp) 234s 1949: { 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::value_type 234s 1949: _ValueType; 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: if (__last - __first < 2) 234s 1949: return; 234s 1949: 234s 1949: const _DistanceType __len = __last - __first; 234s 1949: _DistanceType __parent = (__len - 2) / 2; 234s 1949: while (true) 234s 1949: { 234s 1949: _ValueType __value = std::move(*(__first + __parent)); 234s 1949: std::__adjust_heap(__first, __parent, __len, std::move(__value), 234s 1949: __comp); 234s 1949: if (__parent == 0) 234s 1949: return; 234s 1949: __parent--; 234s 1949: } 234s 1949: } 234s 1949: # 372 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: __gnu_cxx::__ops::_Iter_less_iter __comp; 234s 1949: std::__make_heap(__first, __last, __comp); 234s 1949: } 234s 1949: # 399 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: typedef __decltype(__comp) _Cmp; 234s 1949: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 234s 1949: std::__make_heap(__first, __last, __cmp); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare& __comp) 234s 1949: { 234s 1949: while (__last - __first > 1) 234s 1949: { 234s 1949: --__last; 234s 1949: std::__pop_heap(__first, __last, __last, __comp); 234s 1949: } 234s 1949: } 234s 1949: # 437 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: __gnu_cxx::__ops::_Iter_less_iter __comp; 234s 1949: std::__sort_heap(__first, __last, __comp); 234s 1949: } 234s 1949: # 465 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: typedef __decltype(__comp) _Cmp; 234s 1949: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 234s 1949: std::__sort_heap(__first, __last, __cmp); 234s 1949: } 234s 1949: # 494 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _RandomAccessIterator 234s 1949: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: __gnu_cxx::__ops::_Iter_less_iter __comp; 234s 1949: return __first + 234s 1949: std::__is_heap_until(__first, std::distance(__first, __last), __comp); 234s 1949: } 234s 1949: # 523 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _RandomAccessIterator 234s 1949: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: typedef __decltype(__comp) _Cmp; 234s 1949: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 234s 1949: return __first 234s 1949: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); 234s 1949: } 234s 1949: # 548 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 234s 1949: { return std::is_heap_until(__first, __last) == __last; } 234s 1949: # 562 "/usr/include/c++/15/bits/stl_heap.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: const auto __dist = std::distance(__first, __last); 234s 1949: typedef __decltype(__comp) _Cmp; 234s 1949: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 234s 1949: return std::__is_heap_until(__first, __dist, __cmp) == __dist; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 62 "/usr/include/c++/15/bits/stl_algo.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/uniform_int_dist.h" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 64 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 234s 1949: namespace __detail 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: _Power_of_2(_Tp __x) 234s 1949: { 234s 1949: return ((__x - 1) & __x) == 0; 234s 1949: } 234s 1949: } 234s 1949: # 87 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 234s 1949: template 234s 1949: class uniform_int_distribution 234s 1949: { 234s 1949: static_assert(std::is_integral<_IntType>::value, 234s 1949: "template argument must be an integral type"); 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: typedef _IntType result_type; 234s 1949: 234s 1949: struct param_type 234s 1949: { 234s 1949: typedef uniform_int_distribution<_IntType> distribution_type; 234s 1949: 234s 1949: param_type() : param_type(0) { } 234s 1949: 234s 1949: explicit 234s 1949: param_type(_IntType __a, 234s 1949: _IntType __b = __gnu_cxx::__int_traits<_IntType>::__max) 234s 1949: : _M_a(__a), _M_b(__b) 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(_M_a <= _M_b)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: } 234s 1949: 234s 1949: result_type 234s 1949: a() const 234s 1949: { return _M_a; } 234s 1949: 234s 1949: result_type 234s 1949: b() const 234s 1949: { return _M_b; } 234s 1949: 234s 1949: friend bool 234s 1949: operator==(const param_type& __p1, const param_type& __p2) 234s 1949: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 234s 1949: 234s 1949: friend bool 234s 1949: operator!=(const param_type& __p1, const param_type& __p2) 234s 1949: { return !(__p1 == __p2); } 234s 1949: 234s 1949: private: 234s 1949: _IntType _M_a; 234s 1949: _IntType _M_b; 234s 1949: }; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: uniform_int_distribution() : uniform_int_distribution(0) { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: uniform_int_distribution(_IntType __a, 234s 1949: _IntType __b 234s 1949: = __gnu_cxx::__int_traits<_IntType>::__max) 234s 1949: : _M_param(__a, __b) 234s 1949: { } 234s 1949: 234s 1949: explicit 234s 1949: uniform_int_distribution(const param_type& __p) 234s 1949: : _M_param(__p) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: reset() { } 234s 1949: 234s 1949: result_type 234s 1949: a() const 234s 1949: { return _M_param.a(); } 234s 1949: 234s 1949: result_type 234s 1949: b() const 234s 1949: { return _M_param.b(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: param_type 234s 1949: param() const 234s 1949: { return _M_param; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: param(const param_type& __param) 234s 1949: { _M_param = __param; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: result_type 234s 1949: min() const 234s 1949: { return this->a(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: result_type 234s 1949: max() const 234s 1949: { return this->b(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: result_type 234s 1949: operator()(_UniformRandomBitGenerator& __urng) 234s 1949: { return this->operator()(__urng, _M_param); } 234s 1949: 234s 1949: template 234s 1949: result_type 234s 1949: operator()(_UniformRandomBitGenerator& __urng, 234s 1949: const param_type& __p); 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __generate(_ForwardIterator __f, _ForwardIterator __t, 234s 1949: _UniformRandomBitGenerator& __urng) 234s 1949: { this->__generate(__f, __t, __urng, _M_param); } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __generate(_ForwardIterator __f, _ForwardIterator __t, 234s 1949: _UniformRandomBitGenerator& __urng, 234s 1949: const param_type& __p) 234s 1949: { this->__generate_impl(__f, __t, __urng, __p); } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __generate(result_type* __f, result_type* __t, 234s 1949: _UniformRandomBitGenerator& __urng, 234s 1949: const param_type& __p) 234s 1949: { this->__generate_impl(__f, __t, __urng, __p); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: friend bool 234s 1949: operator==(const uniform_int_distribution& __d1, 234s 1949: const uniform_int_distribution& __d2) 234s 1949: { return __d1._M_param == __d2._M_param; } 234s 1949: 234s 1949: private: 234s 1949: template 234s 1949: void 234s 1949: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 234s 1949: _UniformRandomBitGenerator& __urng, 234s 1949: const param_type& __p); 234s 1949: 234s 1949: param_type _M_param; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: static _Up 234s 1949: _S_nd(_Urbg& __g, _Up __range) 234s 1949: { 234s 1949: using _Up_traits = __gnu_cxx::__int_traits<_Up>; 234s 1949: using _Wp_traits = __gnu_cxx::__int_traits<_Wp>; 234s 1949: static_assert(!_Up_traits::__is_signed, "U must be unsigned"); 234s 1949: static_assert(!_Wp_traits::__is_signed, "W must be unsigned"); 234s 1949: static_assert(_Wp_traits::__digits == (2 * _Up_traits::__digits), 234s 1949: "W must be twice as wide as U"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Wp __product = _Wp(__g()) * _Wp(__range); 234s 1949: _Up __low = _Up(__product); 234s 1949: if (__low < __range) 234s 1949: { 234s 1949: _Up __threshold = -__range % __range; 234s 1949: while (__low < __threshold) 234s 1949: { 234s 1949: __product = _Wp(__g()) * _Wp(__range); 234s 1949: __low = _Up(__product); 234s 1949: } 234s 1949: } 234s 1949: return __product >> _Up_traits::__digits; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: typename uniform_int_distribution<_IntType>::result_type 234s 1949: uniform_int_distribution<_IntType>:: 234s 1949: operator()(_UniformRandomBitGenerator& __urng, 234s 1949: const param_type& __param) 234s 1949: { 234s 1949: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; 234s 1949: typedef typename make_unsigned::type __utype; 234s 1949: typedef typename common_type<_Gresult_type, __utype>::type __uctype; 234s 1949: 234s 1949: constexpr __uctype __urngmin = _UniformRandomBitGenerator::min(); 234s 1949: constexpr __uctype __urngmax = _UniformRandomBitGenerator::max(); 234s 1949: static_assert( __urngmin < __urngmax, 234s 1949: "Uniform random bit generator must define min() < max()"); 234s 1949: constexpr __uctype __urngrange = __urngmax - __urngmin; 234s 1949: 234s 1949: const __uctype __urange 234s 1949: = __uctype(__param.b()) - __uctype(__param.a()); 234s 1949: 234s 1949: __uctype __ret; 234s 1949: if (__urngrange > __urange) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: const __uctype __uerange = __urange + 1; 234s 1949: # 323 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 234s 1949: if (__urngrange == 0xffffffffU) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: unsigned int __u32erange = __uerange; 234s 1949: __ret = _S_nd(__urng, __u32erange); 234s 1949: } 234s 1949: else 234s 1949: 234s 1949: { 234s 1949: 234s 1949: const __uctype __scaling = __urngrange / __uerange; 234s 1949: const __uctype __past = __uerange * __scaling; 234s 1949: do 234s 1949: __ret = __uctype(__urng()) - __urngmin; 234s 1949: while (__ret >= __past); 234s 1949: __ret /= __scaling; 234s 1949: } 234s 1949: } 234s 1949: else if (__urngrange < __urange) 234s 1949: { 234s 1949: # 359 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 234s 1949: __uctype __tmp; 234s 1949: do 234s 1949: { 234s 1949: const __uctype __uerngrange = __urngrange + 1; 234s 1949: __tmp = (__uerngrange * operator() 234s 1949: (__urng, param_type(0, __urange / __uerngrange))); 234s 1949: __ret = __tmp + (__uctype(__urng()) - __urngmin); 234s 1949: } 234s 1949: while (__ret > __urange || __ret < __tmp); 234s 1949: } 234s 1949: else 234s 1949: __ret = __uctype(__urng()) - __urngmin; 234s 1949: 234s 1949: return __ret + __param.a(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: void 234s 1949: uniform_int_distribution<_IntType>:: 234s 1949: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 234s 1949: _UniformRandomBitGenerator& __urng, 234s 1949: const param_type& __param) 234s 1949: { 234s 1949: 234s 1949: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; 234s 1949: typedef typename make_unsigned::type __utype; 234s 1949: typedef typename common_type<_Gresult_type, __utype>::type __uctype; 234s 1949: 234s 1949: static_assert( __urng.min() < __urng.max(), 234s 1949: "Uniform random bit generator must define min() < max()"); 234s 1949: 234s 1949: constexpr __uctype __urngmin = __urng.min(); 234s 1949: constexpr __uctype __urngmax = __urng.max(); 234s 1949: constexpr __uctype __urngrange = __urngmax - __urngmin; 234s 1949: const __uctype __urange 234s 1949: = __uctype(__param.b()) - __uctype(__param.a()); 234s 1949: 234s 1949: __uctype __ret; 234s 1949: 234s 1949: if (__urngrange > __urange) 234s 1949: { 234s 1949: if (__detail::_Power_of_2(__urngrange + 1) 234s 1949: && __detail::_Power_of_2(__urange + 1)) 234s 1949: { 234s 1949: while (__f != __t) 234s 1949: { 234s 1949: __ret = __uctype(__urng()) - __urngmin; 234s 1949: *__f++ = (__ret & __urange) + __param.a(); 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: const __uctype __uerange = __urange + 1; 234s 1949: const __uctype __scaling = __urngrange / __uerange; 234s 1949: const __uctype __past = __uerange * __scaling; 234s 1949: while (__f != __t) 234s 1949: { 234s 1949: do 234s 1949: __ret = __uctype(__urng()) - __urngmin; 234s 1949: while (__ret >= __past); 234s 1949: *__f++ = __ret / __scaling + __param.a(); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: else if (__urngrange < __urange) 234s 1949: { 234s 1949: # 444 "/usr/include/c++/15/bits/uniform_int_dist.h" 3 4 234s 1949: __uctype __tmp; 234s 1949: while (__f != __t) 234s 1949: { 234s 1949: do 234s 1949: { 234s 1949: constexpr __uctype __uerngrange = __urngrange + 1; 234s 1949: __tmp = (__uerngrange * operator() 234s 1949: (__urng, param_type(0, __urange / __uerngrange))); 234s 1949: __ret = __tmp + (__uctype(__urng()) - __urngmin); 234s 1949: } 234s 1949: while (__ret > __urange || __ret < __tmp); 234s 1949: *__f++ = __ret; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: while (__f != __t) 234s 1949: *__f++ = __uctype(__urng()) - __urngmin + __param.a(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 66 "/usr/include/c++/15/bits/stl_algo.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/stl_tempbuf.h" 1 3 4 234s 1949: # 65 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 77 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 234s 1949: namespace __detail 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline _Tp* 234s 1949: __get_temporary_buffer(ptrdiff_t __len) noexcept 234s 1949: { 234s 1949: if (__builtin_expect(size_t(__len) > (size_t(-1) / sizeof(_Tp)), 0)) 234s 1949: return 0; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return (_Tp*) __builtin_operator_new(__len * sizeof(_Tp), nothrow_t()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: __return_temporary_buffer(_Tp* __p, 234s 1949: size_t __len __attribute__((__unused__))) 234s 1949: { 234s 1949: # 118 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 234s 1949: __builtin_operator_delete((__p), (__len) * sizeof(_Tp)); 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: # 140 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 234s 1949: template 234s 1949: 234s 1949: pair<_Tp*, ptrdiff_t> 234s 1949: get_temporary_buffer(ptrdiff_t __len) noexcept 234s 1949: { 234s 1949: const ptrdiff_t __max = 234s 1949: __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 234s 1949: if (__len > __max) 234s 1949: __len = __max; 234s 1949: 234s 1949: while (__len > 0) 234s 1949: { 234s 1949: if (_Tp* __tmp = __detail::__get_temporary_buffer<_Tp>(__len)) 234s 1949: return pair<_Tp*, ptrdiff_t>(__tmp, __len); 234s 1949: __len = __len == 1 ? 0 : ((__len + 1) / 2); 234s 1949: } 234s 1949: return pair<_Tp*, ptrdiff_t>(); 234s 1949: } 234s 1949: # 166 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: return_temporary_buffer(_Tp* __p) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __builtin_operator_delete(__p); 234s 1949: } 234s 1949: # 187 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 234s 1949: template 234s 1949: class _Temporary_buffer 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: typedef _Tp value_type; 234s 1949: typedef value_type* pointer; 234s 1949: typedef pointer iterator; 234s 1949: typedef ptrdiff_t size_type; 234s 1949: 234s 1949: protected: 234s 1949: size_type _M_original_len; 234s 1949: struct _Impl 234s 1949: { 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: explicit 234s 1949: _Impl(ptrdiff_t __original_len) 234s 1949: { 234s 1949: pair __p( 234s 1949: std::get_temporary_buffer(__original_len)); 234s 1949: _M_len = __p.second; 234s 1949: _M_buffer = __p.first; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: ~_Impl() 234s 1949: { std::__detail::__return_temporary_buffer(_M_buffer, _M_len); } 234s 1949: 234s 1949: size_type _M_len; 234s 1949: pointer _M_buffer; 234s 1949: } _M_impl; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: size_type 234s 1949: size() const 234s 1949: { return _M_impl._M_len; } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: requested_size() const 234s 1949: { return _M_original_len; } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: begin() 234s 1949: { return _M_impl._M_buffer; } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: end() 234s 1949: { return _M_impl._M_buffer + _M_impl._M_len; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len); 234s 1949: 234s 1949: ~_Temporary_buffer() 234s 1949: { std::_Destroy(_M_impl._M_buffer, _M_impl._M_buffer + _M_impl._M_len); } 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: _Temporary_buffer(const _Temporary_buffer&); 234s 1949: 234s 1949: void 234s 1949: operator=(const _Temporary_buffer&); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __uninitialized_construct_buf_dispatch 234s 1949: { 234s 1949: template 234s 1949: static void 234s 1949: __ucr(_Pointer __first, _Pointer __last, 234s 1949: _ForwardIterator __seed) 234s 1949: { 234s 1949: if (__builtin_expect(__first == __last, 0)) 234s 1949: return; 234s 1949: 234s 1949: _Pointer __cur = __first; 234s 1949: try 234s 1949: { 234s 1949: std::_Construct(std::__addressof(*__first), 234s 1949: std::move(*__seed)); 234s 1949: _Pointer __prev = __cur; 234s 1949: ++__cur; 234s 1949: for(; __cur != __last; ++__cur, ++__prev) 234s 1949: std::_Construct(std::__addressof(*__cur), 234s 1949: std::move(*__prev)); 234s 1949: *__seed = std::move(*__prev); 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: std::_Destroy(__first, __cur); 234s 1949: throw; 234s 1949: } 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __uninitialized_construct_buf_dispatch 234s 1949: { 234s 1949: template 234s 1949: static void 234s 1949: __ucr(_Pointer, _Pointer, _ForwardIterator) { } 234s 1949: }; 234s 1949: # 311 "/usr/include/c++/15/bits/stl_tempbuf.h" 3 4 234s 1949: template 234s 1949: inline void 234s 1949: __uninitialized_construct_buf(_Tp* __first, _Tp* __last, 234s 1949: _ForwardIterator __seed) 234s 1949: { 234s 1949: std::__uninitialized_construct_buf_dispatch< 234s 1949: __has_trivial_constructor(_Tp)>:: 234s 1949: __ucr(__first, __last, __seed); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _Temporary_buffer<_ForwardIterator, _Tp>:: 234s 1949: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len) 234s 1949: : _M_original_len(__original_len), _M_impl(__original_len) 234s 1949: { 234s 1949: std::__uninitialized_construct_buf(begin(), end(), __seed); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 70 "/usr/include/c++/15/bits/stl_algo.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, 234s 1949: _Iterator __c, _Compare __comp) 234s 1949: { 234s 1949: if (__comp(__a, __b)) 234s 1949: { 234s 1949: if (__comp(__b, __c)) 234s 1949: std::iter_swap(__result, __b); 234s 1949: else if (__comp(__a, __c)) 234s 1949: std::iter_swap(__result, __c); 234s 1949: else 234s 1949: std::iter_swap(__result, __a); 234s 1949: } 234s 1949: else if (__comp(__a, __c)) 234s 1949: std::iter_swap(__result, __a); 234s 1949: else if (__comp(__b, __c)) 234s 1949: std::iter_swap(__result, __c); 234s 1949: else 234s 1949: std::iter_swap(__result, __b); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _InputIterator 234s 1949: __find_if_not(_InputIterator __first, _InputIterator __last, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: return std::__find_if(__first, __last, 234s 1949: __gnu_cxx::__ops::__negate(__pred)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _InputIterator 234s 1949: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) 234s 1949: { 234s 1949: for (; __len; --__len, (void) ++__first) 234s 1949: if (!__pred(__first)) 234s 1949: break; 234s 1949: return __first; 234s 1949: } 234s 1949: # 150 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Integer __count, _UnaryPredicate __unary_pred, 234s 1949: std::forward_iterator_tag) 234s 1949: { 234s 1949: __first = std::__find_if(__first, __last, __unary_pred); 234s 1949: while (__first != __last) 234s 1949: { 234s 1949: typename iterator_traits<_ForwardIterator>::difference_type 234s 1949: __n = __count; 234s 1949: _ForwardIterator __i = __first; 234s 1949: ++__i; 234s 1949: while (__i != __last && __n != 1 && __unary_pred(__i)) 234s 1949: { 234s 1949: ++__i; 234s 1949: --__n; 234s 1949: } 234s 1949: if (__n == 1) 234s 1949: return __first; 234s 1949: if (__i == __last) 234s 1949: return __last; 234s 1949: __first = std::__find_if(++__i, __last, __unary_pred); 234s 1949: } 234s 1949: return __last; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _RandomAccessIter 234s 1949: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, 234s 1949: _Integer __count, _UnaryPredicate __unary_pred, 234s 1949: std::random_access_iterator_tag) 234s 1949: { 234s 1949: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: _DistanceType __tailSize = __last - __first; 234s 1949: _DistanceType __remainder = __count; 234s 1949: 234s 1949: while (__remainder <= __tailSize) 234s 1949: { 234s 1949: __first += __remainder; 234s 1949: __tailSize -= __remainder; 234s 1949: 234s 1949: 234s 1949: _RandomAccessIter __backTrack = __first; 234s 1949: while (__unary_pred(--__backTrack)) 234s 1949: { 234s 1949: if (--__remainder == 0) 234s 1949: return (__first - __count); 234s 1949: } 234s 1949: __remainder = __count + 1 - (__first - __backTrack); 234s 1949: } 234s 1949: return __last; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __search_n(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Integer __count, 234s 1949: _UnaryPredicate __unary_pred) 234s 1949: { 234s 1949: if (__count <= 0) 234s 1949: return __first; 234s 1949: 234s 1949: if (__count == 1) 234s 1949: return std::__find_if(__first, __last, __unary_pred); 234s 1949: 234s 1949: return std::__search_n_aux(__first, __last, __count, __unary_pred, 234s 1949: std::__iterator_category(__first)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator1 234s 1949: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 234s 1949: forward_iterator_tag, forward_iterator_tag, 234s 1949: _BinaryPredicate __comp) 234s 1949: { 234s 1949: if (__first2 == __last2) 234s 1949: return __last1; 234s 1949: 234s 1949: _ForwardIterator1 __result = __last1; 234s 1949: while (1) 234s 1949: { 234s 1949: _ForwardIterator1 __new_result 234s 1949: = std::__search(__first1, __last1, __first2, __last2, __comp); 234s 1949: if (__new_result == __last1) 234s 1949: return __result; 234s 1949: else 234s 1949: { 234s 1949: __result = __new_result; 234s 1949: __first1 = __new_result; 234s 1949: ++__first1; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _BidirectionalIterator1 234s 1949: __find_end(_BidirectionalIterator1 __first1, 234s 1949: _BidirectionalIterator1 __last1, 234s 1949: _BidirectionalIterator2 __first2, 234s 1949: _BidirectionalIterator2 __last2, 234s 1949: bidirectional_iterator_tag, bidirectional_iterator_tag, 234s 1949: _BinaryPredicate __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; 234s 1949: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; 234s 1949: 234s 1949: _RevIterator1 __rlast1(__first1); 234s 1949: _RevIterator2 __rlast2(__first2); 234s 1949: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, 234s 1949: _RevIterator2(__last2), __rlast2, 234s 1949: __comp); 234s 1949: 234s 1949: if (__rresult == __rlast1) 234s 1949: return __last1; 234s 1949: else 234s 1949: { 234s 1949: _BidirectionalIterator1 __result = __rresult.base(); 234s 1949: std::advance(__result, -std::distance(__first2, __last2)); 234s 1949: return __result; 234s 1949: } 234s 1949: } 234s 1949: # 324 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator1 234s 1949: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__find_end(__first1, __last1, __first2, __last2, 234s 1949: std::__iterator_category(__first1), 234s 1949: std::__iterator_category(__first2), 234s 1949: __gnu_cxx::__ops::__iter_equal_to_iter()); 234s 1949: } 234s 1949: # 373 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator1 234s 1949: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 234s 1949: _BinaryPredicate __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__find_end(__first1, __last1, __first2, __last2, 234s 1949: std::__iterator_category(__first1), 234s 1949: std::__iterator_category(__first2), 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: # 409 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 234s 1949: { return __last == std::find_if_not(__first, __last, __pred); } 234s 1949: # 427 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 234s 1949: { return __last == std::find_if(__first, __last, __pred); } 234s 1949: # 446 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 234s 1949: { return !std::none_of(__first, __last, __pred); } 234s 1949: # 462 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _InputIterator 234s 1949: find_if_not(_InputIterator __first, _InputIterator __last, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: return std::__find_if_not(__first, __last, 234s 1949: __gnu_cxx::__ops::__pred_iter(__pred)); 234s 1949: } 234s 1949: # 487 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: is_partitioned(_InputIterator __first, _InputIterator __last, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: __first = std::find_if_not(__first, __last, __pred); 234s 1949: if (__first == __last) 234s 1949: return true; 234s 1949: ++__first; 234s 1949: return std::none_of(__first, __last, __pred); 234s 1949: } 234s 1949: # 509 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: _ForwardIterator 234s 1949: partition_point(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: typedef typename iterator_traits<_ForwardIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: _DistanceType __len = std::distance(__first, __last); 234s 1949: 234s 1949: while (__len > 0) 234s 1949: { 234s 1949: _DistanceType __half = __len >> 1; 234s 1949: _ForwardIterator __middle = __first; 234s 1949: std::advance(__middle, __half); 234s 1949: if (__pred(*__middle)) 234s 1949: { 234s 1949: __first = __middle; 234s 1949: ++__first; 234s 1949: __len = __len - __half - 1; 234s 1949: } 234s 1949: else 234s 1949: __len = __half; 234s 1949: } 234s 1949: return __first; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: __remove_copy_if(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result, _Predicate __pred) 234s 1949: { 234s 1949: for (; __first != __last; ++__first) 234s 1949: if (!__pred(__first)) 234s 1949: { 234s 1949: *__result = *__first; 234s 1949: ++__result; 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: # 576 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: remove_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result, const _Tp& __value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__remove_copy_if(__first, __last, __result, 234s 1949: __gnu_cxx::__ops::__iter_equals_val(__value)); 234s 1949: } 234s 1949: # 609 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: remove_copy_if(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result, _Predicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__remove_copy_if(__first, __last, __result, 234s 1949: __gnu_cxx::__ops::__pred_iter(__pred)); 234s 1949: } 234s 1949: # 644 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: copy_if(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result, _Predicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: for (; __first != __last; ++__first) 234s 1949: if (__pred(*__first)) 234s 1949: { 234s 1949: *__result = *__first; 234s 1949: ++__result; 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: # 681 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const auto __n2 = std::__size_to_integer(__n); 234s 1949: if (__n2 <= 0) 234s 1949: return __result; 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: auto __res = std::__copy_n_a(std::__niter_base(__first), __n2, 234s 1949: std::__niter_base(__result), true); 234s 1949: return std::__niter_wrap(__result, std::move(__res)); 234s 1949: } 234s 1949: # 718 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: pair<_OutputIterator1, _OutputIterator2> 234s 1949: partition_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator1 __out_true, _OutputIterator2 __out_false, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: for (; __first != __last; ++__first) 234s 1949: if (__pred(*__first)) 234s 1949: { 234s 1949: *__out_true = *__first; 234s 1949: ++__out_true; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: *__out_false = *__first; 234s 1949: ++__out_false; 234s 1949: } 234s 1949: 234s 1949: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); 234s 1949: } 234s 1949: # 769 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: remove(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__remove_if(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_equals_val(__value)); 234s 1949: } 234s 1949: # 803 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: remove_if(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__remove_if(__first, __last, 234s 1949: __gnu_cxx::__ops::__pred_iter(__pred)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: if (__first == __last) 234s 1949: return __last; 234s 1949: _ForwardIterator __next = __first; 234s 1949: while (++__next != __last) 234s 1949: { 234s 1949: if (__binary_pred(__first, __next)) 234s 1949: return __first; 234s 1949: __first = __next; 234s 1949: } 234s 1949: return __last; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __unique(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: 234s 1949: __first = std::__adjacent_find(__first, __last, __binary_pred); 234s 1949: if (__first == __last) 234s 1949: return __last; 234s 1949: 234s 1949: 234s 1949: _ForwardIterator __dest = __first; 234s 1949: ++__first; 234s 1949: while (++__first != __last) 234s 1949: if (!__binary_pred(__dest, __first)) 234s 1949: *++__dest = std::move(*__first); 234s 1949: return ++__dest; 234s 1949: } 234s 1949: # 872 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: unique(_ForwardIterator __first, _ForwardIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__unique(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_equal_to_iter()); 234s 1949: } 234s 1949: # 903 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: unique(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__unique(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: __unique_copy(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _OutputIterator __result, _BinaryPredicate __binary_pred, 234s 1949: forward_iterator_tag, output_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _ForwardIterator __next = __first; 234s 1949: *__result = *__first; 234s 1949: while (++__next != __last) 234s 1949: if (!__binary_pred(__first, __next)) 234s 1949: { 234s 1949: __first = __next; 234s 1949: *++__result = *__first; 234s 1949: } 234s 1949: return ++__result; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: __unique_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result, _BinaryPredicate __binary_pred, 234s 1949: input_iterator_tag, output_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typename iterator_traits<_InputIterator>::value_type __value = *__first; 234s 1949: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) 234s 1949: __rebound_pred 234s 1949: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); 234s 1949: *__result = __value; 234s 1949: while (++__first != __last) 234s 1949: if (!__rebound_pred(__first, __value)) 234s 1949: { 234s 1949: __value = *__first; 234s 1949: *++__result = __value; 234s 1949: } 234s 1949: return ++__result; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __unique_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _ForwardIterator __result, _BinaryPredicate __binary_pred, 234s 1949: input_iterator_tag, forward_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: *__result = *__first; 234s 1949: while (++__first != __last) 234s 1949: if (!__binary_pred(__result, __first)) 234s 1949: *++__result = *__first; 234s 1949: return ++__result; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, 234s 1949: bidirectional_iterator_tag) 234s 1949: { 234s 1949: while (true) 234s 1949: if (__first == __last || __first == --__last) 234s 1949: return; 234s 1949: else 234s 1949: { 234s 1949: std::iter_swap(__first, __last); 234s 1949: ++__first; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: random_access_iterator_tag) 234s 1949: { 234s 1949: if (__first == __last) 234s 1949: return; 234s 1949: --__last; 234s 1949: while (__first < __last) 234s 1949: { 234s 1949: std::iter_swap(__first, __last); 234s 1949: ++__first; 234s 1949: --__last; 234s 1949: } 234s 1949: } 234s 1949: # 1064 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: std::__reverse(__first, __last, std::__iterator_category(__first)); 234s 1949: } 234s 1949: # 1092 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, 234s 1949: _OutputIterator __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: while (__first != __last) 234s 1949: { 234s 1949: --__last; 234s 1949: *__result = *__last; 234s 1949: ++__result; 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _EuclideanRingElement 234s 1949: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) 234s 1949: { 234s 1949: while (__n != 0) 234s 1949: { 234s 1949: _EuclideanRingElement __t = __m % __n; 234s 1949: __m = __n; 234s 1949: __n = __t; 234s 1949: } 234s 1949: return __m; 234s 1949: } 234s 1949: 234s 1949: inline namespace _V2 { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __rotate(_ForwardIterator __first, 234s 1949: _ForwardIterator __middle, 234s 1949: _ForwardIterator __last, 234s 1949: forward_iterator_tag) 234s 1949: { 234s 1949: if (__first == __middle) 234s 1949: return __last; 234s 1949: else if (__last == __middle) 234s 1949: return __first; 234s 1949: 234s 1949: _ForwardIterator __first2 = __middle; 234s 1949: do 234s 1949: { 234s 1949: std::iter_swap(__first, __first2); 234s 1949: ++__first; 234s 1949: ++__first2; 234s 1949: if (__first == __middle) 234s 1949: __middle = __first2; 234s 1949: } 234s 1949: while (__first2 != __last); 234s 1949: 234s 1949: _ForwardIterator __ret = __first; 234s 1949: 234s 1949: __first2 = __middle; 234s 1949: 234s 1949: while (__first2 != __last) 234s 1949: { 234s 1949: std::iter_swap(__first, __first2); 234s 1949: ++__first; 234s 1949: ++__first2; 234s 1949: if (__first == __middle) 234s 1949: __middle = __first2; 234s 1949: else if (__first2 == __last) 234s 1949: __first2 = __middle; 234s 1949: } 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _BidirectionalIterator 234s 1949: __rotate(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __middle, 234s 1949: _BidirectionalIterator __last, 234s 1949: bidirectional_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__first == __middle) 234s 1949: return __last; 234s 1949: else if (__last == __middle) 234s 1949: return __first; 234s 1949: 234s 1949: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 234s 1949: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 234s 1949: 234s 1949: while (__first != __middle && __middle != __last) 234s 1949: { 234s 1949: std::iter_swap(__first, --__last); 234s 1949: ++__first; 234s 1949: } 234s 1949: 234s 1949: if (__first == __middle) 234s 1949: { 234s 1949: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 234s 1949: return __last; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 234s 1949: return __first; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _RandomAccessIterator 234s 1949: __rotate(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __middle, 234s 1949: _RandomAccessIterator __last, 234s 1949: random_access_iterator_tag) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__first == __middle) 234s 1949: return __last; 234s 1949: else if (__last == __middle) 234s 1949: return __first; 234s 1949: 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 234s 1949: _Distance; 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::value_type 234s 1949: _ValueType; 234s 1949: 234s 1949: 234s 1949: typedef typename make_unsigned<_Distance>::type _UDistance; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Distance __n = __last - __first; 234s 1949: _Distance __k = __middle - __first; 234s 1949: 234s 1949: if (__k == __n - __k) 234s 1949: { 234s 1949: std::swap_ranges(__first, __middle, __middle); 234s 1949: return __middle; 234s 1949: } 234s 1949: 234s 1949: _RandomAccessIterator __p = __first; 234s 1949: _RandomAccessIterator __ret = __first + (__last - __middle); 234s 1949: 234s 1949: for (;;) 234s 1949: { 234s 1949: if (__k < __n - __k) 234s 1949: { 234s 1949: if (__is_pod(_ValueType) && __k == 1) 234s 1949: { 234s 1949: _ValueType __t = std::move(*__p); 234s 1949: std::move(__p + 1, __p + __n, __p); 234s 1949: *(__p + __n - 1) = std::move(__t); 234s 1949: return __ret; 234s 1949: } 234s 1949: _RandomAccessIterator __q = __p + __k; 234s 1949: for (_Distance __i = 0; __i < __n - __k; ++ __i) 234s 1949: { 234s 1949: std::iter_swap(__p, __q); 234s 1949: ++__p; 234s 1949: ++__q; 234s 1949: } 234s 1949: __n = static_cast<_UDistance>(__n) % static_cast<_UDistance>(__k); 234s 1949: if (__n == 0) 234s 1949: return __ret; 234s 1949: std::swap(__n, __k); 234s 1949: __k = __n - __k; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __k = __n - __k; 234s 1949: if (__is_pod(_ValueType) && __k == 1) 234s 1949: { 234s 1949: _ValueType __t = std::move(*(__p + __n - 1)); 234s 1949: std::move_backward(__p, __p + __n - 1, __p + __n); 234s 1949: *__p = std::move(__t); 234s 1949: return __ret; 234s 1949: } 234s 1949: _RandomAccessIterator __q = __p + __n; 234s 1949: __p = __q - __k; 234s 1949: for (_Distance __i = 0; __i < __n - __k; ++ __i) 234s 1949: { 234s 1949: --__p; 234s 1949: --__q; 234s 1949: std::iter_swap(__p, __q); 234s 1949: } 234s 1949: __n = static_cast<_UDistance>(__n) % static_cast<_UDistance>(__k); 234s 1949: if (__n == 0) 234s 1949: return __ret; 234s 1949: std::swap(__n, __k); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: # 1329 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: rotate(_ForwardIterator __first, _ForwardIterator __middle, 234s 1949: _ForwardIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__rotate(__first, __middle, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: # 1367 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, 234s 1949: _ForwardIterator __last, _OutputIterator __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::copy(__first, __middle, 234s 1949: std::copy(__middle, __last, __result)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __partition(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Predicate __pred, forward_iterator_tag) 234s 1949: { 234s 1949: if (__first == __last) 234s 1949: return __first; 234s 1949: 234s 1949: while (__pred(*__first)) 234s 1949: if (++__first == __last) 234s 1949: return __first; 234s 1949: 234s 1949: _ForwardIterator __next = __first; 234s 1949: 234s 1949: while (++__next != __last) 234s 1949: if (__pred(*__next)) 234s 1949: { 234s 1949: std::iter_swap(__first, __next); 234s 1949: ++__first; 234s 1949: } 234s 1949: 234s 1949: return __first; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _BidirectionalIterator 234s 1949: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, 234s 1949: _Predicate __pred, bidirectional_iterator_tag) 234s 1949: { 234s 1949: while (true) 234s 1949: { 234s 1949: while (true) 234s 1949: if (__first == __last) 234s 1949: return __first; 234s 1949: else if (__pred(*__first)) 234s 1949: ++__first; 234s 1949: else 234s 1949: break; 234s 1949: --__last; 234s 1949: while (true) 234s 1949: if (__first == __last) 234s 1949: return __first; 234s 1949: else if (!bool(__pred(*__last))) 234s 1949: --__last; 234s 1949: else 234s 1949: break; 234s 1949: std::iter_swap(__first, __last); 234s 1949: ++__first; 234s 1949: } 234s 1949: } 234s 1949: # 1448 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __stable_partition_adaptive(_ForwardIterator __first, 234s 1949: _ForwardIterator __last, 234s 1949: _Predicate __pred, _Distance __len, 234s 1949: _Pointer __buffer, 234s 1949: _Distance __buffer_size) 234s 1949: { 234s 1949: if (__len == 1) 234s 1949: return __first; 234s 1949: 234s 1949: if (__len <= __buffer_size) 234s 1949: { 234s 1949: _ForwardIterator __result1 = __first; 234s 1949: _Pointer __result2 = __buffer; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: *__result2 = std::move(*__first); 234s 1949: ++__result2; 234s 1949: ++__first; 234s 1949: for (; __first != __last; ++__first) 234s 1949: if (__pred(__first)) 234s 1949: { 234s 1949: *__result1 = std::move(*__first); 234s 1949: ++__result1; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: *__result2 = std::move(*__first); 234s 1949: ++__result2; 234s 1949: } 234s 1949: 234s 1949: std::move(__buffer, __result2, __result1); 234s 1949: return __result1; 234s 1949: } 234s 1949: 234s 1949: _ForwardIterator __middle = __first; 234s 1949: std::advance(__middle, __len / 2); 234s 1949: _ForwardIterator __left_split = 234s 1949: std::__stable_partition_adaptive(__first, __middle, __pred, 234s 1949: __len / 2, __buffer, 234s 1949: __buffer_size); 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Distance __right_len = __len - __len / 2; 234s 1949: _ForwardIterator __right_split = 234s 1949: std::__find_if_not_n(__middle, __right_len, __pred); 234s 1949: 234s 1949: if (__right_len) 234s 1949: __right_split = 234s 1949: std::__stable_partition_adaptive(__right_split, __last, __pred, 234s 1949: __right_len, 234s 1949: __buffer, __buffer_size); 234s 1949: 234s 1949: return std::rotate(__left_split, __middle, __right_split); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __stable_partition(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: __first = std::__find_if_not(__first, __last, __pred); 234s 1949: 234s 1949: if (__first == __last) 234s 1949: return __first; 234s 1949: 234s 1949: typedef typename iterator_traits<_ForwardIterator>::value_type 234s 1949: _ValueType; 234s 1949: typedef typename iterator_traits<_ForwardIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: const _DistanceType __len = std::distance(__first, __last); 234s 1949: # 1540 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: _Temporary_buffer<_ForwardIterator, _ValueType> 234s 1949: __buf(__first, __len); 234s 1949: return 234s 1949: std::__stable_partition_adaptive(__first, __last, __pred, 234s 1949: __len, 234s 1949: __buf.begin(), 234s 1949: _DistanceType(__buf.size())); 234s 1949: } 234s 1949: # 1566 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: stable_partition(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__stable_partition(__first, __last, 234s 1949: __gnu_cxx::__ops::__pred_iter(__pred)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __heap_select(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __middle, 234s 1949: _RandomAccessIterator __last, _Compare __comp) 234s 1949: { 234s 1949: std::__make_heap(__first, __middle, __comp); 234s 1949: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) 234s 1949: if (__comp(__i, __first)) 234s 1949: std::__pop_heap(__first, __middle, __i, __comp); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _RandomAccessIterator 234s 1949: __partial_sort_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _RandomAccessIterator __result_first, 234s 1949: _RandomAccessIterator __result_last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: typedef typename iterator_traits<_InputIterator>::value_type 234s 1949: _InputValueType; 234s 1949: typedef iterator_traits<_RandomAccessIterator> _RItTraits; 234s 1949: typedef typename _RItTraits::difference_type _DistanceType; 234s 1949: 234s 1949: if (__result_first == __result_last) 234s 1949: return __result_last; 234s 1949: _RandomAccessIterator __result_real_last = __result_first; 234s 1949: while (__first != __last && __result_real_last != __result_last) 234s 1949: { 234s 1949: *__result_real_last = *__first; 234s 1949: ++__result_real_last; 234s 1949: ++__first; 234s 1949: } 234s 1949: 234s 1949: std::__make_heap(__result_first, __result_real_last, __comp); 234s 1949: while (__first != __last) 234s 1949: { 234s 1949: if (__comp(__first, __result_first)) 234s 1949: std::__adjust_heap(__result_first, _DistanceType(0), 234s 1949: _DistanceType(__result_real_last 234s 1949: - __result_first), 234s 1949: _InputValueType(*__first), __comp); 234s 1949: ++__first; 234s 1949: } 234s 1949: std::__sort_heap(__result_first, __result_real_last, __comp); 234s 1949: return __result_real_last; 234s 1949: } 234s 1949: # 1660 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _RandomAccessIterator 234s 1949: partial_sort_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _RandomAccessIterator __result_first, 234s 1949: _RandomAccessIterator __result_last) 234s 1949: { 234s 1949: # 1675 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__partial_sort_copy(__first, __last, 234s 1949: __result_first, __result_last, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 1710 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _RandomAccessIterator 234s 1949: partial_sort_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _RandomAccessIterator __result_first, 234s 1949: _RandomAccessIterator __result_last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: # 1727 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__partial_sort_copy(__first, __last, 234s 1949: __result_first, __result_last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __unguarded_linear_insert(_RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: typename iterator_traits<_RandomAccessIterator>::value_type 234s 1949: __val = std::move(*__last); 234s 1949: _RandomAccessIterator __next = __last; 234s 1949: --__next; 234s 1949: while (__comp(__val, __next)) 234s 1949: { 234s 1949: *__last = std::move(*__next); 234s 1949: __last = __next; 234s 1949: --__next; 234s 1949: } 234s 1949: *__last = std::move(__val); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __insertion_sort(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, _Compare __comp) 234s 1949: { 234s 1949: if (__first == __last) return; 234s 1949: 234s 1949: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 234s 1949: { 234s 1949: if (__comp(__i, __first)) 234s 1949: { 234s 1949: typename iterator_traits<_RandomAccessIterator>::value_type 234s 1949: __val = std::move(*__i); 234s 1949: std::move_backward(__first, __i, __i + 1); 234s 1949: *__first = std::move(__val); 234s 1949: } 234s 1949: else 234s 1949: std::__unguarded_linear_insert(__i, 234s 1949: __gnu_cxx::__ops::__val_comp_iter(__comp)); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __unguarded_insertion_sort(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, _Compare __comp) 234s 1949: { 234s 1949: for (_RandomAccessIterator __i = __first; __i != __last; ++__i) 234s 1949: std::__unguarded_linear_insert(__i, 234s 1949: __gnu_cxx::__ops::__val_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum { _S_threshold = 16 }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __final_insertion_sort(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, _Compare __comp) 234s 1949: { 234s 1949: if (__last - __first > int(_S_threshold)) 234s 1949: { 234s 1949: std::__insertion_sort(__first, __first + int(_S_threshold), __comp); 234s 1949: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, 234s 1949: __comp); 234s 1949: } 234s 1949: else 234s 1949: std::__insertion_sort(__first, __last, __comp); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _RandomAccessIterator 234s 1949: __unguarded_partition(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, 234s 1949: _RandomAccessIterator __pivot, _Compare __comp) 234s 1949: { 234s 1949: while (true) 234s 1949: { 234s 1949: while (__comp(__first, __pivot)) 234s 1949: ++__first; 234s 1949: --__last; 234s 1949: while (__comp(__pivot, __last)) 234s 1949: --__last; 234s 1949: if (!(__first < __last)) 234s 1949: return __first; 234s 1949: std::iter_swap(__first, __last); 234s 1949: ++__first; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _RandomAccessIterator 234s 1949: __unguarded_partition_pivot(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, _Compare __comp) 234s 1949: { 234s 1949: _RandomAccessIterator __mid = __first + (__last - __first) / 2; 234s 1949: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, 234s 1949: __comp); 234s 1949: return std::__unguarded_partition(__first + 1, __last, __first, __comp); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __partial_sort(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __middle, 234s 1949: _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: std::__heap_select(__first, __middle, __last, __comp); 234s 1949: std::__sort_heap(__first, __middle, __comp); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __introsort_loop(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, 234s 1949: _Size __depth_limit, _Compare __comp) 234s 1949: { 234s 1949: while (__last - __first > int(_S_threshold)) 234s 1949: { 234s 1949: if (__depth_limit == 0) 234s 1949: { 234s 1949: std::__partial_sort(__first, __last, __last, __comp); 234s 1949: return; 234s 1949: } 234s 1949: --__depth_limit; 234s 1949: _RandomAccessIterator __cut = 234s 1949: std::__unguarded_partition_pivot(__first, __last, __comp); 234s 1949: std::__introsort_loop(__cut, __last, __depth_limit, __comp); 234s 1949: __last = __cut; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: if (__first != __last) 234s 1949: { 234s 1949: std::__introsort_loop(__first, __last, 234s 1949: std::__lg(__last - __first) * 2, 234s 1949: __comp); 234s 1949: std::__final_insertion_sort(__first, __last, __comp); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, 234s 1949: _RandomAccessIterator __last, _Size __depth_limit, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: while (__last - __first > 3) 234s 1949: { 234s 1949: if (__depth_limit == 0) 234s 1949: { 234s 1949: std::__heap_select(__first, __nth + 1, __last, __comp); 234s 1949: 234s 1949: std::iter_swap(__first, __nth); 234s 1949: return; 234s 1949: } 234s 1949: --__depth_limit; 234s 1949: _RandomAccessIterator __cut = 234s 1949: std::__unguarded_partition_pivot(__first, __last, __comp); 234s 1949: if (__cut <= __nth) 234s 1949: __first = __cut; 234s 1949: else 234s 1949: __last = __cut; 234s 1949: } 234s 1949: std::__insertion_sort(__first, __last, __comp); 234s 1949: } 234s 1949: # 1961 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__lower_bound(__first, __last, __val, 234s 1949: __gnu_cxx::__ops::__iter_comp_val(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __upper_bound(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val, _Compare __comp) 234s 1949: { 234s 1949: typedef typename iterator_traits<_ForwardIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: _DistanceType __len = std::distance(__first, __last); 234s 1949: 234s 1949: while (__len > 0) 234s 1949: { 234s 1949: _DistanceType __half = __len >> 1; 234s 1949: _ForwardIterator __middle = __first; 234s 1949: std::advance(__middle, __half); 234s 1949: if (__comp(__val, __middle)) 234s 1949: __len = __half; 234s 1949: else 234s 1949: { 234s 1949: __first = __middle; 234s 1949: ++__first; 234s 1949: __len = __len - __half - 1; 234s 1949: } 234s 1949: } 234s 1949: return __first; 234s 1949: } 234s 1949: # 2017 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__upper_bound(__first, __last, __val, 234s 1949: __gnu_cxx::__ops::__val_less_iter()); 234s 1949: } 234s 1949: # 2048 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__upper_bound(__first, __last, __val, 234s 1949: __gnu_cxx::__ops::__val_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pair<_ForwardIterator, _ForwardIterator> 234s 1949: __equal_range(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val, 234s 1949: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) 234s 1949: { 234s 1949: typedef typename iterator_traits<_ForwardIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: _DistanceType __len = std::distance(__first, __last); 234s 1949: 234s 1949: while (__len > 0) 234s 1949: { 234s 1949: _DistanceType __half = __len >> 1; 234s 1949: _ForwardIterator __middle = __first; 234s 1949: std::advance(__middle, __half); 234s 1949: if (__comp_it_val(__middle, __val)) 234s 1949: { 234s 1949: __first = __middle; 234s 1949: ++__first; 234s 1949: __len = __len - __half - 1; 234s 1949: } 234s 1949: else if (__comp_val_it(__val, __middle)) 234s 1949: __len = __half; 234s 1949: else 234s 1949: { 234s 1949: _ForwardIterator __left 234s 1949: = std::__lower_bound(__first, __middle, __val, __comp_it_val); 234s 1949: std::advance(__first, __len); 234s 1949: _ForwardIterator __right 234s 1949: = std::__upper_bound(++__middle, __first, __val, __comp_val_it); 234s 1949: return pair<_ForwardIterator, _ForwardIterator>(__left, __right); 234s 1949: } 234s 1949: } 234s 1949: return pair<_ForwardIterator, _ForwardIterator>(__first, __first); 234s 1949: } 234s 1949: # 2121 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline pair<_ForwardIterator, _ForwardIterator> 234s 1949: equal_range(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__equal_range(__first, __last, __val, 234s 1949: __gnu_cxx::__ops::__iter_less_val(), 234s 1949: __gnu_cxx::__ops::__val_less_iter()); 234s 1949: } 234s 1949: # 2158 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline pair<_ForwardIterator, _ForwardIterator> 234s 1949: equal_range(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__equal_range(__first, __last, __val, 234s 1949: __gnu_cxx::__ops::__iter_comp_val(__comp), 234s 1949: __gnu_cxx::__ops::__val_comp_iter(__comp)); 234s 1949: } 234s 1949: # 2192 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: binary_search(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: _ForwardIterator __i 234s 1949: = std::__lower_bound(__first, __last, __val, 234s 1949: __gnu_cxx::__ops::__iter_less_val()); 234s 1949: return __i != __last && !(__val < *__i); 234s 1949: } 234s 1949: # 2226 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: binary_search(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __val, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: _ForwardIterator __i 234s 1949: = std::__lower_bound(__first, __last, __val, 234s 1949: __gnu_cxx::__ops::__iter_comp_val(__comp)); 234s 1949: return __i != __last && !bool(__comp(__val, *__i)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result, _Compare __comp) 234s 1949: { 234s 1949: while (__first1 != __last1 && __first2 != __last2) 234s 1949: { 234s 1949: if (__comp(__first2, __first1)) 234s 1949: { 234s 1949: *__result = std::move(*__first2); 234s 1949: ++__first2; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: *__result = std::move(*__first1); 234s 1949: ++__first1; 234s 1949: } 234s 1949: ++__result; 234s 1949: } 234s 1949: if (__first1 != __last1) 234s 1949: std::move(__first1, __last1, __result); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, 234s 1949: _BidirectionalIterator1 __last1, 234s 1949: _BidirectionalIterator2 __first2, 234s 1949: _BidirectionalIterator2 __last2, 234s 1949: _BidirectionalIterator3 __result, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: if (__first1 == __last1) 234s 1949: { 234s 1949: std::move_backward(__first2, __last2, __result); 234s 1949: return; 234s 1949: } 234s 1949: else if (__first2 == __last2) 234s 1949: return; 234s 1949: 234s 1949: --__last1; 234s 1949: --__last2; 234s 1949: while (true) 234s 1949: { 234s 1949: if (__comp(__last2, __last1)) 234s 1949: { 234s 1949: *--__result = std::move(*__last1); 234s 1949: if (__first1 == __last1) 234s 1949: { 234s 1949: std::move_backward(__first2, ++__last2, __result); 234s 1949: return; 234s 1949: } 234s 1949: --__last1; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: *--__result = std::move(*__last2); 234s 1949: if (__first2 == __last2) 234s 1949: return; 234s 1949: --__last2; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _BidirectionalIterator1 234s 1949: __rotate_adaptive(_BidirectionalIterator1 __first, 234s 1949: _BidirectionalIterator1 __middle, 234s 1949: _BidirectionalIterator1 __last, 234s 1949: _Distance __len1, _Distance __len2, 234s 1949: _BidirectionalIterator2 __buffer, 234s 1949: _Distance __buffer_size) 234s 1949: { 234s 1949: _BidirectionalIterator2 __buffer_end; 234s 1949: if (__len1 > __len2 && __len2 <= __buffer_size) 234s 1949: { 234s 1949: if (__len2) 234s 1949: { 234s 1949: __buffer_end = std::move(__middle, __last, __buffer); 234s 1949: std::move_backward(__first, __middle, __last); 234s 1949: return std::move(__buffer, __buffer_end, __first); 234s 1949: } 234s 1949: else 234s 1949: return __first; 234s 1949: } 234s 1949: else if (__len1 <= __buffer_size) 234s 1949: { 234s 1949: if (__len1) 234s 1949: { 234s 1949: __buffer_end = std::move(__first, __middle, __buffer); 234s 1949: std::move(__middle, __last, __first); 234s 1949: return std::move_backward(__buffer, __buffer_end, __last); 234s 1949: } 234s 1949: else 234s 1949: return __last; 234s 1949: } 234s 1949: else 234s 1949: return std::rotate(__first, __middle, __last); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __merge_adaptive(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __middle, 234s 1949: _BidirectionalIterator __last, 234s 1949: _Distance __len1, _Distance __len2, 234s 1949: _Pointer __buffer, _Compare __comp) 234s 1949: { 234s 1949: if (__len1 <= __len2) 234s 1949: { 234s 1949: _Pointer __buffer_end = std::move(__first, __middle, __buffer); 234s 1949: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, 234s 1949: __first, __comp); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: _Pointer __buffer_end = std::move(__middle, __last, __buffer); 234s 1949: std::__move_merge_adaptive_backward(__first, __middle, __buffer, 234s 1949: __buffer_end, __last, __comp); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __merge_adaptive_resize(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __middle, 234s 1949: _BidirectionalIterator __last, 234s 1949: _Distance __len1, _Distance __len2, 234s 1949: _Pointer __buffer, _Distance __buffer_size, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: if (__len1 <= __buffer_size || __len2 <= __buffer_size) 234s 1949: std::__merge_adaptive(__first, __middle, __last, 234s 1949: __len1, __len2, __buffer, __comp); 234s 1949: else 234s 1949: { 234s 1949: _BidirectionalIterator __first_cut = __first; 234s 1949: _BidirectionalIterator __second_cut = __middle; 234s 1949: _Distance __len11 = 0; 234s 1949: _Distance __len22 = 0; 234s 1949: if (__len1 > __len2) 234s 1949: { 234s 1949: __len11 = __len1 / 2; 234s 1949: std::advance(__first_cut, __len11); 234s 1949: __second_cut 234s 1949: = std::__lower_bound(__middle, __last, *__first_cut, 234s 1949: __gnu_cxx::__ops::__iter_comp_val(__comp)); 234s 1949: __len22 = std::distance(__middle, __second_cut); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __len22 = __len2 / 2; 234s 1949: std::advance(__second_cut, __len22); 234s 1949: __first_cut 234s 1949: = std::__upper_bound(__first, __middle, *__second_cut, 234s 1949: __gnu_cxx::__ops::__val_comp_iter(__comp)); 234s 1949: __len11 = std::distance(__first, __first_cut); 234s 1949: } 234s 1949: 234s 1949: _BidirectionalIterator __new_middle 234s 1949: = std::__rotate_adaptive(__first_cut, __middle, __second_cut, 234s 1949: _Distance(__len1 - __len11), __len22, 234s 1949: __buffer, __buffer_size); 234s 1949: std::__merge_adaptive_resize(__first, __first_cut, __new_middle, 234s 1949: __len11, __len22, 234s 1949: __buffer, __buffer_size, __comp); 234s 1949: std::__merge_adaptive_resize(__new_middle, __second_cut, __last, 234s 1949: _Distance(__len1 - __len11), 234s 1949: _Distance(__len2 - __len22), 234s 1949: __buffer, __buffer_size, __comp); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __merge_without_buffer(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __middle, 234s 1949: _BidirectionalIterator __last, 234s 1949: _Distance __len1, _Distance __len2, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: if (__len1 == 0 || __len2 == 0) 234s 1949: return; 234s 1949: 234s 1949: if (__len1 + __len2 == 2) 234s 1949: { 234s 1949: if (__comp(__middle, __first)) 234s 1949: std::iter_swap(__first, __middle); 234s 1949: return; 234s 1949: } 234s 1949: 234s 1949: _BidirectionalIterator __first_cut = __first; 234s 1949: _BidirectionalIterator __second_cut = __middle; 234s 1949: _Distance __len11 = 0; 234s 1949: _Distance __len22 = 0; 234s 1949: if (__len1 > __len2) 234s 1949: { 234s 1949: __len11 = __len1 / 2; 234s 1949: std::advance(__first_cut, __len11); 234s 1949: __second_cut 234s 1949: = std::__lower_bound(__middle, __last, *__first_cut, 234s 1949: __gnu_cxx::__ops::__iter_comp_val(__comp)); 234s 1949: __len22 = std::distance(__middle, __second_cut); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __len22 = __len2 / 2; 234s 1949: std::advance(__second_cut, __len22); 234s 1949: __first_cut 234s 1949: = std::__upper_bound(__first, __middle, *__second_cut, 234s 1949: __gnu_cxx::__ops::__val_comp_iter(__comp)); 234s 1949: __len11 = std::distance(__first, __first_cut); 234s 1949: } 234s 1949: 234s 1949: _BidirectionalIterator __new_middle 234s 1949: = std::rotate(__first_cut, __middle, __second_cut); 234s 1949: std::__merge_without_buffer(__first, __first_cut, __new_middle, 234s 1949: __len11, __len22, __comp); 234s 1949: std::__merge_without_buffer(__new_middle, __second_cut, __last, 234s 1949: __len1 - __len11, __len2 - __len22, __comp); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __inplace_merge(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __middle, 234s 1949: _BidirectionalIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: typedef typename iterator_traits<_BidirectionalIterator>::value_type 234s 1949: _ValueType; 234s 1949: typedef typename iterator_traits<_BidirectionalIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: if (__first == __middle || __middle == __last) 234s 1949: return; 234s 1949: 234s 1949: const _DistanceType __len1 = std::distance(__first, __middle); 234s 1949: const _DistanceType __len2 = std::distance(__middle, __last); 234s 1949: # 2510 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; 234s 1949: 234s 1949: 234s 1949: _TmpBuf __buf(__first, std::min(__len1, __len2)); 234s 1949: 234s 1949: if (__builtin_expect(__buf.size() == __buf.requested_size(), true)) 234s 1949: std::__merge_adaptive 234s 1949: (__first, __middle, __last, __len1, __len2, __buf.begin(), __comp); 234s 1949: else if (__builtin_expect(__buf.begin() == 0, false)) 234s 1949: std::__merge_without_buffer 234s 1949: (__first, __middle, __last, __len1, __len2, __comp); 234s 1949: else 234s 1949: std::__merge_adaptive_resize 234s 1949: (__first, __middle, __last, __len1, __len2, __buf.begin(), 234s 1949: _DistanceType(__buf.size()), __comp); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 2549 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: inplace_merge(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __middle, 234s 1949: _BidirectionalIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: std::__inplace_merge(__first, __middle, __last, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 2591 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: inplace_merge(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __middle, 234s 1949: _BidirectionalIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: std::__inplace_merge(__first, __middle, __last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _OutputIterator 234s 1949: __move_merge(_InputIterator __first1, _InputIterator __last1, 234s 1949: _InputIterator __first2, _InputIterator __last2, 234s 1949: _OutputIterator __result, _Compare __comp) 234s 1949: { 234s 1949: while (__first1 != __last1 && __first2 != __last2) 234s 1949: { 234s 1949: if (__comp(__first2, __first1)) 234s 1949: { 234s 1949: *__result = std::move(*__first2); 234s 1949: ++__first2; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: *__result = std::move(*__first1); 234s 1949: ++__first1; 234s 1949: } 234s 1949: ++__result; 234s 1949: } 234s 1949: return std::move(__first2, __last2, std::move(__first1, __last1, __result)) 234s 1949: 234s 1949: ; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __merge_sort_loop(_RandomAccessIterator1 __first, 234s 1949: _RandomAccessIterator1 __last, 234s 1949: _RandomAccessIterator2 __result, _Distance __step_size, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: const _Distance __two_step = 2 * __step_size; 234s 1949: 234s 1949: while (__last - __first >= __two_step) 234s 1949: { 234s 1949: __result = std::__move_merge(__first, __first + __step_size, 234s 1949: __first + __step_size, 234s 1949: __first + __two_step, 234s 1949: __result, __comp); 234s 1949: __first += __two_step; 234s 1949: } 234s 1949: __step_size = std::min(_Distance(__last - __first), __step_size); 234s 1949: 234s 1949: std::__move_merge(__first, __first + __step_size, 234s 1949: __first + __step_size, __last, __result, __comp); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __chunk_insertion_sort(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, 234s 1949: _Distance __chunk_size, _Compare __comp) 234s 1949: { 234s 1949: while (__last - __first >= __chunk_size) 234s 1949: { 234s 1949: std::__insertion_sort(__first, __first + __chunk_size, __comp); 234s 1949: __first += __chunk_size; 234s 1949: } 234s 1949: std::__insertion_sort(__first, __last, __comp); 234s 1949: } 234s 1949: 234s 1949: enum { _S_chunk_size = 7 }; 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __merge_sort_with_buffer(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, 234s 1949: _Pointer __buffer, _Compare __comp) 234s 1949: { 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 234s 1949: _Distance; 234s 1949: 234s 1949: const _Distance __len = __last - __first; 234s 1949: const _Pointer __buffer_last = __buffer + __len; 234s 1949: 234s 1949: _Distance __step_size = _S_chunk_size; 234s 1949: std::__chunk_insertion_sort(__first, __last, __step_size, __comp); 234s 1949: 234s 1949: while (__step_size < __len) 234s 1949: { 234s 1949: std::__merge_sort_loop(__first, __last, __buffer, 234s 1949: __step_size, __comp); 234s 1949: __step_size *= 2; 234s 1949: std::__merge_sort_loop(__buffer, __buffer_last, __first, 234s 1949: __step_size, __comp); 234s 1949: __step_size *= 2; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __stable_sort_adaptive(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __middle, 234s 1949: _RandomAccessIterator __last, 234s 1949: _Pointer __buffer, _Compare __comp) 234s 1949: { 234s 1949: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); 234s 1949: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); 234s 1949: 234s 1949: std::__merge_adaptive(__first, __middle, __last, 234s 1949: __middle - __first, __last - __middle, 234s 1949: __buffer, __comp); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __stable_sort_adaptive_resize(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, 234s 1949: _Pointer __buffer, _Distance __buffer_size, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: const _Distance __len = (__last - __first + 1) / 2; 234s 1949: const _RandomAccessIterator __middle = __first + __len; 234s 1949: if (__len > __buffer_size) 234s 1949: { 234s 1949: std::__stable_sort_adaptive_resize(__first, __middle, __buffer, 234s 1949: __buffer_size, __comp); 234s 1949: std::__stable_sort_adaptive_resize(__middle, __last, __buffer, 234s 1949: __buffer_size, __comp); 234s 1949: std::__merge_adaptive_resize(__first, __middle, __last, 234s 1949: _Distance(__middle - __first), 234s 1949: _Distance(__last - __middle), 234s 1949: __buffer, __buffer_size, 234s 1949: __comp); 234s 1949: } 234s 1949: else 234s 1949: std::__stable_sort_adaptive(__first, __middle, __last, 234s 1949: __buffer, __comp); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __inplace_stable_sort(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __last, _Compare __comp) 234s 1949: { 234s 1949: if (__last - __first < 15) 234s 1949: { 234s 1949: std::__insertion_sort(__first, __last, __comp); 234s 1949: return; 234s 1949: } 234s 1949: _RandomAccessIterator __middle = __first + (__last - __first) / 2; 234s 1949: std::__inplace_stable_sort(__first, __middle, __comp); 234s 1949: std::__inplace_stable_sort(__middle, __last, __comp); 234s 1949: std::__merge_without_buffer(__first, __middle, __last, 234s 1949: __middle - __first, 234s 1949: __last - __middle, 234s 1949: __comp); 234s 1949: } 234s 1949: # 2779 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __includes(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: while (__first1 != __last1 && __first2 != __last2) 234s 1949: { 234s 1949: if (__comp(__first2, __first1)) 234s 1949: return false; 234s 1949: if (!__comp(__first1, __first2)) 234s 1949: ++__first2; 234s 1949: ++__first1; 234s 1949: } 234s 1949: 234s 1949: return __first2 == __last2; 234s 1949: } 234s 1949: # 2817 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: includes(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__includes(__first1, __last1, __first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 2862 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: includes(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__includes(__first1, __last1, __first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: # 2898 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __next_permutation(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __last, _Compare __comp) 234s 1949: { 234s 1949: if (__first == __last) 234s 1949: return false; 234s 1949: _BidirectionalIterator __i = __first; 234s 1949: ++__i; 234s 1949: if (__i == __last) 234s 1949: return false; 234s 1949: __i = __last; 234s 1949: --__i; 234s 1949: 234s 1949: for(;;) 234s 1949: { 234s 1949: _BidirectionalIterator __ii = __i; 234s 1949: --__i; 234s 1949: if (__comp(__i, __ii)) 234s 1949: { 234s 1949: _BidirectionalIterator __j = __last; 234s 1949: while (!__comp(__i, --__j)) 234s 1949: {} 234s 1949: std::iter_swap(__i, __j); 234s 1949: std::__reverse(__ii, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: return true; 234s 1949: } 234s 1949: if (__i == __first) 234s 1949: { 234s 1949: std::__reverse(__first, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: return false; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: # 2948 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: next_permutation(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__next_permutation 234s 1949: (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 2981 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: next_permutation(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __last, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__next_permutation 234s 1949: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __prev_permutation(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __last, _Compare __comp) 234s 1949: { 234s 1949: if (__first == __last) 234s 1949: return false; 234s 1949: _BidirectionalIterator __i = __first; 234s 1949: ++__i; 234s 1949: if (__i == __last) 234s 1949: return false; 234s 1949: __i = __last; 234s 1949: --__i; 234s 1949: 234s 1949: for(;;) 234s 1949: { 234s 1949: _BidirectionalIterator __ii = __i; 234s 1949: --__i; 234s 1949: if (__comp(__ii, __i)) 234s 1949: { 234s 1949: _BidirectionalIterator __j = __last; 234s 1949: while (!__comp(--__j, __i)) 234s 1949: {} 234s 1949: std::iter_swap(__i, __j); 234s 1949: std::__reverse(__ii, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: return true; 234s 1949: } 234s 1949: if (__i == __first) 234s 1949: { 234s 1949: std::__reverse(__first, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: return false; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: # 3051 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: prev_permutation(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__prev_permutation(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 3084 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline bool 234s 1949: prev_permutation(_BidirectionalIterator __first, 234s 1949: _BidirectionalIterator __last, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__prev_permutation(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: __replace_copy_if(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result, 234s 1949: _Predicate __pred, const _Tp& __new_value) 234s 1949: { 234s 1949: for (; __first != __last; ++__first, (void)++__result) 234s 1949: if (__pred(__first)) 234s 1949: *__result = __new_value; 234s 1949: else 234s 1949: *__result = *__first; 234s 1949: return __result; 234s 1949: } 234s 1949: # 3136 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: replace_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result, 234s 1949: const _Tp& __old_value, const _Tp& __new_value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__replace_copy_if(__first, __last, __result, 234s 1949: __gnu_cxx::__ops::__iter_equals_val(__old_value), 234s 1949: __new_value); 234s 1949: } 234s 1949: # 3171 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: replace_copy_if(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result, 234s 1949: _Predicate __pred, const _Tp& __new_value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__replace_copy_if(__first, __last, __result, 234s 1949: __gnu_cxx::__ops::__pred_iter(__pred), 234s 1949: __new_value); 234s 1949: } 234s 1949: # 3200 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: is_sorted(_ForwardIterator __first, _ForwardIterator __last) 234s 1949: { return std::is_sorted_until(__first, __last) == __last; } 234s 1949: # 3215 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: is_sorted(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Compare __comp) 234s 1949: { return std::is_sorted_until(__first, __last, __comp) == __last; } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: if (__first == __last) 234s 1949: return __last; 234s 1949: 234s 1949: _ForwardIterator __next = __first; 234s 1949: for (++__next; __next != __last; __first = __next, (void)++__next) 234s 1949: if (__comp(__next, __first)) 234s 1949: return __next; 234s 1949: return __next; 234s 1949: } 234s 1949: # 3246 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__is_sorted_until(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 3271 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__is_sorted_until(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: # 3297 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline pair 234s 1949: minmax(const _Tp& __a, const _Tp& __b) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return __b < __a ? pair(__b, __a) 234s 1949: : pair(__a, __b); 234s 1949: } 234s 1949: # 3318 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline pair 234s 1949: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) 234s 1949: { 234s 1949: return __comp(__b, __a) ? pair(__b, __a) 234s 1949: : pair(__a, __b); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: pair<_ForwardIterator, _ForwardIterator> 234s 1949: __minmax_element(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: _ForwardIterator __next = __first; 234s 1949: if (__first == __last 234s 1949: || ++__next == __last) 234s 1949: return std::make_pair(__first, __first); 234s 1949: 234s 1949: _ForwardIterator __min{}, __max{}; 234s 1949: if (__comp(__next, __first)) 234s 1949: { 234s 1949: __min = __next; 234s 1949: __max = __first; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __min = __first; 234s 1949: __max = __next; 234s 1949: } 234s 1949: 234s 1949: __first = __next; 234s 1949: ++__first; 234s 1949: 234s 1949: while (__first != __last) 234s 1949: { 234s 1949: __next = __first; 234s 1949: if (++__next == __last) 234s 1949: { 234s 1949: if (__comp(__first, __min)) 234s 1949: __min = __first; 234s 1949: else if (!__comp(__first, __max)) 234s 1949: __max = __first; 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: if (__comp(__next, __first)) 234s 1949: { 234s 1949: if (__comp(__next, __min)) 234s 1949: __min = __next; 234s 1949: if (!__comp(__first, __max)) 234s 1949: __max = __first; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: if (__comp(__first, __min)) 234s 1949: __min = __first; 234s 1949: if (!__comp(__next, __max)) 234s 1949: __max = __next; 234s 1949: } 234s 1949: 234s 1949: __first = __next; 234s 1949: ++__first; 234s 1949: } 234s 1949: 234s 1949: return std::make_pair(__min, __max); 234s 1949: } 234s 1949: # 3398 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline pair<_ForwardIterator, _ForwardIterator> 234s 1949: minmax_element(_ForwardIterator __first, _ForwardIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__minmax_element(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 3426 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline pair<_ForwardIterator, _ForwardIterator> 234s 1949: minmax_element(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__minmax_element(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline pair<_Tp, _Tp> 234s 1949: minmax(initializer_list<_Tp> __l) 234s 1949: { 234s 1949: ; 234s 1949: pair __p = 234s 1949: std::__minmax_element(__l.begin(), __l.end(), 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: return std::make_pair(*__p.first, *__p.second); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline pair<_Tp, _Tp> 234s 1949: minmax(initializer_list<_Tp> __l, _Compare __comp) 234s 1949: { 234s 1949: ; 234s 1949: pair __p = 234s 1949: std::__minmax_element(__l.begin(), __l.end(), 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: return std::make_pair(*__p.first, *__p.second); 234s 1949: } 234s 1949: # 3482 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _BinaryPredicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__is_permutation(__first1, __last1, __first2, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__pred)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 234s 1949: _BinaryPredicate __pred) 234s 1949: { 234s 1949: using _Cat1 234s 1949: = typename iterator_traits<_ForwardIterator1>::iterator_category; 234s 1949: using _Cat2 234s 1949: = typename iterator_traits<_ForwardIterator2>::iterator_category; 234s 1949: using _It1_is_RA = is_same<_Cat1, random_access_iterator_tag>; 234s 1949: using _It2_is_RA = is_same<_Cat2, random_access_iterator_tag>; 234s 1949: constexpr bool __ra_iters = __and_<_It1_is_RA, _It2_is_RA>::value; 234s 1949: if constexpr (__ra_iters) 234s 1949: { 234s 1949: if ((__last1 - __first1) != (__last2 - __first2)) 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: for (; __first1 != __last1 && __first2 != __last2; 234s 1949: ++__first1, (void)++__first2) 234s 1949: if (!__pred(__first1, __first2)) 234s 1949: break; 234s 1949: 234s 1949: if constexpr (__ra_iters) 234s 1949: { 234s 1949: if (__first1 == __last1) 234s 1949: return true; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: auto __d1 = std::distance(__first1, __last1); 234s 1949: auto __d2 = std::distance(__first2, __last2); 234s 1949: if (__d1 == 0 && __d2 == 0) 234s 1949: return true; 234s 1949: if (__d1 != __d2) 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 234s 1949: { 234s 1949: if (__scan != std::__find_if(__first1, __scan, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 234s 1949: continue; 234s 1949: 234s 1949: auto __matches = std::__count_if(__first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 234s 1949: if (0 == __matches 234s 1949: || std::__count_if(__scan, __last1, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 234s 1949: != __matches) 234s 1949: return false; 234s 1949: } 234s 1949: return true; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 3578 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 234s 1949: { 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return 234s 1949: std::__is_permutation(__first1, __last1, __first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_equal_to_iter()); 234s 1949: } 234s 1949: # 3606 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 234s 1949: _BinaryPredicate __pred) 234s 1949: { 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__is_permutation(__first1, __last1, __first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__pred)); 234s 1949: } 234s 1949: # 3684 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: pair<_IntType, _IntType> 234s 1949: __gen_two_uniform_ints(_IntType __b0, _IntType __b1, 234s 1949: _UniformRandomBitGenerator&& __g) 234s 1949: { 234s 1949: _IntType __x 234s 1949: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g); 234s 1949: return std::make_pair(__x / __b1, __x % __b1); 234s 1949: } 234s 1949: # 3706 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _UniformRandomNumberGenerator&& __g) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: if (__first == __last) 234s 1949: return; 234s 1949: 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: typedef typename std::make_unsigned<_DistanceType>::type __ud_type; 234s 1949: typedef typename std::uniform_int_distribution<__ud_type> __distr_type; 234s 1949: typedef typename __distr_type::param_type __p_type; 234s 1949: 234s 1949: typedef typename remove_reference<_UniformRandomNumberGenerator>::type 234s 1949: _Gen; 234s 1949: typedef typename common_type::type 234s 1949: __uc_type; 234s 1949: 234s 1949: const __uc_type __urngrange = __g.max() - __g.min(); 234s 1949: const __uc_type __urange = __uc_type(__last - __first); 234s 1949: 234s 1949: if (__urngrange / __urange >= __urange) 234s 1949: 234s 1949: { 234s 1949: _RandomAccessIterator __i = __first + 1; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if ((__urange % 2) == 0) 234s 1949: { 234s 1949: __distr_type __d{0, 1}; 234s 1949: std::iter_swap(__i++, __first + __d(__g)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: while (__i != __last) 234s 1949: { 234s 1949: const __uc_type __swap_range = __uc_type(__i - __first) + 1; 234s 1949: 234s 1949: const pair<__uc_type, __uc_type> __pospos = 234s 1949: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g); 234s 1949: 234s 1949: std::iter_swap(__i++, __first + __pospos.first); 234s 1949: std::iter_swap(__i++, __first + __pospos.second); 234s 1949: } 234s 1949: 234s 1949: return; 234s 1949: } 234s 1949: 234s 1949: __distr_type __d; 234s 1949: 234s 1949: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 234s 1949: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 3789 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _Function 234s 1949: for_each(_InputIterator __first, _InputIterator __last, _Function __f) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: for (; __first != __last; ++__first) 234s 1949: __f(*__first); 234s 1949: return __f; 234s 1949: } 234s 1949: # 3851 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _InputIterator 234s 1949: find(_InputIterator __first, _InputIterator __last, const _Tp& __val) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: # 3895 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: return std::__find_if(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_equals_val(__val)); 234s 1949: } 234s 1949: # 3909 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _InputIterator 234s 1949: find_if(_InputIterator __first, _InputIterator __last, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__find_if(__first, __last, 234s 1949: __gnu_cxx::__ops::__pred_iter(__pred)); 234s 1949: } 234s 1949: # 3941 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: _InputIterator 234s 1949: find_first_of(_InputIterator __first1, _InputIterator __last1, 234s 1949: _ForwardIterator __first2, _ForwardIterator __last2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: for (; __first1 != __last1; ++__first1) 234s 1949: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 234s 1949: if (*__first1 == *__iter) 234s 1949: return __first1; 234s 1949: return __last1; 234s 1949: } 234s 1949: # 3982 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: _InputIterator 234s 1949: find_first_of(_InputIterator __first1, _InputIterator __last1, 234s 1949: _ForwardIterator __first2, _ForwardIterator __last2, 234s 1949: _BinaryPredicate __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: for (; __first1 != __last1; ++__first1) 234s 1949: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 234s 1949: if (__comp(*__first1, *__iter)) 234s 1949: return __first1; 234s 1949: return __last1; 234s 1949: } 234s 1949: # 4015 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: adjacent_find(_ForwardIterator __first, _ForwardIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__adjacent_find(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_equal_to_iter()); 234s 1949: } 234s 1949: # 4041 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__adjacent_find(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 234s 1949: } 234s 1949: # 4067 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline typename iterator_traits<_InputIterator>::difference_type 234s 1949: count(_InputIterator __first, _InputIterator __last, const _Tp& __value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__count_if(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_equals_val(__value)); 234s 1949: } 234s 1949: # 4091 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline typename iterator_traits<_InputIterator>::difference_type 234s 1949: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__count_if(__first, __last, 234s 1949: __gnu_cxx::__ops::__pred_iter(__pred)); 234s 1949: } 234s 1949: # 4132 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator1 234s 1949: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 234s 1949: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__search(__first1, __last1, __first2, __last2, 234s 1949: __gnu_cxx::__ops::__iter_equal_to_iter()); 234s 1949: } 234s 1949: # 4166 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: search_n(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Integer __count, const _Tp& __val) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__search_n(__first, __last, __count, 234s 1949: __gnu_cxx::__ops::__iter_equals_val(__val)); 234s 1949: } 234s 1949: # 4200 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline _ForwardIterator 234s 1949: search_n(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Integer __count, const _Tp& __val, 234s 1949: _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__search_n(__first, __last, __count, 234s 1949: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); 234s 1949: } 234s 1949: # 4250 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: transform(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result, _UnaryOperation __unary_op) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: for (; __first != __last; ++__first, (void)++__result) 234s 1949: *__result = __unary_op(*__first); 234s 1949: return __result; 234s 1949: } 234s 1949: # 4288 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: transform(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _OutputIterator __result, 234s 1949: _BinaryOperation __binary_op) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) 234s 1949: *__result = __binary_op(*__first1, *__first2); 234s 1949: return __result; 234s 1949: } 234s 1949: # 4322 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: replace(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __old_value, const _Tp& __new_value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: for (; __first != __last; ++__first) 234s 1949: if (*__first == __old_value) 234s 1949: *__first = __new_value; 234s 1949: } 234s 1949: # 4355 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: replace_if(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Predicate __pred, const _Tp& __new_value) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: for (; __first != __last; ++__first) 234s 1949: if (__pred(*__first)) 234s 1949: *__first = __new_value; 234s 1949: } 234s 1949: # 4387 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: generate(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Generator __gen) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: for (; __first != __last; ++__first) 234s 1949: *__first = __gen(); 234s 1949: } 234s 1949: # 4420 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: generate_n(_OutputIterator __first, _Size __n, _Generator __gen) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef __decltype(std::__size_to_integer(__n)) _IntSize; 234s 1949: for (_IntSize __niter = std::__size_to_integer(__n); 234s 1949: __niter > 0; --__niter, (void) ++__first) 234s 1949: *__first = __gen(); 234s 1949: return __first; 234s 1949: } 234s 1949: # 4455 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: unique_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: if (__first == __last) 234s 1949: return __result; 234s 1949: return std::__unique_copy(__first, __last, __result, 234s 1949: __gnu_cxx::__ops::__iter_equal_to_iter(), 234s 1949: std::__iterator_category(__first), 234s 1949: std::__iterator_category(__result)); 234s 1949: } 234s 1949: # 4495 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: unique_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _OutputIterator __result, 234s 1949: _BinaryPredicate __binary_pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: if (__first == __last) 234s 1949: return __result; 234s 1949: return std::__unique_copy(__first, __last, __result, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), 234s 1949: std::__iterator_category(__first), 234s 1949: std::__iterator_category(__result)); 234s 1949: } 234s 1949: # 4534 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) 234s 1949: inline void 234s 1949: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: if (__first == __last) 234s 1949: return; 234s 1949: # 4569 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 234s 1949: { 234s 1949: 234s 1949: _RandomAccessIterator __j = __first 234s 1949: + (std::rand() % ((__i - __first) + 1)); 234s 1949: if (__i != __j) 234s 1949: std::iter_swap(__i, __j); 234s 1949: } 234s 1949: } 234s 1949: # 4597 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) 234s 1949: void 234s 1949: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: 234s 1949: _RandomNumberGenerator&& __rand) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: if (__first == __last) 234s 1949: return; 234s 1949: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 234s 1949: { 234s 1949: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); 234s 1949: if (__i != __j) 234s 1949: std::iter_swap(__i, __j); 234s 1949: } 234s 1949: } 234s 1949: # 4639 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: partition(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: return std::__partition(__first, __last, __pred, 234s 1949: std::__iterator_category(__first)); 234s 1949: } 234s 1949: # 4674 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: partial_sort(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __middle, 234s 1949: _RandomAccessIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: std::__partial_sort(__first, __middle, __last, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 4713 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: partial_sort(_RandomAccessIterator __first, 234s 1949: _RandomAccessIterator __middle, 234s 1949: _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: std::__partial_sort(__first, __middle, __last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: # 4750 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 234s 1949: _RandomAccessIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: if (__first == __last || __nth == __last) 234s 1949: return; 234s 1949: 234s 1949: std::__introselect(__first, __nth, __last, 234s 1949: std::__lg(__last - __first) * 2, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 4790 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 234s 1949: _RandomAccessIterator __last, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: if (__first == __last || __nth == __last) 234s 1949: return; 234s 1949: 234s 1949: std::__introselect(__first, __nth, __last, 234s 1949: std::__lg(__last - __first) * 2, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: # 4828 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 4859 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: __merge(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result, _Compare __comp) 234s 1949: { 234s 1949: while (__first1 != __last1 && __first2 != __last2) 234s 1949: { 234s 1949: if (__comp(__first2, __first1)) 234s 1949: { 234s 1949: *__result = *__first2; 234s 1949: ++__first2; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: *__result = *__first1; 234s 1949: ++__first1; 234s 1949: } 234s 1949: ++__result; 234s 1949: } 234s 1949: return std::copy(__first2, __last2, 234s 1949: std::copy(__first1, __last1, __result)); 234s 1949: } 234s 1949: # 4922 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: merge(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__merge(__first1, __last1, 234s 1949: __first2, __last2, __result, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 4973 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: merge(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__merge(__first1, __last1, 234s 1949: __first2, __last2, __result, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::value_type 234s 1949: _ValueType; 234s 1949: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 234s 1949: _DistanceType; 234s 1949: 234s 1949: if (__first == __last) 234s 1949: return; 234s 1949: # 5022 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; 234s 1949: 234s 1949: 234s 1949: _TmpBuf __buf(__first, (__last - __first + 1) / 2); 234s 1949: 234s 1949: if (__builtin_expect(__buf.requested_size() == __buf.size(), true)) 234s 1949: std::__stable_sort_adaptive(__first, 234s 1949: __first + _DistanceType(__buf.size()), 234s 1949: __last, __buf.begin(), __comp); 234s 1949: else if (__builtin_expect(__buf.begin() == 0, false)) 234s 1949: std::__inplace_stable_sort(__first, __last, __comp); 234s 1949: else 234s 1949: std::__stable_sort_adaptive_resize(__first, __last, __buf.begin(), 234s 1949: _DistanceType(__buf.size()), __comp); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 5058 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: std::__stable_sort(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 5093 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: std::__stable_sort(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: __set_union(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result, _Compare __comp) 234s 1949: { 234s 1949: while (__first1 != __last1 && __first2 != __last2) 234s 1949: { 234s 1949: if (__comp(__first1, __first2)) 234s 1949: { 234s 1949: *__result = *__first1; 234s 1949: ++__first1; 234s 1949: } 234s 1949: else if (__comp(__first2, __first1)) 234s 1949: { 234s 1949: *__result = *__first2; 234s 1949: ++__first2; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: *__result = *__first1; 234s 1949: ++__first1; 234s 1949: ++__first2; 234s 1949: } 234s 1949: ++__result; 234s 1949: } 234s 1949: return std::copy(__first2, __last2, 234s 1949: std::copy(__first1, __last1, __result)); 234s 1949: } 234s 1949: # 5164 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__set_union(__first1, __last1, 234s 1949: __first2, __last2, __result, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 5215 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__set_union(__first1, __last1, 234s 1949: __first2, __last2, __result, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result, _Compare __comp) 234s 1949: { 234s 1949: while (__first1 != __last1 && __first2 != __last2) 234s 1949: if (__comp(__first1, __first2)) 234s 1949: ++__first1; 234s 1949: else if (__comp(__first2, __first1)) 234s 1949: ++__first2; 234s 1949: else 234s 1949: { 234s 1949: *__result = *__first1; 234s 1949: ++__first1; 234s 1949: ++__first2; 234s 1949: ++__result; 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: # 5288 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__set_intersection(__first1, __last1, 234s 1949: __first2, __last2, __result, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 5338 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__set_intersection(__first1, __last1, 234s 1949: __first2, __last2, __result, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result, _Compare __comp) 234s 1949: { 234s 1949: while (__first1 != __last1 && __first2 != __last2) 234s 1949: if (__comp(__first1, __first2)) 234s 1949: { 234s 1949: *__result = *__first1; 234s 1949: ++__first1; 234s 1949: ++__result; 234s 1949: } 234s 1949: else if (__comp(__first2, __first1)) 234s 1949: ++__first2; 234s 1949: else 234s 1949: { 234s 1949: ++__first1; 234s 1949: ++__first2; 234s 1949: } 234s 1949: return std::copy(__first1, __last1, __result); 234s 1949: } 234s 1949: # 5413 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__set_difference(__first1, __last1, 234s 1949: __first2, __last2, __result, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 5465 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result, _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__set_difference(__first1, __last1, 234s 1949: __first2, __last2, __result, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _OutputIterator 234s 1949: __set_symmetric_difference(_InputIterator1 __first1, 234s 1949: _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, 234s 1949: _InputIterator2 __last2, 234s 1949: _OutputIterator __result, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: while (__first1 != __last1 && __first2 != __last2) 234s 1949: if (__comp(__first1, __first2)) 234s 1949: { 234s 1949: *__result = *__first1; 234s 1949: ++__first1; 234s 1949: ++__result; 234s 1949: } 234s 1949: else if (__comp(__first2, __first1)) 234s 1949: { 234s 1949: *__result = *__first2; 234s 1949: ++__first2; 234s 1949: ++__result; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: ++__first1; 234s 1949: ++__first2; 234s 1949: } 234s 1949: return std::copy(__first2, __last2, 234s 1949: std::copy(__first1, __last1, __result)); 234s 1949: } 234s 1949: # 5546 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__set_symmetric_difference(__first1, __last1, 234s 1949: __first2, __last2, __result, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 5598 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _OutputIterator 234s 1949: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, _InputIterator2 __last2, 234s 1949: _OutputIterator __result, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__set_symmetric_difference(__first1, __last1, 234s 1949: __first2, __last2, __result, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _ForwardIterator 234s 1949: __min_element(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: if (__first == __last) 234s 1949: return __first; 234s 1949: _ForwardIterator __result = __first; 234s 1949: while (++__first != __last) 234s 1949: if (__comp(__first, __result)) 234s 1949: __result = __first; 234s 1949: return __result; 234s 1949: } 234s 1949: # 5652 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: _ForwardIterator 234s 1949: inline min_element(_ForwardIterator __first, _ForwardIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__min_element(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 5677 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _ForwardIterator 234s 1949: min_element(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__min_element(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _ForwardIterator 234s 1949: __max_element(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: if (__first == __last) return __first; 234s 1949: _ForwardIterator __result = __first; 234s 1949: while (++__first != __last) 234s 1949: if (__comp(__result, __first)) 234s 1949: __result = __first; 234s 1949: return __result; 234s 1949: } 234s 1949: # 5716 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _ForwardIterator 234s 1949: max_element(_ForwardIterator __first, _ForwardIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__max_element(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: # 5741 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: inline _ForwardIterator 234s 1949: max_element(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: _Compare __comp) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: ; 234s 1949: 234s 1949: return std::__max_element(__first, __last, 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: inline _Tp 234s 1949: min(initializer_list<_Tp> __l) 234s 1949: { 234s 1949: ; 234s 1949: return *std::__min_element(__l.begin(), __l.end(), 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: inline _Tp 234s 1949: min(initializer_list<_Tp> __l, _Compare __comp) 234s 1949: { 234s 1949: ; 234s 1949: return *std::__min_element(__l.begin(), __l.end(), 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: inline _Tp 234s 1949: max(initializer_list<_Tp> __l) 234s 1949: { 234s 1949: ; 234s 1949: return *std::__max_element(__l.begin(), __l.end(), 234s 1949: __gnu_cxx::__ops::__iter_less_iter()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: inline _Tp 234s 1949: max(initializer_list<_Tp> __l, _Compare __comp) 234s 1949: { 234s 1949: ; 234s 1949: return *std::__max_element(__l.begin(), __l.end(), 234s 1949: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _RandomAccessIterator 234s 1949: __sample(_InputIterator __first, _InputIterator __last, input_iterator_tag, 234s 1949: _RandomAccessIterator __out, random_access_iterator_tag, 234s 1949: _Size __n, _UniformRandomBitGenerator&& __g) 234s 1949: { 234s 1949: using __distrib_type = uniform_int_distribution<_Size>; 234s 1949: using __param_type = typename __distrib_type::param_type; 234s 1949: __distrib_type __d{}; 234s 1949: _Size __sample_sz = 0; 234s 1949: while (__first != __last && __sample_sz != __n) 234s 1949: { 234s 1949: __out[__sample_sz++] = *__first; 234s 1949: ++__first; 234s 1949: } 234s 1949: for (auto __pop_sz = __sample_sz; __first != __last; 234s 1949: ++__first, (void) ++__pop_sz) 234s 1949: { 234s 1949: const auto __k = __d(__g, __param_type{0, __pop_sz}); 234s 1949: if (__k < __n) 234s 1949: __out[__k] = *__first; 234s 1949: } 234s 1949: return __out + __sample_sz; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _OutputIterator 234s 1949: __sample(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: forward_iterator_tag, 234s 1949: _OutputIterator __out, _Cat, 234s 1949: _Size __n, _UniformRandomBitGenerator&& __g) 234s 1949: { 234s 1949: using __distrib_type = uniform_int_distribution<_Size>; 234s 1949: using __param_type = typename __distrib_type::param_type; 234s 1949: using _USize = make_unsigned_t<_Size>; 234s 1949: using _Gen = remove_reference_t<_UniformRandomBitGenerator>; 234s 1949: using __uc_type = common_type_t; 234s 1949: 234s 1949: if (__first == __last) 234s 1949: return __out; 234s 1949: 234s 1949: __distrib_type __d{}; 234s 1949: _Size __unsampled_sz = std::distance(__first, __last); 234s 1949: __n = std::min(__n, __unsampled_sz); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const __uc_type __urngrange = __g.max() - __g.min(); 234s 1949: if (__urngrange / __uc_type(__unsampled_sz) >= __uc_type(__unsampled_sz)) 234s 1949: 234s 1949: 234s 1949: { 234s 1949: while (__n != 0 && __unsampled_sz >= 2) 234s 1949: { 234s 1949: const pair<_Size, _Size> __p = 234s 1949: __gen_two_uniform_ints(__unsampled_sz, __unsampled_sz - 1, __g); 234s 1949: 234s 1949: --__unsampled_sz; 234s 1949: if (__p.first < __n) 234s 1949: { 234s 1949: *__out++ = *__first; 234s 1949: --__n; 234s 1949: } 234s 1949: 234s 1949: ++__first; 234s 1949: 234s 1949: if (__n == 0) break; 234s 1949: 234s 1949: --__unsampled_sz; 234s 1949: if (__p.second < __n) 234s 1949: { 234s 1949: *__out++ = *__first; 234s 1949: --__n; 234s 1949: } 234s 1949: 234s 1949: ++__first; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: for (; __n != 0; ++__first) 234s 1949: if (__d(__g, __param_type{0, --__unsampled_sz}) < __n) 234s 1949: { 234s 1949: *__out++ = *__first; 234s 1949: --__n; 234s 1949: } 234s 1949: return __out; 234s 1949: } 234s 1949: # 5929 "/usr/include/c++/15/bits/stl_algo.h" 3 4 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 64 "/usr/include/c++/15/algorithm" 2 3 4 234s 1949: # 80 "/usr/include/c++/15/algorithm" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 81 "/usr/include/c++/15/algorithm" 2 3 4 234s 1949: # 3169 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/iomanip" 1 3 4 234s 1949: # 40 "/usr/include/c++/15/iomanip" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: # 50 "/usr/include/c++/15/iomanip" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 51 "/usr/include/c++/15/iomanip" 2 3 4 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/locale" 1 3 4 234s 1949: # 45 "/usr/include/c++/15/locale" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/locale_facets_nonio.h" 1 3 4 234s 1949: # 43 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 54 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: class time_base 234s 1949: { 234s 1949: public: 234s 1949: enum dateorder { no_order, dmy, mdy, ymd, ydm }; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __timepunct_cache : public locale::facet 234s 1949: { 234s 1949: 234s 1949: static const _CharT* _S_timezones[14]; 234s 1949: 234s 1949: const _CharT* _M_date_format; 234s 1949: const _CharT* _M_date_era_format; 234s 1949: const _CharT* _M_time_format; 234s 1949: const _CharT* _M_time_era_format; 234s 1949: const _CharT* _M_date_time_format; 234s 1949: const _CharT* _M_date_time_era_format; 234s 1949: const _CharT* _M_am; 234s 1949: const _CharT* _M_pm; 234s 1949: const _CharT* _M_am_pm_format; 234s 1949: 234s 1949: 234s 1949: const _CharT* _M_day1; 234s 1949: const _CharT* _M_day2; 234s 1949: const _CharT* _M_day3; 234s 1949: const _CharT* _M_day4; 234s 1949: const _CharT* _M_day5; 234s 1949: const _CharT* _M_day6; 234s 1949: const _CharT* _M_day7; 234s 1949: 234s 1949: 234s 1949: const _CharT* _M_aday1; 234s 1949: const _CharT* _M_aday2; 234s 1949: const _CharT* _M_aday3; 234s 1949: const _CharT* _M_aday4; 234s 1949: const _CharT* _M_aday5; 234s 1949: const _CharT* _M_aday6; 234s 1949: const _CharT* _M_aday7; 234s 1949: 234s 1949: 234s 1949: const _CharT* _M_month01; 234s 1949: const _CharT* _M_month02; 234s 1949: const _CharT* _M_month03; 234s 1949: const _CharT* _M_month04; 234s 1949: const _CharT* _M_month05; 234s 1949: const _CharT* _M_month06; 234s 1949: const _CharT* _M_month07; 234s 1949: const _CharT* _M_month08; 234s 1949: const _CharT* _M_month09; 234s 1949: const _CharT* _M_month10; 234s 1949: const _CharT* _M_month11; 234s 1949: const _CharT* _M_month12; 234s 1949: 234s 1949: 234s 1949: const _CharT* _M_amonth01; 234s 1949: const _CharT* _M_amonth02; 234s 1949: const _CharT* _M_amonth03; 234s 1949: const _CharT* _M_amonth04; 234s 1949: const _CharT* _M_amonth05; 234s 1949: const _CharT* _M_amonth06; 234s 1949: const _CharT* _M_amonth07; 234s 1949: const _CharT* _M_amonth08; 234s 1949: const _CharT* _M_amonth09; 234s 1949: const _CharT* _M_amonth10; 234s 1949: const _CharT* _M_amonth11; 234s 1949: const _CharT* _M_amonth12; 234s 1949: 234s 1949: bool _M_allocated; 234s 1949: 234s 1949: __timepunct_cache(size_t __refs = 0) : facet(__refs), 234s 1949: _M_date_format(0), _M_date_era_format(0), _M_time_format(0), 234s 1949: _M_time_era_format(0), _M_date_time_format(0), 234s 1949: _M_date_time_era_format(0), _M_am(0), _M_pm(0), 234s 1949: _M_am_pm_format(0), _M_day1(0), _M_day2(0), _M_day3(0), 234s 1949: _M_day4(0), _M_day5(0), _M_day6(0), _M_day7(0), 234s 1949: _M_aday1(0), _M_aday2(0), _M_aday3(0), _M_aday4(0), 234s 1949: _M_aday5(0), _M_aday6(0), _M_aday7(0), _M_month01(0), 234s 1949: _M_month02(0), _M_month03(0), _M_month04(0), _M_month05(0), 234s 1949: _M_month06(0), _M_month07(0), _M_month08(0), _M_month09(0), 234s 1949: _M_month10(0), _M_month11(0), _M_month12(0), _M_amonth01(0), 234s 1949: _M_amonth02(0), _M_amonth03(0), _M_amonth04(0), 234s 1949: _M_amonth05(0), _M_amonth06(0), _M_amonth07(0), 234s 1949: _M_amonth08(0), _M_amonth09(0), _M_amonth10(0), 234s 1949: _M_amonth11(0), _M_amonth12(0), _M_allocated(false) 234s 1949: { } 234s 1949: 234s 1949: ~__timepunct_cache(); 234s 1949: 234s 1949: private: 234s 1949: __timepunct_cache& 234s 1949: operator=(const __timepunct_cache&); 234s 1949: 234s 1949: explicit 234s 1949: __timepunct_cache(const __timepunct_cache&); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: __timepunct_cache<_CharT>::~__timepunct_cache() 234s 1949: { 234s 1949: if (_M_allocated) 234s 1949: { 234s 1949: 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: const char* 234s 1949: __timepunct_cache::_S_timezones[14]; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: const wchar_t* 234s 1949: __timepunct_cache::_S_timezones[14]; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: const _CharT* __timepunct_cache<_CharT>::_S_timezones[14]; 234s 1949: 234s 1949: template 234s 1949: class __timepunct : public locale::facet 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT __char_type; 234s 1949: typedef __timepunct_cache<_CharT> __cache_type; 234s 1949: 234s 1949: protected: 234s 1949: __cache_type* _M_data; 234s 1949: __c_locale _M_c_locale_timepunct; 234s 1949: const char* _M_name_timepunct; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: static locale::id id; 234s 1949: 234s 1949: explicit 234s 1949: __timepunct(size_t __refs = 0); 234s 1949: 234s 1949: explicit 234s 1949: __timepunct(__cache_type* __cache, size_t __refs = 0); 234s 1949: # 208 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: explicit 234s 1949: __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0); 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format, 234s 1949: const tm* __tm) const throw (); 234s 1949: 234s 1949: void 234s 1949: _M_date_formats(const _CharT** __date) const 234s 1949: { 234s 1949: 234s 1949: __date[0] = _M_data->_M_date_format; 234s 1949: __date[1] = _M_data->_M_date_era_format; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_time_formats(const _CharT** __time) const 234s 1949: { 234s 1949: 234s 1949: __time[0] = _M_data->_M_time_format; 234s 1949: __time[1] = _M_data->_M_time_era_format; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_date_time_formats(const _CharT** __dt) const 234s 1949: { 234s 1949: 234s 1949: __dt[0] = _M_data->_M_date_time_format; 234s 1949: __dt[1] = _M_data->_M_date_time_era_format; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_am_pm_format(const _CharT*) const 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_am_pm_format(const _CharT** __ampm_format) const 234s 1949: { 234s 1949: __ampm_format[0] = _M_data->_M_am_pm_format; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_am_pm(const _CharT** __ampm) const 234s 1949: { 234s 1949: __ampm[0] = _M_data->_M_am; 234s 1949: __ampm[1] = _M_data->_M_pm; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_days(const _CharT** __days) const 234s 1949: { 234s 1949: __days[0] = _M_data->_M_day1; 234s 1949: __days[1] = _M_data->_M_day2; 234s 1949: __days[2] = _M_data->_M_day3; 234s 1949: __days[3] = _M_data->_M_day4; 234s 1949: __days[4] = _M_data->_M_day5; 234s 1949: __days[5] = _M_data->_M_day6; 234s 1949: __days[6] = _M_data->_M_day7; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_days_abbreviated(const _CharT** __days) const 234s 1949: { 234s 1949: __days[0] = _M_data->_M_aday1; 234s 1949: __days[1] = _M_data->_M_aday2; 234s 1949: __days[2] = _M_data->_M_aday3; 234s 1949: __days[3] = _M_data->_M_aday4; 234s 1949: __days[4] = _M_data->_M_aday5; 234s 1949: __days[5] = _M_data->_M_aday6; 234s 1949: __days[6] = _M_data->_M_aday7; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_months(const _CharT** __months) const 234s 1949: { 234s 1949: __months[0] = _M_data->_M_month01; 234s 1949: __months[1] = _M_data->_M_month02; 234s 1949: __months[2] = _M_data->_M_month03; 234s 1949: __months[3] = _M_data->_M_month04; 234s 1949: __months[4] = _M_data->_M_month05; 234s 1949: __months[5] = _M_data->_M_month06; 234s 1949: __months[6] = _M_data->_M_month07; 234s 1949: __months[7] = _M_data->_M_month08; 234s 1949: __months[8] = _M_data->_M_month09; 234s 1949: __months[9] = _M_data->_M_month10; 234s 1949: __months[10] = _M_data->_M_month11; 234s 1949: __months[11] = _M_data->_M_month12; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_months_abbreviated(const _CharT** __months) const 234s 1949: { 234s 1949: __months[0] = _M_data->_M_amonth01; 234s 1949: __months[1] = _M_data->_M_amonth02; 234s 1949: __months[2] = _M_data->_M_amonth03; 234s 1949: __months[3] = _M_data->_M_amonth04; 234s 1949: __months[4] = _M_data->_M_amonth05; 234s 1949: __months[5] = _M_data->_M_amonth06; 234s 1949: __months[6] = _M_data->_M_amonth07; 234s 1949: __months[7] = _M_data->_M_amonth08; 234s 1949: __months[8] = _M_data->_M_amonth09; 234s 1949: __months[9] = _M_data->_M_amonth10; 234s 1949: __months[10] = _M_data->_M_amonth11; 234s 1949: __months[11] = _M_data->_M_amonth12; 234s 1949: } 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~__timepunct(); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_initialize_timepunct(__c_locale __cloc = 0); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id __timepunct<_CharT>::id; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: __timepunct::_M_initialize_timepunct(__c_locale __cloc); 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: __timepunct::_M_put(char*, size_t, const char*, const tm*) const throw (); 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: __timepunct::_M_initialize_timepunct(__c_locale __cloc); 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: __timepunct::_M_put(wchar_t*, size_t, const wchar_t*, 234s 1949: const tm*) const throw (); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/time_members.h" 1 3 4 234s 1949: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/time_members.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __timepunct<_CharT>::__timepunct(size_t __refs) 234s 1949: : facet(__refs), _M_data(0), _M_c_locale_timepunct(0), 234s 1949: _M_name_timepunct(_S_get_c_name()) 234s 1949: { _M_initialize_timepunct(); } 234s 1949: 234s 1949: template 234s 1949: __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 234s 1949: : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(0), 234s 1949: _M_name_timepunct(_S_get_c_name()) 234s 1949: { _M_initialize_timepunct(); } 234s 1949: 234s 1949: template 234s 1949: __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, 234s 1949: size_t __refs) 234s 1949: : facet(__refs), _M_data(0), _M_c_locale_timepunct(0), 234s 1949: _M_name_timepunct(0) 234s 1949: { 234s 1949: if (__builtin_strcmp(__s, _S_get_c_name()) != 0) 234s 1949: { 234s 1949: const size_t __len = __builtin_strlen(__s) + 1; 234s 1949: char* __tmp = new char[__len]; 234s 1949: __builtin_memcpy(__tmp, __s, __len); 234s 1949: _M_name_timepunct = __tmp; 234s 1949: } 234s 1949: else 234s 1949: _M_name_timepunct = _S_get_c_name(); 234s 1949: 234s 1949: try 234s 1949: { _M_initialize_timepunct(__cloc); } 234s 1949: catch(...) 234s 1949: { 234s 1949: if (_M_name_timepunct != _S_get_c_name()) 234s 1949: delete [] _M_name_timepunct; 234s 1949: throw; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __timepunct<_CharT>::~__timepunct() 234s 1949: { 234s 1949: if (_M_name_timepunct != _S_get_c_name()) 234s 1949: delete [] _M_name_timepunct; 234s 1949: delete _M_data; 234s 1949: _S_destroy_c_locale(_M_c_locale_timepunct); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 355 "/usr/include/c++/15/bits/locale_facets_nonio.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: struct __time_get_state 234s 1949: { 234s 1949: 234s 1949: void 234s 1949: _M_finalize_state(tm* __tm); 234s 1949: 234s 1949: unsigned int _M_have_I : 1; 234s 1949: unsigned int _M_have_wday : 1; 234s 1949: unsigned int _M_have_yday : 1; 234s 1949: unsigned int _M_have_mon : 1; 234s 1949: unsigned int _M_have_mday : 1; 234s 1949: unsigned int _M_have_uweek : 1; 234s 1949: unsigned int _M_have_wweek : 1; 234s 1949: unsigned int _M_have_century : 1; 234s 1949: unsigned int _M_is_pm : 1; 234s 1949: unsigned int _M_want_century : 1; 234s 1949: unsigned int _M_want_xday : 1; 234s 1949: unsigned int _M_pad1 : 5; 234s 1949: unsigned int _M_week_no : 6; 234s 1949: unsigned int _M_pad2 : 10; 234s 1949: int _M_century; 234s 1949: int _M_pad3; 234s 1949: }; 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: # 399 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: template 234s 1949: class time_get : public locale::facet, public time_base 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _InIter iter_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static locale::id id; 234s 1949: # 420 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: explicit 234s 1949: time_get(size_t __refs = 0) 234s 1949: : facet (__refs) { } 234s 1949: # 437 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: dateorder 234s 1949: date_order() const 234s 1949: { return this->do_date_order(); } 234s 1949: # 461 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: get_time(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const 234s 1949: { return this->do_get_time(__beg, __end, __io, __err, __tm); } 234s 1949: # 486 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: get_date(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const 234s 1949: { return this->do_get_date(__beg, __end, __io, __err, __tm); } 234s 1949: # 514 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: get_weekday(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const 234s 1949: { return this->do_get_weekday(__beg, __end, __io, __err, __tm); } 234s 1949: # 543 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: get_monthname(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const 234s 1949: { return this->do_get_monthname(__beg, __end, __io, __err, __tm); } 234s 1949: # 569 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: get_year(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const 234s 1949: { return this->do_get_year(__beg, __end, __io, __err, __tm); } 234s 1949: # 590 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: inline 234s 1949: iter_type get(iter_type __s, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm, char __format, 234s 1949: char __modifier = 0) const 234s 1949: { 234s 1949: return this->do_get(__s, __end, __io, __err, __tm, __format, 234s 1949: __modifier); 234s 1949: } 234s 1949: # 617 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type get(iter_type __s, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm, const char_type* __fmt, 234s 1949: const char_type* __fmtend) const; 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: virtual 234s 1949: ~time_get() { } 234s 1949: # 637 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual dateorder 234s 1949: do_date_order() const; 234s 1949: # 655 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_get_time(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const; 234s 1949: # 674 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_get_date(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const; 234s 1949: # 693 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_get_weekday(iter_type __beg, iter_type __end, ios_base&, 234s 1949: ios_base::iostate& __err, tm* __tm) const; 234s 1949: # 712 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_get_monthname(iter_type __beg, iter_type __end, ios_base&, 234s 1949: ios_base::iostate& __err, tm* __tm) const; 234s 1949: # 731 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_get_year(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const; 234s 1949: # 754 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual 234s 1949: 234s 1949: iter_type 234s 1949: do_get(iter_type __s, iter_type __end, ios_base& __f, 234s 1949: ios_base::iostate& __err, tm* __tm, 234s 1949: char __format, char __modifier) const; 234s 1949: 234s 1949: 234s 1949: 234s 1949: iter_type 234s 1949: _M_extract_num(iter_type __beg, iter_type __end, int& __member, 234s 1949: int __min, int __max, size_t __len, 234s 1949: ios_base& __io, ios_base::iostate& __err) const; 234s 1949: 234s 1949: 234s 1949: iter_type 234s 1949: _M_extract_name(iter_type __beg, iter_type __end, int& __member, 234s 1949: const _CharT** __names, size_t __indexlen, 234s 1949: ios_base& __io, ios_base::iostate& __err) const; 234s 1949: 234s 1949: 234s 1949: iter_type 234s 1949: _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member, 234s 1949: const _CharT** __names, size_t __indexlen, 234s 1949: ios_base& __io, ios_base::iostate& __err) const; 234s 1949: 234s 1949: 234s 1949: iter_type 234s 1949: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm, 234s 1949: const _CharT* __format) const; 234s 1949: 234s 1949: 234s 1949: 234s 1949: iter_type 234s 1949: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm, 234s 1949: const _CharT* __format, 234s 1949: __time_get_state &__state) const; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id time_get<_CharT, _InIter>::id; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class time_get_byname : public time_get<_CharT, _InIter> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _InIter iter_type; 234s 1949: 234s 1949: explicit 234s 1949: time_get_byname(const char*, size_t __refs = 0) 234s 1949: : time_get<_CharT, _InIter>(__refs) { } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: time_get_byname(const string& __s, size_t __refs = 0) 234s 1949: : time_get_byname(__s.c_str(), __refs) { } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~time_get_byname() { } 234s 1949: }; 234s 1949: 234s 1949: } 234s 1949: # 836 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: template 234s 1949: class time_put : public locale::facet 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _OutIter iter_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static locale::id id; 234s 1949: # 857 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: explicit 234s 1949: time_put(size_t __refs = 0) 234s 1949: : facet(__refs) { } 234s 1949: # 876 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, 234s 1949: const _CharT* __beg, const _CharT* __end) const; 234s 1949: # 896 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: const tm* __tm, char __format, char __mod = 0) const 234s 1949: { return this->do_put(__s, __io, __fill, __tm, __format, __mod); } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: virtual 234s 1949: ~time_put() 234s 1949: { } 234s 1949: # 923 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, 234s 1949: char __format, char __mod) const; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id time_put<_CharT, _OutIter>::id; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class time_put_byname : public time_put<_CharT, _OutIter> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _OutIter iter_type; 234s 1949: 234s 1949: explicit 234s 1949: time_put_byname(const char*, size_t __refs = 0) 234s 1949: : time_put<_CharT, _OutIter>(__refs) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: time_put_byname(const string& __s, size_t __refs = 0) 234s 1949: : time_put_byname(__s.c_str(), __refs) { } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~time_put_byname() { } 234s 1949: }; 234s 1949: # 968 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: class money_base 234s 1949: { 234s 1949: public: 234s 1949: enum part { none, space, symbol, sign, value }; 234s 1949: struct pattern { char field[4]; }; 234s 1949: 234s 1949: static const pattern _S_default_pattern; 234s 1949: 234s 1949: enum 234s 1949: { 234s 1949: _S_minus, 234s 1949: _S_zero, 234s 1949: _S_end = 11 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static const char* _S_atoms; 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__const__)) static pattern 234s 1949: _S_construct_pattern(char __precedes, char __space, char __posn) throw (); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __moneypunct_cache : public locale::facet 234s 1949: { 234s 1949: const char* _M_grouping; 234s 1949: size_t _M_grouping_size; 234s 1949: bool _M_use_grouping; 234s 1949: _CharT _M_decimal_point; 234s 1949: _CharT _M_thousands_sep; 234s 1949: const _CharT* _M_curr_symbol; 234s 1949: size_t _M_curr_symbol_size; 234s 1949: const _CharT* _M_positive_sign; 234s 1949: size_t _M_positive_sign_size; 234s 1949: const _CharT* _M_negative_sign; 234s 1949: size_t _M_negative_sign_size; 234s 1949: int _M_frac_digits; 234s 1949: money_base::pattern _M_pos_format; 234s 1949: money_base::pattern _M_neg_format; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _CharT _M_atoms[money_base::_S_end]; 234s 1949: 234s 1949: bool _M_allocated; 234s 1949: 234s 1949: __moneypunct_cache(size_t __refs = 0) : facet(__refs), 234s 1949: _M_grouping(0), _M_grouping_size(0), _M_use_grouping(false), 234s 1949: _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()), 234s 1949: _M_curr_symbol(0), _M_curr_symbol_size(0), 234s 1949: _M_positive_sign(0), _M_positive_sign_size(0), 234s 1949: _M_negative_sign(0), _M_negative_sign_size(0), 234s 1949: _M_frac_digits(0), 234s 1949: _M_pos_format(money_base::pattern()), 234s 1949: _M_neg_format(money_base::pattern()), _M_allocated(false) 234s 1949: { } 234s 1949: 234s 1949: ~__moneypunct_cache(); 234s 1949: 234s 1949: void 234s 1949: _M_cache(const locale& __loc); 234s 1949: 234s 1949: private: 234s 1949: __moneypunct_cache& 234s 1949: operator=(const __moneypunct_cache&); 234s 1949: 234s 1949: explicit 234s 1949: __moneypunct_cache(const __moneypunct_cache&); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache() 234s 1949: { 234s 1949: if (_M_allocated) 234s 1949: { 234s 1949: delete [] _M_grouping; 234s 1949: delete [] _M_curr_symbol; 234s 1949: delete [] _M_positive_sign; 234s 1949: delete [] _M_negative_sign; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: # 1063 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: template 234s 1949: class moneypunct : public locale::facet, public money_base 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef basic_string<_CharT> string_type; 234s 1949: 234s 1949: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; 234s 1949: 234s 1949: private: 234s 1949: __cache_type* _M_data; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: static const bool intl = _Intl; 234s 1949: 234s 1949: static locale::id id; 234s 1949: # 1092 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: explicit 234s 1949: moneypunct(size_t __refs = 0) 234s 1949: : facet(__refs), _M_data(0) 234s 1949: { _M_initialize_moneypunct(); } 234s 1949: # 1105 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: explicit 234s 1949: moneypunct(__cache_type* __cache, size_t __refs = 0) 234s 1949: : facet(__refs), _M_data(__cache) 234s 1949: { _M_initialize_moneypunct(); } 234s 1949: # 1120 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: explicit 234s 1949: moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0) 234s 1949: : facet(__refs), _M_data(0) 234s 1949: { _M_initialize_moneypunct(__cloc, __s); } 234s 1949: # 1134 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: char_type 234s 1949: decimal_point() const 234s 1949: { return this->do_decimal_point(); } 234s 1949: # 1147 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: char_type 234s 1949: thousands_sep() const 234s 1949: { return this->do_thousands_sep(); } 234s 1949: # 1177 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: string 234s 1949: grouping() const 234s 1949: { return this->do_grouping(); } 234s 1949: # 1190 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: string_type 234s 1949: curr_symbol() const 234s 1949: { return this->do_curr_symbol(); } 234s 1949: # 1207 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: string_type 234s 1949: positive_sign() const 234s 1949: { return this->do_positive_sign(); } 234s 1949: # 1224 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: string_type 234s 1949: negative_sign() const 234s 1949: { return this->do_negative_sign(); } 234s 1949: # 1240 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: int 234s 1949: frac_digits() const 234s 1949: { return this->do_frac_digits(); } 234s 1949: # 1276 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: pattern 234s 1949: pos_format() const 234s 1949: { return this->do_pos_format(); } 234s 1949: 234s 1949: pattern 234s 1949: neg_format() const 234s 1949: { return this->do_neg_format(); } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: virtual 234s 1949: ~moneypunct(); 234s 1949: # 1298 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual char_type 234s 1949: do_decimal_point() const 234s 1949: { return _M_data->_M_decimal_point; } 234s 1949: # 1310 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual char_type 234s 1949: do_thousands_sep() const 234s 1949: { return _M_data->_M_thousands_sep; } 234s 1949: # 1323 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual string 234s 1949: do_grouping() const 234s 1949: { return _M_data->_M_grouping; } 234s 1949: # 1336 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual string_type 234s 1949: do_curr_symbol() const 234s 1949: { return _M_data->_M_curr_symbol; } 234s 1949: # 1349 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual string_type 234s 1949: do_positive_sign() const 234s 1949: { return _M_data->_M_positive_sign; } 234s 1949: # 1362 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual string_type 234s 1949: do_negative_sign() const 234s 1949: { return _M_data->_M_negative_sign; } 234s 1949: # 1376 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual int 234s 1949: do_frac_digits() const 234s 1949: { return _M_data->_M_frac_digits; } 234s 1949: # 1390 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual pattern 234s 1949: do_pos_format() const 234s 1949: { return _M_data->_M_pos_format; } 234s 1949: # 1404 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual pattern 234s 1949: do_neg_format() const 234s 1949: { return _M_data->_M_neg_format; } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_initialize_moneypunct(__c_locale __cloc = 0, 234s 1949: const char* __name = 0); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id moneypunct<_CharT, _Intl>::id; 234s 1949: 234s 1949: template 234s 1949: const bool moneypunct<_CharT, _Intl>::intl; 234s 1949: 234s 1949: template<> 234s 1949: moneypunct::~moneypunct(); 234s 1949: 234s 1949: template<> 234s 1949: moneypunct::~moneypunct(); 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: moneypunct::_M_initialize_moneypunct(__c_locale, const char*); 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: moneypunct::_M_initialize_moneypunct(__c_locale, const char*); 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: moneypunct::~moneypunct(); 234s 1949: 234s 1949: template<> 234s 1949: moneypunct::~moneypunct(); 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: moneypunct::_M_initialize_moneypunct(__c_locale, 234s 1949: const char*); 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: moneypunct::_M_initialize_moneypunct(__c_locale, 234s 1949: const char*); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class moneypunct_byname : public moneypunct<_CharT, _Intl> 234s 1949: { 234s 1949: public: 234s 1949: typedef _CharT char_type; 234s 1949: typedef basic_string<_CharT> string_type; 234s 1949: 234s 1949: static const bool intl = _Intl; 234s 1949: 234s 1949: explicit 234s 1949: moneypunct_byname(const char* __s, size_t __refs = 0) 234s 1949: : moneypunct<_CharT, _Intl>(__refs) 234s 1949: { 234s 1949: if (__builtin_strcmp(__s, "C") != 0 234s 1949: && __builtin_strcmp(__s, "POSIX") != 0) 234s 1949: { 234s 1949: __c_locale __tmp; 234s 1949: this->_S_create_c_locale(__tmp, __s); 234s 1949: this->_M_initialize_moneypunct(__tmp); 234s 1949: this->_S_destroy_c_locale(__tmp); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: moneypunct_byname(const string& __s, size_t __refs = 0) 234s 1949: : moneypunct_byname(__s.c_str(), __refs) { } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~moneypunct_byname() { } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: const bool moneypunct_byname<_CharT, _Intl>::intl; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: # 1507 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: template 234s 1949: class money_get : public locale::facet 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _InIter iter_type; 234s 1949: typedef basic_string<_CharT> string_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static locale::id id; 234s 1949: # 1529 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: explicit 234s 1949: money_get(size_t __refs = 0) : facet(__refs) { } 234s 1949: # 1559 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 234s 1949: ios_base::iostate& __err, long double& __units) const 234s 1949: { return this->do_get(__s, __end, __intl, __io, __err, __units); } 234s 1949: # 1590 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 234s 1949: ios_base::iostate& __err, string_type& __digits) const 234s 1949: { return this->do_get(__s, __end, __intl, __io, __err, __digits); } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: virtual 234s 1949: ~money_get() { } 234s 1949: # 1614 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 234s 1949: ios_base::iostate& __err, long double& __units) const; 234s 1949: # 1626 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, 234s 1949: ios_base::iostate& __err, string_type& __digits) const; 234s 1949: # 1646 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: template 234s 1949: iter_type 234s 1949: _M_extract(iter_type __s, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, string& __digits) const; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id money_get<_CharT, _InIter>::id; 234s 1949: # 1668 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: template 234s 1949: class money_put : public locale::facet 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef _OutIter iter_type; 234s 1949: typedef basic_string<_CharT> string_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: static locale::id id; 234s 1949: # 1689 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: explicit 234s 1949: money_put(size_t __refs = 0) : facet(__refs) { } 234s 1949: # 1709 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: put(iter_type __s, bool __intl, ios_base& __io, 234s 1949: char_type __fill, long double __units) const 234s 1949: { return this->do_put(__s, __intl, __io, __fill, __units); } 234s 1949: # 1732 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: iter_type 234s 1949: put(iter_type __s, bool __intl, ios_base& __io, 234s 1949: char_type __fill, const string_type& __digits) const 234s 1949: { return this->do_put(__s, __intl, __io, __fill, __digits); } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: virtual 234s 1949: ~money_put() { } 234s 1949: # 1767 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 234s 1949: long double __units) const; 234s 1949: # 1791 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual iter_type 234s 1949: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 234s 1949: const string_type& __digits) const; 234s 1949: # 1811 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: template 234s 1949: iter_type 234s 1949: _M_insert(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: const string_type& __digits) const; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id money_put<_CharT, _OutIter>::id; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct messages_base 234s 1949: { 234s 1949: typedef int catalog; 234s 1949: }; 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: # 1854 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: template 234s 1949: class messages : public locale::facet, public messages_base 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _CharT char_type; 234s 1949: typedef basic_string<_CharT> string_type; 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: __c_locale _M_c_locale_messages; 234s 1949: const char* _M_name_messages; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: static locale::id id; 234s 1949: # 1882 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: explicit 234s 1949: messages(size_t __refs = 0); 234s 1949: # 1896 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: explicit 234s 1949: messages(__c_locale __cloc, const char* __s, size_t __refs = 0); 234s 1949: # 1909 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: catalog 234s 1949: open(const basic_string& __s, const locale& __loc) const 234s 1949: { return this->do_open(__s, __loc); } 234s 1949: # 1927 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: catalog 234s 1949: open(const basic_string&, const locale&, const char*) const; 234s 1949: # 1945 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: string_type 234s 1949: get(catalog __c, int __set, int __msgid, const string_type& __s) const 234s 1949: { return this->do_get(__c, __set, __msgid, __s); } 234s 1949: # 1956 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: void 234s 1949: close(catalog __c) const 234s 1949: { return this->do_close(__c); } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: virtual 234s 1949: ~messages(); 234s 1949: # 1976 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual catalog 234s 1949: do_open(const basic_string&, const locale&) const; 234s 1949: # 1995 "/usr/include/c++/15/bits/locale_facets_nonio.h" 3 4 234s 1949: virtual string_type 234s 1949: do_get(catalog, int, int, const string_type& __dfault) const; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: virtual void 234s 1949: do_close(catalog) const; 234s 1949: 234s 1949: 234s 1949: char* 234s 1949: _M_convert_to_char(const string_type& __msg) const 234s 1949: { 234s 1949: 234s 1949: return reinterpret_cast(const_cast<_CharT*>(__msg.c_str())); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: string_type 234s 1949: _M_convert_from_char(char*) const 234s 1949: { 234s 1949: 234s 1949: return string_type(); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: locale::id messages<_CharT>::id; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: string 234s 1949: messages::do_get(catalog, int, int, const string&) const; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: wstring 234s 1949: messages::do_get(catalog, int, int, const wstring&) const; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class messages_byname : public messages<_CharT> 234s 1949: { 234s 1949: public: 234s 1949: typedef _CharT char_type; 234s 1949: typedef basic_string<_CharT> string_type; 234s 1949: 234s 1949: explicit 234s 1949: messages_byname(const char* __s, size_t __refs = 0); 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: messages_byname(const string& __s, size_t __refs = 0) 234s 1949: : messages_byname(__s.c_str(), __refs) { } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: virtual 234s 1949: ~messages_byname() 234s 1949: { } 234s 1949: }; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/c++/15/bits/messages_members.h" 1 3 4 234s 1949: # 36 "/usr/include/arm-linux-gnueabihf/c++/15/bits/messages_members.h" 3 4 234s 1949: # 1 "/usr/include/libintl.h" 1 3 4 234s 1949: # 34 "/usr/include/libintl.h" 3 4 234s 1949: extern "C" { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *gettext (const char *__msgid) 234s 1949: noexcept (true) __attribute__ ((__format_arg__ (1))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *dgettext (const char *__domainname, const char *__msgid) 234s 1949: noexcept (true) __attribute__ ((__format_arg__ (2))); 234s 1949: extern char *__dgettext (const char *__domainname, const char *__msgid) 234s 1949: noexcept (true) __attribute__ ((__format_arg__ (2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *dcgettext (const char *__domainname, 234s 1949: const char *__msgid, int __category) 234s 1949: noexcept (true) __attribute__ ((__format_arg__ (2))); 234s 1949: extern char *__dcgettext (const char *__domainname, 234s 1949: const char *__msgid, int __category) 234s 1949: noexcept (true) __attribute__ ((__format_arg__ (2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *ngettext (const char *__msgid1, const char *__msgid2, 234s 1949: unsigned long int __n) 234s 1949: noexcept (true) __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *dngettext (const char *__domainname, const char *__msgid1, 234s 1949: const char *__msgid2, unsigned long int __n) 234s 1949: noexcept (true) __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *dcngettext (const char *__domainname, const char *__msgid1, 234s 1949: const char *__msgid2, unsigned long int __n, 234s 1949: int __category) 234s 1949: noexcept (true) __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3))); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *textdomain (const char *__domainname) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *bindtextdomain (const char *__domainname, 234s 1949: const char *__dirname) noexcept (true); 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern char *bind_textdomain_codeset (const char *__domainname, 234s 1949: const char *__codeset) noexcept (true); 234s 1949: # 121 "/usr/include/libintl.h" 3 4 234s 1949: } 234s 1949: # 37 "/usr/include/arm-linux-gnueabihf/c++/15/bits/messages_members.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: messages<_CharT>::messages(size_t __refs) 234s 1949: : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), 234s 1949: _M_name_messages(_S_get_c_name()) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: messages<_CharT>::messages(__c_locale __cloc, const char* __s, 234s 1949: size_t __refs) 234s 1949: : facet(__refs), _M_c_locale_messages(0), _M_name_messages(0) 234s 1949: { 234s 1949: if (__builtin_strcmp(__s, _S_get_c_name()) != 0) 234s 1949: { 234s 1949: const size_t __len = __builtin_strlen(__s) + 1; 234s 1949: char* __tmp = new char[__len]; 234s 1949: __builtin_memcpy(__tmp, __s, __len); 234s 1949: _M_name_messages = __tmp; 234s 1949: } 234s 1949: else 234s 1949: _M_name_messages = _S_get_c_name(); 234s 1949: 234s 1949: 234s 1949: _M_c_locale_messages = _S_clone_c_locale(__cloc); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename messages<_CharT>::catalog 234s 1949: messages<_CharT>::open(const basic_string& __s, const locale& __loc, 234s 1949: const char* __dir) const 234s 1949: { 234s 1949: bindtextdomain(__s.c_str(), __dir); 234s 1949: return this->do_open(__s, __loc); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: messages<_CharT>::~messages() 234s 1949: { 234s 1949: if (_M_name_messages != _S_get_c_name()) 234s 1949: delete [] _M_name_messages; 234s 1949: _S_destroy_c_locale(_M_c_locale_messages); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename messages<_CharT>::catalog 234s 1949: messages<_CharT>::do_open(const basic_string& __s, 234s 1949: const locale&) const 234s 1949: { 234s 1949: 234s 1949: 234s 1949: textdomain(__s.c_str()); 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: messages<_CharT>::do_close(catalog) const 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) 234s 1949: : messages<_CharT>(__refs) 234s 1949: { 234s 1949: if (this->_M_name_messages != locale::facet::_S_get_c_name()) 234s 1949: { 234s 1949: delete [] this->_M_name_messages; 234s 1949: if (__builtin_strcmp(__s, locale::facet::_S_get_c_name()) != 0) 234s 1949: { 234s 1949: const size_t __len = __builtin_strlen(__s) + 1; 234s 1949: char* __tmp = new char[__len]; 234s 1949: __builtin_memcpy(__tmp, __s, __len); 234s 1949: this->_M_name_messages = __tmp; 234s 1949: } 234s 1949: else 234s 1949: this->_M_name_messages = locale::facet::_S_get_c_name(); 234s 1949: } 234s 1949: 234s 1949: if (__builtin_strcmp(__s, "C") != 0 234s 1949: && __builtin_strcmp(__s, "POSIX") != 0) 234s 1949: { 234s 1949: this->_S_destroy_c_locale(this->_M_c_locale_messages); 234s 1949: this->_S_create_c_locale(this->_M_c_locale_messages, __s); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: typename messages::catalog 234s 1949: messages::do_open(const basic_string&, 234s 1949: const locale&) const; 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: messages::do_close(catalog) const; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: typename messages::catalog 234s 1949: messages::do_open(const basic_string&, 234s 1949: const locale&) const; 234s 1949: 234s 1949: template<> 234s 1949: void 234s 1949: messages::do_close(catalog) const; 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 2067 "/usr/include/c++/15/bits/locale_facets_nonio.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 1 3 4 234s 1949: # 37 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __use_cache<__moneypunct_cache<_CharT, _Intl> > 234s 1949: { 234s 1949: const __moneypunct_cache<_CharT, _Intl>* 234s 1949: operator() (const locale& __loc) const 234s 1949: { 234s 1949: const size_t __i = moneypunct<_CharT, _Intl>::id._M_id(); 234s 1949: const locale::facet** __caches = __loc._M_impl->_M_caches; 234s 1949: if (!__caches[__i]) 234s 1949: { 234s 1949: __moneypunct_cache<_CharT, _Intl>* __tmp = 0; 234s 1949: try 234s 1949: { 234s 1949: __tmp = new __moneypunct_cache<_CharT, _Intl>; 234s 1949: __tmp->_M_cache(__loc); 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: delete __tmp; 234s 1949: throw; 234s 1949: } 234s 1949: __loc._M_impl->_M_install_cache(__tmp, __i); 234s 1949: } 234s 1949: return static_cast< 234s 1949: const __moneypunct_cache<_CharT, _Intl>*>(__caches[__i]); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc) 234s 1949: { 234s 1949: const moneypunct<_CharT, _Intl>& __mp = 234s 1949: use_facet >(__loc); 234s 1949: 234s 1949: struct _Scoped_str 234s 1949: { 234s 1949: size_t _M_len; 234s 1949: _CharT* _M_str; 234s 1949: 234s 1949: explicit 234s 1949: _Scoped_str(const basic_string<_CharT>& __str) 234s 1949: : _M_len(__str.size()), _M_str(new _CharT[_M_len]) 234s 1949: { __str.copy(_M_str, _M_len); } 234s 1949: 234s 1949: ~_Scoped_str() { delete[] _M_str; } 234s 1949: 234s 1949: void 234s 1949: _M_release(const _CharT*& __p, size_t& __n) 234s 1949: { 234s 1949: __p = _M_str; 234s 1949: __n = _M_len; 234s 1949: _M_str = 0; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: _Scoped_str __curr_symbol(__mp.curr_symbol()); 234s 1949: _Scoped_str __positive_sign(__mp.positive_sign()); 234s 1949: _Scoped_str __negative_sign(__mp.negative_sign()); 234s 1949: 234s 1949: const string& __g = __mp.grouping(); 234s 1949: const size_t __g_size = __g.size(); 234s 1949: char* const __grouping = new char[__g_size]; 234s 1949: __g.copy(__grouping, __g_size); 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_grouping = __grouping; 234s 1949: _M_grouping_size = __g_size; 234s 1949: _M_use_grouping = (__g_size 234s 1949: && static_cast(__grouping[0]) > 0 234s 1949: && (__grouping[0] 234s 1949: != __gnu_cxx::__numeric_traits::__max)); 234s 1949: 234s 1949: _M_decimal_point = __mp.decimal_point(); 234s 1949: _M_thousands_sep = __mp.thousands_sep(); 234s 1949: 234s 1949: __curr_symbol._M_release(_M_curr_symbol, _M_curr_symbol_size); 234s 1949: __positive_sign._M_release(_M_positive_sign, _M_positive_sign_size); 234s 1949: __negative_sign._M_release(_M_negative_sign, _M_negative_sign_size); 234s 1949: 234s 1949: _M_frac_digits = __mp.frac_digits(); 234s 1949: _M_pos_format = __mp.pos_format(); 234s 1949: _M_neg_format = __mp.neg_format(); 234s 1949: 234s 1949: const ctype<_CharT>& __ct = use_facet >(__loc); 234s 1949: __ct.widen(money_base::_S_atoms, 234s 1949: money_base::_S_atoms + money_base::_S_end, _M_atoms); 234s 1949: 234s 1949: _M_allocated = true; 234s 1949: } 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: _InIter 234s 1949: money_get<_CharT, _InIter>:: 234s 1949: _M_extract(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, string& __units) const 234s 1949: { 234s 1949: typedef char_traits<_CharT> __traits_type; 234s 1949: typedef typename string_type::size_type size_type; 234s 1949: typedef money_base::part part; 234s 1949: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; 234s 1949: 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: 234s 1949: __use_cache<__cache_type> __uc; 234s 1949: const __cache_type* __lc = __uc(__loc); 234s 1949: const char_type* __lit = __lc->_M_atoms; 234s 1949: 234s 1949: 234s 1949: bool __negative = false; 234s 1949: 234s 1949: size_type __sign_size = 0; 234s 1949: 234s 1949: const bool __mandatory_sign = (__lc->_M_positive_sign_size 234s 1949: && __lc->_M_negative_sign_size); 234s 1949: 234s 1949: string __grouping_tmp; 234s 1949: if (__lc->_M_use_grouping) 234s 1949: __grouping_tmp.reserve(32); 234s 1949: 234s 1949: int __last_pos = 0; 234s 1949: 234s 1949: int __n = 0; 234s 1949: 234s 1949: bool __testvalid = true; 234s 1949: 234s 1949: bool __testdecfound = false; 234s 1949: 234s 1949: 234s 1949: string __res; 234s 1949: __res.reserve(32); 234s 1949: 234s 1949: const char_type* __lit_zero = __lit + money_base::_S_zero; 234s 1949: const money_base::pattern __p = __lc->_M_neg_format; 234s 1949: for (int __i = 0; __i < 4 && __testvalid; ++__i) 234s 1949: { 234s 1949: const part __which = static_cast(__p.field[__i]); 234s 1949: switch (__which) 234s 1949: { 234s 1949: case money_base::symbol: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__io.flags() & ios_base::showbase || __sign_size > 1 234s 1949: || __i == 0 234s 1949: || (__i == 1 && (__mandatory_sign 234s 1949: || (static_cast(__p.field[0]) 234s 1949: == money_base::sign) 234s 1949: || (static_cast(__p.field[2]) 234s 1949: == money_base::space))) 234s 1949: || (__i == 2 && ((static_cast(__p.field[3]) 234s 1949: == money_base::value) 234s 1949: || (__mandatory_sign 234s 1949: && (static_cast(__p.field[3]) 234s 1949: == money_base::sign))))) 234s 1949: { 234s 1949: const size_type __len = __lc->_M_curr_symbol_size; 234s 1949: size_type __j = 0; 234s 1949: for (; __beg != __end && __j < __len 234s 1949: && *__beg == __lc->_M_curr_symbol[__j]; 234s 1949: ++__beg, (void)++__j); 234s 1949: if (__j != __len 234s 1949: && (__j || __io.flags() & ios_base::showbase)) 234s 1949: __testvalid = false; 234s 1949: } 234s 1949: break; 234s 1949: case money_base::sign: 234s 1949: 234s 1949: if (__lc->_M_positive_sign_size && __beg != __end 234s 1949: && *__beg == __lc->_M_positive_sign[0]) 234s 1949: { 234s 1949: __sign_size = __lc->_M_positive_sign_size; 234s 1949: ++__beg; 234s 1949: } 234s 1949: else if (__lc->_M_negative_sign_size && __beg != __end 234s 1949: && *__beg == __lc->_M_negative_sign[0]) 234s 1949: { 234s 1949: __negative = true; 234s 1949: __sign_size = __lc->_M_negative_sign_size; 234s 1949: ++__beg; 234s 1949: } 234s 1949: else if (__lc->_M_positive_sign_size 234s 1949: && !__lc->_M_negative_sign_size) 234s 1949: 234s 1949: 234s 1949: __negative = true; 234s 1949: else if (__mandatory_sign) 234s 1949: __testvalid = false; 234s 1949: break; 234s 1949: case money_base::value: 234s 1949: 234s 1949: 234s 1949: for (; __beg != __end; ++__beg) 234s 1949: { 234s 1949: const char_type __c = *__beg; 234s 1949: const char_type* __q = __traits_type::find(__lit_zero, 234s 1949: 10, __c); 234s 1949: if (__q != 0) 234s 1949: { 234s 1949: __res += money_base::_S_atoms[__q - __lit]; 234s 1949: ++__n; 234s 1949: } 234s 1949: else if (__c == __lc->_M_decimal_point 234s 1949: && !__testdecfound) 234s 1949: { 234s 1949: if (__lc->_M_frac_digits <= 0) 234s 1949: break; 234s 1949: 234s 1949: __last_pos = __n; 234s 1949: __n = 0; 234s 1949: __testdecfound = true; 234s 1949: } 234s 1949: else if (__lc->_M_use_grouping 234s 1949: && __c == __lc->_M_thousands_sep 234s 1949: && !__testdecfound) 234s 1949: { 234s 1949: if (__n) 234s 1949: { 234s 1949: 234s 1949: __grouping_tmp += static_cast(__n); 234s 1949: __n = 0; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __testvalid = false; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: if (__res.empty()) 234s 1949: __testvalid = false; 234s 1949: break; 234s 1949: case money_base::space: 234s 1949: 234s 1949: if (__beg != __end && __ctype.is(ctype_base::space, *__beg)) 234s 1949: ++__beg; 234s 1949: else 234s 1949: __testvalid = false; 234s 1949: 234s 1949: case money_base::none: 234s 1949: 234s 1949: if (__i != 3) 234s 1949: for (; __beg != __end 234s 1949: && __ctype.is(ctype_base::space, *__beg); ++__beg); 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (__sign_size > 1 && __testvalid) 234s 1949: { 234s 1949: const char_type* __sign = __negative ? __lc->_M_negative_sign 234s 1949: : __lc->_M_positive_sign; 234s 1949: size_type __i = 1; 234s 1949: for (; __beg != __end && __i < __sign_size 234s 1949: && *__beg == __sign[__i]; ++__beg, (void)++__i); 234s 1949: 234s 1949: if (__i != __sign_size) 234s 1949: __testvalid = false; 234s 1949: } 234s 1949: 234s 1949: if (__testvalid) 234s 1949: { 234s 1949: 234s 1949: if (__res.size() > 1) 234s 1949: { 234s 1949: const size_type __first = __res.find_first_not_of('0'); 234s 1949: const bool __only_zeros = __first == string::npos; 234s 1949: if (__first) 234s 1949: __res.erase(0, __only_zeros ? __res.size() - 1 : __first); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (__negative && __res[0] != '0') 234s 1949: __res.insert(__res.begin(), '-'); 234s 1949: 234s 1949: 234s 1949: if (__grouping_tmp.size()) 234s 1949: { 234s 1949: 234s 1949: __grouping_tmp += static_cast(__testdecfound ? __last_pos 234s 1949: : __n); 234s 1949: if (!std::__verify_grouping(__lc->_M_grouping, 234s 1949: __lc->_M_grouping_size, 234s 1949: __grouping_tmp)) 234s 1949: __err |= ios_base::failbit; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (__testdecfound && __n != __lc->_M_frac_digits) 234s 1949: __testvalid = false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (!__testvalid) 234s 1949: __err |= ios_base::failbit; 234s 1949: else 234s 1949: __units.swap(__res); 234s 1949: 234s 1949: 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: # 370 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 234s 1949: template 234s 1949: _InIter 234s 1949: money_get<_CharT, _InIter>:: 234s 1949: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, 234s 1949: ios_base::iostate& __err, long double& __units) const 234s 1949: { 234s 1949: string __str; 234s 1949: __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) 234s 1949: : _M_extract(__beg, __end, __io, __err, __str); 234s 1949: std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale()); 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: money_get<_CharT, _InIter>:: 234s 1949: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, 234s 1949: ios_base::iostate& __err, string_type& __digits) const 234s 1949: { 234s 1949: typedef typename string::size_type size_type; 234s 1949: 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: 234s 1949: string __str; 234s 1949: __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) 234s 1949: : _M_extract(__beg, __end, __io, __err, __str); 234s 1949: const size_type __len = __str.size(); 234s 1949: if (__len) 234s 1949: { 234s 1949: __digits.resize(__len); 234s 1949: __ctype.widen(__str.data(), __str.data() + __len, &__digits[0]); 234s 1949: } 234s 1949: return __beg; 234s 1949: } 234s 1949: # 422 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 234s 1949: template 234s 1949: template 234s 1949: _OutIter 234s 1949: money_put<_CharT, _OutIter>:: 234s 1949: _M_insert(iter_type __s, ios_base& __io, char_type __fill, 234s 1949: const string_type& __digits) const 234s 1949: { 234s 1949: typedef typename string_type::size_type size_type; 234s 1949: typedef money_base::part part; 234s 1949: typedef __moneypunct_cache<_CharT, _Intl> __cache_type; 234s 1949: 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: 234s 1949: __use_cache<__cache_type> __uc; 234s 1949: const __cache_type* __lc = __uc(__loc); 234s 1949: const char_type* __lit = __lc->_M_atoms; 234s 1949: 234s 1949: 234s 1949: 234s 1949: const char_type* __beg = __digits.data(); 234s 1949: 234s 1949: money_base::pattern __p; 234s 1949: const char_type* __sign; 234s 1949: size_type __sign_size; 234s 1949: if (!(*__beg == __lit[money_base::_S_minus])) 234s 1949: { 234s 1949: __p = __lc->_M_pos_format; 234s 1949: __sign = __lc->_M_positive_sign; 234s 1949: __sign_size = __lc->_M_positive_sign_size; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __p = __lc->_M_neg_format; 234s 1949: __sign = __lc->_M_negative_sign; 234s 1949: __sign_size = __lc->_M_negative_sign_size; 234s 1949: if (__digits.size()) 234s 1949: ++__beg; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: size_type __len = __ctype.scan_not(ctype_base::digit, __beg, 234s 1949: __beg + __digits.size()) - __beg; 234s 1949: if (__len) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: string_type __value; 234s 1949: __value.reserve(2 * __len); 234s 1949: 234s 1949: 234s 1949: 234s 1949: long __paddec = __len - __lc->_M_frac_digits; 234s 1949: if (__paddec > 0) 234s 1949: { 234s 1949: if (__lc->_M_frac_digits < 0) 234s 1949: __paddec = __len; 234s 1949: if (__lc->_M_grouping_size) 234s 1949: { 234s 1949: __value.assign(2 * __paddec, char_type()); 234s 1949: _CharT* __vend = 234s 1949: std::__add_grouping(&__value[0], __lc->_M_thousands_sep, 234s 1949: __lc->_M_grouping, 234s 1949: __lc->_M_grouping_size, 234s 1949: __beg, __beg + __paddec); 234s 1949: __value.erase(__vend - &__value[0]); 234s 1949: } 234s 1949: else 234s 1949: __value.assign(__beg, __paddec); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (__lc->_M_frac_digits > 0) 234s 1949: { 234s 1949: __value += __lc->_M_decimal_point; 234s 1949: if (__paddec >= 0) 234s 1949: __value.append(__beg + __paddec, __lc->_M_frac_digits); 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: __value.append(-__paddec, __lit[money_base::_S_zero]); 234s 1949: __value.append(__beg, __len); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const ios_base::fmtflags __f = __io.flags() 234s 1949: & ios_base::adjustfield; 234s 1949: __len = __value.size() + __sign_size; 234s 1949: __len += ((__io.flags() & ios_base::showbase) 234s 1949: ? __lc->_M_curr_symbol_size : 0); 234s 1949: 234s 1949: string_type __res; 234s 1949: __res.reserve(2 * __len); 234s 1949: 234s 1949: const size_type __width = static_cast(__io.width()); 234s 1949: const bool __testipad = (__f == ios_base::internal 234s 1949: && __len < __width); 234s 1949: 234s 1949: for (int __i = 0; __i < 4; ++__i) 234s 1949: { 234s 1949: const part __which = static_cast(__p.field[__i]); 234s 1949: switch (__which) 234s 1949: { 234s 1949: case money_base::symbol: 234s 1949: if (__io.flags() & ios_base::showbase) 234s 1949: __res.append(__lc->_M_curr_symbol, 234s 1949: __lc->_M_curr_symbol_size); 234s 1949: break; 234s 1949: case money_base::sign: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__sign_size) 234s 1949: __res += __sign[0]; 234s 1949: break; 234s 1949: case money_base::value: 234s 1949: __res += __value; 234s 1949: break; 234s 1949: case money_base::space: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__testipad) 234s 1949: __res.append(__width - __len, __fill); 234s 1949: else 234s 1949: __res += __fill; 234s 1949: break; 234s 1949: case money_base::none: 234s 1949: if (__testipad) 234s 1949: __res.append(__width - __len, __fill); 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (__sign_size > 1) 234s 1949: __res.append(__sign + 1, __sign_size - 1); 234s 1949: 234s 1949: 234s 1949: __len = __res.size(); 234s 1949: if (__width > __len) 234s 1949: { 234s 1949: if (__f == ios_base::left) 234s 1949: 234s 1949: __res.append(__width - __len, __fill); 234s 1949: else 234s 1949: 234s 1949: __res.insert(0, __width - __len, __fill); 234s 1949: __len = __width; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: __s = std::__write(__s, __res.data(), __len); 234s 1949: } 234s 1949: __io.width(0); 234s 1949: return __s; 234s 1949: } 234s 1949: # 592 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 234s 1949: template 234s 1949: _OutIter 234s 1949: money_put<_CharT, _OutIter>:: 234s 1949: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 234s 1949: long double __units) const 234s 1949: { 234s 1949: const locale __loc = __io.getloc(); 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: 234s 1949: 234s 1949: int __cs_size = 64; 234s 1949: char* __cs = static_cast(__builtin_alloca(__cs_size)); 234s 1949: 234s 1949: 234s 1949: int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 234s 1949: "%.*Lf", 0, __units); 234s 1949: 234s 1949: if (__len >= __cs_size) 234s 1949: { 234s 1949: __cs_size = __len + 1; 234s 1949: __cs = static_cast(__builtin_alloca(__cs_size)); 234s 1949: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 234s 1949: "%.*Lf", 0, __units); 234s 1949: } 234s 1949: # 624 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 234s 1949: string_type __digits(__len, char_type()); 234s 1949: __ctype.widen(__cs, __cs + __len, &__digits[0]); 234s 1949: return __intl ? _M_insert(__s, __io, __fill, __digits) 234s 1949: : _M_insert(__s, __io, __fill, __digits); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _OutIter 234s 1949: money_put<_CharT, _OutIter>:: 234s 1949: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, 234s 1949: const string_type& __digits) const 234s 1949: { return __intl ? _M_insert(__s, __io, __fill, __digits) 234s 1949: : _M_insert(__s, __io, __fill, __digits); } 234s 1949: # 682 "/usr/include/c++/15/bits/locale_facets_nonio.tcc" 3 4 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: time_base::dateorder 234s 1949: time_get<_CharT, _InIter>::do_date_order() const 234s 1949: { return time_base::no_order; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm, 234s 1949: const _CharT* __format, 234s 1949: __time_get_state &__state) const 234s 1949: { 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: const size_t __len = char_traits<_CharT>::length(__format); 234s 1949: 234s 1949: ios_base::iostate __tmperr = ios_base::goodbit; 234s 1949: size_t __i = 0; 234s 1949: for (; __beg != __end && __i < __len && !__tmperr; ++__i) 234s 1949: { 234s 1949: if (__ctype.narrow(__format[__i], 0) == '%') 234s 1949: { 234s 1949: 234s 1949: char __c = __ctype.narrow(__format[++__i], 0); 234s 1949: int __mem = 0; 234s 1949: if (__c == 'E' || __c == 'O') 234s 1949: __c = __ctype.narrow(__format[++__i], 0); 234s 1949: switch (__c) 234s 1949: { 234s 1949: const char* __cs; 234s 1949: _CharT __wcs[10]; 234s 1949: case 'a': 234s 1949: case 'A': 234s 1949: 234s 1949: const char_type* __days[14]; 234s 1949: __tp._M_days(&__days[0]); 234s 1949: __tp._M_days_abbreviated(&__days[7]); 234s 1949: __beg = _M_extract_name(__beg, __end, __mem, __days, 234s 1949: 14, __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __tm->tm_wday = __mem % 7; 234s 1949: __state._M_have_wday = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'h': 234s 1949: case 'b': 234s 1949: case 'B': 234s 1949: 234s 1949: const char_type* __months[24]; 234s 1949: __tp._M_months(&__months[0]); 234s 1949: __tp._M_months_abbreviated(&__months[12]); 234s 1949: __beg = _M_extract_name(__beg, __end, __mem, 234s 1949: __months, 24, __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __tm->tm_mon = __mem % 12; 234s 1949: __state._M_have_mon = 1; 234s 1949: __state._M_want_xday = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'c': 234s 1949: 234s 1949: const char_type* __dt[2]; 234s 1949: __tp._M_date_time_formats(__dt); 234s 1949: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 234s 1949: __tm, __dt[0], __state); 234s 1949: if (!__tmperr) 234s 1949: __state._M_want_xday = 1; 234s 1949: break; 234s 1949: case 'C': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 0, 99, 2, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __state._M_century = __mem; 234s 1949: __state._M_have_century = 1; 234s 1949: __state._M_want_xday = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'd': 234s 1949: case 'e': 234s 1949: 234s 1949: if (__ctype.is(ctype_base::space, *__beg)) 234s 1949: ++__beg; 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 1, 31, 2, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __tm->tm_mday = __mem; 234s 1949: __state._M_have_mday = 1; 234s 1949: __state._M_want_xday = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'D': 234s 1949: 234s 1949: __cs = "%m/%d/%y"; 234s 1949: __ctype.widen(__cs, __cs + 9, __wcs); 234s 1949: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 234s 1949: __tm, __wcs, __state); 234s 1949: if (!__tmperr) 234s 1949: __state._M_want_xday = 1; 234s 1949: break; 234s 1949: case 'H': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 0, 23, 2, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __tm->tm_hour = __mem; 234s 1949: __state._M_have_I = 0; 234s 1949: } 234s 1949: break; 234s 1949: case 'I': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __tm->tm_hour = __mem % 12; 234s 1949: __state._M_have_I = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'j': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 1, 366, 3, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __tm->tm_yday = __mem - 1; 234s 1949: __state._M_have_yday = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'm': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __tm->tm_mon = __mem - 1; 234s 1949: __state._M_have_mon = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'M': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 0, 59, 2, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: __tm->tm_min = __mem; 234s 1949: break; 234s 1949: case 'n': 234s 1949: case 't': 234s 1949: while (__beg != __end 234s 1949: && __ctype.is(ctype_base::space, *__beg)) 234s 1949: ++__beg; 234s 1949: break; 234s 1949: case 'p': 234s 1949: 234s 1949: const char_type* __ampm[2]; 234s 1949: __tp._M_am_pm(&__ampm[0]); 234s 1949: if (!__ampm[0][0] || !__ampm[1][0]) 234s 1949: break; 234s 1949: __beg = _M_extract_name(__beg, __end, __mem, __ampm, 234s 1949: 2, __io, __tmperr); 234s 1949: if (!__tmperr && __mem) 234s 1949: __state._M_is_pm = 1; 234s 1949: break; 234s 1949: case 'r': 234s 1949: 234s 1949: const char_type* __ampm_format; 234s 1949: __tp._M_am_pm_format(&__ampm_format); 234s 1949: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 234s 1949: __tm, __ampm_format, __state); 234s 1949: break; 234s 1949: case 'R': 234s 1949: 234s 1949: __cs = "%H:%M"; 234s 1949: __ctype.widen(__cs, __cs + 6, __wcs); 234s 1949: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 234s 1949: __tm, __wcs, __state); 234s 1949: break; 234s 1949: case 'S': 234s 1949: 234s 1949: 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 0, 60, 2, 234s 1949: 234s 1949: 234s 1949: 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: __tm->tm_sec = __mem; 234s 1949: break; 234s 1949: case 'T': 234s 1949: 234s 1949: __cs = "%H:%M:%S"; 234s 1949: __ctype.widen(__cs, __cs + 9, __wcs); 234s 1949: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 234s 1949: __tm, __wcs, __state); 234s 1949: break; 234s 1949: case 'U': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 0, 53, 2, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __state._M_week_no = __mem; 234s 1949: __state._M_have_uweek = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'w': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 0, 6, 1, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __tm->tm_wday = __mem; 234s 1949: __state._M_have_wday = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'W': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 0, 53, 2, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __state._M_week_no = __mem; 234s 1949: __state._M_have_wweek = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'x': 234s 1949: 234s 1949: const char_type* __dates[2]; 234s 1949: __tp._M_date_formats(__dates); 234s 1949: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 234s 1949: __tm, __dates[0], __state); 234s 1949: break; 234s 1949: case 'X': 234s 1949: 234s 1949: const char_type* __times[2]; 234s 1949: __tp._M_time_formats(__times); 234s 1949: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, 234s 1949: __tm, __times[0], __state); 234s 1949: break; 234s 1949: case 'y': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 0, 99, 2, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __state._M_want_century = 1; 234s 1949: __state._M_want_xday = 1; 234s 1949: 234s 1949: 234s 1949: __c = 0; 234s 1949: if (__beg != __end) 234s 1949: __c = __ctype.narrow(*__beg, '*'); 234s 1949: if (__c >= '0' && __c <= '9') 234s 1949: { 234s 1949: ++__beg; 234s 1949: __mem = __mem * 10 + (__c - '0'); 234s 1949: if (__beg != __end) 234s 1949: { 234s 1949: __c = __ctype.narrow(*__beg, '*'); 234s 1949: if (__c >= '0' && __c <= '9') 234s 1949: { 234s 1949: ++__beg; 234s 1949: __mem = __mem * 10 + (__c - '0'); 234s 1949: } 234s 1949: } 234s 1949: __mem -= 1900; 234s 1949: __state._M_want_century = 0; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: else if (__mem < 69) 234s 1949: __mem += 100; 234s 1949: __tm->tm_year = __mem; 234s 1949: } 234s 1949: break; 234s 1949: case 'Y': 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: __tm->tm_year = __mem - 1900; 234s 1949: __state._M_want_century = 0; 234s 1949: __state._M_want_xday = 1; 234s 1949: } 234s 1949: break; 234s 1949: case 'Z': 234s 1949: 234s 1949: if (__ctype.is(ctype_base::upper, *__beg)) 234s 1949: { 234s 1949: int __tmp; 234s 1949: __beg = _M_extract_name(__beg, __end, __tmp, 234s 1949: __timepunct_cache<_CharT>::_S_timezones, 234s 1949: 14, __io, __tmperr); 234s 1949: 234s 1949: 234s 1949: if (__beg != __end && !__tmperr && __tmp == 0 234s 1949: && (*__beg == __ctype.widen('-') 234s 1949: || *__beg == __ctype.widen('+'))) 234s 1949: { 234s 1949: __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2, 234s 1949: __io, __tmperr); 234s 1949: __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2, 234s 1949: __io, __tmperr); 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: __tmperr |= ios_base::failbit; 234s 1949: break; 234s 1949: case '%': 234s 1949: if (*__beg == __ctype.widen('%')) 234s 1949: ++__beg; 234s 1949: else 234s 1949: __tmperr |= ios_base::failbit; 234s 1949: break; 234s 1949: default: 234s 1949: 234s 1949: __tmperr |= ios_base::failbit; 234s 1949: } 234s 1949: } 234s 1949: else if (__ctype.is(ctype_base::space, __format[__i])) 234s 1949: { 234s 1949: 234s 1949: while (__beg != __end 234s 1949: && __ctype.is(ctype_base::space, *__beg)) 234s 1949: ++__beg; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__ctype.tolower(__format[__i]) == __ctype.tolower(*__beg) 234s 1949: || __ctype.toupper(__format[__i]) == __ctype.toupper(*__beg)) 234s 1949: ++__beg; 234s 1949: else 234s 1949: __tmperr |= ios_base::failbit; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: if (__tmperr || __i != __len) 234s 1949: __err |= ios_base::failbit; 234s 1949: 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm, 234s 1949: const _CharT* __format) const 234s 1949: { 234s 1949: __time_get_state __state = __time_get_state(); 234s 1949: return _M_extract_via_format(__beg, __end, __io, __err, __tm, 234s 1949: __format, __state); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: _M_extract_num(iter_type __beg, iter_type __end, int& __member, 234s 1949: int __min, int __max, size_t __len, 234s 1949: ios_base& __io, ios_base::iostate& __err) const 234s 1949: { 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: 234s 1949: size_t __i = 0; 234s 1949: int __value = 0; 234s 1949: for (; __beg != __end && __i < __len; ++__beg, (void)++__i) 234s 1949: { 234s 1949: const char __c = __ctype.narrow(*__beg, '*'); 234s 1949: if (__c >= '0' && __c <= '9') 234s 1949: { 234s 1949: __value = __value * 10 + (__c - '0'); 234s 1949: if (__value > __max) 234s 1949: break; 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: if (__i && __value >= __min && __value <= __max) 234s 1949: __member = __value; 234s 1949: else 234s 1949: __err |= ios_base::failbit; 234s 1949: 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: _M_extract_name(iter_type __beg, iter_type __end, int& __member, 234s 1949: const _CharT** __names, size_t __indexlen, 234s 1949: ios_base& __io, ios_base::iostate& __err) const 234s 1949: { 234s 1949: typedef char_traits<_CharT> __traits_type; 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: 234s 1949: size_t* __matches 234s 1949: = static_cast(__builtin_alloca(2 * sizeof(size_t) 234s 1949: * __indexlen)); 234s 1949: size_t* __lengths = __matches + __indexlen; 234s 1949: size_t __nmatches = 0; 234s 1949: size_t __pos = 0; 234s 1949: bool __testvalid = true; 234s 1949: const char_type* __name; 234s 1949: bool __begupdated = false; 234s 1949: 234s 1949: 234s 1949: if (__beg != __end) 234s 1949: { 234s 1949: const char_type __c = *__beg; 234s 1949: 234s 1949: const char_type __cl = __ctype.tolower(__c); 234s 1949: const char_type __cu = __ctype.toupper(__c); 234s 1949: for (size_t __i1 = 0; __i1 < __indexlen; ++__i1) 234s 1949: if (__cl == __ctype.tolower(__names[__i1][0]) 234s 1949: || __cu == __ctype.toupper(__names[__i1][0])) 234s 1949: { 234s 1949: __lengths[__nmatches] 234s 1949: = __traits_type::length(__names[__i1]); 234s 1949: __matches[__nmatches++] = __i1; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: while (__nmatches > 1) 234s 1949: { 234s 1949: 234s 1949: size_t __minlen = __lengths[0]; 234s 1949: for (size_t __i2 = 1; __i2 < __nmatches; ++__i2) 234s 1949: __minlen = std::min(__minlen, __lengths[__i2]); 234s 1949: ++__pos; 234s 1949: ++__beg; 234s 1949: if (__pos == __minlen) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: bool __match_longer = false; 234s 1949: 234s 1949: if (__beg != __end) 234s 1949: { 234s 1949: 234s 1949: const char_type __cl = __ctype.tolower(*__beg); 234s 1949: const char_type __cu = __ctype.toupper(*__beg); 234s 1949: for (size_t __i3 = 0; __i3 < __nmatches; ++__i3) 234s 1949: { 234s 1949: __name = __names[__matches[__i3]]; 234s 1949: if (__lengths[__i3] > __pos 234s 1949: && (__ctype.tolower(__name[__pos]) == __cl 234s 1949: || __ctype.toupper(__name[__pos]) == __cu)) 234s 1949: { 234s 1949: __match_longer = true; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: for (size_t __i4 = 0; __i4 < __nmatches;) 234s 1949: if (__match_longer == (__lengths[__i4] == __pos)) 234s 1949: { 234s 1949: __matches[__i4] = __matches[--__nmatches]; 234s 1949: __lengths[__i4] = __lengths[__nmatches]; 234s 1949: } 234s 1949: else 234s 1949: ++__i4; 234s 1949: if (__match_longer) 234s 1949: { 234s 1949: __minlen = __lengths[0]; 234s 1949: for (size_t __i5 = 1; __i5 < __nmatches; ++__i5) 234s 1949: __minlen = std::min(__minlen, __lengths[__i5]); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__nmatches == 2 && (__indexlen & 1) == 0) 234s 1949: { 234s 1949: if (__matches[0] < __indexlen / 2) 234s 1949: { 234s 1949: if (__matches[1] == __matches[0] + __indexlen / 2) 234s 1949: __nmatches = 1; 234s 1949: } 234s 1949: else if (__matches[1] == __matches[0] - __indexlen / 2) 234s 1949: { 234s 1949: __matches[0] = __matches[1]; 234s 1949: __lengths[0] = __lengths[1]; 234s 1949: __nmatches = 1; 234s 1949: } 234s 1949: } 234s 1949: __begupdated = true; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: if (__pos < __minlen && __beg != __end) 234s 1949: { 234s 1949: 234s 1949: const char_type __cl = __ctype.tolower(*__beg); 234s 1949: const char_type __cu = __ctype.toupper(*__beg); 234s 1949: for (size_t __i6 = 0; __i6 < __nmatches;) 234s 1949: { 234s 1949: __name = __names[__matches[__i6]]; 234s 1949: if (__ctype.tolower(__name[__pos]) != __cl 234s 1949: && __ctype.toupper(__name[__pos]) != __cu) 234s 1949: { 234s 1949: __matches[__i6] = __matches[--__nmatches]; 234s 1949: __lengths[__i6] = __lengths[__nmatches]; 234s 1949: } 234s 1949: else 234s 1949: ++__i6; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: if (__nmatches == 1) 234s 1949: { 234s 1949: 234s 1949: if (!__begupdated) 234s 1949: { 234s 1949: ++__beg; 234s 1949: ++__pos; 234s 1949: } 234s 1949: __name = __names[__matches[0]]; 234s 1949: const size_t __len = __lengths[0]; 234s 1949: while (__pos < __len 234s 1949: && __beg != __end 234s 1949: 234s 1949: && (__ctype.tolower(__name[__pos]) == __ctype.tolower(*__beg) 234s 1949: || (__ctype.toupper(__name[__pos]) 234s 1949: == __ctype.toupper(*__beg)))) 234s 1949: ++__beg, (void)++__pos; 234s 1949: 234s 1949: if (__len == __pos) 234s 1949: __member = __matches[0]; 234s 1949: else 234s 1949: __testvalid = false; 234s 1949: } 234s 1949: else 234s 1949: __testvalid = false; 234s 1949: if (!__testvalid) 234s 1949: __err |= ios_base::failbit; 234s 1949: 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member, 234s 1949: const _CharT** __names, size_t __indexlen, 234s 1949: ios_base& __io, ios_base::iostate& __err) const 234s 1949: { 234s 1949: typedef char_traits<_CharT> __traits_type; 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: 234s 1949: int* __matches = static_cast(__builtin_alloca(2 * sizeof(int) 234s 1949: * __indexlen)); 234s 1949: size_t __nmatches = 0; 234s 1949: size_t* __matches_lengths = 0; 234s 1949: size_t __pos = 0; 234s 1949: 234s 1949: if (__beg != __end) 234s 1949: { 234s 1949: const char_type __c = *__beg; 234s 1949: for (size_t __i = 0; __i < 2 * __indexlen; ++__i) 234s 1949: if (__c == __names[__i][0] 234s 1949: || __c == __ctype.toupper(__names[__i][0])) 234s 1949: __matches[__nmatches++] = __i; 234s 1949: } 234s 1949: 234s 1949: if (__nmatches) 234s 1949: { 234s 1949: ++__beg; 234s 1949: ++__pos; 234s 1949: 234s 1949: __matches_lengths 234s 1949: = static_cast(__builtin_alloca(sizeof(size_t) 234s 1949: * __nmatches)); 234s 1949: for (size_t __i = 0; __i < __nmatches; ++__i) 234s 1949: __matches_lengths[__i] 234s 1949: = __traits_type::length(__names[__matches[__i]]); 234s 1949: } 234s 1949: 234s 1949: for (; __beg != __end; ++__beg, (void)++__pos) 234s 1949: { 234s 1949: size_t __nskipped = 0; 234s 1949: const char_type __c = *__beg; 234s 1949: for (size_t __i = 0; __i < __nmatches;) 234s 1949: { 234s 1949: const char_type* __name = __names[__matches[__i]]; 234s 1949: if (__pos >= __matches_lengths[__i]) 234s 1949: ++__nskipped, ++__i; 234s 1949: else if (!(__name[__pos] == __c)) 234s 1949: { 234s 1949: --__nmatches; 234s 1949: __matches[__i] = __matches[__nmatches]; 234s 1949: __matches_lengths[__i] = __matches_lengths[__nmatches]; 234s 1949: } 234s 1949: else 234s 1949: ++__i; 234s 1949: } 234s 1949: if (__nskipped == __nmatches) 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: if ((__nmatches == 1 && __matches_lengths[0] == __pos) 234s 1949: || (__nmatches == 2 && (__matches_lengths[0] == __pos 234s 1949: || __matches_lengths[1] == __pos))) 234s 1949: __member = (__matches[0] >= (int)__indexlen 234s 1949: ? __matches[0] - (int)__indexlen : __matches[0]); 234s 1949: else 234s 1949: __err |= ios_base::failbit; 234s 1949: 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: do_get_time(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const 234s 1949: { 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 234s 1949: const char_type* __times[2]; 234s 1949: __tp._M_time_formats(__times); 234s 1949: __time_get_state __state = __time_get_state(); 234s 1949: __beg = _M_extract_via_format(__beg, __end, __io, __err, 234s 1949: __tm, __times[0], __state); 234s 1949: __state._M_finalize_state(__tm); 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: do_get_date(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const 234s 1949: { 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 234s 1949: const char_type* __dates[2]; 234s 1949: __tp._M_date_formats(__dates); 234s 1949: __time_get_state __state = __time_get_state(); 234s 1949: __beg = _M_extract_via_format(__beg, __end, __io, __err, 234s 1949: __tm, __dates[0], __state); 234s 1949: __state._M_finalize_state(__tm); 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const 234s 1949: { 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 234s 1949: const char_type* __days[14]; 234s 1949: __tp._M_days_abbreviated(__days); 234s 1949: __tp._M_days(__days + 7); 234s 1949: int __tmpwday; 234s 1949: ios_base::iostate __tmperr = ios_base::goodbit; 234s 1949: 234s 1949: __beg = _M_extract_wday_or_month(__beg, __end, __tmpwday, __days, 7, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: __tm->tm_wday = __tmpwday; 234s 1949: else 234s 1949: __err |= ios_base::failbit; 234s 1949: 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: do_get_monthname(iter_type __beg, iter_type __end, 234s 1949: ios_base& __io, ios_base::iostate& __err, tm* __tm) const 234s 1949: { 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); 234s 1949: const char_type* __months[24]; 234s 1949: __tp._M_months_abbreviated(__months); 234s 1949: __tp._M_months(__months + 12); 234s 1949: int __tmpmon; 234s 1949: ios_base::iostate __tmperr = ios_base::goodbit; 234s 1949: 234s 1949: __beg = _M_extract_wday_or_month(__beg, __end, __tmpmon, __months, 12, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: __tm->tm_mon = __tmpmon; 234s 1949: else 234s 1949: __err |= ios_base::failbit; 234s 1949: 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: do_get_year(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm) const 234s 1949: { 234s 1949: int __tmpyear; 234s 1949: ios_base::iostate __tmperr = ios_base::goodbit; 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: const ctype<_CharT>& __ctype = use_facet >(__loc); 234s 1949: 234s 1949: __beg = _M_extract_num(__beg, __end, __tmpyear, 0, 99, 2, 234s 1949: __io, __tmperr); 234s 1949: if (!__tmperr) 234s 1949: { 234s 1949: char __c = 0; 234s 1949: if (__beg != __end) 234s 1949: __c = __ctype.narrow(*__beg, '*'); 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__c >= '0' && __c <= '9') 234s 1949: { 234s 1949: ++__beg; 234s 1949: __tmpyear = __tmpyear * 10 + (__c - '0'); 234s 1949: if (__beg != __end) 234s 1949: { 234s 1949: __c = __ctype.narrow(*__beg, '*'); 234s 1949: if (__c >= '0' && __c <= '9') 234s 1949: { 234s 1949: ++__beg; 234s 1949: __tmpyear = __tmpyear * 10 + (__c - '0'); 234s 1949: } 234s 1949: } 234s 1949: __tmpyear -= 1900; 234s 1949: } 234s 1949: else if (__tmpyear < 69) 234s 1949: __tmpyear += 100; 234s 1949: __tm->tm_year = __tmpyear; 234s 1949: } 234s 1949: else 234s 1949: __err |= ios_base::failbit; 234s 1949: 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: get(iter_type __s, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm, const char_type* __fmt, 234s 1949: const char_type* __fmtend) const 234s 1949: { 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: ctype<_CharT> const& __ctype = use_facet >(__loc); 234s 1949: __err = ios_base::goodbit; 234s 1949: bool __use_state = false; 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wpmf-conversions" 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if ((void*)(this->*(&time_get::do_get)) == (void*)(&time_get::do_get)) 234s 1949: __use_state = true; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: __time_get_state __state = __time_get_state(); 234s 1949: while (__fmt != __fmtend && 234s 1949: __err == ios_base::goodbit) 234s 1949: { 234s 1949: if (__s == __end) 234s 1949: { 234s 1949: __err = ios_base::eofbit | ios_base::failbit; 234s 1949: break; 234s 1949: } 234s 1949: else if (__ctype.narrow(*__fmt, 0) == '%') 234s 1949: { 234s 1949: const char_type* __fmt_start = __fmt; 234s 1949: char __format; 234s 1949: char __mod = 0; 234s 1949: if (++__fmt == __fmtend) 234s 1949: { 234s 1949: __err = ios_base::failbit; 234s 1949: break; 234s 1949: } 234s 1949: const char __c = __ctype.narrow(*__fmt, 0); 234s 1949: if (__c != 'E' && __c != 'O') 234s 1949: __format = __c; 234s 1949: else if (++__fmt != __fmtend) 234s 1949: { 234s 1949: __mod = __c; 234s 1949: __format = __ctype.narrow(*__fmt, 0); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __err = ios_base::failbit; 234s 1949: break; 234s 1949: } 234s 1949: if (__use_state) 234s 1949: { 234s 1949: char_type __new_fmt[4]; 234s 1949: __new_fmt[0] = __fmt_start[0]; 234s 1949: __new_fmt[1] = __fmt_start[1]; 234s 1949: if (__mod) 234s 1949: { 234s 1949: __new_fmt[2] = __fmt_start[2]; 234s 1949: __new_fmt[3] = char_type(); 234s 1949: } 234s 1949: else 234s 1949: __new_fmt[2] = char_type(); 234s 1949: __s = _M_extract_via_format(__s, __end, __io, __err, __tm, 234s 1949: __new_fmt, __state); 234s 1949: if (__s == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: } 234s 1949: else 234s 1949: __s = this->do_get(__s, __end, __io, __err, __tm, __format, 234s 1949: __mod); 234s 1949: ++__fmt; 234s 1949: } 234s 1949: else if (__ctype.is(ctype_base::space, *__fmt)) 234s 1949: { 234s 1949: ++__fmt; 234s 1949: while (__fmt != __fmtend && 234s 1949: __ctype.is(ctype_base::space, *__fmt)) 234s 1949: ++__fmt; 234s 1949: 234s 1949: while (__s != __end && 234s 1949: __ctype.is(ctype_base::space, *__s)) 234s 1949: ++__s; 234s 1949: } 234s 1949: 234s 1949: else if (__ctype.tolower(*__s) == __ctype.tolower(*__fmt) || 234s 1949: __ctype.toupper(*__s) == __ctype.toupper(*__fmt)) 234s 1949: { 234s 1949: ++__s; 234s 1949: ++__fmt; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __err = ios_base::failbit; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: if (__use_state) 234s 1949: __state._M_finalize_state(__tm); 234s 1949: return __s; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline 234s 1949: _InIter 234s 1949: time_get<_CharT, _InIter>:: 234s 1949: do_get(iter_type __beg, iter_type __end, ios_base& __io, 234s 1949: ios_base::iostate& __err, tm* __tm, 234s 1949: char __format, char __mod) const 234s 1949: { 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: ctype<_CharT> const& __ctype = use_facet >(__loc); 234s 1949: __err = ios_base::goodbit; 234s 1949: 234s 1949: char_type __fmt[4]; 234s 1949: __fmt[0] = __ctype.widen('%'); 234s 1949: if (!__mod) 234s 1949: { 234s 1949: __fmt[1] = __format; 234s 1949: __fmt[2] = char_type(); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __fmt[1] = __mod; 234s 1949: __fmt[2] = __format; 234s 1949: __fmt[3] = char_type(); 234s 1949: } 234s 1949: 234s 1949: __time_get_state __state = __time_get_state(); 234s 1949: __beg = _M_extract_via_format(__beg, __end, __io, __err, __tm, __fmt, 234s 1949: __state); 234s 1949: __state._M_finalize_state(__tm); 234s 1949: if (__beg == __end) 234s 1949: __err |= ios_base::eofbit; 234s 1949: return __beg; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _OutIter 234s 1949: time_put<_CharT, _OutIter>:: 234s 1949: put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, 234s 1949: const _CharT* __beg, const _CharT* __end) const 234s 1949: { 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: ctype<_CharT> const& __ctype = use_facet >(__loc); 234s 1949: for (; __beg != __end; ++__beg) 234s 1949: if (__ctype.narrow(*__beg, 0) != '%') 234s 1949: { 234s 1949: *__s = *__beg; 234s 1949: ++__s; 234s 1949: } 234s 1949: else if (++__beg != __end) 234s 1949: { 234s 1949: char __format; 234s 1949: char __mod = 0; 234s 1949: const char __c = __ctype.narrow(*__beg, 0); 234s 1949: if (__c != 'E' && __c != 'O') 234s 1949: __format = __c; 234s 1949: else if (++__beg != __end) 234s 1949: { 234s 1949: __mod = __c; 234s 1949: __format = __ctype.narrow(*__beg, 0); 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: __s = this->do_put(__s, __io, __fill, __tm, __format, __mod); 234s 1949: } 234s 1949: else 234s 1949: break; 234s 1949: return __s; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _OutIter 234s 1949: time_put<_CharT, _OutIter>:: 234s 1949: do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm, 234s 1949: char __format, char __mod) const 234s 1949: { 234s 1949: const locale& __loc = __io._M_getloc(); 234s 1949: ctype<_CharT> const& __ctype = use_facet >(__loc); 234s 1949: __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc); 234s 1949: 234s 1949: 234s 1949: 234s 1949: const size_t __maxlen = 128; 234s 1949: char_type __res[__maxlen]; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: char_type __fmt[4]; 234s 1949: __fmt[0] = __ctype.widen('%'); 234s 1949: if (!__mod) 234s 1949: { 234s 1949: __fmt[1] = __format; 234s 1949: __fmt[2] = char_type(); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __fmt[1] = __mod; 234s 1949: __fmt[2] = __format; 234s 1949: __fmt[3] = char_type(); 234s 1949: } 234s 1949: 234s 1949: __tp._M_put(__res, __maxlen, __fmt, __tm); 234s 1949: 234s 1949: 234s 1949: return std::__write(__s, __res, char_traits::length(__res)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: #pragma GCC diagnostic ignored "-Wlong-long" 234s 1949: extern template class moneypunct; 234s 1949: extern template class moneypunct; 234s 1949: extern template class moneypunct_byname; 234s 1949: extern template class moneypunct_byname; 234s 1949: extern template class __cxx11:: money_get; 234s 1949: extern template class __cxx11:: money_put; 234s 1949: extern template class __timepunct; 234s 1949: extern template class time_put; 234s 1949: extern template class time_put_byname; 234s 1949: extern template class time_get; 234s 1949: extern template class time_get_byname; 234s 1949: extern template class messages; 234s 1949: extern template class messages_byname; 234s 1949: 234s 1949: extern template 234s 1949: const moneypunct* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const moneypunct* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const money_put* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const money_get* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const __timepunct* 234s 1949: __try_use_facet<__timepunct >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const time_put* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const time_get* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const messages* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const moneypunct& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const moneypunct& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const money_put& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const money_get& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const __timepunct& 234s 1949: use_facet<__timepunct >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const time_put& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const time_get& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const messages& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet<__timepunct >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: 234s 1949: extern template class moneypunct; 234s 1949: extern template class moneypunct; 234s 1949: extern template class moneypunct_byname; 234s 1949: extern template class moneypunct_byname; 234s 1949: extern template class __cxx11:: money_get; 234s 1949: extern template class __cxx11:: money_put; 234s 1949: extern template class __timepunct; 234s 1949: extern template class time_put; 234s 1949: extern template class time_put_byname; 234s 1949: extern template class time_get; 234s 1949: extern template class time_get_byname; 234s 1949: extern template class messages; 234s 1949: extern template class messages_byname; 234s 1949: 234s 1949: extern template 234s 1949: const moneypunct* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const moneypunct* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const money_put* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const money_get* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const __timepunct* 234s 1949: __try_use_facet<__timepunct >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const time_put* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const time_get* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const messages* 234s 1949: __try_use_facet >(const locale&) noexcept; 234s 1949: 234s 1949: extern template 234s 1949: const moneypunct& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const moneypunct& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const money_put& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const money_get& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const __timepunct& 234s 1949: use_facet<__timepunct >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const time_put& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const time_get& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: const messages& 234s 1949: use_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet<__timepunct >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: extern template 234s 1949: bool 234s 1949: has_facet >(const locale&); 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 2072 "/usr/include/c++/15/bits/locale_facets_nonio.h" 2 3 4 234s 1949: # 46 "/usr/include/c++/15/locale" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/locale_conv.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/locale_conv.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: __do_str_codecvt(const _InChar* __first, const _InChar* __last, 234s 1949: _OutStr& __outstr, const _Codecvt& __cvt, _State& __state, 234s 1949: size_t& __count, _Fn __fn) 234s 1949: { 234s 1949: if (__first == __last) 234s 1949: { 234s 1949: __outstr.clear(); 234s 1949: __count = 0; 234s 1949: return true; 234s 1949: } 234s 1949: 234s 1949: size_t __outchars = 0; 234s 1949: auto __next = __first; 234s 1949: const auto __maxlen = __cvt.max_length() + 1; 234s 1949: 234s 1949: codecvt_base::result __result; 234s 1949: do 234s 1949: { 234s 1949: __outstr.resize(__outstr.size() + (__last - __next) * __maxlen); 234s 1949: auto __outnext = &__outstr.front() + __outchars; 234s 1949: auto const __outlast = &__outstr.back() + 1; 234s 1949: __result = (__cvt.*__fn)(__state, __next, __last, __next, 234s 1949: __outnext, __outlast, __outnext); 234s 1949: __outchars = __outnext - &__outstr.front(); 234s 1949: } 234s 1949: while (__result == codecvt_base::partial && __next != __last 234s 1949: && ptrdiff_t(__outstr.size() - __outchars) < __maxlen); 234s 1949: 234s 1949: if (__result == codecvt_base::error) 234s 1949: { 234s 1949: __count = __next - __first; 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (is_same()) 234s 1949: if (__result == codecvt_base::noconv) 234s 1949: { 234s 1949: __outstr.assign(__first, __last); 234s 1949: __count = __last - __first; 234s 1949: return true; 234s 1949: } 234s 1949: 234s 1949: __outstr.resize(__outchars); 234s 1949: __count = __next - __first; 234s 1949: return true; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: __str_codecvt_in(const char* __first, const char* __last, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __outstr, 234s 1949: const codecvt<_CharT, char, _State>& __cvt, 234s 1949: _State& __state, size_t& __count) 234s 1949: { 234s 1949: using _Codecvt = codecvt<_CharT, char, _State>; 234s 1949: using _ConvFn 234s 1949: = codecvt_base::result 234s 1949: (_Codecvt::*)(_State&, const char*, const char*, const char*&, 234s 1949: _CharT*, _CharT*, _CharT*&) const; 234s 1949: _ConvFn __fn = &codecvt<_CharT, char, _State>::in; 234s 1949: return __do_str_codecvt(__first, __last, __outstr, __cvt, __state, 234s 1949: __count, __fn); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: __str_codecvt_in(const char* __first, const char* __last, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __outstr, 234s 1949: const codecvt<_CharT, char, _State>& __cvt) 234s 1949: { 234s 1949: _State __state = {}; 234s 1949: size_t __n; 234s 1949: return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: __str_codecvt_in_all(const char* __first, const char* __last, 234s 1949: basic_string<_CharT, _Traits, _Alloc>& __outstr, 234s 1949: const codecvt<_CharT, char, _State>& __cvt) 234s 1949: { 234s 1949: _State __state = {}; 234s 1949: size_t __n; 234s 1949: return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n) 234s 1949: && (__n == size_t(__last - __first)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: __str_codecvt_out(const _CharT* __first, const _CharT* __last, 234s 1949: basic_string& __outstr, 234s 1949: const codecvt<_CharT, char, _State>& __cvt, 234s 1949: _State& __state, size_t& __count) 234s 1949: { 234s 1949: using _Codecvt = codecvt<_CharT, char, _State>; 234s 1949: using _ConvFn 234s 1949: = codecvt_base::result 234s 1949: (_Codecvt::*)(_State&, const _CharT*, const _CharT*, const _CharT*&, 234s 1949: char*, char*, char*&) const; 234s 1949: _ConvFn __fn = &codecvt<_CharT, char, _State>::out; 234s 1949: return __do_str_codecvt(__first, __last, __outstr, __cvt, __state, 234s 1949: __count, __fn); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: __str_codecvt_out(const _CharT* __first, const _CharT* __last, 234s 1949: basic_string& __outstr, 234s 1949: const codecvt<_CharT, char, _State>& __cvt) 234s 1949: { 234s 1949: _State __state = {}; 234s 1949: size_t __n; 234s 1949: return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: __str_codecvt_out_all(const _CharT* __first, const _CharT* __last, 234s 1949: basic_string& __outstr, 234s 1949: const codecvt<_CharT, char, _State>& __cvt) 234s 1949: { 234s 1949: _State __state = {}; 234s 1949: size_t __n; 234s 1949: return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n) 234s 1949: && (__n == size_t(__last - __first)); 234s 1949: } 234s 1949: # 223 "/usr/include/c++/15/bits/locale_conv.h" 3 4 234s 1949: namespace __detail 234s 1949: { 234s 1949: template 234s 1949: struct _Scoped_ptr 234s 1949: { 234s 1949: __attribute__((__nonnull__(2))) 234s 1949: explicit 234s 1949: _Scoped_ptr(_Tp* __ptr) noexcept 234s 1949: : _M_ptr(__ptr) 234s 1949: { } 234s 1949: 234s 1949: _Scoped_ptr(_Tp* __ptr, const char* __msg) 234s 1949: : _M_ptr(__ptr) 234s 1949: { 234s 1949: if (!__ptr) 234s 1949: __throw_logic_error(__msg); 234s 1949: } 234s 1949: 234s 1949: ~_Scoped_ptr() { delete _M_ptr; } 234s 1949: 234s 1949: _Scoped_ptr(const _Scoped_ptr&) = delete; 234s 1949: _Scoped_ptr& operator=(const _Scoped_ptr&) = delete; 234s 1949: 234s 1949: __attribute__((__returns_nonnull__)) 234s 1949: _Tp* operator->() const noexcept { return _M_ptr; } 234s 1949: 234s 1949: _Tp& operator*() const noexcept { return *_M_ptr; } 234s 1949: 234s 1949: private: 234s 1949: _Tp* _M_ptr; 234s 1949: }; 234s 1949: } 234s 1949: 234s 1949: namespace __cxx11 { 234s 1949: 234s 1949: 234s 1949: template, 234s 1949: typename _Byte_alloc = allocator> 234s 1949: class wstring_convert 234s 1949: { 234s 1949: public: 234s 1949: typedef basic_string, _Byte_alloc> byte_string; 234s 1949: typedef basic_string<_Elem, char_traits<_Elem>, _Wide_alloc> wide_string; 234s 1949: typedef typename _Codecvt::state_type state_type; 234s 1949: typedef typename wide_string::traits_type::int_type int_type; 234s 1949: 234s 1949: 234s 1949: wstring_convert() : _M_cvt(new _Codecvt()) { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: wstring_convert(_Codecvt* __pcvt) : _M_cvt(__pcvt, "wstring_convert") 234s 1949: { } 234s 1949: # 291 "/usr/include/c++/15/bits/locale_conv.h" 3 4 234s 1949: wstring_convert(_Codecvt* __pcvt, state_type __state) 234s 1949: : _M_cvt(__pcvt, "std::wstring_convert"), 234s 1949: _M_state(__state), _M_with_cvtstate(true) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: wstring_convert(const byte_string& __byte_err, 234s 1949: const wide_string& __wide_err = wide_string()) 234s 1949: : _M_cvt(new _Codecvt), 234s 1949: _M_byte_err_string(__byte_err), _M_wide_err_string(__wide_err), 234s 1949: _M_with_strings(true) 234s 1949: { } 234s 1949: 234s 1949: ~wstring_convert() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: wstring_convert(const wstring_convert&) = delete; 234s 1949: wstring_convert& operator=(const wstring_convert&) = delete; 234s 1949: 234s 1949: 234s 1949: wide_string 234s 1949: from_bytes(char __byte) 234s 1949: { 234s 1949: char __bytes[2] = { __byte }; 234s 1949: return from_bytes(__bytes, __bytes+1); 234s 1949: } 234s 1949: 234s 1949: wide_string 234s 1949: from_bytes(const char* __ptr) 234s 1949: { return from_bytes(__ptr, __ptr+char_traits::length(__ptr)); } 234s 1949: 234s 1949: wide_string 234s 1949: from_bytes(const byte_string& __str) 234s 1949: { 234s 1949: auto __ptr = __str.data(); 234s 1949: return from_bytes(__ptr, __ptr + __str.size()); 234s 1949: } 234s 1949: 234s 1949: wide_string 234s 1949: from_bytes(const char* __first, const char* __last) 234s 1949: { 234s 1949: if (!_M_with_cvtstate) 234s 1949: _M_state = state_type(); 234s 1949: wide_string __out{ _M_wide_err_string.get_allocator() }; 234s 1949: if (__str_codecvt_in(__first, __last, __out, *_M_cvt, _M_state, 234s 1949: _M_count)) 234s 1949: return __out; 234s 1949: if (_M_with_strings) 234s 1949: return _M_wide_err_string; 234s 1949: __throw_range_error("wstring_convert::from_bytes"); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: byte_string 234s 1949: to_bytes(_Elem __wchar) 234s 1949: { 234s 1949: _Elem __wchars[2] = { __wchar }; 234s 1949: return to_bytes(__wchars, __wchars+1); 234s 1949: } 234s 1949: 234s 1949: byte_string 234s 1949: to_bytes(const _Elem* __ptr) 234s 1949: { 234s 1949: return to_bytes(__ptr, __ptr+wide_string::traits_type::length(__ptr)); 234s 1949: } 234s 1949: 234s 1949: byte_string 234s 1949: to_bytes(const wide_string& __wstr) 234s 1949: { 234s 1949: auto __ptr = __wstr.data(); 234s 1949: return to_bytes(__ptr, __ptr + __wstr.size()); 234s 1949: } 234s 1949: 234s 1949: byte_string 234s 1949: to_bytes(const _Elem* __first, const _Elem* __last) 234s 1949: { 234s 1949: if (!_M_with_cvtstate) 234s 1949: _M_state = state_type(); 234s 1949: byte_string __out{ _M_byte_err_string.get_allocator() }; 234s 1949: if (__str_codecvt_out(__first, __last, __out, *_M_cvt, _M_state, 234s 1949: _M_count)) 234s 1949: return __out; 234s 1949: if (_M_with_strings) 234s 1949: return _M_byte_err_string; 234s 1949: __throw_range_error("wstring_convert::to_bytes"); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_t converted() const noexcept { return _M_count; } 234s 1949: 234s 1949: 234s 1949: state_type state() const { return _M_state; } 234s 1949: 234s 1949: private: 234s 1949: __detail::_Scoped_ptr<_Codecvt> _M_cvt; 234s 1949: byte_string _M_byte_err_string; 234s 1949: wide_string _M_wide_err_string; 234s 1949: state_type _M_state = state_type(); 234s 1949: size_t _M_count = 0; 234s 1949: bool _M_with_cvtstate = false; 234s 1949: bool _M_with_strings = false; 234s 1949: }; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: class wbuffer_convert 234s 1949: : public basic_streambuf<_Elem, _Tr> 234s 1949: { 234s 1949: typedef basic_streambuf<_Elem, _Tr> _Wide_streambuf; 234s 1949: 234s 1949: public: 234s 1949: typedef typename _Codecvt::state_type state_type; 234s 1949: 234s 1949: 234s 1949: wbuffer_convert() : wbuffer_convert(nullptr) { } 234s 1949: # 428 "/usr/include/c++/15/bits/locale_conv.h" 3 4 234s 1949: explicit 234s 1949: wbuffer_convert(streambuf* __bytebuf, _Codecvt* __pcvt = new _Codecvt, 234s 1949: state_type __state = state_type()) 234s 1949: : _M_buf(__bytebuf), _M_cvt(__pcvt, "std::wbuffer_convert"), 234s 1949: _M_state(__state), _M_always_noconv(_M_cvt->always_noconv()) 234s 1949: { 234s 1949: if (_M_buf) 234s 1949: { 234s 1949: this->setp(_M_put_area, _M_put_area + _S_buffer_length); 234s 1949: this->setg(_M_get_area + _S_putback_length, 234s 1949: _M_get_area + _S_putback_length, 234s 1949: _M_get_area + _S_putback_length); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: ~wbuffer_convert() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: wbuffer_convert(const wbuffer_convert&) = delete; 234s 1949: wbuffer_convert& operator=(const wbuffer_convert&) = delete; 234s 1949: 234s 1949: streambuf* rdbuf() const noexcept { return _M_buf; } 234s 1949: 234s 1949: streambuf* 234s 1949: rdbuf(streambuf *__bytebuf) noexcept 234s 1949: { 234s 1949: auto __prev = _M_buf; 234s 1949: _M_buf = __bytebuf; 234s 1949: return __prev; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: state_type state() const noexcept { return _M_state; } 234s 1949: 234s 1949: protected: 234s 1949: int 234s 1949: sync() 234s 1949: { return _M_buf && _M_conv_put() && !_M_buf->pubsync() ? 0 : -1; } 234s 1949: 234s 1949: typename _Wide_streambuf::int_type 234s 1949: overflow(typename _Wide_streambuf::int_type __out) 234s 1949: { 234s 1949: if (!_M_buf || !_M_conv_put()) 234s 1949: return _Tr::eof(); 234s 1949: else if (!_Tr::eq_int_type(__out, _Tr::eof())) 234s 1949: return this->sputc(__out); 234s 1949: return _Tr::not_eof(__out); 234s 1949: } 234s 1949: 234s 1949: typename _Wide_streambuf::int_type 234s 1949: underflow() 234s 1949: { 234s 1949: if (!_M_buf) 234s 1949: return _Tr::eof(); 234s 1949: 234s 1949: if (this->gptr() < this->egptr() || (_M_buf && _M_conv_get())) 234s 1949: return _Tr::to_int_type(*this->gptr()); 234s 1949: else 234s 1949: return _Tr::eof(); 234s 1949: } 234s 1949: 234s 1949: streamsize 234s 1949: xsputn(const typename _Wide_streambuf::char_type* __s, streamsize __n) 234s 1949: { 234s 1949: if (!_M_buf || __n == 0) 234s 1949: return 0; 234s 1949: streamsize __done = 0; 234s 1949: do 234s 1949: { 234s 1949: auto __nn = std::min(this->epptr() - this->pptr(), 234s 1949: __n - __done); 234s 1949: _Tr::copy(this->pptr(), __s + __done, __nn); 234s 1949: this->pbump(__nn); 234s 1949: __done += __nn; 234s 1949: } while (__done < __n && _M_conv_put()); 234s 1949: return __done; 234s 1949: } 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: bool 234s 1949: _M_conv_get() 234s 1949: { 234s 1949: const streamsize __pb1 = this->gptr() - this->eback(); 234s 1949: const streamsize __pb2 = _S_putback_length; 234s 1949: const streamsize __npb = std::min(__pb1, __pb2); 234s 1949: 234s 1949: _Tr::move(_M_get_area + _S_putback_length - __npb, 234s 1949: this->gptr() - __npb, __npb); 234s 1949: 234s 1949: streamsize __nbytes = sizeof(_M_get_buf) - _M_unconv; 234s 1949: __nbytes = std::min(__nbytes, _M_buf->in_avail()); 234s 1949: if (__nbytes < 1) 234s 1949: __nbytes = 1; 234s 1949: __nbytes = _M_buf->sgetn(_M_get_buf + _M_unconv, __nbytes); 234s 1949: if (__nbytes < 1) 234s 1949: return false; 234s 1949: __nbytes += _M_unconv; 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Elem* __outbuf = _M_get_area + _S_putback_length; 234s 1949: _Elem* __outnext = __outbuf; 234s 1949: const char* __bnext = _M_get_buf; 234s 1949: 234s 1949: codecvt_base::result __result; 234s 1949: if (_M_always_noconv) 234s 1949: __result = codecvt_base::noconv; 234s 1949: else 234s 1949: { 234s 1949: _Elem* __outend = _M_get_area + _S_buffer_length; 234s 1949: 234s 1949: __result = _M_cvt->in(_M_state, 234s 1949: __bnext, __bnext + __nbytes, __bnext, 234s 1949: __outbuf, __outend, __outnext); 234s 1949: } 234s 1949: 234s 1949: if (__result == codecvt_base::noconv) 234s 1949: { 234s 1949: 234s 1949: auto __get_buf = reinterpret_cast(_M_get_buf); 234s 1949: _Tr::copy(__outbuf, __get_buf, __nbytes); 234s 1949: _M_unconv = 0; 234s 1949: return true; 234s 1949: } 234s 1949: 234s 1949: if ((_M_unconv = _M_get_buf + __nbytes - __bnext)) 234s 1949: char_traits::move(_M_get_buf, __bnext, _M_unconv); 234s 1949: 234s 1949: this->setg(__outbuf, __outbuf, __outnext); 234s 1949: 234s 1949: return __result != codecvt_base::error; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: _M_put(...) 234s 1949: { return false; } 234s 1949: 234s 1949: bool 234s 1949: _M_put(const char* __p, streamsize __n) 234s 1949: { 234s 1949: if (_M_buf->sputn(__p, __n) < __n) 234s 1949: return false; 234s 1949: return true; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: _M_conv_put() 234s 1949: { 234s 1949: _Elem* const __first = this->pbase(); 234s 1949: const _Elem* const __last = this->pptr(); 234s 1949: const streamsize __pending = __last - __first; 234s 1949: 234s 1949: if (_M_always_noconv) 234s 1949: return _M_put(__first, __pending); 234s 1949: 234s 1949: char __outbuf[2 * _S_buffer_length]; 234s 1949: 234s 1949: const _Elem* __next = __first; 234s 1949: const _Elem* __start; 234s 1949: do 234s 1949: { 234s 1949: __start = __next; 234s 1949: char* __outnext = __outbuf; 234s 1949: char* const __outlast = __outbuf + sizeof(__outbuf); 234s 1949: auto __result = _M_cvt->out(_M_state, __next, __last, __next, 234s 1949: __outnext, __outlast, __outnext); 234s 1949: if (__result == codecvt_base::error) 234s 1949: return false; 234s 1949: else if (__result == codecvt_base::noconv) 234s 1949: return _M_put(__next, __pending); 234s 1949: 234s 1949: if (!_M_put(__outbuf, __outnext - __outbuf)) 234s 1949: return false; 234s 1949: } 234s 1949: while (__next != __last && __next != __start); 234s 1949: 234s 1949: if (__next != __last) 234s 1949: _Tr::move(__first, __next, __last - __next); 234s 1949: 234s 1949: this->pbump(__first - __next); 234s 1949: return __next != __first; 234s 1949: } 234s 1949: 234s 1949: streambuf* _M_buf; 234s 1949: __detail::_Scoped_ptr<_Codecvt> _M_cvt; 234s 1949: state_type _M_state; 234s 1949: 234s 1949: static const streamsize _S_buffer_length = 32; 234s 1949: static const streamsize _S_putback_length = 3; 234s 1949: _Elem _M_put_area[_S_buffer_length]; 234s 1949: _Elem _M_get_area[_S_buffer_length]; 234s 1949: streamsize _M_unconv = 0; 234s 1949: char _M_get_buf[_S_buffer_length-_S_putback_length]; 234s 1949: bool _M_always_noconv; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 48 "/usr/include/c++/15/locale" 2 3 4 234s 1949: # 54 "/usr/include/c++/15/iomanip" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/quoted_string.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/quoted_string.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: namespace __detail { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Quoted_string 234s 1949: { 234s 1949: static_assert(is_reference<_String>::value 234s 1949: || is_pointer<_String>::value, 234s 1949: "String type must be pointer or reference"); 234s 1949: 234s 1949: _Quoted_string(_String __str, _CharT __del, _CharT __esc) 234s 1949: : _M_string(__str), _M_delim{__del}, _M_escape{__esc} 234s 1949: { } 234s 1949: 234s 1949: _Quoted_string& 234s 1949: operator=(_Quoted_string&) = delete; 234s 1949: 234s 1949: _String _M_string; 234s 1949: _CharT _M_delim; 234s 1949: _CharT _M_escape; 234s 1949: }; 234s 1949: # 92 "/usr/include/c++/15/bits/quoted_string.h" 3 4 234s 1949: template 234s 1949: std::basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 234s 1949: const _Quoted_string& __str) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: std::basic_ostringstream<_CharT, _Traits> __ostr; 234s 1949: __ostr << __str._M_delim; 234s 1949: for (const _CharT* __c = __str._M_string; *__c; ++__c) 234s 1949: { 234s 1949: if (*__c == __str._M_delim || *__c == __str._M_escape) 234s 1949: __ostr << __str._M_escape; 234s 1949: __ostr << *__c; 234s 1949: } 234s 1949: __ostr << __str._M_delim; 234s 1949: 234s 1949: return __os << __ostr.str(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: std::basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 234s 1949: const _Quoted_string<_String, _CharT>& __str) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: std::basic_ostringstream<_CharT, _Traits> __ostr; 234s 1949: __ostr << __str._M_delim; 234s 1949: for (auto __c : __str._M_string) 234s 1949: { 234s 1949: if (__c == __str._M_delim || __c == __str._M_escape) 234s 1949: __ostr << __str._M_escape; 234s 1949: __ostr << __c; 234s 1949: } 234s 1949: __ostr << __str._M_delim; 234s 1949: 234s 1949: return __os << __ostr.str(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: std::basic_istream<_CharT, _Traits>& 234s 1949: operator>>(std::basic_istream<_CharT, _Traits>& __is, 234s 1949: const _Quoted_string&, 234s 1949: _CharT>& __str) 234s 1949: { 234s 1949: _CharT __c; 234s 1949: __is >> __c; 234s 1949: if (!__is.good()) 234s 1949: return __is; 234s 1949: if (__c != __str._M_delim) 234s 1949: { 234s 1949: __is.unget(); 234s 1949: __is >> __str._M_string; 234s 1949: return __is; 234s 1949: } 234s 1949: __str._M_string.clear(); 234s 1949: std::ios_base::fmtflags __flags 234s 1949: = __is.flags(__is.flags() & ~std::ios_base::skipws); 234s 1949: do 234s 1949: { 234s 1949: __is >> __c; 234s 1949: if (!__is.good()) 234s 1949: break; 234s 1949: if (__c == __str._M_escape) 234s 1949: { 234s 1949: __is >> __c; 234s 1949: if (!__is.good()) 234s 1949: break; 234s 1949: } 234s 1949: else if (__c == __str._M_delim) 234s 1949: break; 234s 1949: __str._M_string += __c; 234s 1949: } 234s 1949: while (true); 234s 1949: __is.setf(__flags); 234s 1949: 234s 1949: return __is; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 56 "/usr/include/c++/15/iomanip" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct _Resetiosflags { ios_base::fmtflags _M_mask; }; 234s 1949: # 75 "/usr/include/c++/15/iomanip" 3 4 234s 1949: inline _Resetiosflags 234s 1949: resetiosflags(ios_base::fmtflags __mask) 234s 1949: { return { __mask }; } 234s 1949: 234s 1949: template 234s 1949: inline basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __is, _Resetiosflags __f) 234s 1949: { 234s 1949: __is.setf(ios_base::fmtflags(0), __f._M_mask); 234s 1949: return __is; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __os, _Resetiosflags __f) 234s 1949: { 234s 1949: __os.setf(ios_base::fmtflags(0), __f._M_mask); 234s 1949: return __os; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: struct _Setiosflags { ios_base::fmtflags _M_mask; }; 234s 1949: # 105 "/usr/include/c++/15/iomanip" 3 4 234s 1949: inline _Setiosflags 234s 1949: setiosflags(ios_base::fmtflags __mask) 234s 1949: { return { __mask }; } 234s 1949: 234s 1949: template 234s 1949: inline basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __is, _Setiosflags __f) 234s 1949: { 234s 1949: __is.setf(__f._M_mask); 234s 1949: return __is; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setiosflags __f) 234s 1949: { 234s 1949: __os.setf(__f._M_mask); 234s 1949: return __os; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: struct _Setbase { int _M_base; }; 234s 1949: # 136 "/usr/include/c++/15/iomanip" 3 4 234s 1949: inline _Setbase 234s 1949: setbase(int __base) 234s 1949: { return { __base }; } 234s 1949: 234s 1949: template 234s 1949: inline basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __is, _Setbase __f) 234s 1949: { 234s 1949: __is.setf(__f._M_base == 8 ? ios_base::oct : 234s 1949: __f._M_base == 10 ? ios_base::dec : 234s 1949: __f._M_base == 16 ? ios_base::hex : 234s 1949: ios_base::fmtflags(0), ios_base::basefield); 234s 1949: return __is; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setbase __f) 234s 1949: { 234s 1949: __os.setf(__f._M_base == 8 ? ios_base::oct : 234s 1949: __f._M_base == 10 ? ios_base::dec : 234s 1949: __f._M_base == 16 ? ios_base::hex : 234s 1949: ios_base::fmtflags(0), ios_base::basefield); 234s 1949: return __os; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Setfill { _CharT _M_c; }; 234s 1949: # 173 "/usr/include/c++/15/iomanip" 3 4 234s 1949: template 234s 1949: inline _Setfill<_CharT> 234s 1949: setfill(_CharT __c) 234s 1949: { return { __c }; } 234s 1949: 234s 1949: template 234s 1949: __attribute__((__deprecated__("'std::setfill' should only be used with " 234s 1949: "output streams"))) 234s 1949: inline basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __is, _Setfill<_CharT> __f) 234s 1949: { 234s 1949: __is.fill(__f._M_c); 234s 1949: return __is; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setfill<_CharT> __f) 234s 1949: { 234s 1949: __os.fill(__f._M_c); 234s 1949: return __os; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: struct _Setprecision { int _M_n; }; 234s 1949: # 206 "/usr/include/c++/15/iomanip" 3 4 234s 1949: inline _Setprecision 234s 1949: setprecision(int __n) 234s 1949: { return { __n }; } 234s 1949: 234s 1949: template 234s 1949: inline basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __is, _Setprecision __f) 234s 1949: { 234s 1949: __is.precision(__f._M_n); 234s 1949: return __is; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setprecision __f) 234s 1949: { 234s 1949: __os.precision(__f._M_n); 234s 1949: return __os; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: struct _Setw { int _M_n; }; 234s 1949: # 236 "/usr/include/c++/15/iomanip" 3 4 234s 1949: inline _Setw 234s 1949: setw(int __n) 234s 1949: { return { __n }; } 234s 1949: 234s 1949: template 234s 1949: inline basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __is, _Setw __f) 234s 1949: { 234s 1949: __is.width(__f._M_n); 234s 1949: return __is; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setw __f) 234s 1949: { 234s 1949: __os.width(__f._M_n); 234s 1949: return __os; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Get_money { _MoneyT& _M_mon; bool _M_intl; }; 234s 1949: # 269 "/usr/include/c++/15/iomanip" 3 4 234s 1949: template 234s 1949: inline _Get_money<_MoneyT> 234s 1949: get_money(_MoneyT& __mon, bool __intl = false) 234s 1949: { return { __mon, __intl }; } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __is, _Get_money<_MoneyT> __f) 234s 1949: { 234s 1949: typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: typedef istreambuf_iterator<_CharT, _Traits> _Iter; 234s 1949: typedef money_get<_CharT, _Iter> _MoneyGet; 234s 1949: 234s 1949: const _MoneyGet& __mg = use_facet<_MoneyGet>(__is.getloc()); 234s 1949: __mg.get(_Iter(__is.rdbuf()), _Iter(), __f._M_intl, 234s 1949: __is, __err, __f._M_mon); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __is._M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { __is._M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: __is.setstate(__err); 234s 1949: } 234s 1949: return __is; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Put_money { const _MoneyT& _M_mon; bool _M_intl; }; 234s 1949: # 316 "/usr/include/c++/15/iomanip" 3 4 234s 1949: template 234s 1949: inline _Put_money<_MoneyT> 234s 1949: put_money(const _MoneyT& __mon, bool __intl = false) 234s 1949: { return { __mon, __intl }; } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_money<_MoneyT> __f) 234s 1949: { 234s 1949: typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: typedef ostreambuf_iterator<_CharT, _Traits> _Iter; 234s 1949: typedef money_put<_CharT, _Iter> _MoneyPut; 234s 1949: 234s 1949: const _MoneyPut& __mp = use_facet<_MoneyPut>(__os.getloc()); 234s 1949: if (__mp.put(_Iter(__os.rdbuf()), __f._M_intl, __os, 234s 1949: __os.fill(), __f._M_mon).failed()) 234s 1949: __err |= ios_base::badbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __os._M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { __os._M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: __os.setstate(__err); 234s 1949: } 234s 1949: return __os; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: struct _Put_time 234s 1949: { 234s 1949: const std::tm* _M_tmb; 234s 1949: const _CharT* _M_fmt; 234s 1949: }; 234s 1949: # 368 "/usr/include/c++/15/iomanip" 3 4 234s 1949: template 234s 1949: inline _Put_time<_CharT> 234s 1949: put_time(const std::tm* __tmb, const _CharT* __fmt) 234s 1949: { return { __tmb, __fmt }; } 234s 1949: 234s 1949: template 234s 1949: basic_ostream<_CharT, _Traits>& 234s 1949: operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_time<_CharT> __f) 234s 1949: { 234s 1949: typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: typedef ostreambuf_iterator<_CharT, _Traits> _Iter; 234s 1949: typedef time_put<_CharT, _Iter> _TimePut; 234s 1949: 234s 1949: const _CharT* const __fmt_end = __f._M_fmt + 234s 1949: _Traits::length(__f._M_fmt); 234s 1949: 234s 1949: const _TimePut& __mp = use_facet<_TimePut>(__os.getloc()); 234s 1949: if (__mp.put(_Iter(__os.rdbuf()), __os, __os.fill(), 234s 1949: __f._M_tmb, __f._M_fmt, __fmt_end).failed()) 234s 1949: __err |= ios_base::badbit; 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __os._M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { __os._M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: __os.setstate(__err); 234s 1949: } 234s 1949: return __os; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: struct _Get_time 234s 1949: { 234s 1949: std::tm* _M_tmb; 234s 1949: const _CharT* _M_fmt; 234s 1949: }; 234s 1949: # 423 "/usr/include/c++/15/iomanip" 3 4 234s 1949: template 234s 1949: inline _Get_time<_CharT> 234s 1949: get_time(std::tm* __tmb, const _CharT* __fmt) 234s 1949: { return { __tmb, __fmt }; } 234s 1949: 234s 1949: template 234s 1949: basic_istream<_CharT, _Traits>& 234s 1949: operator>>(basic_istream<_CharT, _Traits>& __is, _Get_time<_CharT> __f) 234s 1949: { 234s 1949: typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false); 234s 1949: if (__cerb) 234s 1949: { 234s 1949: ios_base::iostate __err = ios_base::goodbit; 234s 1949: try 234s 1949: { 234s 1949: typedef istreambuf_iterator<_CharT, _Traits> _Iter; 234s 1949: typedef time_get<_CharT, _Iter> _TimeGet; 234s 1949: 234s 1949: const _CharT* const __fmt_end = __f._M_fmt + 234s 1949: _Traits::length(__f._M_fmt); 234s 1949: 234s 1949: const _TimeGet& __mg = use_facet<_TimeGet>(__is.getloc()); 234s 1949: __mg.get(_Iter(__is.rdbuf()), _Iter(), __is, 234s 1949: __err, __f._M_tmb, __f._M_fmt, __fmt_end); 234s 1949: } 234s 1949: catch(__cxxabiv1::__forced_unwind&) 234s 1949: { 234s 1949: __is._M_setstate(ios_base::badbit); 234s 1949: throw; 234s 1949: } 234s 1949: catch(...) 234s 1949: { __is._M_setstate(ios_base::badbit); } 234s 1949: if (__err) 234s 1949: __is.setstate(__err); 234s 1949: } 234s 1949: return __is; 234s 1949: } 234s 1949: # 470 "/usr/include/c++/15/iomanip" 3 4 234s 1949: template 234s 1949: inline auto 234s 1949: quoted(const _CharT* __string, 234s 1949: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) 234s 1949: { 234s 1949: return __detail::_Quoted_string(__string, __delim, 234s 1949: __escape); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline auto 234s 1949: quoted(const basic_string<_CharT, _Traits, _Alloc>& __string, 234s 1949: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) 234s 1949: { 234s 1949: return __detail::_Quoted_string< 234s 1949: const basic_string<_CharT, _Traits, _Alloc>&, _CharT>( 234s 1949: __string, __delim, __escape); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline auto 234s 1949: quoted(basic_string<_CharT, _Traits, _Alloc>& __string, 234s 1949: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) 234s 1949: { 234s 1949: return __detail::_Quoted_string< 234s 1949: basic_string<_CharT, _Traits, _Alloc>&, _CharT>( 234s 1949: __string, __delim, __escape); 234s 1949: } 234s 1949: # 519 "/usr/include/c++/15/iomanip" 3 4 234s 1949: extern template ostream& operator<<(ostream&, _Setfill); 234s 1949: extern template ostream& operator<<(ostream&, _Setiosflags); 234s 1949: extern template ostream& operator<<(ostream&, _Resetiosflags); 234s 1949: extern template ostream& operator<<(ostream&, _Setbase); 234s 1949: extern template ostream& operator<<(ostream&, _Setprecision); 234s 1949: extern template ostream& operator<<(ostream&, _Setw); 234s 1949: extern template istream& operator>>(istream&, _Setfill); 234s 1949: extern template istream& operator>>(istream&, _Setiosflags); 234s 1949: extern template istream& operator>>(istream&, _Resetiosflags); 234s 1949: extern template istream& operator>>(istream&, _Setbase); 234s 1949: extern template istream& operator>>(istream&, _Setprecision); 234s 1949: extern template istream& operator>>(istream&, _Setw); 234s 1949: 234s 1949: 234s 1949: extern template wostream& operator<<(wostream&, _Setfill); 234s 1949: extern template wostream& operator<<(wostream&, _Setiosflags); 234s 1949: extern template wostream& operator<<(wostream&, _Resetiosflags); 234s 1949: extern template wostream& operator<<(wostream&, _Setbase); 234s 1949: extern template wostream& operator<<(wostream&, _Setprecision); 234s 1949: extern template wostream& operator<<(wostream&, _Setw); 234s 1949: extern template wistream& operator>>(wistream&, _Setfill); 234s 1949: extern template wistream& operator>>(wistream&, _Setiosflags); 234s 1949: extern template wistream& operator>>(wistream&, _Resetiosflags); 234s 1949: extern template wistream& operator>>(wistream&, _Setbase); 234s 1949: extern template wistream& operator>>(wistream&, _Setprecision); 234s 1949: extern template wistream& operator>>(wistream&, _Setw); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 3170 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/vector" 1 3 4 234s 1949: # 67 "/usr/include/c++/15/vector" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_uninitialized.h" 1 3 4 234s 1949: # 71 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _UninitDestroyGuard 234s 1949: { 234s 1949: 234s 1949: explicit 234s 1949: _UninitDestroyGuard(_ForwardIterator& __first, _Alloc& __a) 234s 1949: : _M_first(__first), _M_cur(__builtin_addressof(__first)), _M_alloc(__a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: ~_UninitDestroyGuard() 234s 1949: { 234s 1949: if (__builtin_expect(_M_cur != 0, 0)) 234s 1949: std::_Destroy(_M_first, *_M_cur, _M_alloc); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void release() { _M_cur = 0; } 234s 1949: 234s 1949: private: 234s 1949: _ForwardIterator const _M_first; 234s 1949: _ForwardIterator* _M_cur; 234s 1949: _Alloc& _M_alloc; 234s 1949: 234s 1949: _UninitDestroyGuard(const _UninitDestroyGuard&); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _UninitDestroyGuard<_ForwardIterator, void> 234s 1949: { 234s 1949: 234s 1949: explicit 234s 1949: _UninitDestroyGuard(_ForwardIterator& __first) 234s 1949: : _M_first(__first), _M_cur(__builtin_addressof(__first)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: ~_UninitDestroyGuard() 234s 1949: { 234s 1949: if (__builtin_expect(_M_cur != 0, 0)) 234s 1949: std::_Destroy(_M_first, *_M_cur); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void release() { _M_cur = 0; } 234s 1949: 234s 1949: _ForwardIterator const _M_first; 234s 1949: _ForwardIterator* _M_cur; 234s 1949: 234s 1949: private: 234s 1949: _UninitDestroyGuard(const _UninitDestroyGuard&); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __do_uninit_copy(_InputIterator __first, _Sentinel __last, 234s 1949: _ForwardIterator __result) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator> __guard(__result); 234s 1949: for (; __first != __last; ++__first, (void)++__result) 234s 1949: std::_Construct(std::__addressof(*__result), *__first); 234s 1949: __guard.release(); 234s 1949: return __result; 234s 1949: } 234s 1949: # 217 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: # 228 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: uninitialized_copy(_InputIterator __first, _InputIterator __last, 234s 1949: _ForwardIterator __result) 234s 1949: { 234s 1949: # 256 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: using _Dest = decltype(std::__niter_base(__result)); 234s 1949: using _Src = decltype(std::__niter_base(__first)); 234s 1949: using _ValT = typename iterator_traits<_ForwardIterator>::value_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if constexpr (!__is_trivially_constructible(_ValT, decltype(*__first))) 234s 1949: return std::__do_uninit_copy(__first, __last, __result); 234s 1949: else if constexpr (__memcpyable<_Dest, _Src>::__value) 234s 1949: { 234s 1949: ptrdiff_t __n = __last - __first; 234s 1949: if (__n > 0) [[__likely__]] 234s 1949: { 234s 1949: using _ValT = typename remove_pointer<_Src>::type; 234s 1949: __builtin_memcpy(std::__niter_base(__result), 234s 1949: std::__niter_base(__first), 234s 1949: __n * sizeof(_ValT)); 234s 1949: __result += __n; 234s 1949: } 234s 1949: return __result; 234s 1949: } 234s 1949: # 302 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: else 234s 1949: return std::__do_uninit_copy(__first, __last, __result); 234s 1949: # 317 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __do_uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __x) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 234s 1949: for (; __first != __last; ++__first) 234s 1949: std::_Construct(std::__addressof(*__first), __x); 234s 1949: __guard.release(); 234s 1949: } 234s 1949: # 389 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __x) 234s 1949: { 234s 1949: # 404 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: typedef typename iterator_traits<_ForwardIterator>::value_type 234s 1949: _ValueType; 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if constexpr (__is_byte<_ValueType>::__value) 234s 1949: if constexpr (is_same<_ValueType, _Tp>::value 234s 1949: || is_integral<_Tp>::value) 234s 1949: { 234s 1949: using _BasePtr = decltype(std::__niter_base(__first)); 234s 1949: if constexpr (is_pointer<_BasePtr>::value) 234s 1949: { 234s 1949: void* __dest = std::__niter_base(__first); 234s 1949: ptrdiff_t __n = __last - __first; 234s 1949: if (__n > 0) [[__likely__]] 234s 1949: __builtin_memset(__dest, (unsigned char)__x, __n); 234s 1949: return; 234s 1949: } 234s 1949: # 438 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: } 234s 1949: std::__do_uninit_fill(__first, __last, __x); 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __do_uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: if constexpr (is_integral<_Size>::value) 234s 1949: 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__n >= 0)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: else if constexpr (is_floating_point<_Size>::value) 234s 1949: 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__n >= 0 && static_cast(__n) == __n)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: for (; __n--; ++__first) 234s 1949: std::_Construct(std::__addressof(*__first), __x); 234s 1949: __guard.release(); 234s 1949: return __first; 234s 1949: } 234s 1949: # 510 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: # 523 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename iterator_traits<_ForwardIterator>::value_type 234s 1949: _ValueType; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if constexpr (__is_byte<_ValueType>::__value) 234s 1949: if constexpr (is_integral<_Tp>::value) 234s 1949: if constexpr (is_integral<_Size>::value) 234s 1949: { 234s 1949: using _BasePtr = decltype(std::__niter_base(__first)); 234s 1949: if constexpr (is_pointer<_BasePtr>::value) 234s 1949: { 234s 1949: void* __dest = std::__niter_base(__first); 234s 1949: if (__n > 0) [[__likely__]] 234s 1949: { 234s 1949: __builtin_memset(__dest, (unsigned char)__x, __n); 234s 1949: __first += __n; 234s 1949: } 234s 1949: return __first; 234s 1949: } 234s 1949: # 570 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: } 234s 1949: return std::__do_uninit_fill_n(__first, __n, __x); 234s 1949: # 580 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 591 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __uninitialized_copy_a(_InputIterator __first, _Sentinel __last, 234s 1949: _ForwardIterator __result, _Allocator& __alloc) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator, _Allocator> 234s 1949: __guard(__result, __alloc); 234s 1949: 234s 1949: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 234s 1949: for (; __first != __last; ++__first, (void)++__result) 234s 1949: __traits::construct(__alloc, std::__addressof(*__result), *__first); 234s 1949: __guard.release(); 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_copy_a(_InputIterator __first, _Sentinel __last, 234s 1949: _ForwardIterator __result, allocator<_Tp>&) 234s 1949: { 234s 1949: # 637 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: return std::uninitialized_copy(__first, __last, __result); 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, 234s 1949: _ForwardIterator __result, _Allocator& __alloc) 234s 1949: { 234s 1949: return std::__uninitialized_copy_a(std::make_move_iterator(__first), 234s 1949: std::make_move_iterator(__last), 234s 1949: __result, __alloc); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_move_if_noexcept_a(_InputIterator __first, 234s 1949: _InputIterator __last, 234s 1949: _ForwardIterator __result, 234s 1949: _Allocator& __alloc) 234s 1949: { 234s 1949: return std::__uninitialized_copy_a 234s 1949: (std::__make_move_if_noexcept_iterator(__first), 234s 1949: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __x, _Allocator& __alloc) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator, _Allocator> 234s 1949: __guard(__first, __alloc); 234s 1949: 234s 1949: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 234s 1949: for (; __first != __last; ++__first) 234s 1949: __traits::construct(__alloc, std::__addressof(*__first), __x); 234s 1949: 234s 1949: __guard.release(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: const _Tp& __x, allocator<_Tp2>&) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: std::uninitialized_fill(__first, __last, __x); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 234s 1949: const _Tp& __x, _Allocator& __alloc) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator, _Allocator> 234s 1949: __guard(__first, __alloc); 234s 1949: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 234s 1949: for (; __n > 0; --__n, (void) ++__first) 234s 1949: __traits::construct(__alloc, std::__addressof(*__first), __x); 234s 1949: __guard.release(); 234s 1949: return __first; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 234s 1949: const _Tp& __x, allocator<_Tp2>&) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return std::uninitialized_fill_n(__first, __n, __x); 234s 1949: } 234s 1949: # 740 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: template 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_copy_move(_InputIterator1 __first1, 234s 1949: _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, 234s 1949: _InputIterator2 __last2, 234s 1949: _ForwardIterator __result, 234s 1949: _Allocator& __alloc) 234s 1949: { 234s 1949: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, 234s 1949: __result, __alloc); 234s 1949: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__result, 234s 1949: __alloc); 234s 1949: __result = __mid; 234s 1949: __result = std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); 234s 1949: __guard.release(); 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_move_copy(_InputIterator1 __first1, 234s 1949: _InputIterator1 __last1, 234s 1949: _InputIterator2 __first2, 234s 1949: _InputIterator2 __last2, 234s 1949: _ForwardIterator __result, 234s 1949: _Allocator& __alloc) 234s 1949: { 234s 1949: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, 234s 1949: __result, __alloc); 234s 1949: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__result, 234s 1949: __alloc); 234s 1949: __result = __mid; 234s 1949: __result = std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); 234s 1949: __guard.release(); 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, 234s 1949: const _Tp& __x, _InputIterator __first, 234s 1949: _InputIterator __last, _Allocator& __alloc) 234s 1949: { 234s 1949: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); 234s 1949: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__result, 234s 1949: __alloc); 234s 1949: __result = __mid; 234s 1949: __result = std::__uninitialized_move_a(__first, __last, __mid, __alloc); 234s 1949: __guard.release(); 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, 234s 1949: _ForwardIterator __first2, 234s 1949: _ForwardIterator __last2, const _Tp& __x, 234s 1949: _Allocator& __alloc) 234s 1949: { 234s 1949: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, 234s 1949: __first2, 234s 1949: __alloc); 234s 1949: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__first2, 234s 1949: __alloc); 234s 1949: __first2 = __mid2; 234s 1949: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); 234s 1949: __guard.release(); 234s 1949: } 234s 1949: # 832 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: template 234s 1949: struct __uninitialized_default_1 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static void 234s 1949: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 234s 1949: for (; __first != __last; ++__first) 234s 1949: std::_Construct(std::__addressof(*__first)); 234s 1949: __guard.release(); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __uninitialized_default_1 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static void 234s 1949: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 234s 1949: { 234s 1949: if (__first == __last) 234s 1949: return; 234s 1949: 234s 1949: typename iterator_traits<_ForwardIterator>::value_type* __val 234s 1949: = std::__addressof(*__first); 234s 1949: std::_Construct(__val); 234s 1949: if (++__first != __last) 234s 1949: std::fill(__first, __last, *__val); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __uninitialized_default_n_1 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static _ForwardIterator 234s 1949: __uninit_default_n(_ForwardIterator __first, _Size __n) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 234s 1949: for (; __n > 0; --__n, (void) ++__first) 234s 1949: std::_Construct(std::__addressof(*__first)); 234s 1949: __guard.release(); 234s 1949: return __first; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __uninitialized_default_n_1 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static _ForwardIterator 234s 1949: __uninit_default_n(_ForwardIterator __first, _Size __n) 234s 1949: { 234s 1949: if (__n > 0) 234s 1949: { 234s 1949: typename iterator_traits<_ForwardIterator>::value_type* __val 234s 1949: = std::__addressof(*__first); 234s 1949: std::_Construct(__val); 234s 1949: ++__first; 234s 1949: __first = std::fill_n(__first, __n - 1, *__val); 234s 1949: } 234s 1949: return __first; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __uninitialized_default(_ForwardIterator __first, 234s 1949: _ForwardIterator __last) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename iterator_traits<_ForwardIterator>::value_type 234s 1949: _ValueType; 234s 1949: 234s 1949: const bool __assignable = is_copy_assignable<_ValueType>::value; 234s 1949: 234s 1949: std::__uninitialized_default_1<__is_trivial(_ValueType) 234s 1949: && __assignable>:: 234s 1949: __uninit_default(__first, __last); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_default_n(_ForwardIterator __first, _Size __n) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename iterator_traits<_ForwardIterator>::value_type 234s 1949: _ValueType; 234s 1949: 234s 1949: constexpr bool __can_fill 234s 1949: = __and_, is_copy_assignable<_ValueType>>::value; 234s 1949: 234s 1949: return __uninitialized_default_n_1<__is_trivial(_ValueType) 234s 1949: && __can_fill>:: 234s 1949: __uninit_default_n(__first, __n); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __uninitialized_default_a(_ForwardIterator __first, 234s 1949: _ForwardIterator __last, 234s 1949: _Allocator& __alloc) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__first, 234s 1949: __alloc); 234s 1949: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 234s 1949: for (; __first != __last; ++__first) 234s 1949: __traits::construct(__alloc, std::__addressof(*__first)); 234s 1949: __guard.release(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: __uninitialized_default_a(_ForwardIterator __first, 234s 1949: _ForwardIterator __last, 234s 1949: allocator<_Tp>&) 234s 1949: { std::__uninitialized_default(__first, __last); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _ForwardIterator 234s 1949: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 234s 1949: _Allocator& __alloc) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__first, 234s 1949: __alloc); 234s 1949: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 234s 1949: for (; __n > 0; --__n, (void) ++__first) 234s 1949: __traits::construct(__alloc, std::__addressof(*__first)); 234s 1949: __guard.release(); 234s 1949: return __first; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 234s 1949: allocator<_Tp>&) 234s 1949: { return std::__uninitialized_default_n(__first, __n); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __uninitialized_default_novalue_1 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static void 234s 1949: __uninit_default_novalue(_ForwardIterator __first, 234s 1949: _ForwardIterator __last) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 234s 1949: for (; __first != __last; ++__first) 234s 1949: std::_Construct_novalue(std::__addressof(*__first)); 234s 1949: __guard.release(); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __uninitialized_default_novalue_1 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static void 234s 1949: __uninit_default_novalue(_ForwardIterator, _ForwardIterator) 234s 1949: { 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __uninitialized_default_novalue_n_1 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static _ForwardIterator 234s 1949: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 234s 1949: for (; __n > 0; --__n, (void) ++__first) 234s 1949: std::_Construct_novalue(std::__addressof(*__first)); 234s 1949: __guard.release(); 234s 1949: return __first; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct __uninitialized_default_novalue_n_1 234s 1949: { 234s 1949: template 234s 1949: 234s 1949: static _ForwardIterator 234s 1949: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 234s 1949: { return std::next(__first, __n); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __uninitialized_default_novalue(_ForwardIterator __first, 234s 1949: _ForwardIterator __last) 234s 1949: { 234s 1949: typedef typename iterator_traits<_ForwardIterator>::value_type 234s 1949: _ValueType; 234s 1949: 234s 1949: std::__uninitialized_default_novalue_1< 234s 1949: is_trivially_default_constructible<_ValueType>::value>:: 234s 1949: __uninit_default_novalue(__first, __last); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) 234s 1949: { 234s 1949: typedef typename iterator_traits<_ForwardIterator>::value_type 234s 1949: _ValueType; 234s 1949: 234s 1949: return __uninitialized_default_novalue_n_1< 234s 1949: is_trivially_default_constructible<_ValueType>::value>:: 234s 1949: __uninit_default_novalue_n(__first, __n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _ForwardIterator 234s 1949: __uninitialized_copy_n(_InputIterator __first, _Size __n, 234s 1949: _ForwardIterator __result, input_iterator_tag) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator> __guard(__result); 234s 1949: for (; __n > 0; --__n, (void) ++__first, ++__result) 234s 1949: std::_Construct(std::__addressof(*__result), *__first); 234s 1949: __guard.release(); 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, 234s 1949: _ForwardIterator __result, 234s 1949: random_access_iterator_tag) 234s 1949: { return std::uninitialized_copy(__first, __first + __n, __result); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pair<_InputIterator, _ForwardIterator> 234s 1949: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 234s 1949: _ForwardIterator __result, input_iterator_tag) 234s 1949: { 234s 1949: _UninitDestroyGuard<_ForwardIterator> __guard(__result); 234s 1949: for (; __n > 0; --__n, (void) ++__first, ++__result) 234s 1949: std::_Construct(std::__addressof(*__result), *__first); 234s 1949: __guard.release(); 234s 1949: return {__first, __result}; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline pair<_RandomAccessIterator, _ForwardIterator> 234s 1949: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, 234s 1949: _ForwardIterator __result, 234s 1949: random_access_iterator_tag) 234s 1949: { 234s 1949: auto __second_res = uninitialized_copy(__first, __first + __n, __result); 234s 1949: auto __first_res = std::next(__first, __n); 234s 1949: return {__first_res, __second_res}; 234s 1949: } 234s 1949: # 1151 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: uninitialized_copy_n(_InputIterator __first, _Size __n, 234s 1949: _ForwardIterator __result) 234s 1949: { return std::__uninitialized_copy_n(__first, __n, __result, 234s 1949: std::__iterator_category(__first)); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline pair<_InputIterator, _ForwardIterator> 234s 1949: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 234s 1949: _ForwardIterator __result) 234s 1949: { 234s 1949: return 234s 1949: std::__uninitialized_copy_n_pair(__first, __n, __result, 234s 1949: std::__iterator_category(__first)); 234s 1949: } 234s 1949: # 1277 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: __relocate_object_a(_Tp* __restrict __dest, _Up* __restrict __orig, 234s 1949: _Allocator& __alloc) 234s 1949: noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc, 234s 1949: __dest, std::move(*__orig))) 234s 1949: && noexcept(std::allocator_traits<_Allocator>::destroy( 234s 1949: __alloc, std::__addressof(*__orig)))) 234s 1949: { 234s 1949: typedef std::allocator_traits<_Allocator> __traits; 234s 1949: __traits::construct(__alloc, __dest, std::move(*__orig)); 234s 1949: __traits::destroy(__alloc, std::__addressof(*__orig)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_bitwise_relocatable 234s 1949: : __bool_constant<__is_trivial(_Tp)> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: __relocate_a_1(_InputIterator __first, _InputIterator __last, 234s 1949: _ForwardIterator __result, _Allocator& __alloc) 234s 1949: noexcept(noexcept(std::__relocate_object_a(std::addressof(*__result), 234s 1949: std::addressof(*__first), 234s 1949: __alloc))) 234s 1949: { 234s 1949: typedef typename iterator_traits<_InputIterator>::value_type 234s 1949: _ValueType; 234s 1949: typedef typename iterator_traits<_ForwardIterator>::value_type 234s 1949: _ValueType2; 234s 1949: static_assert(std::is_same<_ValueType, _ValueType2>::value, 234s 1949: "relocation is only possible for values of the same type"); 234s 1949: _ForwardIterator __cur = __result; 234s 1949: for (; __first != __last; ++__first, (void)++__cur) 234s 1949: std::__relocate_object_a(std::__addressof(*__cur), 234s 1949: std::__addressof(*__first), __alloc); 234s 1949: return __cur; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline __enable_if_t::value, _Tp*> 234s 1949: __relocate_a_1(_Tp* __first, _Tp* __last, 234s 1949: _Tp* __result, 234s 1949: [[__maybe_unused__]] allocator<_Up>& __alloc) noexcept 234s 1949: { 234s 1949: ptrdiff_t __count = __last - __first; 234s 1949: if (__count > 0) 234s 1949: { 234s 1949: # 1343 "/usr/include/c++/15/bits/stl_uninitialized.h" 3 4 234s 1949: __builtin_memcpy(__result, __first, __count * sizeof(_Tp)); 234s 1949: } 234s 1949: return __result + __count; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline _ForwardIterator 234s 1949: __relocate_a(_InputIterator __first, _InputIterator __last, 234s 1949: _ForwardIterator __result, _Allocator& __alloc) 234s 1949: noexcept(noexcept(__relocate_a_1(std::__niter_base(__first), 234s 1949: std::__niter_base(__last), 234s 1949: std::__niter_base(__result), __alloc))) 234s 1949: { 234s 1949: return std::__relocate_a_1(std::__niter_base(__first), 234s 1949: std::__niter_base(__last), 234s 1949: std::__niter_base(__result), __alloc); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 68 "/usr/include/c++/15/vector" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_vector.h" 1 3 4 234s 1949: # 84 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Vector_base 234s 1949: { 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 234s 1949: rebind<_Tp>::other _Tp_alloc_type; 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer 234s 1949: pointer; 234s 1949: 234s 1949: struct _Vector_impl_data 234s 1949: { 234s 1949: pointer _M_start; 234s 1949: pointer _M_finish; 234s 1949: pointer _M_end_of_storage; 234s 1949: 234s 1949: 234s 1949: _Vector_impl_data() noexcept 234s 1949: : _M_start(), _M_finish(), _M_end_of_storage() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Vector_impl_data(_Vector_impl_data&& __x) noexcept 234s 1949: : _M_start(__x._M_start), _M_finish(__x._M_finish), 234s 1949: _M_end_of_storage(__x._M_end_of_storage) 234s 1949: { __x._M_start = __x._M_finish = __x._M_end_of_storage = pointer(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_copy_data(_Vector_impl_data const& __x) noexcept 234s 1949: { 234s 1949: _M_start = __x._M_start; 234s 1949: _M_finish = __x._M_finish; 234s 1949: _M_end_of_storage = __x._M_end_of_storage; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_swap_data(_Vector_impl_data& __x) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: _Vector_impl_data __tmp; 234s 1949: __tmp._M_copy_data(*this); 234s 1949: _M_copy_data(__x); 234s 1949: __x._M_copy_data(__tmp); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: struct _Vector_impl 234s 1949: : public _Tp_alloc_type, public _Vector_impl_data 234s 1949: { 234s 1949: 234s 1949: _Vector_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: : _Tp_alloc_type() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: _Vector_impl(_Tp_alloc_type const& __a) noexcept 234s 1949: : _Tp_alloc_type(__a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Vector_impl(_Vector_impl&& __x) noexcept 234s 1949: : _Tp_alloc_type(std::move(__x)), _Vector_impl_data(std::move(__x)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: _Vector_impl(_Tp_alloc_type&& __a) noexcept 234s 1949: : _Tp_alloc_type(std::move(__a)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: _Vector_impl(_Tp_alloc_type&& __a, _Vector_impl&& __rv) noexcept 234s 1949: : _Tp_alloc_type(std::move(__a)), _Vector_impl_data(std::move(__rv)) 234s 1949: { } 234s 1949: # 300 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: }; 234s 1949: 234s 1949: public: 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: 234s 1949: _Tp_alloc_type& 234s 1949: _M_get_Tp_allocator() noexcept 234s 1949: { return this->_M_impl; } 234s 1949: 234s 1949: 234s 1949: const _Tp_alloc_type& 234s 1949: _M_get_Tp_allocator() const noexcept 234s 1949: { return this->_M_impl; } 234s 1949: 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return allocator_type(_M_get_Tp_allocator()); } 234s 1949: 234s 1949: 234s 1949: _Vector_base() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Vector_base(const allocator_type& __a) noexcept 234s 1949: : _M_impl(__a) { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Vector_base(size_t __n) 234s 1949: : _M_impl() 234s 1949: { _M_create_storage(__n); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Vector_base(size_t __n, const allocator_type& __a) 234s 1949: : _M_impl(__a) 234s 1949: { _M_create_storage(__n); } 234s 1949: 234s 1949: 234s 1949: _Vector_base(_Vector_base&&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Vector_base(_Tp_alloc_type&& __a) noexcept 234s 1949: : _M_impl(std::move(__a)) { } 234s 1949: 234s 1949: 234s 1949: _Vector_base(_Vector_base&& __x, const allocator_type& __a) 234s 1949: : _M_impl(__a) 234s 1949: { 234s 1949: if (__x.get_allocator() == __a) 234s 1949: this->_M_impl._M_swap_data(__x._M_impl); 234s 1949: else 234s 1949: { 234s 1949: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; 234s 1949: _M_create_storage(__n); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Vector_base(const allocator_type& __a, _Vector_base&& __x) 234s 1949: : _M_impl(_Tp_alloc_type(__a), std::move(__x._M_impl)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: ~_Vector_base() noexcept 234s 1949: { 234s 1949: _M_deallocate(_M_impl._M_start, 234s 1949: _M_impl._M_end_of_storage - _M_impl._M_start); 234s 1949: } 234s 1949: 234s 1949: public: 234s 1949: _Vector_impl _M_impl; 234s 1949: 234s 1949: 234s 1949: pointer 234s 1949: _M_allocate(size_t __n) 234s 1949: { 234s 1949: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 234s 1949: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_deallocate(pointer __p, size_t __n) 234s 1949: { 234s 1949: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 234s 1949: if (__p) 234s 1949: _Tr::deallocate(_M_impl, __p, __n); 234s 1949: } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_create_storage(size_t __n) 234s 1949: { 234s 1949: this->_M_impl._M_start = this->_M_allocate(__n); 234s 1949: this->_M_impl._M_finish = this->_M_impl._M_start; 234s 1949: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 234s 1949: } 234s 1949: # 432 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: }; 234s 1949: # 457 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: template > 234s 1949: class vector : protected _Vector_base<_Tp, _Alloc> 234s 1949: { 234s 1949: # 470 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: static_assert(is_same::type, _Tp>::value, 234s 1949: "std::vector must have a non-const, non-volatile value_type"); 234s 1949: 234s 1949: static_assert(is_same::value, 234s 1949: "std::vector must have the same value_type as its allocator"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _Vector_base<_Tp, _Alloc> _Base; 234s 1949: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; 234s 1949: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; 234s 1949: 234s 1949: public: 234s 1949: typedef _Tp value_type; 234s 1949: typedef typename _Base::pointer pointer; 234s 1949: typedef typename _Alloc_traits::const_pointer const_pointer; 234s 1949: typedef typename _Alloc_traits::reference reference; 234s 1949: typedef typename _Alloc_traits::const_reference const_reference; 234s 1949: typedef __gnu_cxx::__normal_iterator iterator; 234s 1949: typedef __gnu_cxx::__normal_iterator 234s 1949: const_iterator; 234s 1949: typedef std::reverse_iterator const_reverse_iterator; 234s 1949: typedef std::reverse_iterator reverse_iterator; 234s 1949: typedef size_t size_type; 234s 1949: typedef ptrdiff_t difference_type; 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: static constexpr bool 234s 1949: _S_nothrow_relocate(true_type) 234s 1949: { 234s 1949: return noexcept(std::__relocate_a(std::declval(), 234s 1949: std::declval(), 234s 1949: std::declval(), 234s 1949: std::declval<_Tp_alloc_type&>())); 234s 1949: } 234s 1949: 234s 1949: static constexpr bool 234s 1949: _S_nothrow_relocate(false_type) 234s 1949: { return false; } 234s 1949: 234s 1949: static constexpr bool 234s 1949: _S_use_relocate() 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _S_nothrow_relocate(__is_move_insertable<_Tp_alloc_type>{}); 234s 1949: } 234s 1949: 234s 1949: static pointer 234s 1949: _S_do_relocate(pointer __first, pointer __last, pointer __result, 234s 1949: _Tp_alloc_type& __alloc, true_type) noexcept 234s 1949: { 234s 1949: return std::__relocate_a(__first, __last, __result, __alloc); 234s 1949: } 234s 1949: 234s 1949: static pointer 234s 1949: _S_do_relocate(pointer, pointer, pointer __result, 234s 1949: _Tp_alloc_type&, false_type) noexcept 234s 1949: { return __result; } 234s 1949: 234s 1949: static pointer 234s 1949: _S_relocate(pointer __first, pointer __last, pointer __result, 234s 1949: _Tp_alloc_type& __alloc) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using __do_it = __bool_constant<_S_use_relocate()>; 234s 1949: return _S_do_relocate(__first, __last, __result, __alloc, __do_it{}); 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: using _Base::_M_allocate; 234s 1949: using _Base::_M_deallocate; 234s 1949: using _Base::_M_impl; 234s 1949: using _Base::_M_get_Tp_allocator; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: vector() = default; 234s 1949: # 570 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: explicit 234s 1949: 234s 1949: vector(const allocator_type& __a) noexcept 234s 1949: : _Base(__a) { } 234s 1949: # 584 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: explicit 234s 1949: 234s 1949: vector(size_type __n, const allocator_type& __a = allocator_type()) 234s 1949: : _Base(_S_check_init_len(__n, __a), __a) 234s 1949: { _M_default_initialize(__n); } 234s 1949: # 598 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: vector(size_type __n, const value_type& __value, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _Base(_S_check_init_len(__n, __a), __a) 234s 1949: { _M_fill_initialize(__n, __value); } 234s 1949: # 630 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: vector(const vector& __x) 234s 1949: : _Base(__x.size(), 234s 1949: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) 234s 1949: { 234s 1949: this->_M_impl._M_finish = 234s 1949: std::__uninitialized_copy_a(__x.begin(), __x.end(), 234s 1949: this->_M_impl._M_start, 234s 1949: _M_get_Tp_allocator()); 234s 1949: } 234s 1949: # 650 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: vector(vector&&) noexcept = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: vector(const vector& __x, const __type_identity_t& __a) 234s 1949: : _Base(__x.size(), __a) 234s 1949: { 234s 1949: this->_M_impl._M_finish = 234s 1949: std::__uninitialized_copy_a(__x.begin(), __x.end(), 234s 1949: this->_M_impl._M_start, 234s 1949: _M_get_Tp_allocator()); 234s 1949: } 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: vector(vector&& __rv, const allocator_type& __m, true_type) noexcept 234s 1949: : _Base(__m, std::move(__rv)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: vector(vector&& __rv, const allocator_type& __m, false_type) 234s 1949: : _Base(__m) 234s 1949: { 234s 1949: if (__rv.get_allocator() == __m) 234s 1949: this->_M_impl._M_swap_data(__rv._M_impl); 234s 1949: else if (!__rv.empty()) 234s 1949: { 234s 1949: this->_M_create_storage(__rv.size()); 234s 1949: this->_M_impl._M_finish = 234s 1949: std::__uninitialized_move_a(__rv.begin(), __rv.end(), 234s 1949: this->_M_impl._M_start, 234s 1949: _M_get_Tp_allocator()); 234s 1949: __rv.clear(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: vector(vector&& __rv, const __type_identity_t& __m) 234s 1949: noexcept( noexcept( 234s 1949: vector(std::declval(), std::declval(), 234s 1949: std::declval())) ) 234s 1949: : vector(std::move(__rv), __m, typename _Alloc_traits::is_always_equal{}) 234s 1949: { } 234s 1949: # 707 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: vector(initializer_list __l, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _Base(__a) 234s 1949: { 234s 1949: _M_range_initialize_n(__l.begin(), __l.end(), __l.size()); 234s 1949: } 234s 1949: # 733 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: template> 234s 1949: 234s 1949: vector(_InputIterator __first, _InputIterator __last, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _Base(__a) 234s 1949: { 234s 1949: # 751 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: _M_range_initialize(__first, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: } 234s 1949: # 799 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: ~vector() noexcept 234s 1949: { 234s 1949: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: ; 234s 1949: } 234s 1949: # 816 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: vector& 234s 1949: operator=(const vector& __x); 234s 1949: # 831 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: vector& 234s 1949: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) 234s 1949: { 234s 1949: constexpr bool __move_storage = 234s 1949: _Alloc_traits::_S_propagate_on_move_assign() 234s 1949: || _Alloc_traits::_S_always_equal(); 234s 1949: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); 234s 1949: return *this; 234s 1949: } 234s 1949: # 853 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: vector& 234s 1949: operator=(initializer_list __l) 234s 1949: { 234s 1949: this->_M_assign_aux(__l.begin(), __l.end(), 234s 1949: random_access_iterator_tag()); 234s 1949: return *this; 234s 1949: } 234s 1949: # 873 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: assign(size_type __n, const value_type& __val) 234s 1949: { _M_fill_assign(__n, __val); } 234s 1949: # 891 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: template> 234s 1949: 234s 1949: void 234s 1949: assign(_InputIterator __first, _InputIterator __last) 234s 1949: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 234s 1949: # 920 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: assign(initializer_list __l) 234s 1949: { 234s 1949: this->_M_assign_aux(__l.begin(), __l.end(), 234s 1949: random_access_iterator_tag()); 234s 1949: } 234s 1949: # 988 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: using _Base::get_allocator; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: iterator 234s 1949: begin() noexcept 234s 1949: { return iterator(this->_M_impl._M_start); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: begin() const noexcept 234s 1949: { return const_iterator(this->_M_impl._M_start); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: iterator 234s 1949: end() noexcept 234s 1949: { return iterator(this->_M_impl._M_finish); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: end() const noexcept 234s 1949: { return const_iterator(this->_M_impl._M_finish); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reverse_iterator 234s 1949: rbegin() noexcept 234s 1949: { return reverse_iterator(end()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: rbegin() const noexcept 234s 1949: { return const_reverse_iterator(end()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reverse_iterator 234s 1949: rend() noexcept 234s 1949: { return reverse_iterator(begin()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: rend() const noexcept 234s 1949: { return const_reverse_iterator(begin()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: cbegin() const noexcept 234s 1949: { return const_iterator(this->_M_impl._M_start); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: cend() const noexcept 234s 1949: { return const_iterator(this->_M_impl._M_finish); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: crbegin() const noexcept 234s 1949: { return const_reverse_iterator(end()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: crend() const noexcept 234s 1949: { return const_reverse_iterator(begin()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { 234s 1949: ptrdiff_t __dif = this->_M_impl._M_finish - this->_M_impl._M_start; 234s 1949: if (__dif < 0) 234s 1949: __builtin_unreachable (); 234s 1949: return size_type(__dif); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { return _S_max_size(_M_get_Tp_allocator()); } 234s 1949: # 1141 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: resize(size_type __new_size) 234s 1949: { 234s 1949: if (__new_size > size()) 234s 1949: _M_default_append(__new_size - size()); 234s 1949: else if (__new_size < size()) 234s 1949: _M_erase_at_end(this->_M_impl._M_start + __new_size); 234s 1949: } 234s 1949: # 1162 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: resize(size_type __new_size, const value_type& __x) 234s 1949: { 234s 1949: if (__new_size > size()) 234s 1949: _M_fill_insert(end(), __new_size - size(), __x); 234s 1949: else if (__new_size < size()) 234s 1949: _M_erase_at_end(this->_M_impl._M_start + __new_size); 234s 1949: } 234s 1949: # 1196 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: shrink_to_fit() 234s 1949: { _M_shrink_to_fit(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: capacity() const noexcept 234s 1949: { 234s 1949: ptrdiff_t __dif = this->_M_impl._M_end_of_storage 234s 1949: - this->_M_impl._M_start; 234s 1949: if (__dif < 0) 234s 1949: __builtin_unreachable (); 234s 1949: return size_type(__dif); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: empty() const noexcept 234s 1949: { return begin() == end(); } 234s 1949: # 1243 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: reserve(size_type __n); 234s 1949: # 1259 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: operator[](size_type __n) noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return *(this->_M_impl._M_start + __n); 234s 1949: } 234s 1949: # 1278 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: operator[](size_type __n) const noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return *(this->_M_impl._M_start + __n); 234s 1949: } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_range_check(size_type __n) const 234s 1949: { 234s 1949: if (__n >= this->size()) 234s 1949: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 234s 1949: 234s 1949: , 234s 1949: __n, this->size()); 234s 1949: } 234s 1949: 234s 1949: public: 234s 1949: # 1311 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: at(size_type __n) 234s 1949: { 234s 1949: _M_range_check(__n); 234s 1949: return (*this)[__n]; 234s 1949: } 234s 1949: # 1330 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: at(size_type __n) const 234s 1949: { 234s 1949: _M_range_check(__n); 234s 1949: return (*this)[__n]; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: front() noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return *begin(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: front() const noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return *begin(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: back() noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return *(end() - 1); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: back() const noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return *(end() - 1); 234s 1949: } 234s 1949: # 1393 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: _Tp* 234s 1949: data() noexcept 234s 1949: { return _M_data_ptr(this->_M_impl._M_start); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const _Tp* 234s 1949: data() const noexcept 234s 1949: { return _M_data_ptr(this->_M_impl._M_start); } 234s 1949: # 1414 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: push_back(const value_type& __x) 234s 1949: { 234s 1949: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 234s 1949: { 234s 1949: ; 234s 1949: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 234s 1949: __x); 234s 1949: ++this->_M_impl._M_finish; 234s 1949: ; 234s 1949: } 234s 1949: else 234s 1949: _M_realloc_append(__x); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: push_back(value_type&& __x) 234s 1949: { emplace_back(std::move(__x)); } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: 234s 1949: emplace_back(_Args&&... __args); 234s 1949: # 1455 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: pop_back() noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: --this->_M_impl._M_finish; 234s 1949: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 234s 1949: ; 234s 1949: } 234s 1949: # 1478 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: template 234s 1949: 234s 1949: iterator 234s 1949: emplace(const_iterator __position, _Args&&... __args) 234s 1949: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); } 234s 1949: # 1495 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, const value_type& __x); 234s 1949: # 1526 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, value_type&& __x) 234s 1949: { return _M_insert_rval(__position, std::move(__x)); } 234s 1949: # 1544 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, initializer_list __l) 234s 1949: { 234s 1949: auto __offset = __position - cbegin(); 234s 1949: _M_range_insert(begin() + __offset, __l.begin(), __l.end(), 234s 1949: std::random_access_iterator_tag()); 234s 1949: return begin() + __offset; 234s 1949: } 234s 1949: # 1570 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, size_type __n, const value_type& __x) 234s 1949: { 234s 1949: difference_type __offset = __position - cbegin(); 234s 1949: _M_fill_insert(begin() + __offset, __n, __x); 234s 1949: return begin() + __offset; 234s 1949: } 234s 1949: # 1613 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: template> 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, _InputIterator __first, 234s 1949: _InputIterator __last) 234s 1949: { 234s 1949: difference_type __offset = __position - cbegin(); 234s 1949: _M_range_insert(begin() + __offset, __first, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: return begin() + __offset; 234s 1949: } 234s 1949: # 1789 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: 234s 1949: erase(const_iterator __position) 234s 1949: { return _M_erase(begin() + (__position - cbegin())); } 234s 1949: # 1817 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: 234s 1949: erase(const_iterator __first, const_iterator __last) 234s 1949: { 234s 1949: const auto __beg = begin(); 234s 1949: const auto __cbeg = cbegin(); 234s 1949: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); 234s 1949: } 234s 1949: # 1842 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: swap(vector& __x) noexcept 234s 1949: { 234s 1949: 234s 1949: do { if (std::__is_constant_evaluated() && !bool(_Alloc_traits::propagate_on_container_swap::value || _M_get_Tp_allocator() == __x._M_get_Tp_allocator())) std::__glibcxx_assert_fail(); } while (false) 234s 1949: ; 234s 1949: 234s 1949: this->_M_impl._M_swap_data(__x._M_impl); 234s 1949: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), 234s 1949: __x._M_get_Tp_allocator()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { _M_erase_at_end(this->_M_impl._M_start); } 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: struct _Guard_alloc 234s 1949: { 234s 1949: pointer _M_storage; 234s 1949: size_type _M_len; 234s 1949: _Base& _M_vect; 234s 1949: 234s 1949: 234s 1949: _Guard_alloc(pointer __s, size_type __l, _Base& __vect) 234s 1949: : _M_storage(__s), _M_len(__l), _M_vect(__vect) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: ~_Guard_alloc() 234s 1949: { 234s 1949: if (_M_storage) 234s 1949: _M_vect._M_deallocate(_M_storage, _M_len); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: pointer 234s 1949: _M_release() 234s 1949: { 234s 1949: pointer __res = _M_storage; 234s 1949: _M_storage = pointer(); 234s 1949: return __res; 234s 1949: } 234s 1949: 234s 1949: private: 234s 1949: _Guard_alloc(const _Guard_alloc&); 234s 1949: }; 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pointer 234s 1949: _M_allocate_and_copy(size_type __n, 234s 1949: _ForwardIterator __first, _ForwardIterator __last) 234s 1949: { 234s 1949: _Guard_alloc __guard(this->_M_allocate(__n), __n, *this); 234s 1949: std::__uninitialized_copy_a 234s 1949: (__first, __last, __guard._M_storage, _M_get_Tp_allocator()); 234s 1949: return __guard._M_release(); 234s 1949: } 234s 1949: # 1948 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_range_initialize(_InputIterator __first, _InputIterator __last, 234s 1949: std::input_iterator_tag) 234s 1949: { 234s 1949: try { 234s 1949: for (; __first != __last; ++__first) 234s 1949: 234s 1949: emplace_back(*__first); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } catch(...) { 234s 1949: clear(); 234s 1949: throw; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: std::forward_iterator_tag) 234s 1949: { 234s 1949: _M_range_initialize_n(__first, __last, 234s 1949: std::distance(__first, __last)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_range_initialize_n(_Iterator __first, _Sentinel __last, 234s 1949: size_type __n) 234s 1949: { 234s 1949: pointer __start = 234s 1949: this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator())); 234s 1949: this->_M_impl._M_start = this->_M_impl._M_finish = __start; 234s 1949: this->_M_impl._M_end_of_storage = __start + __n; 234s 1949: this->_M_impl._M_finish 234s 1949: = std::__uninitialized_copy_a(std::move(__first), __last, 234s 1949: __start, _M_get_Tp_allocator()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_fill_initialize(size_type __n, const value_type& __value) 234s 1949: { 234s 1949: this->_M_impl._M_finish = 234s 1949: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, 234s 1949: _M_get_Tp_allocator()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_default_initialize(size_type __n) 234s 1949: { 234s 1949: this->_M_impl._M_finish = 234s 1949: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, 234s 1949: _M_get_Tp_allocator()); 234s 1949: } 234s 1949: # 2023 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) 234s 1949: { _M_fill_assign(__n, __val); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, 234s 1949: __false_type) 234s 1949: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_assign_aux(_InputIterator __first, _InputIterator __last, 234s 1949: std::input_iterator_tag); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: std::forward_iterator_tag); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_fill_assign(size_type __n, const value_type& __val); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, 234s 1949: __true_type) 234s 1949: { _M_fill_insert(__pos, __n, __val); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_insert_dispatch(iterator __pos, _InputIterator __first, 234s 1949: _InputIterator __last, __false_type) 234s 1949: { 234s 1949: _M_range_insert(__pos, __first, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_range_insert(iterator __pos, _InputIterator __first, 234s 1949: _InputIterator __last, std::input_iterator_tag); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_range_insert(iterator __pos, _ForwardIterator __first, 234s 1949: _ForwardIterator __last, std::forward_iterator_tag); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_default_append(size_type __n); 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: _M_shrink_to_fit(); 234s 1949: # 2125 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: struct _Temporary_value 234s 1949: { 234s 1949: template 234s 1949: explicit 234s 1949: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec) 234s 1949: { 234s 1949: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(), 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: ~_Temporary_value() 234s 1949: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } 234s 1949: 234s 1949: value_type& 234s 1949: _M_val() noexcept { return _M_storage._M_val; } 234s 1949: 234s 1949: private: 234s 1949: _Tp* 234s 1949: _M_ptr() noexcept { return std::__addressof(_M_storage._M_val); } 234s 1949: 234s 1949: union _Storage 234s 1949: { 234s 1949: constexpr _Storage() : _M_byte() { } 234s 1949: ~_Storage() { } 234s 1949: _Storage& operator=(const _Storage&) = delete; 234s 1949: unsigned char _M_byte; 234s 1949: _Tp _M_val; 234s 1949: }; 234s 1949: 234s 1949: vector* _M_this; 234s 1949: _Storage _M_storage; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_insert_aux(iterator __position, _Arg&& __arg); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_realloc_insert(iterator __position, _Args&&... __args); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_realloc_append(_Args&&... __args); 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: _M_insert_rval(const_iterator __position, value_type&& __v); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: iterator 234s 1949: _M_emplace_aux(const_iterator __position, _Args&&... __args); 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: _M_emplace_aux(const_iterator __position, value_type&& __v) 234s 1949: { return _M_insert_rval(__position, std::move(__v)); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: _M_check_len(size_type __n, const char* __s) const 234s 1949: { 234s 1949: if (max_size() - size() < __n) 234s 1949: __throw_length_error((__s)); 234s 1949: 234s 1949: const size_type __len = size() + (std::max)(size(), __n); 234s 1949: return (__len < size() || __len > max_size()) ? max_size() : __len; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: static size_type 234s 1949: _S_check_init_len(size_type __n, const allocator_type& __a) 234s 1949: { 234s 1949: if (__n > _S_max_size(_Tp_alloc_type(__a))) 234s 1949: __throw_length_error( 234s 1949: ("cannot create std::vector larger than max_size()")); 234s 1949: return __n; 234s 1949: } 234s 1949: 234s 1949: static size_type 234s 1949: _S_max_size(const _Tp_alloc_type& __a) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: const size_t __diffmax 234s 1949: = __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 234s 1949: const size_t __allocmax = _Alloc_traits::max_size(__a); 234s 1949: return (std::min)(__diffmax, __allocmax); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_erase_at_end(pointer __pos) noexcept 234s 1949: { 234s 1949: if (size_type __n = this->_M_impl._M_finish - __pos) 234s 1949: { 234s 1949: std::_Destroy(__pos, this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: this->_M_impl._M_finish = __pos; 234s 1949: ; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: _M_erase(iterator __position); 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: _M_erase(iterator __first, iterator __last); 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_move_assign(vector&& __x, true_type) noexcept 234s 1949: { 234s 1949: vector __tmp(get_allocator()); 234s 1949: this->_M_impl._M_swap_data(__x._M_impl); 234s 1949: __tmp._M_impl._M_swap_data(__x._M_impl); 234s 1949: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_move_assign(vector&& __x, false_type) 234s 1949: { 234s 1949: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) 234s 1949: _M_move_assign(std::move(__x), true_type()); 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: this->_M_assign_aux(std::make_move_iterator(__x.begin()), 234s 1949: std::make_move_iterator(__x.end()), 234s 1949: std::random_access_iterator_tag()); 234s 1949: __x.clear(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Up* 234s 1949: _M_data_ptr(_Up* __ptr) const noexcept 234s 1949: { return __ptr; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename std::pointer_traits<_Ptr>::element_type* 234s 1949: _M_data_ptr(_Ptr __ptr) const 234s 1949: { return empty() ? nullptr : std::__to_address(__ptr); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: # 2335 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline bool 234s 1949: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 234s 1949: { return (__x.size() == __y.size() 234s 1949: && std::equal(__x.begin(), __x.end(), __y.begin())); } 234s 1949: # 2375 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] inline bool 234s 1949: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 234s 1949: { return std::lexicographical_compare(__x.begin(), __x.end(), 234s 1949: __y.begin(), __y.end()); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] inline bool 234s 1949: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] inline bool 234s 1949: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 234s 1949: { return __y < __x; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] inline bool 234s 1949: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 234s 1949: { return !(__y < __x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] inline bool 234s 1949: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 234s 1949: { return !(__x < __y); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline void 234s 1949: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) 234s 1949: noexcept(noexcept(__x.swap(__y))) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: # 2430 "/usr/include/c++/15/bits/stl_vector.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 69 "/usr/include/c++/15/vector" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_bvector.h" 1 3 4 234s 1949: # 68 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: typedef unsigned long _Bit_type; 234s 1949: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; 234s 1949: 234s 1949: __attribute__((__nonnull__)) 234s 1949: 234s 1949: void 234s 1949: __fill_bvector_n(_Bit_type*, size_t, bool) noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct _Bit_reference 234s 1949: { 234s 1949: private: 234s 1949: template friend class vector; 234s 1949: friend struct _Bit_iterator; 234s 1949: friend struct _Bit_const_iterator; 234s 1949: 234s 1949: 234s 1949: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { } 234s 1949: 234s 1949: _Bit_type * _M_p; 234s 1949: _Bit_type _M_mask; 234s 1949: 234s 1949: 234s 1949: _Bit_reference(_Bit_type * __x, _Bit_type __y) 234s 1949: : _M_p(__x), _M_mask(__y) { } 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: _Bit_reference(const _Bit_reference&) = default; 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: operator bool() const noexcept 234s 1949: { return !!(*_M_p & _M_mask); } 234s 1949: 234s 1949: 234s 1949: _Bit_reference& 234s 1949: operator=(bool __x) noexcept 234s 1949: { 234s 1949: if (__x) 234s 1949: *_M_p |= _M_mask; 234s 1949: else 234s 1949: *_M_p &= ~_M_mask; 234s 1949: return *this; 234s 1949: } 234s 1949: # 131 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: 234s 1949: _Bit_reference& 234s 1949: operator=(const _Bit_reference& __x) noexcept 234s 1949: { return *this = bool(__x); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: operator==(const _Bit_reference& __x) const 234s 1949: { return bool(*this) == bool(__x); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: operator<(const _Bit_reference& __x) const 234s 1949: { return !bool(*this) && bool(__x); } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: flip() noexcept 234s 1949: { *_M_p ^= _M_mask; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: friend void 234s 1949: swap(_Bit_reference __x, _Bit_reference __y) noexcept 234s 1949: { 234s 1949: bool __tmp = __x; 234s 1949: __x = __y; 234s 1949: __y = __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: friend void 234s 1949: swap(_Bit_reference __x, bool& __y) noexcept 234s 1949: { 234s 1949: bool __tmp = __x; 234s 1949: __x = __y; 234s 1949: __y = __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: friend void 234s 1949: swap(bool& __x, _Bit_reference __y) noexcept 234s 1949: { 234s 1949: bool __tmp = __x; 234s 1949: __x = __y; 234s 1949: __y = __tmp; 234s 1949: } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: struct _Bit_iterator_base 234s 1949: : public std::iterator 234s 1949: { 234s 1949: _Bit_type * _M_p; 234s 1949: unsigned int _M_offset; 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) 234s 1949: void 234s 1949: _M_assume_normalized() const 234s 1949: { 234s 1949: 234s 1949: unsigned int __ofst = _M_offset; 234s 1949: __attribute__ ((__assume__ (__ofst < unsigned(_S_word_bit)))); 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: _Bit_iterator_base(_Bit_type * __x, unsigned int __y) 234s 1949: : _M_p(__x), _M_offset(__y) { } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_bump_up() 234s 1949: { 234s 1949: _M_assume_normalized(); 234s 1949: if (_M_offset++ == int(_S_word_bit) - 1) 234s 1949: { 234s 1949: _M_offset = 0; 234s 1949: ++_M_p; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_bump_down() 234s 1949: { 234s 1949: _M_assume_normalized(); 234s 1949: if (_M_offset-- == 0) 234s 1949: { 234s 1949: _M_offset = int(_S_word_bit) - 1; 234s 1949: --_M_p; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_incr(ptrdiff_t __i) 234s 1949: { 234s 1949: _M_assume_normalized(); 234s 1949: difference_type __n = __i + _M_offset; 234s 1949: _M_p += __n / int(_S_word_bit); 234s 1949: __n = __n % int(_S_word_bit); 234s 1949: if (__n < 0) 234s 1949: { 234s 1949: __n += int(_S_word_bit); 234s 1949: --_M_p; 234s 1949: } 234s 1949: _M_offset = static_cast(__n); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend bool 234s 1949: operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 234s 1949: { 234s 1949: __x._M_assume_normalized(); 234s 1949: __y._M_assume_normalized(); 234s 1949: return __x._M_p == __y._M_p && __x._M_offset == __y._M_offset; 234s 1949: } 234s 1949: # 266 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: friend bool 234s 1949: operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 234s 1949: { 234s 1949: __x._M_assume_normalized(); 234s 1949: __y._M_assume_normalized(); 234s 1949: return __x._M_p < __y._M_p 234s 1949: || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend bool 234s 1949: operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend bool 234s 1949: operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 234s 1949: { return __y < __x; } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend bool 234s 1949: operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 234s 1949: { return !(__y < __x); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend bool 234s 1949: operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 234s 1949: { return !(__x < __y); } 234s 1949: 234s 1949: 234s 1949: friend ptrdiff_t 234s 1949: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 234s 1949: { 234s 1949: __x._M_assume_normalized(); 234s 1949: __y._M_assume_normalized(); 234s 1949: return (int(_S_word_bit) * (__x._M_p - __y._M_p) 234s 1949: + __x._M_offset - __y._M_offset); 234s 1949: } 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: struct _Bit_iterator : public _Bit_iterator_base 234s 1949: { 234s 1949: typedef _Bit_reference reference; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _Bit_reference* pointer; 234s 1949: 234s 1949: typedef _Bit_iterator iterator; 234s 1949: 234s 1949: 234s 1949: _Bit_iterator() : _Bit_iterator_base(0, 0) { } 234s 1949: 234s 1949: 234s 1949: _Bit_iterator(_Bit_type * __x, unsigned int __y) 234s 1949: : _Bit_iterator_base(__x, __y) { } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: _M_const_cast() const 234s 1949: { return *this; } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: operator*() const 234s 1949: { 234s 1949: _M_assume_normalized(); 234s 1949: return reference(_M_p, 1UL << _M_offset); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: iterator& 234s 1949: operator++() 234s 1949: { 234s 1949: _M_bump_up(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: operator++(int) 234s 1949: { 234s 1949: iterator __tmp = *this; 234s 1949: _M_bump_up(); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: iterator& 234s 1949: operator--() 234s 1949: { 234s 1949: _M_bump_down(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: operator--(int) 234s 1949: { 234s 1949: iterator __tmp = *this; 234s 1949: _M_bump_down(); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: iterator& 234s 1949: operator+=(difference_type __i) 234s 1949: { 234s 1949: _M_incr(__i); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: iterator& 234s 1949: operator-=(difference_type __i) 234s 1949: { 234s 1949: *this += -__i; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: operator[](difference_type __i) const 234s 1949: { return *(*this + __i); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend iterator 234s 1949: operator+(const iterator& __x, difference_type __n) 234s 1949: { 234s 1949: iterator __tmp = __x; 234s 1949: __tmp += __n; 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend iterator 234s 1949: operator+(difference_type __n, const iterator& __x) 234s 1949: { return __x + __n; } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend iterator 234s 1949: operator-(const iterator& __x, difference_type __n) 234s 1949: { 234s 1949: iterator __tmp = __x; 234s 1949: __tmp -= __n; 234s 1949: return __tmp; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: struct _Bit_const_iterator : public _Bit_iterator_base 234s 1949: { 234s 1949: typedef bool reference; 234s 1949: typedef bool const_reference; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef const bool* pointer; 234s 1949: 234s 1949: typedef _Bit_const_iterator const_iterator; 234s 1949: 234s 1949: 234s 1949: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } 234s 1949: 234s 1949: 234s 1949: _Bit_const_iterator(_Bit_type * __x, unsigned int __y) 234s 1949: : _Bit_iterator_base(__x, __y) { } 234s 1949: 234s 1949: 234s 1949: _Bit_const_iterator(const _Bit_iterator& __x) 234s 1949: : _Bit_iterator_base(__x._M_p, __x._M_offset) { } 234s 1949: 234s 1949: 234s 1949: _Bit_iterator 234s 1949: _M_const_cast() const 234s 1949: { return _Bit_iterator(_M_p, _M_offset); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: operator*() const 234s 1949: { 234s 1949: _M_assume_normalized(); 234s 1949: return _Bit_reference(_M_p, 1UL << _M_offset); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const_iterator& 234s 1949: operator++() 234s 1949: { 234s 1949: _M_bump_up(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: operator++(int) 234s 1949: { 234s 1949: const_iterator __tmp = *this; 234s 1949: _M_bump_up(); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const_iterator& 234s 1949: operator--() 234s 1949: { 234s 1949: _M_bump_down(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: operator--(int) 234s 1949: { 234s 1949: const_iterator __tmp = *this; 234s 1949: _M_bump_down(); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const_iterator& 234s 1949: operator+=(difference_type __i) 234s 1949: { 234s 1949: _M_incr(__i); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const_iterator& 234s 1949: operator-=(difference_type __i) 234s 1949: { 234s 1949: *this += -__i; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: operator[](difference_type __i) const 234s 1949: { return *(*this + __i); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend const_iterator 234s 1949: operator+(const const_iterator& __x, difference_type __n) 234s 1949: { 234s 1949: const_iterator __tmp = __x; 234s 1949: __tmp += __n; 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend const_iterator 234s 1949: operator-(const const_iterator& __x, difference_type __n) 234s 1949: { 234s 1949: const_iterator __tmp = __x; 234s 1949: __tmp -= __n; 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend const_iterator 234s 1949: operator+(difference_type __n, const const_iterator& __x) 234s 1949: { return __x + __n; } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Bvector_base 234s 1949: { 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 234s 1949: rebind<_Bit_type>::other _Bit_alloc_type; 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> 234s 1949: _Bit_alloc_traits; 234s 1949: typedef typename _Bit_alloc_traits::pointer _Bit_pointer; 234s 1949: 234s 1949: struct _Bvector_impl_data 234s 1949: { 234s 1949: 234s 1949: _Bit_iterator _M_start; 234s 1949: # 553 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: _Bit_iterator _M_finish; 234s 1949: _Bit_pointer _M_end_of_storage; 234s 1949: 234s 1949: 234s 1949: _Bvector_impl_data() noexcept 234s 1949: : _M_start(), _M_finish(), _M_end_of_storage() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: _Bvector_impl_data(const _Bvector_impl_data&) = default; 234s 1949: 234s 1949: _Bvector_impl_data& 234s 1949: operator=(const _Bvector_impl_data&) = default; 234s 1949: 234s 1949: 234s 1949: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept 234s 1949: : _Bvector_impl_data(__x) 234s 1949: { __x._M_reset(); } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_move_data(_Bvector_impl_data&& __x) noexcept 234s 1949: { 234s 1949: *this = __x; 234s 1949: __x._M_reset(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_reset() noexcept 234s 1949: { *this = _Bvector_impl_data(); } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_swap_data(_Bvector_impl_data& __x) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: std::swap(*this, __x); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: struct _Bvector_impl 234s 1949: : public _Bit_alloc_type, public _Bvector_impl_data 234s 1949: { 234s 1949: 234s 1949: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: : _Bit_alloc_type() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: _Bvector_impl(const _Bit_alloc_type& __a) noexcept 234s 1949: : _Bit_alloc_type(__a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Bvector_impl(_Bvector_impl&& __x) noexcept 234s 1949: : _Bit_alloc_type(std::move(__x)), _Bvector_impl_data(std::move(__x)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: _Bvector_impl(_Bit_alloc_type&& __a, _Bvector_impl&& __x) noexcept 234s 1949: : _Bit_alloc_type(std::move(__a)), _Bvector_impl_data(std::move(__x)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Bit_type* 234s 1949: _M_end_addr() const noexcept 234s 1949: { 234s 1949: if (this->_M_end_of_storage) 234s 1949: return std::__addressof(this->_M_end_of_storage[-1]) + 1; 234s 1949: return 0; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: public: 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: 234s 1949: _Bit_alloc_type& 234s 1949: _M_get_Bit_allocator() noexcept 234s 1949: { return this->_M_impl; } 234s 1949: 234s 1949: 234s 1949: const _Bit_alloc_type& 234s 1949: _M_get_Bit_allocator() const noexcept 234s 1949: { return this->_M_impl; } 234s 1949: 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return allocator_type(_M_get_Bit_allocator()); } 234s 1949: 234s 1949: 234s 1949: _Bvector_base() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Bvector_base(const allocator_type& __a) 234s 1949: : _M_impl(_Bit_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: _Bvector_base(_Bvector_base&&) = default; 234s 1949: 234s 1949: 234s 1949: _Bvector_base(_Bvector_base&& __x, const allocator_type& __a) noexcept 234s 1949: : _M_impl(_Bit_alloc_type(__a), std::move(__x._M_impl)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: ~_Bvector_base() 234s 1949: { this->_M_deallocate(); } 234s 1949: 234s 1949: protected: 234s 1949: _Bvector_impl _M_impl; 234s 1949: 234s 1949: 234s 1949: _Bit_pointer 234s 1949: _M_allocate(size_t __n) 234s 1949: { 234s 1949: _Bit_pointer __p = _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); 234s 1949: # 694 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: return __p; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_deallocate() 234s 1949: { 234s 1949: if (_M_impl._M_start._M_p) 234s 1949: { 234s 1949: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; 234s 1949: _Bit_alloc_traits::deallocate(_M_impl, 234s 1949: _M_impl._M_end_of_storage - __n, 234s 1949: __n); 234s 1949: _M_impl._M_reset(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_move_data(_Bvector_base&& __x) noexcept 234s 1949: { _M_impl._M_move_data(std::move(__x._M_impl)); } 234s 1949: 234s 1949: 234s 1949: constexpr 234s 1949: static size_t 234s 1949: _S_nword(size_t __n) 234s 1949: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } 234s 1949: }; 234s 1949: # 745 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: template 234s 1949: class vector : protected _Bvector_base<_Alloc> 234s 1949: { 234s 1949: typedef _Bvector_base<_Alloc> _Base; 234s 1949: typedef typename _Base::_Bit_pointer _Bit_pointer; 234s 1949: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; 234s 1949: 234s 1949: 234s 1949: friend struct std::hash; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: typedef bool value_type; 234s 1949: typedef size_t size_type; 234s 1949: typedef ptrdiff_t difference_type; 234s 1949: typedef _Bit_reference reference; 234s 1949: typedef bool const_reference; 234s 1949: typedef _Bit_reference* pointer; 234s 1949: typedef const bool* const_pointer; 234s 1949: typedef _Bit_iterator iterator; 234s 1949: typedef _Bit_const_iterator const_iterator; 234s 1949: typedef std::reverse_iterator const_reverse_iterator; 234s 1949: typedef std::reverse_iterator reverse_iterator; 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const 234s 1949: { return _Base::get_allocator(); } 234s 1949: 234s 1949: protected: 234s 1949: using _Base::_M_allocate; 234s 1949: using _Base::_M_deallocate; 234s 1949: using _Base::_S_nword; 234s 1949: using _Base::_M_get_Bit_allocator; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: vector() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: vector(const allocator_type& __a) noexcept 234s 1949: : _Base(__a) { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: vector(size_type __n, const allocator_type& __a = allocator_type()) 234s 1949: : vector(__n, false, __a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: vector(size_type __n, const bool& __value, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: : _Base(__a) 234s 1949: { 234s 1949: _M_initialize(__n); 234s 1949: _M_initialize_value(__value); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: vector(const vector& __x) 234s 1949: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) 234s 1949: { 234s 1949: const_iterator __xbegin = __x.begin(), __xend = __x.end(); 234s 1949: _M_initialize(__x.size()); 234s 1949: _M_copy_aligned(__xbegin, __xend, begin()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: vector(vector&&) = default; 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: vector(vector&& __x, const allocator_type& __a, true_type) noexcept 234s 1949: : _Base(std::move(__x), __a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: vector(vector&& __x, const allocator_type& __a, false_type) 234s 1949: : _Base(__a) 234s 1949: { 234s 1949: if (__x.get_allocator() == __a) 234s 1949: this->_M_move_data(std::move(__x)); 234s 1949: else 234s 1949: { 234s 1949: _M_initialize(__x.size()); 234s 1949: _M_copy_aligned(__x.begin(), __x.end(), begin()); 234s 1949: __x.clear(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: vector(vector&& __x, const __type_identity_t& __a) 234s 1949: noexcept(_Bit_alloc_traits::_S_always_equal()) 234s 1949: : vector(std::move(__x), __a, 234s 1949: typename _Bit_alloc_traits::is_always_equal{}) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: vector(const vector& __x, const __type_identity_t& __a) 234s 1949: : _Base(__a) 234s 1949: { 234s 1949: _M_initialize(__x.size()); 234s 1949: _M_copy_aligned(__x.begin(), __x.end(), begin()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: vector(initializer_list __l, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _Base(__a) 234s 1949: { 234s 1949: _M_initialize_range(__l.begin(), __l.end(), 234s 1949: random_access_iterator_tag()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: 234s 1949: vector(_InputIterator __first, _InputIterator __last, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _Base(__a) 234s 1949: { 234s 1949: _M_initialize_range(__first, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: } 234s 1949: # 925 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: 234s 1949: ~vector() noexcept { } 234s 1949: 234s 1949: 234s 1949: vector& 234s 1949: operator=(const vector& __x) 234s 1949: { 234s 1949: if (&__x == this) 234s 1949: return *this; 234s 1949: 234s 1949: if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) 234s 1949: { 234s 1949: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) 234s 1949: { 234s 1949: this->_M_deallocate(); 234s 1949: std::__alloc_on_copy(_M_get_Bit_allocator(), 234s 1949: __x._M_get_Bit_allocator()); 234s 1949: _M_initialize(__x.size()); 234s 1949: } 234s 1949: else 234s 1949: std::__alloc_on_copy(_M_get_Bit_allocator(), 234s 1949: __x._M_get_Bit_allocator()); 234s 1949: } 234s 1949: 234s 1949: if (__x.size() > capacity()) 234s 1949: { 234s 1949: this->_M_deallocate(); 234s 1949: _M_initialize(__x.size()); 234s 1949: } 234s 1949: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 234s 1949: begin()); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: vector& 234s 1949: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) 234s 1949: { 234s 1949: if (_Bit_alloc_traits::_S_propagate_on_move_assign() 234s 1949: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) 234s 1949: { 234s 1949: this->_M_deallocate(); 234s 1949: this->_M_move_data(std::move(__x)); 234s 1949: std::__alloc_on_move(_M_get_Bit_allocator(), 234s 1949: __x._M_get_Bit_allocator()); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: if (__x.size() > capacity()) 234s 1949: { 234s 1949: this->_M_deallocate(); 234s 1949: _M_initialize(__x.size()); 234s 1949: } 234s 1949: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 234s 1949: begin()); 234s 1949: __x.clear(); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: vector& 234s 1949: operator=(initializer_list __l) 234s 1949: { 234s 1949: this->assign(__l.begin(), __l.end()); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: assign(size_type __n, const bool& __x) 234s 1949: { _M_fill_assign(__n, __x); } 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: 234s 1949: void 234s 1949: assign(_InputIterator __first, _InputIterator __last) 234s 1949: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 234s 1949: # 1023 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: assign(initializer_list __l) 234s 1949: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } 234s 1949: # 1063 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: [[__nodiscard__]] 234s 1949: iterator 234s 1949: begin() noexcept 234s 1949: { return iterator(this->_M_impl._M_start._M_p, 0); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: begin() const noexcept 234s 1949: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: iterator 234s 1949: end() noexcept 234s 1949: { return this->_M_impl._M_finish; } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: end() const noexcept 234s 1949: { return this->_M_impl._M_finish; } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reverse_iterator 234s 1949: rbegin() noexcept 234s 1949: { return reverse_iterator(end()); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: rbegin() const noexcept 234s 1949: { return const_reverse_iterator(end()); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reverse_iterator 234s 1949: rend() noexcept 234s 1949: { return reverse_iterator(begin()); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: rend() const noexcept 234s 1949: { return const_reverse_iterator(begin()); } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: cbegin() const noexcept 234s 1949: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_iterator 234s 1949: cend() const noexcept 234s 1949: { return this->_M_impl._M_finish; } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: crbegin() const noexcept 234s 1949: { return const_reverse_iterator(end()); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reverse_iterator 234s 1949: crend() const noexcept 234s 1949: { return const_reverse_iterator(begin()); } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { return size_type(end() - begin()); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { 234s 1949: const size_type __isize = 234s 1949: __gnu_cxx::__numeric_traits::__max 234s 1949: - int(_S_word_bit) + 1; 234s 1949: const size_type __asize 234s 1949: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); 234s 1949: return (__asize <= __isize / int(_S_word_bit) 234s 1949: ? __asize * int(_S_word_bit) : __isize); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: size_type 234s 1949: capacity() const noexcept 234s 1949: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) 234s 1949: - begin()); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: empty() const noexcept 234s 1949: { return begin() == end(); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: operator[](size_type __n) 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return _Bit_reference (this->_M_impl._M_start._M_p 234s 1949: + __n / int(_S_word_bit), 234s 1949: 1UL << __n % int(_S_word_bit)); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: operator[](size_type __n) const 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return _Bit_reference (this->_M_impl._M_start._M_p 234s 1949: + __n / int(_S_word_bit), 234s 1949: 1UL << __n % int(_S_word_bit)); 234s 1949: } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: void 234s 1949: _M_range_check(size_type __n) const 234s 1949: { 234s 1949: if (__n >= this->size()) 234s 1949: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 234s 1949: 234s 1949: , 234s 1949: __n, this->size()); 234s 1949: } 234s 1949: 234s 1949: public: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: at(size_type __n) 234s 1949: { 234s 1949: _M_range_check(__n); 234s 1949: return (*this)[__n]; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: at(size_type __n) const 234s 1949: { 234s 1949: _M_range_check(__n); 234s 1949: return (*this)[__n]; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: reserve(size_type __n) 234s 1949: { 234s 1949: if (__n > max_size()) 234s 1949: __throw_length_error(("vector::reserve")); 234s 1949: if (capacity() < __n) 234s 1949: _M_reallocate(__n); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: front() 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return *begin(); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: front() const 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return *begin(); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: back() 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return *(end() - 1); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: const_reference 234s 1949: back() const 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: return *(end() - 1); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: push_back(bool __x) 234s 1949: { 234s 1949: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 234s 1949: *this->_M_impl._M_finish++ = __x; 234s 1949: else 234s 1949: _M_insert_aux(end(), __x); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: swap(vector& __x) noexcept 234s 1949: { 234s 1949: 234s 1949: do { if (std::__is_constant_evaluated() && !bool(_Bit_alloc_traits::propagate_on_container_swap::value || _M_get_Bit_allocator() == __x._M_get_Bit_allocator())) std::__glibcxx_assert_fail(); } while (false) 234s 1949: ; 234s 1949: 234s 1949: this->_M_impl._M_swap_data(__x._M_impl); 234s 1949: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), 234s 1949: __x._M_get_Bit_allocator()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: static void 234s 1949: swap(reference __x, reference __y) noexcept 234s 1949: { 234s 1949: bool __tmp = __x; 234s 1949: __x = __y; 234s 1949: __y = __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: 234s 1949: insert(const_iterator __position, const bool& __x) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: const difference_type __n = __position - begin(); 234s 1949: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() 234s 1949: && __position == end()) 234s 1949: *this->_M_impl._M_finish++ = __x; 234s 1949: else 234s 1949: _M_insert_aux(__position._M_const_cast(), __x); 234s 1949: return begin() + __n; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__deprecated__ ("use '" "insert(position, false)" "' instead"))) 234s 1949: iterator 234s 1949: insert(const_iterator __position) 234s 1949: { return this->insert(__position._M_const_cast(), false); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, 234s 1949: _InputIterator __first, _InputIterator __last) 234s 1949: { 234s 1949: difference_type __offset = __position - cbegin(); 234s 1949: _M_insert_range(__position._M_const_cast(), 234s 1949: __first, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: return begin() + __offset; 234s 1949: } 234s 1949: # 1329 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, size_type __n, const bool& __x) 234s 1949: { 234s 1949: difference_type __offset = __position - cbegin(); 234s 1949: _M_fill_insert(__position._M_const_cast(), __n, __x); 234s 1949: return begin() + __offset; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __p, initializer_list __l) 234s 1949: { return this->insert(__p, __l.begin(), __l.end()); } 234s 1949: # 1463 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: pop_back() 234s 1949: { --this->_M_impl._M_finish; } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: 234s 1949: erase(const_iterator __position) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return _M_erase(__position._M_const_cast()); } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: 234s 1949: erase(const_iterator __first, const_iterator __last) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: resize(size_type __new_size, bool __x = bool()) 234s 1949: { 234s 1949: if (__new_size < size()) 234s 1949: _M_erase_at_end(begin() + difference_type(__new_size)); 234s 1949: else 234s 1949: insert(end(), __new_size - size(), __x); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: shrink_to_fit() 234s 1949: { _M_shrink_to_fit(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: flip() noexcept 234s 1949: { 234s 1949: _Bit_type * const __end = this->_M_impl._M_end_addr(); 234s 1949: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) 234s 1949: *__p = ~*__p; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { _M_erase_at_end(begin()); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: 234s 1949: emplace_back(_Args&&... __args) 234s 1949: { 234s 1949: push_back(bool(std::forward<_Args>(__args)...)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: iterator 234s 1949: emplace(const_iterator __pos, _Args&&... __args) 234s 1949: { return insert(__pos, bool(std::forward<_Args>(__args)...)); } 234s 1949: 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: _M_copy_aligned(const_iterator __first, const_iterator __last, 234s 1949: iterator __result) 234s 1949: { 234s 1949: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); 234s 1949: return std::copy(const_iterator(__last._M_p, 0), __last, 234s 1949: iterator(__q, 0)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_initialize(size_type __n) 234s 1949: { 234s 1949: if (__n) 234s 1949: { 234s 1949: _Bit_pointer __q = this->_M_allocate(__n); 234s 1949: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 234s 1949: iterator __start = iterator(std::__addressof(*__q), 0); 234s 1949: this->_M_impl._M_start = __start; 234s 1949: this->_M_impl._M_finish = __start + difference_type(__n); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_initialize_value(bool __x) noexcept 234s 1949: { 234s 1949: if (_Bit_type* __p = this->_M_impl._M_start._M_p) 234s 1949: __fill_bvector_n(__p, this->_M_impl._M_end_addr() - __p, __x); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_reallocate(size_type __n); 234s 1949: 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: _M_shrink_to_fit(); 234s 1949: # 1603 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_initialize_range(_InputIterator __first, _InputIterator __last, 234s 1949: std::input_iterator_tag) 234s 1949: { 234s 1949: for (; __first != __last; ++__first) 234s 1949: push_back(*__first); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: std::forward_iterator_tag) 234s 1949: { 234s 1949: const size_type __n = std::distance(__first, __last); 234s 1949: _M_initialize(__n); 234s 1949: std::copy(__first, __last, begin()); 234s 1949: } 234s 1949: # 1639 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: _M_fill_assign(size_t __n, bool __x) 234s 1949: { 234s 1949: if (__n > size()) 234s 1949: { 234s 1949: _M_initialize_value(__x); 234s 1949: insert(end(), __n - size(), __x); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: _M_erase_at_end(begin() + __n); 234s 1949: _M_initialize_value(__x); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_assign_aux(_InputIterator __first, _InputIterator __last, 234s 1949: std::input_iterator_tag) 234s 1949: { 234s 1949: iterator __cur = begin(); 234s 1949: for (; __first != __last && __cur != end(); ++__cur, (void)++__first) 234s 1949: *__cur = *__first; 234s 1949: if (__first == __last) 234s 1949: _M_erase_at_end(__cur); 234s 1949: else 234s 1949: insert(end(), __first, __last); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: std::forward_iterator_tag) 234s 1949: { 234s 1949: const size_type __len = std::distance(__first, __last); 234s 1949: if (__len < size()) 234s 1949: _M_erase_at_end(std::copy(__first, __last, begin())); 234s 1949: else 234s 1949: { 234s 1949: _ForwardIterator __mid = __first; 234s 1949: std::advance(__mid, size()); 234s 1949: std::copy(__first, __mid, begin()); 234s 1949: insert(end(), __mid, __last); 234s 1949: } 234s 1949: } 234s 1949: # 1706 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: 234s 1949: void 234s 1949: _M_fill_insert(iterator __position, size_type __n, bool __x); 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_insert_range(iterator __pos, _InputIterator __first, 234s 1949: _InputIterator __last, std::input_iterator_tag) 234s 1949: { 234s 1949: for (; __first != __last; ++__first) 234s 1949: { 234s 1949: __pos = insert(__pos, *__first); 234s 1949: ++__pos; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_insert_range(iterator __position, _ForwardIterator __first, 234s 1949: _ForwardIterator __last, std::forward_iterator_tag); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_insert_aux(iterator __position, bool __x); 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: _M_check_len(size_type __n, const char* __s) const 234s 1949: { 234s 1949: if (max_size() - size() < __n) 234s 1949: __throw_length_error((__s)); 234s 1949: 234s 1949: const size_type __len = size() + std::max(size(), __n); 234s 1949: return (__len < size() || __len > max_size()) ? max_size() : __len; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_erase_at_end(iterator __pos) 234s 1949: { this->_M_impl._M_finish = __pos; } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: _M_erase(iterator __pos); 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: _M_erase(iterator __first, iterator __last); 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void data() = delete; 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline void 234s 1949: __fill_bvector(_Bit_type* __v, unsigned int __first, unsigned int __last, 234s 1949: bool __x) noexcept 234s 1949: { 234s 1949: const _Bit_type __fmask = ~0ul << __first; 234s 1949: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); 234s 1949: const _Bit_type __mask = __fmask & __lmask; 234s 1949: 234s 1949: if (__x) 234s 1949: *__v |= __mask; 234s 1949: else 234s 1949: *__v &= ~__mask; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: __attribute__((__nonnull__)) 234s 1949: 234s 1949: inline void 234s 1949: __fill_bvector_n(_Bit_type* __p, size_t __n, bool __x) noexcept 234s 1949: { 234s 1949: # 1802 "/usr/include/c++/15/bits/stl_bvector.h" 3 4 234s 1949: __builtin_memset(__p, __x ? ~0 : 0, __n * sizeof(_Bit_type)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline void 234s 1949: __fill_a1(std::_Bit_iterator __first, 234s 1949: std::_Bit_iterator __last, const bool& __x) 234s 1949: { 234s 1949: if (__first._M_p != __last._M_p) 234s 1949: { 234s 1949: _Bit_type* __first_p = __first._M_p; 234s 1949: if (__first._M_offset != 0) 234s 1949: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); 234s 1949: 234s 1949: __fill_bvector_n(__first_p, __last._M_p - __first_p, __x); 234s 1949: 234s 1949: if (__last._M_offset != 0) 234s 1949: __fill_bvector(__last._M_p, 0, __last._M_offset, __x); 234s 1949: } 234s 1949: else if (__first._M_offset != __last._M_offset) 234s 1949: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct hash> 234s 1949: : public __hash_base> 234s 1949: { 234s 1949: size_t 234s 1949: operator()(const std::vector&) const noexcept; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 70 "/usr/include/c++/15/vector" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/vector.tcc" 1 3 4 234s 1949: # 59 "/usr/include/c++/15/bits/vector.tcc" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: reserve(size_type __n) 234s 1949: { 234s 1949: if (__n > this->max_size()) 234s 1949: __throw_length_error(("vector::reserve")); 234s 1949: if (this->capacity() < __n) 234s 1949: { 234s 1949: const size_type __old_size = size(); 234s 1949: pointer __tmp; 234s 1949: 234s 1949: if (_S_use_relocate()) 234s 1949: { 234s 1949: __tmp = this->_M_allocate(__n); 234s 1949: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 234s 1949: __tmp, _M_get_Tp_allocator()); 234s 1949: } 234s 1949: else 234s 1949: 234s 1949: { 234s 1949: __tmp = _M_allocate_and_copy(__n, 234s 1949: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), 234s 1949: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); 234s 1949: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: } 234s 1949: ; 234s 1949: _M_deallocate(this->_M_impl._M_start, 234s 1949: this->_M_impl._M_end_of_storage 234s 1949: - this->_M_impl._M_start); 234s 1949: this->_M_impl._M_start = __tmp; 234s 1949: this->_M_impl._M_finish = __tmp + __old_size; 234s 1949: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: emplace_back(_Args&&... __args) 234s 1949: { 234s 1949: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 234s 1949: { 234s 1949: ; 234s 1949: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 234s 1949: std::forward<_Args>(__args)...); 234s 1949: ++this->_M_impl._M_finish; 234s 1949: ; 234s 1949: } 234s 1949: else 234s 1949: _M_realloc_append(std::forward<_Args>(__args)...); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename vector<_Tp, _Alloc>::iterator 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: 234s 1949: insert(const_iterator __position, const value_type& __x) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: const size_type __n = __position - begin(); 234s 1949: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__position != const_iterator())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: if (!(__position != const_iterator())) 234s 1949: __builtin_unreachable(); 234s 1949: 234s 1949: if (__position == end()) 234s 1949: { 234s 1949: ; 234s 1949: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 234s 1949: __x); 234s 1949: ++this->_M_impl._M_finish; 234s 1949: ; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: const auto __pos = begin() + (__position - cbegin()); 234s 1949: 234s 1949: 234s 1949: _Temporary_value __x_copy(this, __x); 234s 1949: _M_insert_aux(__pos, std::move(__x_copy._M_val())); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: 234s 1949: _M_realloc_insert(begin() + (__position - cbegin()), __x); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return iterator(this->_M_impl._M_start + __n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename vector<_Tp, _Alloc>::iterator 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_erase(iterator __position) 234s 1949: { 234s 1949: if (__position + 1 != end()) 234s 1949: std::move(__position + 1, end(), __position); 234s 1949: --this->_M_impl._M_finish; 234s 1949: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 234s 1949: ; 234s 1949: return __position; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename vector<_Tp, _Alloc>::iterator 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_erase(iterator __first, iterator __last) 234s 1949: { 234s 1949: if (__first != __last) 234s 1949: { 234s 1949: if (__last != end()) 234s 1949: std::move(__last, end(), __first); 234s 1949: _M_erase_at_end(__first.base() + (end() - __last)); 234s 1949: } 234s 1949: return __first; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: vector<_Tp, _Alloc>& 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: operator=(const vector<_Tp, _Alloc>& __x) 234s 1949: { 234s 1949: if (std::__addressof(__x) != this) 234s 1949: { 234s 1949: ; 234s 1949: 234s 1949: if (_Alloc_traits::_S_propagate_on_copy_assign()) 234s 1949: { 234s 1949: if (!_Alloc_traits::_S_always_equal() 234s 1949: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) 234s 1949: { 234s 1949: 234s 1949: this->clear(); 234s 1949: _M_deallocate(this->_M_impl._M_start, 234s 1949: this->_M_impl._M_end_of_storage 234s 1949: - this->_M_impl._M_start); 234s 1949: this->_M_impl._M_start = nullptr; 234s 1949: this->_M_impl._M_finish = nullptr; 234s 1949: this->_M_impl._M_end_of_storage = nullptr; 234s 1949: } 234s 1949: std::__alloc_on_copy(_M_get_Tp_allocator(), 234s 1949: __x._M_get_Tp_allocator()); 234s 1949: } 234s 1949: 234s 1949: const size_type __xlen = __x.size(); 234s 1949: if (__xlen > capacity()) 234s 1949: { 234s 1949: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), 234s 1949: __x.end()); 234s 1949: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: _M_deallocate(this->_M_impl._M_start, 234s 1949: this->_M_impl._M_end_of_storage 234s 1949: - this->_M_impl._M_start); 234s 1949: this->_M_impl._M_start = __tmp; 234s 1949: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; 234s 1949: } 234s 1949: else if (size() >= __xlen) 234s 1949: { 234s 1949: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), 234s 1949: end(), _M_get_Tp_allocator()); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), 234s 1949: this->_M_impl._M_start); 234s 1949: std::__uninitialized_copy_a(__x._M_impl._M_start + size(), 234s 1949: __x._M_impl._M_finish, 234s 1949: this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: } 234s 1949: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_fill_assign(size_t __n, const value_type& __val) 234s 1949: { 234s 1949: const size_type __sz = size(); 234s 1949: if (__n > capacity()) 234s 1949: { 234s 1949: if (__n <= __sz) 234s 1949: __builtin_unreachable(); 234s 1949: vector __tmp(__n, __val, _M_get_Tp_allocator()); 234s 1949: __tmp._M_impl._M_swap_data(this->_M_impl); 234s 1949: } 234s 1949: else if (__n > __sz) 234s 1949: { 234s 1949: std::fill(begin(), end(), __val); 234s 1949: const size_type __add = __n - __sz; 234s 1949: ; 234s 1949: this->_M_impl._M_finish = 234s 1949: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 234s 1949: __add, __val, _M_get_Tp_allocator()); 234s 1949: ; 234s 1949: } 234s 1949: else 234s 1949: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_assign_aux(_InputIterator __first, _InputIterator __last, 234s 1949: std::input_iterator_tag) 234s 1949: { 234s 1949: pointer __cur(this->_M_impl._M_start); 234s 1949: for (; __first != __last && __cur != this->_M_impl._M_finish; 234s 1949: ++__cur, (void)++__first) 234s 1949: *__cur = *__first; 234s 1949: if (__first == __last) 234s 1949: _M_erase_at_end(__cur); 234s 1949: else 234s 1949: _M_range_insert(end(), __first, __last, 234s 1949: std::__iterator_category(__first)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 234s 1949: std::forward_iterator_tag) 234s 1949: { 234s 1949: const size_type __sz = size(); 234s 1949: const size_type __len = std::distance(__first, __last); 234s 1949: 234s 1949: if (__len > capacity()) 234s 1949: { 234s 1949: if (__len <= __sz) 234s 1949: __builtin_unreachable(); 234s 1949: 234s 1949: _S_check_init_len(__len, _M_get_Tp_allocator()); 234s 1949: pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); 234s 1949: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: ; 234s 1949: _M_deallocate(this->_M_impl._M_start, 234s 1949: this->_M_impl._M_end_of_storage 234s 1949: - this->_M_impl._M_start); 234s 1949: this->_M_impl._M_start = __tmp; 234s 1949: this->_M_impl._M_finish = this->_M_impl._M_start + __len; 234s 1949: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; 234s 1949: } 234s 1949: else if (__sz >= __len) 234s 1949: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); 234s 1949: else 234s 1949: { 234s 1949: _ForwardIterator __mid = __first; 234s 1949: std::advance(__mid, __sz); 234s 1949: std::copy(__first, __mid, this->_M_impl._M_start); 234s 1949: const size_type __attribute__((__unused__)) __n = __len - __sz; 234s 1949: ; 234s 1949: this->_M_impl._M_finish = 234s 1949: std::__uninitialized_copy_a(__mid, __last, 234s 1949: this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: ; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: auto 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator 234s 1949: { 234s 1949: const auto __n = __position - cbegin(); 234s 1949: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 234s 1949: if (__position == cend()) 234s 1949: { 234s 1949: ; 234s 1949: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 234s 1949: std::move(__v)); 234s 1949: ++this->_M_impl._M_finish; 234s 1949: ; 234s 1949: } 234s 1949: else 234s 1949: _M_insert_aux(begin() + __n, std::move(__v)); 234s 1949: else 234s 1949: _M_realloc_insert(begin() + __n, std::move(__v)); 234s 1949: 234s 1949: return iterator(this->_M_impl._M_start + __n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: auto 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_emplace_aux(const_iterator __position, _Args&&... __args) 234s 1949: -> iterator 234s 1949: { 234s 1949: const auto __n = __position - cbegin(); 234s 1949: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 234s 1949: if (__position == cend()) 234s 1949: { 234s 1949: ; 234s 1949: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 234s 1949: std::forward<_Args>(__args)...); 234s 1949: ++this->_M_impl._M_finish; 234s 1949: ; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Temporary_value __tmp(this, std::forward<_Args>(__args)...); 234s 1949: _M_insert_aux(begin() + __n, std::move(__tmp._M_val())); 234s 1949: } 234s 1949: else 234s 1949: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...); 234s 1949: 234s 1949: return iterator(this->_M_impl._M_start + __n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_insert_aux(iterator __position, _Arg&& __arg) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: ; 234s 1949: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 234s 1949: std::move(*(this->_M_impl._M_finish - 1))); 234s 1949: ++this->_M_impl._M_finish; 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: 234s 1949: 234s 1949: *__position = std::forward<_Arg>(__arg); 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_realloc_insert(iterator __position, _Args&&... __args) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: const size_type __len = _M_check_len(1u, "vector::_M_realloc_insert"); 234s 1949: if (__len <= 0) 234s 1949: __builtin_unreachable (); 234s 1949: pointer __old_start = this->_M_impl._M_start; 234s 1949: pointer __old_finish = this->_M_impl._M_finish; 234s 1949: const size_type __elems_before = __position - begin(); 234s 1949: pointer __new_start(this->_M_allocate(__len)); 234s 1949: pointer __new_finish(__new_start); 234s 1949: 234s 1949: { 234s 1949: _Guard_alloc __guard(__new_start, __len, *this); 234s 1949: # 481 "/usr/include/c++/15/bits/vector.tcc" 3 4 234s 1949: _Alloc_traits::construct(this->_M_impl, 234s 1949: std::__to_address(__new_start + __elems_before), 234s 1949: std::forward<_Args>(__args)...); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (_S_use_relocate()) 234s 1949: { 234s 1949: 234s 1949: __new_finish = _S_relocate(__old_start, __position.base(), 234s 1949: __new_start, _M_get_Tp_allocator()); 234s 1949: ++__new_finish; 234s 1949: __new_finish = _S_relocate(__position.base(), __old_finish, 234s 1949: __new_finish, _M_get_Tp_allocator()); 234s 1949: } 234s 1949: else 234s 1949: 234s 1949: { 234s 1949: 234s 1949: struct _Guard_elts 234s 1949: { 234s 1949: pointer _M_first, _M_last; 234s 1949: _Tp_alloc_type& _M_alloc; 234s 1949: 234s 1949: 234s 1949: _Guard_elts(pointer __elt, _Tp_alloc_type& __a) 234s 1949: : _M_first(__elt), _M_last(__elt + 1), _M_alloc(__a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: ~_Guard_elts() 234s 1949: { std::_Destroy(_M_first, _M_last, _M_alloc); } 234s 1949: 234s 1949: private: 234s 1949: _Guard_elts(const _Guard_elts&); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: _Guard_elts __guard_elts(__new_start + __elems_before, _M_impl); 234s 1949: 234s 1949: __new_finish = std::__uninitialized_move_if_noexcept_a( 234s 1949: __old_start, __position.base(), 234s 1949: __new_start, _M_get_Tp_allocator()); 234s 1949: 234s 1949: ++__new_finish; 234s 1949: 234s 1949: __guard_elts._M_first = __new_start; 234s 1949: 234s 1949: __new_finish = std::__uninitialized_move_if_noexcept_a( 234s 1949: __position.base(), __old_finish, 234s 1949: __new_finish, _M_get_Tp_allocator()); 234s 1949: 234s 1949: 234s 1949: __guard_elts._M_first = __old_start; 234s 1949: __guard_elts._M_last = __old_finish; 234s 1949: } 234s 1949: __guard._M_storage = __old_start; 234s 1949: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: this->_M_impl._M_start = __new_start; 234s 1949: this->_M_impl._M_finish = __new_finish; 234s 1949: this->_M_impl._M_end_of_storage = __new_start + __len; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_realloc_append(_Args&&... __args) 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: const size_type __len = _M_check_len(1u, "vector::_M_realloc_append"); 234s 1949: if (__len <= 0) 234s 1949: __builtin_unreachable (); 234s 1949: pointer __old_start = this->_M_impl._M_start; 234s 1949: pointer __old_finish = this->_M_impl._M_finish; 234s 1949: const size_type __elems = end() - begin(); 234s 1949: pointer __new_start(this->_M_allocate(__len)); 234s 1949: pointer __new_finish(__new_start); 234s 1949: 234s 1949: { 234s 1949: _Guard_alloc __guard(__new_start, __len, *this); 234s 1949: # 586 "/usr/include/c++/15/bits/vector.tcc" 3 4 234s 1949: _Alloc_traits::construct(this->_M_impl, 234s 1949: std::__to_address(__new_start + __elems), 234s 1949: std::forward<_Args>(__args)...); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (_S_use_relocate()) 234s 1949: { 234s 1949: 234s 1949: __new_finish = _S_relocate(__old_start, __old_finish, 234s 1949: __new_start, _M_get_Tp_allocator()); 234s 1949: ++__new_finish; 234s 1949: } 234s 1949: else 234s 1949: 234s 1949: { 234s 1949: 234s 1949: struct _Guard_elts 234s 1949: { 234s 1949: pointer _M_first, _M_last; 234s 1949: _Tp_alloc_type& _M_alloc; 234s 1949: 234s 1949: 234s 1949: _Guard_elts(pointer __elt, _Tp_alloc_type& __a) 234s 1949: : _M_first(__elt), _M_last(__elt + 1), _M_alloc(__a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: ~_Guard_elts() 234s 1949: { std::_Destroy(_M_first, _M_last, _M_alloc); } 234s 1949: 234s 1949: private: 234s 1949: _Guard_elts(const _Guard_elts&); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: _Guard_elts __guard_elts(__new_start + __elems, _M_impl); 234s 1949: 234s 1949: __new_finish = std::__uninitialized_move_if_noexcept_a( 234s 1949: __old_start, __old_finish, 234s 1949: __new_start, _M_get_Tp_allocator()); 234s 1949: 234s 1949: ++__new_finish; 234s 1949: 234s 1949: 234s 1949: __guard_elts._M_first = __old_start; 234s 1949: __guard_elts._M_last = __old_finish; 234s 1949: } 234s 1949: __guard._M_storage = __old_start; 234s 1949: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: this->_M_impl._M_start = __new_start; 234s 1949: this->_M_impl._M_finish = __new_finish; 234s 1949: this->_M_impl._M_end_of_storage = __new_start + __len; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_fill_insert(iterator __position, size_type __n, const value_type& __x) 234s 1949: { 234s 1949: if (__n != 0) 234s 1949: { 234s 1949: if (size_type(this->_M_impl._M_end_of_storage 234s 1949: - this->_M_impl._M_finish) >= __n) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Temporary_value __tmp(this, __x); 234s 1949: value_type& __x_copy = __tmp._M_val(); 234s 1949: 234s 1949: const size_type __elems_after = end() - __position; 234s 1949: pointer __old_finish(this->_M_impl._M_finish); 234s 1949: if (__elems_after > __n) 234s 1949: { 234s 1949: ; 234s 1949: std::__uninitialized_move_a(__old_finish - __n, 234s 1949: __old_finish, 234s 1949: __old_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: this->_M_impl._M_finish += __n; 234s 1949: ; 234s 1949: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 234s 1949: ; 234s 1949: std::fill(__position.base(), __position.base() + __n, 234s 1949: __x_copy); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: ; 234s 1949: this->_M_impl._M_finish = 234s 1949: std::__uninitialized_fill_n_a(__old_finish, 234s 1949: __n - __elems_after, 234s 1949: __x_copy, 234s 1949: _M_get_Tp_allocator()); 234s 1949: ; 234s 1949: std::__uninitialized_move_a(__position.base(), __old_finish, 234s 1949: this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: this->_M_impl._M_finish += __elems_after; 234s 1949: ; 234s 1949: std::fill(__position.base(), __old_finish, __x_copy); 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: pointer __old_start = this->_M_impl._M_start; 234s 1949: pointer __old_finish = this->_M_impl._M_finish; 234s 1949: const pointer __pos = __position.base(); 234s 1949: 234s 1949: const size_type __len = 234s 1949: _M_check_len(__n, "vector::_M_fill_insert"); 234s 1949: const size_type __elems_before = __pos - __old_start; 234s 1949: pointer __new_start(this->_M_allocate(__len)); 234s 1949: pointer __new_finish(__new_start); 234s 1949: try 234s 1949: { 234s 1949: 234s 1949: std::__uninitialized_fill_n_a(__new_start + __elems_before, 234s 1949: __n, __x, 234s 1949: _M_get_Tp_allocator()); 234s 1949: __new_finish = pointer(); 234s 1949: 234s 1949: __new_finish 234s 1949: = std::__uninitialized_move_if_noexcept_a 234s 1949: (__old_start, __pos, __new_start, _M_get_Tp_allocator()); 234s 1949: 234s 1949: __new_finish += __n; 234s 1949: 234s 1949: __new_finish 234s 1949: = std::__uninitialized_move_if_noexcept_a 234s 1949: (__pos, __old_finish, __new_finish, _M_get_Tp_allocator()); 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: if (!__new_finish) 234s 1949: std::_Destroy(__new_start + __elems_before, 234s 1949: __new_start + __elems_before + __n, 234s 1949: _M_get_Tp_allocator()); 234s 1949: else 234s 1949: std::_Destroy(__new_start, __new_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: _M_deallocate(__new_start, __len); 234s 1949: throw; 234s 1949: } 234s 1949: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); 234s 1949: ; 234s 1949: _M_deallocate(__old_start, 234s 1949: this->_M_impl._M_end_of_storage - __old_start); 234s 1949: this->_M_impl._M_start = __new_start; 234s 1949: this->_M_impl._M_finish = __new_finish; 234s 1949: this->_M_impl._M_end_of_storage = __new_start + __len; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_default_append(size_type __n) 234s 1949: { 234s 1949: if (__n != 0) 234s 1949: { 234s 1949: const size_type __size = size(); 234s 1949: size_type __navail = size_type(this->_M_impl._M_end_of_storage 234s 1949: - this->_M_impl._M_finish); 234s 1949: 234s 1949: if (__size > max_size() || __navail > max_size() - __size) 234s 1949: __builtin_unreachable(); 234s 1949: 234s 1949: if (__navail >= __n) 234s 1949: { 234s 1949: if (!this->_M_impl._M_finish) 234s 1949: __builtin_unreachable(); 234s 1949: 234s 1949: ; 234s 1949: this->_M_impl._M_finish = 234s 1949: std::__uninitialized_default_n_a(this->_M_impl._M_finish, 234s 1949: __n, _M_get_Tp_allocator()); 234s 1949: ; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: pointer __old_start = this->_M_impl._M_start; 234s 1949: pointer __old_finish = this->_M_impl._M_finish; 234s 1949: 234s 1949: const size_type __len = 234s 1949: _M_check_len(__n, "vector::_M_default_append"); 234s 1949: pointer __new_start(this->_M_allocate(__len)); 234s 1949: 234s 1949: { 234s 1949: _Guard_alloc __guard(__new_start, __len, *this); 234s 1949: 234s 1949: std::__uninitialized_default_n_a(__new_start + __size, __n, 234s 1949: _M_get_Tp_allocator()); 234s 1949: 234s 1949: if (_S_use_relocate()) 234s 1949: { 234s 1949: _S_relocate(__old_start, __old_finish, 234s 1949: __new_start, _M_get_Tp_allocator()); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: struct _Guard_elts 234s 1949: { 234s 1949: pointer _M_first, _M_last; 234s 1949: _Tp_alloc_type& _M_alloc; 234s 1949: 234s 1949: 234s 1949: _Guard_elts(pointer __first, size_type __n, 234s 1949: _Tp_alloc_type& __a) 234s 1949: : _M_first(__first), _M_last(__first + __n), _M_alloc(__a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: ~_Guard_elts() 234s 1949: { std::_Destroy(_M_first, _M_last, _M_alloc); } 234s 1949: 234s 1949: private: 234s 1949: _Guard_elts(const _Guard_elts&); 234s 1949: }; 234s 1949: _Guard_elts __guard_elts(__new_start + __size, __n, _M_impl); 234s 1949: 234s 1949: std::__uninitialized_move_if_noexcept_a( 234s 1949: __old_start, __old_finish, __new_start, 234s 1949: _M_get_Tp_allocator()); 234s 1949: 234s 1949: __guard_elts._M_first = __old_start; 234s 1949: __guard_elts._M_last = __old_finish; 234s 1949: } 234s 1949: ; 234s 1949: __guard._M_storage = __old_start; 234s 1949: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: this->_M_impl._M_start = __new_start; 234s 1949: this->_M_impl._M_finish = __new_start + __size + __n; 234s 1949: this->_M_impl._M_end_of_storage = __new_start + __len; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_shrink_to_fit() 234s 1949: { 234s 1949: if (capacity() == size()) 234s 1949: return false; 234s 1949: ; 234s 1949: return std::__shrink_to_fit_aux::_S_do_it(*this); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_range_insert(iterator __pos, _InputIterator __first, 234s 1949: _InputIterator __last, std::input_iterator_tag) 234s 1949: { 234s 1949: if (__pos == end()) 234s 1949: { 234s 1949: for (; __first != __last; ++__first) 234s 1949: insert(end(), *__first); 234s 1949: } 234s 1949: else if (__first != __last) 234s 1949: { 234s 1949: vector __tmp(__first, __last, _M_get_Tp_allocator()); 234s 1949: insert(__pos, 234s 1949: std::make_move_iterator(__tmp.begin()), 234s 1949: std::make_move_iterator(__tmp.end())); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector<_Tp, _Alloc>:: 234s 1949: _M_range_insert(iterator __position, _ForwardIterator __first, 234s 1949: _ForwardIterator __last, std::forward_iterator_tag) 234s 1949: { 234s 1949: if (__first != __last) 234s 1949: { 234s 1949: const size_type __n = std::distance(__first, __last); 234s 1949: if (size_type(this->_M_impl._M_end_of_storage 234s 1949: - this->_M_impl._M_finish) >= __n) 234s 1949: { 234s 1949: const size_type __elems_after = end() - __position; 234s 1949: pointer __old_finish(this->_M_impl._M_finish); 234s 1949: if (__elems_after > __n) 234s 1949: { 234s 1949: ; 234s 1949: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 234s 1949: this->_M_impl._M_finish, 234s 1949: this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: this->_M_impl._M_finish += __n; 234s 1949: ; 234s 1949: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 234s 1949: ; 234s 1949: std::copy(__first, __last, __position); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: _ForwardIterator __mid = __first; 234s 1949: std::advance(__mid, __elems_after); 234s 1949: ; 234s 1949: std::__uninitialized_copy_a(__mid, __last, 234s 1949: this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: this->_M_impl._M_finish += __n - __elems_after; 234s 1949: ; 234s 1949: std::__uninitialized_move_a(__position.base(), 234s 1949: __old_finish, 234s 1949: this->_M_impl._M_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: this->_M_impl._M_finish += __elems_after; 234s 1949: ; 234s 1949: std::copy(__first, __mid, __position); 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: pointer __old_start = this->_M_impl._M_start; 234s 1949: pointer __old_finish = this->_M_impl._M_finish; 234s 1949: 234s 1949: const size_type __len = 234s 1949: _M_check_len(__n, "vector::_M_range_insert"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: pointer __new_start(this->_M_allocate(__len)); 234s 1949: pointer __new_finish(__new_start); 234s 1949: try 234s 1949: { 234s 1949: __new_finish 234s 1949: = std::__uninitialized_move_if_noexcept_a 234s 1949: (__old_start, __position.base(), 234s 1949: __new_start, _M_get_Tp_allocator()); 234s 1949: __new_finish 234s 1949: = std::__uninitialized_copy_a(__first, __last, 234s 1949: __new_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: __new_finish 234s 1949: = std::__uninitialized_move_if_noexcept_a 234s 1949: (__position.base(), __old_finish, 234s 1949: __new_finish, _M_get_Tp_allocator()); 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: std::_Destroy(__new_start, __new_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: _M_deallocate(__new_start, __len); 234s 1949: throw; 234s 1949: } 234s 1949: std::_Destroy(__old_start, __old_finish, 234s 1949: _M_get_Tp_allocator()); 234s 1949: ; 234s 1949: _M_deallocate(__old_start, 234s 1949: this->_M_impl._M_end_of_storage - __old_start); 234s 1949: this->_M_impl._M_start = __new_start; 234s 1949: this->_M_impl._M_finish = __new_finish; 234s 1949: this->_M_impl._M_end_of_storage = __new_start + __len; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: # 1109 "/usr/include/c++/15/bits/vector.tcc" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector:: 234s 1949: _M_reallocate(size_type __n) 234s 1949: { 234s 1949: const iterator __begin = begin(), __end = end(); 234s 1949: if (size_type(__end - __begin) > __n) 234s 1949: __builtin_unreachable(); 234s 1949: _Bit_pointer __q = this->_M_allocate(__n); 234s 1949: iterator __start(std::__addressof(*__q), 0); 234s 1949: iterator __finish(_M_copy_aligned(__begin, __end, __start)); 234s 1949: this->_M_deallocate(); 234s 1949: this->_M_impl._M_start = __start; 234s 1949: this->_M_impl._M_finish = __finish; 234s 1949: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector:: 234s 1949: _M_fill_insert(iterator __position, size_type __n, bool __x) 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: return; 234s 1949: if (capacity() - size() >= __n) 234s 1949: { 234s 1949: std::copy_backward(__position, end(), 234s 1949: this->_M_impl._M_finish + difference_type(__n)); 234s 1949: std::fill(__position, __position + difference_type(__n), __x); 234s 1949: this->_M_impl._M_finish += difference_type(__n); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: const size_type __len = 234s 1949: _M_check_len(__n, "vector::_M_fill_insert"); 234s 1949: iterator __begin = begin(), __end = end(); 234s 1949: _Bit_pointer __q = this->_M_allocate(__len); 234s 1949: iterator __start(std::__addressof(*__q), 0); 234s 1949: iterator __i = _M_copy_aligned(__begin, __position, __start); 234s 1949: std::fill(__i, __i + difference_type(__n), __x); 234s 1949: iterator __finish = std::copy(__position, __end, 234s 1949: __i + difference_type(__n)); 234s 1949: this->_M_deallocate(); 234s 1949: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 234s 1949: this->_M_impl._M_start = __start; 234s 1949: this->_M_impl._M_finish = __finish; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector:: 234s 1949: _M_insert_range(iterator __position, _ForwardIterator __first, 234s 1949: _ForwardIterator __last, std::forward_iterator_tag) 234s 1949: { 234s 1949: if (__first != __last) 234s 1949: { 234s 1949: size_type __n = std::distance(__first, __last); 234s 1949: if (capacity() - size() >= __n) 234s 1949: { 234s 1949: std::copy_backward(__position, end(), 234s 1949: this->_M_impl._M_finish 234s 1949: + difference_type(__n)); 234s 1949: std::copy(__first, __last, __position); 234s 1949: this->_M_impl._M_finish += difference_type(__n); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: const size_type __len = 234s 1949: _M_check_len(__n, "vector::_M_insert_range"); 234s 1949: const iterator __begin = begin(), __end = end(); 234s 1949: _Bit_pointer __q = this->_M_allocate(__len); 234s 1949: iterator __start(std::__addressof(*__q), 0); 234s 1949: iterator __i = _M_copy_aligned(__begin, __position, __start); 234s 1949: __i = std::copy(__first, __last, __i); 234s 1949: iterator __finish = std::copy(__position, __end, __i); 234s 1949: this->_M_deallocate(); 234s 1949: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 234s 1949: this->_M_impl._M_start = __start; 234s 1949: this->_M_impl._M_finish = __finish; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: vector:: 234s 1949: _M_insert_aux(iterator __position, bool __x) 234s 1949: { 234s 1949: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 234s 1949: { 234s 1949: std::copy_backward(__position, this->_M_impl._M_finish, 234s 1949: this->_M_impl._M_finish + 1); 234s 1949: *__position = __x; 234s 1949: ++this->_M_impl._M_finish; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: const size_type __len = 234s 1949: _M_check_len(size_type(1), "vector::_M_insert_aux"); 234s 1949: _Bit_pointer __q = this->_M_allocate(__len); 234s 1949: iterator __start(std::__addressof(*__q), 0); 234s 1949: iterator __i = _M_copy_aligned(begin(), __position, __start); 234s 1949: *__i++ = __x; 234s 1949: iterator __finish = std::copy(__position, end(), __i); 234s 1949: this->_M_deallocate(); 234s 1949: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 234s 1949: this->_M_impl._M_start = __start; 234s 1949: this->_M_impl._M_finish = __finish; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename vector::iterator 234s 1949: vector:: 234s 1949: _M_erase(iterator __position) 234s 1949: { 234s 1949: if (__position + 1 != end()) 234s 1949: std::copy(__position + 1, end(), __position); 234s 1949: --this->_M_impl._M_finish; 234s 1949: return __position; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename vector::iterator 234s 1949: vector:: 234s 1949: _M_erase(iterator __first, iterator __last) 234s 1949: { 234s 1949: if (__first != __last) 234s 1949: _M_erase_at_end(std::copy(__last, end(), __first)); 234s 1949: return __first; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: bool 234s 1949: vector:: 234s 1949: _M_shrink_to_fit() 234s 1949: { 234s 1949: if (capacity() - size() < int(_S_word_bit)) 234s 1949: return false; 234s 1949: try 234s 1949: { 234s 1949: if (size_type __n = size()) 234s 1949: _M_reallocate(__n); 234s 1949: else 234s 1949: { 234s 1949: this->_M_deallocate(); 234s 1949: this->_M_impl._M_reset(); 234s 1949: } 234s 1949: return true; 234s 1949: } 234s 1949: catch(...) 234s 1949: { return false; } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: size_t 234s 1949: hash>:: 234s 1949: operator()(const std::vector& __b) const noexcept 234s 1949: { 234s 1949: size_t __hash = 0; 234s 1949: const size_t __words = __b.size() / _S_word_bit; 234s 1949: if (__words) 234s 1949: { 234s 1949: const size_t __clength = __words * sizeof(_Bit_type); 234s 1949: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); 234s 1949: } 234s 1949: 234s 1949: const size_t __extrabits = __b.size() % _S_word_bit; 234s 1949: if (__extrabits) 234s 1949: { 234s 1949: _Bit_type __hiword = *__b._M_impl._M_finish._M_p; 234s 1949: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); 234s 1949: 234s 1949: const size_t __clength 234s 1949: = (__extrabits + 8 - 1) / 8; 234s 1949: if (__words) 234s 1949: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); 234s 1949: else 234s 1949: __hash = std::_Hash_impl::hash(&__hiword, __clength); 234s 1949: } 234s 1949: 234s 1949: return __hash; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 75 "/usr/include/c++/15/vector" 2 3 4 234s 1949: # 88 "/usr/include/c++/15/vector" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 89 "/usr/include/c++/15/vector" 2 3 4 234s 1949: # 3171 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/atomic" 1 3 4 234s 1949: # 50 "/usr/include/c++/15/atomic" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 51 "/usr/include/c++/15/atomic" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/atomic_base.h" 1 3 4 234s 1949: # 39 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/atomic_lockfree_defines.h" 1 3 4 234s 1949: # 40 "/usr/include/c++/15/bits/atomic_base.h" 2 3 4 234s 1949: # 50 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 51 "/usr/include/c++/15/bits/atomic_base.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 82 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: enum memory_order : int 234s 1949: { 234s 1949: memory_order_relaxed, 234s 1949: memory_order_consume, 234s 1949: memory_order_acquire, 234s 1949: memory_order_release, 234s 1949: memory_order_acq_rel, 234s 1949: memory_order_seq_cst 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: enum __memory_order_modifier 234s 1949: { 234s 1949: __memory_order_mask = 0x0ffff, 234s 1949: __memory_order_modifier_mask = 0xffff0000, 234s 1949: __memory_order_hle_acquire = 0x10000, 234s 1949: __memory_order_hle_release = 0x20000 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: constexpr memory_order 234s 1949: operator|(memory_order __m, __memory_order_modifier __mod) noexcept 234s 1949: { 234s 1949: return memory_order(int(__m) | int(__mod)); 234s 1949: } 234s 1949: 234s 1949: constexpr memory_order 234s 1949: operator&(memory_order __m, __memory_order_modifier __mod) noexcept 234s 1949: { 234s 1949: return memory_order(int(__m) & int(__mod)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: constexpr memory_order 234s 1949: __cmpexch_failure_order2(memory_order __m) noexcept 234s 1949: { 234s 1949: return __m == memory_order_acq_rel ? memory_order_acquire 234s 1949: : __m == memory_order_release ? memory_order_relaxed : __m; 234s 1949: } 234s 1949: 234s 1949: constexpr memory_order 234s 1949: __cmpexch_failure_order(memory_order __m) noexcept 234s 1949: { 234s 1949: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) 234s 1949: | __memory_order_modifier(__m & __memory_order_modifier_mask)); 234s 1949: } 234s 1949: 234s 1949: constexpr bool 234s 1949: __is_valid_cmpexch_failure_order(memory_order __m) noexcept 234s 1949: { 234s 1949: return (__m & __memory_order_mask) != memory_order_release 234s 1949: && (__m & __memory_order_mask) != memory_order_acq_rel; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __atomic_base; 234s 1949: 234s 1949: 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) void 234s 1949: atomic_thread_fence(memory_order __m) noexcept 234s 1949: { __atomic_thread_fence(int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) void 234s 1949: atomic_signal_fence(memory_order __m) noexcept 234s 1949: { __atomic_signal_fence(int(__m)); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline _Tp 234s 1949: kill_dependency(_Tp __y) noexcept 234s 1949: { 234s 1949: _Tp __ret(__y); 234s 1949: return __ret; 234s 1949: } 234s 1949: # 172 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: template 234s 1949: struct atomic; 234s 1949: 234s 1949: template 234s 1949: struct atomic<_Tp*>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef bool __atomic_flag_data_type; 234s 1949: # 197 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: extern "C" { 234s 1949: 234s 1949: struct __atomic_flag_base 234s 1949: { 234s 1949: __atomic_flag_data_type _M_i ; 234s 1949: }; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct atomic_flag : public __atomic_flag_base 234s 1949: { 234s 1949: atomic_flag() noexcept = default; 234s 1949: ~atomic_flag() noexcept = default; 234s 1949: atomic_flag(const atomic_flag&) = delete; 234s 1949: atomic_flag& operator=(const atomic_flag&) = delete; 234s 1949: atomic_flag& operator=(const atomic_flag&) volatile = delete; 234s 1949: 234s 1949: 234s 1949: constexpr atomic_flag(bool __i) noexcept 234s 1949: : __atomic_flag_base{ _S_init(__i) } 234s 1949: { } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: test_and_set(memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: return __atomic_test_and_set (&_M_i, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: return __atomic_test_and_set (&_M_i, int(__m)); 234s 1949: } 234s 1949: # 281 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: inline __attribute__((__always_inline__)) void 234s 1949: clear(memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: memory_order __b __attribute__ ((__unused__)) 234s 1949: = __m & __memory_order_mask; 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: __atomic_clear (&_M_i, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) void 234s 1949: clear(memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: memory_order __b __attribute__ ((__unused__)) 234s 1949: = __m & __memory_order_mask; 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: __atomic_clear (&_M_i, int(__m)); 234s 1949: } 234s 1949: 234s 1949: private: 234s 1949: static constexpr __atomic_flag_data_type 234s 1949: _S_init(bool __i) 234s 1949: { return __i ? 1 : 0; } 234s 1949: }; 234s 1949: # 337 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: template 234s 1949: struct __atomic_base 234s 1949: { 234s 1949: using value_type = _ITp; 234s 1949: using difference_type = value_type; 234s 1949: 234s 1949: private: 234s 1949: typedef _ITp __int_type; 234s 1949: 234s 1949: static constexpr int _S_alignment = 234s 1949: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); 234s 1949: 234s 1949: alignas(_S_alignment) __int_type _M_i ; 234s 1949: 234s 1949: public: 234s 1949: __atomic_base() noexcept = default; 234s 1949: ~__atomic_base() noexcept = default; 234s 1949: __atomic_base(const __atomic_base&) = delete; 234s 1949: __atomic_base& operator=(const __atomic_base&) = delete; 234s 1949: __atomic_base& operator=(const __atomic_base&) volatile = delete; 234s 1949: 234s 1949: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } 234s 1949: 234s 1949: operator __int_type() const noexcept 234s 1949: { return load(); } 234s 1949: 234s 1949: operator __int_type() const volatile noexcept 234s 1949: { return load(); } 234s 1949: 234s 1949: __int_type 234s 1949: operator=(__int_type __i) noexcept 234s 1949: { 234s 1949: store(__i); 234s 1949: return __i; 234s 1949: } 234s 1949: 234s 1949: __int_type 234s 1949: operator=(__int_type __i) volatile noexcept 234s 1949: { 234s 1949: store(__i); 234s 1949: return __i; 234s 1949: } 234s 1949: 234s 1949: __int_type 234s 1949: operator++(int) noexcept 234s 1949: { return fetch_add(1); } 234s 1949: 234s 1949: __int_type 234s 1949: operator++(int) volatile noexcept 234s 1949: { return fetch_add(1); } 234s 1949: 234s 1949: __int_type 234s 1949: operator--(int) noexcept 234s 1949: { return fetch_sub(1); } 234s 1949: 234s 1949: __int_type 234s 1949: operator--(int) volatile noexcept 234s 1949: { return fetch_sub(1); } 234s 1949: 234s 1949: __int_type 234s 1949: operator++() noexcept 234s 1949: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator++() volatile noexcept 234s 1949: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator--() noexcept 234s 1949: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator--() volatile noexcept 234s 1949: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator+=(__int_type __i) noexcept 234s 1949: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator+=(__int_type __i) volatile noexcept 234s 1949: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator-=(__int_type __i) noexcept 234s 1949: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator-=(__int_type __i) volatile noexcept 234s 1949: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator&=(__int_type __i) noexcept 234s 1949: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator&=(__int_type __i) volatile noexcept 234s 1949: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator|=(__int_type __i) noexcept 234s 1949: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator|=(__int_type __i) volatile noexcept 234s 1949: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator^=(__int_type __i) noexcept 234s 1949: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __int_type 234s 1949: operator^=(__int_type __i) volatile noexcept 234s 1949: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 234s 1949: 234s 1949: bool 234s 1949: is_lock_free() const noexcept 234s 1949: { 234s 1949: 234s 1949: return __atomic_is_lock_free(sizeof(_M_i), 234s 1949: reinterpret_cast(-_S_alignment)); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: is_lock_free() const volatile noexcept 234s 1949: { 234s 1949: 234s 1949: return __atomic_is_lock_free(sizeof(_M_i), 234s 1949: reinterpret_cast(-_S_alignment)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) void 234s 1949: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: memory_order __b __attribute__ ((__unused__)) 234s 1949: = __m & __memory_order_mask; 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: __atomic_store_n(&_M_i, __i, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) void 234s 1949: store(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: memory_order __b __attribute__ ((__unused__)) 234s 1949: = __m & __memory_order_mask; 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: __atomic_store_n(&_M_i, __i, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: load(memory_order __m = memory_order_seq_cst) const noexcept 234s 1949: { 234s 1949: memory_order __b __attribute__ ((__unused__)) 234s 1949: = __m & __memory_order_mask; 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_load_n(&_M_i, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 234s 1949: { 234s 1949: memory_order __b __attribute__ ((__unused__)) 234s 1949: = __m & __memory_order_mask; 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_load_n(&_M_i, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: exchange(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: return __atomic_exchange_n(&_M_i, __i, int(__m)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: exchange(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: return __atomic_exchange_n(&_M_i, __i, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_weak(__int_type& __i1, __int_type __i2, 234s 1949: memory_order __m1, memory_order __m2) noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 234s 1949: int(__m1), int(__m2)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_weak(__int_type& __i1, __int_type __i2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) volatile noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 234s 1949: int(__m1), int(__m2)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_weak(__int_type& __i1, __int_type __i2, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: return compare_exchange_weak(__i1, __i2, __m, 234s 1949: __cmpexch_failure_order(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_weak(__int_type& __i1, __int_type __i2, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: return compare_exchange_weak(__i1, __i2, __m, 234s 1949: __cmpexch_failure_order(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_strong(__int_type& __i1, __int_type __i2, 234s 1949: memory_order __m1, memory_order __m2) noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 234s 1949: int(__m1), int(__m2)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_strong(__int_type& __i1, __int_type __i2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) volatile noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 234s 1949: int(__m1), int(__m2)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_strong(__int_type& __i1, __int_type __i2, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: return compare_exchange_strong(__i1, __i2, __m, 234s 1949: __cmpexch_failure_order(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_strong(__int_type& __i1, __int_type __i2, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: return compare_exchange_strong(__i1, __i2, __m, 234s 1949: __cmpexch_failure_order(__m)); 234s 1949: } 234s 1949: # 628 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: fetch_add(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: fetch_add(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: fetch_sub(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: fetch_sub(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: fetch_and(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: fetch_and(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: fetch_or(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: fetch_or(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: fetch_xor(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __int_type 234s 1949: fetch_xor(__int_type __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __atomic_base<_PTp*> 234s 1949: { 234s 1949: private: 234s 1949: typedef _PTp* __pointer_type; 234s 1949: 234s 1949: __pointer_type _M_p ; 234s 1949: 234s 1949: static constexpr ptrdiff_t 234s 1949: _S_type_size(ptrdiff_t __d) 234s 1949: { return __d * sizeof(_PTp); } 234s 1949: 234s 1949: public: 234s 1949: __atomic_base() noexcept = default; 234s 1949: ~__atomic_base() noexcept = default; 234s 1949: __atomic_base(const __atomic_base&) = delete; 234s 1949: __atomic_base& operator=(const __atomic_base&) = delete; 234s 1949: __atomic_base& operator=(const __atomic_base&) volatile = delete; 234s 1949: 234s 1949: 234s 1949: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } 234s 1949: 234s 1949: operator __pointer_type() const noexcept 234s 1949: { return load(); } 234s 1949: 234s 1949: operator __pointer_type() const volatile noexcept 234s 1949: { return load(); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator=(__pointer_type __p) noexcept 234s 1949: { 234s 1949: store(__p); 234s 1949: return __p; 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator=(__pointer_type __p) volatile noexcept 234s 1949: { 234s 1949: store(__p); 234s 1949: return __p; 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator++(int) noexcept 234s 1949: { return fetch_add(1); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator++(int) volatile noexcept 234s 1949: { return fetch_add(1); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator--(int) noexcept 234s 1949: { return fetch_sub(1); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator--(int) volatile noexcept 234s 1949: { return fetch_sub(1); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator++() noexcept 234s 1949: { return __atomic_add_fetch(&_M_p, _S_type_size(1), 234s 1949: int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator++() volatile noexcept 234s 1949: { return __atomic_add_fetch(&_M_p, _S_type_size(1), 234s 1949: int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator--() noexcept 234s 1949: { return __atomic_sub_fetch(&_M_p, _S_type_size(1), 234s 1949: int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator--() volatile noexcept 234s 1949: { return __atomic_sub_fetch(&_M_p, _S_type_size(1), 234s 1949: int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator+=(ptrdiff_t __d) noexcept 234s 1949: { return __atomic_add_fetch(&_M_p, _S_type_size(__d), 234s 1949: int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator+=(ptrdiff_t __d) volatile noexcept 234s 1949: { return __atomic_add_fetch(&_M_p, _S_type_size(__d), 234s 1949: int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator-=(ptrdiff_t __d) noexcept 234s 1949: { return __atomic_sub_fetch(&_M_p, _S_type_size(__d), 234s 1949: int(memory_order_seq_cst)); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator-=(ptrdiff_t __d) volatile noexcept 234s 1949: { return __atomic_sub_fetch(&_M_p, _S_type_size(__d), 234s 1949: int(memory_order_seq_cst)); } 234s 1949: 234s 1949: bool 234s 1949: is_lock_free() const noexcept 234s 1949: { 234s 1949: 234s 1949: return __atomic_is_lock_free(sizeof(_M_p), 234s 1949: reinterpret_cast(-__alignof(_M_p))); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: is_lock_free() const volatile noexcept 234s 1949: { 234s 1949: 234s 1949: return __atomic_is_lock_free(sizeof(_M_p), 234s 1949: reinterpret_cast(-__alignof(_M_p))); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) void 234s 1949: store(__pointer_type __p, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: memory_order __b __attribute__ ((__unused__)) 234s 1949: = __m & __memory_order_mask; 234s 1949: 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: __atomic_store_n(&_M_p, __p, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) void 234s 1949: store(__pointer_type __p, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: memory_order __b __attribute__ ((__unused__)) 234s 1949: = __m & __memory_order_mask; 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: __atomic_store_n(&_M_p, __p, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __pointer_type 234s 1949: load(memory_order __m = memory_order_seq_cst) const noexcept 234s 1949: { 234s 1949: memory_order __b __attribute__ ((__unused__)) 234s 1949: = __m & __memory_order_mask; 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_load_n(&_M_p, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __pointer_type 234s 1949: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 234s 1949: { 234s 1949: memory_order __b __attribute__ ((__unused__)) 234s 1949: = __m & __memory_order_mask; 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_load_n(&_M_p, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __pointer_type 234s 1949: exchange(__pointer_type __p, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: return __atomic_exchange_n(&_M_p, __p, int(__m)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __pointer_type 234s 1949: exchange(__pointer_type __p, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: return __atomic_exchange_n(&_M_p, __p, int(__m)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, 234s 1949: int(__m1), int(__m2)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) volatile noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, 234s 1949: int(__m1), int(__m2)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 234s 1949: int(__m1), int(__m2)); 234s 1949: } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) volatile noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 234s 1949: int(__m1), int(__m2)); 234s 1949: } 234s 1949: # 928 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: inline __attribute__((__always_inline__)) __pointer_type 234s 1949: fetch_add(ptrdiff_t __d, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return __atomic_fetch_add(&_M_p, _S_type_size(__d), int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __pointer_type 234s 1949: fetch_add(ptrdiff_t __d, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return __atomic_fetch_add(&_M_p, _S_type_size(__d), int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __pointer_type 234s 1949: fetch_sub(ptrdiff_t __d, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return __atomic_fetch_sub(&_M_p, _S_type_size(__d), int(__m)); } 234s 1949: 234s 1949: inline __attribute__((__always_inline__)) __pointer_type 234s 1949: fetch_sub(ptrdiff_t __d, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return __atomic_fetch_sub(&_M_p, _S_type_size(__d), int(__m)); } 234s 1949: }; 234s 1949: 234s 1949: namespace __atomic_impl 234s 1949: { 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: __maybe_has_padding() 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return !__has_unique_object_representations(_Tp) 234s 1949: && !is_same<_Tp, float>::value && !is_same<_Tp, double>::value; 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline __attribute__((__always_inline__)) constexpr _Tp* 234s 1949: __clear_padding(_Tp& __val) noexcept 234s 1949: { 234s 1949: auto* __ptr = std::__addressof(__val); 234s 1949: 234s 1949: if (__atomic_impl::__maybe_has_padding<_Tp>()) 234s 1949: __builtin_clear_padding(__ptr); 234s 1949: 234s 1949: return __ptr; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _Val = typename remove_volatile<_Tp>::type; 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: 234s 1949: template 234s 1949: inline __attribute__((__always_inline__)) bool 234s 1949: __compare_exchange(_Tp& __val, _Val<_Tp>& __e, _Val<_Tp>& __i, 234s 1949: bool __is_weak, 234s 1949: memory_order __s, memory_order __f) noexcept 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__f))) std::__glibcxx_assert_fail(); } while (false); 234s 1949: 234s 1949: using _Vp = _Val<_Tp>; 234s 1949: _Tp* const __pval = std::__addressof(__val); 234s 1949: 234s 1949: if constexpr (!__atomic_impl::__maybe_has_padding<_Vp>()) 234s 1949: { 234s 1949: return __atomic_compare_exchange(__pval, std::__addressof(__e), 234s 1949: std::__addressof(__i), __is_weak, 234s 1949: int(__s), int(__f)); 234s 1949: } 234s 1949: else if constexpr (!_AtomicRef) 234s 1949: { 234s 1949: 234s 1949: _Vp* const __pi = __atomic_impl::__clear_padding(__i); 234s 1949: 234s 1949: _Vp __exp = __e; 234s 1949: 234s 1949: _Vp* const __pexp = __atomic_impl::__clear_padding(__exp); 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__atomic_compare_exchange(__pval, __pexp, __pi, 234s 1949: __is_weak, int(__s), int(__f))) 234s 1949: return true; 234s 1949: 234s 1949: __builtin_memcpy(std::__addressof(__e), __pexp, sizeof(_Vp)); 234s 1949: return false; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: _Vp* const __pi = __atomic_impl::__clear_padding(__i); 234s 1949: 234s 1949: 234s 1949: _Vp __exp = __e; 234s 1949: 234s 1949: 234s 1949: _Vp* const __pexp = __atomic_impl::__clear_padding(__exp); 234s 1949: # 1042 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: while (true) 234s 1949: { 234s 1949: 234s 1949: _Vp __orig = __exp; 234s 1949: 234s 1949: if (__atomic_compare_exchange(__pval, __pexp, __pi, 234s 1949: __is_weak, int(__s), int(__f))) 234s 1949: return true; 234s 1949: 234s 1949: 234s 1949: _Vp __curr = __exp; 234s 1949: 234s 1949: 234s 1949: if (__builtin_memcmp(__atomic_impl::__clear_padding(__orig), 234s 1949: __atomic_impl::__clear_padding(__curr), 234s 1949: sizeof(_Vp))) 234s 1949: { 234s 1949: 234s 1949: __builtin_memcpy(std::__addressof(__e), __pexp, 234s 1949: sizeof(_Vp)); 234s 1949: return false; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: } 234s 1949: # 2105 "/usr/include/c++/15/bits/atomic_base.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 53 "/usr/include/c++/15/atomic" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/cstdint" 1 3 4 234s 1949: # 47 "/usr/include/c++/15/cstdint" 3 4 234s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdint.h" 1 3 4 234s 1949: # 9 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdint.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wpedantic" 234s 1949: # 1 "/usr/include/stdint.h" 1 3 4 234s 1949: # 26 "/usr/include/stdint.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 234s 1949: # 27 "/usr/include/stdint.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 234s 1949: # 30 "/usr/include/stdint.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 1 3 4 234s 1949: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 3 4 234s 1949: typedef __uint8_t uint8_t; 234s 1949: typedef __uint16_t uint16_t; 234s 1949: typedef __uint32_t uint32_t; 234s 1949: typedef __uint64_t uint64_t; 234s 1949: # 38 "/usr/include/stdint.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-least.h" 1 3 4 234s 1949: # 25 "/usr/include/arm-linux-gnueabihf/bits/stdint-least.h" 3 4 234s 1949: typedef __int_least8_t int_least8_t; 234s 1949: typedef __int_least16_t int_least16_t; 234s 1949: typedef __int_least32_t int_least32_t; 234s 1949: typedef __int_least64_t int_least64_t; 234s 1949: 234s 1949: 234s 1949: typedef __uint_least8_t uint_least8_t; 234s 1949: typedef __uint_least16_t uint_least16_t; 234s 1949: typedef __uint_least32_t uint_least32_t; 234s 1949: typedef __uint_least64_t uint_least64_t; 234s 1949: # 42 "/usr/include/stdint.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef signed char int_fast8_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef int int_fast16_t; 234s 1949: typedef int int_fast32_t; 234s 1949: __extension__ 234s 1949: typedef long long int int_fast64_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef unsigned char uint_fast8_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef unsigned int uint_fast16_t; 234s 1949: typedef unsigned int uint_fast32_t; 234s 1949: __extension__ 234s 1949: typedef unsigned long long int uint_fast64_t; 234s 1949: # 85 "/usr/include/stdint.h" 3 4 234s 1949: typedef unsigned int uintptr_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef __intmax_t intmax_t; 234s 1949: typedef __uintmax_t uintmax_t; 234s 1949: # 12 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/stdint.h" 2 3 4 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 48 "/usr/include/c++/15/cstdint" 2 3 4 234s 1949: 234s 1949: 234s 1949: namespace std 234s 1949: { 234s 1949: 234s 1949: using ::int8_t; 234s 1949: using ::int16_t; 234s 1949: using ::int32_t; 234s 1949: using ::int64_t; 234s 1949: 234s 1949: using ::int_fast8_t; 234s 1949: using ::int_fast16_t; 234s 1949: using ::int_fast32_t; 234s 1949: using ::int_fast64_t; 234s 1949: 234s 1949: using ::int_least8_t; 234s 1949: using ::int_least16_t; 234s 1949: using ::int_least32_t; 234s 1949: using ::int_least64_t; 234s 1949: 234s 1949: using ::intmax_t; 234s 1949: using ::intptr_t; 234s 1949: 234s 1949: using ::uint8_t; 234s 1949: using ::uint16_t; 234s 1949: using ::uint32_t; 234s 1949: using ::uint64_t; 234s 1949: 234s 1949: using ::uint_fast8_t; 234s 1949: using ::uint_fast16_t; 234s 1949: using ::uint_fast32_t; 234s 1949: using ::uint_fast64_t; 234s 1949: 234s 1949: using ::uint_least8_t; 234s 1949: using ::uint_least16_t; 234s 1949: using ::uint_least32_t; 234s 1949: using ::uint_least64_t; 234s 1949: 234s 1949: using ::uintmax_t; 234s 1949: using ::uintptr_t; 234s 1949: # 144 "/usr/include/c++/15/cstdint" 3 4 234s 1949: } 234s 1949: # 54 "/usr/include/c++/15/atomic" 2 3 4 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct atomic; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic 234s 1949: { 234s 1949: using value_type = bool; 234s 1949: 234s 1949: private: 234s 1949: __atomic_base _M_base; 234s 1949: 234s 1949: public: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(bool __i) noexcept : _M_base(__i) { } 234s 1949: 234s 1949: bool 234s 1949: operator=(bool __i) noexcept 234s 1949: { return _M_base.operator=(__i); } 234s 1949: 234s 1949: bool 234s 1949: operator=(bool __i) volatile noexcept 234s 1949: { return _M_base.operator=(__i); } 234s 1949: 234s 1949: operator bool() const noexcept 234s 1949: { return _M_base.load(); } 234s 1949: 234s 1949: operator bool() const volatile noexcept 234s 1949: { return _M_base.load(); } 234s 1949: 234s 1949: bool 234s 1949: is_lock_free() const noexcept { return _M_base.is_lock_free(); } 234s 1949: 234s 1949: bool 234s 1949: is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: store(bool __i, memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { _M_base.store(__i, __m); } 234s 1949: 234s 1949: void 234s 1949: store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { _M_base.store(__i, __m); } 234s 1949: 234s 1949: bool 234s 1949: load(memory_order __m = memory_order_seq_cst) const noexcept 234s 1949: { return _M_base.load(__m); } 234s 1949: 234s 1949: bool 234s 1949: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 234s 1949: { return _M_base.load(__m); } 234s 1949: 234s 1949: bool 234s 1949: exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return _M_base.exchange(__i, __m); } 234s 1949: 234s 1949: bool 234s 1949: exchange(bool __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return _M_base.exchange(__i, __m); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, 234s 1949: memory_order __m2) noexcept 234s 1949: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, 234s 1949: memory_order __m2) volatile noexcept 234s 1949: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(bool& __i1, bool __i2, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(bool& __i1, bool __i2, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, 234s 1949: memory_order __m2) noexcept 234s 1949: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, 234s 1949: memory_order __m2) volatile noexcept 234s 1949: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(bool& __i1, bool __i2, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(bool& __i1, bool __i2, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } 234s 1949: # 191 "/usr/include/c++/15/atomic" 3 4 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct atomic 234s 1949: { 234s 1949: using value_type = _Tp; 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: static constexpr int _S_min_alignment 234s 1949: = (sizeof(_Tp) & (sizeof(_Tp) - 1)) || sizeof(_Tp) > 16 234s 1949: ? 0 : sizeof(_Tp); 234s 1949: 234s 1949: static constexpr int _S_alignment 234s 1949: = _S_min_alignment > alignof(_Tp) ? _S_min_alignment : alignof(_Tp); 234s 1949: 234s 1949: alignas(_S_alignment) _Tp _M_i; 234s 1949: 234s 1949: static_assert(__is_trivially_copyable(_Tp), 234s 1949: "std::atomic requires a trivially copyable type"); 234s 1949: 234s 1949: static_assert(sizeof(_Tp) > 0, 234s 1949: "Incomplete or zero-sized types are not supported"); 234s 1949: # 227 "/usr/include/c++/15/atomic" 3 4 234s 1949: public: 234s 1949: # 236 "/usr/include/c++/15/atomic" 3 4 234s 1949: atomic() = default; 234s 1949: 234s 1949: 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(_Tp __i) noexcept : _M_i(__i) 234s 1949: { 234s 1949: 234s 1949: if (__atomic_impl::__maybe_has_padding<_Tp>()) 234s 1949: __builtin_clear_padding(std::__addressof(_M_i)); 234s 1949: 234s 1949: } 234s 1949: 234s 1949: operator _Tp() const noexcept 234s 1949: { return load(); } 234s 1949: 234s 1949: operator _Tp() const volatile noexcept 234s 1949: { return load(); } 234s 1949: 234s 1949: _Tp 234s 1949: operator=(_Tp __i) noexcept 234s 1949: { store(__i); return __i; } 234s 1949: 234s 1949: _Tp 234s 1949: operator=(_Tp __i) volatile noexcept 234s 1949: { store(__i); return __i; } 234s 1949: 234s 1949: bool 234s 1949: is_lock_free() const noexcept 234s 1949: { 234s 1949: 234s 1949: return __atomic_is_lock_free(sizeof(_M_i), 234s 1949: reinterpret_cast(-_S_alignment)); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: is_lock_free() const volatile noexcept 234s 1949: { 234s 1949: 234s 1949: return __atomic_is_lock_free(sizeof(_M_i), 234s 1949: reinterpret_cast(-_S_alignment)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: store(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: __atomic_store(std::__addressof(_M_i), 234s 1949: __atomic_impl::__clear_padding(__i), 234s 1949: int(__m)); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: store(_Tp __i, memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: __atomic_store(std::__addressof(_M_i), 234s 1949: __atomic_impl::__clear_padding(__i), 234s 1949: int(__m)); 234s 1949: } 234s 1949: 234s 1949: _Tp 234s 1949: load(memory_order __m = memory_order_seq_cst) const noexcept 234s 1949: { 234s 1949: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 234s 1949: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 234s 1949: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); 234s 1949: return *__ptr; 234s 1949: } 234s 1949: 234s 1949: _Tp 234s 1949: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 234s 1949: { 234s 1949: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 234s 1949: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 234s 1949: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); 234s 1949: return *__ptr; 234s 1949: } 234s 1949: 234s 1949: _Tp 234s 1949: exchange(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 234s 1949: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 234s 1949: __atomic_exchange(std::__addressof(_M_i), 234s 1949: __atomic_impl::__clear_padding(__i), 234s 1949: __ptr, int(__m)); 234s 1949: return *__ptr; 234s 1949: } 234s 1949: 234s 1949: _Tp 234s 1949: exchange(_Tp __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 234s 1949: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 234s 1949: __atomic_exchange(std::__addressof(_M_i), 234s 1949: __atomic_impl::__clear_padding(__i), 234s 1949: __ptr, int(__m)); 234s 1949: return *__ptr; 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, 234s 1949: memory_order __f) noexcept 234s 1949: { 234s 1949: return __atomic_impl::__compare_exchange(_M_i, __e, __i, true, 234s 1949: __s, __f); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, 234s 1949: memory_order __f) volatile noexcept 234s 1949: { 234s 1949: return __atomic_impl::__compare_exchange(_M_i, __e, __i, true, 234s 1949: __s, __f); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(_Tp& __e, _Tp __i, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return compare_exchange_weak(__e, __i, __m, 234s 1949: __cmpexch_failure_order(__m)); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(_Tp& __e, _Tp __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return compare_exchange_weak(__e, __i, __m, 234s 1949: __cmpexch_failure_order(__m)); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, 234s 1949: memory_order __f) noexcept 234s 1949: { 234s 1949: return __atomic_impl::__compare_exchange(_M_i, __e, __i, false, 234s 1949: __s, __f); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, 234s 1949: memory_order __f) volatile noexcept 234s 1949: { 234s 1949: return __atomic_impl::__compare_exchange(_M_i, __e, __i, false, 234s 1949: __s, __f); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(_Tp& __e, _Tp __i, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return compare_exchange_strong(__e, __i, __m, 234s 1949: __cmpexch_failure_order(__m)); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(_Tp& __e, _Tp __i, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return compare_exchange_strong(__e, __i, __m, 234s 1949: __cmpexch_failure_order(__m)); } 234s 1949: # 418 "/usr/include/c++/15/atomic" 3 4 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct atomic<_Tp*> 234s 1949: { 234s 1949: using value_type = _Tp*; 234s 1949: using difference_type = ptrdiff_t; 234s 1949: 234s 1949: typedef _Tp* __pointer_type; 234s 1949: typedef __atomic_base<_Tp*> __base_type; 234s 1949: __base_type _M_b; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__pointer_type __p) noexcept : _M_b(__p) { } 234s 1949: 234s 1949: operator __pointer_type() const noexcept 234s 1949: { return __pointer_type(_M_b); } 234s 1949: 234s 1949: operator __pointer_type() const volatile noexcept 234s 1949: { return __pointer_type(_M_b); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator=(__pointer_type __p) noexcept 234s 1949: { return _M_b.operator=(__p); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator=(__pointer_type __p) volatile noexcept 234s 1949: { return _M_b.operator=(__p); } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator++(int) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b++; 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator++(int) volatile noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b++; 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator--(int) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b--; 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator--(int) volatile noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b--; 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator++() noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return ++_M_b; 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator++() volatile noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return ++_M_b; 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator--() noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return --_M_b; 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator--() volatile noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return --_M_b; 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator+=(ptrdiff_t __d) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b.operator+=(__d); 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator+=(ptrdiff_t __d) volatile noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b.operator+=(__d); 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator-=(ptrdiff_t __d) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b.operator-=(__d); 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: operator-=(ptrdiff_t __d) volatile noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b.operator-=(__d); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: is_lock_free() const noexcept 234s 1949: { return _M_b.is_lock_free(); } 234s 1949: 234s 1949: bool 234s 1949: is_lock_free() const volatile noexcept 234s 1949: { return _M_b.is_lock_free(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: store(__pointer_type __p, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return _M_b.store(__p, __m); } 234s 1949: 234s 1949: void 234s 1949: store(__pointer_type __p, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return _M_b.store(__p, __m); } 234s 1949: 234s 1949: __pointer_type 234s 1949: load(memory_order __m = memory_order_seq_cst) const noexcept 234s 1949: { return _M_b.load(__m); } 234s 1949: 234s 1949: __pointer_type 234s 1949: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 234s 1949: { return _M_b.load(__m); } 234s 1949: 234s 1949: __pointer_type 234s 1949: exchange(__pointer_type __p, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { return _M_b.exchange(__p, __m); } 234s 1949: 234s 1949: __pointer_type 234s 1949: exchange(__pointer_type __p, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { return _M_b.exchange(__p, __m); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m1, memory_order __m2) noexcept 234s 1949: { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) volatile noexcept 234s 1949: { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: return compare_exchange_weak(__p1, __p2, __m, 234s 1949: __cmpexch_failure_order(__m)); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: return compare_exchange_weak(__p1, __p2, __m, 234s 1949: __cmpexch_failure_order(__m)); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m1, memory_order __m2) noexcept 234s 1949: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) volatile noexcept 234s 1949: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: return _M_b.compare_exchange_strong(__p1, __p2, __m, 234s 1949: __cmpexch_failure_order(__m)); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: return _M_b.compare_exchange_strong(__p1, __p2, __m, 234s 1949: __cmpexch_failure_order(__m)); 234s 1949: } 234s 1949: # 672 "/usr/include/c++/15/atomic" 3 4 234s 1949: __pointer_type 234s 1949: fetch_add(ptrdiff_t __d, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b.fetch_add(__d, __m); 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: fetch_add(ptrdiff_t __d, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b.fetch_add(__d, __m); 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: fetch_sub(ptrdiff_t __d, 234s 1949: memory_order __m = memory_order_seq_cst) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b.fetch_sub(__d, __m); 234s 1949: } 234s 1949: 234s 1949: __pointer_type 234s 1949: fetch_sub(ptrdiff_t __d, 234s 1949: memory_order __m = memory_order_seq_cst) volatile noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: return _M_b.fetch_sub(__d, __m); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef char __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef signed char __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept= default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef unsigned char __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept= default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef short __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef unsigned short __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef int __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef unsigned int __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef long __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef unsigned long __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef long long __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef unsigned long long __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef wchar_t __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: # 1017 "/usr/include/c++/15/atomic" 3 4 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef char16_t __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct atomic : __atomic_base 234s 1949: { 234s 1949: typedef char32_t __integral_type; 234s 1949: typedef __atomic_base __base_type; 234s 1949: 234s 1949: atomic() noexcept = default; 234s 1949: ~atomic() noexcept = default; 234s 1949: atomic(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) = delete; 234s 1949: atomic& operator=(const atomic&) volatile = delete; 234s 1949: 234s 1949: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 234s 1949: 234s 1949: using __base_type::operator __integral_type; 234s 1949: using __base_type::operator=; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_bool; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_char; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_schar; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uchar; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_short; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_ushort; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_long; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_ulong; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_llong; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_ullong; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_wchar_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_char16_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_char32_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int8_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint8_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int16_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint16_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int32_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint32_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int64_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint64_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int_least8_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint_least8_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int_least16_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint_least16_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int_least32_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint_least32_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int_least64_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint_least64_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int_fast8_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint_fast8_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int_fast16_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint_fast16_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int_fast32_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint_fast32_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_int_fast64_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uint_fast64_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_intptr_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uintptr_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_size_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_ptrdiff_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_intmax_t; 234s 1949: 234s 1949: 234s 1949: typedef atomic atomic_uintmax_t; 234s 1949: 234s 1949: 234s 1949: inline bool 234s 1949: atomic_flag_test_and_set_explicit(atomic_flag* __a, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->test_and_set(__m); } 234s 1949: 234s 1949: inline bool 234s 1949: atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->test_and_set(__m); } 234s 1949: # 1243 "/usr/include/c++/15/atomic" 3 4 234s 1949: inline void 234s 1949: atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept 234s 1949: { __a->clear(__m); } 234s 1949: 234s 1949: inline void 234s 1949: atomic_flag_clear_explicit(volatile atomic_flag* __a, 234s 1949: memory_order __m) noexcept 234s 1949: { __a->clear(__m); } 234s 1949: 234s 1949: inline bool 234s 1949: atomic_flag_test_and_set(atomic_flag* __a) noexcept 234s 1949: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } 234s 1949: 234s 1949: inline bool 234s 1949: atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept 234s 1949: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } 234s 1949: 234s 1949: inline void 234s 1949: atomic_flag_clear(atomic_flag* __a) noexcept 234s 1949: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } 234s 1949: 234s 1949: inline void 234s 1949: atomic_flag_clear(volatile atomic_flag* __a) noexcept 234s 1949: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } 234s 1949: # 1290 "/usr/include/c++/15/atomic" 3 4 234s 1949: template 234s 1949: using __atomic_val_t = __type_identity_t<_Tp>; 234s 1949: template 234s 1949: using __atomic_diff_t = typename atomic<_Tp>::difference_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: atomic_is_lock_free(const atomic<_ITp>* __a) noexcept 234s 1949: { return __a->is_lock_free(); } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept 234s 1949: { return __a->is_lock_free(); } 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: atomic_init(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 234s 1949: { __a->store(__i, memory_order_relaxed); } 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: atomic_init(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 234s 1949: { __a->store(__i, memory_order_relaxed); } 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: atomic_store_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { __a->store(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: atomic_store_explicit(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { __a->store(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept 234s 1949: { return __a->load(__m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_load_explicit(const volatile atomic<_ITp>* __a, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->load(__m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_exchange_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->exchange(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_exchange_explicit(volatile atomic<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->exchange(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp>* __i1, 234s 1949: __atomic_val_t<_ITp> __i2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) noexcept 234s 1949: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp>* __i1, 234s 1949: __atomic_val_t<_ITp> __i2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) noexcept 234s 1949: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp>* __i1, 234s 1949: __atomic_val_t<_ITp> __i2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) noexcept 234s 1949: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp>* __i1, 234s 1949: __atomic_val_t<_ITp> __i2, 234s 1949: memory_order __m1, 234s 1949: memory_order __m2) noexcept 234s 1949: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: atomic_store(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 234s 1949: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: atomic_store(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 234s 1949: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_load(const atomic<_ITp>* __a) noexcept 234s 1949: { return atomic_load_explicit(__a, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_load(const volatile atomic<_ITp>* __a) noexcept 234s 1949: { return atomic_load_explicit(__a, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_exchange(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 234s 1949: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_exchange(volatile atomic<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i) noexcept 234s 1949: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: atomic_compare_exchange_weak(atomic<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp>* __i1, 234s 1949: __atomic_val_t<_ITp> __i2) noexcept 234s 1949: { 234s 1949: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, 234s 1949: memory_order_seq_cst, 234s 1949: memory_order_seq_cst); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp>* __i1, 234s 1949: __atomic_val_t<_ITp> __i2) noexcept 234s 1949: { 234s 1949: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, 234s 1949: memory_order_seq_cst, 234s 1949: memory_order_seq_cst); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: atomic_compare_exchange_strong(atomic<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp>* __i1, 234s 1949: __atomic_val_t<_ITp> __i2) noexcept 234s 1949: { 234s 1949: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, 234s 1949: memory_order_seq_cst, 234s 1949: memory_order_seq_cst); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp>* __i1, 234s 1949: __atomic_val_t<_ITp> __i2) noexcept 234s 1949: { 234s 1949: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, 234s 1949: memory_order_seq_cst, 234s 1949: memory_order_seq_cst); 234s 1949: } 234s 1949: # 1496 "/usr/include/c++/15/atomic" 3 4 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_add_explicit(atomic<_ITp>* __a, 234s 1949: __atomic_diff_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->fetch_add(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_add_explicit(volatile atomic<_ITp>* __a, 234s 1949: __atomic_diff_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->fetch_add(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_sub_explicit(atomic<_ITp>* __a, 234s 1949: __atomic_diff_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->fetch_sub(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_sub_explicit(volatile atomic<_ITp>* __a, 234s 1949: __atomic_diff_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->fetch_sub(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->fetch_and(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->fetch_and(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->fetch_or(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->fetch_or(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->fetch_xor(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i, 234s 1949: memory_order __m) noexcept 234s 1949: { return __a->fetch_xor(__i, __m); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_add(atomic<_ITp>* __a, 234s 1949: __atomic_diff_t<_ITp> __i) noexcept 234s 1949: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_add(volatile atomic<_ITp>* __a, 234s 1949: __atomic_diff_t<_ITp> __i) noexcept 234s 1949: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_sub(atomic<_ITp>* __a, 234s 1949: __atomic_diff_t<_ITp> __i) noexcept 234s 1949: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_sub(volatile atomic<_ITp>* __a, 234s 1949: __atomic_diff_t<_ITp> __i) noexcept 234s 1949: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_and(__atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i) noexcept 234s 1949: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_and(volatile __atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i) noexcept 234s 1949: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_or(__atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i) noexcept 234s 1949: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_or(volatile __atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i) noexcept 234s 1949: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_xor(__atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i) noexcept 234s 1949: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: 234s 1949: template 234s 1949: inline _ITp 234s 1949: atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, 234s 1949: __atomic_val_t<_ITp> __i) noexcept 234s 1949: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } 234s 1949: # 1797 "/usr/include/c++/15/atomic" 3 4 234s 1949: 234s 1949: } 234s 1949: # 3173 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/mutex" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/mutex" 3 4 234s 1949: # 1 "/usr/include/c++/15/tuple" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/tuple" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/uses_allocator.h" 1 3 4 234s 1949: # 40 "/usr/include/c++/15/bits/uses_allocator.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __erased_type { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __is_erased_or_convertible 234s 1949: = __or_, is_same<_Tp, __erased_type>>; 234s 1949: 234s 1949: 234s 1949: struct allocator_arg_t { explicit allocator_arg_t() = default; }; 234s 1949: 234s 1949: constexpr allocator_arg_t allocator_arg = 234s 1949: allocator_arg_t(); 234s 1949: 234s 1949: template> 234s 1949: struct __uses_allocator_helper 234s 1949: : false_type { }; 234s 1949: 234s 1949: template 234s 1949: struct __uses_allocator_helper<_Tp, _Alloc, 234s 1949: __void_t> 234s 1949: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct uses_allocator 234s 1949: : __uses_allocator_helper<_Tp, _Alloc>::type 234s 1949: { }; 234s 1949: 234s 1949: struct __uses_alloc_base { }; 234s 1949: 234s 1949: struct __uses_alloc0 : __uses_alloc_base 234s 1949: { 234s 1949: struct _Sink { void operator=(const void*) { } } _M_a; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; 234s 1949: 234s 1949: template 234s 1949: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; 234s 1949: 234s 1949: template 234s 1949: struct __uses_alloc; 234s 1949: 234s 1949: template 234s 1949: struct __uses_alloc 234s 1949: : __conditional_t< 234s 1949: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value, 234s 1949: __uses_alloc1<_Alloc>, 234s 1949: __uses_alloc2<_Alloc>> 234s 1949: { 234s 1949: 234s 1949: 234s 1949: static_assert(__or_< 234s 1949: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>, 234s 1949: is_constructible<_Tp, _Args..., const _Alloc&>>::value, 234s 1949: "construction with an allocator must be possible" 234s 1949: " if uses_allocator is true"); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __uses_alloc 234s 1949: : __uses_alloc0 { }; 234s 1949: 234s 1949: template 234s 1949: using __uses_alloc_t = 234s 1949: __uses_alloc::value, _Tp, _Alloc, _Args...>; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline __uses_alloc_t<_Tp, _Alloc, _Args...> 234s 1949: __use_alloc(const _Alloc& __a) 234s 1949: { 234s 1949: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; 234s 1949: __ret._M_a = std::__addressof(__a); 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __use_alloc(const _Alloc&&) = delete; 234s 1949: # 142 "/usr/include/c++/15/bits/uses_allocator.h" 3 4 234s 1949: template class _Predicate, 234s 1949: typename _Tp, typename _Alloc, typename... _Args> 234s 1949: struct __is_uses_allocator_predicate 234s 1949: : __conditional_t::value, 234s 1949: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, 234s 1949: _Predicate<_Tp, _Args..., _Alloc>>, 234s 1949: _Predicate<_Tp, _Args...>> { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_uses_allocator_constructible 234s 1949: : __is_uses_allocator_predicate 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr bool __is_uses_allocator_constructible_v = 234s 1949: __is_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_nothrow_uses_allocator_constructible 234s 1949: : __is_uses_allocator_predicate 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: __is_nothrow_uses_allocator_constructible_v = 234s 1949: __is_nothrow_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void __uses_allocator_construct_impl(__uses_alloc0, _Tp* __ptr, 234s 1949: _Args&&... __args) 234s 1949: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } 234s 1949: 234s 1949: template 234s 1949: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, 234s 1949: _Args&&... __args) 234s 1949: { 234s 1949: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, 234s 1949: _Args&&... __args) 234s 1949: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } 234s 1949: 234s 1949: template 234s 1949: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, 234s 1949: _Args&&... __args) 234s 1949: { 234s 1949: std::__uses_allocator_construct_impl( 234s 1949: std::__use_alloc<_Tp, _Alloc, _Args...>(__a), __ptr, 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 42 "/usr/include/c++/15/tuple" 2 3 4 234s 1949: # 57 "/usr/include/c++/15/tuple" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 58 "/usr/include/c++/15/tuple" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class tuple; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_empty_non_tuple : is_empty<_Tp> { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_empty_non_tuple> : false_type { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __empty_not_final 234s 1949: = __conditional_t<__is_final(_Tp), false_type, 234s 1949: __is_empty_non_tuple<_Tp>>; 234s 1949: 234s 1949: template::value> 234s 1949: struct _Head_base; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Head_base<_Idx, _Head, true> 234s 1949: { 234s 1949: constexpr _Head_base() 234s 1949: : _M_head_impl() { } 234s 1949: 234s 1949: constexpr _Head_base(const _Head& __h) 234s 1949: : _M_head_impl(__h) { } 234s 1949: 234s 1949: constexpr _Head_base(const _Head_base&) = default; 234s 1949: constexpr _Head_base(_Head_base&&) = default; 234s 1949: 234s 1949: template 234s 1949: constexpr _Head_base(_UHead&& __h) 234s 1949: : _M_head_impl(std::forward<_UHead>(__h)) { } 234s 1949: 234s 1949: 234s 1949: _Head_base(allocator_arg_t, __uses_alloc0) 234s 1949: : _M_head_impl() { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 234s 1949: : _M_head_impl(allocator_arg, *__a._M_a) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 234s 1949: : _M_head_impl(*__a._M_a) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Head_base(__uses_alloc0, _UHead&& __uhead) 234s 1949: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 234s 1949: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 234s 1949: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 234s 1949: 234s 1949: static constexpr _Head& 234s 1949: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 234s 1949: 234s 1949: static constexpr const _Head& 234s 1949: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 234s 1949: 234s 1949: [[__no_unique_address__]] _Head _M_head_impl; 234s 1949: }; 234s 1949: # 199 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: struct _Head_base<_Idx, _Head, false> 234s 1949: { 234s 1949: constexpr _Head_base() 234s 1949: : _M_head_impl() { } 234s 1949: 234s 1949: constexpr _Head_base(const _Head& __h) 234s 1949: : _M_head_impl(__h) { } 234s 1949: 234s 1949: constexpr _Head_base(const _Head_base&) = default; 234s 1949: constexpr _Head_base(_Head_base&&) = default; 234s 1949: 234s 1949: template 234s 1949: constexpr _Head_base(_UHead&& __h) 234s 1949: : _M_head_impl(std::forward<_UHead>(__h)) { } 234s 1949: 234s 1949: 234s 1949: _Head_base(allocator_arg_t, __uses_alloc0) 234s 1949: : _M_head_impl() { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 234s 1949: : _M_head_impl(allocator_arg, *__a._M_a) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 234s 1949: : _M_head_impl(*__a._M_a) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Head_base(__uses_alloc0, _UHead&& __uhead) 234s 1949: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 234s 1949: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 234s 1949: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 234s 1949: 234s 1949: static constexpr _Head& 234s 1949: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 234s 1949: 234s 1949: static constexpr const _Head& 234s 1949: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 234s 1949: 234s 1949: _Head _M_head_impl; 234s 1949: }; 234s 1949: # 272 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: struct _Tuple_impl; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Tuple_impl<_Idx, _Head, _Tail...> 234s 1949: : public _Tuple_impl<_Idx + 1, _Tail...>, 234s 1949: private _Head_base<_Idx, _Head> 234s 1949: { 234s 1949: template friend struct _Tuple_impl; 234s 1949: 234s 1949: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; 234s 1949: typedef _Head_base<_Idx, _Head> _Base; 234s 1949: 234s 1949: static constexpr _Head& 234s 1949: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 234s 1949: 234s 1949: static constexpr const _Head& 234s 1949: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 234s 1949: 234s 1949: static constexpr _Inherited& 234s 1949: _M_tail(_Tuple_impl& __t) noexcept { return __t; } 234s 1949: 234s 1949: static constexpr const _Inherited& 234s 1949: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } 234s 1949: 234s 1949: constexpr _Tuple_impl() 234s 1949: : _Inherited(), _Base() { } 234s 1949: 234s 1949: explicit constexpr 234s 1949: _Tuple_impl(const _Head& __head, const _Tail&... __tail) 234s 1949: : _Inherited(__tail...), _Base(__head) 234s 1949: { } 234s 1949: 234s 1949: template> 234s 1949: explicit constexpr 234s 1949: _Tuple_impl(_UHead&& __head, _UTail&&... __tail) 234s 1949: : _Inherited(std::forward<_UTail>(__tail)...), 234s 1949: _Base(std::forward<_UHead>(__head)) 234s 1949: { } 234s 1949: 234s 1949: constexpr _Tuple_impl(const _Tuple_impl&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 234s 1949: 234s 1949: _Tuple_impl(_Tuple_impl&&) = default; 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) 234s 1949: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 234s 1949: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 234s 1949: : _Inherited(std::move 234s 1949: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 234s 1949: _Base(std::forward<_UHead> 234s 1949: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) 234s 1949: { } 234s 1949: # 368 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 234s 1949: : _Inherited(__tag, __a), 234s 1949: _Base(__tag, __use_alloc<_Head>(__a)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const _Head& __head, const _Tail&... __tail) 234s 1949: : _Inherited(__tag, __a, __tail...), 234s 1949: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) 234s 1949: { } 234s 1949: 234s 1949: template> 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: _UHead&& __head, _UTail&&... __tail) 234s 1949: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), 234s 1949: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 234s 1949: std::forward<_UHead>(__head)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const _Tuple_impl& __in) 234s 1949: : _Inherited(__tag, __a, _M_tail(__in)), 234s 1949: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: _Tuple_impl&& __in) 234s 1949: : _Inherited(__tag, __a, std::move(_M_tail(__in))), 234s 1949: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 234s 1949: std::forward<_Head>(_M_head(__in))) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const _Tuple_impl<_Idx, _UHead, _UTails...>& __in) 234s 1949: : _Inherited(__tag, __a, 234s 1949: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)), 234s 1949: _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), 234s 1949: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 234s 1949: : _Inherited(__tag, __a, std::move 234s 1949: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 234s 1949: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 234s 1949: std::forward<_UHead> 234s 1949: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) 234s 1949: { } 234s 1949: # 463 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_assign(const _Tuple_impl<_Idx, _UElements...>& __in) 234s 1949: { 234s 1949: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); 234s 1949: _M_tail(*this)._M_assign( 234s 1949: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_assign(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 234s 1949: { 234s 1949: _M_head(*this) = std::forward<_UHead> 234s 1949: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); 234s 1949: _M_tail(*this)._M_assign( 234s 1949: std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))); 234s 1949: } 234s 1949: # 523 "/usr/include/c++/15/tuple" 3 4 234s 1949: protected: 234s 1949: 234s 1949: void 234s 1949: _M_swap(_Tuple_impl& __in) 234s 1949: { 234s 1949: using std::swap; 234s 1949: swap(_M_head(*this), _M_head(__in)); 234s 1949: _Inherited::_M_swap(_M_tail(__in)); 234s 1949: } 234s 1949: # 542 "/usr/include/c++/15/tuple" 3 4 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Tuple_impl<_Idx, _Head> 234s 1949: : private _Head_base<_Idx, _Head> 234s 1949: { 234s 1949: template friend struct _Tuple_impl; 234s 1949: 234s 1949: typedef _Head_base<_Idx, _Head> _Base; 234s 1949: 234s 1949: static constexpr _Head& 234s 1949: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 234s 1949: 234s 1949: static constexpr const _Head& 234s 1949: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 234s 1949: 234s 1949: constexpr 234s 1949: _Tuple_impl() 234s 1949: : _Base() { } 234s 1949: 234s 1949: explicit constexpr 234s 1949: _Tuple_impl(const _Head& __head) 234s 1949: : _Base(__head) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: explicit constexpr 234s 1949: _Tuple_impl(_UHead&& __head) 234s 1949: : _Base(std::forward<_UHead>(__head)) 234s 1949: { } 234s 1949: 234s 1949: constexpr _Tuple_impl(const _Tuple_impl&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: constexpr 234s 1949: _Tuple_impl(_Tuple_impl&& __in) 234s 1949: noexcept(is_nothrow_move_constructible<_Head>::value) 234s 1949: : _Base(static_cast<_Base&&>(__in)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) 234s 1949: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) 234s 1949: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 234s 1949: { } 234s 1949: # 624 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 234s 1949: : _Base(__tag, __use_alloc<_Head>(__a)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 234s 1949: const _Head& __head) 234s 1949: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), __head) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 234s 1949: _UHead&& __head) 234s 1949: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 234s 1949: std::forward<_UHead>(__head)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 234s 1949: const _Tuple_impl& __in) 234s 1949: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), _M_head(__in)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 234s 1949: _Tuple_impl&& __in) 234s 1949: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 234s 1949: std::forward<_Head>(_M_head(__in))) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 234s 1949: const _Tuple_impl<_Idx, _UHead>& __in) 234s 1949: : _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), 234s 1949: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 234s 1949: _Tuple_impl<_Idx, _UHead>&& __in) 234s 1949: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 234s 1949: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 234s 1949: { } 234s 1949: # 703 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_assign(const _Tuple_impl<_Idx, _UHead>& __in) 234s 1949: { 234s 1949: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: void 234s 1949: _M_assign(_Tuple_impl<_Idx, _UHead>&& __in) 234s 1949: { 234s 1949: _M_head(*this) 234s 1949: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); 234s 1949: } 234s 1949: # 749 "/usr/include/c++/15/tuple" 3 4 234s 1949: protected: 234s 1949: 234s 1949: void 234s 1949: _M_swap(_Tuple_impl& __in) 234s 1949: { 234s 1949: using std::swap; 234s 1949: swap(_M_head(*this), _M_head(__in)); 234s 1949: } 234s 1949: # 766 "/usr/include/c++/15/tuple" 3 4 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _TupleConstraints 234s 1949: { 234s 1949: template 234s 1949: using __constructible = __and_...>; 234s 1949: 234s 1949: template 234s 1949: using __convertible = __and_...>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __is_implicitly_constructible() 234s 1949: { 234s 1949: return __and_<__constructible<_UTypes...>, 234s 1949: __convertible<_UTypes...> 234s 1949: >::value; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __is_explicitly_constructible() 234s 1949: { 234s 1949: return __and_<__constructible<_UTypes...>, 234s 1949: __not_<__convertible<_UTypes...>> 234s 1949: >::value; 234s 1949: } 234s 1949: 234s 1949: static constexpr bool __is_implicitly_default_constructible() 234s 1949: { 234s 1949: return __and_... 234s 1949: >::value; 234s 1949: } 234s 1949: 234s 1949: static constexpr bool __is_explicitly_default_constructible() 234s 1949: { 234s 1949: return __and_..., 234s 1949: __not_<__and_< 234s 1949: std::__is_implicitly_default_constructible<_Types>...> 234s 1949: >>::value; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _TupleConstraints 234s 1949: { 234s 1949: template 234s 1949: static constexpr bool __is_implicitly_constructible() 234s 1949: { return false; } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __is_explicitly_constructible() 234s 1949: { return false; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class tuple : public _Tuple_impl<0, _Elements...> 234s 1949: { 234s 1949: using _Inherited = _Tuple_impl<0, _Elements...>; 234s 1949: # 1352 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: using _TCC = _TupleConstraints<_Cond, _Elements...>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _ImplicitDefaultCtor = __enable_if_t< 234s 1949: _TCC<_Dummy>::__is_implicitly_default_constructible(), 234s 1949: bool>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _ExplicitDefaultCtor = __enable_if_t< 234s 1949: _TCC<_Dummy>::__is_explicitly_default_constructible(), 234s 1949: bool>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _ImplicitCtor = __enable_if_t< 234s 1949: _TCC<_Cond>::template __is_implicitly_constructible<_Args...>(), 234s 1949: bool>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _ExplicitCtor = __enable_if_t< 234s 1949: _TCC<_Cond>::template __is_explicitly_constructible<_Args...>(), 234s 1949: bool>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __nothrow_constructible() 234s 1949: { 234s 1949: return 234s 1949: __and_...>::value; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __valid_args() 234s 1949: { 234s 1949: return sizeof...(_Elements) == 1 234s 1949: && !is_same>::value; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __valid_args() 234s 1949: { return (sizeof...(_Tail) + 2) == sizeof...(_Elements); } 234s 1949: # 1409 "/usr/include/c++/15/tuple" 3 4 234s 1949: template> 234s 1949: struct _UseOtherCtor 234s 1949: : false_type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Up>> 234s 1949: : __or_, is_constructible<_Tp, _Tuple>>::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Tp>> 234s 1949: : true_type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __use_other_ctor() 234s 1949: { return _UseOtherCtor<_Tuple>::value; } 234s 1949: # 1455 "/usr/include/c++/15/tuple" 3 4 234s 1949: public: 234s 1949: template::value> = true> 234s 1949: constexpr 234s 1949: tuple() 234s 1949: noexcept(__and_...>::value) 234s 1949: : _Inherited() { } 234s 1949: 234s 1949: template::value> = false> 234s 1949: explicit constexpr 234s 1949: tuple() 234s 1949: noexcept(__and_...>::value) 234s 1949: : _Inherited() { } 234s 1949: 234s 1949: template= 1), 234s 1949: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 234s 1949: constexpr 234s 1949: tuple(const _Elements&... __elements) 234s 1949: noexcept(__nothrow_constructible()) 234s 1949: : _Inherited(__elements...) { } 234s 1949: 234s 1949: template= 1), 234s 1949: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 234s 1949: explicit constexpr 234s 1949: tuple(const _Elements&... __elements) 234s 1949: noexcept(__nothrow_constructible()) 234s 1949: : _Inherited(__elements...) { } 234s 1949: 234s 1949: template(), 234s 1949: _ImplicitCtor<_Valid, _UElements...> = true> 234s 1949: constexpr 234s 1949: tuple(_UElements&&... __elements) 234s 1949: noexcept(__nothrow_constructible<_UElements...>()) 234s 1949: : _Inherited(std::forward<_UElements>(__elements)...) 234s 1949: { ; } 234s 1949: 234s 1949: template(), 234s 1949: _ExplicitCtor<_Valid, _UElements...> = false> 234s 1949: explicit constexpr 234s 1949: tuple(_UElements&&... __elements) 234s 1949: noexcept(__nothrow_constructible<_UElements...>()) 234s 1949: : _Inherited(std::forward<_UElements>(__elements)...) 234s 1949: { ; } 234s 1949: 234s 1949: constexpr tuple(const tuple&) = default; 234s 1949: 234s 1949: constexpr tuple(tuple&&) = default; 234s 1949: 234s 1949: template&>(), 234s 1949: _ImplicitCtor<_Valid, const _UElements&...> = true> 234s 1949: constexpr 234s 1949: tuple(const tuple<_UElements...>& __in) 234s 1949: noexcept(__nothrow_constructible()) 234s 1949: : _Inherited(static_cast&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template&>(), 234s 1949: _ExplicitCtor<_Valid, const _UElements&...> = false> 234s 1949: explicit constexpr 234s 1949: tuple(const tuple<_UElements...>& __in) 234s 1949: noexcept(__nothrow_constructible()) 234s 1949: : _Inherited(static_cast&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template&&>(), 234s 1949: _ImplicitCtor<_Valid, _UElements...> = true> 234s 1949: constexpr 234s 1949: tuple(tuple<_UElements...>&& __in) 234s 1949: noexcept(__nothrow_constructible<_UElements...>()) 234s 1949: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template&&>(), 234s 1949: _ExplicitCtor<_Valid, _UElements...> = false> 234s 1949: explicit constexpr 234s 1949: tuple(tuple<_UElements...>&& __in) 234s 1949: noexcept(__nothrow_constructible<_UElements...>()) 234s 1949: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template::value> = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a) 234s 1949: : _Inherited(__tag, __a) { } 234s 1949: 234s 1949: template::value> = false> 234s 1949: 234s 1949: explicit 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a) 234s 1949: : _Inherited(__tag, __a) { } 234s 1949: 234s 1949: template= 1), 234s 1949: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const _Elements&... __elements) 234s 1949: : _Inherited(__tag, __a, __elements...) { } 234s 1949: 234s 1949: template= 1), 234s 1949: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 234s 1949: 234s 1949: explicit 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const _Elements&... __elements) 234s 1949: : _Inherited(__tag, __a, __elements...) { } 234s 1949: 234s 1949: template(), 234s 1949: _ImplicitCtor<_Valid, _UElements...> = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: _UElements&&... __elements) 234s 1949: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 234s 1949: { ; } 234s 1949: 234s 1949: template(), 234s 1949: _ExplicitCtor<_Valid, _UElements...> = false> 234s 1949: 234s 1949: explicit 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: _UElements&&... __elements) 234s 1949: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 234s 1949: { ; } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 234s 1949: : _Inherited(__tag, __a, static_cast(__in)) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 234s 1949: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 234s 1949: 234s 1949: template&>(), 234s 1949: _ImplicitCtor<_Valid, const _UElements&...> = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const tuple<_UElements...>& __in) 234s 1949: : _Inherited(__tag, __a, 234s 1949: static_cast&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template&>(), 234s 1949: _ExplicitCtor<_Valid, const _UElements&...> = false> 234s 1949: 234s 1949: explicit 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const tuple<_UElements...>& __in) 234s 1949: : _Inherited(__tag, __a, 234s 1949: static_cast&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template&&>(), 234s 1949: _ImplicitCtor<_Valid, _UElements...> = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: tuple<_UElements...>&& __in) 234s 1949: : _Inherited(__tag, __a, 234s 1949: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template&&>(), 234s 1949: _ExplicitCtor<_Valid, _UElements...> = false> 234s 1949: 234s 1949: explicit 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: tuple<_UElements...>&& __in) 234s 1949: : _Inherited(__tag, __a, 234s 1949: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 234s 1949: { ; } 234s 1949: # 1887 "/usr/include/c++/15/tuple" 3 4 234s 1949: private: 234s 1949: template 234s 1949: static constexpr 234s 1949: __enable_if_t 234s 1949: __assignable() 234s 1949: { return __and_...>::value; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __nothrow_assignable() 234s 1949: { 234s 1949: return 234s 1949: __and_...>::value; 234s 1949: } 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: tuple& 234s 1949: operator=(__conditional_t<__assignable(), 234s 1949: const tuple&, 234s 1949: const __nonesuch&> __in) 234s 1949: noexcept(__nothrow_assignable()) 234s 1949: { 234s 1949: this->_M_assign(__in); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: tuple& 234s 1949: operator=(__conditional_t<__assignable<_Elements...>(), 234s 1949: tuple&&, 234s 1949: __nonesuch&&> __in) 234s 1949: noexcept(__nothrow_assignable<_Elements...>()) 234s 1949: { 234s 1949: this->_M_assign(std::move(__in)); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: __enable_if_t<__assignable(), tuple&> 234s 1949: operator=(const tuple<_UElements...>& __in) 234s 1949: noexcept(__nothrow_assignable()) 234s 1949: { 234s 1949: this->_M_assign(__in); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: __enable_if_t<__assignable<_UElements...>(), tuple&> 234s 1949: operator=(tuple<_UElements...>&& __in) 234s 1949: noexcept(__nothrow_assignable<_UElements...>()) 234s 1949: { 234s 1949: this->_M_assign(std::move(__in)); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: swap(tuple& __in) 234s 1949: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value) 234s 1949: { _Inherited::_M_swap(__in); } 234s 1949: # 1967 "/usr/include/c++/15/tuple" 3 4 234s 1949: }; 234s 1949: # 1983 "/usr/include/c++/15/tuple" 3 4 234s 1949: template<> 234s 1949: class tuple<> 234s 1949: { 234s 1949: public: 234s 1949: 234s 1949: void swap(tuple&) noexcept { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: tuple() = default; 234s 1949: 234s 1949: template 234s 1949: 234s 1949: tuple(allocator_arg_t, const _Alloc&) noexcept { } 234s 1949: template 234s 1949: 234s 1949: tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept { } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> 234s 1949: { 234s 1949: typedef _Tuple_impl<0, _T1, _T2> _Inherited; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _ImplicitDefaultCtor = __enable_if_t< 234s 1949: _TupleConstraints<_Dummy, _U1, _U2>:: 234s 1949: __is_implicitly_default_constructible(), 234s 1949: bool>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _ExplicitDefaultCtor = __enable_if_t< 234s 1949: _TupleConstraints<_Dummy, _U1, _U2>:: 234s 1949: __is_explicitly_default_constructible(), 234s 1949: bool>; 234s 1949: 234s 1949: template 234s 1949: using _TCC = _TupleConstraints<_Dummy, _T1, _T2>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _ImplicitCtor = __enable_if_t< 234s 1949: _TCC<_Cond>::template __is_implicitly_constructible<_U1, _U2>(), 234s 1949: bool>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _ExplicitCtor = __enable_if_t< 234s 1949: _TCC<_Cond>::template __is_explicitly_constructible<_U1, _U2>(), 234s 1949: bool>; 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __assignable() 234s 1949: { 234s 1949: return __and_, 234s 1949: is_assignable<_T2&, _U2>>::value; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __nothrow_assignable() 234s 1949: { 234s 1949: return __and_, 234s 1949: is_nothrow_assignable<_T2&, _U2>>::value; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __nothrow_constructible() 234s 1949: { 234s 1949: return __and_, 234s 1949: is_nothrow_constructible<_T2, _U2>>::value; 234s 1949: } 234s 1949: 234s 1949: static constexpr bool __nothrow_default_constructible() 234s 1949: { 234s 1949: return __and_, 234s 1949: is_nothrow_default_constructible<_T2>>::value; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool __is_alloc_arg() 234s 1949: { return is_same<__remove_cvref_t<_U1>, allocator_arg_t>::value; } 234s 1949: # 2086 "/usr/include/c++/15/tuple" 3 4 234s 1949: public: 234s 1949: template = true> 234s 1949: constexpr 234s 1949: tuple() 234s 1949: noexcept(__nothrow_default_constructible()) 234s 1949: : _Inherited() { } 234s 1949: 234s 1949: template = false> 234s 1949: explicit constexpr 234s 1949: tuple() 234s 1949: noexcept(__nothrow_default_constructible()) 234s 1949: : _Inherited() { } 234s 1949: 234s 1949: template = true> 234s 1949: constexpr 234s 1949: tuple(const _T1& __a1, const _T2& __a2) 234s 1949: noexcept(__nothrow_constructible()) 234s 1949: : _Inherited(__a1, __a2) { } 234s 1949: 234s 1949: template = false> 234s 1949: explicit constexpr 234s 1949: tuple(const _T1& __a1, const _T2& __a2) 234s 1949: noexcept(__nothrow_constructible()) 234s 1949: : _Inherited(__a1, __a2) { } 234s 1949: 234s 1949: template(), _U1, _U2> = true> 234s 1949: constexpr 234s 1949: tuple(_U1&& __a1, _U2&& __a2) 234s 1949: noexcept(__nothrow_constructible<_U1, _U2>()) 234s 1949: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) 234s 1949: { ; } 234s 1949: 234s 1949: template(), _U1, _U2> = false> 234s 1949: explicit constexpr 234s 1949: tuple(_U1&& __a1, _U2&& __a2) 234s 1949: noexcept(__nothrow_constructible<_U1, _U2>()) 234s 1949: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) 234s 1949: { ; } 234s 1949: 234s 1949: constexpr tuple(const tuple&) = default; 234s 1949: 234s 1949: constexpr tuple(tuple&&) = default; 234s 1949: 234s 1949: template = true> 234s 1949: constexpr 234s 1949: tuple(const tuple<_U1, _U2>& __in) 234s 1949: noexcept(__nothrow_constructible()) 234s 1949: : _Inherited(static_cast&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template = false> 234s 1949: explicit constexpr 234s 1949: tuple(const tuple<_U1, _U2>& __in) 234s 1949: noexcept(__nothrow_constructible()) 234s 1949: : _Inherited(static_cast&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template = true> 234s 1949: constexpr 234s 1949: tuple(tuple<_U1, _U2>&& __in) 234s 1949: noexcept(__nothrow_constructible<_U1, _U2>()) 234s 1949: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template = false> 234s 1949: explicit constexpr 234s 1949: tuple(tuple<_U1, _U2>&& __in) 234s 1949: noexcept(__nothrow_constructible<_U1, _U2>()) 234s 1949: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template = true> 234s 1949: constexpr 234s 1949: tuple(const pair<_U1, _U2>& __in) 234s 1949: noexcept(__nothrow_constructible()) 234s 1949: : _Inherited(__in.first, __in.second) 234s 1949: { ; } 234s 1949: 234s 1949: template = false> 234s 1949: explicit constexpr 234s 1949: tuple(const pair<_U1, _U2>& __in) 234s 1949: noexcept(__nothrow_constructible()) 234s 1949: : _Inherited(__in.first, __in.second) 234s 1949: { ; } 234s 1949: 234s 1949: template = true> 234s 1949: constexpr 234s 1949: tuple(pair<_U1, _U2>&& __in) 234s 1949: noexcept(__nothrow_constructible<_U1, _U2>()) 234s 1949: : _Inherited(std::forward<_U1>(__in.first), 234s 1949: std::forward<_U2>(__in.second)) 234s 1949: { ; } 234s 1949: 234s 1949: template = false> 234s 1949: explicit constexpr 234s 1949: tuple(pair<_U1, _U2>&& __in) 234s 1949: noexcept(__nothrow_constructible<_U1, _U2>()) 234s 1949: : _Inherited(std::forward<_U1>(__in.first), 234s 1949: std::forward<_U2>(__in.second)) 234s 1949: { ; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template::value, _T1, _T2> = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a) 234s 1949: : _Inherited(__tag, __a) { } 234s 1949: 234s 1949: template::value, _T1, _T2> = false> 234s 1949: 234s 1949: explicit 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a) 234s 1949: : _Inherited(__tag, __a) { } 234s 1949: 234s 1949: template = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const _T1& __a1, const _T2& __a2) 234s 1949: : _Inherited(__tag, __a, __a1, __a2) { } 234s 1949: 234s 1949: template = false> 234s 1949: explicit 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const _T1& __a1, const _T2& __a2) 234s 1949: : _Inherited(__tag, __a, __a1, __a2) { } 234s 1949: 234s 1949: template = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) 234s 1949: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 234s 1949: std::forward<_U2>(__a2)) 234s 1949: { ; } 234s 1949: 234s 1949: template = false> 234s 1949: explicit 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: _U1&& __a1, _U2&& __a2) 234s 1949: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 234s 1949: std::forward<_U2>(__a2)) 234s 1949: { ; } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 234s 1949: : _Inherited(__tag, __a, static_cast(__in)) { } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 234s 1949: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 234s 1949: 234s 1949: template = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const tuple<_U1, _U2>& __in) 234s 1949: : _Inherited(__tag, __a, 234s 1949: static_cast&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template = false> 234s 1949: explicit 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const tuple<_U1, _U2>& __in) 234s 1949: : _Inherited(__tag, __a, 234s 1949: static_cast&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 234s 1949: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template = false> 234s 1949: explicit 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 234s 1949: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 234s 1949: { ; } 234s 1949: 234s 1949: template = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const pair<_U1, _U2>& __in) 234s 1949: : _Inherited(__tag, __a, __in.first, __in.second) 234s 1949: { ; } 234s 1949: 234s 1949: template = false> 234s 1949: explicit 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, 234s 1949: const pair<_U1, _U2>& __in) 234s 1949: : _Inherited(__tag, __a, __in.first, __in.second) 234s 1949: { ; } 234s 1949: 234s 1949: template = true> 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 234s 1949: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 234s 1949: std::forward<_U2>(__in.second)) 234s 1949: { ; } 234s 1949: 234s 1949: template = false> 234s 1949: explicit 234s 1949: 234s 1949: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 234s 1949: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 234s 1949: std::forward<_U2>(__in.second)) 234s 1949: { ; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: tuple& 234s 1949: operator=(__conditional_t<__assignable(), 234s 1949: const tuple&, 234s 1949: const __nonesuch&> __in) 234s 1949: noexcept(__nothrow_assignable()) 234s 1949: { 234s 1949: this->_M_assign(__in); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: tuple& 234s 1949: operator=(__conditional_t<__assignable<_T1, _T2>(), 234s 1949: tuple&&, 234s 1949: __nonesuch&&> __in) 234s 1949: noexcept(__nothrow_assignable<_T1, _T2>()) 234s 1949: { 234s 1949: this->_M_assign(std::move(__in)); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: __enable_if_t<__assignable(), tuple&> 234s 1949: operator=(const tuple<_U1, _U2>& __in) 234s 1949: noexcept(__nothrow_assignable()) 234s 1949: { 234s 1949: this->_M_assign(__in); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 234s 1949: operator=(tuple<_U1, _U2>&& __in) 234s 1949: noexcept(__nothrow_assignable<_U1, _U2>()) 234s 1949: { 234s 1949: this->_M_assign(std::move(__in)); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: __enable_if_t<__assignable(), tuple&> 234s 1949: operator=(const pair<_U1, _U2>& __in) 234s 1949: noexcept(__nothrow_assignable()) 234s 1949: { 234s 1949: this->_M_head(*this) = __in.first; 234s 1949: this->_M_tail(*this)._M_head(*this) = __in.second; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 234s 1949: operator=(pair<_U1, _U2>&& __in) 234s 1949: noexcept(__nothrow_assignable<_U1, _U2>()) 234s 1949: { 234s 1949: this->_M_head(*this) = std::forward<_U1>(__in.first); 234s 1949: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: swap(tuple& __in) 234s 1949: noexcept(__and_<__is_nothrow_swappable<_T1>, 234s 1949: __is_nothrow_swappable<_T2>>::value) 234s 1949: { _Inherited::_M_swap(__in); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct tuple_size> 234s 1949: : public integral_constant { }; 234s 1949: # 2418 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: struct tuple_element<__i, tuple<_Types...>> 234s 1949: { 234s 1949: static_assert(__i < sizeof...(_Types), "tuple index must be in range"); 234s 1949: 234s 1949: using type = typename _Nth_type<__i, _Types...>::type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: constexpr _Head& 234s 1949: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 234s 1949: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 234s 1949: 234s 1949: template 234s 1949: constexpr const _Head& 234s 1949: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 234s 1949: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __enable_if_t<(__i >= sizeof...(_Types))> 234s 1949: __get_helper(const tuple<_Types...>&) = delete; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 234s 1949: get(tuple<_Elements...>& __t) noexcept 234s 1949: { return std::__get_helper<__i>(__t); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 234s 1949: get(const tuple<_Elements...>& __t) noexcept 234s 1949: { return std::__get_helper<__i>(__t); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 234s 1949: get(tuple<_Elements...>&& __t) noexcept 234s 1949: { 234s 1949: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 234s 1949: return std::forward<__element_type>(std::__get_helper<__i>(__t)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 234s 1949: get(const tuple<_Elements...>&& __t) noexcept 234s 1949: { 234s 1949: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 234s 1949: return std::forward(std::__get_helper<__i>(__t)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr __enable_if_t<(__i >= sizeof...(_Elements))> 234s 1949: get(const tuple<_Elements...>&) = delete; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp& 234s 1949: get(tuple<_Types...>& __t) noexcept 234s 1949: { 234s 1949: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); 234s 1949: static_assert(__idx < sizeof...(_Types), 234s 1949: "the type T in std::get must occur exactly once in the tuple"); 234s 1949: return std::__get_helper<__idx>(__t); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr _Tp&& 234s 1949: get(tuple<_Types...>&& __t) noexcept 234s 1949: { 234s 1949: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); 234s 1949: static_assert(__idx < sizeof...(_Types), 234s 1949: "the type T in std::get must occur exactly once in the tuple"); 234s 1949: return std::forward<_Tp>(std::__get_helper<__idx>(__t)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr const _Tp& 234s 1949: get(const tuple<_Types...>& __t) noexcept 234s 1949: { 234s 1949: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); 234s 1949: static_assert(__idx < sizeof...(_Types), 234s 1949: "the type T in std::get must occur exactly once in the tuple"); 234s 1949: return std::__get_helper<__idx>(__t); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr const _Tp&& 234s 1949: get(const tuple<_Types...>&& __t) noexcept 234s 1949: { 234s 1949: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); 234s 1949: static_assert(__idx < sizeof...(_Types), 234s 1949: "the type T in std::get must occur exactly once in the tuple"); 234s 1949: return std::forward(std::__get_helper<__idx>(__t)); 234s 1949: } 234s 1949: # 2578 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: struct __tuple_compare 234s 1949: { 234s 1949: static constexpr bool 234s 1949: __eq(const _Tp& __t, const _Up& __u) 234s 1949: { 234s 1949: return bool(std::get<__i>(__t) == std::get<__i>(__u)) 234s 1949: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); 234s 1949: } 234s 1949: 234s 1949: static constexpr bool 234s 1949: __less(const _Tp& __t, const _Up& __u) 234s 1949: { 234s 1949: return bool(std::get<__i>(__t) < std::get<__i>(__u)) 234s 1949: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) 234s 1949: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __tuple_compare<_Tp, _Up, __size, __size> 234s 1949: { 234s 1949: static constexpr bool 234s 1949: __eq(const _Tp&, const _Up&) { return true; } 234s 1949: 234s 1949: static constexpr bool 234s 1949: __less(const _Tp&, const _Up&) { return false; } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: constexpr bool 234s 1949: operator==(const tuple<_TElements...>& __t, 234s 1949: const tuple<_UElements...>& __u) 234s 1949: { 234s 1949: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 234s 1949: "tuple objects can only be compared if they have equal sizes."); 234s 1949: using __compare = __tuple_compare, 234s 1949: tuple<_UElements...>, 234s 1949: 0, sizeof...(_TElements)>; 234s 1949: return __compare::__eq(__t, __u); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: constexpr bool 234s 1949: operator<(const tuple<_TElements...>& __t, 234s 1949: const tuple<_UElements...>& __u) 234s 1949: { 234s 1949: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 234s 1949: "tuple objects can only be compared if they have equal sizes."); 234s 1949: using __compare = __tuple_compare, 234s 1949: tuple<_UElements...>, 234s 1949: 0, sizeof...(_TElements)>; 234s 1949: return __compare::__less(__t, __u); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: constexpr bool 234s 1949: operator!=(const tuple<_TElements...>& __t, 234s 1949: const tuple<_UElements...>& __u) 234s 1949: { return !(__t == __u); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: constexpr bool 234s 1949: operator>(const tuple<_TElements...>& __t, 234s 1949: const tuple<_UElements...>& __u) 234s 1949: { return __u < __t; } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: constexpr bool 234s 1949: operator<=(const tuple<_TElements...>& __t, 234s 1949: const tuple<_UElements...>& __u) 234s 1949: { return !(__u < __t); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: constexpr bool 234s 1949: operator>=(const tuple<_TElements...>& __t, 234s 1949: const tuple<_UElements...>& __u) 234s 1949: { return !(__t < __u); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr tuple::__type...> 234s 1949: make_tuple(_Elements&&... __args) 234s 1949: { 234s 1949: typedef tuple::__type...> 234s 1949: __result_type; 234s 1949: return __result_type(std::forward<_Elements>(__args)...); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr tuple<_Elements&&...> 234s 1949: forward_as_tuple(_Elements&&... __args) noexcept 234s 1949: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __make_tuple_impl; 234s 1949: 234s 1949: template 234s 1949: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> 234s 1949: : __make_tuple_impl<_Idx + 1, 234s 1949: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, 234s 1949: _Tuple, _Nm> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> 234s 1949: { 234s 1949: typedef tuple<_Tp...> __type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __do_make_tuple 234s 1949: : __make_tuple_impl<0, tuple<>, _Tuple, tuple_size<_Tuple>::value> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __make_tuple 234s 1949: : public __do_make_tuple<__remove_cvref_t<_Tuple>> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __combine_tuples; 234s 1949: 234s 1949: template<> 234s 1949: struct __combine_tuples<> 234s 1949: { 234s 1949: typedef tuple<> __type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __combine_tuples> 234s 1949: { 234s 1949: typedef tuple<_Ts...> __type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __combine_tuples, tuple<_T2s...>, _Rem...> 234s 1949: { 234s 1949: typedef typename __combine_tuples, 234s 1949: _Rem...>::__type __type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __tuple_cat_result 234s 1949: { 234s 1949: typedef typename __combine_tuples 234s 1949: ::__type...>::__type __type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __make_1st_indices; 234s 1949: 234s 1949: template<> 234s 1949: struct __make_1st_indices<> 234s 1949: { 234s 1949: typedef _Index_tuple<> __type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __make_1st_indices<_Tp, _Tpls...> 234s 1949: { 234s 1949: typedef typename _Build_index_tuple::type>::value>::__type __type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __tuple_concater; 234s 1949: 234s 1949: template 234s 1949: struct __tuple_concater<_Ret, _Index_tuple<_Is...>, _Tp, _Tpls...> 234s 1949: { 234s 1949: template 234s 1949: static constexpr _Ret 234s 1949: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) 234s 1949: { 234s 1949: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 234s 1949: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; 234s 1949: return __next::_S_do(std::forward<_Tpls>(__tps)..., 234s 1949: std::forward<_Us>(__us)..., 234s 1949: std::get<_Is>(std::forward<_Tp>(__tp))...); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __tuple_concater<_Ret, _Index_tuple<>> 234s 1949: { 234s 1949: template 234s 1949: static constexpr _Ret 234s 1949: _S_do(_Us&&... __us) 234s 1949: { 234s 1949: return _Ret(std::forward<_Us>(__us)...); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __is_tuple_like_impl> : true_type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template...>::value>::type> 234s 1949: 234s 1949: constexpr auto 234s 1949: tuple_cat(_Tpls&&... __tpls) 234s 1949: -> typename __tuple_cat_result<_Tpls...>::__type 234s 1949: { 234s 1949: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; 234s 1949: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 234s 1949: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; 234s 1949: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr tuple<_Elements&...> 234s 1949: tie(_Elements&... __args) noexcept 234s 1949: { return tuple<_Elements&...>(__args...); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: inline 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: 234s 1949: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) 234s 1949: noexcept(noexcept(__x.swap(__y))) 234s 1949: { __x.swap(__y); } 234s 1949: # 2855 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: struct uses_allocator, _Alloc> : true_type { }; 234s 1949: # 2867 "/usr/include/c++/15/tuple" 3 4 234s 1949: template 234s 1949: template 234s 1949: 234s 1949: inline 234s 1949: pair<_T1, _T2>:: 234s 1949: pair(piecewise_construct_t, 234s 1949: tuple<_Args1...> __first, tuple<_Args2...> __second) 234s 1949: : pair(__first, __second, 234s 1949: typename _Build_index_tuple::__type(), 234s 1949: typename _Build_index_tuple::__type()) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: inline 234s 1949: pair<_T1, _T2>:: 234s 1949: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, 234s 1949: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) 234s 1949: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), 234s 1949: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) 234s 1949: { } 234s 1949: # 3029 "/usr/include/c++/15/tuple" 3 4 234s 1949: 234s 1949: } 234s 1949: # 43 "/usr/include/c++/15/mutex" 2 3 4 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/chrono.h" 1 3 4 234s 1949: # 39 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/ratio" 1 3 4 234s 1949: # 45 "/usr/include/c++/15/ratio" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 46 "/usr/include/c++/15/ratio" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 61 "/usr/include/c++/15/ratio" 3 4 234s 1949: template 234s 1949: struct __static_sign 234s 1949: : integral_constant 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __static_abs 234s 1949: : integral_constant::value> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __static_gcd 234s 1949: : __static_gcd<_Qn, (_Pn % _Qn)> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __static_gcd<_Pn, 0> 234s 1949: : integral_constant::value> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __static_gcd<0, _Qn> 234s 1949: : integral_constant::value> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __safe_multiply 234s 1949: { 234s 1949: private: 234s 1949: static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 234s 1949: 234s 1949: static const uintmax_t __a0 = __static_abs<_Pn>::value % __c; 234s 1949: static const uintmax_t __a1 = __static_abs<_Pn>::value / __c; 234s 1949: static const uintmax_t __b0 = __static_abs<_Qn>::value % __c; 234s 1949: static const uintmax_t __b1 = __static_abs<_Qn>::value / __c; 234s 1949: 234s 1949: static_assert(__a1 == 0 || __b1 == 0, 234s 1949: "overflow in multiplication"); 234s 1949: static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1), 234s 1949: "overflow in multiplication"); 234s 1949: static_assert(__b0 * __a0 <= 0x7fffffffffffffffLL, 234s 1949: "overflow in multiplication"); 234s 1949: static_assert((__a0 * __b1 + __b0 * __a1) * __c 234s 1949: <= 0x7fffffffffffffffLL - __b0 * __a0, 234s 1949: "overflow in multiplication"); 234s 1949: 234s 1949: public: 234s 1949: static const intmax_t value = _Pn * _Qn; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __big_less 234s 1949: : integral_constant 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __big_add 234s 1949: { 234s 1949: static constexpr uintmax_t __lo = __lo1 + __lo2; 234s 1949: static constexpr uintmax_t __hi = (__hi1 + __hi2 + 234s 1949: (__lo1 + __lo2 < __lo1)); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __big_sub 234s 1949: { 234s 1949: static_assert(!__big_less<__hi1, __lo1, __hi2, __lo2>::value, 234s 1949: "Internal library error"); 234s 1949: static constexpr uintmax_t __lo = __lo1 - __lo2; 234s 1949: static constexpr uintmax_t __hi = (__hi1 - __hi2 - 234s 1949: (__lo1 < __lo2)); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __big_mul 234s 1949: { 234s 1949: private: 234s 1949: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 234s 1949: static constexpr uintmax_t __x0 = __x % __c; 234s 1949: static constexpr uintmax_t __x1 = __x / __c; 234s 1949: static constexpr uintmax_t __y0 = __y % __c; 234s 1949: static constexpr uintmax_t __y1 = __y / __c; 234s 1949: static constexpr uintmax_t __x0y0 = __x0 * __y0; 234s 1949: static constexpr uintmax_t __x0y1 = __x0 * __y1; 234s 1949: static constexpr uintmax_t __x1y0 = __x1 * __y0; 234s 1949: static constexpr uintmax_t __x1y1 = __x1 * __y1; 234s 1949: static constexpr uintmax_t __mix = __x0y1 + __x1y0; 234s 1949: static constexpr uintmax_t __mix_lo = __mix * __c; 234s 1949: static constexpr uintmax_t __mix_hi 234s 1949: = __mix / __c + ((__mix < __x0y1) ? __c : 0); 234s 1949: typedef __big_add<__mix_hi, __mix_lo, __x1y1, __x0y0> _Res; 234s 1949: public: 234s 1949: static constexpr uintmax_t __hi = _Res::__hi; 234s 1949: static constexpr uintmax_t __lo = _Res::__lo; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __big_div_impl 234s 1949: { 234s 1949: private: 234s 1949: static_assert(__d >= (uintmax_t(1) << (sizeof(intmax_t) * 8 - 1)), 234s 1949: "Internal library error"); 234s 1949: static_assert(__n1 < __d, "Internal library error"); 234s 1949: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 234s 1949: static constexpr uintmax_t __d1 = __d / __c; 234s 1949: static constexpr uintmax_t __d0 = __d % __c; 234s 1949: 234s 1949: static constexpr uintmax_t __q1x = __n1 / __d1; 234s 1949: static constexpr uintmax_t __r1x = __n1 % __d1; 234s 1949: static constexpr uintmax_t __m = __q1x * __d0; 234s 1949: static constexpr uintmax_t __r1y = __r1x * __c + __n0 / __c; 234s 1949: static constexpr uintmax_t __r1z = __r1y + __d; 234s 1949: static constexpr uintmax_t __r1 234s 1949: = ((__r1y < __m) ? ((__r1z >= __d) && (__r1z < __m)) 234s 1949: ? (__r1z + __d) : __r1z : __r1y) - __m; 234s 1949: static constexpr uintmax_t __q1 234s 1949: = __q1x - ((__r1y < __m) 234s 1949: ? ((__r1z >= __d) && (__r1z < __m)) ? 2 : 1 : 0); 234s 1949: static constexpr uintmax_t __q0x = __r1 / __d1; 234s 1949: static constexpr uintmax_t __r0x = __r1 % __d1; 234s 1949: static constexpr uintmax_t __n = __q0x * __d0; 234s 1949: static constexpr uintmax_t __r0y = __r0x * __c + __n0 % __c; 234s 1949: static constexpr uintmax_t __r0z = __r0y + __d; 234s 1949: static constexpr uintmax_t __r0 234s 1949: = ((__r0y < __n) ? ((__r0z >= __d) && (__r0z < __n)) 234s 1949: ? (__r0z + __d) : __r0z : __r0y) - __n; 234s 1949: static constexpr uintmax_t __q0 234s 1949: = __q0x - ((__r0y < __n) ? ((__r0z >= __d) 234s 1949: && (__r0z < __n)) ? 2 : 1 : 0); 234s 1949: 234s 1949: public: 234s 1949: static constexpr uintmax_t __quot = __q1 * __c + __q0; 234s 1949: static constexpr uintmax_t __rem = __r0; 234s 1949: 234s 1949: private: 234s 1949: typedef __big_mul<__quot, __d> _Prod; 234s 1949: typedef __big_add<_Prod::__hi, _Prod::__lo, 0, __rem> _Sum; 234s 1949: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, 234s 1949: "Internal library error"); 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __big_div 234s 1949: { 234s 1949: private: 234s 1949: static_assert(__d != 0, "Internal library error"); 234s 1949: static_assert(sizeof (uintmax_t) == sizeof (unsigned long long), 234s 1949: "This library calls __builtin_clzll on uintmax_t, which " 234s 1949: "is unsafe on your platform. Please complain to " 234s 1949: "http://gcc.gnu.org/bugzilla/"); 234s 1949: static constexpr int __shift = __builtin_clzll(__d); 234s 1949: static constexpr int __coshift_ = sizeof(uintmax_t) * 8 - __shift; 234s 1949: static constexpr int __coshift = (__shift != 0) ? __coshift_ : 0; 234s 1949: static constexpr uintmax_t __c1 = uintmax_t(1) << __shift; 234s 1949: static constexpr uintmax_t __c2 = uintmax_t(1) << __coshift; 234s 1949: static constexpr uintmax_t __new_d = __d * __c1; 234s 1949: static constexpr uintmax_t __new_n0 = __n0 * __c1; 234s 1949: static constexpr uintmax_t __n1_shifted = (__n1 % __d) * __c1; 234s 1949: static constexpr uintmax_t __n0_top = (__shift != 0) ? (__n0 / __c2) : 0; 234s 1949: static constexpr uintmax_t __new_n1 = __n1_shifted + __n0_top; 234s 1949: typedef __big_div_impl<__new_n1, __new_n0, __new_d> _Res; 234s 1949: 234s 1949: public: 234s 1949: static constexpr uintmax_t __quot_hi = __n1 / __d; 234s 1949: static constexpr uintmax_t __quot_lo = _Res::__quot; 234s 1949: static constexpr uintmax_t __rem = _Res::__rem / __c1; 234s 1949: 234s 1949: private: 234s 1949: typedef __big_mul<__quot_lo, __d> _P0; 234s 1949: typedef __big_mul<__quot_hi, __d> _P1; 234s 1949: typedef __big_add<_P0::__hi, _P0::__lo, _P1::__lo, __rem> _Sum; 234s 1949: 234s 1949: static_assert(_P1::__hi == 0, "Internal library error"); 234s 1949: static_assert(_Sum::__hi >= _P0::__hi, "Internal library error"); 234s 1949: 234s 1949: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, 234s 1949: "Internal library error"); 234s 1949: static_assert(__rem < __d, "Internal library error"); 234s 1949: }; 234s 1949: # 270 "/usr/include/c++/15/ratio" 3 4 234s 1949: template 234s 1949: struct ratio 234s 1949: { 234s 1949: static_assert(_Den != 0, "denominator cannot be zero"); 234s 1949: static_assert(_Num >= -0x7fffffffffffffffLL && _Den >= -0x7fffffffffffffffLL, 234s 1949: "out of range"); 234s 1949: 234s 1949: 234s 1949: static constexpr intmax_t num = 234s 1949: _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value; 234s 1949: 234s 1949: static constexpr intmax_t den = 234s 1949: __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value; 234s 1949: 234s 1949: typedef ratio type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr intmax_t ratio<_Num, _Den>::num; 234s 1949: 234s 1949: template 234s 1949: constexpr intmax_t ratio<_Num, _Den>::den; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __is_ratio 234s 1949: : std::false_type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_ratio> 234s 1949: : std::true_type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr bool __is_ratio_v = false; 234s 1949: template 234s 1949: constexpr bool __is_ratio_v> = true; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: __are_both_ratios() noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: return __and_<__is_ratio<_R1>, __is_ratio<_R2>>::value; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: struct __ratio_multiply 234s 1949: { 234s 1949: static_assert(std::__are_both_ratios<_R1, _R2>(), 234s 1949: "both template arguments must be a std::ratio"); 234s 1949: 234s 1949: private: 234s 1949: static const intmax_t __gcd1 = 234s 1949: __static_gcd<_R1::num, _R2::den>::value; 234s 1949: static const intmax_t __gcd2 = 234s 1949: __static_gcd<_R2::num, _R1::den>::value; 234s 1949: 234s 1949: public: 234s 1949: typedef ratio< 234s 1949: __safe_multiply<(_R1::num / __gcd1), 234s 1949: (_R2::num / __gcd2)>::value, 234s 1949: __safe_multiply<(_R1::den / __gcd2), 234s 1949: (_R2::den / __gcd1)>::value> type; 234s 1949: 234s 1949: static constexpr intmax_t num = type::num; 234s 1949: static constexpr intmax_t den = type::den; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr intmax_t __ratio_multiply<_R1, _R2>::num; 234s 1949: 234s 1949: template 234s 1949: constexpr intmax_t __ratio_multiply<_R1, _R2>::den; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using ratio_multiply = typename __ratio_multiply<_R1, _R2>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __ratio_divide 234s 1949: { 234s 1949: static_assert(_R2::num != 0, "division by 0"); 234s 1949: 234s 1949: typedef typename __ratio_multiply< 234s 1949: _R1, 234s 1949: ratio<_R2::den, _R2::num>>::type type; 234s 1949: 234s 1949: static constexpr intmax_t num = type::num; 234s 1949: static constexpr intmax_t den = type::den; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr intmax_t __ratio_divide<_R1, _R2>::num; 234s 1949: 234s 1949: template 234s 1949: constexpr intmax_t __ratio_divide<_R1, _R2>::den; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using ratio_divide = typename __ratio_divide<_R1, _R2>::type; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct ratio_equal 234s 1949: : integral_constant 234s 1949: { 234s 1949: static_assert(std::__are_both_ratios<_R1, _R2>(), 234s 1949: "both template arguments must be a std::ratio"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct ratio_not_equal 234s 1949: : integral_constant::value> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template, 234s 1949: typename _Right = __big_mul<_R2::num,_R1::den> > 234s 1949: struct __ratio_less_impl_1 234s 1949: : integral_constant::value> 234s 1949: { }; 234s 1949: 234s 1949: template::value 234s 1949: != __static_sign<_R2::num>::value)), 234s 1949: bool = (__static_sign<_R1::num>::value == -1 234s 1949: && __static_sign<_R2::num>::value == -1)> 234s 1949: struct __ratio_less_impl 234s 1949: : __ratio_less_impl_1<_R1, _R2>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __ratio_less_impl<_R1, _R2, true, false> 234s 1949: : integral_constant 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __ratio_less_impl<_R1, _R2, false, true> 234s 1949: : __ratio_less_impl_1, 234s 1949: ratio<-_R1::num, _R1::den> >::type 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct ratio_less 234s 1949: : __ratio_less_impl<_R1, _R2>::type 234s 1949: { 234s 1949: static_assert(std::__are_both_ratios<_R1, _R2>(), 234s 1949: "both template arguments must be a std::ratio"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct ratio_less_equal 234s 1949: : integral_constant::value> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct ratio_greater 234s 1949: : integral_constant::value> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct ratio_greater_equal 234s 1949: : integral_constant::value> 234s 1949: { }; 234s 1949: # 489 "/usr/include/c++/15/ratio" 3 4 234s 1949: template= 0), 234s 1949: bool = (_R2::num >= 0), 234s 1949: bool = ratio_less::value, _R1::den>, 234s 1949: ratio<__static_abs<_R2::num>::value, _R2::den> >::value> 234s 1949: struct __ratio_add_impl 234s 1949: { 234s 1949: private: 234s 1949: typedef typename __ratio_add_impl< 234s 1949: ratio<-_R1::num, _R1::den>, 234s 1949: ratio<-_R2::num, _R2::den> >::type __t; 234s 1949: public: 234s 1949: typedef ratio<-__t::num, __t::den> type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __ratio_add_impl<_R1, _R2, true, true, __b> 234s 1949: { 234s 1949: private: 234s 1949: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; 234s 1949: static constexpr uintmax_t __d2 = _R2::den / __g; 234s 1949: typedef __big_mul<_R1::den, __d2> __d; 234s 1949: typedef __big_mul<_R1::num, _R2::den / __g> __x; 234s 1949: typedef __big_mul<_R2::num, _R1::den / __g> __y; 234s 1949: typedef __big_add<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; 234s 1949: static_assert(__n::__hi >= __x::__hi, "Internal library error"); 234s 1949: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; 234s 1949: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; 234s 1949: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; 234s 1949: static_assert(__n_final::__rem == 0, "Internal library error"); 234s 1949: static_assert(__n_final::__quot_hi == 0 && 234s 1949: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition"); 234s 1949: typedef __big_mul<_R1::den / __g2, __d2> __d_final; 234s 1949: static_assert(__d_final::__hi == 0 && 234s 1949: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition"); 234s 1949: public: 234s 1949: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __ratio_add_impl<_R1, _R2, false, true, true> 234s 1949: : __ratio_add_impl<_R2, _R1> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __ratio_add_impl<_R1, _R2, true, false, false> 234s 1949: { 234s 1949: private: 234s 1949: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; 234s 1949: static constexpr uintmax_t __d2 = _R2::den / __g; 234s 1949: typedef __big_mul<_R1::den, __d2> __d; 234s 1949: typedef __big_mul<_R1::num, _R2::den / __g> __x; 234s 1949: typedef __big_mul<-_R2::num, _R1::den / __g> __y; 234s 1949: typedef __big_sub<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; 234s 1949: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; 234s 1949: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; 234s 1949: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; 234s 1949: static_assert(__n_final::__rem == 0, "Internal library error"); 234s 1949: static_assert(__n_final::__quot_hi == 0 && 234s 1949: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition"); 234s 1949: typedef __big_mul<_R1::den / __g2, __d2> __d_final; 234s 1949: static_assert(__d_final::__hi == 0 && 234s 1949: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition"); 234s 1949: public: 234s 1949: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __ratio_add 234s 1949: { 234s 1949: static_assert(std::__are_both_ratios<_R1, _R2>(), 234s 1949: "both template arguments must be a std::ratio"); 234s 1949: 234s 1949: typedef typename __ratio_add_impl<_R1, _R2>::type type; 234s 1949: static constexpr intmax_t num = type::num; 234s 1949: static constexpr intmax_t den = type::den; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr intmax_t __ratio_add<_R1, _R2>::num; 234s 1949: 234s 1949: template 234s 1949: constexpr intmax_t __ratio_add<_R1, _R2>::den; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using ratio_add = typename __ratio_add<_R1, _R2>::type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __ratio_subtract 234s 1949: { 234s 1949: typedef typename __ratio_add< 234s 1949: _R1, 234s 1949: ratio<-_R2::num, _R2::den>>::type type; 234s 1949: 234s 1949: static constexpr intmax_t num = type::num; 234s 1949: static constexpr intmax_t den = type::den; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr intmax_t __ratio_subtract<_R1, _R2>::num; 234s 1949: 234s 1949: template 234s 1949: constexpr intmax_t __ratio_subtract<_R1, _R2>::den; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using ratio_subtract = typename __ratio_subtract<_R1, _R2>::type; 234s 1949: # 620 "/usr/include/c++/15/ratio" 3 4 234s 1949: using atto = ratio< 1, 1000000000000000000>; 234s 1949: using femto = ratio< 1, 1000000000000000>; 234s 1949: using pico = ratio< 1, 1000000000000>; 234s 1949: using nano = ratio< 1, 1000000000>; 234s 1949: using micro = ratio< 1, 1000000>; 234s 1949: using milli = ratio< 1, 1000>; 234s 1949: using centi = ratio< 1, 100>; 234s 1949: using deci = ratio< 1, 10>; 234s 1949: using deca = ratio< 10, 1>; 234s 1949: using hecto = ratio< 100, 1>; 234s 1949: using kilo = ratio< 1000, 1>; 234s 1949: using mega = ratio< 1000000, 1>; 234s 1949: using giga = ratio< 1000000000, 1>; 234s 1949: using tera = ratio< 1000000000000, 1>; 234s 1949: using peta = ratio< 1000000000000000, 1>; 234s 1949: using exa = ratio< 1000000000000000000, 1>; 234s 1949: # 648 "/usr/include/c++/15/ratio" 3 4 234s 1949: 234s 1949: } 234s 1949: # 40 "/usr/include/c++/15/bits/chrono.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/parse_numbers.h" 1 3 4 234s 1949: # 44 "/usr/include/c++/15/bits/parse_numbers.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: namespace __parse_int 234s 1949: { 234s 1949: template 234s 1949: struct _Digit; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '0'> : integral_constant 234s 1949: { 234s 1949: using __valid = true_type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '1'> : integral_constant 234s 1949: { 234s 1949: using __valid = true_type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit_impl : integral_constant 234s 1949: { 234s 1949: static_assert(_Base > _Val, "invalid digit"); 234s 1949: using __valid = true_type; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '2'> : _Digit_impl<_Base, 2> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '3'> : _Digit_impl<_Base, 3> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '4'> : _Digit_impl<_Base, 4> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '5'> : _Digit_impl<_Base, 5> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '6'> : _Digit_impl<_Base, 6> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '7'> : _Digit_impl<_Base, 7> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '8'> : _Digit_impl<_Base, 8> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '9'> : _Digit_impl<_Base, 9> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'a'> : _Digit_impl<_Base, 0xa> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'A'> : _Digit_impl<_Base, 0xa> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'b'> : _Digit_impl<_Base, 0xb> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'B'> : _Digit_impl<_Base, 0xb> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'c'> : _Digit_impl<_Base, 0xc> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'C'> : _Digit_impl<_Base, 0xc> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'd'> : _Digit_impl<_Base, 0xd> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'D'> : _Digit_impl<_Base, 0xd> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'e'> : _Digit_impl<_Base, 0xe> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'E'> : _Digit_impl<_Base, 0xe> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'f'> : _Digit_impl<_Base, 0xf> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, 'F'> : _Digit_impl<_Base, 0xf> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Digit<_Base, '\''> : integral_constant 234s 1949: { 234s 1949: using __valid = false_type; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __ull_constant = integral_constant; 234s 1949: 234s 1949: template 234s 1949: struct _Power_help 234s 1949: { 234s 1949: using __next = typename _Power_help<_Base, _Digs...>::type; 234s 1949: using __valid_digit = typename _Digit<_Base, _Dig>::__valid; 234s 1949: using type 234s 1949: = __ull_constant<__next::value * (__valid_digit{} ? _Base : 1ULL)>; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Power_help<_Base, _Dig> 234s 1949: { 234s 1949: using __valid_digit = typename _Digit<_Base, _Dig>::__valid; 234s 1949: using type = __ull_constant<__valid_digit::value>; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Power : _Power_help<_Base, _Digs...>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Power<_Base> : __ull_constant<0> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Number_help 234s 1949: { 234s 1949: using __digit = _Digit<_Base, _Dig>; 234s 1949: using __valid_digit = typename __digit::__valid; 234s 1949: using __next = _Number_help<_Base, 234s 1949: __valid_digit::value ? _Pow / _Base : _Pow, 234s 1949: _Digs...>; 234s 1949: using type = __ull_constant<_Pow * __digit::value + __next::type::value>; 234s 1949: static_assert((type::value / _Pow) == __digit::value, 234s 1949: "integer literal does not fit in unsigned long long"); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Number_help<_Base, _Pow, '\'', _Dig, _Digs...> 234s 1949: : _Number_help<_Base, _Pow, _Dig, _Digs...> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Number_help<_Base, 1ULL, _Dig> 234s 1949: { 234s 1949: using type = __ull_constant<_Digit<_Base, _Dig>::value>; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Number 234s 1949: : _Number_help<_Base, _Power<_Base, _Digs...>::value, _Digs...>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Number<_Base> 234s 1949: : __ull_constant<0> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Parse_int; 234s 1949: 234s 1949: template 234s 1949: struct _Parse_int<'0', 'b', _Digs...> 234s 1949: : _Number<2U, _Digs...>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Parse_int<'0', 'B', _Digs...> 234s 1949: : _Number<2U, _Digs...>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Parse_int<'0', 'x', _Digs...> 234s 1949: : _Number<16U, _Digs...>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Parse_int<'0', 'X', _Digs...> 234s 1949: : _Number<16U, _Digs...>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Parse_int<'0', _Digs...> 234s 1949: : _Number<8U, _Digs...>::type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Parse_int 234s 1949: : _Number<10U, _Digs...>::type 234s 1949: { }; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: namespace __select_int 234s 1949: { 234s 1949: template 234s 1949: struct _Select_int_base; 234s 1949: 234s 1949: template 234s 1949: struct _Select_int_base<_Val, _IntType, _Ints...> 234s 1949: : __conditional_t<(_Val <= __gnu_cxx::__int_traits<_IntType>::__max), 234s 1949: integral_constant<_IntType, (_IntType)_Val>, 234s 1949: _Select_int_base<_Val, _Ints...>> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct _Select_int_base<_Val> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: using _Select_int = typename _Select_int_base< 234s 1949: __parse_int::_Parse_int<_Digs...>::value, 234s 1949: unsigned char, 234s 1949: unsigned short, 234s 1949: unsigned int, 234s 1949: unsigned long, 234s 1949: unsigned long long 234s 1949: >::type; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 46 "/usr/include/c++/15/bits/chrono.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 52 "/usr/include/c++/15/bits/chrono.h" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace chrono 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: class duration; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class time_point; 234s 1949: 234s 1949: } 234s 1949: # 83 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template 234s 1949: struct __duration_common_type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __duration_common_type<_CT, _Period1, _Period2, 234s 1949: __void_t> 234s 1949: { 234s 1949: private: 234s 1949: using __gcd_num = __static_gcd<_Period1::num, _Period2::num>; 234s 1949: using __gcd_den = __static_gcd<_Period1::den, _Period2::den>; 234s 1949: using __cr = typename _CT::type; 234s 1949: using __r = ratio<__gcd_num::value, 234s 1949: (_Period1::den / __gcd_den::value) * _Period2::den>; 234s 1949: 234s 1949: public: 234s 1949: using type = chrono::duration<__cr, typename __r::type>; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct common_type, 234s 1949: chrono::duration<_Rep2, _Period2>> 234s 1949: : __duration_common_type, 234s 1949: typename _Period1::type, 234s 1949: typename _Period2::type> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct common_type, 234s 1949: chrono::duration<_Rep, _Period>> 234s 1949: { 234s 1949: using type = chrono::duration::type, 234s 1949: typename _Period::type>; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct common_type> 234s 1949: { 234s 1949: using type = chrono::duration::type, 234s 1949: typename _Period::type>; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __timepoint_common_type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __timepoint_common_type<_CT, _Clock, __void_t> 234s 1949: { 234s 1949: using type = chrono::time_point<_Clock, typename _CT::type>; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct common_type, 234s 1949: chrono::time_point<_Clock, _Duration2>> 234s 1949: : __timepoint_common_type, _Clock> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct common_type, 234s 1949: chrono::time_point<_Clock, _Duration>> 234s 1949: { using type = chrono::time_point<_Clock, _Duration>; }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct common_type> 234s 1949: { using type = chrono::time_point<_Clock, _Duration>; }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace chrono 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __duration_cast_impl 234s 1949: { 234s 1949: template 234s 1949: static constexpr _ToDur 234s 1949: __cast(const duration<_Rep, _Period>& __d) 234s 1949: { 234s 1949: typedef typename _ToDur::rep __to_rep; 234s 1949: return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count()) 234s 1949: * static_cast<_CR>(_CF::num) 234s 1949: / static_cast<_CR>(_CF::den))); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __duration_cast_impl<_ToDur, _CF, _CR, true, true> 234s 1949: { 234s 1949: template 234s 1949: static constexpr _ToDur 234s 1949: __cast(const duration<_Rep, _Period>& __d) 234s 1949: { 234s 1949: typedef typename _ToDur::rep __to_rep; 234s 1949: return _ToDur(static_cast<__to_rep>(__d.count())); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __duration_cast_impl<_ToDur, _CF, _CR, true, false> 234s 1949: { 234s 1949: template 234s 1949: static constexpr _ToDur 234s 1949: __cast(const duration<_Rep, _Period>& __d) 234s 1949: { 234s 1949: typedef typename _ToDur::rep __to_rep; 234s 1949: return _ToDur(static_cast<__to_rep>( 234s 1949: static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den))); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __duration_cast_impl<_ToDur, _CF, _CR, false, true> 234s 1949: { 234s 1949: template 234s 1949: static constexpr _ToDur 234s 1949: __cast(const duration<_Rep, _Period>& __d) 234s 1949: { 234s 1949: typedef typename _ToDur::rep __to_rep; 234s 1949: return _ToDur(static_cast<__to_rep>( 234s 1949: static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num))); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct __is_duration 234s 1949: : std::false_type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: struct __is_duration> 234s 1949: : std::true_type 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: using __enable_if_is_duration 234s 1949: = typename enable_if<__is_duration<_Tp>::value, _Tp>::type; 234s 1949: 234s 1949: template 234s 1949: using __disable_if_is_duration 234s 1949: = typename enable_if::value, _Tp>::type; 234s 1949: # 276 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: constexpr __enable_if_is_duration<_ToDur> 234s 1949: duration_cast(const duration<_Rep, _Period>& __d) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using __to_period = typename _ToDur::period; 234s 1949: using __to_rep = typename _ToDur::rep; 234s 1949: using __cf = ratio_divide<_Period, __to_period>; 234s 1949: using __cr = typename common_type<__to_rep, _Rep, intmax_t>::type; 234s 1949: using __dc = __duration_cast_impl<_ToDur, __cf, __cr, 234s 1949: __cf::num == 1, __cf::den == 1>; 234s 1949: return __dc::__cast(__d); 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 310 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template 234s 1949: struct treat_as_floating_point 234s 1949: : is_floating_point<_Rep> 234s 1949: { }; 234s 1949: # 478 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: namespace __detail 234s 1949: { 234s 1949: template 234s 1949: constexpr _Tp 234s 1949: __ceil_impl(const _Tp& __t, const _Up& __u) 234s 1949: { 234s 1949: return (__t < __u) ? (__t + _Tp{1}) : __t; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr _ToDur 234s 1949: ceil(const duration<_Rep, _Period>& __d) 234s 1949: { 234s 1949: return __detail::__ceil_impl(chrono::duration_cast<_ToDur>(__d), __d); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct duration_values 234s 1949: { 234s 1949: static constexpr _Rep 234s 1949: zero() noexcept 234s 1949: { return _Rep(0); } 234s 1949: 234s 1949: static constexpr _Rep 234s 1949: max() noexcept 234s 1949: { return numeric_limits<_Rep>::max(); } 234s 1949: 234s 1949: static constexpr _Rep 234s 1949: min() noexcept 234s 1949: { return numeric_limits<_Rep>::lowest(); } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: class duration 234s 1949: { 234s 1949: static_assert(!__is_duration<_Rep>::value, 234s 1949: "rep cannot be a std::chrono::duration"); 234s 1949: static_assert(__is_ratio<_Period>::value, 234s 1949: "period must be a specialization of std::ratio"); 234s 1949: static_assert(_Period::num > 0, "period must be positive"); 234s 1949: 234s 1949: template 234s 1949: using __is_float = treat_as_floating_point<_Rep2>; 234s 1949: 234s 1949: static constexpr intmax_t 234s 1949: _S_gcd(intmax_t __m, intmax_t __n) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: do 234s 1949: { 234s 1949: intmax_t __rem = __m % __n; 234s 1949: __m = __n; 234s 1949: __n = __rem; 234s 1949: } 234s 1949: while (__n != 0); 234s 1949: return __m; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __divide = ratio<(_R1::num / __gcd1) * (_R2::den / __gcd2), 234s 1949: (_R1::den / __gcd2) * (_R2::num / __gcd1)>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __is_harmonic 234s 1949: = __bool_constant<__divide<_Period2, _Period>::den == 1>; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: using rep = _Rep; 234s 1949: using period = typename _Period::type; 234s 1949: 234s 1949: 234s 1949: constexpr duration() = default; 234s 1949: 234s 1949: duration(const duration&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template, 234s 1949: __or_<__is_float, __not_<__is_float<_Rep2>>>>> 234s 1949: constexpr explicit duration(const _Rep2& __rep) 234s 1949: : __r(static_cast(__rep)) { } 234s 1949: 234s 1949: template, 234s 1949: __or_<__is_float, 234s 1949: __and_<__is_harmonic<_Period2>, 234s 1949: __not_<__is_float<_Rep2>>>>>> 234s 1949: constexpr duration(const duration<_Rep2, _Period2>& __d) 234s 1949: : __r(duration_cast(__d).count()) { } 234s 1949: 234s 1949: ~duration() = default; 234s 1949: duration& operator=(const duration&) = default; 234s 1949: 234s 1949: 234s 1949: constexpr rep 234s 1949: count() const 234s 1949: { return __r; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: constexpr duration::type, period> 234s 1949: operator+() const 234s 1949: { return duration::type, period>(__r); } 234s 1949: 234s 1949: constexpr duration::type, period> 234s 1949: operator-() const 234s 1949: { return duration::type, period>(-__r); } 234s 1949: 234s 1949: duration& 234s 1949: operator++() 234s 1949: { 234s 1949: ++__r; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: duration 234s 1949: operator++(int) 234s 1949: { return duration(__r++); } 234s 1949: 234s 1949: duration& 234s 1949: operator--() 234s 1949: { 234s 1949: --__r; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: duration 234s 1949: operator--(int) 234s 1949: { return duration(__r--); } 234s 1949: 234s 1949: duration& 234s 1949: operator+=(const duration& __d) 234s 1949: { 234s 1949: __r += __d.count(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: duration& 234s 1949: operator-=(const duration& __d) 234s 1949: { 234s 1949: __r -= __d.count(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: duration& 234s 1949: operator*=(const rep& __rhs) 234s 1949: { 234s 1949: __r *= __rhs; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: duration& 234s 1949: operator/=(const rep& __rhs) 234s 1949: { 234s 1949: __r /= __rhs; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: __enable_if_t::value, duration&> 234s 1949: operator%=(const rep& __rhs) 234s 1949: { 234s 1949: __r %= __rhs; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: __enable_if_t::value, duration&> 234s 1949: operator%=(const duration& __d) 234s 1949: { 234s 1949: __r %= __d.count(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: static constexpr duration 234s 1949: zero() noexcept 234s 1949: { return duration(duration_values::zero()); } 234s 1949: 234s 1949: static constexpr duration 234s 1949: min() noexcept 234s 1949: { return duration(duration_values::min()); } 234s 1949: 234s 1949: static constexpr duration 234s 1949: max() noexcept 234s 1949: { return duration(duration_values::max()); } 234s 1949: 234s 1949: private: 234s 1949: rep __r; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr typename common_type, 234s 1949: duration<_Rep2, _Period2>>::type 234s 1949: operator+(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { 234s 1949: typedef duration<_Rep1, _Period1> __dur1; 234s 1949: typedef duration<_Rep2, _Period2> __dur2; 234s 1949: typedef typename common_type<__dur1,__dur2>::type __cd; 234s 1949: return __cd(__cd(__lhs).count() + __cd(__rhs).count()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr typename common_type, 234s 1949: duration<_Rep2, _Period2>>::type 234s 1949: operator-(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { 234s 1949: typedef duration<_Rep1, _Period1> __dur1; 234s 1949: typedef duration<_Rep2, _Period2> __dur2; 234s 1949: typedef typename common_type<__dur1,__dur2>::type __cd; 234s 1949: return __cd(__cd(__lhs).count() - __cd(__rhs).count()); 234s 1949: } 234s 1949: # 731 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template::type> 234s 1949: using __common_rep_t = typename 234s 1949: enable_if::value, _CRep>::type; 234s 1949: # 743 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template 234s 1949: constexpr duration<__common_rep_t<_Rep1, _Rep2>, _Period> 234s 1949: operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 234s 1949: { 234s 1949: typedef duration::type, _Period> 234s 1949: __cd; 234s 1949: return __cd(__cd(__d).count() * __s); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr duration<__common_rep_t<_Rep2, _Rep1>, _Period> 234s 1949: operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) 234s 1949: { return __d * __s; } 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> 234s 1949: operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 234s 1949: { 234s 1949: typedef duration::type, _Period> 234s 1949: __cd; 234s 1949: return __cd(__cd(__d).count() / __s); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr typename common_type<_Rep1, _Rep2>::type 234s 1949: operator/(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { 234s 1949: typedef duration<_Rep1, _Period1> __dur1; 234s 1949: typedef duration<_Rep2, _Period2> __dur2; 234s 1949: typedef typename common_type<__dur1,__dur2>::type __cd; 234s 1949: return __cd(__lhs).count() / __cd(__rhs).count(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr 234s 1949: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> 234s 1949: operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 234s 1949: { 234s 1949: typedef duration::type, _Period> 234s 1949: __cd; 234s 1949: return __cd(__cd(__d).count() % __s); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr typename common_type, 234s 1949: duration<_Rep2, _Period2>>::type 234s 1949: operator%(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { 234s 1949: typedef duration<_Rep1, _Period1> __dur1; 234s 1949: typedef duration<_Rep2, _Period2> __dur2; 234s 1949: typedef typename common_type<__dur1,__dur2>::type __cd; 234s 1949: return __cd(__cd(__lhs).count() % __cd(__rhs).count()); 234s 1949: } 234s 1949: # 811 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator==(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { 234s 1949: typedef duration<_Rep1, _Period1> __dur1; 234s 1949: typedef duration<_Rep2, _Period2> __dur2; 234s 1949: typedef typename common_type<__dur1,__dur2>::type __ct; 234s 1949: return __ct(__lhs).count() == __ct(__rhs).count(); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator<(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { 234s 1949: typedef duration<_Rep1, _Period1> __dur1; 234s 1949: typedef duration<_Rep2, _Period2> __dur2; 234s 1949: typedef typename common_type<__dur1,__dur2>::type __ct; 234s 1949: return __ct(__lhs).count() < __ct(__rhs).count(); 234s 1949: } 234s 1949: # 848 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator!=(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { return !(__lhs == __rhs); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator<=(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { return !(__rhs < __lhs); } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator>(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { return __rhs < __lhs; } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator>=(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { return !(__lhs < __rhs); } 234s 1949: # 892 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: using nanoseconds = duration; 234s 1949: 234s 1949: 234s 1949: using microseconds = duration; 234s 1949: 234s 1949: 234s 1949: using milliseconds = duration; 234s 1949: 234s 1949: 234s 1949: using seconds = duration; 234s 1949: 234s 1949: 234s 1949: using minutes = duration>; 234s 1949: 234s 1949: 234s 1949: using hours = duration>; 234s 1949: # 925 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template 234s 1949: class time_point 234s 1949: { 234s 1949: static_assert(__is_duration<_Dur>::value, 234s 1949: "duration must be a specialization of std::chrono::duration"); 234s 1949: 234s 1949: public: 234s 1949: typedef _Clock clock; 234s 1949: typedef _Dur duration; 234s 1949: typedef typename duration::rep rep; 234s 1949: typedef typename duration::period period; 234s 1949: 234s 1949: constexpr time_point() : __d(duration::zero()) 234s 1949: { } 234s 1949: 234s 1949: constexpr explicit time_point(const duration& __dur) 234s 1949: : __d(__dur) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: template>> 234s 1949: constexpr time_point(const time_point& __t) 234s 1949: : __d(__t.time_since_epoch()) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: constexpr duration 234s 1949: time_since_epoch() const 234s 1949: { return __d; } 234s 1949: # 981 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: time_point& 234s 1949: operator+=(const duration& __dur) 234s 1949: { 234s 1949: __d += __dur; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: time_point& 234s 1949: operator-=(const duration& __dur) 234s 1949: { 234s 1949: __d -= __dur; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: static constexpr time_point 234s 1949: min() noexcept 234s 1949: { return time_point(duration::min()); } 234s 1949: 234s 1949: static constexpr time_point 234s 1949: max() noexcept 234s 1949: { return time_point(duration::max()); } 234s 1949: 234s 1949: private: 234s 1949: duration __d; 234s 1949: }; 234s 1949: # 1020 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] constexpr 234s 1949: __enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> 234s 1949: time_point_cast(const time_point<_Clock, _Dur>& __t) 234s 1949: { 234s 1949: typedef time_point<_Clock, _ToDur> __time_point; 234s 1949: return __time_point(duration_cast<_ToDur>(__t.time_since_epoch())); 234s 1949: } 234s 1949: # 1101 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template 234s 1949: constexpr time_point<_Clock, 234s 1949: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> 234s 1949: operator+(const time_point<_Clock, _Dur1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { 234s 1949: typedef duration<_Rep2, _Period2> __dur2; 234s 1949: typedef typename common_type<_Dur1,__dur2>::type __ct; 234s 1949: typedef time_point<_Clock, __ct> __time_point; 234s 1949: return __time_point(__lhs.time_since_epoch() + __rhs); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr time_point<_Clock, 234s 1949: typename common_type, _Dur2>::type> 234s 1949: operator+(const duration<_Rep1, _Period1>& __lhs, 234s 1949: const time_point<_Clock, _Dur2>& __rhs) 234s 1949: { 234s 1949: typedef duration<_Rep1, _Period1> __dur1; 234s 1949: typedef typename common_type<__dur1,_Dur2>::type __ct; 234s 1949: typedef time_point<_Clock, __ct> __time_point; 234s 1949: return __time_point(__rhs.time_since_epoch() + __lhs); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr time_point<_Clock, 234s 1949: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> 234s 1949: operator-(const time_point<_Clock, _Dur1>& __lhs, 234s 1949: const duration<_Rep2, _Period2>& __rhs) 234s 1949: { 234s 1949: typedef duration<_Rep2, _Period2> __dur2; 234s 1949: typedef typename common_type<_Dur1,__dur2>::type __ct; 234s 1949: typedef time_point<_Clock, __ct> __time_point; 234s 1949: return __time_point(__lhs.time_since_epoch() -__rhs); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr typename common_type<_Dur1, _Dur2>::type 234s 1949: operator-(const time_point<_Clock, _Dur1>& __lhs, 234s 1949: const time_point<_Clock, _Dur2>& __rhs) 234s 1949: { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator==(const time_point<_Clock, _Dur1>& __lhs, 234s 1949: const time_point<_Clock, _Dur2>& __rhs) 234s 1949: { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } 234s 1949: # 1169 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator!=(const time_point<_Clock, _Dur1>& __lhs, 234s 1949: const time_point<_Clock, _Dur2>& __rhs) 234s 1949: { return !(__lhs == __rhs); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator<(const time_point<_Clock, _Dur1>& __lhs, 234s 1949: const time_point<_Clock, _Dur2>& __rhs) 234s 1949: { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator<=(const time_point<_Clock, _Dur1>& __lhs, 234s 1949: const time_point<_Clock, _Dur2>& __rhs) 234s 1949: { return !(__rhs < __lhs); } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator>(const time_point<_Clock, _Dur1>& __lhs, 234s 1949: const time_point<_Clock, _Dur2>& __rhs) 234s 1949: { return __rhs < __lhs; } 234s 1949: 234s 1949: template 234s 1949: constexpr bool 234s 1949: operator>=(const time_point<_Clock, _Dur1>& __lhs, 234s 1949: const time_point<_Clock, _Dur2>& __rhs) 234s 1949: { return !(__lhs < __rhs); } 234s 1949: # 1222 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: inline namespace _V2 { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct system_clock 234s 1949: { 234s 1949: typedef chrono::nanoseconds duration; 234s 1949: typedef duration::rep rep; 234s 1949: typedef duration::period period; 234s 1949: typedef chrono::time_point time_point; 234s 1949: 234s 1949: static_assert(system_clock::duration::min() 234s 1949: < system_clock::duration::zero(), 234s 1949: "a clock's minimum duration cannot be less than its epoch"); 234s 1949: 234s 1949: static constexpr bool is_steady = false; 234s 1949: 234s 1949: static time_point 234s 1949: now() noexcept; 234s 1949: 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static std::time_t 234s 1949: to_time_t(const time_point& __t) noexcept 234s 1949: { 234s 1949: return std::time_t(duration_cast 234s 1949: (__t.time_since_epoch()).count()); 234s 1949: } 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: static time_point 234s 1949: from_time_t(std::time_t __t) noexcept 234s 1949: { 234s 1949: typedef chrono::time_point __from; 234s 1949: return time_point_cast 234s 1949: (__from(chrono::seconds(__t))); 234s 1949: } 234s 1949: }; 234s 1949: # 1272 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: struct steady_clock 234s 1949: { 234s 1949: typedef chrono::nanoseconds duration; 234s 1949: typedef duration::rep rep; 234s 1949: typedef duration::period period; 234s 1949: typedef chrono::time_point time_point; 234s 1949: 234s 1949: static constexpr bool is_steady = true; 234s 1949: 234s 1949: static time_point 234s 1949: now() noexcept; 234s 1949: }; 234s 1949: # 1294 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: using high_resolution_clock = system_clock; 234s 1949: 234s 1949: } 234s 1949: # 1329 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: } 234s 1949: 234s 1949: 234s 1949: inline namespace literals 234s 1949: { 234s 1949: # 1358 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: inline namespace chrono_literals 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wliteral-suffix" 234s 1949: 234s 1949: template 234s 1949: constexpr _Dur __check_overflow() 234s 1949: { 234s 1949: using _Val = __parse_int::_Parse_int<_Digits...>; 234s 1949: constexpr typename _Dur::rep __repval = _Val::value; 234s 1949: static_assert(__repval >= 0 && __repval == _Val::value, 234s 1949: "literal value cannot be represented by duration type"); 234s 1949: return _Dur(__repval); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: constexpr chrono::duration> 234s 1949: operator""h(long double __hours) 234s 1949: { return chrono::duration>{__hours}; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr chrono::hours 234s 1949: operator""h() 234s 1949: { return __check_overflow(); } 234s 1949: 234s 1949: 234s 1949: constexpr chrono::duration> 234s 1949: operator""min(long double __mins) 234s 1949: { return chrono::duration>{__mins}; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr chrono::minutes 234s 1949: operator""min() 234s 1949: { return __check_overflow(); } 234s 1949: 234s 1949: 234s 1949: constexpr chrono::duration 234s 1949: operator""s(long double __secs) 234s 1949: { return chrono::duration{__secs}; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr chrono::seconds 234s 1949: operator""s() 234s 1949: { return __check_overflow(); } 234s 1949: 234s 1949: 234s 1949: constexpr chrono::duration 234s 1949: operator""ms(long double __msecs) 234s 1949: { return chrono::duration{__msecs}; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr chrono::milliseconds 234s 1949: operator""ms() 234s 1949: { return __check_overflow(); } 234s 1949: 234s 1949: 234s 1949: constexpr chrono::duration 234s 1949: operator""us(long double __usecs) 234s 1949: { return chrono::duration{__usecs}; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr chrono::microseconds 234s 1949: operator""us() 234s 1949: { return __check_overflow(); } 234s 1949: 234s 1949: 234s 1949: constexpr chrono::duration 234s 1949: operator""ns(long double __nsecs) 234s 1949: { return chrono::duration{__nsecs}; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: constexpr chrono::nanoseconds 234s 1949: operator""ns() 234s 1949: { return __check_overflow(); } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: namespace chrono 234s 1949: { 234s 1949: using namespace literals::chrono_literals; 234s 1949: } 234s 1949: # 1518 "/usr/include/c++/15/bits/chrono.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 46 "/usr/include/c++/15/mutex" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/std_mutex.h" 1 3 4 234s 1949: # 45 "/usr/include/c++/15/bits/std_mutex.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 61 "/usr/include/c++/15/bits/std_mutex.h" 3 4 234s 1949: class __mutex_base 234s 1949: { 234s 1949: protected: 234s 1949: typedef __gthread_mutex_t __native_type; 234s 1949: 234s 1949: 234s 1949: __native_type _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_TIMED_NP, 0, { 0 } } }; 234s 1949: 234s 1949: constexpr __mutex_base() noexcept = default; 234s 1949: # 82 "/usr/include/c++/15/bits/std_mutex.h" 3 4 234s 1949: __mutex_base(const __mutex_base&) = delete; 234s 1949: __mutex_base& operator=(const __mutex_base&) = delete; 234s 1949: }; 234s 1949: # 98 "/usr/include/c++/15/bits/std_mutex.h" 3 4 234s 1949: class mutex : private __mutex_base 234s 1949: { 234s 1949: public: 234s 1949: typedef __native_type* native_handle_type; 234s 1949: 234s 1949: 234s 1949: constexpr 234s 1949: 234s 1949: mutex() noexcept = default; 234s 1949: ~mutex() = default; 234s 1949: 234s 1949: mutex(const mutex&) = delete; 234s 1949: mutex& operator=(const mutex&) = delete; 234s 1949: 234s 1949: void 234s 1949: lock() 234s 1949: { 234s 1949: int __e = __gthread_mutex_lock(&_M_mutex); 234s 1949: 234s 1949: 234s 1949: if (__e) 234s 1949: __throw_system_error(__e); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock() noexcept 234s 1949: { 234s 1949: 234s 1949: return !__gthread_mutex_trylock(&_M_mutex); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: unlock() 234s 1949: { 234s 1949: 234s 1949: __gthread_mutex_unlock(&_M_mutex); 234s 1949: } 234s 1949: 234s 1949: native_handle_type 234s 1949: native_handle() noexcept 234s 1949: { return &_M_mutex; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: class __condvar 234s 1949: { 234s 1949: using timespec = __gthread_time_t; 234s 1949: 234s 1949: public: 234s 1949: __condvar() noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: ~__condvar() 234s 1949: { 234s 1949: int __e __attribute__((__unused__)) = __gthread_cond_destroy(&_M_cond); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__e != 16)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: } 234s 1949: 234s 1949: __condvar(const __condvar&) = delete; 234s 1949: __condvar& operator=(const __condvar&) = delete; 234s 1949: 234s 1949: __gthread_cond_t* native_handle() noexcept { return &_M_cond; } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: wait(mutex& __m) 234s 1949: { 234s 1949: int __e __attribute__((__unused__)) 234s 1949: = __gthread_cond_wait(&_M_cond, __m.native_handle()); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: wait_until(mutex& __m, timespec& __abs_time) 234s 1949: { 234s 1949: __gthread_cond_timedwait(&_M_cond, __m.native_handle(), &__abs_time); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: wait_until(mutex& __m, clockid_t __clock, timespec& __abs_time) 234s 1949: { 234s 1949: pthread_cond_clockwait(&_M_cond, __m.native_handle(), __clock, 234s 1949: &__abs_time); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: notify_one() noexcept 234s 1949: { 234s 1949: int __e __attribute__((__unused__)) = __gthread_cond_signal(&_M_cond); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: notify_all() noexcept 234s 1949: { 234s 1949: int __e __attribute__((__unused__)) = __gthread_cond_broadcast(&_M_cond); 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); 234s 1949: } 234s 1949: 234s 1949: protected: 234s 1949: 234s 1949: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, 0, 0, {0, 0}, 0, 0 } }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct defer_lock_t { explicit defer_lock_t() = default; }; 234s 1949: 234s 1949: 234s 1949: struct try_to_lock_t { explicit try_to_lock_t() = default; }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct adopt_lock_t { explicit adopt_lock_t() = default; }; 234s 1949: 234s 1949: 234s 1949: constexpr defer_lock_t defer_lock { }; 234s 1949: 234s 1949: 234s 1949: constexpr try_to_lock_t try_to_lock { }; 234s 1949: 234s 1949: 234s 1949: constexpr adopt_lock_t adopt_lock { }; 234s 1949: # 244 "/usr/include/c++/15/bits/std_mutex.h" 3 4 234s 1949: template 234s 1949: class lock_guard 234s 1949: { 234s 1949: public: 234s 1949: typedef _Mutex mutex_type; 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: explicit lock_guard(mutex_type& __m) : _M_device(__m) 234s 1949: { _M_device.lock(); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: lock_guard(mutex_type& __m, adopt_lock_t) noexcept : _M_device(__m) 234s 1949: { } 234s 1949: 234s 1949: ~lock_guard() 234s 1949: { _M_device.unlock(); } 234s 1949: 234s 1949: lock_guard(const lock_guard&) = delete; 234s 1949: lock_guard& operator=(const lock_guard&) = delete; 234s 1949: 234s 1949: private: 234s 1949: mutex_type& _M_device; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 50 "/usr/include/c++/15/mutex" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/unique_lock.h" 1 3 4 234s 1949: # 46 "/usr/include/c++/15/bits/unique_lock.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 61 "/usr/include/c++/15/bits/unique_lock.h" 3 4 234s 1949: template 234s 1949: class unique_lock 234s 1949: { 234s 1949: public: 234s 1949: typedef _Mutex mutex_type; 234s 1949: 234s 1949: unique_lock() noexcept 234s 1949: : _M_device(0), _M_owns(false) 234s 1949: { } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: explicit unique_lock(mutex_type& __m) 234s 1949: : _M_device(std::__addressof(__m)), _M_owns(false) 234s 1949: { 234s 1949: lock(); 234s 1949: _M_owns = true; 234s 1949: } 234s 1949: 234s 1949: unique_lock(mutex_type& __m, defer_lock_t) noexcept 234s 1949: : _M_device(std::__addressof(__m)), _M_owns(false) 234s 1949: { } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: unique_lock(mutex_type& __m, try_to_lock_t) 234s 1949: : _M_device(std::__addressof(__m)), _M_owns(_M_device->try_lock()) 234s 1949: { } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: unique_lock(mutex_type& __m, adopt_lock_t) noexcept 234s 1949: : _M_device(std::__addressof(__m)), _M_owns(true) 234s 1949: { 234s 1949: 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: unique_lock(mutex_type& __m, 234s 1949: const chrono::time_point<_Clock, _Duration>& __atime) 234s 1949: : _M_device(std::__addressof(__m)), 234s 1949: _M_owns(_M_device->try_lock_until(__atime)) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: unique_lock(mutex_type& __m, 234s 1949: const chrono::duration<_Rep, _Period>& __rtime) 234s 1949: : _M_device(std::__addressof(__m)), 234s 1949: _M_owns(_M_device->try_lock_for(__rtime)) 234s 1949: { } 234s 1949: 234s 1949: ~unique_lock() 234s 1949: { 234s 1949: if (_M_owns) 234s 1949: unlock(); 234s 1949: } 234s 1949: 234s 1949: unique_lock(const unique_lock&) = delete; 234s 1949: unique_lock& operator=(const unique_lock&) = delete; 234s 1949: 234s 1949: unique_lock(unique_lock&& __u) noexcept 234s 1949: : _M_device(__u._M_device), _M_owns(__u._M_owns) 234s 1949: { 234s 1949: __u._M_device = 0; 234s 1949: __u._M_owns = false; 234s 1949: } 234s 1949: 234s 1949: unique_lock& operator=(unique_lock&& __u) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: unique_lock(std::move(__u)).swap(*this); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: lock() 234s 1949: { 234s 1949: if (!_M_device) 234s 1949: __throw_system_error(int(errc::operation_not_permitted)); 234s 1949: else if (_M_owns) 234s 1949: __throw_system_error(int(errc::resource_deadlock_would_occur)); 234s 1949: else 234s 1949: { 234s 1949: _M_device->lock(); 234s 1949: _M_owns = true; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock() 234s 1949: { 234s 1949: if (!_M_device) 234s 1949: __throw_system_error(int(errc::operation_not_permitted)); 234s 1949: else if (_M_owns) 234s 1949: __throw_system_error(int(errc::resource_deadlock_would_occur)); 234s 1949: else 234s 1949: { 234s 1949: _M_owns = _M_device->try_lock(); 234s 1949: return _M_owns; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 234s 1949: { 234s 1949: if (!_M_device) 234s 1949: __throw_system_error(int(errc::operation_not_permitted)); 234s 1949: else if (_M_owns) 234s 1949: __throw_system_error(int(errc::resource_deadlock_would_occur)); 234s 1949: else 234s 1949: { 234s 1949: _M_owns = _M_device->try_lock_until(__atime); 234s 1949: return _M_owns; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 234s 1949: { 234s 1949: if (!_M_device) 234s 1949: __throw_system_error(int(errc::operation_not_permitted)); 234s 1949: else if (_M_owns) 234s 1949: __throw_system_error(int(errc::resource_deadlock_would_occur)); 234s 1949: else 234s 1949: { 234s 1949: _M_owns = _M_device->try_lock_for(__rtime); 234s 1949: return _M_owns; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: unlock() 234s 1949: { 234s 1949: if (!_M_owns) 234s 1949: __throw_system_error(int(errc::operation_not_permitted)); 234s 1949: else if (_M_device) 234s 1949: { 234s 1949: _M_device->unlock(); 234s 1949: _M_owns = false; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: swap(unique_lock& __u) noexcept 234s 1949: { 234s 1949: std::swap(_M_device, __u._M_device); 234s 1949: std::swap(_M_owns, __u._M_owns); 234s 1949: } 234s 1949: 234s 1949: mutex_type* 234s 1949: release() noexcept 234s 1949: { 234s 1949: mutex_type* __ret = _M_device; 234s 1949: _M_device = 0; 234s 1949: _M_owns = false; 234s 1949: return __ret; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: owns_lock() const noexcept 234s 1949: { return _M_owns; } 234s 1949: 234s 1949: explicit operator bool() const noexcept 234s 1949: { return owns_lock(); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: mutex_type* 234s 1949: mutex() const noexcept 234s 1949: { return _M_device; } 234s 1949: 234s 1949: private: 234s 1949: mutex_type* _M_device; 234s 1949: bool _M_owns; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) noexcept 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 51 "/usr/include/c++/15/mutex" 2 3 4 234s 1949: # 62 "/usr/include/c++/15/mutex" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 63 "/usr/include/c++/15/mutex" 2 3 4 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 77 "/usr/include/c++/15/mutex" 3 4 234s 1949: class __recursive_mutex_base 234s 1949: { 234s 1949: protected: 234s 1949: typedef __gthread_recursive_mutex_t __native_type; 234s 1949: 234s 1949: __recursive_mutex_base(const __recursive_mutex_base&) = delete; 234s 1949: __recursive_mutex_base& operator=(const __recursive_mutex_base&) = delete; 234s 1949: 234s 1949: 234s 1949: __native_type _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } }; 234s 1949: 234s 1949: __recursive_mutex_base() = default; 234s 1949: # 101 "/usr/include/c++/15/mutex" 3 4 234s 1949: }; 234s 1949: # 113 "/usr/include/c++/15/mutex" 3 4 234s 1949: class recursive_mutex : private __recursive_mutex_base 234s 1949: { 234s 1949: public: 234s 1949: typedef __native_type* native_handle_type; 234s 1949: 234s 1949: recursive_mutex() = default; 234s 1949: ~recursive_mutex() = default; 234s 1949: 234s 1949: recursive_mutex(const recursive_mutex&) = delete; 234s 1949: recursive_mutex& operator=(const recursive_mutex&) = delete; 234s 1949: 234s 1949: void 234s 1949: lock() 234s 1949: { 234s 1949: int __e = __gthread_recursive_mutex_lock(&_M_mutex); 234s 1949: 234s 1949: 234s 1949: if (__e) 234s 1949: __throw_system_error(__e); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock() noexcept 234s 1949: { 234s 1949: 234s 1949: return !__gthread_recursive_mutex_trylock(&_M_mutex); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: unlock() 234s 1949: { 234s 1949: 234s 1949: __gthread_recursive_mutex_unlock(&_M_mutex); 234s 1949: } 234s 1949: 234s 1949: native_handle_type 234s 1949: native_handle() noexcept 234s 1949: { return &_M_mutex; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class __timed_mutex_impl 234s 1949: { 234s 1949: protected: 234s 1949: template 234s 1949: bool 234s 1949: _M_try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 234s 1949: { 234s 1949: 234s 1949: using __clock = chrono::steady_clock; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: auto __rt = chrono::duration_cast<__clock::duration>(__rtime); 234s 1949: if (ratio_greater<__clock::period, _Period>()) 234s 1949: ++__rt; 234s 1949: return _M_try_lock_until(__clock::now() + __rt); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: _M_try_lock_until(const chrono::time_point& __atime) 234s 1949: { 234s 1949: auto __s = chrono::time_point_cast(__atime); 234s 1949: auto __ns = chrono::duration_cast(__atime - __s); 234s 1949: 234s 1949: __gthread_time_t __ts = { 234s 1949: static_cast(__s.time_since_epoch().count()), 234s 1949: static_cast(__ns.count()) 234s 1949: }; 234s 1949: 234s 1949: return static_cast<_Derived*>(this)->_M_timedlock(__ts); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: _M_try_lock_until(const chrono::time_point& __atime) 234s 1949: { 234s 1949: auto __s = chrono::time_point_cast(__atime); 234s 1949: auto __ns = chrono::duration_cast(__atime - __s); 234s 1949: 234s 1949: __gthread_time_t __ts = { 234s 1949: static_cast(__s.time_since_epoch().count()), 234s 1949: static_cast(__ns.count()) 234s 1949: }; 234s 1949: 234s 1949: return static_cast<_Derived*>(this)->_M_clocklock(1, 234s 1949: __ts); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: _M_try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: auto __now = _Clock::now(); 234s 1949: do { 234s 1949: auto __rtime = __atime - __now; 234s 1949: if (_M_try_lock_for(__rtime)) 234s 1949: return true; 234s 1949: __now = _Clock::now(); 234s 1949: } while (__atime > __now); 234s 1949: return false; 234s 1949: } 234s 1949: }; 234s 1949: # 242 "/usr/include/c++/15/mutex" 3 4 234s 1949: class timed_mutex 234s 1949: : private __mutex_base, public __timed_mutex_impl 234s 1949: { 234s 1949: public: 234s 1949: typedef __native_type* native_handle_type; 234s 1949: 234s 1949: timed_mutex() = default; 234s 1949: ~timed_mutex() = default; 234s 1949: 234s 1949: timed_mutex(const timed_mutex&) = delete; 234s 1949: timed_mutex& operator=(const timed_mutex&) = delete; 234s 1949: 234s 1949: void 234s 1949: lock() 234s 1949: { 234s 1949: int __e = __gthread_mutex_lock(&_M_mutex); 234s 1949: 234s 1949: 234s 1949: if (__e) 234s 1949: __throw_system_error(__e); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock() noexcept 234s 1949: { 234s 1949: 234s 1949: return !__gthread_mutex_trylock(&_M_mutex); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 234s 1949: { return _M_try_lock_for(__rtime); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 234s 1949: { return _M_try_lock_until(__atime); } 234s 1949: 234s 1949: void 234s 1949: unlock() 234s 1949: { 234s 1949: 234s 1949: __gthread_mutex_unlock(&_M_mutex); 234s 1949: } 234s 1949: 234s 1949: native_handle_type 234s 1949: native_handle() noexcept 234s 1949: { return &_M_mutex; } 234s 1949: 234s 1949: private: 234s 1949: friend class __timed_mutex_impl; 234s 1949: 234s 1949: bool 234s 1949: _M_timedlock(const __gthread_time_t& __ts) 234s 1949: { return !__gthread_mutex_timedlock(&_M_mutex, &__ts); } 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: _M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts) 234s 1949: { return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); } 234s 1949: 234s 1949: }; 234s 1949: # 319 "/usr/include/c++/15/mutex" 3 4 234s 1949: class recursive_timed_mutex 234s 1949: : private __recursive_mutex_base, 234s 1949: public __timed_mutex_impl 234s 1949: { 234s 1949: public: 234s 1949: typedef __native_type* native_handle_type; 234s 1949: 234s 1949: recursive_timed_mutex() = default; 234s 1949: ~recursive_timed_mutex() = default; 234s 1949: 234s 1949: recursive_timed_mutex(const recursive_timed_mutex&) = delete; 234s 1949: recursive_timed_mutex& operator=(const recursive_timed_mutex&) = delete; 234s 1949: 234s 1949: void 234s 1949: lock() 234s 1949: { 234s 1949: int __e = __gthread_recursive_mutex_lock(&_M_mutex); 234s 1949: 234s 1949: 234s 1949: if (__e) 234s 1949: __throw_system_error(__e); 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock() noexcept 234s 1949: { 234s 1949: 234s 1949: return !__gthread_recursive_mutex_trylock(&_M_mutex); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 234s 1949: { return _M_try_lock_for(__rtime); } 234s 1949: 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: bool 234s 1949: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 234s 1949: { return _M_try_lock_until(__atime); } 234s 1949: 234s 1949: void 234s 1949: unlock() 234s 1949: { 234s 1949: 234s 1949: __gthread_recursive_mutex_unlock(&_M_mutex); 234s 1949: } 234s 1949: 234s 1949: native_handle_type 234s 1949: native_handle() noexcept 234s 1949: { return &_M_mutex; } 234s 1949: 234s 1949: private: 234s 1949: friend class __timed_mutex_impl; 234s 1949: 234s 1949: bool 234s 1949: _M_timedlock(const __gthread_time_t& __ts) 234s 1949: { return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts); } 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: _M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts) 234s 1949: { return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); } 234s 1949: 234s 1949: }; 234s 1949: # 566 "/usr/include/c++/15/mutex" 3 4 234s 1949: namespace __detail 234s 1949: { 234s 1949: 234s 1949: template 234s 1949: inline int 234s 1949: __try_lock_impl(_Lockable& __l) 234s 1949: { 234s 1949: if (unique_lock<_Lockable> __lock{__l, try_to_lock}) 234s 1949: { 234s 1949: __lock.release(); 234s 1949: return -1; 234s 1949: } 234s 1949: else 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline int 234s 1949: __try_lock_impl(_L0& __l0, _Lockables&... __lockables) 234s 1949: { 234s 1949: # 611 "/usr/include/c++/15/mutex" 3 4 234s 1949: if (unique_lock<_L0> __lock{__l0, try_to_lock}) 234s 1949: { 234s 1949: int __idx = __detail::__try_lock_impl(__lockables...); 234s 1949: if (__idx == -1) 234s 1949: { 234s 1949: __lock.release(); 234s 1949: return -1; 234s 1949: } 234s 1949: return __idx + 1; 234s 1949: } 234s 1949: else 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: # 638 "/usr/include/c++/15/mutex" 3 4 234s 1949: template 234s 1949: [[__nodiscard__]] 234s 1949: inline int 234s 1949: try_lock(_L1& __l1, _L2& __l2, _L3&... __l3) 234s 1949: { 234s 1949: return __detail::__try_lock_impl(__l1, __l2, __l3...); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: namespace __detail 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: __lock_impl(int& __i, int __depth, _L0& __l0, _L1&... __l1) 234s 1949: { 234s 1949: while (__i >= __depth) 234s 1949: { 234s 1949: if (__i == __depth) 234s 1949: { 234s 1949: int __failed = 1; 234s 1949: { 234s 1949: unique_lock<_L0> __first(__l0); 234s 1949: __failed += __detail::__try_lock_impl(__l1...); 234s 1949: if (!__failed) 234s 1949: { 234s 1949: __i = -1; 234s 1949: __first.release(); 234s 1949: return; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: __gthread_yield(); 234s 1949: 234s 1949: constexpr auto __n = 1 + sizeof...(_L1); 234s 1949: __i = (__depth + __failed) % __n; 234s 1949: } 234s 1949: else 234s 1949: __detail::__lock_impl(__i, __depth + 1, __l1..., __l0); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: # 698 "/usr/include/c++/15/mutex" 3 4 234s 1949: template 234s 1949: void 234s 1949: lock(_L1& __l1, _L2& __l2, _L3&... __l3) 234s 1949: { 234s 1949: # 730 "/usr/include/c++/15/mutex" 3 4 234s 1949: { 234s 1949: int __i = 0; 234s 1949: __detail::__lock_impl(__i, 0, __l1, __l2, __l3...); 234s 1949: } 234s 1949: } 234s 1949: # 809 "/usr/include/c++/15/mutex" 3 4 234s 1949: struct once_flag 234s 1949: { 234s 1949: constexpr once_flag() noexcept = default; 234s 1949: 234s 1949: 234s 1949: once_flag(const once_flag&) = delete; 234s 1949: 234s 1949: once_flag& operator=(const once_flag&) = delete; 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: 234s 1949: __gthread_once_t _M_once = 0; 234s 1949: 234s 1949: struct _Prepare_execution; 234s 1949: 234s 1949: template 234s 1949: friend void 234s 1949: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: extern __thread void* __once_callable; 234s 1949: extern __thread void (*__once_call)(); 234s 1949: 234s 1949: 234s 1949: struct once_flag::_Prepare_execution 234s 1949: { 234s 1949: template 234s 1949: explicit 234s 1949: _Prepare_execution(_Callable& __c) 234s 1949: { 234s 1949: 234s 1949: __once_callable = std::__addressof(__c); 234s 1949: 234s 1949: __once_call = [] { (*static_cast<_Callable*>(__once_callable))(); }; 234s 1949: } 234s 1949: 234s 1949: ~_Prepare_execution() 234s 1949: { 234s 1949: 234s 1949: __once_callable = nullptr; 234s 1949: __once_call = nullptr; 234s 1949: } 234s 1949: 234s 1949: _Prepare_execution(const _Prepare_execution&) = delete; 234s 1949: _Prepare_execution& operator=(const _Prepare_execution&) = delete; 234s 1949: }; 234s 1949: # 902 "/usr/include/c++/15/mutex" 3 4 234s 1949: extern "C" void __once_proxy(void); 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args) 234s 1949: { 234s 1949: 234s 1949: auto __callable = [&] { 234s 1949: std::__invoke(std::forward<_Callable>(__f), 234s 1949: std::forward<_Args>(__args)...); 234s 1949: }; 234s 1949: 234s 1949: once_flag::_Prepare_execution __exec(__callable); 234s 1949: 234s 1949: 234s 1949: if (int __e = __gthread_once(&__once._M_once, &__once_proxy)) 234s 1949: __throw_system_error(__e); 234s 1949: } 234s 1949: # 1023 "/usr/include/c++/15/mutex" 3 4 234s 1949: 234s 1949: } 234s 1949: # 3174 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 3182 "/usr/include/doctest/doctest.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/set" 1 3 4 234s 1949: # 64 "/usr/include/c++/15/set" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_tree.h" 1 3 4 234s 1949: # 72 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/ext/aligned_buffer.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/ext/aligned_buffer.h" 3 4 234s 1949: namespace __gnu_cxx 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct __aligned_membuf 234s 1949: { 234s 1949: # 60 "/usr/include/c++/15/ext/aligned_buffer.h" 3 4 234s 1949: alignas(_Tp) 234s 1949: 234s 1949: unsigned char _M_storage[sizeof(_Tp)]; 234s 1949: 234s 1949: __aligned_membuf() = default; 234s 1949: 234s 1949: 234s 1949: __aligned_membuf(std::nullptr_t) { } 234s 1949: 234s 1949: void* 234s 1949: _M_addr() noexcept 234s 1949: { return static_cast(&_M_storage); } 234s 1949: 234s 1949: const void* 234s 1949: _M_addr() const noexcept 234s 1949: { return static_cast(&_M_storage); } 234s 1949: 234s 1949: _Tp* 234s 1949: _M_ptr() noexcept 234s 1949: { return static_cast<_Tp*>(_M_addr()); } 234s 1949: 234s 1949: const _Tp* 234s 1949: _M_ptr() const noexcept 234s 1949: { return static_cast(_M_addr()); } 234s 1949: }; 234s 1949: # 95 "/usr/include/c++/15/ext/aligned_buffer.h" 3 4 234s 1949: template 234s 1949: struct __aligned_buffer 234s 1949: { 234s 1949: 234s 1949: alignas(__alignof__(_Tp)) unsigned char _M_storage[sizeof(_Tp)]; 234s 1949: 234s 1949: __aligned_buffer() = default; 234s 1949: 234s 1949: 234s 1949: __aligned_buffer(std::nullptr_t) { } 234s 1949: 234s 1949: void* 234s 1949: _M_addr() noexcept 234s 1949: { 234s 1949: return static_cast(&_M_storage); 234s 1949: } 234s 1949: 234s 1949: const void* 234s 1949: _M_addr() const noexcept 234s 1949: { 234s 1949: return static_cast(&_M_storage); 234s 1949: } 234s 1949: 234s 1949: _Tp* 234s 1949: _M_ptr() noexcept 234s 1949: { return static_cast<_Tp*>(_M_addr()); } 234s 1949: 234s 1949: const _Tp* 234s 1949: _M_ptr() const noexcept 234s 1949: { return static_cast(_M_addr()); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 73 "/usr/include/c++/15/bits/stl_tree.h" 2 3 4 234s 1949: # 85 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: # 105 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: enum _Rb_tree_color { _S_red = false, _S_black = true }; 234s 1949: 234s 1949: struct _Rb_tree_node_base 234s 1949: { 234s 1949: typedef _Rb_tree_node_base* _Base_ptr; 234s 1949: 234s 1949: _Rb_tree_color _M_color; 234s 1949: _Base_ptr _M_parent; 234s 1949: _Base_ptr _M_left; 234s 1949: _Base_ptr _M_right; 234s 1949: 234s 1949: static _Base_ptr 234s 1949: _S_minimum(_Base_ptr __x) noexcept 234s 1949: { 234s 1949: while (__x->_M_left != 0) __x = __x->_M_left; 234s 1949: return __x; 234s 1949: } 234s 1949: 234s 1949: static _Base_ptr 234s 1949: _S_maximum(_Base_ptr __x) noexcept 234s 1949: { 234s 1949: while (__x->_M_right != 0) __x = __x->_M_right; 234s 1949: return __x; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Base_ptr 234s 1949: _M_base_ptr() const noexcept 234s 1949: { return const_cast<_Rb_tree_node_base*>(this); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Rb_tree_key_compare 234s 1949: { 234s 1949: _Key_compare _M_key_compare; 234s 1949: 234s 1949: _Rb_tree_key_compare() 234s 1949: noexcept(is_nothrow_default_constructible<_Key_compare>::value) 234s 1949: 234s 1949: : _M_key_compare() 234s 1949: { } 234s 1949: 234s 1949: _Rb_tree_key_compare(const _Key_compare& __comp) 234s 1949: : _M_key_compare(__comp) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Rb_tree_key_compare(const _Rb_tree_key_compare&) = default; 234s 1949: 234s 1949: _Rb_tree_key_compare(_Rb_tree_key_compare&& __x) 234s 1949: noexcept(is_nothrow_copy_constructible<_Key_compare>::value) 234s 1949: : _M_key_compare(__x._M_key_compare) 234s 1949: { } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: struct _Rb_tree_header 234s 1949: { 234s 1949: _Rb_tree_node_base _M_header; 234s 1949: size_t _M_node_count; 234s 1949: 234s 1949: _Rb_tree_header() noexcept 234s 1949: { 234s 1949: _M_header._M_color = _S_red; 234s 1949: _M_reset(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: _Rb_tree_header(_Rb_tree_header&& __x) noexcept 234s 1949: { 234s 1949: if (__x._M_header._M_parent != nullptr) 234s 1949: _M_move_data(__x); 234s 1949: else 234s 1949: { 234s 1949: _M_header._M_color = _S_red; 234s 1949: _M_reset(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_move_data(_Rb_tree_header& __from) 234s 1949: { 234s 1949: _M_header._M_color = __from._M_header._M_color; 234s 1949: _M_header._M_parent = __from._M_header._M_parent; 234s 1949: _M_header._M_left = __from._M_header._M_left; 234s 1949: _M_header._M_right = __from._M_header._M_right; 234s 1949: _M_header._M_parent->_M_parent = &_M_header; 234s 1949: _M_node_count = __from._M_node_count; 234s 1949: 234s 1949: __from._M_reset(); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_reset() 234s 1949: { 234s 1949: _M_header._M_parent = 0; 234s 1949: _M_header._M_left = &_M_header; 234s 1949: _M_header._M_right = &_M_header; 234s 1949: _M_node_count = 0; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Rb_tree_node : public _Rb_tree_node_base 234s 1949: { 234s 1949: # 227 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: __gnu_cxx::__aligned_membuf<_Val> _M_storage; 234s 1949: 234s 1949: _Val* 234s 1949: _M_valptr() 234s 1949: { return _M_storage._M_ptr(); } 234s 1949: 234s 1949: const _Val* 234s 1949: _M_valptr() const 234s 1949: { return _M_storage._M_ptr(); } 234s 1949: 234s 1949: 234s 1949: _Rb_tree_node* 234s 1949: _M_node_ptr() noexcept 234s 1949: { return this; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: namespace __rb_tree 234s 1949: { 234s 1949: template 234s 1949: struct _Node_base 234s 1949: { 234s 1949: using _Base_ptr = __ptr_rebind<_VoidPtr, _Node_base>; 234s 1949: 234s 1949: _Rb_tree_color _M_color; 234s 1949: _Base_ptr _M_parent; 234s 1949: _Base_ptr _M_left; 234s 1949: _Base_ptr _M_right; 234s 1949: 234s 1949: static _Base_ptr 234s 1949: _S_minimum(_Base_ptr __x) noexcept 234s 1949: { 234s 1949: while (__x->_M_left) __x = __x->_M_left; 234s 1949: return __x; 234s 1949: } 234s 1949: 234s 1949: static _Base_ptr 234s 1949: _S_maximum(_Base_ptr __x) noexcept 234s 1949: { 234s 1949: while (__x->_M_right) __x = __x->_M_right; 234s 1949: return __x; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Base_ptr 234s 1949: _M_base_ptr() const noexcept 234s 1949: { 234s 1949: return pointer_traits<_Base_ptr>::pointer_to 234s 1949: (*const_cast<_Node_base*>(this)); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Header 234s 1949: { 234s 1949: private: 234s 1949: using _Base_ptr = typename _NodeBase::_Base_ptr; 234s 1949: 234s 1949: public: 234s 1949: _NodeBase _M_header; 234s 1949: size_t _M_node_count; 234s 1949: 234s 1949: _Header() noexcept 234s 1949: { 234s 1949: _M_header._M_color = _S_red; 234s 1949: _M_reset(); 234s 1949: } 234s 1949: 234s 1949: _Header(_Header&& __x) noexcept 234s 1949: { 234s 1949: if (__x._M_header._M_parent) 234s 1949: _M_move_data(__x); 234s 1949: else 234s 1949: { 234s 1949: _M_header._M_color = _S_red; 234s 1949: _M_reset(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_move_data(_Header& __from) 234s 1949: { 234s 1949: _M_header._M_color = __from._M_header._M_color; 234s 1949: _M_header._M_parent = __from._M_header._M_parent; 234s 1949: _M_header._M_left = __from._M_header._M_left; 234s 1949: _M_header._M_right = __from._M_header._M_right; 234s 1949: _M_header._M_parent->_M_parent = _M_header._M_base_ptr(); 234s 1949: _M_node_count = __from._M_node_count; 234s 1949: 234s 1949: __from._M_reset(); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_reset() 234s 1949: { 234s 1949: _M_header._M_parent = nullptr; 234s 1949: _M_header._M_left = _M_header._M_right = _M_header._M_base_ptr(); 234s 1949: _M_node_count = 0; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Node : public __rb_tree::_Node_base<__ptr_rebind<_ValPtr, void>> 234s 1949: { 234s 1949: using value_type = typename pointer_traits<_ValPtr>::element_type; 234s 1949: using _Node_ptr = __ptr_rebind<_ValPtr, _Node>; 234s 1949: 234s 1949: _Node() noexcept { } 234s 1949: ~_Node() { } 234s 1949: _Node(_Node&&) = delete; 234s 1949: 234s 1949: union _Uninit_storage 234s 1949: { 234s 1949: _Uninit_storage() noexcept { } 234s 1949: ~_Uninit_storage() { } 234s 1949: 234s 1949: value_type _M_data; 234s 1949: }; 234s 1949: _Uninit_storage _M_u; 234s 1949: 234s 1949: value_type* 234s 1949: _M_valptr() 234s 1949: { return std::addressof(_M_u._M_data); } 234s 1949: 234s 1949: value_type const* 234s 1949: _M_valptr() const 234s 1949: { return std::addressof(_M_u._M_data); } 234s 1949: 234s 1949: _Node_ptr 234s 1949: _M_node_ptr() noexcept 234s 1949: { return pointer_traits<_Node_ptr>::pointer_to(*this); } 234s 1949: }; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: __attribute__ ((__pure__)) _Rb_tree_node_base* 234s 1949: _Rb_tree_increment(_Rb_tree_node_base* __x) throw (); 234s 1949: 234s 1949: __attribute__ ((__pure__)) _Rb_tree_node_base* 234s 1949: _Rb_tree_decrement(_Rb_tree_node_base* __x) throw (); 234s 1949: 234s 1949: template 234s 1949: struct _Rb_tree_iterator 234s 1949: { 234s 1949: typedef _Tp value_type; 234s 1949: typedef _Tp& reference; 234s 1949: typedef _Tp* pointer; 234s 1949: 234s 1949: typedef bidirectional_iterator_tag iterator_category; 234s 1949: typedef ptrdiff_t difference_type; 234s 1949: 234s 1949: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; 234s 1949: typedef _Rb_tree_node<_Tp>* _Node_ptr; 234s 1949: 234s 1949: _Rb_tree_iterator() noexcept 234s 1949: : _M_node() { } 234s 1949: 234s 1949: explicit 234s 1949: _Rb_tree_iterator(_Base_ptr __x) noexcept 234s 1949: : _M_node(__x) { } 234s 1949: 234s 1949: reference 234s 1949: operator*() const noexcept 234s 1949: { return *static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 234s 1949: 234s 1949: pointer 234s 1949: operator->() const noexcept 234s 1949: { return static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 234s 1949: 234s 1949: _Rb_tree_iterator& 234s 1949: operator++() noexcept 234s 1949: { 234s 1949: _M_node = _Rb_tree_increment(_M_node); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: _Rb_tree_iterator 234s 1949: operator++(int) noexcept 234s 1949: { 234s 1949: _Rb_tree_iterator __tmp = *this; 234s 1949: _M_node = _Rb_tree_increment(_M_node); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: _Rb_tree_iterator& 234s 1949: operator--() noexcept 234s 1949: { 234s 1949: _M_node = _Rb_tree_decrement(_M_node); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: _Rb_tree_iterator 234s 1949: operator--(int) noexcept 234s 1949: { 234s 1949: _Rb_tree_iterator __tmp = *this; 234s 1949: _M_node = _Rb_tree_decrement(_M_node); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: friend bool 234s 1949: operator==(const _Rb_tree_iterator& __x, 234s 1949: const _Rb_tree_iterator& __y) noexcept 234s 1949: { return __x._M_node == __y._M_node; } 234s 1949: 234s 1949: 234s 1949: friend bool 234s 1949: operator!=(const _Rb_tree_iterator& __x, 234s 1949: const _Rb_tree_iterator& __y) noexcept 234s 1949: { return __x._M_node != __y._M_node; } 234s 1949: 234s 1949: 234s 1949: _Base_ptr _M_node; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Rb_tree_const_iterator 234s 1949: { 234s 1949: typedef _Tp value_type; 234s 1949: typedef const _Tp& reference; 234s 1949: typedef const _Tp* pointer; 234s 1949: 234s 1949: typedef _Rb_tree_iterator<_Tp> iterator; 234s 1949: 234s 1949: typedef bidirectional_iterator_tag iterator_category; 234s 1949: typedef ptrdiff_t difference_type; 234s 1949: 234s 1949: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; 234s 1949: typedef const _Rb_tree_node<_Tp>* _Node_ptr; 234s 1949: 234s 1949: _Rb_tree_const_iterator() noexcept 234s 1949: : _M_node() { } 234s 1949: 234s 1949: explicit 234s 1949: _Rb_tree_const_iterator(_Base_ptr __x) noexcept 234s 1949: : _M_node(__x) { } 234s 1949: 234s 1949: _Rb_tree_const_iterator(const iterator& __it) noexcept 234s 1949: : _M_node(__it._M_node) { } 234s 1949: 234s 1949: reference 234s 1949: operator*() const noexcept 234s 1949: { return *static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 234s 1949: 234s 1949: pointer 234s 1949: operator->() const noexcept 234s 1949: { return static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 234s 1949: 234s 1949: _Rb_tree_const_iterator& 234s 1949: operator++() noexcept 234s 1949: { 234s 1949: _M_node = _Rb_tree_increment(_M_node); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: _Rb_tree_const_iterator 234s 1949: operator++(int) noexcept 234s 1949: { 234s 1949: _Rb_tree_const_iterator __tmp = *this; 234s 1949: _M_node = _Rb_tree_increment(_M_node); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: _Rb_tree_const_iterator& 234s 1949: operator--() noexcept 234s 1949: { 234s 1949: _M_node = _Rb_tree_decrement(_M_node); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: _Rb_tree_const_iterator 234s 1949: operator--(int) noexcept 234s 1949: { 234s 1949: _Rb_tree_const_iterator __tmp = *this; 234s 1949: _M_node = _Rb_tree_decrement(_M_node); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: friend bool 234s 1949: operator==(const _Rb_tree_const_iterator& __x, 234s 1949: const _Rb_tree_const_iterator& __y) noexcept 234s 1949: { return __x._M_node == __y._M_node; } 234s 1949: 234s 1949: 234s 1949: friend bool 234s 1949: operator!=(const _Rb_tree_const_iterator& __x, 234s 1949: const _Rb_tree_const_iterator& __y) noexcept 234s 1949: { return __x._M_node != __y._M_node; } 234s 1949: 234s 1949: 234s 1949: _Base_ptr _M_node; 234s 1949: }; 234s 1949: 234s 1949: __attribute__((__nonnull__)) 234s 1949: void 234s 1949: _Rb_tree_insert_and_rebalance(const bool __insert_left, 234s 1949: _Rb_tree_node_base* __x, 234s 1949: _Rb_tree_node_base* __p, 234s 1949: _Rb_tree_node_base& __header) throw (); 234s 1949: 234s 1949: __attribute__((__nonnull__,__returns_nonnull__)) 234s 1949: _Rb_tree_node_base* 234s 1949: _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, 234s 1949: _Rb_tree_node_base& __header) throw (); 234s 1949: 234s 1949: namespace __rb_tree 234s 1949: { 234s 1949: 234s 1949: template 234s 1949: struct _Iterator 234s 1949: { 234s 1949: template 234s 1949: using __maybe_const = __conditional_t<_Const, const _Tp, _Tp>; 234s 1949: 234s 1949: using __ptr_traits = pointer_traits<_ValPtr>; 234s 1949: using value_type = typename __ptr_traits::element_type; 234s 1949: using reference = __maybe_const&; 234s 1949: using pointer = __maybe_const*; 234s 1949: 234s 1949: using iterator_category = bidirectional_iterator_tag; 234s 1949: using difference_type = ptrdiff_t; 234s 1949: 234s 1949: using _Node = __rb_tree::_Node<_ValPtr>; 234s 1949: using _Node_base = __rb_tree::_Node_base<__ptr_rebind<_ValPtr, void>>; 234s 1949: using _Base_ptr = typename _Node_base::_Base_ptr; 234s 1949: 234s 1949: _Iterator() noexcept 234s 1949: : _M_node() { } 234s 1949: 234s 1949: constexpr explicit 234s 1949: _Iterator(_Base_ptr __x) noexcept 234s 1949: : _M_node(__x) { } 234s 1949: 234s 1949: _Iterator(const _Iterator&) = default; 234s 1949: _Iterator& operator=(const _Iterator&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: constexpr 234s 1949: _Iterator(const _Iterator<_OtherConst, _ValPtr>& __it) 234s 1949: 234s 1949: : _M_node(__it._M_node) { } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: reference 234s 1949: operator*() const noexcept 234s 1949: { return *static_cast<_Node&>(*_M_node)._M_valptr(); } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: pointer 234s 1949: operator->() const noexcept 234s 1949: { return static_cast<_Node&>(*_M_node)._M_valptr(); } 234s 1949: 234s 1949: constexpr _Iterator& 234s 1949: operator++() noexcept 234s 1949: { 234s 1949: if (_M_node->_M_right) 234s 1949: { 234s 1949: _M_node = _M_node->_M_right; 234s 1949: while (_M_node->_M_left) 234s 1949: _M_node = _M_node->_M_left; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: _Base_ptr __y = _M_node->_M_parent; 234s 1949: while (_M_node == __y->_M_right) 234s 1949: { 234s 1949: _M_node = __y; 234s 1949: __y = __y->_M_parent; 234s 1949: } 234s 1949: if (_M_node->_M_right != __y) 234s 1949: _M_node = __y; 234s 1949: } 234s 1949: 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: constexpr _Iterator 234s 1949: operator++(int) noexcept 234s 1949: { 234s 1949: _Iterator __tmp(this->_M_node); 234s 1949: ++*this; 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: constexpr _Iterator& 234s 1949: operator--() noexcept 234s 1949: { 234s 1949: if (_M_node->_M_color == _S_red 234s 1949: && _M_node->_M_parent->_M_parent == _M_node) 234s 1949: _M_node = _M_node->_M_right; 234s 1949: else if (_M_node->_M_left) 234s 1949: { 234s 1949: _Base_ptr __y = _M_node->_M_left; 234s 1949: while (__y->_M_right) 234s 1949: __y = __y->_M_right; 234s 1949: _M_node = __y; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: _Base_ptr __y = _M_node->_M_parent; 234s 1949: while (_M_node == __y->_M_left) 234s 1949: { 234s 1949: _M_node = __y; 234s 1949: __y = __y->_M_parent; 234s 1949: } 234s 1949: _M_node = __y; 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: constexpr _Iterator 234s 1949: operator--(int) noexcept 234s 1949: { 234s 1949: _Iterator __tmp(this->_M_node); 234s 1949: --*this; 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend bool 234s 1949: operator==(const _Iterator& __x, const _Iterator& __y) noexcept 234s 1949: { return __x._M_node == __y._M_node; } 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] 234s 1949: friend bool 234s 1949: operator!=(const _Iterator& __x, const _Iterator& __y) noexcept 234s 1949: { return __x._M_node != __y._M_node; } 234s 1949: 234s 1949: 234s 1949: _Base_ptr _M_node; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Node_traits; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Node_traits<_Val, _Val*> 234s 1949: { 234s 1949: typedef _Rb_tree_node<_Val> _Node; 234s 1949: typedef _Node* _Node_ptr; 234s 1949: typedef _Rb_tree_node_base _Node_base; 234s 1949: typedef _Node_base* _Base_ptr; 234s 1949: typedef _Rb_tree_header _Header_t; 234s 1949: typedef _Rb_tree_iterator<_Val> _Iterator; 234s 1949: typedef _Rb_tree_const_iterator<_Val> _Const_iterator; 234s 1949: 234s 1949: __attribute__((__nonnull__)) 234s 1949: static void 234s 1949: _S_insert_and_rebalance(const bool __insert_left, 234s 1949: _Node_base* __x, _Node_base* __p, 234s 1949: _Node_base& __header) noexcept 234s 1949: { 234s 1949: return _Rb_tree_insert_and_rebalance(__insert_left, __x, __p, __header); 234s 1949: } 234s 1949: 234s 1949: __attribute__((__nonnull__,__returns_nonnull__)) 234s 1949: static _Node_base* 234s 1949: _S_rebalance_for_erase(_Node_base* const __z, 234s 1949: _Node_base& __header) noexcept 234s 1949: { return _Rb_tree_rebalance_for_erase(__z, __header); } 234s 1949: }; 234s 1949: # 712 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: template 234s 1949: struct _Node_traits 234s 1949: { 234s 1949: using _Node = __rb_tree::_Node<_ValPtr>; 234s 1949: using _Node_ptr = __ptr_rebind<_ValPtr, _Node>; 234s 1949: using _Node_base = __rb_tree::_Node_base<__ptr_rebind<_ValPtr, void>>; 234s 1949: using _Base_ptr = __ptr_rebind<_ValPtr, _Node_base>; 234s 1949: using _Header_t = __rb_tree::_Header<_Node_base>; 234s 1949: using _Iterator = __rb_tree::_Iterator; 234s 1949: using _Const_iterator = __rb_tree::_Iterator; 234s 1949: 234s 1949: static void 234s 1949: _Rotate_left(_Base_ptr __x, _Base_ptr& __root) 234s 1949: { 234s 1949: const _Base_ptr __y = __x->_M_right; 234s 1949: 234s 1949: __x->_M_right = __y->_M_left; 234s 1949: if (__y->_M_left) 234s 1949: __y->_M_left->_M_parent = __x; 234s 1949: __y->_M_parent = __x->_M_parent; 234s 1949: 234s 1949: if (__x == __root) 234s 1949: __root = __y; 234s 1949: else if (__x == __x->_M_parent->_M_left) 234s 1949: __x->_M_parent->_M_left = __y; 234s 1949: else 234s 1949: __x->_M_parent->_M_right = __y; 234s 1949: __y->_M_left = __x; 234s 1949: __x->_M_parent = __y; 234s 1949: } 234s 1949: 234s 1949: static void 234s 1949: _Rotate_right(_Base_ptr __x, _Base_ptr& __root) 234s 1949: { 234s 1949: const _Base_ptr __y = __x->_M_left; 234s 1949: 234s 1949: __x->_M_left = __y->_M_right; 234s 1949: if (__y->_M_right) 234s 1949: __y->_M_right->_M_parent = __x; 234s 1949: __y->_M_parent = __x->_M_parent; 234s 1949: 234s 1949: if (__x == __root) 234s 1949: __root = __y; 234s 1949: else if (__x == __x->_M_parent->_M_right) 234s 1949: __x->_M_parent->_M_right = __y; 234s 1949: else 234s 1949: __x->_M_parent->_M_left = __y; 234s 1949: __y->_M_right = __x; 234s 1949: __x->_M_parent = __y; 234s 1949: } 234s 1949: 234s 1949: static void 234s 1949: _S_insert_and_rebalance(const bool __insert_left, 234s 1949: _Base_ptr __x, _Base_ptr __p, 234s 1949: _Node_base& __header) 234s 1949: { 234s 1949: _Base_ptr& __root = __header._M_parent; 234s 1949: 234s 1949: 234s 1949: __x->_M_parent = __p; 234s 1949: __x->_M_left = __x->_M_right = nullptr; 234s 1949: __x->_M_color = _S_red; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (__insert_left) 234s 1949: { 234s 1949: __p->_M_left = __x; 234s 1949: 234s 1949: if (std::__to_address(__p) == std::addressof(__header)) 234s 1949: { 234s 1949: __header._M_parent = __x; 234s 1949: __header._M_right = __x; 234s 1949: } 234s 1949: else if (__p == __header._M_left) 234s 1949: __header._M_left = __x; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __p->_M_right = __x; 234s 1949: 234s 1949: if (__p == __header._M_right) 234s 1949: __header._M_right = __x; 234s 1949: } 234s 1949: 234s 1949: while (__x != __root 234s 1949: && __x->_M_parent->_M_color == _S_red) 234s 1949: { 234s 1949: const _Base_ptr __xpp = __x->_M_parent->_M_parent; 234s 1949: 234s 1949: if (__x->_M_parent == __xpp->_M_left) 234s 1949: { 234s 1949: const _Base_ptr __y = __xpp->_M_right; 234s 1949: if (__y && __y->_M_color == _S_red) 234s 1949: { 234s 1949: __x->_M_parent->_M_color = _S_black; 234s 1949: __y->_M_color = _S_black; 234s 1949: __xpp->_M_color = _S_red; 234s 1949: __x = __xpp; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: if (__x == __x->_M_parent->_M_right) 234s 1949: { 234s 1949: __x = __x->_M_parent; 234s 1949: _Rotate_left(__x, __root); 234s 1949: } 234s 1949: __x->_M_parent->_M_color = _S_black; 234s 1949: __xpp->_M_color = _S_red; 234s 1949: _Rotate_right(__xpp, __root); 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: const _Base_ptr __y = __xpp->_M_left; 234s 1949: if (__y && __y->_M_color == _S_red) 234s 1949: { 234s 1949: __x->_M_parent->_M_color = _S_black; 234s 1949: __y->_M_color = _S_black; 234s 1949: __xpp->_M_color = _S_red; 234s 1949: __x = __xpp; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: if (__x == __x->_M_parent->_M_left) 234s 1949: { 234s 1949: __x = __x->_M_parent; 234s 1949: _Rotate_right(__x, __root); 234s 1949: } 234s 1949: __x->_M_parent->_M_color = _S_black; 234s 1949: __xpp->_M_color = _S_red; 234s 1949: _Rotate_left(__xpp, __root); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: __root->_M_color = _S_black; 234s 1949: } 234s 1949: 234s 1949: static _Base_ptr 234s 1949: _S_rebalance_for_erase(_Base_ptr __z, _Node_base& __header) 234s 1949: { 234s 1949: _Base_ptr& __root = __header._M_parent; 234s 1949: _Base_ptr& __leftmost = __header._M_left; 234s 1949: _Base_ptr& __rightmost = __header._M_right; 234s 1949: _Base_ptr __y = __z; 234s 1949: _Base_ptr __x{}; 234s 1949: _Base_ptr __x_parent{}; 234s 1949: 234s 1949: if (!__y->_M_left) 234s 1949: __x = __y->_M_right; 234s 1949: else 234s 1949: if (!__y->_M_right) 234s 1949: __x = __y->_M_left; 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: __y = __y->_M_right; 234s 1949: while (__y->_M_left) 234s 1949: __y = __y->_M_left; 234s 1949: __x = __y->_M_right; 234s 1949: } 234s 1949: if (__y != __z) 234s 1949: { 234s 1949: 234s 1949: __z->_M_left->_M_parent = __y; 234s 1949: __y->_M_left = __z->_M_left; 234s 1949: if (__y != __z->_M_right) 234s 1949: { 234s 1949: __x_parent = __y->_M_parent; 234s 1949: if (__x) 234s 1949: __x->_M_parent = __y->_M_parent; 234s 1949: __y->_M_parent->_M_left = __x; 234s 1949: __y->_M_right = __z->_M_right; 234s 1949: __z->_M_right->_M_parent = __y; 234s 1949: } 234s 1949: else 234s 1949: __x_parent = __y; 234s 1949: if (__root == __z) 234s 1949: __root = __y; 234s 1949: else if (__z->_M_parent->_M_left == __z) 234s 1949: __z->_M_parent->_M_left = __y; 234s 1949: else 234s 1949: __z->_M_parent->_M_right = __y; 234s 1949: __y->_M_parent = __z->_M_parent; 234s 1949: std::swap(__y->_M_color, __z->_M_color); 234s 1949: __y = __z; 234s 1949: 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __x_parent = __y->_M_parent; 234s 1949: if (__x) 234s 1949: __x->_M_parent = __y->_M_parent; 234s 1949: if (__root == __z) 234s 1949: __root = __x; 234s 1949: else 234s 1949: if (__z->_M_parent->_M_left == __z) 234s 1949: __z->_M_parent->_M_left = __x; 234s 1949: else 234s 1949: __z->_M_parent->_M_right = __x; 234s 1949: if (__leftmost == __z) 234s 1949: { 234s 1949: if (!__z->_M_right) 234s 1949: __leftmost = __z->_M_parent; 234s 1949: 234s 1949: else 234s 1949: __leftmost = _Node_base::_S_minimum(__x); 234s 1949: } 234s 1949: if (__rightmost == __z) 234s 1949: { 234s 1949: if (__z->_M_left == 0) 234s 1949: __rightmost = __z->_M_parent; 234s 1949: 234s 1949: else 234s 1949: __rightmost = _Node_base::_S_maximum(__x); 234s 1949: } 234s 1949: } 234s 1949: if (__y->_M_color != _S_red) 234s 1949: { 234s 1949: while (__x != __root && (__x == 0 || __x->_M_color == _S_black)) 234s 1949: if (__x == __x_parent->_M_left) 234s 1949: { 234s 1949: _Base_ptr __w = __x_parent->_M_right; 234s 1949: if (__w->_M_color == _S_red) 234s 1949: { 234s 1949: __w->_M_color = _S_black; 234s 1949: __x_parent->_M_color = _S_red; 234s 1949: _Rotate_left(__x_parent, __root); 234s 1949: __w = __x_parent->_M_right; 234s 1949: } 234s 1949: if ((!__w->_M_left || __w->_M_left->_M_color == _S_black) && 234s 1949: (!__w->_M_right || __w->_M_right->_M_color == _S_black)) 234s 1949: { 234s 1949: __w->_M_color = _S_red; 234s 1949: __x = __x_parent; 234s 1949: __x_parent = __x_parent->_M_parent; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: if (!__w->_M_right || __w->_M_right->_M_color == _S_black) 234s 1949: { 234s 1949: __w->_M_left->_M_color = _S_black; 234s 1949: __w->_M_color = _S_red; 234s 1949: _Rotate_right(__w, __root); 234s 1949: __w = __x_parent->_M_right; 234s 1949: } 234s 1949: __w->_M_color = __x_parent->_M_color; 234s 1949: __x_parent->_M_color = _S_black; 234s 1949: if (__w->_M_right) 234s 1949: __w->_M_right->_M_color = _S_black; 234s 1949: _Rotate_left(__x_parent, __root); 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: _Base_ptr __w = __x_parent->_M_left; 234s 1949: if (__w->_M_color == _S_red) 234s 1949: { 234s 1949: __w->_M_color = _S_black; 234s 1949: __x_parent->_M_color = _S_red; 234s 1949: _Rotate_right(__x_parent, __root); 234s 1949: __w = __x_parent->_M_left; 234s 1949: } 234s 1949: if ((!__w->_M_right || __w->_M_right->_M_color == _S_black) && 234s 1949: (!__w->_M_left || __w->_M_left->_M_color == _S_black)) 234s 1949: { 234s 1949: __w->_M_color = _S_red; 234s 1949: __x = __x_parent; 234s 1949: __x_parent = __x_parent->_M_parent; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: if (!__w->_M_left || __w->_M_left->_M_color == _S_black) 234s 1949: { 234s 1949: __w->_M_right->_M_color = _S_black; 234s 1949: __w->_M_color = _S_red; 234s 1949: _Rotate_left(__w, __root); 234s 1949: __w = __x_parent->_M_left; 234s 1949: } 234s 1949: __w->_M_color = __x_parent->_M_color; 234s 1949: __x_parent->_M_color = _S_black; 234s 1949: if (__w->_M_left) 234s 1949: __w->_M_left->_M_color = _S_black; 234s 1949: _Rotate_right(__x_parent, __root); 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: if (__x) 234s 1949: __x->_M_color = _S_black; 234s 1949: } 234s 1949: 234s 1949: return __y; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template > 234s 1949: class _Rb_tree 234s 1949: { 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 234s 1949: rebind<_Val>::other _Val_alloc_type; 234s 1949: 234s 1949: typedef __gnu_cxx::__alloc_traits<_Val_alloc_type> _Val_alloc_traits; 234s 1949: typedef typename _Val_alloc_traits::pointer _ValPtr; 234s 1949: typedef __rb_tree::_Node_traits<_Val, _ValPtr> _Node_traits; 234s 1949: 234s 1949: typedef typename _Node_traits::_Node_base _Node_base; 234s 1949: typedef typename _Node_traits::_Node _Node; 234s 1949: 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 234s 1949: rebind<_Node>::other _Node_allocator; 234s 1949: 234s 1949: typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Node_alloc_traits; 234s 1949: 234s 1949: protected: 234s 1949: typedef typename _Node_traits::_Base_ptr _Base_ptr; 234s 1949: typedef typename _Node_traits::_Node_ptr _Node_ptr; 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: 234s 1949: struct _Reuse_or_alloc_node 234s 1949: { 234s 1949: _Reuse_or_alloc_node(_Rb_tree& __t) 234s 1949: : _M_root(__t._M_root()), _M_nodes(__t._M_rightmost()), _M_t(__t) 234s 1949: { 234s 1949: if (_M_root) 234s 1949: { 234s 1949: _M_root->_M_parent = _Base_ptr(); 234s 1949: 234s 1949: if (_M_nodes->_M_left) 234s 1949: _M_nodes = _M_nodes->_M_left; 234s 1949: } 234s 1949: else 234s 1949: _M_nodes = _Base_ptr(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: _Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete; 234s 1949: 234s 1949: 234s 1949: ~_Reuse_or_alloc_node() 234s 1949: { 234s 1949: if (_M_root) 234s 1949: _M_t._M_erase(static_cast<_Node&>(*_M_root)._M_node_ptr()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _Node_ptr 234s 1949: operator()(_Arg&& __arg) 234s 1949: { 234s 1949: _Base_ptr __base = _M_extract(); 234s 1949: if (__base) 234s 1949: { 234s 1949: _Node_ptr __node = static_cast<_Node&>(*__base)._M_node_ptr(); 234s 1949: _M_t._M_destroy_node(__node); 234s 1949: _M_t._M_construct_node(__node, std::forward<_Arg>(__arg)); 234s 1949: return __node; 234s 1949: } 234s 1949: 234s 1949: return _M_t._M_create_node(std::forward<_Arg>(__arg)); 234s 1949: } 234s 1949: 234s 1949: private: 234s 1949: _Base_ptr 234s 1949: _M_extract() 234s 1949: { 234s 1949: if (!_M_nodes) 234s 1949: return _M_nodes; 234s 1949: 234s 1949: _Base_ptr __node = _M_nodes; 234s 1949: _M_nodes = _M_nodes->_M_parent; 234s 1949: if (_M_nodes) 234s 1949: { 234s 1949: if (_M_nodes->_M_right == __node) 234s 1949: { 234s 1949: _M_nodes->_M_right = _Base_ptr(); 234s 1949: 234s 1949: if (_M_nodes->_M_left) 234s 1949: { 234s 1949: _M_nodes = _M_nodes->_M_left; 234s 1949: 234s 1949: while (_M_nodes->_M_right) 234s 1949: _M_nodes = _M_nodes->_M_right; 234s 1949: 234s 1949: if (_M_nodes->_M_left) 234s 1949: _M_nodes = _M_nodes->_M_left; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: _M_nodes->_M_left = _Base_ptr(); 234s 1949: } 234s 1949: else 234s 1949: _M_root = _Base_ptr(); 234s 1949: 234s 1949: return __node; 234s 1949: } 234s 1949: 234s 1949: _Base_ptr _M_root; 234s 1949: _Base_ptr _M_nodes; 234s 1949: _Rb_tree& _M_t; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct _Alloc_node 234s 1949: { 234s 1949: _Alloc_node(_Rb_tree& __t) 234s 1949: : _M_t(__t) { } 234s 1949: 234s 1949: template 234s 1949: _Node_ptr 234s 1949: operator()(_Arg&& __arg) const 234s 1949: { return _M_t._M_create_node(std::forward<_Arg>(__arg)); } 234s 1949: 234s 1949: private: 234s 1949: _Rb_tree& _M_t; 234s 1949: }; 234s 1949: 234s 1949: public: 234s 1949: typedef _Key key_type; 234s 1949: typedef _Val value_type; 234s 1949: typedef value_type* pointer; 234s 1949: typedef const value_type* const_pointer; 234s 1949: typedef value_type& reference; 234s 1949: typedef const value_type& const_reference; 234s 1949: typedef size_t size_type; 234s 1949: typedef ptrdiff_t difference_type; 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: _Node_allocator& 234s 1949: _M_get_Node_allocator() noexcept 234s 1949: { return this->_M_impl; } 234s 1949: 234s 1949: const _Node_allocator& 234s 1949: _M_get_Node_allocator() const noexcept 234s 1949: { return this->_M_impl; } 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return allocator_type(_M_get_Node_allocator()); } 234s 1949: 234s 1949: protected: 234s 1949: _Node_ptr 234s 1949: _M_get_node() 234s 1949: { 234s 1949: 234s 1949: return _Node_alloc_traits::allocate(_M_get_Node_allocator(), 1); 234s 1949: # 1185 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_put_node(_Node_ptr __p) noexcept 234s 1949: { 234s 1949: 234s 1949: _Node_alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); 234s 1949: # 1207 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: } 234s 1949: # 1230 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: _M_construct_node(_Node_ptr __node, _Args&&... __args) 234s 1949: { 234s 1949: try 234s 1949: { 234s 1949: ::new(std::addressof(*__node)) _Node; 234s 1949: _Node_alloc_traits::construct(_M_get_Node_allocator(), 234s 1949: __node->_M_valptr(), 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: __node->~_Node(); 234s 1949: _M_put_node(__node); 234s 1949: throw; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _Node_ptr 234s 1949: _M_create_node(_Args&&... __args) 234s 1949: { 234s 1949: _Node_ptr __tmp = _M_get_node(); 234s 1949: _M_construct_node(__tmp, std::forward<_Args>(__args)...); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_destroy_node(_Node_ptr __p) noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr()); 234s 1949: __p->~_Node(); 234s 1949: 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_drop_node(_Node_ptr __p) noexcept 234s 1949: { 234s 1949: _M_destroy_node(__p); 234s 1949: _M_put_node(__p); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _Node_ptr 234s 1949: _M_clone_node(_Node_ptr __x, _NodeGen& __node_gen) 234s 1949: { 234s 1949: 234s 1949: using _Vp = __conditional_t<_MoveValue, 234s 1949: value_type&&, 234s 1949: const value_type&>; 234s 1949: 234s 1949: _Node_ptr __tmp 234s 1949: = __node_gen(std::forward<_Vp>(*__x->_M_valptr())); 234s 1949: __tmp->_M_color = __x->_M_color; 234s 1949: __tmp->_M_left = __tmp->_M_right = _Base_ptr(); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: protected: 234s 1949: typedef typename _Node_traits::_Header_t _Header_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: 234s 1949: struct _Rb_tree_impl 234s 1949: : public _Node_allocator 234s 1949: , public _Rb_tree_key_compare<_Key_compare> 234s 1949: , public _Header_t 234s 1949: { 234s 1949: typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare; 234s 1949: 234s 1949: _Rb_tree_impl() 234s 1949: noexcept(is_nothrow_default_constructible<_Node_allocator>::value && is_nothrow_default_constructible<_Base_key_compare>::value) 234s 1949: 234s 1949: 234s 1949: : _Node_allocator() 234s 1949: { } 234s 1949: 234s 1949: _Rb_tree_impl(const _Rb_tree_impl& __x) 234s 1949: : _Node_allocator(_Node_alloc_traits::_S_select_on_copy(__x)) 234s 1949: , _Base_key_compare(__x._M_key_compare) 234s 1949: , _Header_t() 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Rb_tree_impl(_Rb_tree_impl&&) 234s 1949: noexcept( is_nothrow_move_constructible<_Base_key_compare>::value ) 234s 1949: = default; 234s 1949: 234s 1949: explicit 234s 1949: _Rb_tree_impl(_Node_allocator&& __a) 234s 1949: : _Node_allocator(std::move(__a)) 234s 1949: { } 234s 1949: 234s 1949: _Rb_tree_impl(_Rb_tree_impl&& __x, _Node_allocator&& __a) 234s 1949: : _Node_allocator(std::move(__a)), 234s 1949: _Base_key_compare(std::move(__x)), 234s 1949: _Header_t(std::move(__x)) 234s 1949: { } 234s 1949: 234s 1949: _Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a) 234s 1949: : _Node_allocator(std::move(__a)), _Base_key_compare(__comp) 234s 1949: { } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: _Rb_tree_impl<_Compare> _M_impl; 234s 1949: 234s 1949: protected: 234s 1949: _Base_ptr& 234s 1949: _M_root() noexcept 234s 1949: { return this->_M_impl._M_header._M_parent; } 234s 1949: 234s 1949: _Base_ptr 234s 1949: _M_root() const noexcept 234s 1949: { return this->_M_impl._M_header._M_parent; } 234s 1949: 234s 1949: _Base_ptr& 234s 1949: _M_leftmost() noexcept 234s 1949: { return this->_M_impl._M_header._M_left; } 234s 1949: 234s 1949: _Base_ptr 234s 1949: _M_leftmost() const noexcept 234s 1949: { return this->_M_impl._M_header._M_left; } 234s 1949: 234s 1949: _Base_ptr& 234s 1949: _M_rightmost() noexcept 234s 1949: { return this->_M_impl._M_header._M_right; } 234s 1949: 234s 1949: _Base_ptr 234s 1949: _M_rightmost() const noexcept 234s 1949: { return this->_M_impl._M_header._M_right; } 234s 1949: 234s 1949: _Base_ptr 234s 1949: _M_begin() const noexcept 234s 1949: { return this->_M_impl._M_header._M_parent; } 234s 1949: 234s 1949: _Node_ptr 234s 1949: _M_begin_node() const noexcept 234s 1949: { 234s 1949: _Base_ptr __begin = this->_M_impl._M_header._M_parent; 234s 1949: return __begin 234s 1949: ? static_cast<_Node&>(*__begin)._M_node_ptr() 234s 1949: : _Node_ptr(); 234s 1949: } 234s 1949: 234s 1949: _Base_ptr 234s 1949: _M_end() const noexcept 234s 1949: { return this->_M_impl._M_header._M_base_ptr(); } 234s 1949: 234s 1949: static const _Key& 234s 1949: _S_key(const _Node& __node) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{}, 234s 1949: "comparison object must be invocable " 234s 1949: "with two arguments of key type"); 234s 1949: # 1412 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: return _KeyOfValue()(*__node._M_valptr()); 234s 1949: } 234s 1949: 234s 1949: static const _Key& 234s 1949: _S_key(_Base_ptr __x) 234s 1949: { return _S_key(static_cast(*__x)); } 234s 1949: 234s 1949: static const _Key& 234s 1949: _S_key(_Node_ptr __x) 234s 1949: { return _S_key(*__x); } 234s 1949: 234s 1949: static _Base_ptr 234s 1949: _S_left(_Base_ptr __x) noexcept 234s 1949: { return __x->_M_left; } 234s 1949: 234s 1949: static _Node_ptr 234s 1949: _S_left(_Node_ptr __x) 234s 1949: { 234s 1949: return __x->_M_left 234s 1949: ? static_cast<_Node&>(*__x->_M_left)._M_node_ptr() 234s 1949: : _Node_ptr(); 234s 1949: } 234s 1949: 234s 1949: static _Base_ptr 234s 1949: _S_right(_Base_ptr __x) noexcept 234s 1949: { return __x->_M_right; } 234s 1949: 234s 1949: static _Node_ptr 234s 1949: _S_right(_Node_ptr __x) noexcept 234s 1949: { 234s 1949: return __x->_M_right 234s 1949: ? static_cast<_Node&>(*__x->_M_right)._M_node_ptr() 234s 1949: : _Node_ptr(); 234s 1949: } 234s 1949: 234s 1949: public: 234s 1949: typedef typename _Node_traits::_Iterator iterator; 234s 1949: typedef typename _Node_traits::_Const_iterator const_iterator; 234s 1949: 234s 1949: typedef std::reverse_iterator reverse_iterator; 234s 1949: typedef std::reverse_iterator const_reverse_iterator; 234s 1949: # 1461 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: pair<_Base_ptr, _Base_ptr> 234s 1949: _M_get_insert_unique_pos(const key_type& __k); 234s 1949: 234s 1949: pair<_Base_ptr, _Base_ptr> 234s 1949: _M_get_insert_equal_pos(const key_type& __k); 234s 1949: 234s 1949: pair<_Base_ptr, _Base_ptr> 234s 1949: _M_get_insert_hint_unique_pos(const_iterator __pos, 234s 1949: const key_type& __k); 234s 1949: 234s 1949: pair<_Base_ptr, _Base_ptr> 234s 1949: _M_get_insert_hint_equal_pos(const_iterator __pos, 234s 1949: const key_type& __k); 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&); 234s 1949: 234s 1949: iterator 234s 1949: _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Node_ptr __z); 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_insert_lower(_Base_ptr __y, _Arg&& __v); 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_insert_equal_lower(_Arg&& __x); 234s 1949: 234s 1949: iterator 234s 1949: _M_insert_lower_node(_Base_ptr __p, _Node_ptr __z); 234s 1949: 234s 1949: iterator 234s 1949: _M_insert_equal_lower_node(_Node_ptr __z); 234s 1949: # 1512 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: enum { __as_lvalue, __as_rvalue }; 234s 1949: 234s 1949: template 234s 1949: _Base_ptr 234s 1949: _M_copy(_Node_ptr, _Base_ptr, _NodeGen&); 234s 1949: 234s 1949: template 234s 1949: _Base_ptr 234s 1949: _M_copy(const _Rb_tree& __x, _NodeGen& __gen) 234s 1949: { 234s 1949: _Base_ptr __root = 234s 1949: _M_copy<_MoveValues>(__x._M_begin_node(), _M_end(), __gen); 234s 1949: _M_leftmost() = _Node_base::_S_minimum(__root); 234s 1949: _M_rightmost() = _Node_base::_S_maximum(__root); 234s 1949: _M_impl._M_node_count = __x._M_impl._M_node_count; 234s 1949: return __root; 234s 1949: } 234s 1949: 234s 1949: _Base_ptr 234s 1949: _M_copy(const _Rb_tree& __x) 234s 1949: { 234s 1949: _Alloc_node __an(*this); 234s 1949: return _M_copy<__as_lvalue>(__x, __an); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_erase(_Node_ptr __x); 234s 1949: 234s 1949: _Base_ptr 234s 1949: _M_lower_bound(_Base_ptr __x, _Base_ptr __y, 234s 1949: const _Key& __k) const; 234s 1949: 234s 1949: _Base_ptr 234s 1949: _M_upper_bound(_Base_ptr __x, _Base_ptr __y, 234s 1949: const _Key& __k) const; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Rb_tree() = default; 234s 1949: 234s 1949: 234s 1949: _Rb_tree(const _Compare& __comp, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_impl(__comp, _Node_allocator(__a)) { } 234s 1949: 234s 1949: _Rb_tree(const _Rb_tree& __x) 234s 1949: : _M_impl(__x._M_impl) 234s 1949: { 234s 1949: if (__x._M_root()) 234s 1949: _M_root() = _M_copy(__x); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: _Rb_tree(const allocator_type& __a) 234s 1949: : _M_impl(_Node_allocator(__a)) 234s 1949: { } 234s 1949: 234s 1949: _Rb_tree(const _Rb_tree& __x, const allocator_type& __a) 234s 1949: : _M_impl(__x._M_impl._M_key_compare, _Node_allocator(__a)) 234s 1949: { 234s 1949: if (__x._M_root()) 234s 1949: _M_root() = _M_copy(__x); 234s 1949: } 234s 1949: 234s 1949: _Rb_tree(_Rb_tree&&) = default; 234s 1949: 234s 1949: _Rb_tree(_Rb_tree&& __x, const allocator_type& __a) 234s 1949: : _Rb_tree(std::move(__x), _Node_allocator(__a)) 234s 1949: { } 234s 1949: 234s 1949: private: 234s 1949: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, true_type) 234s 1949: noexcept(is_nothrow_default_constructible<_Compare>::value) 234s 1949: : _M_impl(std::move(__x._M_impl), std::move(__a)) 234s 1949: { } 234s 1949: 234s 1949: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, false_type) 234s 1949: : _M_impl(__x._M_impl._M_key_compare, std::move(__a)) 234s 1949: { 234s 1949: if (__x._M_root()) 234s 1949: _M_move_data(__x, false_type{}); 234s 1949: } 234s 1949: 234s 1949: public: 234s 1949: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a) 234s 1949: noexcept( noexcept( 234s 1949: _Rb_tree(std::declval<_Rb_tree&&>(), std::declval<_Node_allocator&&>(), 234s 1949: std::declval())) ) 234s 1949: : _Rb_tree(std::move(__x), std::move(__a), 234s 1949: typename _Node_alloc_traits::is_always_equal{}) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: ~_Rb_tree() noexcept 234s 1949: { _M_erase(_M_begin_node()); } 234s 1949: 234s 1949: _Rb_tree& 234s 1949: operator=(const _Rb_tree& __x); 234s 1949: 234s 1949: 234s 1949: _Compare 234s 1949: key_comp() const 234s 1949: { return _M_impl._M_key_compare; } 234s 1949: 234s 1949: iterator 234s 1949: begin() noexcept 234s 1949: { return iterator(this->_M_impl._M_header._M_left); } 234s 1949: 234s 1949: const_iterator 234s 1949: begin() const noexcept 234s 1949: { return const_iterator(this->_M_impl._M_header._M_left); } 234s 1949: 234s 1949: iterator 234s 1949: end() noexcept 234s 1949: { return iterator(_M_end()); } 234s 1949: 234s 1949: const_iterator 234s 1949: end() const noexcept 234s 1949: { return const_iterator(_M_end()); } 234s 1949: 234s 1949: reverse_iterator 234s 1949: rbegin() noexcept 234s 1949: { return reverse_iterator(end()); } 234s 1949: 234s 1949: const_reverse_iterator 234s 1949: rbegin() const noexcept 234s 1949: { return const_reverse_iterator(end()); } 234s 1949: 234s 1949: reverse_iterator 234s 1949: rend() noexcept 234s 1949: { return reverse_iterator(begin()); } 234s 1949: 234s 1949: const_reverse_iterator 234s 1949: rend() const noexcept 234s 1949: { return const_reverse_iterator(begin()); } 234s 1949: 234s 1949: [[__nodiscard__]] bool 234s 1949: empty() const noexcept 234s 1949: { return _M_impl._M_node_count == 0; } 234s 1949: 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { return _M_impl._M_node_count; } 234s 1949: 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { return _Node_alloc_traits::max_size(_M_get_Node_allocator()); } 234s 1949: 234s 1949: void 234s 1949: swap(_Rb_tree& __t) 234s 1949: noexcept(__is_nothrow_swappable<_Compare>::value); 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: pair 234s 1949: _M_insert_unique(_Arg&& __x); 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_insert_equal(_Arg&& __x); 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&); 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_insert_unique_(const_iterator __pos, _Arg&& __x) 234s 1949: { 234s 1949: _Alloc_node __an(*this); 234s 1949: return _M_insert_unique_(__pos, std::forward<_Arg>(__x), __an); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_insert_equal_(const_iterator __pos, _Arg&& __x, _NodeGen&); 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_insert_equal_(const_iterator __pos, _Arg&& __x) 234s 1949: { 234s 1949: _Alloc_node __an(*this); 234s 1949: return _M_insert_equal_(__pos, std::forward<_Arg>(__x), __an); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: pair 234s 1949: _M_emplace_unique(_Args&&... __args); 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_emplace_equal(_Args&&... __args); 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args); 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args); 234s 1949: 234s 1949: template 234s 1949: using __same_value_type 234s 1949: = is_same::value_type>; 234s 1949: 234s 1949: template 234s 1949: __enable_if_t<__same_value_type<_InputIterator>::value> 234s 1949: _M_insert_range_unique(_InputIterator __first, _InputIterator __last) 234s 1949: { 234s 1949: _Alloc_node __an(*this); 234s 1949: for (; __first != __last; ++__first) 234s 1949: _M_insert_unique_(end(), *__first, __an); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __enable_if_t::value> 234s 1949: _M_insert_range_unique(_InputIterator __first, _InputIterator __last) 234s 1949: { 234s 1949: for (; __first != __last; ++__first) 234s 1949: _M_emplace_unique(*__first); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __enable_if_t<__same_value_type<_InputIterator>::value> 234s 1949: _M_insert_range_equal(_InputIterator __first, _InputIterator __last) 234s 1949: { 234s 1949: _Alloc_node __an(*this); 234s 1949: for (; __first != __last; ++__first) 234s 1949: _M_insert_equal_(end(), *__first, __an); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __enable_if_t::value> 234s 1949: _M_insert_range_equal(_InputIterator __first, _InputIterator __last) 234s 1949: { 234s 1949: for (; __first != __last; ++__first) 234s 1949: _M_emplace_equal(*__first); 234s 1949: } 234s 1949: # 1803 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: private: 234s 1949: void 234s 1949: _M_erase_aux(const_iterator __position); 234s 1949: 234s 1949: void 234s 1949: _M_erase_aux(const_iterator __first, const_iterator __last); 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iterator 234s 1949: erase(const_iterator __position) 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__position != end())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: const_iterator __result = __position; 234s 1949: ++__result; 234s 1949: _M_erase_aux(__position); 234s 1949: return iterator(__result._M_node); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iterator 234s 1949: erase(iterator __position) 234s 1949: { 234s 1949: do { if (std::__is_constant_evaluated() && !bool(__position != end())) std::__glibcxx_assert_fail(); } while (false); 234s 1949: iterator __result = __position; 234s 1949: ++__result; 234s 1949: _M_erase_aux(__position); 234s 1949: return __result; 234s 1949: } 234s 1949: # 1852 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: size_type 234s 1949: erase(const key_type& __x); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iterator 234s 1949: erase(const_iterator __first, const_iterator __last) 234s 1949: { 234s 1949: _M_erase_aux(__first, __last); 234s 1949: return iterator(__last._M_node); 234s 1949: } 234s 1949: # 1875 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { 234s 1949: _M_erase(_M_begin_node()); 234s 1949: _M_impl._M_reset(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: find(const key_type& __k); 234s 1949: 234s 1949: const_iterator 234s 1949: find(const key_type& __k) const; 234s 1949: 234s 1949: size_type 234s 1949: count(const key_type& __k) const; 234s 1949: 234s 1949: iterator 234s 1949: lower_bound(const key_type& __k) 234s 1949: { return iterator(_M_lower_bound(_M_begin(), _M_end(), __k)); } 234s 1949: 234s 1949: const_iterator 234s 1949: lower_bound(const key_type& __k) const 234s 1949: { 234s 1949: return const_iterator 234s 1949: (_M_lower_bound(_M_begin(), _M_end(), __k)); 234s 1949: } 234s 1949: 234s 1949: iterator 234s 1949: upper_bound(const key_type& __k) 234s 1949: { return iterator(_M_upper_bound(_M_begin(), _M_end(), __k)); } 234s 1949: 234s 1949: const_iterator 234s 1949: upper_bound(const key_type& __k) const 234s 1949: { 234s 1949: return const_iterator 234s 1949: (_M_upper_bound(_M_begin(), _M_end(), __k)); 234s 1949: } 234s 1949: 234s 1949: pair 234s 1949: equal_range(const key_type& __k); 234s 1949: 234s 1949: pair 234s 1949: equal_range(const key_type& __k) const; 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: iterator 234s 1949: _M_find_tr(const _Kt& __k) 234s 1949: { 234s 1949: const _Rb_tree* __const_this = this; 234s 1949: return iterator(__const_this->_M_find_tr(__k)._M_node); 234s 1949: } 234s 1949: 234s 1949: template> 234s 1949: const_iterator 234s 1949: _M_find_tr(const _Kt& __k) const 234s 1949: { 234s 1949: const_iterator __j(_M_lower_bound_tr(__k)); 234s 1949: if (__j != end() && _M_impl._M_key_compare(__k, _S_key(__j._M_node))) 234s 1949: __j = end(); 234s 1949: return __j; 234s 1949: } 234s 1949: 234s 1949: template> 234s 1949: size_type 234s 1949: _M_count_tr(const _Kt& __k) const 234s 1949: { 234s 1949: auto __p = _M_equal_range_tr(__k); 234s 1949: return std::distance(__p.first, __p.second); 234s 1949: } 234s 1949: 234s 1949: template> 234s 1949: _Base_ptr 234s 1949: _M_lower_bound_tr(const _Kt& __k) const 234s 1949: { 234s 1949: auto __x = _M_begin(); 234s 1949: auto __y = _M_end(); 234s 1949: while (__x) 234s 1949: if (!_M_impl._M_key_compare(_S_key(__x), __k)) 234s 1949: { 234s 1949: __y = __x; 234s 1949: __x = _S_left(__x); 234s 1949: } 234s 1949: else 234s 1949: __x = _S_right(__x); 234s 1949: return __y; 234s 1949: } 234s 1949: 234s 1949: template> 234s 1949: _Base_ptr 234s 1949: _M_upper_bound_tr(const _Kt& __k) const 234s 1949: { 234s 1949: auto __x = _M_begin(); 234s 1949: auto __y = _M_end(); 234s 1949: while (__x) 234s 1949: if (_M_impl._M_key_compare(__k, _S_key(__x))) 234s 1949: { 234s 1949: __y = __x; 234s 1949: __x = _S_left(__x); 234s 1949: } 234s 1949: else 234s 1949: __x = _S_right(__x); 234s 1949: return __y; 234s 1949: } 234s 1949: 234s 1949: template> 234s 1949: pair 234s 1949: _M_equal_range_tr(const _Kt& __k) 234s 1949: { 234s 1949: const _Rb_tree* __const_this = this; 234s 1949: auto __ret = __const_this->_M_equal_range_tr(__k); 234s 1949: return 234s 1949: { iterator(__ret.first._M_node), iterator(__ret.second._M_node) }; 234s 1949: } 234s 1949: 234s 1949: template> 234s 1949: pair 234s 1949: _M_equal_range_tr(const _Kt& __k) const 234s 1949: { 234s 1949: const_iterator __low(_M_lower_bound_tr(__k)); 234s 1949: auto __high = __low; 234s 1949: auto& __cmp = _M_impl._M_key_compare; 234s 1949: while (__high != end() && !__cmp(__k, _S_key(__high._M_node))) 234s 1949: ++__high; 234s 1949: return { __low, __high }; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: bool 234s 1949: __rb_verify() const; 234s 1949: 234s 1949: 234s 1949: _Rb_tree& 234s 1949: operator=(_Rb_tree&&) 234s 1949: noexcept(_Node_alloc_traits::_S_nothrow_move() 234s 1949: && is_nothrow_move_assignable<_Compare>::value); 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _M_assign_unique(_Iterator, _Iterator); 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _M_assign_equal(_Iterator, _Iterator); 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: void 234s 1949: _M_move_data(_Rb_tree& __x, true_type) 234s 1949: { _M_impl._M_move_data(__x._M_impl); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_move_data(_Rb_tree&, false_type); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_move_assign(_Rb_tree&, true_type); 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_move_assign(_Rb_tree&, false_type); 234s 1949: # 2252 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: friend bool 234s 1949: operator==(const _Rb_tree& __x, const _Rb_tree& __y) 234s 1949: { 234s 1949: return __x.size() == __y.size() 234s 1949: && std::equal(__x.begin(), __x.end(), __y.begin()); 234s 1949: } 234s 1949: # 2269 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: friend bool 234s 1949: operator<(const _Rb_tree& __x, const _Rb_tree& __y) 234s 1949: { 234s 1949: return std::lexicographical_compare(__x.begin(), __x.end(), 234s 1949: __y.begin(), __y.end()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: 234s 1949: struct _Auto_node 234s 1949: { 234s 1949: template 234s 1949: _Auto_node(_Rb_tree& __t, _Args&&... __args) 234s 1949: : _M_t(__t), 234s 1949: _M_node(__t._M_create_node(std::forward<_Args>(__args)...)) 234s 1949: { } 234s 1949: 234s 1949: ~_Auto_node() 234s 1949: { 234s 1949: if (_M_node) 234s 1949: _M_t._M_drop_node(_M_node); 234s 1949: } 234s 1949: 234s 1949: _Auto_node(_Auto_node&& __n) 234s 1949: : _M_t(__n._M_t), _M_node(__n._M_node) 234s 1949: { __n._M_node = nullptr; } 234s 1949: 234s 1949: const _Key& 234s 1949: _M_key() const 234s 1949: { return _S_key(_M_node); } 234s 1949: 234s 1949: iterator 234s 1949: _M_insert(pair<_Base_ptr, _Base_ptr> __p) 234s 1949: { 234s 1949: auto __it = _M_t._M_insert_node(__p.first, __p.second, _M_node); 234s 1949: _M_node = nullptr; 234s 1949: return __it; 234s 1949: } 234s 1949: 234s 1949: iterator 234s 1949: _M_insert_equal_lower() 234s 1949: { 234s 1949: auto __it = _M_t._M_insert_equal_lower_node(_M_node); 234s 1949: _M_node = nullptr; 234s 1949: return __it; 234s 1949: } 234s 1949: 234s 1949: _Rb_tree& _M_t; 234s 1949: _Node_ptr _M_node; 234s 1949: }; 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_move_data(_Rb_tree& __x, false_type) 234s 1949: { 234s 1949: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) 234s 1949: _M_move_data(__x, true_type()); 234s 1949: else 234s 1949: { 234s 1949: constexpr bool __move = !__move_if_noexcept_cond::value; 234s 1949: _Alloc_node __an(*this); 234s 1949: _M_root() = _M_copy<__move>(__x, __an); 234s 1949: if (__move) 234s 1949: __x.clear(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_move_assign(_Rb_tree& __x, true_type) 234s 1949: { 234s 1949: clear(); 234s 1949: if (__x._M_root()) 234s 1949: _M_move_data(__x, true_type()); 234s 1949: std::__alloc_on_move(_M_get_Node_allocator(), 234s 1949: __x._M_get_Node_allocator()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_move_assign(_Rb_tree& __x, false_type) 234s 1949: { 234s 1949: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) 234s 1949: return _M_move_assign(__x, true_type{}); 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Reuse_or_alloc_node __roan(*this); 234s 1949: _M_impl._M_reset(); 234s 1949: if (__x._M_root()) 234s 1949: { 234s 1949: _M_root() = _M_copy<__as_rvalue>(__x, __roan); 234s 1949: __x.clear(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: operator=(_Rb_tree&& __x) 234s 1949: noexcept(_Node_alloc_traits::_S_nothrow_move() 234s 1949: && is_nothrow_move_assignable<_Compare>::value) 234s 1949: { 234s 1949: _M_impl._M_key_compare = std::move(__x._M_impl._M_key_compare); 234s 1949: _M_move_assign(__x, 234s 1949: __bool_constant<_Node_alloc_traits::_S_nothrow_move()>()); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: void 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_assign_unique(_Iterator __first, _Iterator __last) 234s 1949: { 234s 1949: _Reuse_or_alloc_node __roan(*this); 234s 1949: _M_impl._M_reset(); 234s 1949: for (; __first != __last; ++__first) 234s 1949: _M_insert_unique_(end(), *__first, __roan); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: void 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_assign_equal(_Iterator __first, _Iterator __last) 234s 1949: { 234s 1949: _Reuse_or_alloc_node __roan(*this); 234s 1949: _M_impl._M_reset(); 234s 1949: for (; __first != __last; ++__first) 234s 1949: _M_insert_equal_(end(), *__first, __roan); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: operator=(const _Rb_tree& __x) 234s 1949: { 234s 1949: if (this != std::__addressof(__x)) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (_Node_alloc_traits::_S_propagate_on_copy_assign()) 234s 1949: { 234s 1949: auto& __this_alloc = this->_M_get_Node_allocator(); 234s 1949: auto& __that_alloc = __x._M_get_Node_allocator(); 234s 1949: if (!_Node_alloc_traits::_S_always_equal() 234s 1949: && __this_alloc != __that_alloc) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: clear(); 234s 1949: std::__alloc_on_copy(__this_alloc, __that_alloc); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: _Reuse_or_alloc_node __roan(*this); 234s 1949: _M_impl._M_reset(); 234s 1949: _M_impl._M_key_compare = __x._M_impl._M_key_compare; 234s 1949: if (__x._M_root()) 234s 1949: _M_root() = _M_copy<__as_lvalue>(__x, __roan); 234s 1949: } 234s 1949: 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_insert_(_Base_ptr __x, _Base_ptr __p, 234s 1949: 234s 1949: _Arg&& __v, 234s 1949: 234s 1949: 234s 1949: 234s 1949: _NodeGen& __node_gen) 234s 1949: { 234s 1949: bool __insert_left = (__x || __p == _M_end() 234s 1949: || _M_impl._M_key_compare(_KeyOfValue()(__v), 234s 1949: _S_key(__p))); 234s 1949: 234s 1949: _Base_ptr __z = 234s 1949: __node_gen(std::forward<_Arg>(__v))->_M_base_ptr(); 234s 1949: 234s 1949: _Node_traits::_S_insert_and_rebalance 234s 1949: (__insert_left, __z, __p, this->_M_impl._M_header); 234s 1949: ++_M_impl._M_node_count; 234s 1949: return iterator(__z); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: 234s 1949: _M_insert_lower(_Base_ptr __p, _Arg&& __v) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: bool __insert_left = (__p == _M_end() 234s 1949: || !_M_impl._M_key_compare(_S_key(__p), 234s 1949: _KeyOfValue()(__v))); 234s 1949: 234s 1949: _Base_ptr __z = 234s 1949: _M_create_node(std::forward<_Arg>(__v))->_M_base_ptr(); 234s 1949: _Node_traits::_S_insert_and_rebalance 234s 1949: (__insert_left, __z, __p, this->_M_impl._M_header); 234s 1949: ++_M_impl._M_node_count; 234s 1949: return iterator(__z); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: 234s 1949: _M_insert_equal_lower(_Arg&& __v) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: _Base_ptr __x = _M_begin(); 234s 1949: _Base_ptr __y = _M_end(); 234s 1949: while (__x) 234s 1949: { 234s 1949: __y = __x; 234s 1949: __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? 234s 1949: _S_left(__x) : _S_right(__x); 234s 1949: } 234s 1949: return _M_insert_lower(__y, std::forward<_Arg>(__v)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Base_ptr 234s 1949: _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: 234s 1949: _M_copy(_Node_ptr __x, _Base_ptr __p, _NodeGen& __node_gen) 234s 1949: { 234s 1949: 234s 1949: _Node_ptr __top = _M_clone_node<_MoveValues>(__x, __node_gen); 234s 1949: _Base_ptr __top_base = __top->_M_base_ptr(); 234s 1949: __top->_M_parent = __p; 234s 1949: 234s 1949: try 234s 1949: { 234s 1949: if (__x->_M_right) 234s 1949: __top->_M_right = 234s 1949: _M_copy<_MoveValues>(_S_right(__x), __top_base, __node_gen); 234s 1949: __p = __top_base; 234s 1949: __x = _S_left(__x); 234s 1949: 234s 1949: while (__x) 234s 1949: { 234s 1949: _Base_ptr __y = 234s 1949: _M_clone_node<_MoveValues>(__x, __node_gen)->_M_base_ptr(); 234s 1949: __p->_M_left = __y; 234s 1949: __y->_M_parent = __p; 234s 1949: if (__x->_M_right) 234s 1949: __y->_M_right = _M_copy<_MoveValues>(_S_right(__x), 234s 1949: __y, __node_gen); 234s 1949: __p = __y; 234s 1949: __x = _S_left(__x); 234s 1949: } 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: _M_erase(__top); 234s 1949: throw; 234s 1949: } 234s 1949: return __top_base; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_erase(_Node_ptr __x) 234s 1949: { 234s 1949: 234s 1949: while (__x) 234s 1949: { 234s 1949: _M_erase(_S_right(__x)); 234s 1949: _Node_ptr __y = _S_left(__x); 234s 1949: _M_drop_node(__x); 234s 1949: __x = __y; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, 234s 1949: _Compare, _Alloc>::_Base_ptr 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_lower_bound(_Base_ptr __x, _Base_ptr __y, 234s 1949: const _Key& __k) const 234s 1949: { 234s 1949: while (__x) 234s 1949: if (!_M_impl._M_key_compare(_S_key(__x), __k)) 234s 1949: __y = __x, __x = _S_left(__x); 234s 1949: else 234s 1949: __x = _S_right(__x); 234s 1949: return __y; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, 234s 1949: _Compare, _Alloc>::_Base_ptr 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_upper_bound(_Base_ptr __x, _Base_ptr __y, 234s 1949: const _Key& __k) const 234s 1949: { 234s 1949: while (__x) 234s 1949: if (_M_impl._M_key_compare(__k, _S_key(__x))) 234s 1949: __y = __x, __x = _S_left(__x); 234s 1949: else 234s 1949: __x = _S_right(__x); 234s 1949: return __y; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: pair::iterator, 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, 234s 1949: _Compare, _Alloc>::iterator> 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: equal_range(const _Key& __k) 234s 1949: { 234s 1949: typedef pair _Ret; 234s 1949: 234s 1949: _Base_ptr __x = _M_begin(); 234s 1949: _Base_ptr __y = _M_end(); 234s 1949: while (__x) 234s 1949: { 234s 1949: if (_M_impl._M_key_compare(_S_key(__x), __k)) 234s 1949: __x = _S_right(__x); 234s 1949: else if (_M_impl._M_key_compare(__k, _S_key(__x))) 234s 1949: __y = __x, __x = _S_left(__x); 234s 1949: else 234s 1949: { 234s 1949: _Base_ptr __xu(__x); 234s 1949: _Base_ptr __yu(__y); 234s 1949: __y = __x, __x = _S_left(__x); 234s 1949: __xu = _S_right(__xu); 234s 1949: return _Ret(iterator(_M_lower_bound(__x, __y, __k)), 234s 1949: iterator(_M_upper_bound(__xu, __yu, __k))); 234s 1949: } 234s 1949: } 234s 1949: return _Ret(iterator(__y), iterator(__y)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: pair::const_iterator, 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, 234s 1949: _Compare, _Alloc>::const_iterator> 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: equal_range(const _Key& __k) const 234s 1949: { 234s 1949: typedef pair _Ret; 234s 1949: 234s 1949: _Base_ptr __x = _M_begin(); 234s 1949: _Base_ptr __y = _M_end(); 234s 1949: while (__x) 234s 1949: { 234s 1949: if (_M_impl._M_key_compare(_S_key(__x), __k)) 234s 1949: __x = _S_right(__x); 234s 1949: else if (_M_impl._M_key_compare(__k, _S_key(__x))) 234s 1949: __y = __x, __x = _S_left(__x); 234s 1949: else 234s 1949: { 234s 1949: _Base_ptr __xu(__x); 234s 1949: _Base_ptr __yu(__y); 234s 1949: __y = __x, __x = _S_left(__x); 234s 1949: __xu = _S_right(__xu); 234s 1949: return _Ret(const_iterator(_M_lower_bound(__x, __y, __k)), 234s 1949: const_iterator(_M_upper_bound(__xu, __yu, __k))); 234s 1949: } 234s 1949: } 234s 1949: return _Ret(const_iterator(__y), const_iterator(__y)); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: swap(_Rb_tree& __t) 234s 1949: noexcept(__is_nothrow_swappable<_Compare>::value) 234s 1949: { 234s 1949: if (!_M_root()) 234s 1949: { 234s 1949: if (__t._M_root()) 234s 1949: _M_impl._M_move_data(__t._M_impl); 234s 1949: } 234s 1949: else if (!__t._M_root()) 234s 1949: __t._M_impl._M_move_data(_M_impl); 234s 1949: else 234s 1949: { 234s 1949: std::swap(_M_root(),__t._M_root()); 234s 1949: std::swap(_M_leftmost(),__t._M_leftmost()); 234s 1949: std::swap(_M_rightmost(),__t._M_rightmost()); 234s 1949: 234s 1949: _M_root()->_M_parent = _M_end(); 234s 1949: __t._M_root()->_M_parent = __t._M_end(); 234s 1949: std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: using std::swap; 234s 1949: swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare); 234s 1949: 234s 1949: _Node_alloc_traits::_S_on_swap(_M_get_Node_allocator(), 234s 1949: __t._M_get_Node_allocator()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: pair::_Base_ptr, 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, 234s 1949: _Compare, _Alloc>::_Base_ptr> 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_get_insert_unique_pos(const key_type& __k) 234s 1949: { 234s 1949: typedef pair<_Base_ptr, _Base_ptr> _Res; 234s 1949: _Base_ptr __x = _M_begin(); 234s 1949: _Base_ptr __y = _M_end(); 234s 1949: bool __comp = true; 234s 1949: while (__x) 234s 1949: { 234s 1949: __y = __x; 234s 1949: __comp = _M_impl._M_key_compare(__k, _S_key(__x)); 234s 1949: __x = __comp ? _S_left(__x) : _S_right(__x); 234s 1949: } 234s 1949: iterator __j = iterator(__y); 234s 1949: if (__comp) 234s 1949: { 234s 1949: if (__j == begin()) 234s 1949: return _Res(__x, __y); 234s 1949: else 234s 1949: --__j; 234s 1949: } 234s 1949: if (_M_impl._M_key_compare(_S_key(__j._M_node), __k)) 234s 1949: return _Res(__x, __y); 234s 1949: return _Res(__j._M_node, _Base_ptr()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: pair::_Base_ptr, 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, 234s 1949: _Compare, _Alloc>::_Base_ptr> 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_get_insert_equal_pos(const key_type& __k) 234s 1949: { 234s 1949: typedef pair<_Base_ptr, _Base_ptr> _Res; 234s 1949: _Base_ptr __x = _M_begin(); 234s 1949: _Base_ptr __y = _M_end(); 234s 1949: while (__x) 234s 1949: { 234s 1949: __y = __x; 234s 1949: __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? 234s 1949: _S_left(__x) : _S_right(__x); 234s 1949: } 234s 1949: return _Res(__x, __y); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: template 234s 1949: 234s 1949: pair::iterator, bool> 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: 234s 1949: _M_insert_unique(_Arg&& __v) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: typedef pair _Res; 234s 1949: pair<_Base_ptr, _Base_ptr> __res 234s 1949: = _M_get_insert_unique_pos(_KeyOfValue()(__v)); 234s 1949: 234s 1949: if (__res.second) 234s 1949: { 234s 1949: _Alloc_node __an(*this); 234s 1949: return _Res(_M_insert_(__res.first, __res.second, 234s 1949: std::forward<_Arg>(__v), __an), 234s 1949: true); 234s 1949: } 234s 1949: 234s 1949: return _Res(iterator(__res.first), false); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: template 234s 1949: 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: 234s 1949: _M_insert_equal(_Arg&& __v) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { 234s 1949: pair<_Base_ptr, _Base_ptr> __res 234s 1949: = _M_get_insert_equal_pos(_KeyOfValue()(__v)); 234s 1949: _Alloc_node __an(*this); 234s 1949: return _M_insert_(__res.first, __res.second, 234s 1949: std::forward<_Arg>(__v), __an); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: pair::_Base_ptr, 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, 234s 1949: _Compare, _Alloc>::_Base_ptr> 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_get_insert_hint_unique_pos(const_iterator __position, 234s 1949: const key_type& __k) 234s 1949: { 234s 1949: typedef pair<_Base_ptr, _Base_ptr> _Res; 234s 1949: 234s 1949: 234s 1949: if (__position._M_node == _M_end()) 234s 1949: { 234s 1949: if (size() > 0 234s 1949: && _M_impl._M_key_compare(_S_key(_M_rightmost()), __k)) 234s 1949: return _Res(_Base_ptr(), _M_rightmost()); 234s 1949: else 234s 1949: return _M_get_insert_unique_pos(__k); 234s 1949: } 234s 1949: else if (_M_impl._M_key_compare(__k, _S_key(__position._M_node))) 234s 1949: { 234s 1949: 234s 1949: iterator __before(__position._M_node); 234s 1949: if (__position._M_node == _M_leftmost()) 234s 1949: return _Res(_M_leftmost(), _M_leftmost()); 234s 1949: else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), __k)) 234s 1949: { 234s 1949: if (!_S_right(__before._M_node)) 234s 1949: return _Res(_Base_ptr(), __before._M_node); 234s 1949: else 234s 1949: return _Res(__position._M_node, __position._M_node); 234s 1949: } 234s 1949: else 234s 1949: return _M_get_insert_unique_pos(__k); 234s 1949: } 234s 1949: else if (_M_impl._M_key_compare(_S_key(__position._M_node), __k)) 234s 1949: { 234s 1949: 234s 1949: iterator __after(__position._M_node); 234s 1949: if (__position._M_node == _M_rightmost()) 234s 1949: return _Res(_Base_ptr(), _M_rightmost()); 234s 1949: else if (_M_impl._M_key_compare(__k, _S_key((++__after)._M_node))) 234s 1949: { 234s 1949: if (!_S_right(__position._M_node)) 234s 1949: return _Res(_Base_ptr(), __position._M_node); 234s 1949: else 234s 1949: return _Res(__after._M_node, __after._M_node); 234s 1949: } 234s 1949: else 234s 1949: return _M_get_insert_unique_pos(__k); 234s 1949: } 234s 1949: else 234s 1949: 234s 1949: return _Res(__position._M_node, _Base_ptr()); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_insert_unique_(const_iterator __position, 234s 1949: 234s 1949: _Arg&& __v, 234s 1949: 234s 1949: 234s 1949: 234s 1949: _NodeGen& __node_gen) 234s 1949: { 234s 1949: pair<_Base_ptr, _Base_ptr> __res 234s 1949: = _M_get_insert_hint_unique_pos(__position, _KeyOfValue()(__v)); 234s 1949: 234s 1949: if (__res.second) 234s 1949: return _M_insert_(__res.first, __res.second, 234s 1949: std::forward<_Arg>(__v), 234s 1949: __node_gen); 234s 1949: return iterator(__res.first); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: pair::_Base_ptr, 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, 234s 1949: _Compare, _Alloc>::_Base_ptr> 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k) 234s 1949: { 234s 1949: typedef pair<_Base_ptr, _Base_ptr> _Res; 234s 1949: 234s 1949: 234s 1949: if (__position._M_node == _M_end()) 234s 1949: { 234s 1949: if (size() > 0 234s 1949: && !_M_impl._M_key_compare(__k, _S_key(_M_rightmost()))) 234s 1949: return _Res(_Base_ptr(), _M_rightmost()); 234s 1949: else 234s 1949: return _M_get_insert_equal_pos(__k); 234s 1949: } 234s 1949: else if (!_M_impl._M_key_compare(_S_key(__position._M_node), __k)) 234s 1949: { 234s 1949: 234s 1949: iterator __before(__position._M_node); 234s 1949: if (__position._M_node == _M_leftmost()) 234s 1949: return _Res(_M_leftmost(), _M_leftmost()); 234s 1949: else if (!_M_impl._M_key_compare(__k, _S_key((--__before)._M_node))) 234s 1949: { 234s 1949: if (!_S_right(__before._M_node)) 234s 1949: return _Res(_Base_ptr(), __before._M_node); 234s 1949: else 234s 1949: return _Res(__position._M_node, __position._M_node); 234s 1949: } 234s 1949: else 234s 1949: return _M_get_insert_equal_pos(__k); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: iterator __after(__position._M_node); 234s 1949: if (__position._M_node == _M_rightmost()) 234s 1949: return _Res(_Base_ptr(), _M_rightmost()); 234s 1949: else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node), __k)) 234s 1949: { 234s 1949: if (!_S_right(__position._M_node)) 234s 1949: return _Res(_Base_ptr(), __position._M_node); 234s 1949: else 234s 1949: return _Res(__after._M_node, __after._M_node); 234s 1949: } 234s 1949: else 234s 1949: return _Res(_Base_ptr(), _Base_ptr()); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: 234s 1949: template 234s 1949: 234s 1949: 234s 1949: 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_insert_equal_(const_iterator __position, 234s 1949: 234s 1949: _Arg&& __v, 234s 1949: 234s 1949: 234s 1949: 234s 1949: _NodeGen& __node_gen) 234s 1949: { 234s 1949: pair<_Base_ptr, _Base_ptr> __res 234s 1949: = _M_get_insert_hint_equal_pos(__position, _KeyOfValue()(__v)); 234s 1949: 234s 1949: if (__res.second) 234s 1949: return _M_insert_(__res.first, __res.second, 234s 1949: std::forward<_Arg>(__v), 234s 1949: __node_gen); 234s 1949: 234s 1949: return _M_insert_equal_lower(std::forward<_Arg>(__v)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_insert_node(_Base_ptr __x, _Base_ptr __p, _Node_ptr __z) 234s 1949: -> iterator 234s 1949: { 234s 1949: bool __insert_left = (__x || __p == _M_end() 234s 1949: || _M_impl._M_key_compare(_S_key(__z), 234s 1949: _S_key(__p))); 234s 1949: 234s 1949: _Base_ptr __base_z = __z->_M_base_ptr(); 234s 1949: _Node_traits::_S_insert_and_rebalance 234s 1949: (__insert_left, __base_z, __p, this->_M_impl._M_header); 234s 1949: ++_M_impl._M_node_count; 234s 1949: return iterator(__base_z); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_insert_lower_node(_Base_ptr __p, _Node_ptr __z) 234s 1949: -> iterator 234s 1949: { 234s 1949: bool __insert_left = (__p == _M_end() 234s 1949: || !_M_impl._M_key_compare(_S_key(__p), 234s 1949: _S_key(__z))); 234s 1949: 234s 1949: _Base_ptr __base_z = __z->_M_base_ptr(); 234s 1949: _Node_traits::_S_insert_and_rebalance 234s 1949: (__insert_left, __base_z, __p, this->_M_impl._M_header); 234s 1949: ++_M_impl._M_node_count; 234s 1949: return iterator(__base_z); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_insert_equal_lower_node(_Node_ptr __z) 234s 1949: -> iterator 234s 1949: { 234s 1949: _Base_ptr __x = _M_begin(); 234s 1949: _Base_ptr __y = _M_end(); 234s 1949: while (__x) 234s 1949: { 234s 1949: __y = __x; 234s 1949: __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ? 234s 1949: _S_left(__x) : _S_right(__x); 234s 1949: } 234s 1949: return _M_insert_lower_node(__y, __z); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: auto 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_emplace_unique(_Args&&... __args) 234s 1949: -> pair 234s 1949: { 234s 1949: _Auto_node __z(*this, std::forward<_Args>(__args)...); 234s 1949: auto __res = _M_get_insert_unique_pos(__z._M_key()); 234s 1949: if (__res.second) 234s 1949: return {__z._M_insert(__res), true}; 234s 1949: return {iterator(__res.first), false}; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: auto 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_emplace_equal(_Args&&... __args) 234s 1949: -> iterator 234s 1949: { 234s 1949: _Auto_node __z(*this, std::forward<_Args>(__args)...); 234s 1949: auto __res = _M_get_insert_equal_pos(__z._M_key()); 234s 1949: return __z._M_insert(__res); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: auto 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args) 234s 1949: -> iterator 234s 1949: { 234s 1949: _Auto_node __z(*this, std::forward<_Args>(__args)...); 234s 1949: auto __res = _M_get_insert_hint_unique_pos(__pos, __z._M_key()); 234s 1949: if (__res.second) 234s 1949: return __z._M_insert(__res); 234s 1949: return iterator(__res.first); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: auto 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args) 234s 1949: -> iterator 234s 1949: { 234s 1949: _Auto_node __z(*this, std::forward<_Args>(__args)...); 234s 1949: auto __res = _M_get_insert_hint_equal_pos(__pos, __z._M_key()); 234s 1949: if (__res.second) 234s 1949: return __z._M_insert(__res); 234s 1949: return __z._M_insert_equal_lower(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_erase_aux(const_iterator __position) 234s 1949: { 234s 1949: _Base_ptr __y = _Node_traits::_S_rebalance_for_erase 234s 1949: (__position._M_node, this->_M_impl._M_header); 234s 1949: _M_drop_node(static_cast<_Node&>(*__y)._M_node_ptr()); 234s 1949: --_M_impl._M_node_count; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: _M_erase_aux(const_iterator __first, const_iterator __last) 234s 1949: { 234s 1949: if (__first == begin() && __last == end()) 234s 1949: clear(); 234s 1949: else 234s 1949: while (__first != __last) 234s 1949: _M_erase_aux(__first++); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: erase(const _Key& __x) 234s 1949: { 234s 1949: pair __p = equal_range(__x); 234s 1949: const size_type __old_size = size(); 234s 1949: _M_erase_aux(__p.first, __p.second); 234s 1949: return __old_size - size(); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, 234s 1949: _Compare, _Alloc>::iterator 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: find(const _Key& __k) 234s 1949: { 234s 1949: iterator __j(_M_lower_bound(_M_begin(), _M_end(), __k)); 234s 1949: return (__j == end() 234s 1949: || _M_impl._M_key_compare(__k, 234s 1949: _S_key(__j._M_node))) ? end() : __j; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, 234s 1949: _Compare, _Alloc>::const_iterator 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: find(const _Key& __k) const 234s 1949: { 234s 1949: const_iterator __j(_M_lower_bound(_M_begin(), _M_end(), __k)); 234s 1949: return (__j == end() 234s 1949: || _M_impl._M_key_compare(__k, 234s 1949: _S_key(__j._M_node))) ? end() : __j; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type 234s 1949: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 234s 1949: count(const _Key& __k) const 234s 1949: { 234s 1949: pair __p = equal_range(__k); 234s 1949: const size_type __n = std::distance(__p.first, __p.second); 234s 1949: return __n; 234s 1949: } 234s 1949: 234s 1949: __attribute__ ((__pure__)) unsigned int 234s 1949: _Rb_tree_black_count(const _Rb_tree_node_base* __node, 234s 1949: const _Rb_tree_node_base* __root) throw (); 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const 234s 1949: { 234s 1949: if (_M_impl._M_node_count == 0 || begin() == end()) 234s 1949: return _M_impl._M_node_count == 0 && begin() == end() 234s 1949: && this->_M_impl._M_header._M_left == _M_end() 234s 1949: && this->_M_impl._M_header._M_right == _M_end(); 234s 1949: 234s 1949: unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root()); 234s 1949: for (const_iterator __it = begin(); __it != end(); ++__it) 234s 1949: { 234s 1949: _Base_ptr __x = __it._M_node; 234s 1949: _Base_ptr __L = _S_left(__x); 234s 1949: _Base_ptr __R = _S_right(__x); 234s 1949: 234s 1949: if (__x->_M_color == _S_red) 234s 1949: if ((__L && __L->_M_color == _S_red) 234s 1949: || (__R && __R->_M_color == _S_red)) 234s 1949: return false; 234s 1949: 234s 1949: if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L))) 234s 1949: return false; 234s 1949: if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x))) 234s 1949: return false; 234s 1949: 234s 1949: if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len) 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: if (_M_leftmost() != _Node_base::_S_minimum(_M_root())) 234s 1949: return false; 234s 1949: if (_M_rightmost() != _Node_base::_S_maximum(_M_root())) 234s 1949: return false; 234s 1949: return true; 234s 1949: } 234s 1949: # 3240 "/usr/include/c++/15/bits/stl_tree.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 65 "/usr/include/c++/15/set" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_set.h" 1 3 4 234s 1949: # 67 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class multiset; 234s 1949: # 97 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: template, 234s 1949: typename _Alloc = std::allocator<_Key> > 234s 1949: class set 234s 1949: { 234s 1949: # 113 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: static_assert(is_same::type, _Key>::value, 234s 1949: "std::set must have a non-const, non-volatile value_type"); 234s 1949: 234s 1949: static_assert(is_same::value, 234s 1949: "std::set must have the same value_type as its allocator"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef _Key key_type; 234s 1949: typedef _Key value_type; 234s 1949: typedef _Compare key_compare; 234s 1949: typedef _Compare value_compare; 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 234s 1949: rebind<_Key>::other _Key_alloc_type; 234s 1949: 234s 1949: typedef _Rb_tree, 234s 1949: key_compare, _Key_alloc_type> _Rep_type; 234s 1949: _Rep_type _M_t; 234s 1949: 234s 1949: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: typedef typename _Alloc_traits::pointer pointer; 234s 1949: typedef typename _Alloc_traits::const_pointer const_pointer; 234s 1949: typedef typename _Alloc_traits::reference reference; 234s 1949: typedef typename _Alloc_traits::const_reference const_reference; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename _Rep_type::const_iterator iterator; 234s 1949: typedef typename _Rep_type::const_iterator const_iterator; 234s 1949: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; 234s 1949: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 234s 1949: typedef typename _Rep_type::size_type size_type; 234s 1949: typedef typename _Rep_type::difference_type difference_type; 234s 1949: # 172 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: set() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: set(const _Compare& __comp, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Key_alloc_type(__a)) { } 234s 1949: # 195 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: template 234s 1949: set(_InputIterator __first, _InputIterator __last) 234s 1949: : _M_t() 234s 1949: { _M_t._M_insert_range_unique(__first, __last); } 234s 1949: # 212 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: template 234s 1949: set(_InputIterator __first, _InputIterator __last, 234s 1949: const _Compare& __comp, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Key_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_unique(__first, __last); } 234s 1949: # 228 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: set(const set&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: set(set&&) = default; 234s 1949: # 248 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: set(initializer_list __l, 234s 1949: const _Compare& __comp = _Compare(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Key_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: set(const allocator_type& __a) 234s 1949: : _M_t(_Key_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: set(const set& __x, const __type_identity_t& __a) 234s 1949: : _M_t(__x._M_t, _Key_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: set(set&& __x, const __type_identity_t& __a) 234s 1949: noexcept(is_nothrow_copy_constructible<_Compare>::value 234s 1949: && _Alloc_traits::_S_always_equal()) 234s 1949: : _M_t(std::move(__x._M_t), _Key_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: set(initializer_list __l, const allocator_type& __a) 234s 1949: : _M_t(_Key_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: set(_InputIterator __first, _InputIterator __last, 234s 1949: const allocator_type& __a) 234s 1949: : _M_t(_Key_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_unique(__first, __last); } 234s 1949: # 305 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: ~set() = default; 234s 1949: # 321 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: set& 234s 1949: operator=(const set&) = default; 234s 1949: 234s 1949: 234s 1949: set& 234s 1949: operator=(set&&) = default; 234s 1949: # 339 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: set& 234s 1949: operator=(initializer_list __l) 234s 1949: { 234s 1949: _M_t._M_assign_unique(__l.begin(), __l.end()); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: key_compare 234s 1949: key_comp() const 234s 1949: { return _M_t.key_comp(); } 234s 1949: 234s 1949: value_compare 234s 1949: value_comp() const 234s 1949: { return _M_t.key_comp(); } 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return allocator_type(_M_t.get_allocator()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: begin() const noexcept 234s 1949: { return _M_t.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: end() const noexcept 234s 1949: { return _M_t.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: rbegin() const noexcept 234s 1949: { return _M_t.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: rend() const noexcept 234s 1949: { return _M_t.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: cbegin() const noexcept 234s 1949: { return _M_t.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: cend() const noexcept 234s 1949: { return _M_t.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: crbegin() const noexcept 234s 1949: { return _M_t.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: crend() const noexcept 234s 1949: { return _M_t.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] bool 234s 1949: empty() const noexcept 234s 1949: { return _M_t.empty(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { return _M_t.size(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { return _M_t.max_size(); } 234s 1949: # 464 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: void 234s 1949: swap(set& __x) 234s 1949: noexcept(__is_nothrow_swappable<_Compare>::value) 234s 1949: { _M_t.swap(__x._M_t); } 234s 1949: # 484 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: template 234s 1949: std::pair 234s 1949: emplace(_Args&&... __args) 234s 1949: { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } 234s 1949: # 510 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: template 234s 1949: iterator 234s 1949: emplace_hint(const_iterator __pos, _Args&&... __args) 234s 1949: { 234s 1949: return _M_t._M_emplace_hint_unique(__pos, 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: # 532 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: std::pair 234s 1949: insert(const value_type& __x) 234s 1949: { 234s 1949: std::pair __p = 234s 1949: _M_t._M_insert_unique(__x); 234s 1949: return std::pair(__p.first, __p.second); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: std::pair 234s 1949: insert(value_type&& __x) 234s 1949: { 234s 1949: std::pair __p = 234s 1949: _M_t._M_insert_unique(std::move(__x)); 234s 1949: return std::pair(__p.first, __p.second); 234s 1949: } 234s 1949: # 569 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: iterator 234s 1949: insert(const_iterator __position, const value_type& __x) 234s 1949: { return _M_t._M_insert_unique_(__position, __x); } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, value_type&& __x) 234s 1949: { return _M_t._M_insert_unique_(__position, std::move(__x)); } 234s 1949: # 588 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: insert(_InputIterator __first, _InputIterator __last) 234s 1949: { _M_t._M_insert_range_unique(__first, __last); } 234s 1949: # 601 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: void 234s 1949: insert(initializer_list __l) 234s 1949: { this->insert(__l.begin(), __l.end()); } 234s 1949: # 698 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iterator 234s 1949: erase(const_iterator __position) 234s 1949: { return _M_t.erase(__position); } 234s 1949: # 729 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: size_type 234s 1949: erase(const key_type& __x) 234s 1949: { return _M_t.erase(__x); } 234s 1949: # 750 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iterator 234s 1949: erase(const_iterator __first, const_iterator __last) 234s 1949: { return _M_t.erase(__first, __last); } 234s 1949: # 778 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { _M_t.clear(); } 234s 1949: # 793 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: size_type 234s 1949: count(const key_type& __x) const 234s 1949: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: count(const _Kt& __x) const 234s 1949: -> decltype(_M_t._M_count_tr(__x)) 234s 1949: { return _M_t._M_count_tr(__x); } 234s 1949: # 839 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: iterator 234s 1949: find(const key_type& __x) 234s 1949: { return _M_t.find(__x); } 234s 1949: 234s 1949: const_iterator 234s 1949: find(const key_type& __x) const 234s 1949: { return _M_t.find(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: find(const _Kt& __x) 234s 1949: -> decltype(iterator{_M_t._M_find_tr(__x)}) 234s 1949: { return iterator{_M_t._M_find_tr(__x)}; } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: find(const _Kt& __x) const 234s 1949: -> decltype(const_iterator{_M_t._M_find_tr(__x)}) 234s 1949: { return const_iterator{_M_t._M_find_tr(__x)}; } 234s 1949: # 874 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: iterator 234s 1949: lower_bound(const key_type& __x) 234s 1949: { return _M_t.lower_bound(__x); } 234s 1949: 234s 1949: const_iterator 234s 1949: lower_bound(const key_type& __x) const 234s 1949: { return _M_t.lower_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: lower_bound(const _Kt& __x) 234s 1949: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) 234s 1949: { return iterator(_M_t._M_lower_bound_tr(__x)); } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: lower_bound(const _Kt& __x) const 234s 1949: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) 234s 1949: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } 234s 1949: # 904 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: iterator 234s 1949: upper_bound(const key_type& __x) 234s 1949: { return _M_t.upper_bound(__x); } 234s 1949: 234s 1949: const_iterator 234s 1949: upper_bound(const key_type& __x) const 234s 1949: { return _M_t.upper_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: upper_bound(const _Kt& __x) 234s 1949: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 234s 1949: { return iterator(_M_t._M_upper_bound_tr(__x)); } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: upper_bound(const _Kt& __x) const 234s 1949: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) 234s 1949: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } 234s 1949: # 943 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) 234s 1949: { return _M_t.equal_range(__x); } 234s 1949: 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) const 234s 1949: { return _M_t.equal_range(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: equal_range(const _Kt& __x) 234s 1949: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 234s 1949: { return pair(_M_t._M_equal_range_tr(__x)); } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: equal_range(const _Kt& __x) const 234s 1949: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 234s 1949: { return pair(_M_t._M_equal_range_tr(__x)); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); 234s 1949: 234s 1949: }; 234s 1949: # 1040 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: template 234s 1949: inline bool 234s 1949: operator==(const set<_Key, _Compare, _Alloc>& __x, 234s 1949: const set<_Key, _Compare, _Alloc>& __y) 234s 1949: { return __x._M_t == __y._M_t; } 234s 1949: # 1078 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: template 234s 1949: inline bool 234s 1949: operator<(const set<_Key, _Compare, _Alloc>& __x, 234s 1949: const set<_Key, _Compare, _Alloc>& __y) 234s 1949: { return __x._M_t < __y._M_t; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator!=(const set<_Key, _Compare, _Alloc>& __x, 234s 1949: const set<_Key, _Compare, _Alloc>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator>(const set<_Key, _Compare, _Alloc>& __x, 234s 1949: const set<_Key, _Compare, _Alloc>& __y) 234s 1949: { return __y < __x; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator<=(const set<_Key, _Compare, _Alloc>& __x, 234s 1949: const set<_Key, _Compare, _Alloc>& __y) 234s 1949: { return !(__y < __x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator>=(const set<_Key, _Compare, _Alloc>& __x, 234s 1949: const set<_Key, _Compare, _Alloc>& __y) 234s 1949: { return !(__x < __y); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y) 234s 1949: noexcept(noexcept(__x.swap(__y))) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: # 1141 "/usr/include/c++/15/bits/stl_set.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 66 "/usr/include/c++/15/set" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_multiset.h" 1 3 4 234s 1949: # 67 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class set; 234s 1949: # 98 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: template , 234s 1949: typename _Alloc = std::allocator<_Key> > 234s 1949: class multiset 234s 1949: { 234s 1949: # 114 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: static_assert(is_same::type, _Key>::value, 234s 1949: "std::multiset must have a non-const, non-volatile value_type"); 234s 1949: 234s 1949: static_assert(is_same::value, 234s 1949: "std::multiset must have the same value_type as its allocator"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: typedef _Key key_type; 234s 1949: typedef _Key value_type; 234s 1949: typedef _Compare key_compare; 234s 1949: typedef _Compare value_compare; 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 234s 1949: rebind<_Key>::other _Key_alloc_type; 234s 1949: 234s 1949: typedef _Rb_tree, 234s 1949: key_compare, _Key_alloc_type> _Rep_type; 234s 1949: 234s 1949: _Rep_type _M_t; 234s 1949: 234s 1949: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; 234s 1949: 234s 1949: public: 234s 1949: typedef typename _Alloc_traits::pointer pointer; 234s 1949: typedef typename _Alloc_traits::const_pointer const_pointer; 234s 1949: typedef typename _Alloc_traits::reference reference; 234s 1949: typedef typename _Alloc_traits::const_reference const_reference; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename _Rep_type::const_iterator iterator; 234s 1949: typedef typename _Rep_type::const_iterator const_iterator; 234s 1949: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; 234s 1949: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 234s 1949: typedef typename _Rep_type::size_type size_type; 234s 1949: typedef typename _Rep_type::difference_type difference_type; 234s 1949: # 168 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: multiset() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: multiset(const _Compare& __comp, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Key_alloc_type(__a)) { } 234s 1949: # 190 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: template 234s 1949: multiset(_InputIterator __first, _InputIterator __last) 234s 1949: : _M_t() 234s 1949: { _M_t._M_insert_range_equal(__first, __last); } 234s 1949: # 206 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: template 234s 1949: multiset(_InputIterator __first, _InputIterator __last, 234s 1949: const _Compare& __comp, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Key_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_equal(__first, __last); } 234s 1949: # 222 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: multiset(const multiset&) = default; 234s 1949: # 231 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: multiset(multiset&&) = default; 234s 1949: # 243 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: multiset(initializer_list __l, 234s 1949: const _Compare& __comp = _Compare(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Key_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: multiset(const allocator_type& __a) 234s 1949: : _M_t(_Key_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: multiset(const multiset& __m, 234s 1949: const __type_identity_t& __a) 234s 1949: : _M_t(__m._M_t, _Key_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: multiset(multiset&& __m, const __type_identity_t& __a) 234s 1949: noexcept(is_nothrow_copy_constructible<_Compare>::value 234s 1949: && _Alloc_traits::_S_always_equal()) 234s 1949: : _M_t(std::move(__m._M_t), _Key_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: multiset(initializer_list __l, const allocator_type& __a) 234s 1949: : _M_t(_Key_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: multiset(_InputIterator __first, _InputIterator __last, 234s 1949: const allocator_type& __a) 234s 1949: : _M_t(_Key_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_equal(__first, __last); } 234s 1949: # 301 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: ~multiset() = default; 234s 1949: # 317 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: multiset& 234s 1949: operator=(const multiset&) = default; 234s 1949: 234s 1949: 234s 1949: multiset& 234s 1949: operator=(multiset&&) = default; 234s 1949: # 335 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: multiset& 234s 1949: operator=(initializer_list __l) 234s 1949: { 234s 1949: _M_t._M_assign_equal(__l.begin(), __l.end()); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: key_compare 234s 1949: key_comp() const 234s 1949: { return _M_t.key_comp(); } 234s 1949: 234s 1949: value_compare 234s 1949: value_comp() const 234s 1949: { return _M_t.key_comp(); } 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return allocator_type(_M_t.get_allocator()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: begin() const noexcept 234s 1949: { return _M_t.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: end() const noexcept 234s 1949: { return _M_t.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: rbegin() const noexcept 234s 1949: { return _M_t.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: rend() const noexcept 234s 1949: { return _M_t.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: cbegin() const noexcept 234s 1949: { return _M_t.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: cend() const noexcept 234s 1949: { return _M_t.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: crbegin() const noexcept 234s 1949: { return _M_t.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: crend() const noexcept 234s 1949: { return _M_t.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] bool 234s 1949: empty() const noexcept 234s 1949: { return _M_t.empty(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { return _M_t.size(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { return _M_t.max_size(); } 234s 1949: # 460 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: void 234s 1949: swap(multiset& __x) 234s 1949: noexcept(__is_nothrow_swappable<_Compare>::value) 234s 1949: { _M_t.swap(__x._M_t); } 234s 1949: # 479 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: template 234s 1949: iterator 234s 1949: emplace(_Args&&... __args) 234s 1949: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } 234s 1949: # 505 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: template 234s 1949: iterator 234s 1949: emplace_hint(const_iterator __pos, _Args&&... __args) 234s 1949: { 234s 1949: return _M_t._M_emplace_hint_equal(__pos, 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: # 525 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: iterator 234s 1949: insert(const value_type& __x) 234s 1949: { return _M_t._M_insert_equal(__x); } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: insert(value_type&& __x) 234s 1949: { return _M_t._M_insert_equal(std::move(__x)); } 234s 1949: # 555 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: iterator 234s 1949: insert(const_iterator __position, const value_type& __x) 234s 1949: { return _M_t._M_insert_equal_(__position, __x); } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, value_type&& __x) 234s 1949: { return _M_t._M_insert_equal_(__position, std::move(__x)); } 234s 1949: # 573 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: insert(_InputIterator __first, _InputIterator __last) 234s 1949: { _M_t._M_insert_range_equal(__first, __last); } 234s 1949: # 586 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: void 234s 1949: insert(initializer_list __l) 234s 1949: { this->insert(__l.begin(), __l.end()); } 234s 1949: # 680 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iterator 234s 1949: erase(const_iterator __position) 234s 1949: { return _M_t.erase(__position); } 234s 1949: # 711 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: size_type 234s 1949: erase(const key_type& __x) 234s 1949: { return _M_t.erase(__x); } 234s 1949: # 732 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iterator 234s 1949: erase(const_iterator __first, const_iterator __last) 234s 1949: { return _M_t.erase(__first, __last); } 234s 1949: # 760 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { _M_t.clear(); } 234s 1949: # 772 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: size_type 234s 1949: count(const key_type& __x) const 234s 1949: { return _M_t.count(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) 234s 1949: { return _M_t._M_count_tr(__x); } 234s 1949: # 817 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: iterator 234s 1949: find(const key_type& __x) 234s 1949: { return _M_t.find(__x); } 234s 1949: 234s 1949: const_iterator 234s 1949: find(const key_type& __x) const 234s 1949: { return _M_t.find(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: find(const _Kt& __x) 234s 1949: -> decltype(iterator{_M_t._M_find_tr(__x)}) 234s 1949: { return iterator{_M_t._M_find_tr(__x)}; } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: find(const _Kt& __x) const 234s 1949: -> decltype(const_iterator{_M_t._M_find_tr(__x)}) 234s 1949: { return const_iterator{_M_t._M_find_tr(__x)}; } 234s 1949: # 852 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: iterator 234s 1949: lower_bound(const key_type& __x) 234s 1949: { return _M_t.lower_bound(__x); } 234s 1949: 234s 1949: const_iterator 234s 1949: lower_bound(const key_type& __x) const 234s 1949: { return _M_t.lower_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: lower_bound(const _Kt& __x) 234s 1949: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) 234s 1949: { return iterator(_M_t._M_lower_bound_tr(__x)); } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: lower_bound(const _Kt& __x) const 234s 1949: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) 234s 1949: { return iterator(_M_t._M_lower_bound_tr(__x)); } 234s 1949: # 882 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: iterator 234s 1949: upper_bound(const key_type& __x) 234s 1949: { return _M_t.upper_bound(__x); } 234s 1949: 234s 1949: const_iterator 234s 1949: upper_bound(const key_type& __x) const 234s 1949: { return _M_t.upper_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: upper_bound(const _Kt& __x) 234s 1949: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 234s 1949: { return iterator(_M_t._M_upper_bound_tr(__x)); } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: upper_bound(const _Kt& __x) const 234s 1949: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 234s 1949: { return iterator(_M_t._M_upper_bound_tr(__x)); } 234s 1949: # 921 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) 234s 1949: { return _M_t.equal_range(__x); } 234s 1949: 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) const 234s 1949: { return _M_t.equal_range(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: equal_range(const _Kt& __x) 234s 1949: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 234s 1949: { return pair(_M_t._M_equal_range_tr(__x)); } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: equal_range(const _Kt& __x) const 234s 1949: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 234s 1949: { return pair(_M_t._M_equal_range_tr(__x)); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: operator==(const multiset<_K1, _C1, _A1>&, 234s 1949: const multiset<_K1, _C1, _A1>&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: operator< (const multiset<_K1, _C1, _A1>&, 234s 1949: const multiset<_K1, _C1, _A1>&); 234s 1949: 234s 1949: }; 234s 1949: # 1023 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: template 234s 1949: inline bool 234s 1949: operator==(const multiset<_Key, _Compare, _Alloc>& __x, 234s 1949: const multiset<_Key, _Compare, _Alloc>& __y) 234s 1949: { return __x._M_t == __y._M_t; } 234s 1949: # 1061 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: template 234s 1949: inline bool 234s 1949: operator<(const multiset<_Key, _Compare, _Alloc>& __x, 234s 1949: const multiset<_Key, _Compare, _Alloc>& __y) 234s 1949: { return __x._M_t < __y._M_t; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator!=(const multiset<_Key, _Compare, _Alloc>& __x, 234s 1949: const multiset<_Key, _Compare, _Alloc>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator>(const multiset<_Key,_Compare,_Alloc>& __x, 234s 1949: const multiset<_Key,_Compare,_Alloc>& __y) 234s 1949: { return __y < __x; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator<=(const multiset<_Key, _Compare, _Alloc>& __x, 234s 1949: const multiset<_Key, _Compare, _Alloc>& __y) 234s 1949: { return !(__y < __x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator>=(const multiset<_Key, _Compare, _Alloc>& __x, 234s 1949: const multiset<_Key, _Compare, _Alloc>& __y) 234s 1949: { return !(__x < __y); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(multiset<_Key, _Compare, _Alloc>& __x, 234s 1949: multiset<_Key, _Compare, _Alloc>& __y) 234s 1949: noexcept(noexcept(__x.swap(__y))) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: # 1126 "/usr/include/c++/15/bits/stl_multiset.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 67 "/usr/include/c++/15/set" 2 3 4 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/bits/erase_if.h" 1 3 4 234s 1949: # 41 "/usr/include/c++/15/bits/erase_if.h" 3 4 234s 1949: namespace std 234s 1949: { 234s 1949: 234s 1949: 234s 1949: namespace __detail 234s 1949: { 234s 1949: template 234s 1949: typename _Container::size_type 234s 1949: __erase_nodes_if(_Container& __cont, _UnsafeContainer& __ucont, 234s 1949: _Predicate __pred) 234s 1949: { 234s 1949: typename _Container::size_type __num = 0; 234s 1949: for (auto __iter = __ucont.begin(), __last = __ucont.end(); 234s 1949: __iter != __last;) 234s 1949: { 234s 1949: if (__pred(*__iter)) 234s 1949: { 234s 1949: __iter = __cont.erase(__iter); 234s 1949: ++__num; 234s 1949: } 234s 1949: else 234s 1949: ++__iter; 234s 1949: } 234s 1949: return __num; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 69 "/usr/include/c++/15/set" 2 3 4 234s 1949: # 80 "/usr/include/c++/15/set" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 81 "/usr/include/c++/15/set" 2 3 4 234s 1949: # 3183 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/map" 1 3 4 234s 1949: # 65 "/usr/include/c++/15/map" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_map.h" 1 3 4 234s 1949: # 69 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class multimap; 234s 1949: # 103 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: template , 234s 1949: typename _Alloc = std::allocator > > 234s 1949: class map 234s 1949: { 234s 1949: public: 234s 1949: typedef _Key key_type; 234s 1949: typedef _Tp mapped_type; 234s 1949: typedef std::pair value_type; 234s 1949: typedef _Compare key_compare; 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: private: 234s 1949: # 128 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: static_assert(is_same::value, 234s 1949: "std::map must have the same value_type as its allocator"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: class value_compare 234s 1949: : public std::binary_function 234s 1949: { 234s 1949: friend class map<_Key, _Tp, _Compare, _Alloc>; 234s 1949: protected: 234s 1949: _Compare comp; 234s 1949: 234s 1949: value_compare(_Compare __c) 234s 1949: : comp(__c) { } 234s 1949: 234s 1949: public: 234s 1949: bool operator()(const value_type& __x, const value_type& __y) const 234s 1949: { return comp(__x.first, __y.first); } 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 234s 1949: rebind::other _Pair_alloc_type; 234s 1949: 234s 1949: typedef _Rb_tree, 234s 1949: key_compare, _Pair_alloc_type> _Rep_type; 234s 1949: 234s 1949: 234s 1949: _Rep_type _M_t; 234s 1949: 234s 1949: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; 234s 1949: # 172 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: typedef typename _Alloc_traits::pointer pointer; 234s 1949: typedef typename _Alloc_traits::const_pointer const_pointer; 234s 1949: typedef typename _Alloc_traits::reference reference; 234s 1949: typedef typename _Alloc_traits::const_reference const_reference; 234s 1949: typedef typename _Rep_type::iterator iterator; 234s 1949: typedef typename _Rep_type::const_iterator const_iterator; 234s 1949: typedef typename _Rep_type::size_type size_type; 234s 1949: typedef typename _Rep_type::difference_type difference_type; 234s 1949: typedef typename _Rep_type::reverse_iterator reverse_iterator; 234s 1949: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 234s 1949: # 200 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: map() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: map(const _Compare& __comp, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Pair_alloc_type(__a)) { } 234s 1949: # 222 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: map(const map&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: map(map&&) = default; 234s 1949: # 243 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: map(initializer_list __l, 234s 1949: const _Compare& __comp = _Compare(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Pair_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: map(const allocator_type& __a) 234s 1949: : _M_t(_Pair_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: map(const map& __m, const __type_identity_t& __a) 234s 1949: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: map(map&& __m, const __type_identity_t& __a) 234s 1949: noexcept(is_nothrow_copy_constructible<_Compare>::value 234s 1949: && _Alloc_traits::_S_always_equal()) 234s 1949: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: map(initializer_list __l, const allocator_type& __a) 234s 1949: : _M_t(_Pair_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: map(_InputIterator __first, _InputIterator __last, 234s 1949: const allocator_type& __a) 234s 1949: : _M_t(_Pair_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_unique(__first, __last); } 234s 1949: # 287 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: template 234s 1949: map(_InputIterator __first, _InputIterator __last) 234s 1949: : _M_t() 234s 1949: { _M_t._M_insert_range_unique(__first, __last); } 234s 1949: # 304 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: template 234s 1949: map(_InputIterator __first, _InputIterator __last, 234s 1949: const _Compare& __comp, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Pair_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_unique(__first, __last); } 234s 1949: # 337 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: ~map() = default; 234s 1949: # 353 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: map& 234s 1949: operator=(const map&) = default; 234s 1949: 234s 1949: 234s 1949: map& 234s 1949: operator=(map&&) = default; 234s 1949: # 371 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: map& 234s 1949: operator=(initializer_list __l) 234s 1949: { 234s 1949: _M_t._M_assign_unique(__l.begin(), __l.end()); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return allocator_type(_M_t.get_allocator()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: begin() noexcept 234s 1949: { return _M_t.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: begin() const noexcept 234s 1949: { return _M_t.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: end() noexcept 234s 1949: { return _M_t.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: end() const noexcept 234s 1949: { return _M_t.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: rbegin() noexcept 234s 1949: { return _M_t.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_reverse_iterator 234s 1949: rbegin() const noexcept 234s 1949: { return _M_t.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: rend() noexcept 234s 1949: { return _M_t.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_reverse_iterator 234s 1949: rend() const noexcept 234s 1949: { return _M_t.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: cbegin() const noexcept 234s 1949: { return _M_t.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: cend() const noexcept 234s 1949: { return _M_t.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_reverse_iterator 234s 1949: crbegin() const noexcept 234s 1949: { return _M_t.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_reverse_iterator 234s 1949: crend() const noexcept 234s 1949: { return _M_t.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] bool 234s 1949: empty() const noexcept 234s 1949: { return _M_t.empty(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { return _M_t.size(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { return _M_t.max_size(); } 234s 1949: # 526 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: mapped_type& 234s 1949: operator[](const key_type& __k) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator __i = lower_bound(__k); 234s 1949: 234s 1949: if (__i == end() || key_comp()(__k, (*__i).first)) 234s 1949: 234s 1949: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, 234s 1949: std::tuple(__k), 234s 1949: std::tuple<>()); 234s 1949: 234s 1949: 234s 1949: 234s 1949: return (*__i).second; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: mapped_type& 234s 1949: operator[](key_type&& __k) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator __i = lower_bound(__k); 234s 1949: 234s 1949: if (__i == end() || key_comp()(__k, (*__i).first)) 234s 1949: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, 234s 1949: std::forward_as_tuple(std::move(__k)), 234s 1949: std::tuple<>()); 234s 1949: return (*__i).second; 234s 1949: } 234s 1949: # 571 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: mapped_type& 234s 1949: at(const key_type& __k) 234s 1949: { 234s 1949: iterator __i = lower_bound(__k); 234s 1949: if (__i == end() || key_comp()(__k, (*__i).first)) 234s 1949: __throw_out_of_range(("map::at")); 234s 1949: return (*__i).second; 234s 1949: } 234s 1949: 234s 1949: const mapped_type& 234s 1949: at(const key_type& __k) const 234s 1949: { 234s 1949: const_iterator __i = lower_bound(__k); 234s 1949: if (__i == end() || key_comp()(__k, (*__i).first)) 234s 1949: __throw_out_of_range(("map::at")); 234s 1949: return (*__i).second; 234s 1949: } 234s 1949: # 609 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: template 234s 1949: std::pair 234s 1949: emplace(_Args&&... __args) 234s 1949: { 234s 1949: # 631 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: # 659 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: template 234s 1949: iterator 234s 1949: emplace_hint(const_iterator __pos, _Args&&... __args) 234s 1949: { 234s 1949: return _M_t._M_emplace_hint_unique(__pos, 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: # 856 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: std::pair 234s 1949: insert(const value_type& __x) 234s 1949: { return _M_t._M_insert_unique(__x); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: std::pair 234s 1949: insert(value_type&& __x) 234s 1949: { return _M_t._M_insert_unique(std::move(__x)); } 234s 1949: 234s 1949: template 234s 1949: __enable_if_t::value, 234s 1949: pair> 234s 1949: insert(_Pair&& __x) 234s 1949: { 234s 1949: # 888 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); 234s 1949: } 234s 1949: # 901 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: void 234s 1949: insert(std::initializer_list __list) 234s 1949: { insert(__list.begin(), __list.end()); } 234s 1949: # 948 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: iterator 234s 1949: 234s 1949: insert(const_iterator __position, const value_type& __x) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return _M_t._M_insert_unique_(__position, __x); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, value_type&& __x) 234s 1949: { return _M_t._M_insert_unique_(__position, std::move(__x)); } 234s 1949: 234s 1949: template 234s 1949: __enable_if_t::value, iterator> 234s 1949: insert(const_iterator __position, _Pair&& __x) 234s 1949: { 234s 1949: return _M_t._M_emplace_hint_unique(__position, 234s 1949: std::forward<_Pair>(__x)); 234s 1949: } 234s 1949: # 981 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: insert(_InputIterator __first, _InputIterator __last) 234s 1949: { _M_t._M_insert_range_unique(__first, __last); } 234s 1949: # 1120 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: iterator 234s 1949: erase(const_iterator __position) 234s 1949: { return _M_t.erase(__position); } 234s 1949: 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iterator 234s 1949: erase(iterator __position) 234s 1949: { return _M_t.erase(__position); } 234s 1949: # 1157 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: size_type 234s 1949: erase(const key_type& __x) 234s 1949: { return _M_t.erase(__x); } 234s 1949: # 1177 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: iterator 234s 1949: erase(const_iterator __first, const_iterator __last) 234s 1949: { return _M_t.erase(__first, __last); } 234s 1949: # 1211 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: void 234s 1949: swap(map& __x) 234s 1949: noexcept(__is_nothrow_swappable<_Compare>::value) 234s 1949: { _M_t.swap(__x._M_t); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { _M_t.clear(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: key_compare 234s 1949: key_comp() const 234s 1949: { return _M_t.key_comp(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: value_compare 234s 1949: value_comp() const 234s 1949: { return value_compare(_M_t.key_comp()); } 234s 1949: # 1258 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: iterator 234s 1949: find(const key_type& __x) 234s 1949: { return _M_t.find(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) 234s 1949: { return _M_t._M_find_tr(__x); } 234s 1949: # 1283 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: const_iterator 234s 1949: find(const key_type& __x) const 234s 1949: { return _M_t.find(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) 234s 1949: { return _M_t._M_find_tr(__x); } 234s 1949: # 1304 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: size_type 234s 1949: count(const key_type& __x) const 234s 1949: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) 234s 1949: { return _M_t._M_count_tr(__x); } 234s 1949: # 1347 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: iterator 234s 1949: lower_bound(const key_type& __x) 234s 1949: { return _M_t.lower_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: lower_bound(const _Kt& __x) 234s 1949: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) 234s 1949: { return iterator(_M_t._M_lower_bound_tr(__x)); } 234s 1949: # 1372 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: const_iterator 234s 1949: lower_bound(const key_type& __x) const 234s 1949: { return _M_t.lower_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: lower_bound(const _Kt& __x) const 234s 1949: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) 234s 1949: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } 234s 1949: # 1392 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: iterator 234s 1949: upper_bound(const key_type& __x) 234s 1949: { return _M_t.upper_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: upper_bound(const _Kt& __x) 234s 1949: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 234s 1949: { return iterator(_M_t._M_upper_bound_tr(__x)); } 234s 1949: # 1412 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: const_iterator 234s 1949: upper_bound(const key_type& __x) const 234s 1949: { return _M_t.upper_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: upper_bound(const _Kt& __x) const 234s 1949: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) 234s 1949: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } 234s 1949: # 1441 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) 234s 1949: { return _M_t.equal_range(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: equal_range(const _Kt& __x) 234s 1949: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 234s 1949: { return pair(_M_t._M_equal_range_tr(__x)); } 234s 1949: # 1470 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) const 234s 1949: { return _M_t.equal_range(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: equal_range(const _Kt& __x) const 234s 1949: -> decltype(pair( 234s 1949: _M_t._M_equal_range_tr(__x))) 234s 1949: { 234s 1949: return pair( 234s 1949: _M_t._M_equal_range_tr(__x)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: operator==(const map<_K1, _T1, _C1, _A1>&, 234s 1949: const map<_K1, _T1, _C1, _A1>&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: operator<(const map<_K1, _T1, _C1, _A1>&, 234s 1949: const map<_K1, _T1, _C1, _A1>&); 234s 1949: 234s 1949: }; 234s 1949: # 1569 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: template 234s 1949: inline bool 234s 1949: operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const map<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return __x._M_t == __y._M_t; } 234s 1949: # 1607 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: template 234s 1949: inline bool 234s 1949: operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const map<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return __x._M_t < __y._M_t; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const map<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const map<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return __y < __x; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const map<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return !(__y < __x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const map<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return !(__x < __y); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(map<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: map<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: noexcept(noexcept(__x.swap(__y))) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: # 1673 "/usr/include/c++/15/bits/stl_map.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 66 "/usr/include/c++/15/map" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/stl_multimap.h" 1 3 4 234s 1949: # 67 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class map; 234s 1949: # 101 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: template , 234s 1949: typename _Alloc = std::allocator > > 234s 1949: class multimap 234s 1949: { 234s 1949: public: 234s 1949: typedef _Key key_type; 234s 1949: typedef _Tp mapped_type; 234s 1949: typedef std::pair value_type; 234s 1949: typedef _Compare key_compare; 234s 1949: typedef _Alloc allocator_type; 234s 1949: 234s 1949: private: 234s 1949: # 127 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: static_assert(is_same::value, 234s 1949: "std::multimap must have the same value_type as its allocator"); 234s 1949: 234s 1949: 234s 1949: 234s 1949: public: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: class value_compare 234s 1949: : public std::binary_function 234s 1949: { 234s 1949: friend class multimap<_Key, _Tp, _Compare, _Alloc>; 234s 1949: protected: 234s 1949: _Compare comp; 234s 1949: 234s 1949: value_compare(_Compare __c) 234s 1949: : comp(__c) { } 234s 1949: 234s 1949: public: 234s 1949: bool operator()(const value_type& __x, const value_type& __y) const 234s 1949: { return comp(__x.first, __y.first); } 234s 1949: }; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 234s 1949: rebind::other _Pair_alloc_type; 234s 1949: 234s 1949: typedef _Rb_tree, 234s 1949: key_compare, _Pair_alloc_type> _Rep_type; 234s 1949: 234s 1949: _Rep_type _M_t; 234s 1949: 234s 1949: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: typedef typename _Alloc_traits::pointer pointer; 234s 1949: typedef typename _Alloc_traits::const_pointer const_pointer; 234s 1949: typedef typename _Alloc_traits::reference reference; 234s 1949: typedef typename _Alloc_traits::const_reference const_reference; 234s 1949: typedef typename _Rep_type::iterator iterator; 234s 1949: typedef typename _Rep_type::const_iterator const_iterator; 234s 1949: typedef typename _Rep_type::size_type size_type; 234s 1949: typedef typename _Rep_type::difference_type difference_type; 234s 1949: typedef typename _Rep_type::reverse_iterator reverse_iterator; 234s 1949: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 234s 1949: # 190 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: multimap() = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: multimap(const _Compare& __comp, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Pair_alloc_type(__a)) { } 234s 1949: # 212 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: multimap(const multimap&) = default; 234s 1949: # 221 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: multimap(multimap&&) = default; 234s 1949: # 233 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: multimap(initializer_list __l, 234s 1949: const _Compare& __comp = _Compare(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Pair_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: multimap(const allocator_type& __a) 234s 1949: : _M_t(_Pair_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: multimap(const multimap& __m, 234s 1949: const __type_identity_t& __a) 234s 1949: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: multimap(multimap&& __m, const __type_identity_t& __a) 234s 1949: noexcept(is_nothrow_copy_constructible<_Compare>::value 234s 1949: && _Alloc_traits::_S_always_equal()) 234s 1949: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } 234s 1949: 234s 1949: 234s 1949: multimap(initializer_list __l, const allocator_type& __a) 234s 1949: : _M_t(_Pair_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: multimap(_InputIterator __first, _InputIterator __last, 234s 1949: const allocator_type& __a) 234s 1949: : _M_t(_Pair_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_equal(__first, __last); } 234s 1949: # 277 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: template 234s 1949: multimap(_InputIterator __first, _InputIterator __last) 234s 1949: : _M_t() 234s 1949: { _M_t._M_insert_range_equal(__first, __last); } 234s 1949: # 293 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: template 234s 1949: multimap(_InputIterator __first, _InputIterator __last, 234s 1949: const _Compare& __comp, 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_t(__comp, _Pair_alloc_type(__a)) 234s 1949: { _M_t._M_insert_range_equal(__first, __last); } 234s 1949: # 326 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: ~multimap() = default; 234s 1949: # 342 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: multimap& 234s 1949: operator=(const multimap&) = default; 234s 1949: 234s 1949: 234s 1949: multimap& 234s 1949: operator=(multimap&&) = default; 234s 1949: # 360 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: multimap& 234s 1949: operator=(initializer_list __l) 234s 1949: { 234s 1949: _M_t._M_assign_equal(__l.begin(), __l.end()); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return allocator_type(_M_t.get_allocator()); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: begin() noexcept 234s 1949: { return _M_t.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: begin() const noexcept 234s 1949: { return _M_t.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: end() noexcept 234s 1949: { return _M_t.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: end() const noexcept 234s 1949: { return _M_t.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: rbegin() noexcept 234s 1949: { return _M_t.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_reverse_iterator 234s 1949: rbegin() const noexcept 234s 1949: { return _M_t.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: reverse_iterator 234s 1949: rend() noexcept 234s 1949: { return _M_t.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_reverse_iterator 234s 1949: rend() const noexcept 234s 1949: { return _M_t.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: cbegin() const noexcept 234s 1949: { return _M_t.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: cend() const noexcept 234s 1949: { return _M_t.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_reverse_iterator 234s 1949: crbegin() const noexcept 234s 1949: { return _M_t.rbegin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_reverse_iterator 234s 1949: crend() const noexcept 234s 1949: { return _M_t.rend(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] bool 234s 1949: empty() const noexcept 234s 1949: { return _M_t.empty(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { return _M_t.size(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { return _M_t.max_size(); } 234s 1949: # 518 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: template 234s 1949: iterator 234s 1949: emplace(_Args&&... __args) 234s 1949: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } 234s 1949: # 545 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: template 234s 1949: iterator 234s 1949: emplace_hint(const_iterator __pos, _Args&&... __args) 234s 1949: { 234s 1949: return _M_t._M_emplace_hint_equal(__pos, 234s 1949: std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: # 567 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: iterator 234s 1949: insert(const value_type& __x) 234s 1949: { return _M_t._M_insert_equal(__x); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: insert(value_type&& __x) 234s 1949: { return _M_t._M_insert_equal(std::move(__x)); } 234s 1949: 234s 1949: template 234s 1949: __enable_if_t::value, iterator> 234s 1949: insert(_Pair&& __x) 234s 1949: { return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); } 234s 1949: # 606 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: iterator 234s 1949: 234s 1949: insert(const_iterator __position, const value_type& __x) 234s 1949: 234s 1949: 234s 1949: 234s 1949: { return _M_t._M_insert_equal_(__position, __x); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __position, value_type&& __x) 234s 1949: { return _M_t._M_insert_equal_(__position, std::move(__x)); } 234s 1949: 234s 1949: template 234s 1949: __enable_if_t::value, iterator> 234s 1949: insert(const_iterator __position, _Pair&& __x) 234s 1949: { 234s 1949: return _M_t._M_emplace_hint_equal(__position, 234s 1949: std::forward<_Pair>(__x)); 234s 1949: } 234s 1949: # 640 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: insert(_InputIterator __first, _InputIterator __last) 234s 1949: { _M_t._M_insert_range_equal(__first, __last); } 234s 1949: # 653 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: void 234s 1949: insert(initializer_list __l) 234s 1949: { this->insert(__l.begin(), __l.end()); } 234s 1949: # 749 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: iterator 234s 1949: erase(const_iterator __position) 234s 1949: { return _M_t.erase(__position); } 234s 1949: 234s 1949: 234s 1949: __attribute ((__abi_tag__ ("cxx11"))) 234s 1949: iterator 234s 1949: erase(iterator __position) 234s 1949: { return _M_t.erase(__position); } 234s 1949: # 786 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: size_type 234s 1949: erase(const key_type& __x) 234s 1949: { return _M_t.erase(__x); } 234s 1949: # 807 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: iterator 234s 1949: erase(const_iterator __first, const_iterator __last) 234s 1949: { return _M_t.erase(__first, __last); } 234s 1949: # 844 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: void 234s 1949: swap(multimap& __x) 234s 1949: noexcept(__is_nothrow_swappable<_Compare>::value) 234s 1949: { _M_t.swap(__x._M_t); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { _M_t.clear(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: key_compare 234s 1949: key_comp() const 234s 1949: { return _M_t.key_comp(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: value_compare 234s 1949: value_comp() const 234s 1949: { return value_compare(_M_t.key_comp()); } 234s 1949: # 890 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: iterator 234s 1949: find(const key_type& __x) 234s 1949: { return _M_t.find(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) 234s 1949: { return _M_t._M_find_tr(__x); } 234s 1949: # 914 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: const_iterator 234s 1949: find(const key_type& __x) const 234s 1949: { return _M_t.find(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) 234s 1949: { return _M_t._M_find_tr(__x); } 234s 1949: # 932 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: size_type 234s 1949: count(const key_type& __x) const 234s 1949: { return _M_t.count(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) 234s 1949: { return _M_t._M_count_tr(__x); } 234s 1949: # 975 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: iterator 234s 1949: lower_bound(const key_type& __x) 234s 1949: { return _M_t.lower_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: lower_bound(const _Kt& __x) 234s 1949: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) 234s 1949: { return iterator(_M_t._M_lower_bound_tr(__x)); } 234s 1949: # 1000 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: const_iterator 234s 1949: lower_bound(const key_type& __x) const 234s 1949: { return _M_t.lower_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: lower_bound(const _Kt& __x) const 234s 1949: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) 234s 1949: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } 234s 1949: # 1020 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: iterator 234s 1949: upper_bound(const key_type& __x) 234s 1949: { return _M_t.upper_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: upper_bound(const _Kt& __x) 234s 1949: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) 234s 1949: { return iterator(_M_t._M_upper_bound_tr(__x)); } 234s 1949: # 1040 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: const_iterator 234s 1949: upper_bound(const key_type& __x) const 234s 1949: { return _M_t.upper_bound(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: upper_bound(const _Kt& __x) const 234s 1949: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) 234s 1949: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } 234s 1949: # 1067 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) 234s 1949: { return _M_t.equal_range(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: equal_range(const _Kt& __x) 234s 1949: -> decltype(pair(_M_t._M_equal_range_tr(__x))) 234s 1949: { return pair(_M_t._M_equal_range_tr(__x)); } 234s 1949: # 1094 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) const 234s 1949: { return _M_t.equal_range(__x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: equal_range(const _Kt& __x) const 234s 1949: -> decltype(pair( 234s 1949: _M_t._M_equal_range_tr(__x))) 234s 1949: { 234s 1949: return pair( 234s 1949: _M_t._M_equal_range_tr(__x)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: operator==(const multimap<_K1, _T1, _C1, _A1>&, 234s 1949: const multimap<_K1, _T1, _C1, _A1>&); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: operator<(const multimap<_K1, _T1, _C1, _A1>&, 234s 1949: const multimap<_K1, _T1, _C1, _A1>&); 234s 1949: 234s 1949: }; 234s 1949: # 1192 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: template 234s 1949: inline bool 234s 1949: operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return __x._M_t == __y._M_t; } 234s 1949: # 1230 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: template 234s 1949: inline bool 234s 1949: operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return __x._M_t < __y._M_t; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return __y < __x; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return !(__y < __x); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: { return !(__x < __y); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, 234s 1949: multimap<_Key, _Tp, _Compare, _Alloc>& __y) 234s 1949: noexcept(noexcept(__x.swap(__y))) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: 234s 1949: # 1296 "/usr/include/c++/15/bits/stl_multimap.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 67 "/usr/include/c++/15/map" 2 3 4 234s 1949: # 82 "/usr/include/c++/15/map" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 83 "/usr/include/c++/15/map" 2 3 4 234s 1949: # 3184 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/unordered_set" 1 3 4 234s 1949: # 43 "/usr/include/c++/15/unordered_set" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/unordered_set.h" 1 3 4 234s 1949: # 33 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/hashtable.h" 1 3 4 234s 1949: # 37 "/usr/include/c++/15/bits/hashtable.h" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/hashtable_policy.h" 1 3 4 234s 1949: # 42 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: class _Hashtable; 234s 1949: 234s 1949: namespace __detail 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Hashtable_base; 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline typename std::iterator_traits<_Iterator>::difference_type 234s 1949: __distance_fw(_Iterator __first, _Iterator __last) 234s 1949: { 234s 1949: using _Cat = typename std::iterator_traits<_Iterator>::iterator_category; 234s 1949: if constexpr (is_convertible<_Cat, forward_iterator_tag>::value) 234s 1949: return std::distance(__first, __last); 234s 1949: else 234s 1949: return __first != __last ? 1 : 0; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: struct _Identity 234s 1949: { 234s 1949: template 234s 1949: _Tp&& 234s 1949: operator()(_Tp&& __x) const noexcept 234s 1949: { return std::forward<_Tp>(__x); } 234s 1949: }; 234s 1949: 234s 1949: struct _Select1st 234s 1949: { 234s 1949: template 234s 1949: struct __1st_type; 234s 1949: 234s 1949: template 234s 1949: struct __1st_type> 234s 1949: { using type = _Tp; }; 234s 1949: 234s 1949: template 234s 1949: struct __1st_type> 234s 1949: { using type = const _Tp; }; 234s 1949: 234s 1949: template 234s 1949: struct __1st_type<_Pair&> 234s 1949: { using type = typename __1st_type<_Pair>::type&; }; 234s 1949: 234s 1949: template 234s 1949: typename __1st_type<_Tp>::type&& 234s 1949: operator()(_Tp&& __x) const noexcept 234s 1949: { return std::forward<_Tp>(__x).first; } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _NodeBuilder; 234s 1949: 234s 1949: template<> 234s 1949: struct _NodeBuilder<_Select1st> 234s 1949: { 234s 1949: template 234s 1949: static auto 234s 1949: _S_build(_Kt&& __k, _Arg&& __arg, _NodeGenerator& __node_gen) 234s 1949: -> typename _NodeGenerator::__node_ptr 234s 1949: { 234s 1949: return __node_gen(std::forward<_Kt>(__k), 234s 1949: std::forward<_Arg>(__arg).second); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template<> 234s 1949: struct _NodeBuilder<_Identity> 234s 1949: { 234s 1949: template 234s 1949: static auto 234s 1949: _S_build(_Kt&& __k, _Arg&&, _NodeGenerator& __node_gen) 234s 1949: -> typename _NodeGenerator::__node_ptr 234s 1949: { return __node_gen(std::forward<_Kt>(__k)); } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _NodePtrGuard 234s 1949: { 234s 1949: _HashtableAlloc& _M_h; 234s 1949: _NodePtr _M_ptr; 234s 1949: 234s 1949: ~_NodePtrGuard() 234s 1949: { 234s 1949: if (_M_ptr) 234s 1949: _M_h._M_deallocate_node_ptr(_M_ptr); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Hashtable_alloc; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _ReuseOrAllocNode 234s 1949: { 234s 1949: private: 234s 1949: using __node_alloc_type = _NodeAlloc; 234s 1949: using __hashtable_alloc = _Hashtable_alloc<__node_alloc_type>; 234s 1949: using __node_alloc_traits = 234s 1949: typename __hashtable_alloc::__node_alloc_traits; 234s 1949: 234s 1949: public: 234s 1949: using __node_ptr = typename __hashtable_alloc::__node_ptr; 234s 1949: 234s 1949: _ReuseOrAllocNode(__node_ptr __nodes, __hashtable_alloc& __h) 234s 1949: : _M_nodes(__nodes), _M_h(__h) { } 234s 1949: _ReuseOrAllocNode(const _ReuseOrAllocNode&) = delete; 234s 1949: 234s 1949: ~_ReuseOrAllocNode() 234s 1949: { _M_h._M_deallocate_nodes(_M_nodes); } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: __node_ptr 234s 1949: operator()(_Arg&& __arg) 234s 1949: { 234s 1949: if (!_M_nodes) 234s 1949: return _M_h._M_allocate_node(std::forward<_Arg>(__arg)); 234s 1949: 234s 1949: using value_type = typename _NodeAlloc::value_type::value_type; 234s 1949: 234s 1949: __node_ptr __node = _M_nodes; 234s 1949: if constexpr (is_assignable::value) 234s 1949: { 234s 1949: __node->_M_v() = std::forward<_Arg>(__arg); 234s 1949: _M_nodes = _M_nodes->_M_next(); 234s 1949: __node->_M_nxt = nullptr; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: _M_nodes = _M_nodes->_M_next(); 234s 1949: __node->_M_nxt = nullptr; 234s 1949: auto& __a = _M_h._M_node_allocator(); 234s 1949: __node_alloc_traits::destroy(__a, __node->_M_valptr()); 234s 1949: _NodePtrGuard<__hashtable_alloc, __node_ptr> 234s 1949: __guard{ _M_h, __node }; 234s 1949: __node_alloc_traits::construct(__a, __node->_M_valptr(), 234s 1949: std::forward<_Arg>(__arg)); 234s 1949: __guard._M_ptr = nullptr; 234s 1949: } 234s 1949: return __node; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: private: 234s 1949: __node_ptr _M_nodes; 234s 1949: __hashtable_alloc& _M_h; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _AllocNode 234s 1949: { 234s 1949: private: 234s 1949: using __hashtable_alloc = _Hashtable_alloc<_NodeAlloc>; 234s 1949: 234s 1949: public: 234s 1949: using __node_ptr = typename __hashtable_alloc::__node_ptr; 234s 1949: 234s 1949: _AllocNode(__hashtable_alloc& __h) 234s 1949: : _M_h(__h) { } 234s 1949: 234s 1949: template 234s 1949: __node_ptr 234s 1949: operator()(_Args&&... __args) const 234s 1949: { return _M_h._M_allocate_node(std::forward<_Args>(__args)...); } 234s 1949: 234s 1949: private: 234s 1949: __hashtable_alloc& _M_h; 234s 1949: }; 234s 1949: # 262 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 234s 1949: template 234s 1949: struct _Hashtable_traits 234s 1949: { 234s 1949: using __hash_cached = __bool_constant<_Cache_hash_code>; 234s 1949: using __constant_iterators = __bool_constant<_Constant_iterators>; 234s 1949: using __unique_keys = __bool_constant<_Unique_keys>; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Hashtable_hash_traits 234s 1949: { 234s 1949: static constexpr size_t 234s 1949: __small_size_threshold() noexcept 234s 1949: { return std::__is_fast_hash<_Hash>::value ? 0 : 20; } 234s 1949: }; 234s 1949: # 292 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 234s 1949: struct _Hash_node_base 234s 1949: { 234s 1949: _Hash_node_base* _M_nxt; 234s 1949: 234s 1949: _Hash_node_base() noexcept : _M_nxt() { } 234s 1949: 234s 1949: _Hash_node_base(_Hash_node_base* __next) noexcept : _M_nxt(__next) { } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Hash_node_value_base 234s 1949: { 234s 1949: using value_type = _Value; 234s 1949: 234s 1949: __gnu_cxx::__aligned_buffer<_Value> _M_storage; 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: _Value* 234s 1949: _M_valptr() noexcept 234s 1949: { return _M_storage._M_ptr(); } 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: const _Value* 234s 1949: _M_valptr() const noexcept 234s 1949: { return _M_storage._M_ptr(); } 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: _Value& 234s 1949: _M_v() noexcept 234s 1949: { return *_M_valptr(); } 234s 1949: 234s 1949: [[__gnu__::__always_inline__]] 234s 1949: const _Value& 234s 1949: _M_v() const noexcept 234s 1949: { return *_M_valptr(); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Hash_node_code_cache 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template<> 234s 1949: struct _Hash_node_code_cache 234s 1949: { size_t _M_hash_code; }; 234s 1949: 234s 1949: template 234s 1949: struct _Hash_node_value 234s 1949: : _Hash_node_value_base<_Value> 234s 1949: , _Hash_node_code_cache<_Cache_hash_code> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Hash_node 234s 1949: : _Hash_node_base 234s 1949: , _Hash_node_value<_Value, _Cache_hash_code> 234s 1949: { 234s 1949: _Hash_node* 234s 1949: _M_next() const noexcept 234s 1949: { return static_cast<_Hash_node*>(this->_M_nxt); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Node_iterator_base 234s 1949: { 234s 1949: using __node_type = _Hash_node<_Value, _Cache_hash_code>; 234s 1949: 234s 1949: __node_type* _M_cur; 234s 1949: 234s 1949: _Node_iterator_base() : _M_cur(nullptr) { } 234s 1949: _Node_iterator_base(__node_type* __p) noexcept 234s 1949: : _M_cur(__p) { } 234s 1949: 234s 1949: void 234s 1949: _M_incr() noexcept 234s 1949: { _M_cur = _M_cur->_M_next(); } 234s 1949: 234s 1949: friend bool 234s 1949: operator==(const _Node_iterator_base& __x, const _Node_iterator_base& __y) 234s 1949: noexcept 234s 1949: { return __x._M_cur == __y._M_cur; } 234s 1949: 234s 1949: 234s 1949: friend bool 234s 1949: operator!=(const _Node_iterator_base& __x, const _Node_iterator_base& __y) 234s 1949: noexcept 234s 1949: { return __x._M_cur != __y._M_cur; } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Node_iterator 234s 1949: : public _Node_iterator_base<_Value, __cache> 234s 1949: { 234s 1949: private: 234s 1949: using __base_type = _Node_iterator_base<_Value, __cache>; 234s 1949: using __node_type = typename __base_type::__node_type; 234s 1949: 234s 1949: public: 234s 1949: using value_type = _Value; 234s 1949: using difference_type = ptrdiff_t; 234s 1949: using iterator_category = forward_iterator_tag; 234s 1949: 234s 1949: using pointer = __conditional_t<__constant_iterators, 234s 1949: const value_type*, value_type*>; 234s 1949: 234s 1949: using reference = __conditional_t<__constant_iterators, 234s 1949: const value_type&, value_type&>; 234s 1949: 234s 1949: _Node_iterator() = default; 234s 1949: 234s 1949: explicit 234s 1949: _Node_iterator(__node_type* __p) noexcept 234s 1949: : __base_type(__p) { } 234s 1949: 234s 1949: reference 234s 1949: operator*() const noexcept 234s 1949: { return this->_M_cur->_M_v(); } 234s 1949: 234s 1949: pointer 234s 1949: operator->() const noexcept 234s 1949: { return this->_M_cur->_M_valptr(); } 234s 1949: 234s 1949: _Node_iterator& 234s 1949: operator++() noexcept 234s 1949: { 234s 1949: this->_M_incr(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: _Node_iterator 234s 1949: operator++(int) noexcept 234s 1949: { 234s 1949: _Node_iterator __tmp(*this); 234s 1949: this->_M_incr(); 234s 1949: return __tmp; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: friend bool 234s 1949: operator==(const _Node_iterator& __x, const _Node_iterator& __y) noexcept 234s 1949: { 234s 1949: const __base_type& __bx = __x; 234s 1949: const __base_type& __by = __y; 234s 1949: return __bx == __by; 234s 1949: } 234s 1949: 234s 1949: friend bool 234s 1949: operator!=(const _Node_iterator& __x, const _Node_iterator& __y) noexcept 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Node_const_iterator 234s 1949: : public _Node_iterator_base<_Value, __cache> 234s 1949: { 234s 1949: private: 234s 1949: using __base_type = _Node_iterator_base<_Value, __cache>; 234s 1949: using __node_type = typename __base_type::__node_type; 234s 1949: 234s 1949: 234s 1949: using __iterator 234s 1949: = _Node_iterator<_Value, __constant_iterators, __cache>; 234s 1949: 234s 1949: public: 234s 1949: using value_type = _Value; 234s 1949: using difference_type = ptrdiff_t; 234s 1949: using iterator_category = forward_iterator_tag; 234s 1949: 234s 1949: using pointer = const value_type*; 234s 1949: using reference = const value_type&; 234s 1949: 234s 1949: _Node_const_iterator() = default; 234s 1949: 234s 1949: explicit 234s 1949: _Node_const_iterator(__node_type* __p) noexcept 234s 1949: : __base_type(__p) { } 234s 1949: 234s 1949: _Node_const_iterator(const __iterator& __x) noexcept 234s 1949: : __base_type(__x._M_cur) { } 234s 1949: 234s 1949: reference 234s 1949: operator*() const noexcept 234s 1949: { return this->_M_cur->_M_v(); } 234s 1949: 234s 1949: pointer 234s 1949: operator->() const noexcept 234s 1949: { return this->_M_cur->_M_valptr(); } 234s 1949: 234s 1949: _Node_const_iterator& 234s 1949: operator++() noexcept 234s 1949: { 234s 1949: this->_M_incr(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: _Node_const_iterator 234s 1949: operator++(int) noexcept 234s 1949: { 234s 1949: _Node_const_iterator __tmp(*this); 234s 1949: this->_M_incr(); 234s 1949: return __tmp; 234s 1949: } 234s 1949: # 531 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 234s 1949: friend bool 234s 1949: operator==(const _Node_const_iterator& __x, 234s 1949: const _Node_const_iterator& __y) noexcept 234s 1949: { 234s 1949: const __base_type& __bx = __x; 234s 1949: const __base_type& __by = __y; 234s 1949: return __bx == __by; 234s 1949: } 234s 1949: 234s 1949: friend bool 234s 1949: operator!=(const _Node_const_iterator& __x, 234s 1949: const _Node_const_iterator& __y) noexcept 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: friend bool 234s 1949: operator==(const _Node_const_iterator& __x, 234s 1949: const __iterator& __y) noexcept 234s 1949: { 234s 1949: const __base_type& __bx = __x; 234s 1949: const __base_type& __by = __y; 234s 1949: return __bx == __by; 234s 1949: } 234s 1949: 234s 1949: friend bool 234s 1949: operator!=(const _Node_const_iterator& __x, 234s 1949: const __iterator& __y) noexcept 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: friend bool 234s 1949: operator==(const __iterator& __x, 234s 1949: const _Node_const_iterator& __y) noexcept 234s 1949: { 234s 1949: const __base_type& __bx = __x; 234s 1949: const __base_type& __by = __y; 234s 1949: return __bx == __by; 234s 1949: } 234s 1949: 234s 1949: friend bool 234s 1949: operator!=(const __iterator& __x, 234s 1949: const _Node_const_iterator& __y) noexcept 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct _Mod_range_hashing 234s 1949: { 234s 1949: size_t 234s 1949: operator()(size_t __num, size_t __den) const noexcept 234s 1949: { return __num % __den; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct _Default_ranged_hash { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct _Prime_rehash_policy 234s 1949: { 234s 1949: using __has_load_factor = true_type; 234s 1949: 234s 1949: _Prime_rehash_policy(float __z = 1.0) noexcept 234s 1949: : _M_max_load_factor(__z), _M_next_resize(0) { } 234s 1949: 234s 1949: float 234s 1949: max_load_factor() const noexcept 234s 1949: { return _M_max_load_factor; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_t 234s 1949: _M_next_bkt(size_t __n) const; 234s 1949: 234s 1949: 234s 1949: size_t 234s 1949: _M_bkt_for_elements(size_t __n) const 234s 1949: { return __builtin_ceil(__n / (double)_M_max_load_factor); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: std::pair 234s 1949: _M_need_rehash(size_t __n_bkt, size_t __n_elt, 234s 1949: size_t __n_ins) const; 234s 1949: 234s 1949: using _State = size_t; 234s 1949: 234s 1949: _State 234s 1949: _M_state() const 234s 1949: { return _M_next_resize; } 234s 1949: 234s 1949: void 234s 1949: _M_reset() noexcept 234s 1949: { _M_next_resize = 0; } 234s 1949: 234s 1949: void 234s 1949: _M_reset(_State __state) 234s 1949: { _M_next_resize = __state; } 234s 1949: 234s 1949: static const size_t _S_growth_factor = 2; 234s 1949: 234s 1949: float _M_max_load_factor; 234s 1949: 234s 1949: 234s 1949: mutable size_t _M_next_resize; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: struct _Mask_range_hashing 234s 1949: { 234s 1949: size_t 234s 1949: operator()(size_t __num, size_t __den) const noexcept 234s 1949: { return __num & (__den - 1); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: inline size_t 234s 1949: __clp2(size_t __n) noexcept 234s 1949: { 234s 1949: using __gnu_cxx::__int_traits; 234s 1949: 234s 1949: if (__n < 2) 234s 1949: return __n; 234s 1949: const unsigned __lz = sizeof(size_t) > sizeof(long) 234s 1949: ? __builtin_clzll(__n - 1ull) 234s 1949: : __builtin_clzl(__n - 1ul); 234s 1949: 234s 1949: return (size_t(1) << (__int_traits::__digits - __lz - 1)) << 1; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct _Power2_rehash_policy 234s 1949: { 234s 1949: using __has_load_factor = true_type; 234s 1949: 234s 1949: _Power2_rehash_policy(float __z = 1.0) noexcept 234s 1949: : _M_max_load_factor(__z), _M_next_resize(0) { } 234s 1949: 234s 1949: float 234s 1949: max_load_factor() const noexcept 234s 1949: { return _M_max_load_factor; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_t 234s 1949: _M_next_bkt(size_t __n) noexcept 234s 1949: { 234s 1949: if (__n == 0) 234s 1949: 234s 1949: 234s 1949: 234s 1949: return 1; 234s 1949: 234s 1949: const auto __max_width = std::min(sizeof(size_t), 8); 234s 1949: const auto __max_bkt = size_t(1) << (__max_width * 8 - 1); 234s 1949: size_t __res = __clp2(__n); 234s 1949: 234s 1949: if (__res == 0) 234s 1949: __res = __max_bkt; 234s 1949: else if (__res == 1) 234s 1949: 234s 1949: 234s 1949: 234s 1949: __res = 2; 234s 1949: 234s 1949: if (__res == __max_bkt) 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_next_resize = size_t(-1); 234s 1949: else 234s 1949: _M_next_resize 234s 1949: = __builtin_floor(__res * (double)_M_max_load_factor); 234s 1949: 234s 1949: return __res; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: size_t 234s 1949: _M_bkt_for_elements(size_t __n) const noexcept 234s 1949: { return __builtin_ceil(__n / (double)_M_max_load_factor); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: std::pair 234s 1949: _M_need_rehash(size_t __n_bkt, size_t __n_elt, size_t __n_ins) noexcept 234s 1949: { 234s 1949: if (__n_elt + __n_ins > _M_next_resize) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: double __min_bkts 234s 1949: = std::max(__n_elt + __n_ins, _M_next_resize ? 0 : 11) 234s 1949: / (double)_M_max_load_factor; 234s 1949: if (__min_bkts >= __n_bkt) 234s 1949: return { true, 234s 1949: _M_next_bkt(std::max(__builtin_floor(__min_bkts) + 1, 234s 1949: __n_bkt * _S_growth_factor)) }; 234s 1949: 234s 1949: _M_next_resize 234s 1949: = __builtin_floor(__n_bkt * (double)_M_max_load_factor); 234s 1949: return { false, 0 }; 234s 1949: } 234s 1949: else 234s 1949: return { false, 0 }; 234s 1949: } 234s 1949: 234s 1949: using _State = size_t; 234s 1949: 234s 1949: _State 234s 1949: _M_state() const noexcept 234s 1949: { return _M_next_resize; } 234s 1949: 234s 1949: void 234s 1949: _M_reset() noexcept 234s 1949: { _M_next_resize = 0; } 234s 1949: 234s 1949: void 234s 1949: _M_reset(_State __state) noexcept 234s 1949: { _M_next_resize = __state; } 234s 1949: 234s 1949: static const size_t _S_growth_factor = 2; 234s 1949: 234s 1949: float _M_max_load_factor; 234s 1949: size_t _M_next_resize; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _RehashStateGuard 234s 1949: { 234s 1949: _RehashPolicy* _M_guarded_obj; 234s 1949: typename _RehashPolicy::_State _M_prev_state; 234s 1949: 234s 1949: _RehashStateGuard(_RehashPolicy& __policy) 234s 1949: : _M_guarded_obj(std::__addressof(__policy)) 234s 1949: , _M_prev_state(__policy._M_state()) 234s 1949: { } 234s 1949: _RehashStateGuard(const _RehashStateGuard&) = delete; 234s 1949: 234s 1949: ~_RehashStateGuard() 234s 1949: { 234s 1949: if (_M_guarded_obj) 234s 1949: _M_guarded_obj->_M_reset(_M_prev_state); 234s 1949: } 234s 1949: }; 234s 1949: # 809 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 234s 1949: template 234s 1949: struct _Map_base { }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false> 234s 1949: { 234s 1949: using mapped_type = _Val; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true> 234s 1949: { 234s 1949: private: 234s 1949: using __hashtable_base = _Hashtable_base<_Key, pair, 234s 1949: _Select1st, _Equal, _Hash, 234s 1949: _RangeHash, _Unused, 234s 1949: _Traits>; 234s 1949: 234s 1949: using __hashtable = _Hashtable<_Key, pair, _Alloc, 234s 1949: _Select1st, _Equal, _Hash, _RangeHash, 234s 1949: _Unused, _RehashPolicy, _Traits>; 234s 1949: 234s 1949: using __hash_code = typename __hashtable_base::__hash_code; 234s 1949: 234s 1949: public: 234s 1949: using key_type = typename __hashtable_base::key_type; 234s 1949: using mapped_type = _Val; 234s 1949: 234s 1949: mapped_type& 234s 1949: operator[](const key_type& __k); 234s 1949: 234s 1949: mapped_type& 234s 1949: operator[](key_type&& __k); 234s 1949: 234s 1949: 234s 1949: 234s 1949: mapped_type& 234s 1949: at(const key_type& __k) 234s 1949: { 234s 1949: auto __ite = static_cast<__hashtable*>(this)->find(__k); 234s 1949: if (!__ite._M_cur) 234s 1949: __throw_out_of_range(("unordered_map::at")); 234s 1949: return __ite->second; 234s 1949: } 234s 1949: 234s 1949: const mapped_type& 234s 1949: at(const key_type& __k) const 234s 1949: { 234s 1949: auto __ite = static_cast(this)->find(__k); 234s 1949: if (!__ite._M_cur) 234s 1949: __throw_out_of_range(("unordered_map::at")); 234s 1949: return __ite->second; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: 234s 1949: operator[](const key_type& __k) 234s 1949: -> mapped_type& 234s 1949: { 234s 1949: __hashtable* __h = static_cast<__hashtable*>(this); 234s 1949: __hash_code __code = __h->_M_hash_code(__k); 234s 1949: size_t __bkt = __h->_M_bucket_index(__code); 234s 1949: if (auto __node = __h->_M_find_node(__bkt, __k, __code)) 234s 1949: return __node->_M_v().second; 234s 1949: 234s 1949: typename __hashtable::_Scoped_node __node { 234s 1949: __h, 234s 1949: std::piecewise_construct, 234s 1949: std::tuple(__k), 234s 1949: std::tuple<>() 234s 1949: }; 234s 1949: auto __pos 234s 1949: = __h->_M_insert_unique_node(__bkt, __code, __node._M_node); 234s 1949: __node._M_node = nullptr; 234s 1949: return __pos->second; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: 234s 1949: operator[](key_type&& __k) 234s 1949: -> mapped_type& 234s 1949: { 234s 1949: __hashtable* __h = static_cast<__hashtable*>(this); 234s 1949: __hash_code __code = __h->_M_hash_code(__k); 234s 1949: size_t __bkt = __h->_M_bucket_index(__code); 234s 1949: if (auto __node = __h->_M_find_node(__bkt, __k, __code)) 234s 1949: return __node->_M_v().second; 234s 1949: 234s 1949: typename __hashtable::_Scoped_node __node { 234s 1949: __h, 234s 1949: std::piecewise_construct, 234s 1949: std::forward_as_tuple(std::move(__k)), 234s 1949: std::tuple<>() 234s 1949: }; 234s 1949: auto __pos 234s 1949: = __h->_M_insert_unique_node(__bkt, __code, __node._M_node); 234s 1949: __node._M_node = nullptr; 234s 1949: return __pos->second; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Map_base, 234s 1949: _Alloc, _Select1st, _Equal, _Hash, 234s 1949: _RangeHash, _Unused, _RehashPolicy, _Traits, __uniq> 234s 1949: : _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, _Hash, 234s 1949: _RangeHash, _Unused, _RehashPolicy, _Traits, __uniq> 234s 1949: { }; 234s 1949: 234s 1949: template 234s 1949: using __has_load_factor = typename _Policy::__has_load_factor; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template> 234s 1949: struct _Rehash_base; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, 234s 1949: false_type > 234s 1949: { 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, 234s 1949: true_type > 234s 1949: { 234s 1949: private: 234s 1949: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, 234s 1949: _Equal, _Hash, _RangeHash, _Unused, 234s 1949: _RehashPolicy, _Traits>; 234s 1949: 234s 1949: public: 234s 1949: float 234s 1949: max_load_factor() const noexcept 234s 1949: { 234s 1949: const __hashtable* __this = static_cast(this); 234s 1949: return __this->__rehash_policy().max_load_factor(); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: max_load_factor(float __z) 234s 1949: { 234s 1949: __hashtable* __this = static_cast<__hashtable*>(this); 234s 1949: __this->__rehash_policy(_RehashPolicy(__z)); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: reserve(size_t __n) 234s 1949: { 234s 1949: __hashtable* __this = static_cast<__hashtable*>(this); 234s 1949: __this->rehash(__this->__rehash_policy()._M_bkt_for_elements(__n)); 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Hashtable_ebo_helper 234s 1949: { 234s 1949: [[__no_unique_address__]] _Tp _M_obj; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Hashtable_ebo_helper<_Tp, false> 234s 1949: { 234s 1949: _Tp _M_obj; 234s 1949: }; 234s 1949: # 1034 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 234s 1949: template 234s 1949: struct _Local_iterator_base; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Hash_code_base 234s 1949: { 234s 1949: 234s 1949: friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, false>; 234s 1949: public: 234s 1949: using hasher = _Hash; 234s 1949: 234s 1949: hasher 234s 1949: hash_function() const 234s 1949: { return _M_hash._M_obj; } 234s 1949: 234s 1949: protected: 234s 1949: [[__no_unique_address__]] _Hashtable_ebo_helper<_Hash> _M_hash{}; 234s 1949: 234s 1949: using __hash_code = size_t; 234s 1949: 234s 1949: 234s 1949: 234s 1949: _Hash_code_base() = default; 234s 1949: 234s 1949: _Hash_code_base(const _Hash& __hash) : _M_hash{__hash} { } 234s 1949: 234s 1949: __hash_code 234s 1949: _M_hash_code(const _Key& __k) const 234s 1949: { 234s 1949: static_assert(__is_invocable{}, 234s 1949: "hash function must be invocable with an argument of key type"); 234s 1949: return _M_hash._M_obj(__k); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __hash_code 234s 1949: _M_hash_code_tr(const _Kt& __k) const 234s 1949: { 234s 1949: static_assert(__is_invocable{}, 234s 1949: "hash function must be invocable with an argument of key type"); 234s 1949: return _M_hash._M_obj(__k); 234s 1949: } 234s 1949: 234s 1949: __hash_code 234s 1949: _M_hash_code(const _Hash_node_value<_Value, false>& __n) const 234s 1949: { return _M_hash_code(_ExtractKey{}(__n._M_v())); } 234s 1949: 234s 1949: __hash_code 234s 1949: _M_hash_code(const _Hash_node_value<_Value, true>& __n) const 234s 1949: { return __n._M_hash_code; } 234s 1949: 234s 1949: size_t 234s 1949: _M_bucket_index(__hash_code __c, size_t __bkt_count) const 234s 1949: { return _RangeHash{}(__c, __bkt_count); } 234s 1949: 234s 1949: size_t 234s 1949: _M_bucket_index(const _Hash_node_value<_Value, false>& __n, 234s 1949: size_t __bkt_count) const 234s 1949: noexcept( noexcept(declval()(declval())) ) 234s 1949: { 234s 1949: return _RangeHash{}(_M_hash_code(_ExtractKey{}(__n._M_v())), 234s 1949: __bkt_count); 234s 1949: } 234s 1949: 234s 1949: size_t 234s 1949: _M_bucket_index(const _Hash_node_value<_Value, true>& __n, 234s 1949: size_t __bkt_count) const noexcept 234s 1949: { return _RangeHash{}(__n._M_hash_code, __bkt_count); } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Local_iterator_base<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, true> 234s 1949: : public _Node_iterator_base<_Value, true> 234s 1949: { 234s 1949: protected: 234s 1949: using __base_node_iter = _Node_iterator_base<_Value, true>; 234s 1949: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, true>; 234s 1949: 234s 1949: _Local_iterator_base() = default; 234s 1949: 234s 1949: _Local_iterator_base(const __hash_code_base&, 234s 1949: _Hash_node<_Value, true>* __p, 234s 1949: size_t __bkt, size_t __bkt_count) 234s 1949: : __base_node_iter(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) 234s 1949: { } 234s 1949: 234s 1949: void 234s 1949: _M_incr() 234s 1949: { 234s 1949: __base_node_iter::_M_incr(); 234s 1949: if (this->_M_cur) 234s 1949: { 234s 1949: size_t __bkt 234s 1949: = _RangeHash{}(this->_M_cur->_M_hash_code, _M_bucket_count); 234s 1949: if (__bkt != _M_bucket) 234s 1949: this->_M_cur = nullptr; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: size_t _M_bucket = 0; 234s 1949: size_t _M_bucket_count = 0; 234s 1949: 234s 1949: public: 234s 1949: size_t 234s 1949: _M_get_bucket() const { return _M_bucket; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Hash_obj_storage 234s 1949: { 234s 1949: union _Uninit_storage 234s 1949: { 234s 1949: _Uninit_storage() noexcept { } 234s 1949: ~_Uninit_storage() { } 234s 1949: 234s 1949: [[__no_unique_address__]] _Hash _M_h; 234s 1949: }; 234s 1949: 234s 1949: [[__no_unique_address__]] _Uninit_storage _M_u; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Local_iterator_base<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, false> 234s 1949: : _Hash_obj_storage<_Hash>, _Node_iterator_base<_Value, false> 234s 1949: { 234s 1949: protected: 234s 1949: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, false>; 234s 1949: using __hash_obj_storage = _Hash_obj_storage<_Hash>; 234s 1949: using __node_iter_base = _Node_iterator_base<_Value, false>; 234s 1949: 234s 1949: _Local_iterator_base() = default; 234s 1949: 234s 1949: _Local_iterator_base(const __hash_code_base& __base, 234s 1949: _Hash_node<_Value, false>* __p, 234s 1949: size_t __bkt, size_t __bkt_count) 234s 1949: : __node_iter_base(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) 234s 1949: { _M_init(__base._M_hash._M_obj); } 234s 1949: 234s 1949: ~_Local_iterator_base() 234s 1949: { 234s 1949: if (_M_bucket_count != size_t(-1)) 234s 1949: _M_destroy(); 234s 1949: } 234s 1949: 234s 1949: _Local_iterator_base(const _Local_iterator_base& __iter) 234s 1949: : __node_iter_base(__iter._M_cur), _M_bucket(__iter._M_bucket) 234s 1949: , _M_bucket_count(__iter._M_bucket_count) 234s 1949: { 234s 1949: if (_M_bucket_count != size_t(-1)) 234s 1949: _M_init(__iter._M_h()); 234s 1949: } 234s 1949: 234s 1949: _Local_iterator_base& 234s 1949: operator=(const _Local_iterator_base& __iter) 234s 1949: { 234s 1949: if (_M_bucket_count != size_t(-1)) 234s 1949: _M_destroy(); 234s 1949: this->_M_cur = __iter._M_cur; 234s 1949: _M_bucket = __iter._M_bucket; 234s 1949: _M_bucket_count = __iter._M_bucket_count; 234s 1949: if (_M_bucket_count != size_t(-1)) 234s 1949: _M_init(__iter._M_h()); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_incr() 234s 1949: { 234s 1949: __node_iter_base::_M_incr(); 234s 1949: if (this->_M_cur) 234s 1949: { 234s 1949: const auto __code = _M_h()(_ExtractKey{}(this->_M_cur->_M_v())); 234s 1949: size_t __bkt = _RangeHash{}(__code, _M_bucket_count); 234s 1949: if (__bkt != _M_bucket) 234s 1949: this->_M_cur = nullptr; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: size_t _M_bucket = 0; 234s 1949: size_t _M_bucket_count = -1; 234s 1949: 234s 1949: void 234s 1949: _M_init(const _Hash& __h) 234s 1949: { std::_Construct(std::__addressof(__hash_obj_storage::_M_u._M_h), __h); } 234s 1949: 234s 1949: void 234s 1949: _M_destroy() { __hash_obj_storage::_M_u._M_h.~_Hash(); } 234s 1949: 234s 1949: const _Hash& 234s 1949: _M_h() const { return __hash_obj_storage::_M_u._M_h; } 234s 1949: 234s 1949: public: 234s 1949: size_t 234s 1949: _M_get_bucket() const { return _M_bucket; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Local_iterator 234s 1949: : public _Local_iterator_base<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, __cache> 234s 1949: { 234s 1949: private: 234s 1949: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, __cache>; 234s 1949: using __hash_code_base = typename __base_type::__hash_code_base; 234s 1949: 234s 1949: public: 234s 1949: using value_type = _Value; 234s 1949: using pointer = __conditional_t<__constant_iterators, 234s 1949: const value_type*, value_type*>; 234s 1949: using reference = __conditional_t<__constant_iterators, 234s 1949: const value_type&, value_type&>; 234s 1949: using difference_type = ptrdiff_t; 234s 1949: using iterator_category = forward_iterator_tag; 234s 1949: 234s 1949: _Local_iterator() = default; 234s 1949: 234s 1949: _Local_iterator(const __hash_code_base& __base, 234s 1949: _Hash_node<_Value, __cache>* __n, 234s 1949: size_t __bkt, size_t __bkt_count) 234s 1949: : __base_type(__base, __n, __bkt, __bkt_count) 234s 1949: { } 234s 1949: 234s 1949: reference 234s 1949: operator*() const 234s 1949: { return this->_M_cur->_M_v(); } 234s 1949: 234s 1949: pointer 234s 1949: operator->() const 234s 1949: { return this->_M_cur->_M_valptr(); } 234s 1949: 234s 1949: _Local_iterator& 234s 1949: operator++() 234s 1949: { 234s 1949: this->_M_incr(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: _Local_iterator 234s 1949: operator++(int) 234s 1949: { 234s 1949: _Local_iterator __tmp(*this); 234s 1949: this->_M_incr(); 234s 1949: return __tmp; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Local_const_iterator 234s 1949: : public _Local_iterator_base<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, __cache> 234s 1949: { 234s 1949: private: 234s 1949: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, __cache>; 234s 1949: using __hash_code_base = typename __base_type::__hash_code_base; 234s 1949: 234s 1949: public: 234s 1949: using value_type = _Value; 234s 1949: using pointer = const value_type*; 234s 1949: using reference = const value_type&; 234s 1949: using difference_type = ptrdiff_t; 234s 1949: using iterator_category = forward_iterator_tag; 234s 1949: 234s 1949: _Local_const_iterator() = default; 234s 1949: 234s 1949: _Local_const_iterator(const __hash_code_base& __base, 234s 1949: _Hash_node<_Value, __cache>* __n, 234s 1949: size_t __bkt, size_t __bkt_count) 234s 1949: : __base_type(__base, __n, __bkt, __bkt_count) 234s 1949: { } 234s 1949: 234s 1949: _Local_const_iterator(const _Local_iterator<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, 234s 1949: __constant_iterators, 234s 1949: __cache>& __x) 234s 1949: : __base_type(__x) 234s 1949: { } 234s 1949: 234s 1949: reference 234s 1949: operator*() const 234s 1949: { return this->_M_cur->_M_v(); } 234s 1949: 234s 1949: pointer 234s 1949: operator->() const 234s 1949: { return this->_M_cur->_M_valptr(); } 234s 1949: 234s 1949: _Local_const_iterator& 234s 1949: operator++() 234s 1949: { 234s 1949: this->_M_incr(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: _Local_const_iterator 234s 1949: operator++(int) 234s 1949: { 234s 1949: _Local_const_iterator __tmp(*this); 234s 1949: this->_M_incr(); 234s 1949: return __tmp; 234s 1949: } 234s 1949: }; 234s 1949: # 1369 "/usr/include/c++/15/bits/hashtable_policy.h" 3 4 234s 1949: template 234s 1949: struct _Hashtable_base 234s 1949: : public _Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHash, 234s 1949: _Unused, _Traits::__hash_cached::value> 234s 1949: { 234s 1949: public: 234s 1949: using key_type = _Key; 234s 1949: using value_type = _Value; 234s 1949: using key_equal = _Equal; 234s 1949: using size_type = size_t; 234s 1949: using difference_type = ptrdiff_t; 234s 1949: 234s 1949: using __traits_type = _Traits; 234s 1949: using __hash_cached = typename __traits_type::__hash_cached; 234s 1949: 234s 1949: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 234s 1949: _Hash, _RangeHash, _Unused, 234s 1949: __hash_cached::value>; 234s 1949: 234s 1949: using __hash_code = typename __hash_code_base::__hash_code; 234s 1949: 234s 1949: protected: 234s 1949: [[__no_unique_address__]] _Hashtable_ebo_helper<_Equal> _M_equal{}; 234s 1949: 234s 1949: _Hashtable_base() = default; 234s 1949: 234s 1949: _Hashtable_base(const _Hash& __hash, const _Equal& __eq) 234s 1949: : __hash_code_base(__hash), _M_equal{__eq} 234s 1949: { } 234s 1949: 234s 1949: bool 234s 1949: _M_key_equals(const _Key& __k, 234s 1949: const _Hash_node_value<_Value, 234s 1949: __hash_cached::value>& __n) const 234s 1949: { 234s 1949: static_assert(__is_invocable{}, 234s 1949: "key equality predicate must be invocable with two arguments of " 234s 1949: "key type"); 234s 1949: return _M_eq()(__k, _ExtractKey{}(__n._M_v())); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: _M_key_equals_tr(const _Kt& __k, 234s 1949: const _Hash_node_value<_Value, 234s 1949: __hash_cached::value>& __n) const 234s 1949: { 234s 1949: static_assert( 234s 1949: __is_invocable{}, 234s 1949: "key equality predicate must be invocable with the argument type " 234s 1949: "and the key type"); 234s 1949: return _M_eq()(__k, _ExtractKey{}(__n._M_v())); 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: bool 234s 1949: _M_equals(const _Key& __k, __hash_code __c, 234s 1949: const _Hash_node_value<_Value, __hash_cached::value>& __n) const 234s 1949: { 234s 1949: if constexpr (__hash_cached::value) 234s 1949: if (__c != __n._M_hash_code) 234s 1949: return false; 234s 1949: 234s 1949: return _M_key_equals(__k, __n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: _M_equals_tr(const _Kt& __k, __hash_code __c, 234s 1949: const _Hash_node_value<_Value, 234s 1949: __hash_cached::value>& __n) const 234s 1949: { 234s 1949: if constexpr (__hash_cached::value) 234s 1949: if (__c != __n._M_hash_code) 234s 1949: return false; 234s 1949: 234s 1949: return _M_key_equals_tr(__k, __n); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: _M_node_equals( 234s 1949: const _Hash_node_value<_Value, __hash_cached::value>& __lhn, 234s 1949: const _Hash_node_value<_Value, __hash_cached::value>& __rhn) const 234s 1949: { 234s 1949: if constexpr (__hash_cached::value) 234s 1949: if (__lhn._M_hash_code != __rhn._M_hash_code) 234s 1949: return false; 234s 1949: 234s 1949: return _M_key_equals(_ExtractKey{}(__lhn._M_v()), __rhn); 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: const _Equal& 234s 1949: _M_eq() const noexcept { return _M_equal._M_obj; } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Hashtable_alloc 234s 1949: { 234s 1949: private: 234s 1949: [[__no_unique_address__]] _Hashtable_ebo_helper<_NodeAlloc> _M_alloc{}; 234s 1949: 234s 1949: template 234s 1949: struct __get_value_type; 234s 1949: template 234s 1949: struct __get_value_type<_Hash_node<_Val, _Cache_hash_code>> 234s 1949: { using type = _Val; }; 234s 1949: 234s 1949: public: 234s 1949: using __node_type = typename _NodeAlloc::value_type; 234s 1949: using __node_alloc_type = _NodeAlloc; 234s 1949: 234s 1949: using __node_alloc_traits = __gnu_cxx::__alloc_traits<__node_alloc_type>; 234s 1949: 234s 1949: using __value_alloc_traits = typename __node_alloc_traits::template 234s 1949: rebind_traits::type>; 234s 1949: 234s 1949: using __node_ptr = __node_type*; 234s 1949: using __node_base = _Hash_node_base; 234s 1949: using __node_base_ptr = __node_base*; 234s 1949: using __buckets_alloc_type = 234s 1949: __alloc_rebind<__node_alloc_type, __node_base_ptr>; 234s 1949: using __buckets_alloc_traits = std::allocator_traits<__buckets_alloc_type>; 234s 1949: using __buckets_ptr = __node_base_ptr*; 234s 1949: 234s 1949: _Hashtable_alloc() = default; 234s 1949: _Hashtable_alloc(const _Hashtable_alloc&) = default; 234s 1949: _Hashtable_alloc(_Hashtable_alloc&&) = default; 234s 1949: 234s 1949: template 234s 1949: _Hashtable_alloc(_Alloc&& __a) 234s 1949: : _M_alloc{std::forward<_Alloc>(__a)} 234s 1949: { } 234s 1949: 234s 1949: __node_alloc_type& 234s 1949: _M_node_allocator() 234s 1949: { return _M_alloc._M_obj; } 234s 1949: 234s 1949: const __node_alloc_type& 234s 1949: _M_node_allocator() const 234s 1949: { return _M_alloc._M_obj; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: __node_ptr 234s 1949: _M_allocate_node(_Args&&... __args); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_deallocate_node(__node_ptr __n); 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_deallocate_node_ptr(__node_ptr __n); 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_deallocate_nodes(__node_ptr __n); 234s 1949: 234s 1949: __buckets_ptr 234s 1949: _M_allocate_buckets(size_t __bkt_count); 234s 1949: 234s 1949: void 234s 1949: _M_deallocate_buckets(__buckets_ptr, size_t __bkt_count); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&... __args) 234s 1949: -> __node_ptr 234s 1949: { 234s 1949: auto& __alloc = _M_node_allocator(); 234s 1949: auto __nptr = __node_alloc_traits::allocate(__alloc, 1); 234s 1949: __node_ptr __n = std::__to_address(__nptr); 234s 1949: try 234s 1949: { 234s 1949: ::new ((void*)__n) __node_type; 234s 1949: __node_alloc_traits::construct(__alloc, __n->_M_valptr(), 234s 1949: std::forward<_Args>(__args)...); 234s 1949: return __n; 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: __n->~__node_type(); 234s 1949: __node_alloc_traits::deallocate(__alloc, __nptr, 1); 234s 1949: throw; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_ptr __n) 234s 1949: { 234s 1949: __node_alloc_traits::destroy(_M_node_allocator(), __n->_M_valptr()); 234s 1949: _M_deallocate_node_ptr(__n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node_ptr(__node_ptr __n) 234s 1949: { 234s 1949: using _Ptr = typename __node_alloc_traits::pointer; 234s 1949: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__n); 234s 1949: __n->~__node_type(); 234s 1949: __node_alloc_traits::deallocate(_M_node_allocator(), __ptr, 1); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_nodes(__node_ptr __n) 234s 1949: { 234s 1949: while (__n) 234s 1949: { 234s 1949: __node_ptr __tmp = __n; 234s 1949: __n = __n->_M_next(); 234s 1949: _M_deallocate_node(__tmp); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable_alloc<_NodeAlloc>::_M_allocate_buckets(size_t __bkt_count) 234s 1949: -> __buckets_ptr 234s 1949: { 234s 1949: __buckets_alloc_type __alloc(_M_node_allocator()); 234s 1949: 234s 1949: auto __ptr = __buckets_alloc_traits::allocate(__alloc, __bkt_count); 234s 1949: __buckets_ptr __p = std::__to_address(__ptr); 234s 1949: __builtin_memset(__p, 0, __bkt_count * sizeof(__node_base_ptr)); 234s 1949: return __p; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable_alloc<_NodeAlloc>:: 234s 1949: _M_deallocate_buckets(__buckets_ptr __bkts, size_t __bkt_count) 234s 1949: { 234s 1949: using _Ptr = typename __buckets_alloc_traits::pointer; 234s 1949: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__bkts); 234s 1949: __buckets_alloc_type __alloc(_M_node_allocator()); 234s 1949: __buckets_alloc_traits::deallocate(__alloc, __ptr, __bkt_count); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 38 "/usr/include/c++/15/bits/hashtable.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/enable_special_members.h" 1 3 4 234s 1949: # 39 "/usr/include/c++/15/bits/enable_special_members.h" 3 4 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct _Enable_default_constructor_tag 234s 1949: { 234s 1949: explicit constexpr _Enable_default_constructor_tag() = default; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Enable_default_constructor 234s 1949: { 234s 1949: constexpr _Enable_default_constructor() noexcept = default; 234s 1949: constexpr _Enable_default_constructor(_Enable_default_constructor const&) 234s 1949: noexcept = default; 234s 1949: constexpr _Enable_default_constructor(_Enable_default_constructor&&) 234s 1949: noexcept = default; 234s 1949: _Enable_default_constructor& 234s 1949: operator=(_Enable_default_constructor const&) noexcept = default; 234s 1949: _Enable_default_constructor& 234s 1949: operator=(_Enable_default_constructor&&) noexcept = default; 234s 1949: 234s 1949: 234s 1949: constexpr explicit 234s 1949: _Enable_default_constructor(_Enable_default_constructor_tag) { } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Enable_destructor { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move { }; 234s 1949: # 98 "/usr/include/c++/15/bits/enable_special_members.h" 3 4 234s 1949: template 234s 1949: struct _Enable_special_members 234s 1949: : private _Enable_default_constructor<_Default, _Tag>, 234s 1949: private _Enable_destructor<_Destructor, _Tag>, 234s 1949: private _Enable_copy_move<_Copy, _CopyAssignment, 234s 1949: _Move, _MoveAssignment, 234s 1949: _Tag> 234s 1949: { }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: struct _Enable_default_constructor 234s 1949: { 234s 1949: constexpr _Enable_default_constructor() noexcept = delete; 234s 1949: constexpr _Enable_default_constructor(_Enable_default_constructor const&) 234s 1949: noexcept = default; 234s 1949: constexpr _Enable_default_constructor(_Enable_default_constructor&&) 234s 1949: noexcept = default; 234s 1949: _Enable_default_constructor& 234s 1949: operator=(_Enable_default_constructor const&) noexcept = default; 234s 1949: _Enable_default_constructor& 234s 1949: operator=(_Enable_default_constructor&&) noexcept = default; 234s 1949: 234s 1949: 234s 1949: constexpr explicit 234s 1949: _Enable_default_constructor(_Enable_default_constructor_tag) { } 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_destructor 234s 1949: { ~_Enable_destructor() noexcept = delete; }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = default; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = default; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = default; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = default; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = default; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = default; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = default; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = delete; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = delete; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = delete; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = delete; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = delete; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = default; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = delete; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = delete; 234s 1949: }; 234s 1949: 234s 1949: template 234s 1949: struct _Enable_copy_move 234s 1949: { 234s 1949: constexpr _Enable_copy_move() noexcept = default; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 234s 1949: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move const&) noexcept = delete; 234s 1949: _Enable_copy_move& 234s 1949: operator=(_Enable_copy_move&&) noexcept = delete; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: # 39 "/usr/include/c++/15/bits/hashtable.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++11-extensions" 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __cache_default 234s 1949: = __not_<__and_< 234s 1949: __is_fast_hash<_Hash>, 234s 1949: 234s 1949: __is_nothrow_invocable>>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using _Hashtable_enable_default_ctor 234s 1949: = _Enable_default_constructor<__and_, 234s 1949: is_default_constructible<_Hash>, 234s 1949: is_default_constructible<_Allocator>>{}, 234s 1949: __detail::_Hash_node_base>; 234s 1949: # 185 "/usr/include/c++/15/bits/hashtable.h" 3 4 234s 1949: template 234s 1949: class _Hashtable 234s 1949: : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _Traits>, 234s 1949: public __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, 234s 1949: _RehashPolicy, _Traits>, 234s 1949: public __detail::_Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, 234s 1949: _RehashPolicy, _Traits>, 234s 1949: private __detail::_Hashtable_alloc< 234s 1949: __alloc_rebind<_Alloc, 234s 1949: __detail::_Hash_node<_Value, 234s 1949: _Traits::__hash_cached::value>>>, 234s 1949: private _Hashtable_enable_default_ctor<_Equal, _Hash, _Alloc> 234s 1949: { 234s 1949: static_assert(is_same::type, _Value>::value, 234s 1949: "unordered container must have a non-const, non-volatile value_type"); 234s 1949: 234s 1949: static_assert(is_same{}, 234s 1949: "unordered container must have the same value_type as its allocator"); 234s 1949: 234s 1949: static_assert(is_copy_constructible<_Hash>::value, 234s 1949: "hash function must be copy constructible"); 234s 1949: 234s 1949: using __traits_type = _Traits; 234s 1949: using __hash_cached = typename __traits_type::__hash_cached; 234s 1949: using __constant_iterators = typename __traits_type::__constant_iterators; 234s 1949: using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>; 234s 1949: using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; 234s 1949: 234s 1949: using __hashtable_alloc = __detail::_Hashtable_alloc<__node_alloc_type>; 234s 1949: 234s 1949: using __node_value_type = 234s 1949: __detail::_Hash_node_value<_Value, __hash_cached::value>; 234s 1949: using __node_ptr = typename __hashtable_alloc::__node_ptr; 234s 1949: using __value_alloc_traits = 234s 1949: typename __hashtable_alloc::__value_alloc_traits; 234s 1949: using __node_alloc_traits = 234s 1949: typename __hashtable_alloc::__node_alloc_traits; 234s 1949: using __node_base = typename __hashtable_alloc::__node_base; 234s 1949: using __node_base_ptr = typename __hashtable_alloc::__node_base_ptr; 234s 1949: using __buckets_ptr = typename __hashtable_alloc::__buckets_ptr; 234s 1949: 234s 1949: using __enable_default_ctor 234s 1949: = _Hashtable_enable_default_ctor<_Equal, _Hash, _Alloc>; 234s 1949: using __rehash_guard_t 234s 1949: = __detail::_RehashStateGuard<_RehashPolicy>; 234s 1949: 234s 1949: public: 234s 1949: typedef _Key key_type; 234s 1949: typedef _Value value_type; 234s 1949: typedef _Alloc allocator_type; 234s 1949: typedef _Equal key_equal; 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename __value_alloc_traits::pointer pointer; 234s 1949: typedef typename __value_alloc_traits::const_pointer const_pointer; 234s 1949: typedef value_type& reference; 234s 1949: typedef const value_type& const_reference; 234s 1949: 234s 1949: using iterator 234s 1949: = __detail::_Node_iterator<_Value, __constant_iterators::value, 234s 1949: __hash_cached::value>; 234s 1949: 234s 1949: using const_iterator 234s 1949: = __detail::_Node_const_iterator<_Value, __constant_iterators::value, 234s 1949: __hash_cached::value>; 234s 1949: 234s 1949: using local_iterator = __detail::_Local_iterator; 234s 1949: 234s 1949: using const_local_iterator = __detail::_Local_const_iterator< 234s 1949: key_type, _Value, 234s 1949: _ExtractKey, _Hash, _RangeHash, _Unused, 234s 1949: __constant_iterators::value, __hash_cached::value>; 234s 1949: 234s 1949: private: 234s 1949: using __rehash_type = _RehashPolicy; 234s 1949: 234s 1949: using __unique_keys = typename __traits_type::__unique_keys; 234s 1949: 234s 1949: using __hashtable_base = __detail:: 234s 1949: _Hashtable_base<_Key, _Value, _ExtractKey, 234s 1949: _Equal, _Hash, _RangeHash, _Unused, _Traits>; 234s 1949: 234s 1949: using __hash_code_base = typename __hashtable_base::__hash_code_base; 234s 1949: using __hash_code = typename __hashtable_base::__hash_code; 234s 1949: using __ireturn_type = __conditional_t<__unique_keys::value, 234s 1949: std::pair, 234s 1949: iterator>; 234s 1949: 234s 1949: using __map_base = __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, 234s 1949: _Equal, _Hash, _RangeHash, _Unused, 234s 1949: _RehashPolicy, _Traits>; 234s 1949: 234s 1949: using __rehash_base = __detail::_Rehash_base<_Key, _Value, _Alloc, 234s 1949: _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, 234s 1949: _RehashPolicy, _Traits>; 234s 1949: 234s 1949: using __node_builder_t = __detail::_NodeBuilder<_ExtractKey>; 234s 1949: 234s 1949: 234s 1949: struct _Scoped_node 234s 1949: { 234s 1949: 234s 1949: _Scoped_node(__node_ptr __n, __hashtable_alloc* __h) 234s 1949: : _M_h(__h), _M_node(__n) { } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _Scoped_node(__hashtable_alloc* __h, _Args&&... __args) 234s 1949: : _M_h(__h), 234s 1949: _M_node(__h->_M_allocate_node(std::forward<_Args>(__args)...)) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: ~_Scoped_node() { if (_M_node) _M_h->_M_deallocate_node(_M_node); }; 234s 1949: 234s 1949: _Scoped_node(const _Scoped_node&) = delete; 234s 1949: _Scoped_node& operator=(const _Scoped_node&) = delete; 234s 1949: 234s 1949: __hashtable_alloc* _M_h; 234s 1949: __node_ptr _M_node; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __hash_code_base_access : __hash_code_base 234s 1949: { using __hash_code_base::_M_bucket_index; }; 234s 1949: 234s 1949: 234s 1949: static_assert(is_nothrow_default_constructible<_RangeHash>::value, 234s 1949: "Functor used to map hash code to bucket index" 234s 1949: " must be nothrow default constructible"); 234s 1949: static_assert(noexcept( 234s 1949: std::declval()((std::size_t)0, (std::size_t)0)), 234s 1949: "Functor used to map hash code to bucket index must be" 234s 1949: " noexcept"); 234s 1949: 234s 1949: 234s 1949: static_assert(is_nothrow_default_constructible<_ExtractKey>::value, 234s 1949: "_ExtractKey must be nothrow default constructible"); 234s 1949: static_assert(noexcept( 234s 1949: std::declval()(std::declval<_Value>())), 234s 1949: "_ExtractKey functor must be noexcept invocable"); 234s 1949: 234s 1949: template 234s 1949: friend struct __detail::_Map_base; 234s 1949: 234s 1949: public: 234s 1949: using size_type = typename __hashtable_base::size_type; 234s 1949: using difference_type = typename __hashtable_base::difference_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: private: 234s 1949: __buckets_ptr _M_buckets = &_M_single_bucket; 234s 1949: size_type _M_bucket_count = 1; 234s 1949: __node_base _M_before_begin; 234s 1949: size_type _M_element_count = 0; 234s 1949: _RehashPolicy _M_rehash_policy; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __node_base_ptr _M_single_bucket = nullptr; 234s 1949: 234s 1949: void 234s 1949: _M_update_bbegin() 234s 1949: { 234s 1949: if (auto __begin = _M_begin()) 234s 1949: _M_buckets[_M_bucket_index(*__begin)] = &_M_before_begin; 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_update_bbegin(__node_ptr __n) 234s 1949: { 234s 1949: _M_before_begin._M_nxt = __n; 234s 1949: _M_update_bbegin(); 234s 1949: } 234s 1949: 234s 1949: bool 234s 1949: _M_uses_single_bucket(__buckets_ptr __bkts) const 234s 1949: { return __builtin_expect(__bkts == &_M_single_bucket, false); } 234s 1949: 234s 1949: bool 234s 1949: _M_uses_single_bucket() const 234s 1949: { return _M_uses_single_bucket(_M_buckets); } 234s 1949: 234s 1949: static constexpr size_t 234s 1949: __small_size_threshold() noexcept 234s 1949: { 234s 1949: return 234s 1949: __detail::_Hashtable_hash_traits<_Hash>::__small_size_threshold(); 234s 1949: } 234s 1949: 234s 1949: __hashtable_alloc& 234s 1949: _M_base_alloc() { return *this; } 234s 1949: 234s 1949: __buckets_ptr 234s 1949: _M_allocate_buckets(size_type __bkt_count) 234s 1949: { 234s 1949: if (__builtin_expect(__bkt_count == 1, false)) 234s 1949: { 234s 1949: _M_single_bucket = nullptr; 234s 1949: return &_M_single_bucket; 234s 1949: } 234s 1949: 234s 1949: return __hashtable_alloc::_M_allocate_buckets(__bkt_count); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_deallocate_buckets(__buckets_ptr __bkts, size_type __bkt_count) 234s 1949: { 234s 1949: if (_M_uses_single_bucket(__bkts)) 234s 1949: return; 234s 1949: 234s 1949: __hashtable_alloc::_M_deallocate_buckets(__bkts, __bkt_count); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_deallocate_buckets() 234s 1949: { _M_deallocate_buckets(_M_buckets, _M_bucket_count); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: __node_ptr 234s 1949: _M_bucket_begin(size_type __bkt) const 234s 1949: { 234s 1949: __node_base_ptr __n = _M_buckets[__bkt]; 234s 1949: return __n ? static_cast<__node_ptr>(__n->_M_nxt) : nullptr; 234s 1949: } 234s 1949: 234s 1949: __node_ptr 234s 1949: _M_begin() const 234s 1949: { return static_cast<__node_ptr>(_M_before_begin._M_nxt); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _M_assign_elements(_Ht&&); 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _M_assign(_Ht&& __ht) 234s 1949: { 234s 1949: __detail::_AllocNode<__node_alloc_type> __alloc_node_gen(*this); 234s 1949: _M_assign(std::forward<_Ht>(__ht), __alloc_node_gen); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _M_assign(_Ht&&, _NodeGenerator&); 234s 1949: 234s 1949: void 234s 1949: _M_move_assign(_Hashtable&&, true_type); 234s 1949: 234s 1949: void 234s 1949: _M_move_assign(_Hashtable&&, false_type); 234s 1949: 234s 1949: void 234s 1949: _M_reset() noexcept; 234s 1949: 234s 1949: _Hashtable(const _Hash& __h, const _Equal& __eq, 234s 1949: const allocator_type& __a) 234s 1949: : __hashtable_base(__h, __eq), 234s 1949: __hashtable_alloc(__node_alloc_type(__a)), 234s 1949: __enable_default_ctor(_Enable_default_constructor_tag{}) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: static constexpr bool 234s 1949: _S_nothrow_move() 234s 1949: { 234s 1949: 234s 1949: return __and_<__bool_constant<_No_realloc>, 234s 1949: is_nothrow_copy_constructible<_Hash>, 234s 1949: is_nothrow_copy_constructible<_Equal>>::value; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, 234s 1949: true_type ) 234s 1949: noexcept(_S_nothrow_move()); 234s 1949: 234s 1949: _Hashtable(_Hashtable&&, __node_alloc_type&&, 234s 1949: false_type ); 234s 1949: 234s 1949: template 234s 1949: _Hashtable(_InputIterator __first, _InputIterator __last, 234s 1949: size_type __bkt_count_hint, 234s 1949: const _Hash&, const _Equal&, const allocator_type&, 234s 1949: true_type __uks); 234s 1949: 234s 1949: template 234s 1949: _Hashtable(_InputIterator __first, _InputIterator __last, 234s 1949: size_type __bkt_count_hint, 234s 1949: const _Hash&, const _Equal&, const allocator_type&, 234s 1949: false_type __uks); 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: _Hashtable() = default; 234s 1949: 234s 1949: _Hashtable(const _Hashtable&); 234s 1949: 234s 1949: _Hashtable(const _Hashtable&, const allocator_type&); 234s 1949: 234s 1949: explicit 234s 1949: _Hashtable(size_type __bkt_count_hint, 234s 1949: const _Hash& __hf = _Hash(), 234s 1949: const key_equal& __eql = key_equal(), 234s 1949: const allocator_type& __a = allocator_type()); 234s 1949: 234s 1949: 234s 1949: _Hashtable(_Hashtable&& __ht) 234s 1949: noexcept(_S_nothrow_move()) 234s 1949: : _Hashtable(std::move(__ht), std::move(__ht._M_node_allocator()), 234s 1949: true_type{}) 234s 1949: { } 234s 1949: 234s 1949: _Hashtable(_Hashtable&& __ht, const allocator_type& __a) 234s 1949: noexcept(_S_nothrow_move<__node_alloc_traits::_S_always_equal()>()) 234s 1949: : _Hashtable(std::move(__ht), __node_alloc_type(__a), 234s 1949: typename __node_alloc_traits::is_always_equal{}) 234s 1949: { } 234s 1949: 234s 1949: explicit 234s 1949: _Hashtable(const allocator_type& __a) 234s 1949: : __hashtable_alloc(__node_alloc_type(__a)), 234s 1949: __enable_default_ctor(_Enable_default_constructor_tag{}) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: _Hashtable(_InputIterator __f, _InputIterator __l, 234s 1949: size_type __bkt_count_hint = 0, 234s 1949: const _Hash& __hf = _Hash(), 234s 1949: const key_equal& __eql = key_equal(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _Hashtable(__f, __l, __bkt_count_hint, __hf, __eql, __a, 234s 1949: __unique_keys{}) 234s 1949: { } 234s 1949: 234s 1949: _Hashtable(initializer_list __l, 234s 1949: size_type __bkt_count_hint = 0, 234s 1949: const _Hash& __hf = _Hash(), 234s 1949: const key_equal& __eql = key_equal(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _Hashtable(__l.begin(), __l.end(), __bkt_count_hint, 234s 1949: __hf, __eql, __a, __unique_keys{}) 234s 1949: { } 234s 1949: 234s 1949: _Hashtable& 234s 1949: operator=(const _Hashtable& __ht); 234s 1949: 234s 1949: _Hashtable& 234s 1949: operator=(_Hashtable&& __ht) 234s 1949: noexcept(__node_alloc_traits::_S_nothrow_move() 234s 1949: && is_nothrow_move_assignable<_Hash>::value 234s 1949: && is_nothrow_move_assignable<_Equal>::value) 234s 1949: { 234s 1949: constexpr bool __move_storage = 234s 1949: __node_alloc_traits::_S_propagate_on_move_assign() 234s 1949: || __node_alloc_traits::_S_always_equal(); 234s 1949: _M_move_assign(std::move(__ht), __bool_constant<__move_storage>()); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: _Hashtable& 234s 1949: operator=(initializer_list __l) 234s 1949: { 234s 1949: using __reuse_or_alloc_node_gen_t = 234s 1949: __detail::_ReuseOrAllocNode<__node_alloc_type>; 234s 1949: 234s 1949: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this); 234s 1949: _M_before_begin._M_nxt = nullptr; 234s 1949: clear(); 234s 1949: 234s 1949: 234s 1949: auto __l_bkt_count = _M_rehash_policy._M_bkt_for_elements(__l.size()); 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (_M_bucket_count < __l_bkt_count) 234s 1949: rehash(__l_bkt_count); 234s 1949: 234s 1949: __hash_code __code; 234s 1949: size_type __bkt; 234s 1949: for (auto& __e : __l) 234s 1949: { 234s 1949: const key_type& __k = _ExtractKey{}(__e); 234s 1949: 234s 1949: if constexpr (__unique_keys::value) 234s 1949: { 234s 1949: if (auto __loc = _M_locate(__k)) 234s 1949: continue; 234s 1949: else 234s 1949: { 234s 1949: __code = __loc._M_hash_code; 234s 1949: __bkt = __loc._M_bucket_index; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __code = this->_M_hash_code(__k); 234s 1949: __bkt = _M_bucket_index(__code); 234s 1949: } 234s 1949: 234s 1949: _M_insert_unique_node(__bkt, __code, __roan(__e)); 234s 1949: } 234s 1949: 234s 1949: return *this; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: ~_Hashtable() noexcept; 234s 1949: 234s 1949: void 234s 1949: swap(_Hashtable&) 234s 1949: noexcept(__and_<__is_nothrow_swappable<_Hash>, 234s 1949: __is_nothrow_swappable<_Equal>>::value); 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: begin() noexcept 234s 1949: { return iterator(_M_begin()); } 234s 1949: 234s 1949: const_iterator 234s 1949: begin() const noexcept 234s 1949: { return const_iterator(_M_begin()); } 234s 1949: 234s 1949: iterator 234s 1949: end() noexcept 234s 1949: { return iterator(nullptr); } 234s 1949: 234s 1949: const_iterator 234s 1949: end() const noexcept 234s 1949: { return const_iterator(nullptr); } 234s 1949: 234s 1949: const_iterator 234s 1949: cbegin() const noexcept 234s 1949: { return const_iterator(_M_begin()); } 234s 1949: 234s 1949: const_iterator 234s 1949: cend() const noexcept 234s 1949: { return const_iterator(nullptr); } 234s 1949: 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { return _M_element_count; } 234s 1949: 234s 1949: [[__nodiscard__]] bool 234s 1949: empty() const noexcept 234s 1949: { return size() == 0; } 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return allocator_type(this->_M_node_allocator()); } 234s 1949: 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { return __node_alloc_traits::max_size(this->_M_node_allocator()); } 234s 1949: 234s 1949: 234s 1949: key_equal 234s 1949: key_eq() const 234s 1949: { return this->_M_eq(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: bucket_count() const noexcept 234s 1949: { return _M_bucket_count; } 234s 1949: 234s 1949: size_type 234s 1949: max_bucket_count() const noexcept 234s 1949: { return max_size(); } 234s 1949: 234s 1949: size_type 234s 1949: bucket_size(size_type __bkt) const 234s 1949: { return std::distance(begin(__bkt), end(__bkt)); } 234s 1949: 234s 1949: size_type 234s 1949: bucket(const key_type& __k) const 234s 1949: { return _M_bucket_index(this->_M_hash_code(__k)); } 234s 1949: 234s 1949: local_iterator 234s 1949: begin(size_type __bkt) 234s 1949: { 234s 1949: return local_iterator(*this, _M_bucket_begin(__bkt), 234s 1949: __bkt, _M_bucket_count); 234s 1949: } 234s 1949: 234s 1949: local_iterator 234s 1949: end(size_type __bkt) 234s 1949: { return local_iterator(*this, nullptr, __bkt, _M_bucket_count); } 234s 1949: 234s 1949: const_local_iterator 234s 1949: begin(size_type __bkt) const 234s 1949: { 234s 1949: return const_local_iterator(*this, _M_bucket_begin(__bkt), 234s 1949: __bkt, _M_bucket_count); 234s 1949: } 234s 1949: 234s 1949: const_local_iterator 234s 1949: end(size_type __bkt) const 234s 1949: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); } 234s 1949: 234s 1949: 234s 1949: const_local_iterator 234s 1949: cbegin(size_type __bkt) const 234s 1949: { 234s 1949: return const_local_iterator(*this, _M_bucket_begin(__bkt), 234s 1949: __bkt, _M_bucket_count); 234s 1949: } 234s 1949: 234s 1949: const_local_iterator 234s 1949: cend(size_type __bkt) const 234s 1949: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); } 234s 1949: 234s 1949: float 234s 1949: load_factor() const noexcept 234s 1949: { 234s 1949: return static_cast(size()) / static_cast(bucket_count()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const _RehashPolicy& 234s 1949: __rehash_policy() const 234s 1949: { return _M_rehash_policy; } 234s 1949: 234s 1949: void 234s 1949: __rehash_policy(const _RehashPolicy& __pol) 234s 1949: { _M_rehash_policy = __pol; } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: find(const key_type& __k); 234s 1949: 234s 1949: const_iterator 234s 1949: find(const key_type& __k) const; 234s 1949: 234s 1949: size_type 234s 1949: count(const key_type& __k) const; 234s 1949: 234s 1949: std::pair 234s 1949: equal_range(const key_type& __k); 234s 1949: 234s 1949: std::pair 234s 1949: equal_range(const key_type& __k) const; 234s 1949: # 801 "/usr/include/c++/15/bits/hashtable.h" 3 4 234s 1949: void _M_rehash_insert(size_type __n); 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: size_type 234s 1949: _M_bucket_index(const __node_value_type& __n) const noexcept 234s 1949: { return __hash_code_base::_M_bucket_index(__n, _M_bucket_count); } 234s 1949: 234s 1949: size_type 234s 1949: _M_bucket_index(__hash_code __c) const 234s 1949: { return __hash_code_base::_M_bucket_index(__c, _M_bucket_count); } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: 234s 1949: 234s 1949: 234s 1949: __hash_code 234s 1949: _M_hash_code_ext(const __node_value_type& __from) const 234s 1949: { 234s 1949: if constexpr (__and_<__hash_cached, is_empty<_Hash>>::value) 234s 1949: return __from._M_hash_code; 234s 1949: else 234s 1949: return this->_M_hash_code(_ExtractKey{}(__from._M_v())); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: _M_bucket_index_ext(const __node_value_type& __from) const 234s 1949: { return _RangeHash{}(_M_hash_code_ext(__from), _M_bucket_count); } 234s 1949: 234s 1949: void 234s 1949: _M_copy_code(__node_value_type& __to, 234s 1949: const __node_value_type& __from) const 234s 1949: { 234s 1949: if constexpr (__hash_cached::value) 234s 1949: __to._M_hash_code = _M_hash_code_ext(__from); 234s 1949: } 234s 1949: 234s 1949: void 234s 1949: _M_store_code(__node_value_type& __to, __hash_code __code) const 234s 1949: { 234s 1949: if constexpr (__hash_cached::value) 234s 1949: __to._M_hash_code = __code; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __node_base_ptr 234s 1949: _M_find_before_node(size_type, const key_type&, __hash_code) const; 234s 1949: 234s 1949: template 234s 1949: __node_base_ptr 234s 1949: _M_find_before_node_tr(size_type, const _Kt&, __hash_code) const; 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct __location_type 234s 1949: { 234s 1949: 234s 1949: explicit operator bool() const noexcept 234s 1949: { return static_cast(_M_before); } 234s 1949: 234s 1949: 234s 1949: explicit operator iterator() const noexcept 234s 1949: { return iterator(_M_node()); } 234s 1949: 234s 1949: 234s 1949: explicit operator const_iterator() const noexcept 234s 1949: { return const_iterator(_M_node()); } 234s 1949: 234s 1949: 234s 1949: __node_ptr _M_node() const 234s 1949: { 234s 1949: if (_M_before) 234s 1949: return static_cast<__node_ptr>(_M_before->_M_nxt); 234s 1949: return __node_ptr(); 234s 1949: } 234s 1949: 234s 1949: __node_base_ptr _M_before{}; 234s 1949: __hash_code _M_hash_code{}; 234s 1949: size_type _M_bucket_index = size_type(-1); 234s 1949: }; 234s 1949: # 902 "/usr/include/c++/15/bits/hashtable.h" 3 4 234s 1949: __location_type 234s 1949: _M_locate(const key_type& __k) const; 234s 1949: 234s 1949: __node_ptr 234s 1949: _M_find_node(size_type __bkt, const key_type& __key, 234s 1949: __hash_code __c) const 234s 1949: { 234s 1949: if (__node_base_ptr __before_n = _M_find_before_node(__bkt, __key, __c)) 234s 1949: return static_cast<__node_ptr>(__before_n->_M_nxt); 234s 1949: return nullptr; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: __node_ptr 234s 1949: _M_find_node_tr(size_type __bkt, const _Kt& __key, 234s 1949: __hash_code __c) const 234s 1949: { 234s 1949: if (auto __before_n = _M_find_before_node_tr(__bkt, __key, __c)) 234s 1949: return static_cast<__node_ptr>(__before_n->_M_nxt); 234s 1949: return nullptr; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_insert_bucket_begin(size_type __bkt, __node_ptr __node) 234s 1949: { 234s 1949: if (_M_buckets[__bkt]) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: __node->_M_nxt = _M_buckets[__bkt]->_M_nxt; 234s 1949: _M_buckets[__bkt]->_M_nxt = __node; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: __node->_M_nxt = _M_before_begin._M_nxt; 234s 1949: _M_before_begin._M_nxt = __node; 234s 1949: 234s 1949: if (__node->_M_nxt) 234s 1949: 234s 1949: 234s 1949: _M_buckets[_M_bucket_index(*__node->_M_next())] = __node; 234s 1949: 234s 1949: _M_buckets[__bkt] = &_M_before_begin; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void 234s 1949: _M_remove_bucket_begin(size_type __bkt, __node_ptr __next_n, 234s 1949: size_type __next_bkt) 234s 1949: { 234s 1949: if (!__next_n) 234s 1949: _M_buckets[__bkt] = nullptr; 234s 1949: else if (__next_bkt != __bkt) 234s 1949: { 234s 1949: _M_buckets[__next_bkt] = _M_buckets[__bkt]; 234s 1949: _M_buckets[__bkt] = nullptr; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: __node_base_ptr 234s 1949: _M_get_previous_node(size_type __bkt, __node_ptr __n); 234s 1949: 234s 1949: pair<__node_ptr, __hash_code> 234s 1949: _M_compute_hash_code(__node_ptr __hint, const key_type& __k) const; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: _M_insert_unique_node(size_type __bkt, __hash_code, 234s 1949: __node_ptr __n, size_type __n_elt = 1); 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: _M_insert_multi_node(__node_ptr __hint, 234s 1949: __hash_code __code, __node_ptr __n); 234s 1949: 234s 1949: template 234s 1949: std::pair 234s 1949: _M_emplace_uniq(_Args&&... __args); 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++14-extensions" 234s 1949: template, 234s 1949: typename = _ExtractKey> 234s 1949: static constexpr bool __is_key_type = false; 234s 1949: 234s 1949: template 234s 1949: static constexpr bool 234s 1949: __is_key_type<_Arg, key_type, __detail::_Identity> = true; 234s 1949: 234s 1949: template 234s 1949: static constexpr bool 234s 1949: __is_key_type<_Arg, pair<_Arg1, _Arg2>, __detail::_Select1st> 234s 1949: = is_same<__remove_cvref_t<_Arg1>, key_type>::value; 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: _M_emplace_multi(const_iterator, _Args&&... __args); 234s 1949: 234s 1949: iterator 234s 1949: _M_erase(size_type __bkt, __node_base_ptr __prev_n, __node_ptr __n); 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _M_insert_range_multi(_InputIterator __first, _InputIterator __last); 234s 1949: 234s 1949: public: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: 234s 1949: template 234s 1949: __ireturn_type 234s 1949: emplace(_Args&&... __args) 234s 1949: { 234s 1949: if constexpr (__unique_keys::value) 234s 1949: return _M_emplace_uniq(std::forward<_Args>(__args)...); 234s 1949: else 234s 1949: return _M_emplace_multi(cend(), std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: iterator 234s 1949: emplace_hint(const_iterator __hint, _Args&&... __args) 234s 1949: { 234s 1949: if constexpr (__unique_keys::value) 234s 1949: return _M_emplace_uniq(std::forward<_Args>(__args)...).first; 234s 1949: else 234s 1949: return _M_emplace_multi(__hint, std::forward<_Args>(__args)...); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: __ireturn_type 234s 1949: insert(const value_type& __v) 234s 1949: { 234s 1949: if constexpr (__unique_keys::value) 234s 1949: return _M_emplace_uniq(__v); 234s 1949: else 234s 1949: return _M_emplace_multi(cend(), __v); 234s 1949: } 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __hint, const value_type& __v) 234s 1949: { 234s 1949: if constexpr (__unique_keys::value) 234s 1949: return _M_emplace_uniq(__v).first; 234s 1949: else 234s 1949: return _M_emplace_multi(__hint, __v); 234s 1949: } 234s 1949: 234s 1949: __ireturn_type 234s 1949: insert(value_type&& __v) 234s 1949: { 234s 1949: if constexpr (__unique_keys::value) 234s 1949: return _M_emplace_uniq(std::move(__v)); 234s 1949: else 234s 1949: return _M_emplace_multi(cend(), std::move(__v)); 234s 1949: } 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __hint, value_type&& __v) 234s 1949: { 234s 1949: if constexpr (__unique_keys::value) 234s 1949: return _M_emplace_uniq(std::move(__v)).first; 234s 1949: else 234s 1949: return _M_emplace_multi(__hint, std::move(__v)); 234s 1949: } 234s 1949: # 1108 "/usr/include/c++/15/bits/hashtable.h" 3 4 234s 1949: void 234s 1949: insert(initializer_list __l) 234s 1949: { this->insert(__l.begin(), __l.end()); } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: insert(_InputIterator __first, _InputIterator __last) 234s 1949: { 234s 1949: if constexpr (__unique_keys::value) 234s 1949: for (; __first != __last; ++__first) 234s 1949: _M_emplace_uniq(*__first); 234s 1949: else 234s 1949: return _M_insert_range_multi(__first, __last); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template>, 234s 1949: is_constructible>> 234s 1949: __ireturn_type 234s 1949: insert(_Pair&& __v) 234s 1949: { 234s 1949: if constexpr (__unique_keys::value) 234s 1949: return _M_emplace_uniq(std::forward<_Pair>(__v)); 234s 1949: else 234s 1949: return _M_emplace_multi(cend(), std::forward<_Pair>(__v)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template>, 234s 1949: is_constructible>> 234s 1949: iterator 234s 1949: insert(const_iterator __hint, _Pair&& __v) 234s 1949: { 234s 1949: if constexpr (__unique_keys::value) 234s 1949: return _M_emplace_uniq(std::forward<_Pair>(__v)); 234s 1949: else 234s 1949: return _M_emplace_multi(__hint, std::forward<_Pair>(__v)); 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: erase(const_iterator); 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: erase(iterator __it) 234s 1949: { return erase(const_iterator(__it)); } 234s 1949: 234s 1949: size_type 234s 1949: erase(const key_type& __k); 234s 1949: 234s 1949: iterator 234s 1949: erase(const_iterator, const_iterator); 234s 1949: 234s 1949: void 234s 1949: clear() noexcept; 234s 1949: 234s 1949: 234s 1949: 234s 1949: void rehash(size_type __bkt_count); 234s 1949: # 1403 "/usr/include/c++/15/bits/hashtable.h" 3 4 234s 1949: bool 234s 1949: _M_equal(const _Hashtable& __other) const; 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: void _M_rehash(size_type __bkt_count, true_type __uks); 234s 1949: 234s 1949: 234s 1949: void _M_rehash(size_type __bkt_count, false_type __uks); 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _Hashtable(size_type __bkt_count_hint, 234s 1949: const _Hash& __h, const _Equal& __eq, const allocator_type& __a) 234s 1949: : _Hashtable(__h, __eq, __a) 234s 1949: { 234s 1949: auto __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count_hint); 234s 1949: if (__bkt_count > _M_bucket_count) 234s 1949: { 234s 1949: _M_buckets = _M_allocate_buckets(__bkt_count); 234s 1949: _M_bucket_count = __bkt_count; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: inline 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _Hashtable(_InputIterator __f, _InputIterator __l, 234s 1949: size_type __bkt_count_hint, 234s 1949: const _Hash& __h, const _Equal& __eq, 234s 1949: const allocator_type& __a, true_type ) 234s 1949: : _Hashtable(__bkt_count_hint, __h, __eq, __a) 234s 1949: { this->insert(__f, __l); } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _Hashtable(_InputIterator __f, _InputIterator __l, 234s 1949: size_type __bkt_count_hint, 234s 1949: const _Hash& __h, const _Equal& __eq, 234s 1949: const allocator_type& __a, false_type __uks) 234s 1949: : _Hashtable(__h, __eq, __a) 234s 1949: { 234s 1949: auto __nb_elems = __detail::__distance_fw(__f, __l); 234s 1949: auto __bkt_count = 234s 1949: _M_rehash_policy._M_next_bkt( 234s 1949: std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems), 234s 1949: __bkt_count_hint)); 234s 1949: 234s 1949: if (__bkt_count > _M_bucket_count) 234s 1949: { 234s 1949: _M_buckets = _M_allocate_buckets(__bkt_count); 234s 1949: _M_bucket_count = __bkt_count; 234s 1949: } 234s 1949: 234s 1949: for (; __f != __l; ++__f) 234s 1949: _M_emplace_multi(cend(), *__f); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: operator=(const _Hashtable& __ht) 234s 1949: -> _Hashtable& 234s 1949: { 234s 1949: if (&__ht == this) 234s 1949: return *this; 234s 1949: 234s 1949: if (__node_alloc_traits::_S_propagate_on_copy_assign()) 234s 1949: { 234s 1949: auto& __this_alloc = this->_M_node_allocator(); 234s 1949: auto& __that_alloc = __ht._M_node_allocator(); 234s 1949: if (!__node_alloc_traits::_S_always_equal() 234s 1949: && __this_alloc != __that_alloc) 234s 1949: { 234s 1949: 234s 1949: this->_M_deallocate_nodes(_M_begin()); 234s 1949: _M_before_begin._M_nxt = nullptr; 234s 1949: _M_deallocate_buckets(); 234s 1949: _M_buckets = nullptr; 234s 1949: std::__alloc_on_copy(__this_alloc, __that_alloc); 234s 1949: __hashtable_base::operator=(__ht); 234s 1949: _M_bucket_count = __ht._M_bucket_count; 234s 1949: _M_element_count = __ht._M_element_count; 234s 1949: _M_rehash_policy = __ht._M_rehash_policy; 234s 1949: 234s 1949: struct _Guard 234s 1949: { 234s 1949: ~_Guard() { if (_M_ht) _M_ht->_M_reset(); } 234s 1949: _Hashtable* _M_ht; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: _Guard __guard{this}; 234s 1949: _M_assign(__ht); 234s 1949: __guard._M_ht = nullptr; 234s 1949: return *this; 234s 1949: } 234s 1949: std::__alloc_on_copy(__this_alloc, __that_alloc); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: _M_assign_elements(__ht); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_assign_elements(_Ht&& __ht) 234s 1949: { 234s 1949: using __reuse_or_alloc_node_gen_t = 234s 1949: __detail::_ReuseOrAllocNode<__node_alloc_type>; 234s 1949: 234s 1949: __buckets_ptr __former_buckets = nullptr; 234s 1949: std::size_t __former_bucket_count = _M_bucket_count; 234s 1949: __rehash_guard_t __rehash_guard(_M_rehash_policy); 234s 1949: 234s 1949: if (_M_bucket_count != __ht._M_bucket_count) 234s 1949: { 234s 1949: __former_buckets = _M_buckets; 234s 1949: _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); 234s 1949: _M_bucket_count = __ht._M_bucket_count; 234s 1949: } 234s 1949: else 234s 1949: std::fill_n(_M_buckets, _M_bucket_count, nullptr); 234s 1949: 234s 1949: try 234s 1949: { 234s 1949: __hashtable_base::operator=(std::forward<_Ht>(__ht)); 234s 1949: _M_element_count = __ht._M_element_count; 234s 1949: _M_rehash_policy = __ht._M_rehash_policy; 234s 1949: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this); 234s 1949: _M_before_begin._M_nxt = nullptr; 234s 1949: _M_assign(std::forward<_Ht>(__ht), __roan); 234s 1949: if (__former_buckets) 234s 1949: _M_deallocate_buckets(__former_buckets, __former_bucket_count); 234s 1949: __rehash_guard._M_guarded_obj = nullptr; 234s 1949: } 234s 1949: catch(...) 234s 1949: { 234s 1949: if (__former_buckets) 234s 1949: { 234s 1949: 234s 1949: _M_deallocate_buckets(); 234s 1949: _M_buckets = __former_buckets; 234s 1949: _M_bucket_count = __former_bucket_count; 234s 1949: } 234s 1949: std::fill_n(_M_buckets, _M_bucket_count, nullptr); 234s 1949: throw; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_assign(_Ht&& __ht, _NodeGenerator& __node_gen) 234s 1949: { 234s 1949: struct _Guard 234s 1949: { 234s 1949: ~_Guard() 234s 1949: { 234s 1949: if (_M_ht) 234s 1949: { 234s 1949: _M_ht->clear(); 234s 1949: if (_M_dealloc_buckets) 234s 1949: _M_ht->_M_deallocate_buckets(); 234s 1949: } 234s 1949: } 234s 1949: _Hashtable* _M_ht = nullptr; 234s 1949: bool _M_dealloc_buckets = false; 234s 1949: }; 234s 1949: _Guard __guard; 234s 1949: 234s 1949: if (!_M_buckets) 234s 1949: { 234s 1949: _M_buckets = _M_allocate_buckets(_M_bucket_count); 234s 1949: __guard._M_dealloc_buckets = true; 234s 1949: } 234s 1949: 234s 1949: if (!__ht._M_before_begin._M_nxt) 234s 1949: return; 234s 1949: 234s 1949: __guard._M_ht = this; 234s 1949: 234s 1949: using _FromVal = __conditional_t::value, 234s 1949: const value_type&, value_type&&>; 234s 1949: 234s 1949: 234s 1949: 234s 1949: __node_ptr __ht_n = __ht._M_begin(); 234s 1949: __node_ptr __this_n 234s 1949: = __node_gen(static_cast<_FromVal>(__ht_n->_M_v())); 234s 1949: _M_copy_code(*__this_n, *__ht_n); 234s 1949: _M_update_bbegin(__this_n); 234s 1949: 234s 1949: 234s 1949: __node_ptr __prev_n = __this_n; 234s 1949: for (__ht_n = __ht_n->_M_next(); __ht_n; __ht_n = __ht_n->_M_next()) 234s 1949: { 234s 1949: __this_n = __node_gen(static_cast<_FromVal>(__ht_n->_M_v())); 234s 1949: __prev_n->_M_nxt = __this_n; 234s 1949: _M_copy_code(*__this_n, *__ht_n); 234s 1949: size_type __bkt = _M_bucket_index(*__this_n); 234s 1949: if (!_M_buckets[__bkt]) 234s 1949: _M_buckets[__bkt] = __prev_n; 234s 1949: __prev_n = __this_n; 234s 1949: } 234s 1949: __guard._M_ht = nullptr; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_reset() noexcept 234s 1949: { 234s 1949: _M_rehash_policy._M_reset(); 234s 1949: _M_bucket_count = 1; 234s 1949: _M_single_bucket = nullptr; 234s 1949: _M_buckets = &_M_single_bucket; 234s 1949: _M_before_begin._M_nxt = nullptr; 234s 1949: _M_element_count = 0; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_move_assign(_Hashtable&& __ht, true_type) 234s 1949: { 234s 1949: if (__builtin_expect(std::__addressof(__ht) == this, false)) 234s 1949: return; 234s 1949: 234s 1949: this->_M_deallocate_nodes(_M_begin()); 234s 1949: _M_deallocate_buckets(); 234s 1949: __hashtable_base::operator=(std::move(__ht)); 234s 1949: _M_rehash_policy = __ht._M_rehash_policy; 234s 1949: if (!__ht._M_uses_single_bucket()) 234s 1949: _M_buckets = __ht._M_buckets; 234s 1949: else 234s 1949: { 234s 1949: _M_buckets = &_M_single_bucket; 234s 1949: _M_single_bucket = __ht._M_single_bucket; 234s 1949: } 234s 1949: 234s 1949: _M_bucket_count = __ht._M_bucket_count; 234s 1949: _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; 234s 1949: _M_element_count = __ht._M_element_count; 234s 1949: std::__alloc_on_move(this->_M_node_allocator(), __ht._M_node_allocator()); 234s 1949: 234s 1949: 234s 1949: _M_update_bbegin(); 234s 1949: __ht._M_reset(); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_move_assign(_Hashtable&& __ht, false_type) 234s 1949: { 234s 1949: if (__ht._M_node_allocator() == this->_M_node_allocator()) 234s 1949: _M_move_assign(std::move(__ht), true_type{}); 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: _M_assign_elements(std::move(__ht)); 234s 1949: __ht.clear(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _Hashtable(const _Hashtable& __ht) 234s 1949: : __hashtable_base(__ht), 234s 1949: __map_base(__ht), 234s 1949: __rehash_base(__ht), 234s 1949: __hashtable_alloc( 234s 1949: __node_alloc_traits::_S_select_on_copy(__ht._M_node_allocator())), 234s 1949: __enable_default_ctor(__ht), 234s 1949: _M_buckets(nullptr), 234s 1949: _M_bucket_count(__ht._M_bucket_count), 234s 1949: _M_element_count(__ht._M_element_count), 234s 1949: _M_rehash_policy(__ht._M_rehash_policy) 234s 1949: { 234s 1949: _M_assign(__ht); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, 234s 1949: true_type ) 234s 1949: noexcept(_S_nothrow_move()) 234s 1949: : __hashtable_base(__ht), 234s 1949: __map_base(__ht), 234s 1949: __rehash_base(__ht), 234s 1949: __hashtable_alloc(std::move(__a)), 234s 1949: __enable_default_ctor(__ht), 234s 1949: _M_buckets(__ht._M_buckets), 234s 1949: _M_bucket_count(__ht._M_bucket_count), 234s 1949: _M_before_begin(__ht._M_before_begin._M_nxt), 234s 1949: _M_element_count(__ht._M_element_count), 234s 1949: _M_rehash_policy(__ht._M_rehash_policy) 234s 1949: { 234s 1949: 234s 1949: if (__ht._M_uses_single_bucket()) 234s 1949: { 234s 1949: _M_buckets = &_M_single_bucket; 234s 1949: _M_single_bucket = __ht._M_single_bucket; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: _M_update_bbegin(); 234s 1949: 234s 1949: __ht._M_reset(); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _Hashtable(const _Hashtable& __ht, const allocator_type& __a) 234s 1949: : __hashtable_base(__ht), 234s 1949: __map_base(__ht), 234s 1949: __rehash_base(__ht), 234s 1949: __hashtable_alloc(__node_alloc_type(__a)), 234s 1949: __enable_default_ctor(__ht), 234s 1949: _M_buckets(), 234s 1949: _M_bucket_count(__ht._M_bucket_count), 234s 1949: _M_element_count(__ht._M_element_count), 234s 1949: _M_rehash_policy(__ht._M_rehash_policy) 234s 1949: { 234s 1949: _M_assign(__ht); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, 234s 1949: false_type ) 234s 1949: : __hashtable_base(__ht), 234s 1949: __map_base(__ht), 234s 1949: __rehash_base(__ht), 234s 1949: __hashtable_alloc(std::move(__a)), 234s 1949: __enable_default_ctor(__ht), 234s 1949: _M_buckets(nullptr), 234s 1949: _M_bucket_count(__ht._M_bucket_count), 234s 1949: _M_element_count(__ht._M_element_count), 234s 1949: _M_rehash_policy(__ht._M_rehash_policy) 234s 1949: { 234s 1949: if (__ht._M_node_allocator() == this->_M_node_allocator()) 234s 1949: { 234s 1949: if (__ht._M_uses_single_bucket()) 234s 1949: { 234s 1949: _M_buckets = &_M_single_bucket; 234s 1949: _M_single_bucket = __ht._M_single_bucket; 234s 1949: } 234s 1949: else 234s 1949: _M_buckets = __ht._M_buckets; 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_update_bbegin(__ht._M_begin()); 234s 1949: 234s 1949: __ht._M_reset(); 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: using _Fwd_Ht = __conditional_t< 234s 1949: __move_if_noexcept_cond::value, 234s 1949: const _Hashtable&, _Hashtable&&>; 234s 1949: _M_assign(std::forward<_Fwd_Ht>(__ht)); 234s 1949: __ht.clear(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: ~_Hashtable() noexcept 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: static_assert(noexcept(declval() 234s 1949: ._M_bucket_index(declval(), 234s 1949: (std::size_t)0)), 234s 1949: "Cache the hash code or qualify your functors involved" 234s 1949: " in hash code and bucket index computation with noexcept"); 234s 1949: 234s 1949: this->_M_deallocate_nodes(_M_begin()); 234s 1949: _M_deallocate_buckets(); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: swap(_Hashtable& __x) 234s 1949: noexcept(__and_<__is_nothrow_swappable<_Hash>, 234s 1949: __is_nothrow_swappable<_Equal>>::value) 234s 1949: { 234s 1949: using std::swap; 234s 1949: swap(__hash_code_base::_M_hash._M_obj, 234s 1949: __x.__hash_code_base::_M_hash._M_obj); 234s 1949: swap(__hashtable_base::_M_equal._M_obj, 234s 1949: __x.__hashtable_base::_M_equal._M_obj); 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: if constexpr (__node_alloc_traits::propagate_on_container_swap::value) 234s 1949: swap(this->_M_node_allocator(), __x._M_node_allocator()); 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: std::swap(_M_rehash_policy, __x._M_rehash_policy); 234s 1949: 234s 1949: 234s 1949: if (this->_M_uses_single_bucket()) 234s 1949: { 234s 1949: if (!__x._M_uses_single_bucket()) 234s 1949: { 234s 1949: _M_buckets = __x._M_buckets; 234s 1949: __x._M_buckets = &__x._M_single_bucket; 234s 1949: } 234s 1949: } 234s 1949: else if (__x._M_uses_single_bucket()) 234s 1949: { 234s 1949: __x._M_buckets = _M_buckets; 234s 1949: _M_buckets = &_M_single_bucket; 234s 1949: } 234s 1949: else 234s 1949: std::swap(_M_buckets, __x._M_buckets); 234s 1949: 234s 1949: std::swap(_M_bucket_count, __x._M_bucket_count); 234s 1949: std::swap(_M_before_begin._M_nxt, __x._M_before_begin._M_nxt); 234s 1949: std::swap(_M_element_count, __x._M_element_count); 234s 1949: std::swap(_M_single_bucket, __x._M_single_bucket); 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_update_bbegin(); 234s 1949: __x._M_update_bbegin(); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: find(const key_type& __k) 234s 1949: -> iterator 234s 1949: { return iterator(_M_locate(__k)); } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: find(const key_type& __k) const 234s 1949: -> const_iterator 234s 1949: { return const_iterator(_M_locate(__k)); } 234s 1949: # 1981 "/usr/include/c++/15/bits/hashtable.h" 3 4 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: count(const key_type& __k) const 234s 1949: -> size_type 234s 1949: { 234s 1949: auto __it = find(__k); 234s 1949: if (!__it._M_cur) 234s 1949: return 0; 234s 1949: 234s 1949: if (__unique_keys::value) 234s 1949: return 1; 234s 1949: 234s 1949: size_type __result = 1; 234s 1949: for (auto __ref = __it++; 234s 1949: __it._M_cur && this->_M_node_equals(*__ref._M_cur, *__it._M_cur); 234s 1949: ++__it) 234s 1949: ++__result; 234s 1949: 234s 1949: return __result; 234s 1949: } 234s 1949: # 2054 "/usr/include/c++/15/bits/hashtable.h" 3 4 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: equal_range(const key_type& __k) 234s 1949: -> pair 234s 1949: { 234s 1949: auto __ite = find(__k); 234s 1949: if (!__ite._M_cur) 234s 1949: return { __ite, __ite }; 234s 1949: 234s 1949: auto __beg = __ite++; 234s 1949: if (__unique_keys::value) 234s 1949: return { __beg, __ite }; 234s 1949: 234s 1949: while (__ite._M_cur && this->_M_node_equals(*__beg._M_cur, *__ite._M_cur)) 234s 1949: ++__ite; 234s 1949: 234s 1949: return { __beg, __ite }; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: equal_range(const key_type& __k) const 234s 1949: -> pair 234s 1949: { 234s 1949: auto __ite = find(__k); 234s 1949: if (!__ite._M_cur) 234s 1949: return { __ite, __ite }; 234s 1949: 234s 1949: auto __beg = __ite++; 234s 1949: if (__unique_keys::value) 234s 1949: return { __beg, __ite }; 234s 1949: 234s 1949: while (__ite._M_cur && this->_M_node_equals(*__beg._M_cur, *__ite._M_cur)) 234s 1949: ++__ite; 234s 1949: 234s 1949: return { __beg, __ite }; 234s 1949: } 234s 1949: # 2194 "/usr/include/c++/15/bits/hashtable.h" 3 4 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_find_before_node(size_type __bkt, const key_type& __k, 234s 1949: __hash_code __code) const 234s 1949: -> __node_base_ptr 234s 1949: { 234s 1949: __node_base_ptr __prev_p = _M_buckets[__bkt]; 234s 1949: if (!__prev_p) 234s 1949: return nullptr; 234s 1949: 234s 1949: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt);; 234s 1949: __p = __p->_M_next()) 234s 1949: { 234s 1949: if (this->_M_equals(__k, __code, *__p)) 234s 1949: return __prev_p; 234s 1949: 234s 1949: if (__builtin_expect (!__p->_M_nxt || _M_bucket_index(*__p->_M_next()) != __bkt, 0)) 234s 1949: break; 234s 1949: __prev_p = __p; 234s 1949: } 234s 1949: 234s 1949: return nullptr; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_find_before_node_tr(size_type __bkt, const _Kt& __k, 234s 1949: __hash_code __code) const 234s 1949: -> __node_base_ptr 234s 1949: { 234s 1949: __node_base_ptr __prev_p = _M_buckets[__bkt]; 234s 1949: if (!__prev_p) 234s 1949: return nullptr; 234s 1949: 234s 1949: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt);; 234s 1949: __p = __p->_M_next()) 234s 1949: { 234s 1949: if (this->_M_equals_tr(__k, __code, *__p)) 234s 1949: return __prev_p; 234s 1949: 234s 1949: if (__builtin_expect (!__p->_M_nxt || _M_bucket_index(*__p->_M_next()) != __bkt, 0)) 234s 1949: break; 234s 1949: __prev_p = __p; 234s 1949: } 234s 1949: 234s 1949: return nullptr; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: inline auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_locate(const key_type& __k) const 234s 1949: -> __location_type 234s 1949: { 234s 1949: __location_type __loc; 234s 1949: const auto __size = size(); 234s 1949: 234s 1949: if (__size <= __small_size_threshold()) 234s 1949: { 234s 1949: __loc._M_before = pointer_traits<__node_base_ptr>:: 234s 1949: pointer_to(const_cast<__node_base&>(_M_before_begin)); 234s 1949: while (__loc._M_before->_M_nxt) 234s 1949: { 234s 1949: if (this->_M_key_equals(__k, *__loc._M_node())) 234s 1949: return __loc; 234s 1949: __loc._M_before = __loc._M_before->_M_nxt; 234s 1949: } 234s 1949: __loc._M_before = nullptr; 234s 1949: } 234s 1949: 234s 1949: __loc._M_hash_code = this->_M_hash_code(__k); 234s 1949: __loc._M_bucket_index = _M_bucket_index(__loc._M_hash_code); 234s 1949: 234s 1949: if (__size > __small_size_threshold()) 234s 1949: __loc._M_before = _M_find_before_node(__loc._M_bucket_index, __k, 234s 1949: __loc._M_hash_code); 234s 1949: 234s 1949: return __loc; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_get_previous_node(size_type __bkt, __node_ptr __n) 234s 1949: -> __node_base_ptr 234s 1949: { 234s 1949: __node_base_ptr __prev_n = _M_buckets[__bkt]; 234s 1949: while (__prev_n->_M_nxt != __n) 234s 1949: __prev_n = __prev_n->_M_nxt; 234s 1949: return __prev_n; 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_emplace_uniq(_Args&&... __args) 234s 1949: -> pair 234s 1949: { 234s 1949: const key_type* __kp = nullptr; 234s 1949: 234s 1949: if constexpr (sizeof...(_Args) == 1) 234s 1949: { 234s 1949: if constexpr (__is_key_type<_Args...>) 234s 1949: { 234s 1949: const auto& __key = _ExtractKey{}(__args...); 234s 1949: __kp = std::__addressof(__key); 234s 1949: } 234s 1949: } 234s 1949: else if constexpr (sizeof...(_Args) == 2) 234s 1949: { 234s 1949: if constexpr (__is_key_type>) 234s 1949: { 234s 1949: pair __refs(__args...); 234s 1949: const auto& __key = _ExtractKey{}(__refs); 234s 1949: __kp = std::__addressof(__key); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: _Scoped_node __node { __node_ptr(), this }; 234s 1949: __hash_code __code = 0; 234s 1949: size_type __bkt = 0; 234s 1949: 234s 1949: if (__kp == nullptr) 234s 1949: { 234s 1949: 234s 1949: __node._M_node 234s 1949: = this->_M_allocate_node(std::forward<_Args>(__args)...); 234s 1949: const key_type& __key = _ExtractKey{}(__node._M_node->_M_v()); 234s 1949: __kp = std::__addressof(__key); 234s 1949: } 234s 1949: 234s 1949: if (auto __loc = _M_locate(*__kp)) 234s 1949: 234s 1949: return { iterator(__loc), false }; 234s 1949: else 234s 1949: { 234s 1949: __code = __loc._M_hash_code; 234s 1949: __bkt = __loc._M_bucket_index; 234s 1949: } 234s 1949: 234s 1949: if (!__node._M_node) 234s 1949: __node._M_node 234s 1949: = this->_M_allocate_node(std::forward<_Args>(__args)...); 234s 1949: 234s 1949: 234s 1949: auto __pos = _M_insert_unique_node(__bkt, __code, __node._M_node); 234s 1949: __node._M_node = nullptr; 234s 1949: return { __pos, true }; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_emplace_multi(const_iterator __hint, _Args&&... __args) 234s 1949: -> iterator 234s 1949: { 234s 1949: 234s 1949: _Scoped_node __node { this, std::forward<_Args>(__args)... }; 234s 1949: const key_type& __k = _ExtractKey{}(__node._M_node->_M_v()); 234s 1949: 234s 1949: auto __res = this->_M_compute_hash_code(__hint._M_cur, __k); 234s 1949: auto __pos 234s 1949: = _M_insert_multi_node(__res.first, __res.second, __node._M_node); 234s 1949: __node._M_node = nullptr; 234s 1949: return __pos; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_rehash_insert(size_type __n) 234s 1949: { 234s 1949: using __pair_type = std::pair; 234s 1949: if (__n == 0) 234s 1949: return; 234s 1949: 234s 1949: __rehash_guard_t __rehash_guard(_M_rehash_policy); 234s 1949: __pair_type __do_rehash 234s 1949: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, __n); 234s 1949: 234s 1949: if (__do_rehash.first) 234s 1949: _M_rehash(__do_rehash.second, false_type{}); 234s 1949: 234s 1949: __rehash_guard._M_guarded_obj = nullptr; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_insert_range_multi(_InputIterator __first, _InputIterator __last) 234s 1949: { 234s 1949: _M_rehash_insert(__detail::__distance_fw(__first, __last)); 234s 1949: for (; __first != __last; ++__first) 234s 1949: _M_emplace_multi(cend(), *__first); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_compute_hash_code(__node_ptr __hint, const key_type& __k) const 234s 1949: -> pair<__node_ptr, __hash_code> 234s 1949: { 234s 1949: if (size() <= __small_size_threshold()) 234s 1949: { 234s 1949: if (__hint) 234s 1949: { 234s 1949: for (auto __it = __hint; __it; __it = __it->_M_next()) 234s 1949: if (this->_M_key_equals(__k, *__it)) 234s 1949: return { __it, this->_M_hash_code(*__it) }; 234s 1949: } 234s 1949: 234s 1949: for (auto __it = _M_begin(); __it != __hint; __it = __it->_M_next()) 234s 1949: if (this->_M_key_equals(__k, *__it)) 234s 1949: return { __it, this->_M_hash_code(*__it) }; 234s 1949: 234s 1949: __hint = nullptr; 234s 1949: } 234s 1949: 234s 1949: return { __hint, this->_M_hash_code(__k) }; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_insert_unique_node(size_type __bkt, __hash_code __code, 234s 1949: __node_ptr __node, size_type __n_elt) 234s 1949: -> iterator 234s 1949: { 234s 1949: __rehash_guard_t __rehash_guard(_M_rehash_policy); 234s 1949: std::pair __do_rehash 234s 1949: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 234s 1949: __n_elt); 234s 1949: 234s 1949: if (__do_rehash.first) 234s 1949: { 234s 1949: _M_rehash(__do_rehash.second, true_type{}); 234s 1949: __bkt = _M_bucket_index(__code); 234s 1949: } 234s 1949: 234s 1949: __rehash_guard._M_guarded_obj = nullptr; 234s 1949: _M_store_code(*__node, __code); 234s 1949: 234s 1949: 234s 1949: _M_insert_bucket_begin(__bkt, __node); 234s 1949: ++_M_element_count; 234s 1949: return iterator(__node); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_insert_multi_node(__node_ptr __hint, 234s 1949: __hash_code __code, __node_ptr __node) 234s 1949: -> iterator 234s 1949: { 234s 1949: __rehash_guard_t __rehash_guard(_M_rehash_policy); 234s 1949: std::pair __do_rehash 234s 1949: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); 234s 1949: 234s 1949: if (__do_rehash.first) 234s 1949: _M_rehash(__do_rehash.second, false_type{}); 234s 1949: 234s 1949: __rehash_guard._M_guarded_obj = nullptr; 234s 1949: _M_store_code(*__node, __code); 234s 1949: const key_type& __k = _ExtractKey{}(__node->_M_v()); 234s 1949: size_type __bkt = _M_bucket_index(__code); 234s 1949: 234s 1949: 234s 1949: 234s 1949: __node_base_ptr __prev 234s 1949: = __builtin_expect(__hint != nullptr, false) 234s 1949: && this->_M_equals(__k, __code, *__hint) 234s 1949: ? __hint 234s 1949: : _M_find_before_node(__bkt, __k, __code); 234s 1949: 234s 1949: if (__prev) 234s 1949: { 234s 1949: 234s 1949: __node->_M_nxt = __prev->_M_nxt; 234s 1949: __prev->_M_nxt = __node; 234s 1949: if (__builtin_expect(__prev == __hint, false)) 234s 1949: 234s 1949: 234s 1949: if (__node->_M_nxt 234s 1949: && !this->_M_equals(__k, __code, *__node->_M_next())) 234s 1949: { 234s 1949: size_type __next_bkt = _M_bucket_index(*__node->_M_next()); 234s 1949: if (__next_bkt != __bkt) 234s 1949: _M_buckets[__next_bkt] = __node; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: 234s 1949: 234s 1949: 234s 1949: _M_insert_bucket_begin(__bkt, __node); 234s 1949: ++_M_element_count; 234s 1949: return iterator(__node); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: erase(const_iterator __it) 234s 1949: -> iterator 234s 1949: { 234s 1949: __node_ptr __n = __it._M_cur; 234s 1949: std::size_t __bkt = _M_bucket_index(*__n); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __node_base_ptr __prev_n = _M_get_previous_node(__bkt, __n); 234s 1949: return _M_erase(__bkt, __prev_n, __n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_erase(size_type __bkt, __node_base_ptr __prev_n, __node_ptr __n) 234s 1949: -> iterator 234s 1949: { 234s 1949: if (__prev_n == _M_buckets[__bkt]) 234s 1949: _M_remove_bucket_begin(__bkt, __n->_M_next(), 234s 1949: __n->_M_nxt ? _M_bucket_index(*__n->_M_next()) : 0); 234s 1949: else if (__n->_M_nxt) 234s 1949: { 234s 1949: size_type __next_bkt = _M_bucket_index(*__n->_M_next()); 234s 1949: if (__next_bkt != __bkt) 234s 1949: _M_buckets[__next_bkt] = __prev_n; 234s 1949: } 234s 1949: 234s 1949: __prev_n->_M_nxt = __n->_M_nxt; 234s 1949: iterator __result(__n->_M_next()); 234s 1949: this->_M_deallocate_node(__n); 234s 1949: --_M_element_count; 234s 1949: 234s 1949: return __result; 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: erase(const key_type& __k) 234s 1949: -> size_type 234s 1949: { 234s 1949: auto __loc = _M_locate(__k); 234s 1949: if (!__loc) 234s 1949: return 0; 234s 1949: 234s 1949: __node_base_ptr __prev_n = __loc._M_before; 234s 1949: __node_ptr __n = __loc._M_node(); 234s 1949: auto __bkt = __loc._M_bucket_index; 234s 1949: if (__bkt == size_type(-1)) 234s 1949: __bkt = _M_bucket_index(*__n); 234s 1949: 234s 1949: if constexpr (__unique_keys::value) 234s 1949: { 234s 1949: _M_erase(__bkt, __prev_n, __n); 234s 1949: return 1; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __node_ptr __n_last = __n->_M_next(); 234s 1949: while (__n_last && this->_M_node_equals(*__n, *__n_last)) 234s 1949: __n_last = __n_last->_M_next(); 234s 1949: 234s 1949: std::size_t __n_last_bkt 234s 1949: = __n_last ? _M_bucket_index(*__n_last) : __bkt; 234s 1949: 234s 1949: 234s 1949: size_type __result = 0; 234s 1949: do 234s 1949: { 234s 1949: __node_ptr __p = __n->_M_next(); 234s 1949: this->_M_deallocate_node(__n); 234s 1949: __n = __p; 234s 1949: ++__result; 234s 1949: } 234s 1949: while (__n != __n_last); 234s 1949: 234s 1949: _M_element_count -= __result; 234s 1949: if (__prev_n == _M_buckets[__bkt]) 234s 1949: _M_remove_bucket_begin(__bkt, __n_last, __n_last_bkt); 234s 1949: else if (__n_last_bkt != __bkt) 234s 1949: _M_buckets[__n_last_bkt] = __prev_n; 234s 1949: __prev_n->_M_nxt = __n_last; 234s 1949: return __result; 234s 1949: } 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: template 234s 1949: auto 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: erase(const_iterator __first, const_iterator __last) 234s 1949: -> iterator 234s 1949: { 234s 1949: __node_ptr __n = __first._M_cur; 234s 1949: __node_ptr __last_n = __last._M_cur; 234s 1949: if (__n == __last_n) 234s 1949: return iterator(__n); 234s 1949: 234s 1949: std::size_t __bkt = _M_bucket_index(*__n); 234s 1949: 234s 1949: __node_base_ptr __prev_n = _M_get_previous_node(__bkt, __n); 234s 1949: bool __is_bucket_begin = __n == _M_bucket_begin(__bkt); 234s 1949: std::size_t __n_bkt = __bkt; 234s 1949: for (;;) 234s 1949: { 234s 1949: do 234s 1949: { 234s 1949: __node_ptr __tmp = __n; 234s 1949: __n = __n->_M_next(); 234s 1949: this->_M_deallocate_node(__tmp); 234s 1949: --_M_element_count; 234s 1949: if (!__n) 234s 1949: break; 234s 1949: __n_bkt = _M_bucket_index(*__n); 234s 1949: } 234s 1949: while (__n != __last_n && __n_bkt == __bkt); 234s 1949: if (__is_bucket_begin) 234s 1949: _M_remove_bucket_begin(__bkt, __n, __n_bkt); 234s 1949: if (__n == __last_n) 234s 1949: break; 234s 1949: __is_bucket_begin = true; 234s 1949: __bkt = __n_bkt; 234s 1949: } 234s 1949: 234s 1949: if (__n && (__n_bkt != __bkt || __is_bucket_begin)) 234s 1949: _M_buckets[__n_bkt] = __prev_n; 234s 1949: __prev_n->_M_nxt = __n; 234s 1949: return iterator(__n); 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: clear() noexcept 234s 1949: { 234s 1949: this->_M_deallocate_nodes(_M_begin()); 234s 1949: std::fill_n(_M_buckets, _M_bucket_count, nullptr); 234s 1949: _M_element_count = 0; 234s 1949: _M_before_begin._M_nxt = nullptr; 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: rehash(size_type __bkt_count) 234s 1949: { 234s 1949: __rehash_guard_t __rehash_guard(_M_rehash_policy); 234s 1949: __bkt_count 234s 1949: = std::max(_M_rehash_policy._M_bkt_for_elements(_M_element_count + 1), 234s 1949: __bkt_count); 234s 1949: __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count); 234s 1949: 234s 1949: if (__bkt_count != _M_bucket_count) 234s 1949: { 234s 1949: _M_rehash(__bkt_count, __unique_keys{}); 234s 1949: __rehash_guard._M_guarded_obj = nullptr; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_rehash(size_type __bkt_count, true_type ) 234s 1949: { 234s 1949: __buckets_ptr __new_buckets = _M_allocate_buckets(__bkt_count); 234s 1949: __node_ptr __p = _M_begin(); 234s 1949: _M_before_begin._M_nxt = nullptr; 234s 1949: std::size_t __bbegin_bkt = 0; 234s 1949: while (__p) 234s 1949: { 234s 1949: __node_ptr __next = __p->_M_next(); 234s 1949: std::size_t __bkt 234s 1949: = __hash_code_base::_M_bucket_index(*__p, __bkt_count); 234s 1949: if (!__new_buckets[__bkt]) 234s 1949: { 234s 1949: __p->_M_nxt = _M_before_begin._M_nxt; 234s 1949: _M_before_begin._M_nxt = __p; 234s 1949: __new_buckets[__bkt] = &_M_before_begin; 234s 1949: if (__p->_M_nxt) 234s 1949: __new_buckets[__bbegin_bkt] = __p; 234s 1949: __bbegin_bkt = __bkt; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; 234s 1949: __new_buckets[__bkt]->_M_nxt = __p; 234s 1949: } 234s 1949: 234s 1949: __p = __next; 234s 1949: } 234s 1949: 234s 1949: _M_deallocate_buckets(); 234s 1949: _M_bucket_count = __bkt_count; 234s 1949: _M_buckets = __new_buckets; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: void 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_rehash(size_type __bkt_count, false_type ) 234s 1949: { 234s 1949: __buckets_ptr __new_buckets = _M_allocate_buckets(__bkt_count); 234s 1949: __node_ptr __p = _M_begin(); 234s 1949: _M_before_begin._M_nxt = nullptr; 234s 1949: std::size_t __bbegin_bkt = 0; 234s 1949: std::size_t __prev_bkt = 0; 234s 1949: __node_ptr __prev_p = nullptr; 234s 1949: bool __check_bucket = false; 234s 1949: 234s 1949: while (__p) 234s 1949: { 234s 1949: __node_ptr __next = __p->_M_next(); 234s 1949: std::size_t __bkt 234s 1949: = __hash_code_base::_M_bucket_index(*__p, __bkt_count); 234s 1949: 234s 1949: if (__prev_p && __prev_bkt == __bkt) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: __p->_M_nxt = __prev_p->_M_nxt; 234s 1949: __prev_p->_M_nxt = __p; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: __check_bucket = true; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: if (__check_bucket) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: if (__prev_p->_M_nxt) 234s 1949: { 234s 1949: std::size_t __next_bkt 234s 1949: = __hash_code_base::_M_bucket_index( 234s 1949: *__prev_p->_M_next(), __bkt_count); 234s 1949: if (__next_bkt != __prev_bkt) 234s 1949: __new_buckets[__next_bkt] = __prev_p; 234s 1949: } 234s 1949: __check_bucket = false; 234s 1949: } 234s 1949: 234s 1949: if (!__new_buckets[__bkt]) 234s 1949: { 234s 1949: __p->_M_nxt = _M_before_begin._M_nxt; 234s 1949: _M_before_begin._M_nxt = __p; 234s 1949: __new_buckets[__bkt] = &_M_before_begin; 234s 1949: if (__p->_M_nxt) 234s 1949: __new_buckets[__bbegin_bkt] = __p; 234s 1949: __bbegin_bkt = __bkt; 234s 1949: } 234s 1949: else 234s 1949: { 234s 1949: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; 234s 1949: __new_buckets[__bkt]->_M_nxt = __p; 234s 1949: } 234s 1949: } 234s 1949: __prev_p = __p; 234s 1949: __prev_bkt = __bkt; 234s 1949: __p = __next; 234s 1949: } 234s 1949: 234s 1949: if (__check_bucket && __prev_p->_M_nxt) 234s 1949: { 234s 1949: std::size_t __next_bkt 234s 1949: = __hash_code_base::_M_bucket_index(*__prev_p->_M_next(), 234s 1949: __bkt_count); 234s 1949: if (__next_bkt != __prev_bkt) 234s 1949: __new_buckets[__next_bkt] = __prev_p; 234s 1949: } 234s 1949: 234s 1949: _M_deallocate_buckets(); 234s 1949: _M_bucket_count = __bkt_count; 234s 1949: _M_buckets = __new_buckets; 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic push 234s 1949: #pragma GCC diagnostic ignored "-Wc++17-extensions" 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: bool 234s 1949: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 234s 1949: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 234s 1949: _M_equal(const _Hashtable& __other) const 234s 1949: { 234s 1949: if (size() != __other.size()) 234s 1949: return false; 234s 1949: 234s 1949: if constexpr (__unique_keys::value) 234s 1949: for (auto __x_n = _M_begin(); __x_n; __x_n = __x_n->_M_next()) 234s 1949: { 234s 1949: std::size_t __ybkt = __other._M_bucket_index_ext(*__x_n); 234s 1949: auto __prev_n = __other._M_buckets[__ybkt]; 234s 1949: if (!__prev_n) 234s 1949: return false; 234s 1949: 234s 1949: for (__node_ptr __n = static_cast<__node_ptr>(__prev_n->_M_nxt);; 234s 1949: __n = __n->_M_next()) 234s 1949: { 234s 1949: if (__n->_M_v() == __x_n->_M_v()) 234s 1949: break; 234s 1949: 234s 1949: if (!__n->_M_nxt 234s 1949: || __other._M_bucket_index(*__n->_M_next()) != __ybkt) 234s 1949: return false; 234s 1949: } 234s 1949: } 234s 1949: else 234s 1949: for (auto __x_n = _M_begin(); __x_n;) 234s 1949: { 234s 1949: std::size_t __x_count = 1; 234s 1949: auto __x_n_end = __x_n->_M_next(); 234s 1949: for (; __x_n_end 234s 1949: && key_eq()(_ExtractKey{}(__x_n->_M_v()), 234s 1949: _ExtractKey{}(__x_n_end->_M_v())); 234s 1949: __x_n_end = __x_n_end->_M_next()) 234s 1949: ++__x_count; 234s 1949: 234s 1949: std::size_t __ybkt = __other._M_bucket_index_ext(*__x_n); 234s 1949: auto __y_prev_n = __other._M_buckets[__ybkt]; 234s 1949: if (!__y_prev_n) 234s 1949: return false; 234s 1949: 234s 1949: __node_ptr __y_n = static_cast<__node_ptr>(__y_prev_n->_M_nxt); 234s 1949: for (;;) 234s 1949: { 234s 1949: if (key_eq()(_ExtractKey{}(__y_n->_M_v()), 234s 1949: _ExtractKey{}(__x_n->_M_v()))) 234s 1949: break; 234s 1949: 234s 1949: auto __y_ref_n = __y_n; 234s 1949: for (__y_n = __y_n->_M_next(); __y_n; __y_n = __y_n->_M_next()) 234s 1949: if (!__other._M_node_equals(*__y_ref_n, *__y_n)) 234s 1949: break; 234s 1949: 234s 1949: if (!__y_n || __other._M_bucket_index(*__y_n) != __ybkt) 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: auto __y_n_end = __y_n; 234s 1949: for (; __y_n_end; __y_n_end = __y_n_end->_M_next()) 234s 1949: if (--__x_count == 0) 234s 1949: break; 234s 1949: 234s 1949: if (__x_count != 0) 234s 1949: return false; 234s 1949: 234s 1949: const_iterator __itx(__x_n), __itx_end(__x_n_end); 234s 1949: const_iterator __ity(__y_n); 234s 1949: if (!std::is_permutation(__itx, __itx_end, __ity)) 234s 1949: return false; 234s 1949: 234s 1949: __x_n = __x_n_end; 234s 1949: } 234s 1949: 234s 1949: return true; 234s 1949: } 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 2978 "/usr/include/c++/15/bits/hashtable.h" 3 4 234s 1949: 234s 1949: } 234s 1949: 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 34 "/usr/include/c++/15/bits/unordered_set.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace std __attribute__ ((__visibility__ ("default"))) 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __uset_traits = __detail::_Hashtable_traits<_Cache, true, true>; 234s 1949: 234s 1949: template, 234s 1949: typename _Pred = std::equal_to<_Value>, 234s 1949: typename _Alloc = std::allocator<_Value>, 234s 1949: typename _Tr = __uset_traits<__cache_default<_Value, _Hash>::value>> 234s 1949: using __uset_hashtable = _Hashtable<_Value, _Value, _Alloc, 234s 1949: __detail::_Identity, _Pred, _Hash, 234s 1949: __detail::_Mod_range_hashing, 234s 1949: __detail::_Default_ranged_hash, 234s 1949: __detail::_Prime_rehash_policy, _Tr>; 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using __umset_traits = __detail::_Hashtable_traits<_Cache, true, false>; 234s 1949: 234s 1949: template, 234s 1949: typename _Pred = std::equal_to<_Value>, 234s 1949: typename _Alloc = std::allocator<_Value>, 234s 1949: typename _Tr = __umset_traits<__cache_default<_Value, _Hash>::value>> 234s 1949: using __umset_hashtable = _Hashtable<_Value, _Value, _Alloc, 234s 1949: __detail::_Identity, 234s 1949: _Pred, _Hash, 234s 1949: __detail::_Mod_range_hashing, 234s 1949: __detail::_Default_ranged_hash, 234s 1949: __detail::_Prime_rehash_policy, _Tr>; 234s 1949: 234s 1949: template 234s 1949: class unordered_multiset; 234s 1949: # 103 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template, 234s 1949: typename _Pred = equal_to<_Value>, 234s 1949: typename _Alloc = allocator<_Value>> 234s 1949: class unordered_set 234s 1949: { 234s 1949: typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; 234s 1949: _Hashtable _M_h; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename _Hashtable::key_type key_type; 234s 1949: typedef typename _Hashtable::value_type value_type; 234s 1949: typedef typename _Hashtable::hasher hasher; 234s 1949: typedef typename _Hashtable::key_equal key_equal; 234s 1949: typedef typename _Hashtable::allocator_type allocator_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename _Hashtable::pointer pointer; 234s 1949: typedef typename _Hashtable::const_pointer const_pointer; 234s 1949: typedef typename _Hashtable::reference reference; 234s 1949: typedef typename _Hashtable::const_reference const_reference; 234s 1949: typedef typename _Hashtable::iterator iterator; 234s 1949: typedef typename _Hashtable::const_iterator const_iterator; 234s 1949: typedef typename _Hashtable::local_iterator local_iterator; 234s 1949: typedef typename _Hashtable::const_local_iterator const_local_iterator; 234s 1949: typedef typename _Hashtable::size_type size_type; 234s 1949: typedef typename _Hashtable::difference_type difference_type; 234s 1949: # 145 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: unordered_set() = default; 234s 1949: # 154 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: explicit 234s 1949: unordered_set(size_type __n, 234s 1949: const hasher& __hf = hasher(), 234s 1949: const key_equal& __eql = key_equal(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_h(__n, __hf, __eql, __a) 234s 1949: { } 234s 1949: # 175 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template 234s 1949: unordered_set(_InputIterator __first, _InputIterator __last, 234s 1949: size_type __n = 0, 234s 1949: const hasher& __hf = hasher(), 234s 1949: const key_equal& __eql = key_equal(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_h(__first, __last, __n, __hf, __eql, __a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: unordered_set(const unordered_set&) = default; 234s 1949: 234s 1949: 234s 1949: unordered_set(unordered_set&&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: unordered_set(const allocator_type& __a) 234s 1949: : _M_h(__a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: unordered_set(const unordered_set& __uset, 234s 1949: const allocator_type& __a) 234s 1949: : _M_h(__uset._M_h, __a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: unordered_set(unordered_set&& __uset, 234s 1949: const allocator_type& __a) 234s 1949: noexcept( noexcept(_Hashtable(std::move(__uset._M_h), __a)) ) 234s 1949: : _M_h(std::move(__uset._M_h), __a) 234s 1949: { } 234s 1949: # 231 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: unordered_set(initializer_list __l, 234s 1949: size_type __n = 0, 234s 1949: const hasher& __hf = hasher(), 234s 1949: const key_equal& __eql = key_equal(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_h(__l, __n, __hf, __eql, __a) 234s 1949: { } 234s 1949: 234s 1949: unordered_set(size_type __n, const allocator_type& __a) 234s 1949: : unordered_set(__n, hasher(), key_equal(), __a) 234s 1949: { } 234s 1949: 234s 1949: unordered_set(size_type __n, const hasher& __hf, 234s 1949: const allocator_type& __a) 234s 1949: : unordered_set(__n, __hf, key_equal(), __a) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: unordered_set(_InputIterator __first, _InputIterator __last, 234s 1949: size_type __n, 234s 1949: const allocator_type& __a) 234s 1949: : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: unordered_set(_InputIterator __first, _InputIterator __last, 234s 1949: size_type __n, const hasher& __hf, 234s 1949: const allocator_type& __a) 234s 1949: : unordered_set(__first, __last, __n, __hf, key_equal(), __a) 234s 1949: { } 234s 1949: 234s 1949: unordered_set(initializer_list __l, 234s 1949: size_type __n, 234s 1949: const allocator_type& __a) 234s 1949: : unordered_set(__l, __n, hasher(), key_equal(), __a) 234s 1949: { } 234s 1949: 234s 1949: unordered_set(initializer_list __l, 234s 1949: size_type __n, const hasher& __hf, 234s 1949: const allocator_type& __a) 234s 1949: : unordered_set(__l, __n, __hf, key_equal(), __a) 234s 1949: { } 234s 1949: # 318 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: unordered_set& 234s 1949: operator=(const unordered_set&) = default; 234s 1949: 234s 1949: 234s 1949: unordered_set& 234s 1949: operator=(unordered_set&&) = default; 234s 1949: # 336 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: unordered_set& 234s 1949: operator=(initializer_list __l) 234s 1949: { 234s 1949: _M_h = __l; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return _M_h.get_allocator(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] bool 234s 1949: empty() const noexcept 234s 1949: { return _M_h.empty(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { return _M_h.size(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { return _M_h.max_size(); } 234s 1949: # 372 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: begin() noexcept 234s 1949: { return _M_h.begin(); } 234s 1949: 234s 1949: const_iterator 234s 1949: begin() const noexcept 234s 1949: { return _M_h.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: end() noexcept 234s 1949: { return _M_h.end(); } 234s 1949: 234s 1949: const_iterator 234s 1949: end() const noexcept 234s 1949: { return _M_h.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: cbegin() const noexcept 234s 1949: { return _M_h.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: cend() const noexcept 234s 1949: { return _M_h.end(); } 234s 1949: # 428 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template 234s 1949: std::pair 234s 1949: emplace(_Args&&... __args) 234s 1949: { return _M_h.emplace(std::forward<_Args>(__args)...); } 234s 1949: # 454 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template 234s 1949: iterator 234s 1949: emplace_hint(const_iterator __pos, _Args&&... __args) 234s 1949: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } 234s 1949: # 473 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: std::pair 234s 1949: insert(const value_type& __x) 234s 1949: { return _M_h.insert(__x); } 234s 1949: 234s 1949: std::pair 234s 1949: insert(value_type&& __x) 234s 1949: { return _M_h.insert(std::move(__x)); } 234s 1949: # 502 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: insert(const_iterator __hint, const value_type& __x) 234s 1949: { return _M_h.insert(__hint, __x); } 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __hint, value_type&& __x) 234s 1949: { return _M_h.insert(__hint, std::move(__x)); } 234s 1949: # 520 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: insert(_InputIterator __first, _InputIterator __last) 234s 1949: { _M_h.insert(__first, __last); } 234s 1949: # 532 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: void 234s 1949: insert(initializer_list __l) 234s 1949: { _M_h.insert(__l); } 234s 1949: # 593 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: erase(const_iterator __position) 234s 1949: { return _M_h.erase(__position); } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: erase(iterator __position) 234s 1949: { return _M_h.erase(__position); } 234s 1949: # 615 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: size_type 234s 1949: erase(const key_type& __x) 234s 1949: { return _M_h.erase(__x); } 234s 1949: # 633 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: erase(const_iterator __first, const_iterator __last) 234s 1949: { return _M_h.erase(__first, __last); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { _M_h.clear(); } 234s 1949: # 656 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: void 234s 1949: swap(unordered_set& __x) 234s 1949: noexcept( noexcept(_M_h.swap(__x._M_h)) ) 234s 1949: { _M_h.swap(__x._M_h); } 234s 1949: # 703 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: hasher 234s 1949: hash_function() const 234s 1949: { return _M_h.hash_function(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: key_equal 234s 1949: key_eq() const 234s 1949: { return _M_h.key_eq(); } 234s 1949: # 727 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: find(const key_type& __x) 234s 1949: { return _M_h.find(__x); } 234s 1949: # 739 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: const_iterator 234s 1949: find(const key_type& __x) const 234s 1949: { return _M_h.find(__x); } 234s 1949: # 762 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: size_type 234s 1949: count(const key_type& __x) const 234s 1949: { return _M_h.count(__x); } 234s 1949: # 803 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) 234s 1949: { return _M_h.equal_range(__x); } 234s 1949: # 815 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) const 234s 1949: { return _M_h.equal_range(__x); } 234s 1949: # 831 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: size_type 234s 1949: bucket_count() const noexcept 234s 1949: { return _M_h.bucket_count(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: max_bucket_count() const noexcept 234s 1949: { return _M_h.max_bucket_count(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: bucket_size(size_type __n) const 234s 1949: { return _M_h.bucket_size(__n); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: bucket(const key_type& __key) const 234s 1949: { return _M_h.bucket(__key); } 234s 1949: # 865 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: local_iterator 234s 1949: begin(size_type __n) 234s 1949: { return _M_h.begin(__n); } 234s 1949: 234s 1949: const_local_iterator 234s 1949: begin(size_type __n) const 234s 1949: { return _M_h.begin(__n); } 234s 1949: 234s 1949: const_local_iterator 234s 1949: cbegin(size_type __n) const 234s 1949: { return _M_h.cbegin(__n); } 234s 1949: # 885 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: local_iterator 234s 1949: end(size_type __n) 234s 1949: { return _M_h.end(__n); } 234s 1949: 234s 1949: const_local_iterator 234s 1949: end(size_type __n) const 234s 1949: { return _M_h.end(__n); } 234s 1949: 234s 1949: const_local_iterator 234s 1949: cend(size_type __n) const 234s 1949: { return _M_h.cend(__n); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: float 234s 1949: load_factor() const noexcept 234s 1949: { return _M_h.load_factor(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: float 234s 1949: max_load_factor() const noexcept 234s 1949: { return _M_h.max_load_factor(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: max_load_factor(float __z) 234s 1949: { _M_h.max_load_factor(__z); } 234s 1949: # 926 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: void 234s 1949: rehash(size_type __n) 234s 1949: { _M_h.rehash(__n); } 234s 1949: # 937 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: void 234s 1949: reserve(size_type __n) 234s 1949: { _M_h.reserve(__n); } 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: operator==(const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&, 234s 1949: const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&); 234s 1949: }; 234s 1949: # 1074 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template, 234s 1949: typename _Pred = equal_to<_Value>, 234s 1949: typename _Alloc = allocator<_Value>> 234s 1949: class unordered_multiset 234s 1949: { 234s 1949: typedef __umset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; 234s 1949: _Hashtable _M_h; 234s 1949: 234s 1949: public: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename _Hashtable::key_type key_type; 234s 1949: typedef typename _Hashtable::value_type value_type; 234s 1949: typedef typename _Hashtable::hasher hasher; 234s 1949: typedef typename _Hashtable::key_equal key_equal; 234s 1949: typedef typename _Hashtable::allocator_type allocator_type; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef typename _Hashtable::pointer pointer; 234s 1949: typedef typename _Hashtable::const_pointer const_pointer; 234s 1949: typedef typename _Hashtable::reference reference; 234s 1949: typedef typename _Hashtable::const_reference const_reference; 234s 1949: typedef typename _Hashtable::iterator iterator; 234s 1949: typedef typename _Hashtable::const_iterator const_iterator; 234s 1949: typedef typename _Hashtable::local_iterator local_iterator; 234s 1949: typedef typename _Hashtable::const_local_iterator const_local_iterator; 234s 1949: typedef typename _Hashtable::size_type size_type; 234s 1949: typedef typename _Hashtable::difference_type difference_type; 234s 1949: # 1115 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: unordered_multiset() = default; 234s 1949: # 1124 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: explicit 234s 1949: unordered_multiset(size_type __n, 234s 1949: const hasher& __hf = hasher(), 234s 1949: const key_equal& __eql = key_equal(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_h(__n, __hf, __eql, __a) 234s 1949: { } 234s 1949: # 1145 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template 234s 1949: unordered_multiset(_InputIterator __first, _InputIterator __last, 234s 1949: size_type __n = 0, 234s 1949: const hasher& __hf = hasher(), 234s 1949: const key_equal& __eql = key_equal(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_h(__first, __last, __n, __hf, __eql, __a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: unordered_multiset(const unordered_multiset&) = default; 234s 1949: 234s 1949: 234s 1949: unordered_multiset(unordered_multiset&&) = default; 234s 1949: # 1171 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: unordered_multiset(initializer_list __l, 234s 1949: size_type __n = 0, 234s 1949: const hasher& __hf = hasher(), 234s 1949: const key_equal& __eql = key_equal(), 234s 1949: const allocator_type& __a = allocator_type()) 234s 1949: : _M_h(__l, __n, __hf, __eql, __a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: unordered_multiset& 234s 1949: operator=(const unordered_multiset&) = default; 234s 1949: 234s 1949: 234s 1949: unordered_multiset& 234s 1949: operator=(unordered_multiset&&) = default; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: explicit 234s 1949: unordered_multiset(const allocator_type& __a) 234s 1949: : _M_h(__a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: unordered_multiset(const unordered_multiset& __umset, 234s 1949: const allocator_type& __a) 234s 1949: : _M_h(__umset._M_h, __a) 234s 1949: { } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: unordered_multiset(unordered_multiset&& __umset, 234s 1949: const allocator_type& __a) 234s 1949: noexcept( noexcept(_Hashtable(std::move(__umset._M_h), __a)) ) 234s 1949: : _M_h(std::move(__umset._M_h), __a) 234s 1949: { } 234s 1949: 234s 1949: unordered_multiset(size_type __n, const allocator_type& __a) 234s 1949: : unordered_multiset(__n, hasher(), key_equal(), __a) 234s 1949: { } 234s 1949: 234s 1949: unordered_multiset(size_type __n, const hasher& __hf, 234s 1949: const allocator_type& __a) 234s 1949: : unordered_multiset(__n, __hf, key_equal(), __a) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: unordered_multiset(_InputIterator __first, _InputIterator __last, 234s 1949: size_type __n, 234s 1949: const allocator_type& __a) 234s 1949: : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) 234s 1949: { } 234s 1949: 234s 1949: template 234s 1949: unordered_multiset(_InputIterator __first, _InputIterator __last, 234s 1949: size_type __n, const hasher& __hf, 234s 1949: const allocator_type& __a) 234s 1949: : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) 234s 1949: { } 234s 1949: 234s 1949: unordered_multiset(initializer_list __l, 234s 1949: size_type __n, 234s 1949: const allocator_type& __a) 234s 1949: : unordered_multiset(__l, __n, hasher(), key_equal(), __a) 234s 1949: { } 234s 1949: 234s 1949: unordered_multiset(initializer_list __l, 234s 1949: size_type __n, const hasher& __hf, 234s 1949: const allocator_type& __a) 234s 1949: : unordered_multiset(__l, __n, __hf, key_equal(), __a) 234s 1949: { } 234s 1949: # 1308 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: unordered_multiset& 234s 1949: operator=(initializer_list __l) 234s 1949: { 234s 1949: _M_h = __l; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: allocator_type 234s 1949: get_allocator() const noexcept 234s 1949: { return _M_h.get_allocator(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: [[__nodiscard__]] bool 234s 1949: empty() const noexcept 234s 1949: { return _M_h.empty(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: size() const noexcept 234s 1949: { return _M_h.size(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: max_size() const noexcept 234s 1949: { return _M_h.max_size(); } 234s 1949: # 1344 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: begin() noexcept 234s 1949: { return _M_h.begin(); } 234s 1949: 234s 1949: const_iterator 234s 1949: begin() const noexcept 234s 1949: { return _M_h.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: end() noexcept 234s 1949: { return _M_h.end(); } 234s 1949: 234s 1949: const_iterator 234s 1949: end() const noexcept 234s 1949: { return _M_h.end(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: cbegin() const noexcept 234s 1949: { return _M_h.begin(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: const_iterator 234s 1949: cend() const noexcept 234s 1949: { return _M_h.end(); } 234s 1949: # 1392 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template 234s 1949: iterator 234s 1949: emplace(_Args&&... __args) 234s 1949: { return _M_h.emplace(std::forward<_Args>(__args)...); } 234s 1949: # 1414 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template 234s 1949: iterator 234s 1949: emplace_hint(const_iterator __pos, _Args&&... __args) 234s 1949: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } 234s 1949: # 1427 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: insert(const value_type& __x) 234s 1949: { return _M_h.insert(__x); } 234s 1949: 234s 1949: iterator 234s 1949: insert(value_type&& __x) 234s 1949: { return _M_h.insert(std::move(__x)); } 234s 1949: # 1453 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: insert(const_iterator __hint, const value_type& __x) 234s 1949: { return _M_h.insert(__hint, __x); } 234s 1949: 234s 1949: iterator 234s 1949: insert(const_iterator __hint, value_type&& __x) 234s 1949: { return _M_h.insert(__hint, std::move(__x)); } 234s 1949: # 1470 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template 234s 1949: void 234s 1949: insert(_InputIterator __first, _InputIterator __last) 234s 1949: { _M_h.insert(__first, __last); } 234s 1949: # 1482 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: void 234s 1949: insert(initializer_list __l) 234s 1949: { _M_h.insert(__l); } 234s 1949: # 1552 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: erase(const_iterator __position) 234s 1949: { return _M_h.erase(__position); } 234s 1949: 234s 1949: 234s 1949: iterator 234s 1949: erase(iterator __position) 234s 1949: { return _M_h.erase(__position); } 234s 1949: # 1575 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: size_type 234s 1949: erase(const key_type& __x) 234s 1949: { return _M_h.erase(__x); } 234s 1949: # 1595 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: erase(const_iterator __first, const_iterator __last) 234s 1949: { return _M_h.erase(__first, __last); } 234s 1949: # 1606 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: void 234s 1949: clear() noexcept 234s 1949: { _M_h.clear(); } 234s 1949: # 1619 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: void 234s 1949: swap(unordered_multiset& __x) 234s 1949: noexcept( noexcept(_M_h.swap(__x._M_h)) ) 234s 1949: { _M_h.swap(__x._M_h); } 234s 1949: # 1669 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: hasher 234s 1949: hash_function() const 234s 1949: { return _M_h.hash_function(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: key_equal 234s 1949: key_eq() const 234s 1949: { return _M_h.key_eq(); } 234s 1949: # 1693 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: iterator 234s 1949: find(const key_type& __x) 234s 1949: { return _M_h.find(__x); } 234s 1949: # 1705 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: const_iterator 234s 1949: find(const key_type& __x) const 234s 1949: { return _M_h.find(__x); } 234s 1949: # 1724 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: size_type 234s 1949: count(const key_type& __x) const 234s 1949: { return _M_h.count(__x); } 234s 1949: # 1762 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) 234s 1949: { return _M_h.equal_range(__x); } 234s 1949: # 1774 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: std::pair 234s 1949: equal_range(const key_type& __x) const 234s 1949: { return _M_h.equal_range(__x); } 234s 1949: # 1790 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: size_type 234s 1949: bucket_count() const noexcept 234s 1949: { return _M_h.bucket_count(); } 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: max_bucket_count() const noexcept 234s 1949: { return _M_h.max_bucket_count(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: bucket_size(size_type __n) const 234s 1949: { return _M_h.bucket_size(__n); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: size_type 234s 1949: bucket(const key_type& __key) const 234s 1949: { return _M_h.bucket(__key); } 234s 1949: # 1824 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: local_iterator 234s 1949: begin(size_type __n) 234s 1949: { return _M_h.begin(__n); } 234s 1949: 234s 1949: const_local_iterator 234s 1949: begin(size_type __n) const 234s 1949: { return _M_h.begin(__n); } 234s 1949: 234s 1949: const_local_iterator 234s 1949: cbegin(size_type __n) const 234s 1949: { return _M_h.cbegin(__n); } 234s 1949: # 1844 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: local_iterator 234s 1949: end(size_type __n) 234s 1949: { return _M_h.end(__n); } 234s 1949: 234s 1949: const_local_iterator 234s 1949: end(size_type __n) const 234s 1949: { return _M_h.end(__n); } 234s 1949: 234s 1949: const_local_iterator 234s 1949: cend(size_type __n) const 234s 1949: { return _M_h.cend(__n); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: float 234s 1949: load_factor() const noexcept 234s 1949: { return _M_h.load_factor(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: float 234s 1949: max_load_factor() const noexcept 234s 1949: { return _M_h.max_load_factor(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void 234s 1949: max_load_factor(float __z) 234s 1949: { _M_h.max_load_factor(__z); } 234s 1949: # 1885 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: void 234s 1949: rehash(size_type __n) 234s 1949: { _M_h.rehash(__n); } 234s 1949: # 1896 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: void 234s 1949: reserve(size_type __n) 234s 1949: { _M_h.reserve(__n); } 234s 1949: 234s 1949: template 234s 1949: friend bool 234s 1949: operator==(const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&, 234s 1949: const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&); 234s 1949: }; 234s 1949: # 2020 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: template 234s 1949: inline void 234s 1949: swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, 234s 1949: unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) 234s 1949: noexcept(noexcept(__x.swap(__y))) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: template 234s 1949: inline void 234s 1949: swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, 234s 1949: unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) 234s 1949: noexcept(noexcept(__x.swap(__y))) 234s 1949: { __x.swap(__y); } 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, 234s 1949: const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) 234s 1949: { return __x._M_h._M_equal(__y._M_h); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, 234s 1949: const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, 234s 1949: const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) 234s 1949: { return __x._M_h._M_equal(__y._M_h); } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: inline bool 234s 1949: operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, 234s 1949: const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) 234s 1949: { return !(__x == __y); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 2113 "/usr/include/c++/15/bits/unordered_set.h" 3 4 234s 1949: 234s 1949: } 234s 1949: # 44 "/usr/include/c++/15/unordered_set" 2 3 4 234s 1949: # 57 "/usr/include/c++/15/unordered_set" 3 4 234s 1949: # 1 "/usr/include/c++/15/bits/version.h" 1 3 4 234s 1949: # 58 "/usr/include/c++/15/unordered_set" 2 3 4 234s 1949: # 3185 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: 234s 1949: 234s 1949: # 1 "/usr/include/c++/15/csignal" 1 3 4 234s 1949: # 52 "/usr/include/c++/15/csignal" 3 4 234s 1949: namespace std 234s 1949: { 234s 1949: using ::sig_atomic_t; 234s 1949: using ::signal; 234s 1949: using ::raise; 234s 1949: } 234s 1949: # 3188 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 1 "/usr/include/c++/15/cfloat" 1 3 4 234s 1949: # 47 "/usr/include/c++/15/cfloat" 3 4 234s 1949: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/15/include/float.h" 1 3 4 234s 1949: # 48 "/usr/include/c++/15/cfloat" 2 3 4 234s 1949: # 3189 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 3221 "/usr/include/doctest/doctest.h" 3 4 234s 1949: # 1 "/usr/include/arm-linux-gnueabihf/sys/time.h" 1 3 4 234s 1949: # 34 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 234s 1949: extern "C" { 234s 1949: # 52 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 234s 1949: struct timezone 234s 1949: { 234s 1949: int tz_minuteswest; 234s 1949: int tz_dsttime; 234s 1949: }; 234s 1949: # 71 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 234s 1949: extern int gettimeofday (struct timeval *__restrict __tv, void *__restrict __tz) noexcept (true) __asm__ ("" "__gettimeofday64") 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1))); 234s 1949: # 98 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 234s 1949: extern int settimeofday (const struct timeval *__tv, const struct timezone *__tz) noexcept (true) __asm__ ("" "__settimeofday64") 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: extern int adjtime (const struct timeval *__delta, struct timeval *__olddelta) noexcept (true) __asm__ ("" "__adjtime64") 234s 1949: 234s 1949: ; 234s 1949: # 114 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 234s 1949: enum __itimer_which 234s 1949: { 234s 1949: 234s 1949: ITIMER_REAL = 0, 234s 1949: 234s 1949: 234s 1949: ITIMER_VIRTUAL = 1, 234s 1949: 234s 1949: 234s 1949: 234s 1949: ITIMER_PROF = 2 234s 1949: 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct itimerval 234s 1949: { 234s 1949: 234s 1949: struct timeval it_interval; 234s 1949: 234s 1949: struct timeval it_value; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: typedef int __itimer_which_t; 234s 1949: # 167 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 234s 1949: extern int getitimer (__itimer_which_t __which, struct itimerval *__value) noexcept (true) __asm__ ("" "__getitimer64") 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: extern int setitimer (__itimer_which_t __which, const struct itimerval *__restrict __new, struct itimerval *__restrict __old) noexcept (true) __asm__ ("" "__setitimer64") 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: 234s 1949: extern int utimes (const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__utimes64") 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1))); 234s 1949: # 196 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 234s 1949: extern int lutimes (const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__lutimes64") 234s 1949: 234s 1949: __attribute__ ((__nonnull__ (1))); 234s 1949: 234s 1949: extern int futimes (int __fd, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__futimes64") 234s 1949: ; 234s 1949: # 218 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 234s 1949: extern int futimesat (int __fd, const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__futimesat64") 234s 1949: 234s 1949: ; 234s 1949: # 258 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 234s 1949: } 234s 1949: # 3222 "/usr/include/doctest/doctest.h" 2 3 4 234s 1949: # 3232 "/usr/include/doctest/doctest.h" 3 4 234s 1949: 234s 1949: # 3281 "/usr/include/doctest/doctest.h" 3 4 234s 1949: namespace doctest { 234s 1949: 234s 1949: bool is_running_in_test = false; 234s 1949: 234s 1949: namespace { 234s 1949: using namespace detail; 234s 1949: 234s 1949: template 234s 1949: [[noreturn]] void throw_exception(Ex const& e) { 234s 1949: 234s 1949: throw e; 234s 1949: # 3303 "/usr/include/doctest/doctest.h" 3 4 234s 1949: } 234s 1949: # 3312 "/usr/include/doctest/doctest.h" 3 4 234s 1949: int stricmp(const char* a, const char* b) { 234s 1949: for(;; a++, b++) { 234s 1949: const int d = tolower(*a) - tolower(*b); 234s 1949: if(d != 0 || !*a) 234s 1949: return d; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: struct Endianness 234s 1949: { 234s 1949: enum Arch 234s 1949: { 234s 1949: Big, 234s 1949: Little 234s 1949: }; 234s 1949: 234s 1949: static Arch which() { 234s 1949: int x = 1; 234s 1949: 234s 1949: auto ptr = reinterpret_cast(&x); 234s 1949: if(*ptr) 234s 1949: return Little; 234s 1949: return Big; 234s 1949: } 234s 1949: }; 234s 1949: } 234s 1949: 234s 1949: namespace detail { 234s 1949: thread_local class 234s 1949: { 234s 1949: std::vector stack; 234s 1949: std::stringstream ss; 234s 1949: 234s 1949: public: 234s 1949: std::ostream* push() { 234s 1949: stack.push_back(ss.tellp()); 234s 1949: return &ss; 234s 1949: } 234s 1949: 234s 1949: String pop() { 234s 1949: if (stack.empty()) 234s 1949: throw_exception(std::logic_error( "/usr/include/doctest/doctest.h" ":" "3353" ": Internal doctest error: " "TLSS was empty when trying to pop!")); 234s 1949: 234s 1949: std::streampos pos = stack.back(); 234s 1949: stack.pop_back(); 234s 1949: unsigned sz = static_cast(ss.tellp() - pos); 234s 1949: ss.rdbuf()->pubseekpos(pos, std::ios::in | std::ios::out); 234s 1949: return String(ss, sz); 234s 1949: } 234s 1949: } g_oss; 234s 1949: 234s 1949: std::ostream* tlssPush() { 234s 1949: return g_oss.push(); 234s 1949: } 234s 1949: 234s 1949: String tlssPop() { 234s 1949: return g_oss.pop(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: namespace timer_large_integer 234s 1949: { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using type = std::uint64_t; 234s 1949: 234s 1949: } 234s 1949: 234s 1949: using ticks_t = timer_large_integer::type; 234s 1949: # 3399 "/usr/include/doctest/doctest.h" 3 4 234s 1949: ticks_t getCurrentTicks() { 234s 1949: timeval t; 234s 1949: gettimeofday(&t, nullptr); 234s 1949: return static_cast(t.tv_sec) * 1000000 + static_cast(t.tv_usec); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: struct Timer 234s 1949: { 234s 1949: void start() { m_ticks = getCurrentTicks(); } 234s 1949: unsigned int getElapsedMicroseconds() const { 234s 1949: return static_cast(getCurrentTicks() - m_ticks); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: double getElapsedSeconds() const { return static_cast(getCurrentTicks() - m_ticks) / 1000000.0; } 234s 1949: 234s 1949: private: 234s 1949: ticks_t m_ticks = 0; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: template 234s 1949: using Atomic = std::atomic; 234s 1949: # 3443 "/usr/include/doctest/doctest.h" 3 4 234s 1949: template 234s 1949: class MultiLaneAtomic 234s 1949: { 234s 1949: struct CacheLineAlignedAtomic 234s 1949: { 234s 1949: Atomic atomic{}; 234s 1949: char padding[64 - sizeof(Atomic)]; 234s 1949: }; 234s 1949: CacheLineAlignedAtomic m_atomics[32]; 234s 1949: 234s 1949: static_assert(sizeof(CacheLineAlignedAtomic) == 64, 234s 1949: "guarantee one atomic takes exactly one cache line"); 234s 1949: 234s 1949: public: 234s 1949: T operator++() noexcept { return fetch_add(1) + 1; } 234s 1949: 234s 1949: T operator++(int) noexcept { return fetch_add(1); } 234s 1949: 234s 1949: T fetch_add(T arg, std::memory_order order = std::memory_order_seq_cst) noexcept { 234s 1949: return myAtomic().fetch_add(arg, order); 234s 1949: } 234s 1949: 234s 1949: T fetch_sub(T arg, std::memory_order order = std::memory_order_seq_cst) noexcept { 234s 1949: return myAtomic().fetch_sub(arg, order); 234s 1949: } 234s 1949: 234s 1949: operator T() const noexcept { return load(); } 234s 1949: 234s 1949: T load(std::memory_order order = std::memory_order_seq_cst) const noexcept { 234s 1949: auto result = T(); 234s 1949: for(auto const& c : m_atomics) { 234s 1949: result += c.atomic.load(order); 234s 1949: } 234s 1949: return result; 234s 1949: } 234s 1949: 234s 1949: T operator=(T desired) noexcept { 234s 1949: store(desired); 234s 1949: return desired; 234s 1949: } 234s 1949: 234s 1949: void store(T desired, std::memory_order order = std::memory_order_seq_cst) noexcept { 234s 1949: 234s 1949: for(auto& c : m_atomics) { 234s 1949: c.atomic.store(desired, order); 234s 1949: desired = {}; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: private: 234s 1949: # 3505 "/usr/include/doctest/doctest.h" 3 4 234s 1949: Atomic& myAtomic() noexcept { 234s 1949: static Atomic laneCounter; 234s 1949: thread_local size_t tlsLaneIdx = 234s 1949: laneCounter++ % 32; 234s 1949: 234s 1949: return m_atomics[tlsLaneIdx].atomic; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct ContextState : ContextOptions, TestRunStats, CurrentTestCaseStats 234s 1949: { 234s 1949: MultiLaneAtomic numAssertsCurrentTest_atomic; 234s 1949: MultiLaneAtomic numAssertsFailedCurrentTest_atomic; 234s 1949: 234s 1949: std::vector> filters = decltype(filters)(9); 234s 1949: 234s 1949: std::vector reporters_currently_used; 234s 1949: 234s 1949: assert_handler ah = nullptr; 234s 1949: 234s 1949: Timer timer; 234s 1949: 234s 1949: std::vector stringifiedContexts; 234s 1949: 234s 1949: 234s 1949: bool reachedLeaf; 234s 1949: std::vector subcaseStack; 234s 1949: std::vector nextSubcaseStack; 234s 1949: std::unordered_set fullyTraversedSubcases; 234s 1949: size_t currentSubcaseDepth; 234s 1949: Atomic shouldLogCurrentException; 234s 1949: 234s 1949: void resetRunData() { 234s 1949: numTestCases = 0; 234s 1949: numTestCasesPassingFilters = 0; 234s 1949: numTestSuitesPassingFilters = 0; 234s 1949: numTestCasesFailed = 0; 234s 1949: numAsserts = 0; 234s 1949: numAssertsFailed = 0; 234s 1949: numAssertsCurrentTest = 0; 234s 1949: numAssertsFailedCurrentTest = 0; 234s 1949: } 234s 1949: 234s 1949: void finalizeTestCaseData() { 234s 1949: seconds = timer.getElapsedSeconds(); 234s 1949: 234s 1949: 234s 1949: numAsserts += numAssertsCurrentTest_atomic; 234s 1949: numAssertsFailed += numAssertsFailedCurrentTest_atomic; 234s 1949: numAssertsCurrentTest = numAssertsCurrentTest_atomic; 234s 1949: numAssertsFailedCurrentTest = numAssertsFailedCurrentTest_atomic; 234s 1949: 234s 1949: if(numAssertsFailedCurrentTest) 234s 1949: failure_flags |= TestCaseFailureReason::AssertFailure; 234s 1949: 234s 1949: if(Approx(currentTest->m_timeout).epsilon(double(2.2204460492503131e-16L)) != 0 && 234s 1949: Approx(seconds).epsilon(double(2.2204460492503131e-16L)) > currentTest->m_timeout) 234s 1949: failure_flags |= TestCaseFailureReason::Timeout; 234s 1949: 234s 1949: if(currentTest->m_should_fail) { 234s 1949: if(failure_flags) { 234s 1949: failure_flags |= TestCaseFailureReason::ShouldHaveFailedAndDid; 234s 1949: } else { 234s 1949: failure_flags |= TestCaseFailureReason::ShouldHaveFailedButDidnt; 234s 1949: } 234s 1949: } else if(failure_flags && currentTest->m_may_fail) { 234s 1949: failure_flags |= TestCaseFailureReason::CouldHaveFailedAndDid; 234s 1949: } else if(currentTest->m_expected_failures > 0) { 234s 1949: if(numAssertsFailedCurrentTest == currentTest->m_expected_failures) { 234s 1949: failure_flags |= TestCaseFailureReason::FailedExactlyNumTimes; 234s 1949: } else { 234s 1949: failure_flags |= TestCaseFailureReason::DidntFailExactlyNumTimes; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: bool ok_to_fail = (TestCaseFailureReason::ShouldHaveFailedAndDid & failure_flags) || 234s 1949: (TestCaseFailureReason::CouldHaveFailedAndDid & failure_flags) || 234s 1949: (TestCaseFailureReason::FailedExactlyNumTimes & failure_flags); 234s 1949: 234s 1949: 234s 1949: testCaseSuccess = !(failure_flags && !ok_to_fail); 234s 1949: if(!testCaseSuccess) 234s 1949: numTestCasesFailed++; 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: ContextState* g_cs = nullptr; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: thread_local bool g_no_colors; 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: char* String::allocate(size_type sz) { 234s 1949: if (sz <= last) { 234s 1949: buf[sz] = '\0'; 234s 1949: setLast(last - sz); 234s 1949: return buf; 234s 1949: } else { 234s 1949: setOnHeap(); 234s 1949: data.size = sz; 234s 1949: data.capacity = data.size + 1; 234s 1949: data.ptr = new char[data.capacity]; 234s 1949: data.ptr[sz] = '\0'; 234s 1949: return data.ptr; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: void String::setOnHeap() noexcept { *reinterpret_cast(&buf[last]) = 128; } 234s 1949: void String::setLast(size_type in) noexcept { buf[last] = char(in); } 234s 1949: void String::setSize(size_type sz) noexcept { 234s 1949: if (isOnStack()) { buf[sz] = '\0'; setLast(last - sz); } 234s 1949: else { data.ptr[sz] = '\0'; data.size = sz; } 234s 1949: } 234s 1949: 234s 1949: void String::copy(const String& other) { 234s 1949: if(other.isOnStack()) { 234s 1949: memcpy(buf, other.buf, len); 234s 1949: } else { 234s 1949: memcpy(allocate(other.data.size), other.data.ptr, other.data.size); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: String::String() noexcept { 234s 1949: buf[0] = '\0'; 234s 1949: setLast(); 234s 1949: } 234s 1949: 234s 1949: String::~String() { 234s 1949: if(!isOnStack()) 234s 1949: delete[] data.ptr; 234s 1949: } 234s 1949: 234s 1949: String::String(const char* in) 234s 1949: : String(in, strlen(in)) {} 234s 1949: 234s 1949: String::String(const char* in, size_type in_size) { 234s 1949: memcpy(allocate(in_size), in, in_size); 234s 1949: } 234s 1949: 234s 1949: String::String(std::istream& in, size_type in_size) { 234s 1949: in.read(allocate(in_size), in_size); 234s 1949: } 234s 1949: 234s 1949: String::String(const String& other) { copy(other); } 234s 1949: 234s 1949: String& String::operator=(const String& other) { 234s 1949: if(this != &other) { 234s 1949: if(!isOnStack()) 234s 1949: delete[] data.ptr; 234s 1949: 234s 1949: copy(other); 234s 1949: } 234s 1949: 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: String& String::operator+=(const String& other) { 234s 1949: const size_type my_old_size = size(); 234s 1949: const size_type other_size = other.size(); 234s 1949: const size_type total_size = my_old_size + other_size; 234s 1949: if(isOnStack()) { 234s 1949: if(total_size < len) { 234s 1949: 234s 1949: memcpy(buf + my_old_size, other.c_str(), other_size + 1); 234s 1949: 234s 1949: setLast(last - total_size); 234s 1949: } else { 234s 1949: 234s 1949: char* temp = new char[total_size + 1]; 234s 1949: 234s 1949: memcpy(temp, buf, my_old_size); 234s 1949: 234s 1949: setOnHeap(); 234s 1949: data.size = total_size; 234s 1949: data.capacity = data.size + 1; 234s 1949: data.ptr = temp; 234s 1949: 234s 1949: memcpy(data.ptr + my_old_size, other.c_str(), other_size + 1); 234s 1949: } 234s 1949: } else { 234s 1949: if(data.capacity > total_size) { 234s 1949: 234s 1949: data.size = total_size; 234s 1949: memcpy(data.ptr + my_old_size, other.c_str(), other_size + 1); 234s 1949: } else { 234s 1949: 234s 1949: data.capacity *= 2; 234s 1949: if(data.capacity <= total_size) 234s 1949: data.capacity = total_size + 1; 234s 1949: 234s 1949: char* temp = new char[data.capacity]; 234s 1949: 234s 1949: memcpy(temp, data.ptr, my_old_size); 234s 1949: 234s 1949: delete[] data.ptr; 234s 1949: 234s 1949: data.size = total_size; 234s 1949: data.ptr = temp; 234s 1949: 234s 1949: memcpy(data.ptr + my_old_size, other.c_str(), other_size + 1); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: String::String(String&& other) noexcept { 234s 1949: memcpy(buf, other.buf, len); 234s 1949: other.buf[0] = '\0'; 234s 1949: other.setLast(); 234s 1949: } 234s 1949: 234s 1949: String& String::operator=(String&& other) noexcept { 234s 1949: if(this != &other) { 234s 1949: if(!isOnStack()) 234s 1949: delete[] data.ptr; 234s 1949: memcpy(buf, other.buf, len); 234s 1949: other.buf[0] = '\0'; 234s 1949: other.setLast(); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: char String::operator[](size_type i) const { 234s 1949: return const_cast(this)->operator[](i); 234s 1949: } 234s 1949: 234s 1949: char& String::operator[](size_type i) { 234s 1949: if(isOnStack()) 234s 1949: return reinterpret_cast(buf)[i]; 234s 1949: return data.ptr[i]; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: # 3744 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: # 3744 "/usr/include/doctest/doctest.h" 3 4 234s 1949: 234s 1949: # 3744 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" 234s 1949: String::size_type String::size() const { 234s 1949: if(isOnStack()) 234s 1949: return last - (size_type(buf[last]) & 31); 234s 1949: return data.size; 234s 1949: } 234s 1949: 234s 1949: # 3750 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: String::size_type String::capacity() const { 234s 1949: if(isOnStack()) 234s 1949: return len; 234s 1949: return data.capacity; 234s 1949: } 234s 1949: 234s 1949: String String::substr(size_type pos, size_type cnt) && { 234s 1949: cnt = std::min(cnt, size() - pos); 234s 1949: char* cptr = c_str(); 234s 1949: memmove(cptr, cptr + pos, cnt); 234s 1949: setSize(cnt); 234s 1949: return std::move(*this); 234s 1949: } 234s 1949: 234s 1949: String String::substr(size_type pos, size_type cnt) const & { 234s 1949: cnt = std::min(cnt, size() - pos); 234s 1949: return String{ c_str() + pos, cnt }; 234s 1949: } 234s 1949: 234s 1949: String::size_type String::find(char ch, size_type pos) const { 234s 1949: const char* begin = c_str(); 234s 1949: const char* end = begin + size(); 234s 1949: const char* it = begin + pos; 234s 1949: for (; it < end && *it != ch; it++); 234s 1949: if (it < end) { return static_cast(it - begin); } 234s 1949: else { return npos; } 234s 1949: } 234s 1949: 234s 1949: String::size_type String::rfind(char ch, size_type pos) const { 234s 1949: const char* begin = c_str(); 234s 1949: const char* it = begin + std::min(pos, size() - 1); 234s 1949: for (; it >= begin && *it != ch; it--); 234s 1949: if (it >= begin) { return static_cast(it - begin); } 234s 1949: else { return npos; } 234s 1949: } 234s 1949: 234s 1949: int String::compare(const char* other, bool no_case) const { 234s 1949: if(no_case) 234s 1949: return doctest::stricmp(c_str(), other); 234s 1949: return std::strcmp(c_str(), other); 234s 1949: } 234s 1949: 234s 1949: int String::compare(const String& other, bool no_case) const { 234s 1949: return compare(other.c_str(), no_case); 234s 1949: } 234s 1949: 234s 1949: String operator+(const String& lhs, const String& rhs) { return String(lhs) += rhs; } 234s 1949: 234s 1949: bool operator==(const String& lhs, const String& rhs) { return lhs.compare(rhs) == 0; } 234s 1949: bool operator!=(const String& lhs, const String& rhs) { return lhs.compare(rhs) != 0; } 234s 1949: bool operator< (const String& lhs, const String& rhs) { return lhs.compare(rhs) < 0; } 234s 1949: bool operator> (const String& lhs, const String& rhs) { return lhs.compare(rhs) > 0; } 234s 1949: bool operator<=(const String& lhs, const String& rhs) { return (lhs != rhs) ? lhs.compare(rhs) < 0 : true; } 234s 1949: bool operator>=(const String& lhs, const String& rhs) { return (lhs != rhs) ? lhs.compare(rhs) > 0 : true; } 234s 1949: 234s 1949: std::ostream& operator<<(std::ostream& s, const String& in) { return s << in.c_str(); } 234s 1949: 234s 1949: Contains::Contains(const String& str) : string(str) { } 234s 1949: 234s 1949: bool Contains::checkWith(const String& other) const { 234s 1949: return strstr(other.c_str(), string.c_str()) != nullptr; 234s 1949: } 234s 1949: 234s 1949: String toString(const Contains& in) { 234s 1949: return "Contains( " + in.string + " )"; 234s 1949: } 234s 1949: 234s 1949: bool operator==(const String& lhs, const Contains& rhs) { return rhs.checkWith(lhs); } 234s 1949: bool operator==(const Contains& lhs, const String& rhs) { return lhs.checkWith(rhs); } 234s 1949: bool operator!=(const String& lhs, const Contains& rhs) { return !rhs.checkWith(lhs); } 234s 1949: bool operator!=(const Contains& lhs, const String& rhs) { return !lhs.checkWith(rhs); } 234s 1949: 234s 1949: namespace { 234s 1949: void color_to_stream(std::ostream&, Color::Enum) ; 234s 1949: } 234s 1949: 234s 1949: namespace Color { 234s 1949: std::ostream& operator<<(std::ostream& s, Color::Enum code) { 234s 1949: color_to_stream(s, code); 234s 1949: return s; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const char* assertString(assertType::Enum at) { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: switch(at) { 234s 1949: case assertType::DT_WARN: return "WARN"; 234s 1949: case assertType::DT_CHECK: return "CHECK"; 234s 1949: case assertType::DT_REQUIRE: return "REQUIRE"; 234s 1949: 234s 1949: case assertType::DT_WARN_FALSE: return "WARN_FALSE"; case assertType::DT_CHECK_FALSE: return "CHECK_FALSE"; case assertType::DT_REQUIRE_FALSE: return "REQUIRE_FALSE"; 234s 1949: 234s 1949: case assertType::DT_WARN_THROWS: return "WARN_THROWS"; case assertType::DT_CHECK_THROWS: return "CHECK_THROWS"; case assertType::DT_REQUIRE_THROWS: return "REQUIRE_THROWS"; 234s 1949: 234s 1949: case assertType::DT_WARN_THROWS_AS: return "WARN_THROWS_AS"; case assertType::DT_CHECK_THROWS_AS: return "CHECK_THROWS_AS"; case assertType::DT_REQUIRE_THROWS_AS: return "REQUIRE_THROWS_AS"; 234s 1949: 234s 1949: case assertType::DT_WARN_THROWS_WITH: return "WARN_THROWS_WITH"; case assertType::DT_CHECK_THROWS_WITH: return "CHECK_THROWS_WITH"; case assertType::DT_REQUIRE_THROWS_WITH: return "REQUIRE_THROWS_WITH"; 234s 1949: 234s 1949: case assertType::DT_WARN_THROWS_WITH_AS: return "WARN_THROWS_WITH_AS"; case assertType::DT_CHECK_THROWS_WITH_AS: return "CHECK_THROWS_WITH_AS"; case assertType::DT_REQUIRE_THROWS_WITH_AS: return "REQUIRE_THROWS_WITH_AS"; 234s 1949: 234s 1949: case assertType::DT_WARN_NOTHROW: return "WARN_NOTHROW"; case assertType::DT_CHECK_NOTHROW: return "CHECK_NOTHROW"; case assertType::DT_REQUIRE_NOTHROW: return "REQUIRE_NOTHROW"; 234s 1949: 234s 1949: case assertType::DT_WARN_EQ: return "WARN_EQ"; case assertType::DT_CHECK_EQ: return "CHECK_EQ"; case assertType::DT_REQUIRE_EQ: return "REQUIRE_EQ"; 234s 1949: case assertType::DT_WARN_NE: return "WARN_NE"; case assertType::DT_CHECK_NE: return "CHECK_NE"; case assertType::DT_REQUIRE_NE: return "REQUIRE_NE"; 234s 1949: case assertType::DT_WARN_GT: return "WARN_GT"; case assertType::DT_CHECK_GT: return "CHECK_GT"; case assertType::DT_REQUIRE_GT: return "REQUIRE_GT"; 234s 1949: case assertType::DT_WARN_LT: return "WARN_LT"; case assertType::DT_CHECK_LT: return "CHECK_LT"; case assertType::DT_REQUIRE_LT: return "REQUIRE_LT"; 234s 1949: case assertType::DT_WARN_GE: return "WARN_GE"; case assertType::DT_CHECK_GE: return "CHECK_GE"; case assertType::DT_REQUIRE_GE: return "REQUIRE_GE"; 234s 1949: case assertType::DT_WARN_LE: return "WARN_LE"; case assertType::DT_CHECK_LE: return "CHECK_LE"; case assertType::DT_REQUIRE_LE: return "REQUIRE_LE"; 234s 1949: 234s 1949: case assertType::DT_WARN_UNARY: return "WARN_UNARY"; case assertType::DT_CHECK_UNARY: return "CHECK_UNARY"; case assertType::DT_REQUIRE_UNARY: return "REQUIRE_UNARY"; 234s 1949: case assertType::DT_WARN_UNARY_FALSE: return "WARN_UNARY_FALSE"; case assertType::DT_CHECK_UNARY_FALSE: return "CHECK_UNARY_FALSE"; case assertType::DT_REQUIRE_UNARY_FALSE: return "REQUIRE_UNARY_FALSE"; 234s 1949: 234s 1949: default: throw_exception(std::logic_error( "/usr/include/doctest/doctest.h" ":" "3870" ": Internal doctest error: " "Tried stringifying invalid assert type!")); 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: const char* failureString(assertType::Enum at) { 234s 1949: if(at & assertType::is_warn) 234s 1949: return "WARNING"; 234s 1949: if(at & assertType::is_check) 234s 1949: return "ERROR"; 234s 1949: if(at & assertType::is_require) 234s 1949: return "FATAL ERROR"; 234s 1949: return ""; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 3887 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: # 3887 "/usr/include/doctest/doctest.h" 3 4 234s 1949: 234s 1949: # 3887 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic ignored "-Wnull-dereference" 234s 1949: 234s 1949: const char* skipPathFromFilename(const char* file) { 234s 1949: 234s 1949: if(getContextOptions()->no_path_in_filenames) { 234s 1949: auto back = std::strrchr(file, '\\'); 234s 1949: auto forward = std::strrchr(file, '/'); 234s 1949: if(back || forward) { 234s 1949: if(back > forward) 234s 1949: forward = back; 234s 1949: return forward + 1; 234s 1949: } 234s 1949: } else { 234s 1949: const auto prefixes = getContextOptions()->strip_file_prefixes; 234s 1949: const char separator = ':'; 234s 1949: String::size_type longest_match = 0U; 234s 1949: for(String::size_type pos = 0U; pos < prefixes.size(); ++pos) 234s 1949: { 234s 1949: const auto prefix_start = pos; 234s 1949: pos = std::min(prefixes.find(separator, prefix_start), prefixes.size()); 234s 1949: 234s 1949: const auto prefix_size = pos - prefix_start; 234s 1949: if(prefix_size > longest_match) 234s 1949: { 234s 1949: 234s 1949: if(0 == std::strncmp(prefixes.c_str() + prefix_start, file, prefix_size)) 234s 1949: { 234s 1949: longest_match = prefix_size; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: return &file[longest_match]; 234s 1949: } 234s 1949: 234s 1949: return file; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: # 3924 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: bool SubcaseSignature::operator==(const SubcaseSignature& other) const { 234s 1949: return m_line == other.m_line 234s 1949: && std::strcmp(m_file, other.m_file) == 0 234s 1949: && m_name == other.m_name; 234s 1949: } 234s 1949: 234s 1949: bool SubcaseSignature::operator<(const SubcaseSignature& other) const { 234s 1949: if(m_line != other.m_line) 234s 1949: return m_line < other.m_line; 234s 1949: if(std::strcmp(m_file, other.m_file) != 0) 234s 1949: return std::strcmp(m_file, other.m_file) < 0; 234s 1949: return m_name.compare(other.m_name) < 0; 234s 1949: } 234s 1949: 234s 1949: IContextScope::~IContextScope() = default; 234s 1949: 234s 1949: namespace detail { 234s 1949: void filldata::fill(std::ostream* stream, const void* in) { 234s 1949: if (in) { *stream << in; } 234s 1949: else { *stream << "nullptr"; } 234s 1949: } 234s 1949: 234s 1949: template 234s 1949: String toStreamLit(T t) { 234s 1949: std::ostream* os = tlssPush(); 234s 1949: os->operator<<(t); 234s 1949: return tlssPop(); 234s 1949: } 234s 1949: } 234s 1949: # 3965 "/usr/include/doctest/doctest.h" 3 4 234s 1949: String toString(String in) { return in; } 234s 1949: 234s 1949: String toString(std::nullptr_t) { return "nullptr"; } 234s 1949: 234s 1949: String toString(bool in) { return in ? "true" : "false"; } 234s 1949: 234s 1949: String toString(float in) { return toStreamLit(in); } 234s 1949: String toString(double in) { return toStreamLit(in); } 234s 1949: String toString(double long in) { return toStreamLit(in); } 234s 1949: 234s 1949: String toString(char in) { return toStreamLit(static_cast(in)); } 234s 1949: String toString(char signed in) { return toStreamLit(static_cast(in)); } 234s 1949: String toString(char unsigned in) { return toStreamLit(static_cast(in)); } 234s 1949: String toString(short in) { return toStreamLit(in); } 234s 1949: String toString(short unsigned in) { return toStreamLit(in); } 234s 1949: String toString(signed in) { return toStreamLit(in); } 234s 1949: String toString(unsigned in) { return toStreamLit(in); } 234s 1949: String toString(long in) { return toStreamLit(in); } 234s 1949: String toString(long unsigned in) { return toStreamLit(in); } 234s 1949: String toString(long long in) { return toStreamLit(in); } 234s 1949: String toString(long long unsigned in) { return toStreamLit(in); } 234s 1949: 234s 1949: Approx::Approx(double value) 234s 1949: : m_epsilon(static_cast(std::numeric_limits::epsilon()) * 100) 234s 1949: , m_scale(1.0) 234s 1949: , m_value(value) {} 234s 1949: 234s 1949: Approx Approx::operator()(double value) const { 234s 1949: Approx approx(value); 234s 1949: approx.epsilon(m_epsilon); 234s 1949: approx.scale(m_scale); 234s 1949: return approx; 234s 1949: } 234s 1949: 234s 1949: Approx& Approx::epsilon(double newEpsilon) { 234s 1949: m_epsilon = newEpsilon; 234s 1949: return *this; 234s 1949: } 234s 1949: Approx& Approx::scale(double newScale) { 234s 1949: m_scale = newScale; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: bool operator==(double lhs, const Approx& rhs) { 234s 1949: 234s 1949: return std::fabs(lhs - rhs.m_value) < 234s 1949: rhs.m_epsilon * (rhs.m_scale + std::max(std::fabs(lhs), std::fabs(rhs.m_value))); 234s 1949: } 234s 1949: bool operator==(const Approx& lhs, double rhs) { return operator==(rhs, lhs); } 234s 1949: bool operator!=(double lhs, const Approx& rhs) { return !operator==(lhs, rhs); } 234s 1949: bool operator!=(const Approx& lhs, double rhs) { return !operator==(rhs, lhs); } 234s 1949: bool operator<=(double lhs, const Approx& rhs) { return lhs < rhs.m_value || lhs == rhs; } 234s 1949: bool operator<=(const Approx& lhs, double rhs) { return lhs.m_value < rhs || lhs == rhs; } 234s 1949: bool operator>=(double lhs, const Approx& rhs) { return lhs > rhs.m_value || lhs == rhs; } 234s 1949: bool operator>=(const Approx& lhs, double rhs) { return lhs.m_value > rhs || lhs == rhs; } 234s 1949: bool operator<(double lhs, const Approx& rhs) { return lhs < rhs.m_value && lhs != rhs; } 234s 1949: bool operator<(const Approx& lhs, double rhs) { return lhs.m_value < rhs && lhs != rhs; } 234s 1949: bool operator>(double lhs, const Approx& rhs) { return lhs > rhs.m_value && lhs != rhs; } 234s 1949: bool operator>(const Approx& lhs, double rhs) { return lhs.m_value > rhs && lhs != rhs; } 234s 1949: 234s 1949: String toString(const Approx& in) { 234s 1949: return "Approx( " + doctest::toString(in.m_value) + " )"; 234s 1949: } 234s 1949: const ContextOptions* getContextOptions() { return g_cs; } 234s 1949: 234s 1949: 234s 1949: template 234s 1949: IsNaN::operator bool() const { 234s 1949: return std::isnan(value) ^ flipped; 234s 1949: } 234s 1949: 234s 1949: template struct IsNaN; 234s 1949: template struct IsNaN; 234s 1949: template struct IsNaN; 234s 1949: template 234s 1949: String toString(IsNaN in) { return String(in.flipped ? "! " : "") + "IsNaN( " + doctest::toString(in.value) + " )"; } 234s 1949: String toString(IsNaN in) { return toString(in); } 234s 1949: String toString(IsNaN in) { return toString(in); } 234s 1949: String toString(IsNaN in) { return toString(in); } 234s 1949: 234s 1949: } 234s 1949: # 4083 "/usr/include/doctest/doctest.h" 3 4 234s 1949: namespace doctest_detail_test_suite_ns { 234s 1949: 234s 1949: doctest::detail::TestSuite& getCurrentTestSuite() { 234s 1949: static doctest::detail::TestSuite data{}; 234s 1949: return data; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: namespace doctest { 234s 1949: namespace { 234s 1949: 234s 1949: 234s 1949: using reporterMap = std::map, reporterCreatorFunc>; 234s 1949: 234s 1949: reporterMap& getReporters() { 234s 1949: static reporterMap data; 234s 1949: return data; 234s 1949: } 234s 1949: reporterMap& getListeners() { 234s 1949: static reporterMap data; 234s 1949: return data; 234s 1949: } 234s 1949: } 234s 1949: namespace detail { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: bool checkIfShouldThrow(assertType::Enum at) { 234s 1949: if(at & assertType::is_require) 234s 1949: return true; 234s 1949: 234s 1949: if((at & assertType::is_check) 234s 1949: && getContextOptions()->abort_after > 0 && 234s 1949: (g_cs->numAssertsFailed + g_cs->numAssertsFailedCurrentTest_atomic) >= 234s 1949: getContextOptions()->abort_after) 234s 1949: return true; 234s 1949: 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: [[noreturn]] void throwException() { 234s 1949: g_cs->shouldLogCurrentException = false; 234s 1949: throw TestFailureException(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: namespace { 234s 1949: using namespace detail; 234s 1949: 234s 1949: 234s 1949: int wildcmp(const char* str, const char* wild, bool caseSensitive) { 234s 1949: const char* cp = str; 234s 1949: const char* mp = wild; 234s 1949: 234s 1949: while((*str) && (*wild != '*')) { 234s 1949: if((caseSensitive ? (*wild != *str) : (tolower(*wild) != tolower(*str))) && 234s 1949: (*wild != '?')) { 234s 1949: return 0; 234s 1949: } 234s 1949: wild++; 234s 1949: str++; 234s 1949: } 234s 1949: 234s 1949: while(*str) { 234s 1949: if(*wild == '*') { 234s 1949: if(!*++wild) { 234s 1949: return 1; 234s 1949: } 234s 1949: mp = wild; 234s 1949: cp = str + 1; 234s 1949: } else if((caseSensitive ? (*wild == *str) : (tolower(*wild) == tolower(*str))) || 234s 1949: (*wild == '?')) { 234s 1949: wild++; 234s 1949: str++; 234s 1949: } else { 234s 1949: wild = mp; 234s 1949: str = cp++; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: while(*wild == '*') { 234s 1949: wild++; 234s 1949: } 234s 1949: return !*wild; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool matchesAny(const char* name, const std::vector& filters, bool matchEmpty, 234s 1949: bool caseSensitive) { 234s 1949: if (filters.empty() && matchEmpty) 234s 1949: return true; 234s 1949: for (auto& curr : filters) 234s 1949: if (wildcmp(name, curr.c_str(), caseSensitive)) 234s 1949: return true; 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: unsigned long long hash(unsigned long long a, unsigned long long b) { 234s 1949: return (a << 5) + b; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: unsigned long long hash(const char* str) { 234s 1949: unsigned long long hash = 5381; 234s 1949: char c; 234s 1949: while ((c = *str++)) 234s 1949: hash = ((hash << 5) + hash) + c; 234s 1949: return hash; 234s 1949: } 234s 1949: 234s 1949: unsigned long long hash(const SubcaseSignature& sig) { 234s 1949: return hash(hash(hash(sig.m_file), hash(sig.m_name.c_str())), sig.m_line); 234s 1949: } 234s 1949: 234s 1949: unsigned long long hash(const std::vector& sigs, size_t count) { 234s 1949: unsigned long long running = 0; 234s 1949: auto end = sigs.begin() + count; 234s 1949: for (auto it = sigs.begin(); it != end; it++) { 234s 1949: running = hash(running, hash(*it)); 234s 1949: } 234s 1949: return running; 234s 1949: } 234s 1949: 234s 1949: unsigned long long hash(const std::vector& sigs) { 234s 1949: unsigned long long running = 0; 234s 1949: for (const SubcaseSignature& sig : sigs) { 234s 1949: running = hash(running, hash(sig)); 234s 1949: } 234s 1949: return running; 234s 1949: } 234s 1949: } 234s 1949: namespace detail { 234s 1949: bool Subcase::checkFilters() { 234s 1949: if (g_cs->subcaseStack.size() < size_t(g_cs->subcase_filter_levels)) { 234s 1949: if (!matchesAny(m_signature.m_name.c_str(), g_cs->filters[6], true, g_cs->case_sensitive)) 234s 1949: return true; 234s 1949: if (matchesAny(m_signature.m_name.c_str(), g_cs->filters[7], false, g_cs->case_sensitive)) 234s 1949: return true; 234s 1949: } 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: Subcase::Subcase(const String& name, const char* file, int line) 234s 1949: : m_signature({name, file, line}) { 234s 1949: if (!g_cs->reachedLeaf) { 234s 1949: if (g_cs->nextSubcaseStack.size() <= g_cs->subcaseStack.size() 234s 1949: || g_cs->nextSubcaseStack[g_cs->subcaseStack.size()] == m_signature) { 234s 1949: 234s 1949: if (checkFilters()) { return; } 234s 1949: 234s 1949: g_cs->subcaseStack.push_back(m_signature); 234s 1949: g_cs->currentSubcaseDepth++; 234s 1949: m_entered = true; 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->subcase_start(m_signature); 234s 1949: } 234s 1949: } else { 234s 1949: if (g_cs->subcaseStack[g_cs->currentSubcaseDepth] == m_signature) { 234s 1949: 234s 1949: g_cs->currentSubcaseDepth++; 234s 1949: m_entered = true; 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->subcase_start(m_signature); 234s 1949: } else if (g_cs->nextSubcaseStack.size() <= g_cs->currentSubcaseDepth 234s 1949: && g_cs->fullyTraversedSubcases.find(hash(hash(g_cs->subcaseStack, g_cs->currentSubcaseDepth), hash(m_signature))) 234s 1949: == g_cs->fullyTraversedSubcases.end()) { 234s 1949: if (checkFilters()) { return; } 234s 1949: 234s 1949: g_cs->nextSubcaseStack.clear(); 234s 1949: g_cs->nextSubcaseStack.insert(g_cs->nextSubcaseStack.end(), 234s 1949: g_cs->subcaseStack.begin(), g_cs->subcaseStack.begin() + g_cs->currentSubcaseDepth); 234s 1949: g_cs->nextSubcaseStack.push_back(m_signature); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 4265 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: # 4265 "/usr/include/doctest/doctest.h" 3 4 234s 1949: 234s 1949: # 4265 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: Subcase::~Subcase() { 234s 1949: if (m_entered) { 234s 1949: g_cs->currentSubcaseDepth--; 234s 1949: 234s 1949: if (!g_cs->reachedLeaf) { 234s 1949: 234s 1949: g_cs->fullyTraversedSubcases.insert(hash(g_cs->subcaseStack)); 234s 1949: g_cs->nextSubcaseStack.clear(); 234s 1949: g_cs->reachedLeaf = true; 234s 1949: } else if (g_cs->nextSubcaseStack.empty()) { 234s 1949: 234s 1949: g_cs->fullyTraversedSubcases.insert(hash(g_cs->subcaseStack)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if(std::uncaught_exception() 234s 1949: 234s 1949: && g_cs->shouldLogCurrentException) { 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_exception({"exception thrown in subcase - will translate later " "when the whole test case has been exited (cannot " "translate while there is an active exception)", false}) 234s 1949: 234s 1949: 234s 1949: 234s 1949: ; 234s 1949: g_cs->shouldLogCurrentException = false; 234s 1949: } 234s 1949: 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->subcase_end(); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 4301 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: Subcase::operator bool() const { return m_entered; } 234s 1949: 234s 1949: Result::Result(bool passed, const String& decomposition) 234s 1949: : m_passed(passed) 234s 1949: , m_decomp(decomposition) {} 234s 1949: 234s 1949: ExpressionDecomposer::ExpressionDecomposer(assertType::Enum at) 234s 1949: : m_at(at) {} 234s 1949: 234s 1949: TestSuite& TestSuite::operator*(const char* in) { 234s 1949: m_test_suite = in; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: TestCase::TestCase(funcType test, const char* file, unsigned line, const TestSuite& test_suite, 234s 1949: const String& type, int template_id) { 234s 1949: m_file = file; 234s 1949: m_line = line; 234s 1949: m_name = nullptr; 234s 1949: m_test_suite = test_suite.m_test_suite; 234s 1949: m_description = test_suite.m_description; 234s 1949: m_skip = test_suite.m_skip; 234s 1949: m_no_breaks = test_suite.m_no_breaks; 234s 1949: m_no_output = test_suite.m_no_output; 234s 1949: m_may_fail = test_suite.m_may_fail; 234s 1949: m_should_fail = test_suite.m_should_fail; 234s 1949: m_expected_failures = test_suite.m_expected_failures; 234s 1949: m_timeout = test_suite.m_timeout; 234s 1949: 234s 1949: m_test = test; 234s 1949: m_type = type; 234s 1949: m_template_id = template_id; 234s 1949: } 234s 1949: 234s 1949: TestCase::TestCase(const TestCase& other) 234s 1949: : TestCaseData() { 234s 1949: *this = other; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: TestCase& TestCase::operator=(const TestCase& other) { 234s 1949: TestCaseData::operator=(other); 234s 1949: m_test = other.m_test; 234s 1949: m_type = other.m_type; 234s 1949: m_template_id = other.m_template_id; 234s 1949: m_full_name = other.m_full_name; 234s 1949: 234s 1949: if(m_template_id != -1) 234s 1949: m_name = m_full_name.c_str(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: TestCase& TestCase::operator*(const char* in) { 234s 1949: m_name = in; 234s 1949: 234s 1949: if(m_template_id != -1) { 234s 1949: m_full_name = String(m_name) + "<" + m_type + ">"; 234s 1949: 234s 1949: m_name = m_full_name.c_str(); 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: bool TestCase::operator<(const TestCase& other) const { 234s 1949: 234s 1949: if(m_line != other.m_line) 234s 1949: return m_line < other.m_line; 234s 1949: const int name_cmp = strcmp(m_name, other.m_name); 234s 1949: if(name_cmp != 0) 234s 1949: return name_cmp < 0; 234s 1949: const int file_cmp = m_file.compare(other.m_file); 234s 1949: if(file_cmp != 0) 234s 1949: return file_cmp < 0; 234s 1949: return m_template_id < other.m_template_id; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: std::set& getRegisteredTests() { 234s 1949: static std::set data; 234s 1949: return data; 234s 1949: } 234s 1949: } 234s 1949: namespace { 234s 1949: using namespace detail; 234s 1949: 234s 1949: bool fileOrderComparator(const TestCase* lhs, const TestCase* rhs) { 234s 1949: 234s 1949: 234s 1949: const int res = lhs->m_file.compare(rhs->m_file, bool(0)); 234s 1949: if(res != 0) 234s 1949: return res < 0; 234s 1949: if(lhs->m_line != rhs->m_line) 234s 1949: return lhs->m_line < rhs->m_line; 234s 1949: return lhs->m_template_id < rhs->m_template_id; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool suiteOrderComparator(const TestCase* lhs, const TestCase* rhs) { 234s 1949: const int res = std::strcmp(lhs->m_test_suite, rhs->m_test_suite); 234s 1949: if(res != 0) 234s 1949: return res < 0; 234s 1949: return fileOrderComparator(lhs, rhs); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool nameOrderComparator(const TestCase* lhs, const TestCase* rhs) { 234s 1949: const int res = std::strcmp(lhs->m_name, rhs->m_name); 234s 1949: if(res != 0) 234s 1949: return res < 0; 234s 1949: return suiteOrderComparator(lhs, rhs); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void color_to_stream(std::ostream& s, Color::Enum code) { 234s 1949: static_cast(s); 234s 1949: static_cast(code); 234s 1949: 234s 1949: if(g_no_colors || 234s 1949: (isatty(1) == false && getContextOptions()->force_colors == false)) 234s 1949: return; 234s 1949: 234s 1949: auto col = ""; 234s 1949: 234s 1949: switch(code) { 234s 1949: case Color::Red: col = "[0;31m"; break; 234s 1949: case Color::Green: col = "[0;32m"; break; 234s 1949: case Color::Blue: col = "[0;34m"; break; 234s 1949: case Color::Cyan: col = "[0;36m"; break; 234s 1949: case Color::Yellow: col = "[0;33m"; break; 234s 1949: case Color::Grey: col = "[1;30m"; break; 234s 1949: case Color::LightGrey: col = "[0;37m"; break; 234s 1949: case Color::BrightRed: col = "[1;31m"; break; 234s 1949: case Color::BrightGreen: col = "[1;32m"; break; 234s 1949: case Color::BrightWhite: col = "[1;37m"; break; 234s 1949: case Color::Bright: 234s 1949: case Color::None: 234s 1949: case Color::White: 234s 1949: default: col = "[0m"; 234s 1949: } 234s 1949: 234s 1949: s << "\033" << col; 234s 1949: # 4490 "/usr/include/doctest/doctest.h" 3 4 234s 1949: } 234s 1949: 234s 1949: 234s 1949: std::vector& getExceptionTranslators() { 234s 1949: static std::vector data; 234s 1949: return data; 234s 1949: } 234s 1949: 234s 1949: String translateActiveException() { 234s 1949: 234s 1949: String res; 234s 1949: auto& translators = getExceptionTranslators(); 234s 1949: for(auto& curr : translators) 234s 1949: if(curr->translate(res)) 234s 1949: return res; 234s 1949: 234s 1949: 234s 1949: # 4506 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: # 4506 "/usr/include/doctest/doctest.h" 3 4 234s 1949: 234s 1949: # 4506 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic ignored "-Wcatch-value" 234s 1949: try { 234s 1949: throw; 234s 1949: } catch(std::exception& ex) { 234s 1949: return ex.what(); 234s 1949: } catch(std::string& msg) { 234s 1949: return msg.c_str(); 234s 1949: } catch(const char* msg) { 234s 1949: return msg; 234s 1949: } catch(...) { 234s 1949: return "unknown exception"; 234s 1949: } 234s 1949: 234s 1949: # 4518 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: namespace detail { 234s 1949: 234s 1949: int regTest(const TestCase& tc) { 234s 1949: getRegisteredTests().insert(tc); 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: int setTestSuite(const TestSuite& ts) { 234s 1949: doctest_detail_test_suite_ns::getCurrentTestSuite() = ts; 234s 1949: return 0; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: class ErrnoGuard { 234s 1949: public: 234s 1949: ErrnoGuard() : m_oldErrno((*__errno_location ())) {} 234s 1949: ~ErrnoGuard() { (*__errno_location ()) = m_oldErrno; } 234s 1949: private: 234s 1949: int m_oldErrno; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: bool isDebuggerActive() { 234s 1949: ErrnoGuard guard; 234s 1949: std::ifstream in("/proc/self/status"); 234s 1949: for(std::string line; std::getline(in, line);) { 234s 1949: static const int PREFIX_LEN = 11; 234s 1949: if(line.compare(0, PREFIX_LEN, "TracerPid:\t") == 0) { 234s 1949: return line.length() > PREFIX_LEN && line[PREFIX_LEN] != '0'; 234s 1949: } 234s 1949: } 234s 1949: return false; 234s 1949: } 234s 1949: # 4597 "/usr/include/doctest/doctest.h" 3 4 234s 1949: void registerExceptionTranslatorImpl(const IExceptionTranslator* et) { 234s 1949: if(std::find(getExceptionTranslators().begin(), getExceptionTranslators().end(), et) == 234s 1949: getExceptionTranslators().end()) 234s 1949: getExceptionTranslators().push_back(et); 234s 1949: } 234s 1949: 234s 1949: thread_local std::vector g_infoContexts; 234s 1949: 234s 1949: ContextScopeBase::ContextScopeBase() { 234s 1949: g_infoContexts.push_back(this); 234s 1949: } 234s 1949: 234s 1949: ContextScopeBase::ContextScopeBase(ContextScopeBase&& other) noexcept { 234s 1949: if (other.need_to_destroy) { 234s 1949: other.destroy(); 234s 1949: } 234s 1949: other.need_to_destroy = false; 234s 1949: g_infoContexts.push_back(this); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 4618 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic push 234s 1949: # 4618 "/usr/include/doctest/doctest.h" 3 4 234s 1949: 234s 1949: # 4618 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void ContextScopeBase::destroy() { 234s 1949: 234s 1949: 234s 1949: 234s 1949: if(std::uncaught_exception()) { 234s 1949: 234s 1949: std::ostringstream s; 234s 1949: this->stringify(&s); 234s 1949: g_cs->stringifiedContexts.push_back(s.str().c_str()); 234s 1949: } 234s 1949: g_infoContexts.pop_back(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 4638 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: } 234s 1949: namespace { 234s 1949: using namespace detail; 234s 1949: # 4653 "/usr/include/doctest/doctest.h" 3 4 234s 1949: void reportFatal(const std::string&); 234s 1949: # 4805 "/usr/include/doctest/doctest.h" 3 4 234s 1949: struct SignalDefs 234s 1949: { 234s 1949: int id; 234s 1949: const char* name; 234s 1949: }; 234s 1949: SignalDefs signalDefs[] = {{2, "SIGINT - Terminal interrupt signal"}, 234s 1949: {4, "SIGILL - Illegal instruction signal"}, 234s 1949: {8, "SIGFPE - Floating point error signal"}, 234s 1949: {11, "SIGSEGV - Segmentation violation signal"}, 234s 1949: {15, "SIGTERM - Termination request signal"}, 234s 1949: {6, "SIGABRT - Abort (abnormal termination) signal"}}; 234s 1949: 234s 1949: struct FatalConditionHandler 234s 1949: { 234s 1949: static bool isSet; 234s 1949: static struct sigaction oldSigActions[(sizeof(signalDefs) / sizeof(signalDefs[0]))]; 234s 1949: static stack_t oldSigStack; 234s 1949: static size_t altStackSize; 234s 1949: static char* altStackMem; 234s 1949: 234s 1949: static void handleSignal(int sig) { 234s 1949: const char* name = ""; 234s 1949: for(std::size_t i = 0; i < (sizeof(signalDefs) / sizeof(signalDefs[0])); ++i) { 234s 1949: SignalDefs& def = signalDefs[i]; 234s 1949: if(sig == def.id) { 234s 1949: name = def.name; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: reset(); 234s 1949: reportFatal(name); 234s 1949: raise(sig); 234s 1949: } 234s 1949: 234s 1949: static void allocateAltStackMem() { 234s 1949: altStackMem = new char[altStackSize]; 234s 1949: } 234s 1949: 234s 1949: static void freeAltStackMem() { 234s 1949: delete[] altStackMem; 234s 1949: } 234s 1949: 234s 1949: FatalConditionHandler() { 234s 1949: isSet = true; 234s 1949: stack_t sigStack; 234s 1949: sigStack.ss_sp = altStackMem; 234s 1949: sigStack.ss_size = altStackSize; 234s 1949: sigStack.ss_flags = 0; 234s 1949: sigaltstack(&sigStack, &oldSigStack); 234s 1949: struct sigaction sa = {}; 234s 1949: sa.__sigaction_handler.sa_handler = handleSignal; 234s 1949: sa.sa_flags = 0x08000000; 234s 1949: for(std::size_t i = 0; i < (sizeof(signalDefs) / sizeof(signalDefs[0])); ++i) { 234s 1949: sigaction(signalDefs[i].id, &sa, &oldSigActions[i]); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: ~FatalConditionHandler() { reset(); } 234s 1949: static void reset() { 234s 1949: if(isSet) { 234s 1949: 234s 1949: for(std::size_t i = 0; i < (sizeof(signalDefs) / sizeof(signalDefs[0])); ++i) { 234s 1949: sigaction(signalDefs[i].id, &oldSigActions[i], nullptr); 234s 1949: } 234s 1949: 234s 1949: sigaltstack(&oldSigStack, nullptr); 234s 1949: isSet = false; 234s 1949: } 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: bool FatalConditionHandler::isSet = false; 234s 1949: struct sigaction FatalConditionHandler::oldSigActions[(sizeof(signalDefs) / sizeof(signalDefs[0]))] = {}; 234s 1949: stack_t FatalConditionHandler::oldSigStack = {}; 234s 1949: size_t FatalConditionHandler::altStackSize = 4 * sysconf (_SC_SIGSTKSZ); 234s 1949: char* FatalConditionHandler::altStackMem = nullptr; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: namespace { 234s 1949: using namespace detail; 234s 1949: # 4897 "/usr/include/doctest/doctest.h" 3 4 234s 1949: void addAssert(assertType::Enum at) { 234s 1949: if((at & assertType::is_warn) == 0) 234s 1949: g_cs->numAssertsCurrentTest_atomic++; 234s 1949: } 234s 1949: 234s 1949: void addFailedAssert(assertType::Enum at) { 234s 1949: if((at & assertType::is_warn) == 0) 234s 1949: g_cs->numAssertsFailedCurrentTest_atomic++; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void reportFatal(const std::string& message) { 234s 1949: g_cs->failure_flags |= TestCaseFailureReason::Crash; 234s 1949: 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_exception({message.c_str(), true}); 234s 1949: 234s 1949: while (g_cs->subcaseStack.size()) { 234s 1949: g_cs->subcaseStack.pop_back(); 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->subcase_end(); 234s 1949: } 234s 1949: 234s 1949: g_cs->finalizeTestCaseData(); 234s 1949: 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_end(*g_cs); 234s 1949: 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_run_end(*g_cs); 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: AssertData::AssertData(assertType::Enum at, const char* file, int line, const char* expr, 234s 1949: const char* exception_type, const StringContains& exception_string) 234s 1949: : m_test_case(g_cs->currentTest), m_at(at), m_file(file), m_line(line), m_expr(expr), 234s 1949: m_failed(true), m_threw(false), m_threw_as(false), m_exception_type(exception_type), 234s 1949: m_exception_string(exception_string) { 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: 234s 1949: namespace detail { 234s 1949: ResultBuilder::ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr, 234s 1949: const char* exception_type, const String& exception_string) 234s 1949: : AssertData(at, file, line, expr, exception_type, exception_string) { } 234s 1949: 234s 1949: ResultBuilder::ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr, 234s 1949: const char* exception_type, const Contains& exception_string) 234s 1949: : AssertData(at, file, line, expr, exception_type, exception_string) { } 234s 1949: 234s 1949: void ResultBuilder::setResult(const Result& res) { 234s 1949: m_decomp = res.m_decomp; 234s 1949: m_failed = !res.m_passed; 234s 1949: } 234s 1949: 234s 1949: void ResultBuilder::translateException() { 234s 1949: m_threw = true; 234s 1949: m_exception = translateActiveException(); 234s 1949: } 234s 1949: 234s 1949: bool ResultBuilder::log() { 234s 1949: if(m_at & assertType::is_throws) { 234s 1949: m_failed = !m_threw; 234s 1949: } else if((m_at & assertType::is_throws_as) && (m_at & assertType::is_throws_with)) { 234s 1949: m_failed = !m_threw_as || !m_exception_string.check(m_exception); 234s 1949: } else if(m_at & assertType::is_throws_as) { 234s 1949: m_failed = !m_threw_as; 234s 1949: } else if(m_at & assertType::is_throws_with) { 234s 1949: m_failed = !m_exception_string.check(m_exception); 234s 1949: } else if(m_at & assertType::is_nothrow) { 234s 1949: m_failed = m_threw; 234s 1949: } 234s 1949: 234s 1949: if(m_exception.size()) 234s 1949: m_exception = "\"" + m_exception + "\""; 234s 1949: 234s 1949: if(is_running_in_test) { 234s 1949: addAssert(m_at); 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->log_assert(*this); 234s 1949: 234s 1949: if(m_failed) 234s 1949: addFailedAssert(m_at); 234s 1949: } else if(m_failed) { 234s 1949: failed_out_of_a_testing_context(*this); 234s 1949: } 234s 1949: 234s 1949: return m_failed && isDebuggerActive() && !getContextOptions()->no_breaks && 234s 1949: (g_cs->currentTest == nullptr || !g_cs->currentTest->m_no_breaks); 234s 1949: } 234s 1949: 234s 1949: void ResultBuilder::react() const { 234s 1949: if(m_failed && checkIfShouldThrow(m_at)) 234s 1949: throwException(); 234s 1949: } 234s 1949: 234s 1949: void failed_out_of_a_testing_context(const AssertData& ad) { 234s 1949: if(g_cs->ah) 234s 1949: g_cs->ah(ad); 234s 1949: else 234s 1949: std::abort(); 234s 1949: } 234s 1949: 234s 1949: bool decomp_assert(assertType::Enum at, const char* file, int line, const char* expr, 234s 1949: const Result& result) { 234s 1949: bool failed = !result.m_passed; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: do { if(!is_running_in_test) { if(failed) { ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; rb.m_decomp = result.m_decomp; failed_out_of_a_testing_context(rb); if(isDebuggerActive() && !getContextOptions()->no_breaks) raise(5); if(checkIfShouldThrow(at)) throwException(); } return !failed; } } while(false); 234s 1949: ResultBuilder rb(at, file, line, expr); rb.m_failed = failed; if(rb.m_failed || getContextOptions()->success) rb.m_decomp = result.m_decomp; if(rb.log()) raise(5); if(rb.m_failed && checkIfShouldThrow(at)) throwException(); 234s 1949: return !failed; 234s 1949: } 234s 1949: 234s 1949: MessageBuilder::MessageBuilder(const char* file, int line, assertType::Enum severity) { 234s 1949: m_stream = tlssPush(); 234s 1949: m_file = file; 234s 1949: m_line = line; 234s 1949: m_severity = severity; 234s 1949: } 234s 1949: 234s 1949: MessageBuilder::~MessageBuilder() { 234s 1949: if (!logged) 234s 1949: tlssPop(); 234s 1949: } 234s 1949: 234s 1949: IExceptionTranslator::~IExceptionTranslator() = default; 234s 1949: 234s 1949: bool MessageBuilder::log() { 234s 1949: if (!logged) { 234s 1949: m_string = tlssPop(); 234s 1949: logged = true; 234s 1949: } 234s 1949: 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->log_message(*this); 234s 1949: 234s 1949: const bool isWarn = m_severity & assertType::is_warn; 234s 1949: 234s 1949: 234s 1949: if(!isWarn) { 234s 1949: addAssert(m_severity); 234s 1949: addFailedAssert(m_severity); 234s 1949: } 234s 1949: 234s 1949: return isDebuggerActive() && !getContextOptions()->no_breaks && !isWarn && 234s 1949: (g_cs->currentTest == nullptr || !g_cs->currentTest->m_no_breaks); 234s 1949: } 234s 1949: 234s 1949: void MessageBuilder::react() { 234s 1949: if(m_severity & assertType::is_require) 234s 1949: throwException(); 234s 1949: } 234s 1949: } 234s 1949: namespace { 234s 1949: using namespace detail; 234s 1949: # 5061 "/usr/include/doctest/doctest.h" 3 4 234s 1949: class XmlEncode { 234s 1949: public: 234s 1949: enum ForWhat { ForTextNodes, ForAttributes }; 234s 1949: 234s 1949: XmlEncode( std::string const& str, ForWhat forWhat = ForTextNodes ); 234s 1949: 234s 1949: void encodeTo( std::ostream& os ) const; 234s 1949: 234s 1949: friend std::ostream& operator << ( std::ostream& os, XmlEncode const& xmlEncode ); 234s 1949: 234s 1949: private: 234s 1949: std::string m_str; 234s 1949: ForWhat m_forWhat; 234s 1949: }; 234s 1949: 234s 1949: class XmlWriter { 234s 1949: public: 234s 1949: 234s 1949: class ScopedElement { 234s 1949: public: 234s 1949: ScopedElement( XmlWriter* writer ); 234s 1949: 234s 1949: ScopedElement( ScopedElement&& other ) noexcept; 234s 1949: ScopedElement& operator=( ScopedElement&& other ) noexcept; 234s 1949: 234s 1949: ~ScopedElement(); 234s 1949: 234s 1949: ScopedElement& writeText( std::string const& text, bool indent = true ); 234s 1949: 234s 1949: template 234s 1949: ScopedElement& writeAttribute( std::string const& name, T const& attribute ) { 234s 1949: m_writer->writeAttribute( name, attribute ); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: private: 234s 1949: mutable XmlWriter* m_writer = nullptr; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: XmlWriter( std::ostream& os = std::cout ); 234s 1949: 234s 1949: 234s 1949: 234s 1949: ~XmlWriter(); 234s 1949: 234s 1949: XmlWriter( XmlWriter const& ) = delete; 234s 1949: XmlWriter& operator=( XmlWriter const& ) = delete; 234s 1949: 234s 1949: XmlWriter& startElement( std::string const& name ); 234s 1949: 234s 1949: ScopedElement scopedElement( std::string const& name ); 234s 1949: 234s 1949: XmlWriter& endElement(); 234s 1949: 234s 1949: XmlWriter& writeAttribute( std::string const& name, std::string const& attribute ); 234s 1949: 234s 1949: XmlWriter& writeAttribute( std::string const& name, const char* attribute ); 234s 1949: 234s 1949: XmlWriter& writeAttribute( std::string const& name, bool attribute ); 234s 1949: 234s 1949: template 234s 1949: XmlWriter& writeAttribute( std::string const& name, T const& attribute ) { 234s 1949: std::stringstream rss; 234s 1949: rss << attribute; 234s 1949: return writeAttribute( name, rss.str() ); 234s 1949: } 234s 1949: 234s 1949: XmlWriter& writeText( std::string const& text, bool indent = true ); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void ensureTagClosed(); 234s 1949: 234s 1949: void writeDeclaration(); 234s 1949: 234s 1949: private: 234s 1949: 234s 1949: void newlineIfNecessary(); 234s 1949: 234s 1949: bool m_tagIsOpen = false; 234s 1949: bool m_needsNewline = false; 234s 1949: std::vector m_tags; 234s 1949: std::string m_indent; 234s 1949: std::ostream& m_os; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: using uchar = unsigned char; 234s 1949: 234s 1949: namespace { 234s 1949: 234s 1949: size_t trailingBytes(unsigned char c) { 234s 1949: if ((c & 0xE0) == 0xC0) { 234s 1949: return 2; 234s 1949: } 234s 1949: if ((c & 0xF0) == 0xE0) { 234s 1949: return 3; 234s 1949: } 234s 1949: if ((c & 0xF8) == 0xF0) { 234s 1949: return 4; 234s 1949: } 234s 1949: throw_exception(std::logic_error( "/usr/include/doctest/doctest.h" ":" "5171" ": Internal doctest error: " "Invalid multibyte utf-8 start byte encountered")); 234s 1949: } 234s 1949: 234s 1949: uint32_t headerValue(unsigned char c) { 234s 1949: if ((c & 0xE0) == 0xC0) { 234s 1949: return c & 0x1F; 234s 1949: } 234s 1949: if ((c & 0xF0) == 0xE0) { 234s 1949: return c & 0x0F; 234s 1949: } 234s 1949: if ((c & 0xF8) == 0xF0) { 234s 1949: return c & 0x07; 234s 1949: } 234s 1949: throw_exception(std::logic_error( "/usr/include/doctest/doctest.h" ":" "5184" ": Internal doctest error: " "Invalid multibyte utf-8 start byte encountered")); 234s 1949: } 234s 1949: 234s 1949: void hexEscapeChar(std::ostream& os, unsigned char c) { 234s 1949: std::ios_base::fmtflags f(os.flags()); 234s 1949: os << "\\x" 234s 1949: << std::uppercase << std::hex << std::setfill('0') << std::setw(2) 234s 1949: << static_cast(c); 234s 1949: os.flags(f); 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: XmlEncode::XmlEncode( std::string const& str, ForWhat forWhat ) 234s 1949: : m_str( str ), 234s 1949: m_forWhat( forWhat ) 234s 1949: {} 234s 1949: 234s 1949: void XmlEncode::encodeTo( std::ostream& os ) const { 234s 1949: 234s 1949: 234s 1949: 234s 1949: for( std::size_t idx = 0; idx < m_str.size(); ++ idx ) { 234s 1949: uchar c = m_str[idx]; 234s 1949: switch (c) { 234s 1949: case '<': os << "<"; break; 234s 1949: case '&': os << "&"; break; 234s 1949: 234s 1949: case '>': 234s 1949: 234s 1949: if (idx > 2 && m_str[idx - 1] == ']' && m_str[idx - 2] == ']') 234s 1949: os << ">"; 234s 1949: else 234s 1949: os << c; 234s 1949: break; 234s 1949: 234s 1949: case '\"': 234s 1949: if (m_forWhat == ForAttributes) 234s 1949: os << """; 234s 1949: else 234s 1949: os << c; 234s 1949: break; 234s 1949: 234s 1949: default: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (c < 0x09 || (c > 0x0D && c < 0x20) || c == 0x7F) { 234s 1949: hexEscapeChar(os, c); 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if (c < 0x7F) { 234s 1949: os << c; 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if (c < 0xC0 || 234s 1949: c >= 0xF8) { 234s 1949: hexEscapeChar(os, c); 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: auto encBytes = trailingBytes(c); 234s 1949: 234s 1949: if (idx + encBytes - 1 >= m_str.size()) { 234s 1949: hexEscapeChar(os, c); 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: bool valid = true; 234s 1949: uint32_t value = headerValue(c); 234s 1949: for (std::size_t n = 1; n < encBytes; ++n) { 234s 1949: uchar nc = m_str[idx + n]; 234s 1949: valid &= ((nc & 0xC0) == 0x80); 234s 1949: value = (value << 6) | (nc & 0x3F); 234s 1949: } 234s 1949: 234s 1949: if ( 234s 1949: 234s 1949: (!valid) || 234s 1949: 234s 1949: (value < 0x80) || 234s 1949: ( value < 0x800 && encBytes > 2) || 234s 1949: (0x800 < value && value < 0x10000 && encBytes > 3) || 234s 1949: 234s 1949: (value >= 0x110000) 234s 1949: ) { 234s 1949: hexEscapeChar(os, c); 234s 1949: break; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: for (std::size_t n = 0; n < encBytes; ++n) { 234s 1949: os << m_str[idx + n]; 234s 1949: } 234s 1949: idx += encBytes - 1; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: std::ostream& operator << ( std::ostream& os, XmlEncode const& xmlEncode ) { 234s 1949: xmlEncode.encodeTo( os ); 234s 1949: return os; 234s 1949: } 234s 1949: 234s 1949: XmlWriter::ScopedElement::ScopedElement( XmlWriter* writer ) 234s 1949: : m_writer( writer ) 234s 1949: {} 234s 1949: 234s 1949: XmlWriter::ScopedElement::ScopedElement( ScopedElement&& other ) noexcept 234s 1949: : m_writer( other.m_writer ){ 234s 1949: other.m_writer = nullptr; 234s 1949: } 234s 1949: XmlWriter::ScopedElement& XmlWriter::ScopedElement::operator=( ScopedElement&& other ) noexcept { 234s 1949: if ( m_writer ) { 234s 1949: m_writer->endElement(); 234s 1949: } 234s 1949: m_writer = other.m_writer; 234s 1949: other.m_writer = nullptr; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: XmlWriter::ScopedElement::~ScopedElement() { 234s 1949: if( m_writer ) 234s 1949: m_writer->endElement(); 234s 1949: } 234s 1949: 234s 1949: XmlWriter::ScopedElement& XmlWriter::ScopedElement::writeText( std::string const& text, bool indent ) { 234s 1949: m_writer->writeText( text, indent ); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: XmlWriter::XmlWriter( std::ostream& os ) : m_os( os ) 234s 1949: { 234s 1949: 234s 1949: } 234s 1949: 234s 1949: XmlWriter::~XmlWriter() { 234s 1949: while( !m_tags.empty() ) 234s 1949: endElement(); 234s 1949: } 234s 1949: 234s 1949: XmlWriter& XmlWriter::startElement( std::string const& name ) { 234s 1949: ensureTagClosed(); 234s 1949: newlineIfNecessary(); 234s 1949: m_os << m_indent << '<' << name; 234s 1949: m_tags.push_back( name ); 234s 1949: m_indent += " "; 234s 1949: m_tagIsOpen = true; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: XmlWriter::ScopedElement XmlWriter::scopedElement( std::string const& name ) { 234s 1949: ScopedElement scoped( this ); 234s 1949: startElement( name ); 234s 1949: return scoped; 234s 1949: } 234s 1949: 234s 1949: XmlWriter& XmlWriter::endElement() { 234s 1949: newlineIfNecessary(); 234s 1949: m_indent = m_indent.substr( 0, m_indent.size()-2 ); 234s 1949: if( m_tagIsOpen ) { 234s 1949: m_os << "/>"; 234s 1949: m_tagIsOpen = false; 234s 1949: } 234s 1949: else { 234s 1949: m_os << m_indent << ""; 234s 1949: } 234s 1949: m_os << std::endl; 234s 1949: m_tags.pop_back(); 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: XmlWriter& XmlWriter::writeAttribute( std::string const& name, std::string const& attribute ) { 234s 1949: if( !name.empty() && !attribute.empty() ) 234s 1949: m_os << ' ' << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << '"'; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: XmlWriter& XmlWriter::writeAttribute( std::string const& name, const char* attribute ) { 234s 1949: if( !name.empty() && attribute && attribute[0] != '\0' ) 234s 1949: m_os << ' ' << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << '"'; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: XmlWriter& XmlWriter::writeAttribute( std::string const& name, bool attribute ) { 234s 1949: m_os << ' ' << name << "=\"" << ( attribute ? "true" : "false" ) << '"'; 234s 1949: return *this; 234s 1949: } 234s 1949: 234s 1949: XmlWriter& XmlWriter::writeText( std::string const& text, bool indent ) { 234s 1949: if( !text.empty() ){ 234s 1949: bool tagWasOpen = m_tagIsOpen; 234s 1949: ensureTagClosed(); 234s 1949: if( tagWasOpen && indent ) 234s 1949: m_os << m_indent; 234s 1949: m_os << XmlEncode( text ); 234s 1949: m_needsNewline = true; 234s 1949: } 234s 1949: return *this; 234s 1949: } 234s 1949: # 5416 "/usr/include/doctest/doctest.h" 3 4 234s 1949: void XmlWriter::ensureTagClosed() { 234s 1949: if( m_tagIsOpen ) { 234s 1949: m_os << ">" << std::endl; 234s 1949: m_tagIsOpen = false; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: void XmlWriter::writeDeclaration() { 234s 1949: m_os << "\n"; 234s 1949: } 234s 1949: 234s 1949: void XmlWriter::newlineIfNecessary() { 234s 1949: if( m_needsNewline ) { 234s 1949: m_os << std::endl; 234s 1949: m_needsNewline = false; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct XmlReporter : public IReporter 234s 1949: { 234s 1949: XmlWriter xml; 234s 1949: std::mutex mutex; 234s 1949: 234s 1949: 234s 1949: const ContextOptions& opt; 234s 1949: const TestCaseData* tc = nullptr; 234s 1949: 234s 1949: XmlReporter(const ContextOptions& co) 234s 1949: : xml(*co.cout) 234s 1949: , opt(co) {} 234s 1949: 234s 1949: void log_contexts() { 234s 1949: int num_contexts = get_num_active_contexts(); 234s 1949: if(num_contexts) { 234s 1949: auto contexts = get_active_contexts(); 234s 1949: std::stringstream ss; 234s 1949: for(int i = 0; i < num_contexts; ++i) { 234s 1949: contexts[i]->stringify(&ss); 234s 1949: xml.scopedElement("Info").writeText(ss.str()); 234s 1949: ss.str(""); 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: unsigned line(unsigned l) const { return opt.no_line_numbers ? 0 : l; } 234s 1949: 234s 1949: void test_case_start_impl(const TestCaseData& in) { 234s 1949: bool open_ts_tag = false; 234s 1949: if(tc != nullptr) { 234s 1949: if(std::strcmp(tc->m_test_suite, in.m_test_suite) != 0) { 234s 1949: xml.endElement(); 234s 1949: open_ts_tag = true; 234s 1949: } 234s 1949: } 234s 1949: else { 234s 1949: open_ts_tag = true; 234s 1949: } 234s 1949: 234s 1949: if(open_ts_tag) { 234s 1949: xml.startElement("TestSuite"); 234s 1949: xml.writeAttribute("name", in.m_test_suite); 234s 1949: } 234s 1949: 234s 1949: tc = ∈ 234s 1949: xml.startElement("TestCase") 234s 1949: .writeAttribute("name", in.m_name) 234s 1949: .writeAttribute("filename", skipPathFromFilename(in.m_file.c_str())) 234s 1949: .writeAttribute("line", line(in.m_line)) 234s 1949: .writeAttribute("description", in.m_description); 234s 1949: 234s 1949: if(Approx(in.m_timeout) != 0) 234s 1949: xml.writeAttribute("timeout", in.m_timeout); 234s 1949: if(in.m_may_fail) 234s 1949: xml.writeAttribute("may_fail", true); 234s 1949: if(in.m_should_fail) 234s 1949: xml.writeAttribute("should_fail", true); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void report_query(const QueryData& in) override { 234s 1949: test_run_start(); 234s 1949: if(opt.list_reporters) { 234s 1949: for(auto& curr : getListeners()) 234s 1949: xml.scopedElement("Listener") 234s 1949: .writeAttribute("priority", curr.first.first) 234s 1949: .writeAttribute("name", curr.first.second); 234s 1949: for(auto& curr : getReporters()) 234s 1949: xml.scopedElement("Reporter") 234s 1949: .writeAttribute("priority", curr.first.first) 234s 1949: .writeAttribute("name", curr.first.second); 234s 1949: } else if(opt.count || opt.list_test_cases) { 234s 1949: for(unsigned i = 0; i < in.num_data; ++i) { 234s 1949: xml.scopedElement("TestCase").writeAttribute("name", in.data[i]->m_name) 234s 1949: .writeAttribute("testsuite", in.data[i]->m_test_suite) 234s 1949: .writeAttribute("filename", skipPathFromFilename(in.data[i]->m_file.c_str())) 234s 1949: .writeAttribute("line", line(in.data[i]->m_line)) 234s 1949: .writeAttribute("skipped", in.data[i]->m_skip); 234s 1949: } 234s 1949: xml.scopedElement("OverallResultsTestCases") 234s 1949: .writeAttribute("unskipped", in.run_stats->numTestCasesPassingFilters); 234s 1949: } else if(opt.list_test_suites) { 234s 1949: for(unsigned i = 0; i < in.num_data; ++i) 234s 1949: xml.scopedElement("TestSuite").writeAttribute("name", in.data[i]->m_test_suite); 234s 1949: xml.scopedElement("OverallResultsTestCases") 234s 1949: .writeAttribute("unskipped", in.run_stats->numTestCasesPassingFilters); 234s 1949: xml.scopedElement("OverallResultsTestSuites") 234s 1949: .writeAttribute("unskipped", in.run_stats->numTestSuitesPassingFilters); 234s 1949: } 234s 1949: xml.endElement(); 234s 1949: } 234s 1949: 234s 1949: void test_run_start() override { 234s 1949: xml.writeDeclaration(); 234s 1949: 234s 1949: 234s 1949: std::string binary_name = skipPathFromFilename(opt.binary_name.c_str()); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: xml.startElement("doctest").writeAttribute("binary", binary_name); 234s 1949: if(opt.no_version == false) 234s 1949: xml.writeAttribute("version", "2" "." "4" "." "12"); 234s 1949: 234s 1949: 234s 1949: xml.scopedElement("Options") 234s 1949: .writeAttribute("order_by", opt.order_by.c_str()) 234s 1949: .writeAttribute("rand_seed", opt.rand_seed) 234s 1949: .writeAttribute("first", opt.first) 234s 1949: .writeAttribute("last", opt.last) 234s 1949: .writeAttribute("abort_after", opt.abort_after) 234s 1949: .writeAttribute("subcase_filter_levels", opt.subcase_filter_levels) 234s 1949: .writeAttribute("case_sensitive", opt.case_sensitive) 234s 1949: .writeAttribute("no_throw", opt.no_throw) 234s 1949: .writeAttribute("no_skip", opt.no_skip); 234s 1949: } 234s 1949: 234s 1949: void test_run_end(const TestRunStats& p) override { 234s 1949: if(tc) 234s 1949: xml.endElement(); 234s 1949: 234s 1949: xml.scopedElement("OverallResultsAsserts") 234s 1949: .writeAttribute("successes", p.numAsserts - p.numAssertsFailed) 234s 1949: .writeAttribute("failures", p.numAssertsFailed); 234s 1949: 234s 1949: xml.startElement("OverallResultsTestCases") 234s 1949: .writeAttribute("successes", 234s 1949: p.numTestCasesPassingFilters - p.numTestCasesFailed) 234s 1949: .writeAttribute("failures", p.numTestCasesFailed); 234s 1949: if(opt.no_skipped_summary == false) 234s 1949: xml.writeAttribute("skipped", p.numTestCases - p.numTestCasesPassingFilters); 234s 1949: xml.endElement(); 234s 1949: 234s 1949: xml.endElement(); 234s 1949: } 234s 1949: 234s 1949: void test_case_start(const TestCaseData& in) override { 234s 1949: test_case_start_impl(in); 234s 1949: xml.ensureTagClosed(); 234s 1949: } 234s 1949: 234s 1949: void test_case_reenter(const TestCaseData&) override {} 234s 1949: 234s 1949: void test_case_end(const CurrentTestCaseStats& st) override { 234s 1949: xml.startElement("OverallResultsAsserts") 234s 1949: .writeAttribute("successes", 234s 1949: st.numAssertsCurrentTest - st.numAssertsFailedCurrentTest) 234s 1949: .writeAttribute("failures", st.numAssertsFailedCurrentTest) 234s 1949: .writeAttribute("test_case_success", st.testCaseSuccess); 234s 1949: if(opt.duration) 234s 1949: xml.writeAttribute("duration", st.seconds); 234s 1949: if(tc->m_expected_failures) 234s 1949: xml.writeAttribute("expected_failures", tc->m_expected_failures); 234s 1949: xml.endElement(); 234s 1949: 234s 1949: xml.endElement(); 234s 1949: } 234s 1949: 234s 1949: void test_case_exception(const TestCaseException& e) override { 234s 1949: std::lock_guard DOCTEST_ANON_LOCK_2(mutex); 234s 1949: 234s 1949: xml.scopedElement("Exception") 234s 1949: .writeAttribute("crash", e.is_crash) 234s 1949: .writeText(e.error_string.c_str()); 234s 1949: } 234s 1949: 234s 1949: void subcase_start(const SubcaseSignature& in) override { 234s 1949: xml.startElement("SubCase") 234s 1949: .writeAttribute("name", in.m_name) 234s 1949: .writeAttribute("filename", skipPathFromFilename(in.m_file)) 234s 1949: .writeAttribute("line", line(in.m_line)); 234s 1949: xml.ensureTagClosed(); 234s 1949: } 234s 1949: 234s 1949: void subcase_end() override { xml.endElement(); } 234s 1949: 234s 1949: void log_assert(const AssertData& rb) override { 234s 1949: if(!rb.m_failed && !opt.success) 234s 1949: return; 234s 1949: 234s 1949: std::lock_guard DOCTEST_ANON_LOCK_3(mutex); 234s 1949: 234s 1949: xml.startElement("Expression") 234s 1949: .writeAttribute("success", !rb.m_failed) 234s 1949: .writeAttribute("type", assertString(rb.m_at)) 234s 1949: .writeAttribute("filename", skipPathFromFilename(rb.m_file)) 234s 1949: .writeAttribute("line", line(rb.m_line)); 234s 1949: 234s 1949: xml.scopedElement("Original").writeText(rb.m_expr); 234s 1949: 234s 1949: if(rb.m_threw) 234s 1949: xml.scopedElement("Exception").writeText(rb.m_exception.c_str()); 234s 1949: 234s 1949: if(rb.m_at & assertType::is_throws_as) 234s 1949: xml.scopedElement("ExpectedException").writeText(rb.m_exception_type); 234s 1949: if(rb.m_at & assertType::is_throws_with) 234s 1949: xml.scopedElement("ExpectedExceptionString").writeText(rb.m_exception_string.c_str()); 234s 1949: if((rb.m_at & assertType::is_normal) && !rb.m_threw) 234s 1949: xml.scopedElement("Expanded").writeText(rb.m_decomp.c_str()); 234s 1949: 234s 1949: log_contexts(); 234s 1949: 234s 1949: xml.endElement(); 234s 1949: } 234s 1949: 234s 1949: void log_message(const MessageData& mb) override { 234s 1949: std::lock_guard DOCTEST_ANON_LOCK_4(mutex); 234s 1949: 234s 1949: xml.startElement("Message") 234s 1949: .writeAttribute("type", failureString(mb.m_severity)) 234s 1949: .writeAttribute("filename", skipPathFromFilename(mb.m_file)) 234s 1949: .writeAttribute("line", line(mb.m_line)); 234s 1949: 234s 1949: xml.scopedElement("Text").writeText(mb.m_string.c_str()); 234s 1949: 234s 1949: log_contexts(); 234s 1949: 234s 1949: xml.endElement(); 234s 1949: } 234s 1949: 234s 1949: void test_case_skipped(const TestCaseData& in) override { 234s 1949: if(opt.no_skipped_summary == false) { 234s 1949: test_case_start_impl(in); 234s 1949: xml.writeAttribute("skipped", "true"); 234s 1949: xml.endElement(); 234s 1949: } 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: static const int DOCTEST_ANON_REPORTER_5 = doctest::detail::consume(&DOCTEST_ANON_REPORTER_5, doctest::registerReporter("xml", 0, true)); static_assert(true, ""); 234s 1949: 234s 1949: void fulltext_log_assert_to_stream(std::ostream& s, const AssertData& rb) { 234s 1949: if((rb.m_at & (assertType::is_throws_as | assertType::is_throws_with)) == 234s 1949: 0) 234s 1949: s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << " ) " 234s 1949: << Color::None; 234s 1949: 234s 1949: if(rb.m_at & assertType::is_throws) { 234s 1949: s << (rb.m_threw ? "threw as expected!" : "did NOT throw at all!") << "\n"; 234s 1949: } else if((rb.m_at & assertType::is_throws_as) && 234s 1949: (rb.m_at & assertType::is_throws_with)) { 234s 1949: s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << ", \"" 234s 1949: << rb.m_exception_string.c_str() 234s 1949: << "\", " << rb.m_exception_type << " ) " << Color::None; 234s 1949: if(rb.m_threw) { 234s 1949: if(!rb.m_failed) { 234s 1949: s << "threw as expected!\n"; 234s 1949: } else { 234s 1949: s << "threw a DIFFERENT exception! (contents: " << rb.m_exception << ")\n"; 234s 1949: } 234s 1949: } else { 234s 1949: s << "did NOT throw at all!\n"; 234s 1949: } 234s 1949: } else if(rb.m_at & 234s 1949: assertType::is_throws_as) { 234s 1949: s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << ", " 234s 1949: << rb.m_exception_type << " ) " << Color::None 234s 1949: << (rb.m_threw ? (rb.m_threw_as ? "threw as expected!" : 234s 1949: "threw a DIFFERENT exception: ") : 234s 1949: "did NOT throw at all!") 234s 1949: << Color::Cyan << rb.m_exception << "\n"; 234s 1949: } else if(rb.m_at & 234s 1949: assertType::is_throws_with) { 234s 1949: s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << ", \"" 234s 1949: << rb.m_exception_string.c_str() 234s 1949: << "\" ) " << Color::None 234s 1949: << (rb.m_threw ? (!rb.m_failed ? "threw as expected!" : 234s 1949: "threw a DIFFERENT exception: ") : 234s 1949: "did NOT throw at all!") 234s 1949: << Color::Cyan << rb.m_exception << "\n"; 234s 1949: } else if(rb.m_at & assertType::is_nothrow) { 234s 1949: s << (rb.m_threw ? "THREW exception: " : "didn't throw!") << Color::Cyan 234s 1949: << rb.m_exception << "\n"; 234s 1949: } else { 234s 1949: s << (rb.m_threw ? "THREW exception: " : 234s 1949: (!rb.m_failed ? "is correct!\n" : "is NOT correct!\n")); 234s 1949: if(rb.m_threw) 234s 1949: s << rb.m_exception << "\n"; 234s 1949: else 234s 1949: s << " values: " << assertString(rb.m_at) << "( " << rb.m_decomp << " )\n"; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: struct JUnitReporter : public IReporter 234s 1949: { 234s 1949: XmlWriter xml; 234s 1949: std::mutex mutex; 234s 1949: Timer timer; 234s 1949: std::vector deepestSubcaseStackNames; 234s 1949: 234s 1949: struct JUnitTestCaseData 234s 1949: { 234s 1949: static std::string getCurrentTimestamp() { 234s 1949: 234s 1949: 234s 1949: time_t rawtime; 234s 1949: std::time(&rawtime); 234s 1949: auto const timeStampSize = sizeof("2017-01-16T17:06:45Z"); 234s 1949: 234s 1949: std::tm timeInfo; 234s 1949: 234s 1949: 234s 1949: 234s 1949: gmtime_r(&rawtime, &timeInfo); 234s 1949: 234s 1949: 234s 1949: char timeStamp[timeStampSize]; 234s 1949: const char* const fmt = "%Y-%m-%dT%H:%M:%SZ"; 234s 1949: 234s 1949: std::strftime(timeStamp, timeStampSize, fmt, &timeInfo); 234s 1949: return std::string(timeStamp); 234s 1949: } 234s 1949: 234s 1949: struct JUnitTestMessage 234s 1949: { 234s 1949: JUnitTestMessage(const std::string& _message, const std::string& _type, const std::string& _details) 234s 1949: : message(_message), type(_type), details(_details) {} 234s 1949: 234s 1949: JUnitTestMessage(const std::string& _message, const std::string& _details) 234s 1949: : message(_message), type(), details(_details) {} 234s 1949: 234s 1949: std::string message, type, details; 234s 1949: }; 234s 1949: 234s 1949: struct JUnitTestCase 234s 1949: { 234s 1949: JUnitTestCase(const std::string& _classname, const std::string& _name) 234s 1949: : classname(_classname), name(_name), time(0), failures() {} 234s 1949: 234s 1949: std::string classname, name; 234s 1949: double time; 234s 1949: std::vector failures, errors; 234s 1949: }; 234s 1949: 234s 1949: void add(const std::string& classname, const std::string& name) { 234s 1949: testcases.emplace_back(classname, name); 234s 1949: } 234s 1949: 234s 1949: void appendSubcaseNamesToLastTestcase(std::vector nameStack) { 234s 1949: for(auto& curr: nameStack) 234s 1949: if(curr.size()) 234s 1949: testcases.back().name += std::string("/") + curr.c_str(); 234s 1949: } 234s 1949: 234s 1949: void addTime(double time) { 234s 1949: if(time < 1e-4) 234s 1949: time = 0; 234s 1949: testcases.back().time = time; 234s 1949: totalSeconds += time; 234s 1949: } 234s 1949: 234s 1949: void addFailure(const std::string& message, const std::string& type, const std::string& details) { 234s 1949: testcases.back().failures.emplace_back(message, type, details); 234s 1949: ++totalFailures; 234s 1949: } 234s 1949: 234s 1949: void addError(const std::string& message, const std::string& details) { 234s 1949: testcases.back().errors.emplace_back(message, details); 234s 1949: ++totalErrors; 234s 1949: } 234s 1949: 234s 1949: std::vector testcases; 234s 1949: double totalSeconds = 0; 234s 1949: int totalErrors = 0, totalFailures = 0; 234s 1949: }; 234s 1949: 234s 1949: JUnitTestCaseData testCaseData; 234s 1949: 234s 1949: 234s 1949: const ContextOptions& opt; 234s 1949: const TestCaseData* tc = nullptr; 234s 1949: 234s 1949: JUnitReporter(const ContextOptions& co) 234s 1949: : xml(*co.cout) 234s 1949: , opt(co) {} 234s 1949: 234s 1949: unsigned line(unsigned l) const { return opt.no_line_numbers ? 0 : l; } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void report_query(const QueryData&) override { 234s 1949: xml.writeDeclaration(); 234s 1949: } 234s 1949: 234s 1949: void test_run_start() override { 234s 1949: xml.writeDeclaration(); 234s 1949: } 234s 1949: 234s 1949: void test_run_end(const TestRunStats& p) override { 234s 1949: 234s 1949: std::string binary_name = skipPathFromFilename(opt.binary_name.c_str()); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: xml.startElement("testsuites"); 234s 1949: xml.startElement("testsuite").writeAttribute("name", binary_name) 234s 1949: .writeAttribute("errors", testCaseData.totalErrors) 234s 1949: .writeAttribute("failures", testCaseData.totalFailures) 234s 1949: .writeAttribute("tests", p.numAsserts); 234s 1949: if(opt.no_time_in_output == false) { 234s 1949: xml.writeAttribute("time", testCaseData.totalSeconds); 234s 1949: xml.writeAttribute("timestamp", JUnitTestCaseData::getCurrentTimestamp()); 234s 1949: } 234s 1949: if(opt.no_version == false) 234s 1949: xml.writeAttribute("doctest_version", "2" "." "4" "." "12"); 234s 1949: 234s 1949: for(const auto& testCase : testCaseData.testcases) { 234s 1949: xml.startElement("testcase") 234s 1949: .writeAttribute("classname", testCase.classname) 234s 1949: .writeAttribute("name", testCase.name); 234s 1949: if(opt.no_time_in_output == false) 234s 1949: xml.writeAttribute("time", testCase.time); 234s 1949: 234s 1949: xml.writeAttribute("status", "run"); 234s 1949: 234s 1949: for(const auto& failure : testCase.failures) { 234s 1949: xml.scopedElement("failure") 234s 1949: .writeAttribute("message", failure.message) 234s 1949: .writeAttribute("type", failure.type) 234s 1949: .writeText(failure.details, false); 234s 1949: } 234s 1949: 234s 1949: for(const auto& error : testCase.errors) { 234s 1949: xml.scopedElement("error") 234s 1949: .writeAttribute("message", error.message) 234s 1949: .writeText(error.details); 234s 1949: } 234s 1949: 234s 1949: xml.endElement(); 234s 1949: } 234s 1949: xml.endElement(); 234s 1949: xml.endElement(); 234s 1949: } 234s 1949: 234s 1949: void test_case_start(const TestCaseData& in) override { 234s 1949: testCaseData.add(skipPathFromFilename(in.m_file.c_str()), in.m_name); 234s 1949: timer.start(); 234s 1949: } 234s 1949: 234s 1949: void test_case_reenter(const TestCaseData& in) override { 234s 1949: testCaseData.addTime(timer.getElapsedSeconds()); 234s 1949: testCaseData.appendSubcaseNamesToLastTestcase(deepestSubcaseStackNames); 234s 1949: deepestSubcaseStackNames.clear(); 234s 1949: 234s 1949: timer.start(); 234s 1949: testCaseData.add(skipPathFromFilename(in.m_file.c_str()), in.m_name); 234s 1949: } 234s 1949: 234s 1949: void test_case_end(const CurrentTestCaseStats&) override { 234s 1949: testCaseData.addTime(timer.getElapsedSeconds()); 234s 1949: testCaseData.appendSubcaseNamesToLastTestcase(deepestSubcaseStackNames); 234s 1949: deepestSubcaseStackNames.clear(); 234s 1949: } 234s 1949: 234s 1949: void test_case_exception(const TestCaseException& e) override { 234s 1949: std::lock_guard DOCTEST_ANON_LOCK_6(mutex); 234s 1949: testCaseData.addError("exception", e.error_string.c_str()); 234s 1949: } 234s 1949: 234s 1949: void subcase_start(const SubcaseSignature& in) override { 234s 1949: deepestSubcaseStackNames.push_back(in.m_name); 234s 1949: } 234s 1949: 234s 1949: void subcase_end() override {} 234s 1949: 234s 1949: void log_assert(const AssertData& rb) override { 234s 1949: if(!rb.m_failed) 234s 1949: return; 234s 1949: 234s 1949: std::lock_guard DOCTEST_ANON_LOCK_7(mutex); 234s 1949: 234s 1949: std::ostringstream os; 234s 1949: os << skipPathFromFilename(rb.m_file) << (opt.gnu_file_line ? ":" : "(") 234s 1949: << line(rb.m_line) << (opt.gnu_file_line ? ":" : "):") << std::endl; 234s 1949: 234s 1949: fulltext_log_assert_to_stream(os, rb); 234s 1949: log_contexts(os); 234s 1949: testCaseData.addFailure(rb.m_decomp.c_str(), assertString(rb.m_at), os.str()); 234s 1949: } 234s 1949: 234s 1949: void log_message(const MessageData& mb) override { 234s 1949: if(mb.m_severity & assertType::is_warn) 234s 1949: return; 234s 1949: 234s 1949: std::lock_guard DOCTEST_ANON_LOCK_8(mutex); 234s 1949: 234s 1949: std::ostringstream os; 234s 1949: os << skipPathFromFilename(mb.m_file) << (opt.gnu_file_line ? ":" : "(") 234s 1949: << line(mb.m_line) << (opt.gnu_file_line ? ":" : "):") << std::endl; 234s 1949: 234s 1949: os << mb.m_string.c_str() << "\n"; 234s 1949: log_contexts(os); 234s 1949: 234s 1949: testCaseData.addFailure(mb.m_string.c_str(), 234s 1949: mb.m_severity & assertType::is_check ? "FAIL_CHECK" : "FAIL", os.str()); 234s 1949: } 234s 1949: 234s 1949: void test_case_skipped(const TestCaseData&) override {} 234s 1949: 234s 1949: void log_contexts(std::ostringstream& s) { 234s 1949: int num_contexts = get_num_active_contexts(); 234s 1949: if(num_contexts) { 234s 1949: auto contexts = get_active_contexts(); 234s 1949: 234s 1949: s << " logged: "; 234s 1949: for(int i = 0; i < num_contexts; ++i) { 234s 1949: s << (i == 0 ? "" : " "); 234s 1949: contexts[i]->stringify(&s); 234s 1949: s << std::endl; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: }; 234s 1949: 234s 1949: static const int DOCTEST_ANON_REPORTER_9 = doctest::detail::consume(&DOCTEST_ANON_REPORTER_9, doctest::registerReporter("junit", 0, true)); static_assert(true, ""); 234s 1949: 234s 1949: struct Whitespace 234s 1949: { 234s 1949: int nrSpaces; 234s 1949: explicit Whitespace(int nr) 234s 1949: : nrSpaces(nr) {} 234s 1949: }; 234s 1949: 234s 1949: std::ostream& operator<<(std::ostream& out, const Whitespace& ws) { 234s 1949: if(ws.nrSpaces != 0) 234s 1949: out << std::setw(ws.nrSpaces) << ' '; 234s 1949: return out; 234s 1949: } 234s 1949: 234s 1949: struct ConsoleReporter : public IReporter 234s 1949: { 234s 1949: std::ostream& s; 234s 1949: bool hasLoggedCurrentTestStart; 234s 1949: std::vector subcasesStack; 234s 1949: size_t currentSubcaseLevel; 234s 1949: std::mutex mutex; 234s 1949: 234s 1949: 234s 1949: const ContextOptions& opt; 234s 1949: const TestCaseData* tc; 234s 1949: 234s 1949: ConsoleReporter(const ContextOptions& co) 234s 1949: : s(*co.cout) 234s 1949: , opt(co) {} 234s 1949: 234s 1949: ConsoleReporter(const ContextOptions& co, std::ostream& ostr) 234s 1949: : s(ostr) 234s 1949: , opt(co) {} 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void separator_to_stream() { 234s 1949: s << Color::Yellow 234s 1949: << "===============================================================================" 234s 1949: "\n"; 234s 1949: } 234s 1949: 234s 1949: const char* getSuccessOrFailString(bool success, assertType::Enum at, 234s 1949: const char* success_str) { 234s 1949: if(success) 234s 1949: return success_str; 234s 1949: return failureString(at); 234s 1949: } 234s 1949: 234s 1949: Color::Enum getSuccessOrFailColor(bool success, assertType::Enum at) { 234s 1949: return success ? Color::BrightGreen : 234s 1949: (at & assertType::is_warn) ? Color::Yellow : Color::Red; 234s 1949: } 234s 1949: 234s 1949: void successOrFailColoredStringToStream(bool success, assertType::Enum at, 234s 1949: const char* success_str = "SUCCESS") { 234s 1949: s << getSuccessOrFailColor(success, at) 234s 1949: << getSuccessOrFailString(success, at, success_str) << ": "; 234s 1949: } 234s 1949: 234s 1949: void log_contexts() { 234s 1949: int num_contexts = get_num_active_contexts(); 234s 1949: if(num_contexts) { 234s 1949: auto contexts = get_active_contexts(); 234s 1949: 234s 1949: s << Color::None << " logged: "; 234s 1949: for(int i = 0; i < num_contexts; ++i) { 234s 1949: s << (i == 0 ? "" : " "); 234s 1949: contexts[i]->stringify(&s); 234s 1949: s << "\n"; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: s << "\n"; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: virtual void file_line_to_stream(const char* file, int line, 234s 1949: const char* tail = "") { 234s 1949: s << Color::LightGrey << skipPathFromFilename(file) << (opt.gnu_file_line ? ":" : "(") 234s 1949: << (opt.no_line_numbers ? 0 : line) 234s 1949: << (opt.gnu_file_line ? ":" : "):") << tail; 234s 1949: } 234s 1949: 234s 1949: void logTestStart() { 234s 1949: if(hasLoggedCurrentTestStart) 234s 1949: return; 234s 1949: 234s 1949: separator_to_stream(); 234s 1949: file_line_to_stream(tc->m_file.c_str(), tc->m_line, "\n"); 234s 1949: if(tc->m_description) 234s 1949: s << Color::Yellow << "DESCRIPTION: " << Color::None << tc->m_description << "\n"; 234s 1949: if(tc->m_test_suite && tc->m_test_suite[0] != '\0') 234s 1949: s << Color::Yellow << "TEST SUITE: " << Color::None << tc->m_test_suite << "\n"; 234s 1949: if(strncmp(tc->m_name, " Scenario:", 11) != 0) 234s 1949: s << Color::Yellow << "TEST CASE: "; 234s 1949: s << Color::None << tc->m_name << "\n"; 234s 1949: 234s 1949: for(size_t i = 0; i < currentSubcaseLevel; ++i) { 234s 1949: if(subcasesStack[i].m_name[0] != '\0') 234s 1949: s << " " << subcasesStack[i].m_name << "\n"; 234s 1949: } 234s 1949: 234s 1949: if(currentSubcaseLevel != subcasesStack.size()) { 234s 1949: s << Color::Yellow << "\nDEEPEST SUBCASE STACK REACHED (DIFFERENT FROM THE CURRENT ONE):\n" << Color::None; 234s 1949: for(size_t i = 0; i < subcasesStack.size(); ++i) { 234s 1949: if(subcasesStack[i].m_name[0] != '\0') 234s 1949: s << " " << subcasesStack[i].m_name << "\n"; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: s << "\n"; 234s 1949: 234s 1949: hasLoggedCurrentTestStart = true; 234s 1949: } 234s 1949: 234s 1949: void printVersion() { 234s 1949: if(opt.no_version == false) 234s 1949: s << Color::Cyan << "[doctest] " << Color::None << "doctest version is \"" 234s 1949: << "2" "." "4" "." "12" << "\"\n"; 234s 1949: } 234s 1949: 234s 1949: void printIntro() { 234s 1949: if(opt.no_intro == false) { 234s 1949: printVersion(); 234s 1949: s << Color::Cyan << "[doctest] " << Color::None 234s 1949: << "run with \"--" "" "help\" for options\n"; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: void printHelp() { 234s 1949: int sizePrefixDisplay = static_cast(strlen("")); 234s 1949: printVersion(); 234s 1949: 234s 1949: s << Color::Cyan << "[doctest]\n" << Color::None; 234s 1949: s << Color::Cyan << "[doctest] " << Color::None; 234s 1949: s << "boolean values: \"1/on/yes/true\" or \"0/off/no/false\"\n"; 234s 1949: s << Color::Cyan << "[doctest] " << Color::None; 234s 1949: s << "filter values: \"str1,str2,str3\" (comma separated strings)\n"; 234s 1949: s << Color::Cyan << "[doctest]\n" << Color::None; 234s 1949: s << Color::Cyan << "[doctest] " << Color::None; 234s 1949: s << "filters use wildcards for matching strings\n"; 234s 1949: s << Color::Cyan << "[doctest] " << Color::None; 234s 1949: s << "something passes a filter if any of the strings in a filter matches\n"; 234s 1949: 234s 1949: s << Color::Cyan << "[doctest]\n" << Color::None; 234s 1949: s << Color::Cyan << "[doctest] " << Color::None; 234s 1949: s << "ALL FLAGS, OPTIONS AND FILTERS ALSO AVAILABLE WITH A \"" "dt-" "\" PREFIX!!!\n"; 234s 1949: 234s 1949: s << Color::Cyan << "[doctest]\n" << Color::None; 234s 1949: s << Color::Cyan << "[doctest] " << Color::None; 234s 1949: s << "Query flags - the program quits after them. Available:\n\n"; 234s 1949: s << " -" "" "?, --" "" "help, -" "" "h " 234s 1949: << Whitespace(sizePrefixDisplay*0) << "prints this message\n"; 234s 1949: s << " -" "" "v, --" "" "version " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "prints the version\n"; 234s 1949: s << " -" "" "c, --" "" "count " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "prints the number of matching tests\n"; 234s 1949: s << " -" "" "ltc, --" "" "list-test-cases " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "lists all matching tests by name\n"; 234s 1949: s << " -" "" "lts, --" "" "list-test-suites " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "lists all matching test suites\n"; 234s 1949: s << " -" "" "lr, --" "" "list-reporters " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "lists all registered reporters\n\n"; 234s 1949: 234s 1949: s << Color::Cyan << "[doctest] " << Color::None; 234s 1949: s << "The available / options/filters are:\n\n"; 234s 1949: s << " -" "" "tc, --" "" "test-case= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "filters tests by their name\n"; 234s 1949: s << " -" "" "tce, --" "" "test-case-exclude= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "filters OUT tests by their name\n"; 234s 1949: s << " -" "" "sf, --" "" "source-file= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "filters tests by their file\n"; 234s 1949: s << " -" "" "sfe, --" "" "source-file-exclude= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "filters OUT tests by their file\n"; 234s 1949: s << " -" "" "ts, --" "" "test-suite= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "filters tests by their test suite\n"; 234s 1949: s << " -" "" "tse, --" "" "test-suite-exclude= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "filters OUT tests by their test suite\n"; 234s 1949: s << " -" "" "sc, --" "" "subcase= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "filters subcases by their name\n"; 234s 1949: s << " -" "" "sce, --" "" "subcase-exclude= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "filters OUT subcases by their name\n"; 234s 1949: s << " -" "" "r, --" "" "reporters= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "reporters to use (console is default)\n"; 234s 1949: s << " -" "" "o, --" "" "out= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "output filename\n"; 234s 1949: s << " -" "" "ob, --" "" "order-by= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "how the tests should be ordered\n"; 234s 1949: s << Whitespace(sizePrefixDisplay*3) << " - [file/suite/name/rand/none]\n"; 234s 1949: s << " -" "" "rs, --" "" "rand-seed= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "seed for random ordering\n"; 234s 1949: s << " -" "" "f, --" "" "first= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "the first test passing the filters to\n"; 234s 1949: s << Whitespace(sizePrefixDisplay*3) << " execute - for range-based execution\n"; 234s 1949: s << " -" "" "l, --" "" "last= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "the last test passing the filters to\n"; 234s 1949: s << Whitespace(sizePrefixDisplay*3) << " execute - for range-based execution\n"; 234s 1949: s << " -" "" "aa, --" "" "abort-after= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "stop after failed assertions\n"; 234s 1949: s << " -" "" "scfl,--" "" "subcase-filter-levels= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "apply filters for the first levels\n"; 234s 1949: s << Color::Cyan << "\n[doctest] " << Color::None; 234s 1949: s << "Bool options - can be used like flags and true is assumed. Available:\n\n"; 234s 1949: s << " -" "" "s, --" "" "success= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "include successful assertions in output\n"; 234s 1949: s << " -" "" "cs, --" "" "case-sensitive= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "filters being treated as case sensitive\n"; 234s 1949: s << " -" "" "e, --" "" "exit= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "exits after the tests finish\n"; 234s 1949: s << " -" "" "d, --" "" "duration= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "prints the time duration of each test\n"; 234s 1949: s << " -" "" "m, --" "" "minimal= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "minimal console output (only failures)\n"; 234s 1949: s << " -" "" "q, --" "" "quiet= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "no console output\n"; 234s 1949: s << " -" "" "nt, --" "" "no-throw= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "skips exceptions-related assert checks\n"; 234s 1949: s << " -" "" "ne, --" "" "no-exitcode= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "returns (or exits) always with success\n"; 234s 1949: s << " -" "" "nr, --" "" "no-run= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "skips all runtime doctest operations\n"; 234s 1949: s << " -" "" "ni, --" "" "no-intro= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "omit the framework intro in the output\n"; 234s 1949: s << " -" "" "nv, --" "" "no-version= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "omit the framework version in the output\n"; 234s 1949: s << " -" "" "nc, --" "" "no-colors= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "disables colors in output\n"; 234s 1949: s << " -" "" "fc, --" "" "force-colors= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "use colors even when not in a tty\n"; 234s 1949: s << " -" "" "nb, --" "" "no-breaks= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "disables breakpoints in debuggers\n"; 234s 1949: s << " -" "" "ns, --" "" "no-skip= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "don't skip test cases marked as skip\n"; 234s 1949: s << " -" "" "gfl, --" "" "gnu-file-line= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << ":n: vs (n): for line numbers in output\n"; 234s 1949: s << " -" "" "npf, --" "" "no-path-filenames= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "only filenames and no paths in output\n"; 234s 1949: s << " -" "" "spp, --" "" "skip-path-prefixes= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "whenever file paths start with this prefix, remove it from the output\n"; 234s 1949: s << " -" "" "nln, --" "" "no-line-numbers= " 234s 1949: << Whitespace(sizePrefixDisplay*1) << "0 instead of real line numbers in output\n"; 234s 1949: 234s 1949: 234s 1949: 234s 1949: s << Color::Cyan << "\n[doctest] " << Color::None; 234s 1949: s << "for more information visit the project documentation\n\n"; 234s 1949: } 234s 1949: 234s 1949: void printRegisteredReporters() { 234s 1949: printVersion(); 234s 1949: auto printReporters = [this] (const reporterMap& reporters, const char* type) { 234s 1949: if(reporters.size()) { 234s 1949: s << Color::Cyan << "[doctest] " << Color::None << "listing all registered " << type << "\n"; 234s 1949: for(auto& curr : reporters) 234s 1949: s << "priority: " << std::setw(5) << curr.first.first 234s 1949: << " name: " << curr.first.second << "\n"; 234s 1949: } 234s 1949: }; 234s 1949: printReporters(getListeners(), "listeners"); 234s 1949: printReporters(getReporters(), "reporters"); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: void report_query(const QueryData& in) override { 234s 1949: if(opt.version) { 234s 1949: printVersion(); 234s 1949: } else if(opt.help) { 234s 1949: printHelp(); 234s 1949: } else if(opt.list_reporters) { 234s 1949: printRegisteredReporters(); 234s 1949: } else if(opt.count || opt.list_test_cases) { 234s 1949: if(opt.list_test_cases) { 234s 1949: s << Color::Cyan << "[doctest] " << Color::None 234s 1949: << "listing all test case names\n"; 234s 1949: separator_to_stream(); 234s 1949: } 234s 1949: 234s 1949: for(unsigned i = 0; i < in.num_data; ++i) 234s 1949: s << Color::None << in.data[i]->m_name << "\n"; 234s 1949: 234s 1949: separator_to_stream(); 234s 1949: 234s 1949: s << Color::Cyan << "[doctest] " << Color::None 234s 1949: << "unskipped test cases passing the current filters: " 234s 1949: << g_cs->numTestCasesPassingFilters << "\n"; 234s 1949: 234s 1949: } else if(opt.list_test_suites) { 234s 1949: s << Color::Cyan << "[doctest] " << Color::None << "listing all test suites\n"; 234s 1949: separator_to_stream(); 234s 1949: 234s 1949: for(unsigned i = 0; i < in.num_data; ++i) 234s 1949: s << Color::None << in.data[i]->m_test_suite << "\n"; 234s 1949: 234s 1949: separator_to_stream(); 234s 1949: 234s 1949: s << Color::Cyan << "[doctest] " << Color::None 234s 1949: << "unskipped test cases passing the current filters: " 234s 1949: << g_cs->numTestCasesPassingFilters << "\n"; 234s 1949: s << Color::Cyan << "[doctest] " << Color::None 234s 1949: << "test suites with unskipped test cases passing the current filters: " 234s 1949: << g_cs->numTestSuitesPassingFilters << "\n"; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: void test_run_start() override { 234s 1949: if(!opt.minimal) 234s 1949: printIntro(); 234s 1949: } 234s 1949: 234s 1949: void test_run_end(const TestRunStats& p) override { 234s 1949: if(opt.minimal && p.numTestCasesFailed == 0) 234s 1949: return; 234s 1949: 234s 1949: separator_to_stream(); 234s 1949: s << std::dec; 234s 1949: 234s 1949: auto totwidth = int(std::ceil(log10(static_cast(std::max(p.numTestCasesPassingFilters, static_cast(p.numAsserts))) + 1))); 234s 1949: auto passwidth = int(std::ceil(log10(static_cast(std::max(p.numTestCasesPassingFilters - p.numTestCasesFailed, static_cast(p.numAsserts - p.numAssertsFailed))) + 1))); 234s 1949: auto failwidth = int(std::ceil(log10(static_cast(std::max(p.numTestCasesFailed, static_cast(p.numAssertsFailed))) + 1))); 234s 1949: const bool anythingFailed = p.numTestCasesFailed > 0 || p.numAssertsFailed > 0; 234s 1949: s << Color::Cyan << "[doctest] " << Color::None << "test cases: " << std::setw(totwidth) 234s 1949: << p.numTestCasesPassingFilters << " | " 234s 1949: << ((p.numTestCasesPassingFilters == 0 || anythingFailed) ? Color::None : 234s 1949: Color::Green) 234s 1949: << std::setw(passwidth) << p.numTestCasesPassingFilters - p.numTestCasesFailed << " passed" 234s 1949: << Color::None << " | " << (p.numTestCasesFailed > 0 ? Color::Red : Color::None) 234s 1949: << std::setw(failwidth) << p.numTestCasesFailed << " failed" << Color::None << " |"; 234s 1949: if(opt.no_skipped_summary == false) { 234s 1949: const int numSkipped = p.numTestCases - p.numTestCasesPassingFilters; 234s 1949: s << " " << (numSkipped == 0 ? Color::None : Color::Yellow) << numSkipped 234s 1949: << " skipped" << Color::None; 234s 1949: } 234s 1949: s << "\n"; 234s 1949: s << Color::Cyan << "[doctest] " << Color::None << "assertions: " << std::setw(totwidth) 234s 1949: << p.numAsserts << " | " 234s 1949: << ((p.numAsserts == 0 || anythingFailed) ? Color::None : Color::Green) 234s 1949: << std::setw(passwidth) << (p.numAsserts - p.numAssertsFailed) << " passed" << Color::None 234s 1949: << " | " << (p.numAssertsFailed > 0 ? Color::Red : Color::None) << std::setw(failwidth) 234s 1949: << p.numAssertsFailed << " failed" << Color::None << " |\n"; 234s 1949: s << Color::Cyan << "[doctest] " << Color::None 234s 1949: << "Status: " << (p.numTestCasesFailed > 0 ? Color::Red : Color::Green) 234s 1949: << ((p.numTestCasesFailed > 0) ? "FAILURE!" : "SUCCESS!") << Color::None << std::endl; 234s 1949: } 234s 1949: 234s 1949: void test_case_start(const TestCaseData& in) override { 234s 1949: hasLoggedCurrentTestStart = false; 234s 1949: tc = ∈ 234s 1949: subcasesStack.clear(); 234s 1949: currentSubcaseLevel = 0; 234s 1949: } 234s 1949: 234s 1949: void test_case_reenter(const TestCaseData&) override { 234s 1949: subcasesStack.clear(); 234s 1949: } 234s 1949: 234s 1949: void test_case_end(const CurrentTestCaseStats& st) override { 234s 1949: if(tc->m_no_output) 234s 1949: return; 234s 1949: 234s 1949: 234s 1949: 234s 1949: if(opt.duration || 234s 1949: (st.failure_flags && st.failure_flags != static_cast(TestCaseFailureReason::AssertFailure))) 234s 1949: logTestStart(); 234s 1949: 234s 1949: if(opt.duration) 234s 1949: s << Color::None << std::setprecision(6) << std::fixed << st.seconds 234s 1949: << " s: " << tc->m_name << "\n"; 234s 1949: 234s 1949: if(st.failure_flags & TestCaseFailureReason::Timeout) 234s 1949: s << Color::Red << "Test case exceeded time limit of " << std::setprecision(6) 234s 1949: << std::fixed << tc->m_timeout << "!\n"; 234s 1949: 234s 1949: if(st.failure_flags & TestCaseFailureReason::ShouldHaveFailedButDidnt) { 234s 1949: s << Color::Red << "Should have failed but didn't! Marking it as failed!\n"; 234s 1949: } else if(st.failure_flags & TestCaseFailureReason::ShouldHaveFailedAndDid) { 234s 1949: s << Color::Yellow << "Failed as expected so marking it as not failed\n"; 234s 1949: } else if(st.failure_flags & TestCaseFailureReason::CouldHaveFailedAndDid) { 234s 1949: s << Color::Yellow << "Allowed to fail so marking it as not failed\n"; 234s 1949: } else if(st.failure_flags & TestCaseFailureReason::DidntFailExactlyNumTimes) { 234s 1949: s << Color::Red << "Didn't fail exactly " << tc->m_expected_failures 234s 1949: << " times so marking it as failed!\n"; 234s 1949: } else if(st.failure_flags & TestCaseFailureReason::FailedExactlyNumTimes) { 234s 1949: s << Color::Yellow << "Failed exactly " << tc->m_expected_failures 234s 1949: << " times as expected so marking it as not failed!\n"; 234s 1949: } 234s 1949: if(st.failure_flags & TestCaseFailureReason::TooManyFailedAsserts) { 234s 1949: s << Color::Red << "Aborting - too many failed asserts!\n"; 234s 1949: } 234s 1949: s << Color::None; 234s 1949: } 234s 1949: 234s 1949: void test_case_exception(const TestCaseException& e) override { 234s 1949: std::lock_guard DOCTEST_ANON_LOCK_10(mutex); 234s 1949: if(tc->m_no_output) 234s 1949: return; 234s 1949: 234s 1949: logTestStart(); 234s 1949: 234s 1949: file_line_to_stream(tc->m_file.c_str(), tc->m_line, " "); 234s 1949: successOrFailColoredStringToStream(false, e.is_crash ? assertType::is_require : 234s 1949: assertType::is_check); 234s 1949: s << Color::Red << (e.is_crash ? "test case CRASHED: " : "test case THREW exception: ") 234s 1949: << Color::Cyan << e.error_string << "\n"; 234s 1949: 234s 1949: int num_stringified_contexts = get_num_stringified_contexts(); 234s 1949: if(num_stringified_contexts) { 234s 1949: auto stringified_contexts = get_stringified_contexts(); 234s 1949: s << Color::None << " logged: "; 234s 1949: for(int i = num_stringified_contexts; i > 0; --i) { 234s 1949: s << (i == num_stringified_contexts ? "" : " ") 234s 1949: << stringified_contexts[i - 1] << "\n"; 234s 1949: } 234s 1949: } 234s 1949: s << "\n" << Color::None; 234s 1949: } 234s 1949: 234s 1949: void subcase_start(const SubcaseSignature& subc) override { 234s 1949: subcasesStack.push_back(subc); 234s 1949: ++currentSubcaseLevel; 234s 1949: hasLoggedCurrentTestStart = false; 234s 1949: } 234s 1949: 234s 1949: void subcase_end() override { 234s 1949: --currentSubcaseLevel; 234s 1949: hasLoggedCurrentTestStart = false; 234s 1949: } 234s 1949: 234s 1949: void log_assert(const AssertData& rb) override { 234s 1949: if((!rb.m_failed && !opt.success) || tc->m_no_output) 234s 1949: return; 234s 1949: 234s 1949: std::lock_guard DOCTEST_ANON_LOCK_11(mutex); 234s 1949: 234s 1949: logTestStart(); 234s 1949: 234s 1949: file_line_to_stream(rb.m_file, rb.m_line, " "); 234s 1949: successOrFailColoredStringToStream(!rb.m_failed, rb.m_at); 234s 1949: 234s 1949: fulltext_log_assert_to_stream(s, rb); 234s 1949: 234s 1949: log_contexts(); 234s 1949: } 234s 1949: 234s 1949: void log_message(const MessageData& mb) override { 234s 1949: if(tc->m_no_output) 234s 1949: return; 234s 1949: 234s 1949: std::lock_guard DOCTEST_ANON_LOCK_12(mutex); 234s 1949: 234s 1949: logTestStart(); 234s 1949: 234s 1949: file_line_to_stream(mb.m_file, mb.m_line, " "); 234s 1949: s << getSuccessOrFailColor(false, mb.m_severity) 234s 1949: << getSuccessOrFailString(mb.m_severity & assertType::is_warn, mb.m_severity, 234s 1949: "MESSAGE") << ": "; 234s 1949: s << Color::None << mb.m_string << "\n"; 234s 1949: log_contexts(); 234s 1949: } 234s 1949: 234s 1949: void test_case_skipped(const TestCaseData&) override {} 234s 1949: }; 234s 1949: 234s 1949: static const int DOCTEST_ANON_REPORTER_13 = doctest::detail::consume(&DOCTEST_ANON_REPORTER_13, doctest::registerReporter("console", 0, true)); static_assert(true, ""); 234s 1949: # 6477 "/usr/include/doctest/doctest.h" 3 4 234s 1949: bool parseOptionImpl(int argc, const char* const* argv, const char* pattern, String* value) { 234s 1949: 234s 1949: for(int i = argc; i > 0; --i) { 234s 1949: auto index = i - 1; 234s 1949: auto temp = std::strstr(argv[index], pattern); 234s 1949: if(temp && (value || strlen(temp) == strlen(pattern))) { 234s 1949: 234s 1949: bool noBadCharsFound = true; 234s 1949: auto curr = argv[index]; 234s 1949: while(curr != temp) { 234s 1949: if(*curr++ != '-') { 234s 1949: noBadCharsFound = false; 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: if(noBadCharsFound && argv[index][0] == '-') { 234s 1949: if(value) { 234s 1949: 234s 1949: temp += strlen(pattern); 234s 1949: const unsigned len = strlen(temp); 234s 1949: if(len) { 234s 1949: *value = temp; 234s 1949: return true; 234s 1949: } 234s 1949: } else { 234s 1949: 234s 1949: return true; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool parseOption(int argc, const char* const* argv, const char* pattern, String* value = nullptr, 234s 1949: const String& defaultVal = String()) { 234s 1949: if(value) 234s 1949: *value = defaultVal; 234s 1949: 234s 1949: 234s 1949: if(parseOptionImpl(argc, argv, pattern + strlen("dt-"), value)) 234s 1949: return true; 234s 1949: 234s 1949: return parseOptionImpl(argc, argv, pattern, value); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool parseFlag(int argc, const char* const* argv, const char* pattern) { 234s 1949: return parseOption(argc, argv, pattern); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool parseCommaSepArgs(int argc, const char* const* argv, const char* pattern, 234s 1949: std::vector& res) { 234s 1949: String filtersString; 234s 1949: if(parseOption(argc, argv, pattern, &filtersString)) { 234s 1949: 234s 1949: std::ostringstream s; 234s 1949: auto flush = [&s, &res]() { 234s 1949: auto string = s.str(); 234s 1949: if(string.size() > 0) { 234s 1949: res.push_back(string.c_str()); 234s 1949: } 234s 1949: s.str(""); 234s 1949: }; 234s 1949: 234s 1949: bool seenBackslash = false; 234s 1949: const char* current = filtersString.c_str(); 234s 1949: const char* end = current + strlen(current); 234s 1949: while(current != end) { 234s 1949: char character = *current++; 234s 1949: if(seenBackslash) { 234s 1949: seenBackslash = false; 234s 1949: if(character == ',' || character == '\\') { 234s 1949: s.put(character); 234s 1949: continue; 234s 1949: } 234s 1949: s.put('\\'); 234s 1949: } 234s 1949: if(character == '\\') { 234s 1949: seenBackslash = true; 234s 1949: } else if(character == ',') { 234s 1949: flush(); 234s 1949: } else { 234s 1949: s.put(character); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: if(seenBackslash) { 234s 1949: s.put('\\'); 234s 1949: } 234s 1949: flush(); 234s 1949: return true; 234s 1949: } 234s 1949: return false; 234s 1949: } 234s 1949: 234s 1949: enum optionType 234s 1949: { 234s 1949: option_bool, 234s 1949: option_int 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: bool parseIntOption(int argc, const char* const* argv, const char* pattern, optionType type, 234s 1949: int& res) { 234s 1949: String parsedValue; 234s 1949: if(!parseOption(argc, argv, pattern, &parsedValue)) 234s 1949: return false; 234s 1949: 234s 1949: if(type) { 234s 1949: 234s 1949: 234s 1949: int theInt = std::atoi(parsedValue.c_str()); 234s 1949: if (theInt != 0) { 234s 1949: res = theInt; 234s 1949: return true; 234s 1949: } 234s 1949: } else { 234s 1949: 234s 1949: const char positive[][5] = { "1", "true", "on", "yes" }; 234s 1949: const char negative[][6] = { "0", "false", "off", "no" }; 234s 1949: 234s 1949: 234s 1949: for (unsigned i = 0; i < 4; i++) { 234s 1949: if (parsedValue.compare(positive[i], true) == 0) { 234s 1949: res = 1; 234s 1949: return true; 234s 1949: } 234s 1949: if (parsedValue.compare(negative[i], true) == 0) { 234s 1949: res = 0; 234s 1949: return true; 234s 1949: } 234s 1949: } 234s 1949: } 234s 1949: return false; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: Context::Context(int argc, const char* const* argv) 234s 1949: : p(new detail::ContextState) { 234s 1949: parseArgs(argc, argv, true); 234s 1949: if(argc) 234s 1949: p->binary_name = argv[0]; 234s 1949: } 234s 1949: 234s 1949: Context::~Context() { 234s 1949: if(g_cs == p) 234s 1949: g_cs = nullptr; 234s 1949: delete p; 234s 1949: } 234s 1949: 234s 1949: void Context::applyCommandLine(int argc, const char* const* argv) { 234s 1949: parseArgs(argc, argv); 234s 1949: if(argc) 234s 1949: p->binary_name = argv[0]; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void Context::parseArgs(int argc, const char* const* argv, bool withDefaults) { 234s 1949: using namespace detail; 234s 1949: 234s 1949: 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "source-file=", p->filters[0]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "sf=", p->filters[0]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "source-file-exclude=",p->filters[1]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "sfe=", p->filters[1]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "test-suite=", p->filters[2]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "ts=", p->filters[2]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "test-suite-exclude=", p->filters[3]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "tse=", p->filters[3]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "test-case=", p->filters[4]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "tc=", p->filters[4]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "test-case-exclude=", p->filters[5]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "tce=", p->filters[5]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "subcase=", p->filters[6]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "sc=", p->filters[6]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "subcase-exclude=", p->filters[7]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "sce=", p->filters[7]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "reporters=", p->filters[8]); 234s 1949: parseCommaSepArgs(argc, argv, "dt-" "r=", p->filters[8]); 234s 1949: 234s 1949: 234s 1949: int intRes = 0; 234s 1949: String strRes; 234s 1949: # 6688 "/usr/include/doctest/doctest.h" 3 4 234s 1949: if(parseOption(argc, argv, "dt-" "out" "=", &strRes, "") || parseOption(argc, argv, "dt-" "o" "=", &strRes, "") || withDefaults) p->out = strRes; 234s 1949: if(parseOption(argc, argv, "dt-" "order-by" "=", &strRes, "file") || parseOption(argc, argv, "dt-" "ob" "=", &strRes, "file") || withDefaults) p->order_by = strRes; 234s 1949: if(parseIntOption(argc, argv, "dt-" "rand-seed" "=", option_int, intRes) || parseIntOption(argc, argv, "dt-" "rs" "=", option_int, intRes)) p->rand_seed = intRes; else if(withDefaults) p->rand_seed = 0; 234s 1949: 234s 1949: if(parseIntOption(argc, argv, "dt-" "first" "=", option_int, intRes) || parseIntOption(argc, argv, "dt-" "f" "=", option_int, intRes)) p->first = intRes; else if(withDefaults) p->first = 0; 234s 1949: if(parseIntOption(argc, argv, "dt-" "last" "=", option_int, intRes) || parseIntOption(argc, argv, "dt-" "l" "=", option_int, intRes)) p->last = intRes; else if(withDefaults) p->last = (0x7fffffff * 2U + 1U); 234s 1949: 234s 1949: if(parseIntOption(argc, argv, "dt-" "abort-after" "=", option_int, intRes) || parseIntOption(argc, argv, "dt-" "aa" "=", option_int, intRes)) p->abort_after = intRes; else if(withDefaults) p->abort_after = 0; 234s 1949: if(parseIntOption(argc, argv, "dt-" "subcase-filter-levels" "=", option_int, intRes) || parseIntOption(argc, argv, "dt-" "scfl" "=", option_int, intRes)) p->subcase_filter_levels = intRes; else if(withDefaults) p->subcase_filter_levels = 0x7fffffff; 234s 1949: 234s 1949: if(parseIntOption(argc, argv, "dt-" "success" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "s" "=", option_bool, intRes)) p->success = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "success") || parseFlag(argc, argv, "dt-" "s")) p->success = true; else if(withDefaults) p->success = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "case-sensitive" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "cs" "=", option_bool, intRes)) p->case_sensitive = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "case-sensitive") || parseFlag(argc, argv, "dt-" "cs")) p->case_sensitive = true; else if(withDefaults) p->case_sensitive = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "exit" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "e" "=", option_bool, intRes)) p->exit = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "exit") || parseFlag(argc, argv, "dt-" "e")) p->exit = true; else if(withDefaults) p->exit = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "duration" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "d" "=", option_bool, intRes)) p->duration = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "duration") || parseFlag(argc, argv, "dt-" "d")) p->duration = true; else if(withDefaults) p->duration = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "minimal" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "m" "=", option_bool, intRes)) p->minimal = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "minimal") || parseFlag(argc, argv, "dt-" "m")) p->minimal = true; else if(withDefaults) p->minimal = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "quiet" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "q" "=", option_bool, intRes)) p->quiet = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "quiet") || parseFlag(argc, argv, "dt-" "q")) p->quiet = true; else if(withDefaults) p->quiet = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-throw" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nt" "=", option_bool, intRes)) p->no_throw = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-throw") || parseFlag(argc, argv, "dt-" "nt")) p->no_throw = true; else if(withDefaults) p->no_throw = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-exitcode" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "ne" "=", option_bool, intRes)) p->no_exitcode = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-exitcode") || parseFlag(argc, argv, "dt-" "ne")) p->no_exitcode = true; else if(withDefaults) p->no_exitcode = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-run" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nr" "=", option_bool, intRes)) p->no_run = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-run") || parseFlag(argc, argv, "dt-" "nr")) p->no_run = true; else if(withDefaults) p->no_run = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-intro" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "ni" "=", option_bool, intRes)) p->no_intro = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-intro") || parseFlag(argc, argv, "dt-" "ni")) p->no_intro = true; else if(withDefaults) p->no_intro = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-version" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nv" "=", option_bool, intRes)) p->no_version = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-version") || parseFlag(argc, argv, "dt-" "nv")) p->no_version = true; else if(withDefaults) p->no_version = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-colors" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nc" "=", option_bool, intRes)) p->no_colors = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-colors") || parseFlag(argc, argv, "dt-" "nc")) p->no_colors = true; else if(withDefaults) p->no_colors = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "force-colors" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "fc" "=", option_bool, intRes)) p->force_colors = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "force-colors") || parseFlag(argc, argv, "dt-" "fc")) p->force_colors = true; else if(withDefaults) p->force_colors = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-breaks" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nb" "=", option_bool, intRes)) p->no_breaks = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-breaks") || parseFlag(argc, argv, "dt-" "nb")) p->no_breaks = true; else if(withDefaults) p->no_breaks = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-skip" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "ns" "=", option_bool, intRes)) p->no_skip = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-skip") || parseFlag(argc, argv, "dt-" "ns")) p->no_skip = true; else if(withDefaults) p->no_skip = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "gnu-file-line" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "gfl" "=", option_bool, intRes)) p->gnu_file_line = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "gnu-file-line") || parseFlag(argc, argv, "dt-" "gfl")) p->gnu_file_line = true; else if(withDefaults) p->gnu_file_line = !bool(0); 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-path-filenames" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "npf" "=", option_bool, intRes)) p->no_path_in_filenames = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-path-filenames") || parseFlag(argc, argv, "dt-" "npf")) p->no_path_in_filenames = true; else if(withDefaults) p->no_path_in_filenames = false; 234s 1949: if(parseOption(argc, argv, "dt-" "strip-file-prefixes" "=", &strRes, "") || parseOption(argc, argv, "dt-" "sfp" "=", &strRes, "") || withDefaults) p->strip_file_prefixes = strRes; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-line-numbers" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nln" "=", option_bool, intRes)) p->no_line_numbers = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-line-numbers") || parseFlag(argc, argv, "dt-" "nln")) p->no_line_numbers = true; else if(withDefaults) p->no_line_numbers = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-debug-output" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "ndo" "=", option_bool, intRes)) p->no_debug_output = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-debug-output") || parseFlag(argc, argv, "dt-" "ndo")) p->no_debug_output = true; else if(withDefaults) p->no_debug_output = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-skipped-summary" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "nss" "=", option_bool, intRes)) p->no_skipped_summary = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-skipped-summary") || parseFlag(argc, argv, "dt-" "nss")) p->no_skipped_summary = true; else if(withDefaults) p->no_skipped_summary = false; 234s 1949: if(parseIntOption(argc, argv, "dt-" "no-time-in-output" "=", option_bool, intRes) || parseIntOption(argc, argv, "dt-" "ntio" "=", option_bool, intRes)) p->no_time_in_output = static_cast(intRes); else if(parseFlag(argc, argv, "dt-" "no-time-in-output") || parseFlag(argc, argv, "dt-" "ntio")) p->no_time_in_output = true; else if(withDefaults) p->no_time_in_output = false; 234s 1949: 234s 1949: 234s 1949: if(withDefaults) { 234s 1949: p->help = false; 234s 1949: p->version = false; 234s 1949: p->count = false; 234s 1949: p->list_test_cases = false; 234s 1949: p->list_test_suites = false; 234s 1949: p->list_reporters = false; 234s 1949: } 234s 1949: if(parseFlag(argc, argv, "dt-" "help") || 234s 1949: parseFlag(argc, argv, "dt-" "h") || 234s 1949: parseFlag(argc, argv, "dt-" "?")) { 234s 1949: p->help = true; 234s 1949: p->exit = true; 234s 1949: } 234s 1949: if(parseFlag(argc, argv, "dt-" "version") || 234s 1949: parseFlag(argc, argv, "dt-" "v")) { 234s 1949: p->version = true; 234s 1949: p->exit = true; 234s 1949: } 234s 1949: if(parseFlag(argc, argv, "dt-" "count") || 234s 1949: parseFlag(argc, argv, "dt-" "c")) { 234s 1949: p->count = true; 234s 1949: p->exit = true; 234s 1949: } 234s 1949: if(parseFlag(argc, argv, "dt-" "list-test-cases") || 234s 1949: parseFlag(argc, argv, "dt-" "ltc")) { 234s 1949: p->list_test_cases = true; 234s 1949: p->exit = true; 234s 1949: } 234s 1949: if(parseFlag(argc, argv, "dt-" "list-test-suites") || 234s 1949: parseFlag(argc, argv, "dt-" "lts")) { 234s 1949: p->list_test_suites = true; 234s 1949: p->exit = true; 234s 1949: } 234s 1949: if(parseFlag(argc, argv, "dt-" "list-reporters") || 234s 1949: parseFlag(argc, argv, "dt-" "lr")) { 234s 1949: p->list_reporters = true; 234s 1949: p->exit = true; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void Context::addFilter(const char* filter, const char* value) { setOption(filter, value); } 234s 1949: 234s 1949: 234s 1949: void Context::clearFilters() { 234s 1949: for(auto& curr : p->filters) 234s 1949: curr.clear(); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void Context::setOption(const char* option, bool value) { 234s 1949: setOption(option, value ? "true" : "false"); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void Context::setOption(const char* option, int value) { 234s 1949: setOption(option, toString(value).c_str()); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: void Context::setOption(const char* option, const char* value) { 234s 1949: auto argv = String("-") + option + "=" + value; 234s 1949: auto lvalue = argv.c_str(); 234s 1949: parseArgs(1, &lvalue); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: bool Context::shouldExit() { return p->exit; } 234s 1949: 234s 1949: void Context::setAsDefaultForAssertsOutOfTestCases() { g_cs = p; } 234s 1949: 234s 1949: void Context::setAssertHandler(detail::assert_handler ah) { p->ah = ah; } 234s 1949: 234s 1949: void Context::setCout(std::ostream* out) { p->cout = out; } 234s 1949: 234s 1949: static class DiscardOStream : public std::ostream 234s 1949: { 234s 1949: private: 234s 1949: class : public std::streambuf 234s 1949: { 234s 1949: private: 234s 1949: 234s 1949: char buf[1024]; 234s 1949: 234s 1949: protected: 234s 1949: std::streamsize xsputn(const char_type*, std::streamsize count) override { return count; } 234s 1949: 234s 1949: int_type overflow(int_type ch) override { 234s 1949: setp(std::begin(buf), std::end(buf)); 234s 1949: return traits_type::not_eof(ch); 234s 1949: } 234s 1949: } discardBuf; 234s 1949: 234s 1949: public: 234s 1949: DiscardOStream() 234s 1949: : std::ostream(&discardBuf) {} 234s 1949: } discardOut; 234s 1949: 234s 1949: 234s 1949: int Context::run() { 234s 1949: using namespace detail; 234s 1949: 234s 1949: 234s 1949: auto old_cs = g_cs; 234s 1949: 234s 1949: g_cs = p; 234s 1949: is_running_in_test = true; 234s 1949: 234s 1949: g_no_colors = p->no_colors; 234s 1949: p->resetRunData(); 234s 1949: 234s 1949: std::fstream fstr; 234s 1949: if(p->cout == nullptr) { 234s 1949: if(p->quiet) { 234s 1949: p->cout = &discardOut; 234s 1949: } else if(p->out.size()) { 234s 1949: 234s 1949: fstr.open(p->out.c_str(), std::fstream::out); 234s 1949: p->cout = &fstr; 234s 1949: } else { 234s 1949: 234s 1949: 234s 1949: p->cout = &std::cout; 234s 1949: 234s 1949: 234s 1949: 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: FatalConditionHandler::allocateAltStackMem(); 234s 1949: 234s 1949: auto cleanup_and_return = [&]() { 234s 1949: FatalConditionHandler::freeAltStackMem(); 234s 1949: 234s 1949: if(fstr.is_open()) 234s 1949: fstr.close(); 234s 1949: 234s 1949: 234s 1949: g_cs = old_cs; 234s 1949: is_running_in_test = false; 234s 1949: 234s 1949: 234s 1949: for(auto& curr : p->reporters_currently_used) 234s 1949: delete curr; 234s 1949: p->reporters_currently_used.clear(); 234s 1949: 234s 1949: if(p->numTestCasesFailed && !p->no_exitcode) 234s 1949: return 1; 234s 1949: return 0; 234s 1949: }; 234s 1949: 234s 1949: 234s 1949: if(p->filters[8].empty()) 234s 1949: p->filters[8].push_back("console"); 234s 1949: 234s 1949: 234s 1949: for(auto& curr : getReporters()) { 234s 1949: if(matchesAny(curr.first.second.c_str(), p->filters[8], false, p->case_sensitive)) 234s 1949: p->reporters_currently_used.push_back(curr.second(*g_cs)); 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: for(auto& curr : getListeners()) 234s 1949: p->reporters_currently_used.insert(p->reporters_currently_used.begin(), curr.second(*g_cs)); 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: if(p->no_run || p->version || p->help || p->list_reporters) { 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->report_query(QueryData()); 234s 1949: 234s 1949: return cleanup_and_return(); 234s 1949: } 234s 1949: 234s 1949: std::vector testArray; 234s 1949: for(auto& curr : getRegisteredTests()) 234s 1949: testArray.push_back(&curr); 234s 1949: p->numTestCases = testArray.size(); 234s 1949: 234s 1949: 234s 1949: if(!testArray.empty()) { 234s 1949: if(p->order_by.compare("file", true) == 0) { 234s 1949: std::sort(testArray.begin(), testArray.end(), fileOrderComparator); 234s 1949: } else if(p->order_by.compare("suite", true) == 0) { 234s 1949: std::sort(testArray.begin(), testArray.end(), suiteOrderComparator); 234s 1949: } else if(p->order_by.compare("name", true) == 0) { 234s 1949: std::sort(testArray.begin(), testArray.end(), nameOrderComparator); 234s 1949: } else if(p->order_by.compare("rand", true) == 0) { 234s 1949: std::srand(p->rand_seed); 234s 1949: 234s 1949: 234s 1949: const auto first = &testArray[0]; 234s 1949: for(size_t i = testArray.size() - 1; i > 0; --i) { 234s 1949: int idxToSwap = std::rand() % (i + 1); 234s 1949: 234s 1949: const auto temp = first[i]; 234s 1949: 234s 1949: first[i] = first[idxToSwap]; 234s 1949: first[idxToSwap] = temp; 234s 1949: } 234s 1949: } else if(p->order_by.compare("none", true) == 0) { 234s 1949: 234s 1949: 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: std::set testSuitesPassingFilt; 234s 1949: 234s 1949: bool query_mode = p->count || p->list_test_cases || p->list_test_suites; 234s 1949: std::vector queryResults; 234s 1949: 234s 1949: if(!query_mode) 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_run_start(); 234s 1949: 234s 1949: 234s 1949: for(auto& curr : testArray) { 234s 1949: const auto& tc = *curr; 234s 1949: 234s 1949: bool skip_me = false; 234s 1949: if(tc.m_skip && !p->no_skip) 234s 1949: skip_me = true; 234s 1949: 234s 1949: if(!matchesAny(tc.m_file.c_str(), p->filters[0], true, p->case_sensitive)) 234s 1949: skip_me = true; 234s 1949: if(matchesAny(tc.m_file.c_str(), p->filters[1], false, p->case_sensitive)) 234s 1949: skip_me = true; 234s 1949: if(!matchesAny(tc.m_test_suite, p->filters[2], true, p->case_sensitive)) 234s 1949: skip_me = true; 234s 1949: if(matchesAny(tc.m_test_suite, p->filters[3], false, p->case_sensitive)) 234s 1949: skip_me = true; 234s 1949: if(!matchesAny(tc.m_name, p->filters[4], true, p->case_sensitive)) 234s 1949: skip_me = true; 234s 1949: if(matchesAny(tc.m_name, p->filters[5], false, p->case_sensitive)) 234s 1949: skip_me = true; 234s 1949: 234s 1949: if(!skip_me) 234s 1949: p->numTestCasesPassingFilters++; 234s 1949: 234s 1949: 234s 1949: if((p->last < p->numTestCasesPassingFilters && p->first <= p->last) || 234s 1949: (p->first > p->numTestCasesPassingFilters)) 234s 1949: skip_me = true; 234s 1949: 234s 1949: if(skip_me) { 234s 1949: if(!query_mode) 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_skipped(tc); 234s 1949: continue; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if(p->count) 234s 1949: continue; 234s 1949: 234s 1949: 234s 1949: if(p->list_test_cases) { 234s 1949: queryResults.push_back(&tc); 234s 1949: continue; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: if(p->list_test_suites) { 234s 1949: if((testSuitesPassingFilt.count(tc.m_test_suite) == 0) && tc.m_test_suite[0] != '\0') { 234s 1949: queryResults.push_back(&tc); 234s 1949: testSuitesPassingFilt.insert(tc.m_test_suite); 234s 1949: p->numTestSuitesPassingFilters++; 234s 1949: } 234s 1949: continue; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: { 234s 1949: p->currentTest = &tc; 234s 1949: 234s 1949: p->failure_flags = TestCaseFailureReason::None; 234s 1949: p->seconds = 0; 234s 1949: 234s 1949: 234s 1949: p->numAssertsFailedCurrentTest_atomic = 0; 234s 1949: p->numAssertsCurrentTest_atomic = 0; 234s 1949: 234s 1949: p->fullyTraversedSubcases.clear(); 234s 1949: 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_start(tc); 234s 1949: 234s 1949: p->timer.start(); 234s 1949: 234s 1949: bool run_test = true; 234s 1949: 234s 1949: do { 234s 1949: 234s 1949: p->reachedLeaf = false; 234s 1949: 234s 1949: p->subcaseStack.clear(); 234s 1949: p->currentSubcaseDepth = 0; 234s 1949: 234s 1949: p->shouldLogCurrentException = true; 234s 1949: 234s 1949: 234s 1949: p->stringifiedContexts.clear(); 234s 1949: 234s 1949: 234s 1949: try { 234s 1949: 234s 1949: 234s 1949: 234s 1949: FatalConditionHandler fatalConditionHandler; 234s 1949: 234s 1949: tc.m_test(); 234s 1949: fatalConditionHandler.reset(); 234s 1949: 234s 1949: 234s 1949: } catch(const TestFailureException&) { 234s 1949: p->failure_flags |= TestCaseFailureReason::AssertFailure; 234s 1949: } catch(...) { 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_exception({translateActiveException(), false}) 234s 1949: ; 234s 1949: p->failure_flags |= TestCaseFailureReason::Exception; 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: if(p->abort_after > 0 && 234s 1949: p->numAssertsFailed + p->numAssertsFailedCurrentTest_atomic >= p->abort_after) { 234s 1949: run_test = false; 234s 1949: p->failure_flags |= TestCaseFailureReason::TooManyFailedAsserts; 234s 1949: } 234s 1949: 234s 1949: if(!p->nextSubcaseStack.empty() && run_test) 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_reenter(tc); 234s 1949: if(p->nextSubcaseStack.empty()) 234s 1949: run_test = false; 234s 1949: } while(run_test); 234s 1949: 234s 1949: p->finalizeTestCaseData(); 234s 1949: 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_case_end(*g_cs); 234s 1949: 234s 1949: p->currentTest = nullptr; 234s 1949: 234s 1949: 234s 1949: if(p->abort_after > 0 && p->numAssertsFailed >= p->abort_after) 234s 1949: break; 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: if(!query_mode) { 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->test_run_end(*g_cs); 234s 1949: } else { 234s 1949: QueryData qdata; 234s 1949: qdata.run_stats = g_cs; 234s 1949: qdata.data = queryResults.data(); 234s 1949: qdata.num_data = unsigned(queryResults.size()); 234s 1949: for(auto& curr_rep : g_cs->reporters_currently_used) curr_rep->report_query(qdata); 234s 1949: } 234s 1949: 234s 1949: return cleanup_and_return(); 234s 1949: } 234s 1949: 234s 1949: IReporter::~IReporter() = default; 234s 1949: 234s 1949: int IReporter::get_num_active_contexts() { return detail::g_infoContexts.size(); } 234s 1949: const IContextScope* const* IReporter::get_active_contexts() { 234s 1949: return get_num_active_contexts() ? &detail::g_infoContexts[0] : nullptr; 234s 1949: } 234s 1949: 234s 1949: int IReporter::get_num_stringified_contexts() { return detail::g_cs->stringifiedContexts.size(); } 234s 1949: const String* IReporter::get_stringified_contexts() { 234s 1949: return get_num_stringified_contexts() ? &detail::g_cs->stringifiedContexts[0] : nullptr; 234s 1949: } 234s 1949: 234s 1949: namespace detail { 234s 1949: void registerReporterImpl(const char* name, int priority, reporterCreatorFunc c, bool isReporter) { 234s 1949: if(isReporter) 234s 1949: getReporters().insert(reporterMap::value_type(reporterMap::key_type(priority, name), c)); 234s 1949: else 234s 1949: getListeners().insert(reporterMap::value_type(reporterMap::key_type(priority, name), c)); 234s 1949: } 234s 1949: } 234s 1949: 234s 1949: } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: int main(int argc, char** argv) { return doctest::Context(argc, argv).run(); } 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: 234s 1949: # 7119 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic pop 234s 1949: 234s 1949: 234s 1949: # 7121 "/usr/include/doctest/doctest.h" 3 4 234s 1949: #pragma GCC diagnostic pop 234s 1949: # 14 "/tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp" 2 234s === END GCC DUMP === 234s ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/_usr_libexec_gcc_arm-linux-gnueabihf_15_cc1plus.1000.crash' 234s make[2]: *** [CMakeFiles/test_xsimd.dir/build.make:79: CMakeFiles/test_xsimd.dir/main.cpp.o] Error 1 234s make[1]: *** [CMakeFiles/Makefile2:133: CMakeFiles/test_xsimd.dir/all] Error 2 234s make: *** [Makefile:101: all] Error 2 234s autopkgtest [22:50:01]: test xsimd-test-complex: -----------------------] 239s autopkgtest [22:50:06]: test xsimd-test-complex: - - - - - - - - - - results - - - - - - - - - - 239s xsimd-test-complex FAIL non-zero exit status 2 242s autopkgtest [22:50:09]: test xsimd-test-clang: preparing testbed 270s autopkgtest [22:50:37]: testbed dpkg architecture: armhf 271s autopkgtest [22:50:38]: testbed apt version: 3.1.15 275s autopkgtest [22:50:42]: @@@@@@@@@@@@@@@@@@@@ test bed setup 277s autopkgtest [22:50:44]: testbed release detected to be: resolute 284s autopkgtest [22:50:51]: updating testbed package index (apt update) 286s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 287s Get:2 http://ftpmaster.internal/ubuntu resolute InRelease [124 kB] 287s Get:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease [124 kB] 287s Get:4 http://ftpmaster.internal/ubuntu resolute-security InRelease [124 kB] 287s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1574 kB] 287s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [30.0 kB] 287s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [162 kB] 287s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf Packages [236 kB] 287s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf Packages [1336 kB] 287s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse armhf Packages [7288 B] 287s Get:11 http://ftpmaster.internal/ubuntu resolute/main Sources [1412 kB] 287s Get:12 http://ftpmaster.internal/ubuntu resolute/universe Sources [21.3 MB] 288s Get:13 http://ftpmaster.internal/ubuntu resolute/multiverse Sources [311 kB] 288s Get:14 http://ftpmaster.internal/ubuntu resolute/main armhf Packages [1374 kB] 288s Get:15 http://ftpmaster.internal/ubuntu resolute/universe armhf Packages [15.0 MB] 288s Get:16 http://ftpmaster.internal/ubuntu resolute/multiverse armhf Packages [177 kB] 292s Fetched 43.4 MB in 6s (7686 kB/s) 293s Reading package lists... 299s autopkgtest [22:51:06]: upgrading testbed (apt dist-upgrade and autopurge) 300s Reading package lists... 301s Building dependency tree... 301s Reading state information... 301s Calculating upgrade... 302s The following packages will be upgraded: 302s dbus dbus-bin dbus-daemon dbus-session-bus-common dbus-system-bus-common 302s dbus-user-session ethtool libbsd0 libdbus-1-3 libgdbm-compat4t64 libgdbm6t64 302s libidn2-0 libjansson4 libnetfilter-conntrack3 libusb-1.0-0 libwrap0 libxau6 302s libxkbcommon0 shared-mime-info ubuntu-minimal ubuntu-standard 302s 21 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 302s Need to get 1743 kB of archives. 302s After this operation, 2320 kB disk space will be freed. 302s Get:1 http://ftpmaster.internal/ubuntu resolute/main armhf libbsd0 armhf 0.12.2-2build2 [36.8 kB] 302s Get:2 http://ftpmaster.internal/ubuntu resolute/main armhf dbus-system-bus-common all 1.16.2-2ubuntu3 [55.8 kB] 302s Get:3 http://ftpmaster.internal/ubuntu resolute/main armhf dbus-session-bus-common all 1.16.2-2ubuntu3 [54.4 kB] 302s Get:4 http://ftpmaster.internal/ubuntu resolute/main armhf dbus-user-session armhf 1.16.2-2ubuntu3 [9696 B] 302s Get:5 http://ftpmaster.internal/ubuntu resolute/main armhf dbus-daemon armhf 1.16.2-2ubuntu3 [111 kB] 303s Get:6 http://ftpmaster.internal/ubuntu resolute/main armhf dbus-bin armhf 1.16.2-2ubuntu3 [37.9 kB] 303s Get:7 http://ftpmaster.internal/ubuntu resolute/main armhf dbus armhf 1.16.2-2ubuntu3 [28.2 kB] 303s Get:8 http://ftpmaster.internal/ubuntu resolute/main armhf libdbus-1-3 armhf 1.16.2-2ubuntu3 [165 kB] 303s Get:9 http://ftpmaster.internal/ubuntu resolute/main armhf ethtool armhf 1:6.15-3build1 [298 kB] 303s Get:10 http://ftpmaster.internal/ubuntu resolute/main armhf libidn2-0 armhf 2.3.8-4build1 [97.6 kB] 303s Get:11 http://ftpmaster.internal/ubuntu resolute/main armhf shared-mime-info armhf 2.4-5build3 [469 kB] 303s Get:12 http://ftpmaster.internal/ubuntu resolute/main armhf ubuntu-minimal armhf 1.564 [13.3 kB] 303s Get:13 http://ftpmaster.internal/ubuntu resolute/main armhf libgdbm6t64 armhf 1.26-1build1 [32.2 kB] 303s Get:14 http://ftpmaster.internal/ubuntu resolute/main armhf libjansson4 armhf 2.14-2build4 [28.8 kB] 303s Get:15 http://ftpmaster.internal/ubuntu resolute/main armhf libnetfilter-conntrack3 armhf 1.1.1-1 [39.2 kB] 303s Get:16 http://ftpmaster.internal/ubuntu resolute/main armhf libusb-1.0-0 armhf 2:1.0.29-2build1 [50.2 kB] 303s Get:17 http://ftpmaster.internal/ubuntu resolute/main armhf libxau6 armhf 1:1.0.11-1build2 [6652 B] 303s Get:18 http://ftpmaster.internal/ubuntu resolute/main armhf libxkbcommon0 armhf 1.13.1-1 [144 kB] 303s Get:19 http://ftpmaster.internal/ubuntu resolute/main armhf ubuntu-standard armhf 1.564 [13.3 kB] 303s Get:20 http://ftpmaster.internal/ubuntu resolute/main armhf libgdbm-compat4t64 armhf 1.26-1build1 [6372 B] 303s Get:21 http://ftpmaster.internal/ubuntu resolute/main armhf libwrap0 armhf 7.6.q-36build2 [46.0 kB] 303s Fetched 1743 kB in 1s (2242 kB/s) 304s (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 ... 68753 files and directories currently installed.) 304s Preparing to unpack .../libbsd0_0.12.2-2build2_armhf.deb ... 304s Unpacking libbsd0:armhf (0.12.2-2build2) over (0.12.2-2build1) ... 304s Setting up libbsd0:armhf (0.12.2-2build2) ... 304s (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 ... 68753 files and directories currently installed.) 304s Preparing to unpack .../00-dbus-system-bus-common_1.16.2-2ubuntu3_all.deb ... 304s Unpacking dbus-system-bus-common (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 304s Preparing to unpack .../01-dbus-session-bus-common_1.16.2-2ubuntu3_all.deb ... 304s Unpacking dbus-session-bus-common (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 304s Preparing to unpack .../02-dbus-user-session_1.16.2-2ubuntu3_armhf.deb ... 304s Unpacking dbus-user-session (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 304s Preparing to unpack .../03-dbus-daemon_1.16.2-2ubuntu3_armhf.deb ... 304s Unpacking dbus-daemon (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 304s Preparing to unpack .../04-dbus-bin_1.16.2-2ubuntu3_armhf.deb ... 304s Unpacking dbus-bin (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 304s Preparing to unpack .../05-dbus_1.16.2-2ubuntu3_armhf.deb ... 304s Unpacking dbus (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 304s Preparing to unpack .../06-libdbus-1-3_1.16.2-2ubuntu3_armhf.deb ... 304s Unpacking libdbus-1-3:armhf (1.16.2-2ubuntu3) over (1.16.2-2ubuntu2) ... 304s Preparing to unpack .../07-ethtool_1%3a6.15-3build1_armhf.deb ... 304s Unpacking ethtool (1:6.15-3build1) over (1:6.15-3) ... 304s Preparing to unpack .../08-libidn2-0_2.3.8-4build1_armhf.deb ... 304s Unpacking libidn2-0:armhf (2.3.8-4build1) over (2.3.8-4) ... 304s Preparing to unpack .../09-shared-mime-info_2.4-5build3_armhf.deb ... 304s Unpacking shared-mime-info (2.4-5build3) over (2.4-5build2) ... 304s Preparing to unpack .../10-ubuntu-minimal_1.564_armhf.deb ... 304s Unpacking ubuntu-minimal (1.564) over (1.563) ... 304s Preparing to unpack .../11-libgdbm6t64_1.26-1build1_armhf.deb ... 304s Unpacking libgdbm6t64:armhf (1.26-1build1) over (1.26-1) ... 304s Preparing to unpack .../12-libjansson4_2.14-2build4_armhf.deb ... 304s Unpacking libjansson4:armhf (2.14-2build4) over (2.14-2build3) ... 305s Preparing to unpack .../13-libnetfilter-conntrack3_1.1.1-1_armhf.deb ... 305s Unpacking libnetfilter-conntrack3:armhf (1.1.1-1) over (1.1.0-1build1) ... 305s Preparing to unpack .../14-libusb-1.0-0_2%3a1.0.29-2build1_armhf.deb ... 305s Unpacking libusb-1.0-0:armhf (2:1.0.29-2build1) over (2:1.0.29-2) ... 305s Preparing to unpack .../15-libxau6_1%3a1.0.11-1build2_armhf.deb ... 305s Unpacking libxau6:armhf (1:1.0.11-1build2) over (1:1.0.11-1build1) ... 305s Preparing to unpack .../16-libxkbcommon0_1.13.1-1_armhf.deb ... 305s Unpacking libxkbcommon0:armhf (1.13.1-1) over (1.12.3-1) ... 305s Preparing to unpack .../17-ubuntu-standard_1.564_armhf.deb ... 305s Unpacking ubuntu-standard (1.564) over (1.563) ... 305s Preparing to unpack .../18-libgdbm-compat4t64_1.26-1build1_armhf.deb ... 305s Unpacking libgdbm-compat4t64:armhf (1.26-1build1) over (1.26-1) ... 305s Preparing to unpack .../19-libwrap0_7.6.q-36build2_armhf.deb ... 305s Unpacking libwrap0:armhf (7.6.q-36build2) over (7.6.q-36build1) ... 305s Setting up libxau6:armhf (1:1.0.11-1build2) ... 305s Setting up libgdbm6t64:armhf (1.26-1build1) ... 305s Setting up ubuntu-minimal (1.564) ... 305s Setting up libgdbm-compat4t64:armhf (1.26-1build1) ... 305s Setting up libidn2-0:armhf (2.3.8-4build1) ... 305s Setting up ubuntu-standard (1.564) ... 305s Setting up libjansson4:armhf (2.14-2build4) ... 305s Setting up libwrap0:armhf (7.6.q-36build2) ... 305s Setting up libdbus-1-3:armhf (1.16.2-2ubuntu3) ... 305s Setting up shared-mime-info (2.4-5build3) ... 306s Setting up libnetfilter-conntrack3:armhf (1.1.1-1) ... 306s Setting up dbus-session-bus-common (1.16.2-2ubuntu3) ... 306s Setting up libusb-1.0-0:armhf (2:1.0.29-2build1) ... 306s Setting up dbus-system-bus-common (1.16.2-2ubuntu3) ... 306s Setting up dbus-bin (1.16.2-2ubuntu3) ... 306s Setting up ethtool (1:6.15-3build1) ... 306s Setting up libxkbcommon0:armhf (1.13.1-1) ... 306s Setting up dbus-daemon (1.16.2-2ubuntu3) ... 306s Setting up dbus-user-session (1.16.2-2ubuntu3) ... 306s Setting up dbus (1.16.2-2ubuntu3) ... 306s A reboot is required to replace the running dbus-daemon. 306s Please reboot the system when convenient. 306s Processing triggers for man-db (2.13.1-1build1) ... 307s Processing triggers for libc-bin (2.42-2ubuntu4) ... 309s Reading package lists... 310s Building dependency tree... 310s Reading state information... 310s Solving dependencies... 311s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 313s autopkgtest [22:51:20]: rebooting testbed after setup commands that affected boot 375s Reading package lists... 375s Building dependency tree... 375s Reading state information... 376s Solving dependencies... 376s The following NEW packages will be installed: 376s clang clang-21 cmake cmake-data doctest-dev libasan8 libc-dev-bin libc6-dev 376s libclang-common-21-dev libclang-cpp21 libclang1-21 libcrypt-dev libgc1 376s libgcc-15-dev libgomp1 libjsoncpp26 libllvm21 libobjc-15-dev libobjc4 376s librhash1 libstdc++-15-dev libubsan1 libxsimd-dev linux-libc-dev 376s llvm-21-linker-tools rpcsvc-proto xtl-dev 377s 0 upgraded, 27 newly installed, 0 to remove and 0 not upgraded. 377s Need to get 74.8 MB of archives. 377s After this operation, 325 MB of additional disk space will be used. 377s Get:1 http://ftpmaster.internal/ubuntu resolute/main armhf libllvm21 armhf 1:21.1.8-1ubuntu1 [30.3 MB] 380s Get:2 http://ftpmaster.internal/ubuntu resolute/main armhf libclang-cpp21 armhf 1:21.1.8-1ubuntu1 [13.3 MB] 381s Get:3 http://ftpmaster.internal/ubuntu resolute/main armhf libgomp1 armhf 15.2.0-12ubuntu1 [129 kB] 381s Get:4 http://ftpmaster.internal/ubuntu resolute/main armhf libasan8 armhf 15.2.0-12ubuntu1 [2949 kB] 381s Get:5 http://ftpmaster.internal/ubuntu resolute/main armhf libubsan1 armhf 15.2.0-12ubuntu1 [1187 kB] 381s Get:6 http://ftpmaster.internal/ubuntu resolute/main armhf libgcc-15-dev armhf 15.2.0-12ubuntu1 [898 kB] 381s Get:7 http://ftpmaster.internal/ubuntu resolute/main armhf libc-dev-bin armhf 2.42-2ubuntu4 [21.8 kB] 381s Get:8 http://ftpmaster.internal/ubuntu resolute/main armhf linux-libc-dev armhf 6.19.0-3.3 [1804 kB] 381s Get:9 http://ftpmaster.internal/ubuntu resolute/main armhf libcrypt-dev armhf 1:4.5.1-1 [128 kB] 381s Get:10 http://ftpmaster.internal/ubuntu resolute/main armhf rpcsvc-proto armhf 1.4.3-1build1 [62.6 kB] 381s Get:11 http://ftpmaster.internal/ubuntu resolute/main armhf libc6-dev armhf 2.42-2ubuntu4 [1416 kB] 381s Get:12 http://ftpmaster.internal/ubuntu resolute/main armhf libstdc++-15-dev armhf 15.2.0-12ubuntu1 [2638 kB] 381s Get:13 http://ftpmaster.internal/ubuntu resolute/main armhf libgc1 armhf 1:8.2.12-1 [82.9 kB] 381s Get:14 http://ftpmaster.internal/ubuntu resolute/universe armhf libobjc4 armhf 15.2.0-12ubuntu1 [38.6 kB] 381s Get:15 http://ftpmaster.internal/ubuntu resolute/universe armhf libobjc-15-dev armhf 15.2.0-12ubuntu1 [186 kB] 381s Get:16 http://ftpmaster.internal/ubuntu resolute/universe armhf libclang-common-21-dev armhf 1:21.1.8-1ubuntu1 [798 kB] 381s Get:17 http://ftpmaster.internal/ubuntu resolute/universe armhf llvm-21-linker-tools armhf 1:21.1.8-1ubuntu1 [1176 kB] 381s Get:18 http://ftpmaster.internal/ubuntu resolute/universe armhf libclang1-21 armhf 1:21.1.8-1ubuntu1 [7838 kB] 381s Get:19 http://ftpmaster.internal/ubuntu resolute/universe armhf clang-21 armhf 1:21.1.8-1ubuntu1 [123 kB] 381s Get:20 http://ftpmaster.internal/ubuntu resolute/universe armhf clang armhf 1:21.1.6-70 [6522 B] 381s Get:21 http://ftpmaster.internal/ubuntu resolute/main armhf cmake-data all 4.1.1+really3.31.6-2ubuntu1 [2329 kB] 381s Get:22 http://ftpmaster.internal/ubuntu resolute/main armhf libjsoncpp26 armhf 1.9.6-5 [74.0 kB] 381s Get:23 http://ftpmaster.internal/ubuntu resolute/main armhf librhash1 armhf 1.4.6-1.1 [148 kB] 381s Get:24 http://ftpmaster.internal/ubuntu resolute/main armhf cmake armhf 4.1.1+really3.31.6-2ubuntu1 [6839 kB] 381s Get:25 http://ftpmaster.internal/ubuntu resolute/universe armhf doctest-dev all 2.4.12-1 [189 kB] 381s Get:26 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf xtl-dev all 0.8.1-1~0.1 [75.6 kB] 381s Get:27 http://ftpmaster.internal/ubuntu resolute/universe armhf libxsimd-dev armhf 13.2.0-1ubuntu1 [131 kB] 382s Fetched 74.8 MB in 5s (14.8 MB/s) 382s Selecting previously unselected package libllvm21:armhf. 382s (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 ... 68670 files and directories currently installed.) 382s Preparing to unpack .../00-libllvm21_1%3a21.1.8-1ubuntu1_armhf.deb ... 382s Unpacking libllvm21:armhf (1:21.1.8-1ubuntu1) ... 383s Selecting previously unselected package libclang-cpp21. 383s Preparing to unpack .../01-libclang-cpp21_1%3a21.1.8-1ubuntu1_armhf.deb ... 383s Unpacking libclang-cpp21 (1:21.1.8-1ubuntu1) ... 384s Selecting previously unselected package libgomp1:armhf. 384s Preparing to unpack .../02-libgomp1_15.2.0-12ubuntu1_armhf.deb ... 384s Unpacking libgomp1:armhf (15.2.0-12ubuntu1) ... 384s Selecting previously unselected package libasan8:armhf. 384s Preparing to unpack .../03-libasan8_15.2.0-12ubuntu1_armhf.deb ... 384s Unpacking libasan8:armhf (15.2.0-12ubuntu1) ... 384s Selecting previously unselected package libubsan1:armhf. 384s Preparing to unpack .../04-libubsan1_15.2.0-12ubuntu1_armhf.deb ... 384s Unpacking libubsan1:armhf (15.2.0-12ubuntu1) ... 384s Selecting previously unselected package libgcc-15-dev:armhf. 384s Preparing to unpack .../05-libgcc-15-dev_15.2.0-12ubuntu1_armhf.deb ... 384s Unpacking libgcc-15-dev:armhf (15.2.0-12ubuntu1) ... 384s Selecting previously unselected package libc-dev-bin. 384s Preparing to unpack .../06-libc-dev-bin_2.42-2ubuntu4_armhf.deb ... 384s Unpacking libc-dev-bin (2.42-2ubuntu4) ... 384s Selecting previously unselected package linux-libc-dev:armhf. 384s Preparing to unpack .../07-linux-libc-dev_6.19.0-3.3_armhf.deb ... 384s Unpacking linux-libc-dev:armhf (6.19.0-3.3) ... 385s Selecting previously unselected package libcrypt-dev:armhf. 385s Preparing to unpack .../08-libcrypt-dev_1%3a4.5.1-1_armhf.deb ... 385s Unpacking libcrypt-dev:armhf (1:4.5.1-1) ... 385s Selecting previously unselected package rpcsvc-proto. 385s Preparing to unpack .../09-rpcsvc-proto_1.4.3-1build1_armhf.deb ... 385s Unpacking rpcsvc-proto (1.4.3-1build1) ... 385s Selecting previously unselected package libc6-dev:armhf. 385s Preparing to unpack .../10-libc6-dev_2.42-2ubuntu4_armhf.deb ... 385s Unpacking libc6-dev:armhf (2.42-2ubuntu4) ... 385s Selecting previously unselected package libstdc++-15-dev:armhf. 385s Preparing to unpack .../11-libstdc++-15-dev_15.2.0-12ubuntu1_armhf.deb ... 385s Unpacking libstdc++-15-dev:armhf (15.2.0-12ubuntu1) ... 385s Selecting previously unselected package libgc1:armhf. 385s Preparing to unpack .../12-libgc1_1%3a8.2.12-1_armhf.deb ... 385s Unpacking libgc1:armhf (1:8.2.12-1) ... 385s Selecting previously unselected package libobjc4:armhf. 385s Preparing to unpack .../13-libobjc4_15.2.0-12ubuntu1_armhf.deb ... 385s Unpacking libobjc4:armhf (15.2.0-12ubuntu1) ... 385s Selecting previously unselected package libobjc-15-dev:armhf. 385s Preparing to unpack .../14-libobjc-15-dev_15.2.0-12ubuntu1_armhf.deb ... 385s Unpacking libobjc-15-dev:armhf (15.2.0-12ubuntu1) ... 385s Selecting previously unselected package libclang-common-21-dev:armhf. 385s Preparing to unpack .../15-libclang-common-21-dev_1%3a21.1.8-1ubuntu1_armhf.deb ... 385s Unpacking libclang-common-21-dev:armhf (1:21.1.8-1ubuntu1) ... 385s Selecting previously unselected package llvm-21-linker-tools. 385s Preparing to unpack .../16-llvm-21-linker-tools_1%3a21.1.8-1ubuntu1_armhf.deb ... 385s Unpacking llvm-21-linker-tools (1:21.1.8-1ubuntu1) ... 385s Selecting previously unselected package libclang1-21. 385s Preparing to unpack .../17-libclang1-21_1%3a21.1.8-1ubuntu1_armhf.deb ... 385s Unpacking libclang1-21 (1:21.1.8-1ubuntu1) ... 386s Selecting previously unselected package clang-21. 386s Preparing to unpack .../18-clang-21_1%3a21.1.8-1ubuntu1_armhf.deb ... 386s Unpacking clang-21 (1:21.1.8-1ubuntu1) ... 386s Selecting previously unselected package clang. 386s Preparing to unpack .../19-clang_1%3a21.1.6-70_armhf.deb ... 386s Unpacking clang (1:21.1.6-70) ... 386s Selecting previously unselected package cmake-data. 386s Preparing to unpack .../20-cmake-data_4.1.1+really3.31.6-2ubuntu1_all.deb ... 386s Unpacking cmake-data (4.1.1+really3.31.6-2ubuntu1) ... 386s Selecting previously unselected package libjsoncpp26:armhf. 386s Preparing to unpack .../21-libjsoncpp26_1.9.6-5_armhf.deb ... 386s Unpacking libjsoncpp26:armhf (1.9.6-5) ... 387s Selecting previously unselected package librhash1:armhf. 387s Preparing to unpack .../22-librhash1_1.4.6-1.1_armhf.deb ... 387s Unpacking librhash1:armhf (1.4.6-1.1) ... 387s Selecting previously unselected package cmake. 387s Preparing to unpack .../23-cmake_4.1.1+really3.31.6-2ubuntu1_armhf.deb ... 387s Unpacking cmake (4.1.1+really3.31.6-2ubuntu1) ... 387s Selecting previously unselected package doctest-dev. 387s Preparing to unpack .../24-doctest-dev_2.4.12-1_all.deb ... 387s Unpacking doctest-dev (2.4.12-1) ... 387s Selecting previously unselected package xtl-dev. 387s Preparing to unpack .../25-xtl-dev_0.8.1-1~0.1_all.deb ... 387s Unpacking xtl-dev (0.8.1-1~0.1) ... 387s Selecting previously unselected package libxsimd-dev:armhf. 387s Preparing to unpack .../26-libxsimd-dev_13.2.0-1ubuntu1_armhf.deb ... 387s Unpacking libxsimd-dev:armhf (13.2.0-1ubuntu1) ... 387s Setting up linux-libc-dev:armhf (6.19.0-3.3) ... 387s Setting up libgomp1:armhf (15.2.0-12ubuntu1) ... 387s Setting up rpcsvc-proto (1.4.3-1build1) ... 387s Setting up libjsoncpp26:armhf (1.9.6-5) ... 387s Setting up libllvm21:armhf (1:21.1.8-1ubuntu1) ... 387s Setting up xtl-dev (0.8.1-1~0.1) ... 387s Setting up llvm-21-linker-tools (1:21.1.8-1ubuntu1) ... 387s Setting up libgc1:armhf (1:8.2.12-1) ... 387s Setting up libubsan1:armhf (15.2.0-12ubuntu1) ... 387s Setting up libcrypt-dev:armhf (1:4.5.1-1) ... 387s Setting up libasan8:armhf (15.2.0-12ubuntu1) ... 387s Setting up cmake-data (4.1.1+really3.31.6-2ubuntu1) ... 387s Setting up librhash1:armhf (1.4.6-1.1) ... 387s Setting up libclang-common-21-dev:armhf (1:21.1.8-1ubuntu1) ... 387s Setting up libclang1-21 (1:21.1.8-1ubuntu1) ... 387s Setting up libc-dev-bin (2.42-2ubuntu4) ... 387s Setting up doctest-dev (2.4.12-1) ... 387s Setting up libgcc-15-dev:armhf (15.2.0-12ubuntu1) ... 387s Setting up libobjc4:armhf (15.2.0-12ubuntu1) ... 387s Setting up libxsimd-dev:armhf (13.2.0-1ubuntu1) ... 387s Setting up libclang-cpp21 (1:21.1.8-1ubuntu1) ... 387s Setting up cmake (4.1.1+really3.31.6-2ubuntu1) ... 387s Setting up libc6-dev:armhf (2.42-2ubuntu4) ... 387s Setting up libobjc-15-dev:armhf (15.2.0-12ubuntu1) ... 387s Setting up libstdc++-15-dev:armhf (15.2.0-12ubuntu1) ... 387s Setting up clang-21 (1:21.1.8-1ubuntu1) ... 387s Setting up clang (1:21.1.6-70) ... 387s Processing triggers for man-db (2.13.1-1build1) ... 388s Processing triggers for libc-bin (2.42-2ubuntu4) ... 403s autopkgtest [22:52:50]: test xsimd-test-clang: [----------------------- 405s 405s Running tests from test/run_test_clang 405s dpkg-architecture: warning: cannot determine CC system type, falling back to default (native compilation) 405s CMake Deprecation Warning at CMakeLists.txt:12 (cmake_minimum_required): 405s Compatibility with CMake < 3.10 will be removed from a future version of 405s CMake. 405s 405s Update the VERSION argument value. Or, use the ... syntax 405s to tell CMake that the project requires at least but has been updated 405s to work with policies introduced by or earlier. 405s 405s 406s -- The C compiler identification is Clang 21.1.8 406s -- The CXX compiler identification is Clang 21.1.8 406s -- Detecting C compiler ABI info 407s -- Detecting C compiler ABI info - done 407s -- Check for working C compiler: /usr/bin/cc - skipped 407s -- Detecting C compile features 407s -- Detecting C compile features - done 407s -- Detecting CXX compiler ABI info 407s -- Detecting CXX compiler ABI info - done 407s -- Check for working CXX compiler: /usr/bin/clang++ - skipped 407s -- Detecting CXX compile features 407s -- Detecting CXX compile features - done 407s -- Setting tests build type to Release 407s -- Performing Test HAS_CPP11_FLAG 407s -- Performing Test HAS_CPP11_FLAG - Success 407s -- Performing Test FLAG_SUPPORTED_bdver1 407s -- Performing Test FLAG_SUPPORTED_bdver1 - Failed 407s -- Performing Test FLAG_SUPPORTED_knl 407s -- Performing Test FLAG_SUPPORTED_knl - Failed 408s -- Performing Test FLAG_SUPPORTED_knm 408s -- Performing Test FLAG_SUPPORTED_knm - Failed 408s -- Performing Test FLAG_SUPPORTED_skylake-avx512 408s -- Performing Test FLAG_SUPPORTED_skylake-avx512 - Failed 408s -- Performing Test FLAG_SUPPORTED_cannonlake 408s -- Performing Test FLAG_SUPPORTED_cannonlake - Failed 408s -- Performing Test FLAG_SUPPORTED_icelake-client 408s -- Performing Test FLAG_SUPPORTED_icelake-client - Failed 408s -- Performing Test FLAG_SUPPORTED_icelake-server 408s -- Performing Test FLAG_SUPPORTED_icelake-server - Failed 408s -- Performing Test FLAG_SUPPORTED_cascadelake 408s -- Performing Test FLAG_SUPPORTED_cascadelake - Failed 408s -- Performing Test FLAG_SUPPORTED_cooperlake 408s -- Performing Test FLAG_SUPPORTED_cooperlake - Failed 408s -- Performing Test FLAG_SUPPORTED_tigerlake 408s -- Performing Test FLAG_SUPPORTED_tigerlake - Failed 408s -- Performing Test FLAG_SUPPORTED_sapphirerapids 408s -- Performing Test FLAG_SUPPORTED_sapphirerapids - Failed 408s -- Performing Test FLAG_SUPPORTED_alderlake 408s -- Performing Test FLAG_SUPPORTED_alderlake - Failed 408s -- Performing Test FLAG_SUPPORTED_rocketlake 408s -- Performing Test FLAG_SUPPORTED_rocketlake - Failed 408s -- Performing Test FLAG_SUPPORTED_graniterapids 409s -- Performing Test FLAG_SUPPORTED_graniterapids - Failed 409s -- Performing Test FLAG_SUPPORTED_graniterapids-d 409s -- Performing Test FLAG_SUPPORTED_graniterapids-d - Failed 409s -- Performing Test FLAG_SUPPORTED_znver4 409s -- Performing Test FLAG_SUPPORTED_znver4 - Failed 409s -- Configuring done (3.2s) 409s -- Generating done (0.0s) 409s -- Build files have been written to: /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang 409s /usr/bin/cmake -S/tmp/autopkgtest.kjZSsr/build.hH9/src/test -B/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang --check-build-system CMakeFiles/Makefile.cmake 0 409s /usr/bin/cmake -E cmake_progress_start /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang/CMakeFiles /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang//CMakeFiles/progress.marks 409s make -f CMakeFiles/Makefile2 all 409s make[1]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang' 409s make -f CMakeFiles/test_xsimd.dir/build.make CMakeFiles/test_xsimd.dir/depend 409s make[2]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang' 409s cd /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /tmp/autopkgtest.kjZSsr/build.hH9/src/test /tmp/autopkgtest.kjZSsr/build.hH9/src/test /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang/CMakeFiles/test_xsimd.dir/DependInfo.cmake "--color=" 409s make[2]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang' 409s make -f CMakeFiles/test_xsimd.dir/build.make CMakeFiles/test_xsimd.dir/build 409s make[2]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang' 409s [ 2%] Building CXX object CMakeFiles/test_xsimd.dir/main.cpp.o 409s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/main.cpp.o -MF CMakeFiles/test_xsimd.dir/main.cpp.o.d -o CMakeFiles/test_xsimd.dir/main.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp 421s [ 5%] Building CXX object CMakeFiles/test_xsimd.dir/test_api.cpp.o 421s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_api.cpp.o -MF CMakeFiles/test_xsimd.dir/test_api.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_api.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_api.cpp 422s [ 7%] Building CXX object CMakeFiles/test_xsimd.dir/test_arch.cpp.o 422s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_arch.cpp.o -MF CMakeFiles/test_xsimd.dir/test_arch.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_arch.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_arch.cpp 424s [ 10%] Building CXX object CMakeFiles/test_xsimd.dir/test_basic_math.cpp.o 424s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_basic_math.cpp.o -MF CMakeFiles/test_xsimd.dir/test_basic_math.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_basic_math.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_basic_math.cpp 425s [ 13%] Building CXX object CMakeFiles/test_xsimd.dir/test_batch.cpp.o 425s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_batch.cpp.o -MF CMakeFiles/test_xsimd.dir/test_batch.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_batch.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_batch.cpp 426s [ 15%] Building CXX object CMakeFiles/test_xsimd.dir/test_batch_bool.cpp.o 426s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_batch_bool.cpp.o -MF CMakeFiles/test_xsimd.dir/test_batch_bool.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_batch_bool.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_batch_bool.cpp 428s [ 18%] Building CXX object CMakeFiles/test_xsimd.dir/test_batch_cast.cpp.o 428s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_batch_cast.cpp.o -MF CMakeFiles/test_xsimd.dir/test_batch_cast.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_batch_cast.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_batch_cast.cpp 429s [ 21%] Building CXX object CMakeFiles/test_xsimd.dir/test_batch_complex.cpp.o 429s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_batch_complex.cpp.o -MF CMakeFiles/test_xsimd.dir/test_batch_complex.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_batch_complex.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_batch_complex.cpp 431s [ 23%] Building CXX object CMakeFiles/test_xsimd.dir/test_batch_float.cpp.o 431s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_batch_float.cpp.o -MF CMakeFiles/test_xsimd.dir/test_batch_float.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_batch_float.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_batch_float.cpp 432s [ 26%] Building CXX object CMakeFiles/test_xsimd.dir/test_batch_int.cpp.o 432s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_batch_int.cpp.o -MF CMakeFiles/test_xsimd.dir/test_batch_int.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_batch_int.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_batch_int.cpp 433s [ 28%] Building CXX object CMakeFiles/test_xsimd.dir/test_bitwise_cast.cpp.o 433s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_bitwise_cast.cpp.o -MF CMakeFiles/test_xsimd.dir/test_bitwise_cast.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_bitwise_cast.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_bitwise_cast.cpp 435s [ 31%] Building CXX object CMakeFiles/test_xsimd.dir/test_batch_constant.cpp.o 435s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_batch_constant.cpp.o -MF CMakeFiles/test_xsimd.dir/test_batch_constant.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_batch_constant.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_batch_constant.cpp 436s [ 34%] Building CXX object CMakeFiles/test_xsimd.dir/test_batch_manip.cpp.o 436s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_batch_manip.cpp.o -MF CMakeFiles/test_xsimd.dir/test_batch_manip.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_batch_manip.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_batch_manip.cpp 437s [ 36%] Building CXX object CMakeFiles/test_xsimd.dir/test_complex_exponential.cpp.o 437s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_complex_exponential.cpp.o -MF CMakeFiles/test_xsimd.dir/test_complex_exponential.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_complex_exponential.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_complex_exponential.cpp 438s [ 39%] Building CXX object CMakeFiles/test_xsimd.dir/test_complex_hyperbolic.cpp.o 438s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_complex_hyperbolic.cpp.o -MF CMakeFiles/test_xsimd.dir/test_complex_hyperbolic.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_complex_hyperbolic.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_complex_hyperbolic.cpp 440s [ 42%] Building CXX object CMakeFiles/test_xsimd.dir/test_complex_power.cpp.o 440s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_complex_power.cpp.o -MF CMakeFiles/test_xsimd.dir/test_complex_power.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_complex_power.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_complex_power.cpp 441s [ 44%] Building CXX object CMakeFiles/test_xsimd.dir/test_complex_trigonometric.cpp.o 441s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_complex_trigonometric.cpp.o -MF CMakeFiles/test_xsimd.dir/test_complex_trigonometric.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_complex_trigonometric.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_complex_trigonometric.cpp 443s [ 47%] Building CXX object CMakeFiles/test_xsimd.dir/test_conversion.cpp.o 443s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_conversion.cpp.o -MF CMakeFiles/test_xsimd.dir/test_conversion.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_conversion.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_conversion.cpp 444s [ 50%] Building CXX object CMakeFiles/test_xsimd.dir/test_custom_default_arch.cpp.o 444s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_custom_default_arch.cpp.o -MF CMakeFiles/test_xsimd.dir/test_custom_default_arch.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_custom_default_arch.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_custom_default_arch.cpp 446s [ 52%] Building CXX object CMakeFiles/test_xsimd.dir/test_error_gamma.cpp.o 446s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_error_gamma.cpp.o -MF CMakeFiles/test_xsimd.dir/test_error_gamma.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_error_gamma.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_error_gamma.cpp 447s [ 55%] Building CXX object CMakeFiles/test_xsimd.dir/test_explicit_batch_instantiation.cpp.o 447s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_explicit_batch_instantiation.cpp.o -MF CMakeFiles/test_xsimd.dir/test_explicit_batch_instantiation.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_explicit_batch_instantiation.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_explicit_batch_instantiation.cpp 448s [ 57%] Building CXX object CMakeFiles/test_xsimd.dir/test_exponential.cpp.o 448s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_exponential.cpp.o -MF CMakeFiles/test_xsimd.dir/test_exponential.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_exponential.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_exponential.cpp 450s [ 60%] Building CXX object CMakeFiles/test_xsimd.dir/test_extract_pair.cpp.o 450s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_extract_pair.cpp.o -MF CMakeFiles/test_xsimd.dir/test_extract_pair.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_extract_pair.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_extract_pair.cpp 451s [ 63%] Building CXX object CMakeFiles/test_xsimd.dir/test_fp_manipulation.cpp.o 451s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_fp_manipulation.cpp.o -MF CMakeFiles/test_xsimd.dir/test_fp_manipulation.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_fp_manipulation.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_fp_manipulation.cpp 452s [ 65%] Building CXX object CMakeFiles/test_xsimd.dir/test_hyperbolic.cpp.o 452s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_hyperbolic.cpp.o -MF CMakeFiles/test_xsimd.dir/test_hyperbolic.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_hyperbolic.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_hyperbolic.cpp 453s [ 68%] Building CXX object CMakeFiles/test_xsimd.dir/test_load_store.cpp.o 453s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_load_store.cpp.o -MF CMakeFiles/test_xsimd.dir/test_load_store.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_load_store.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_load_store.cpp 455s [ 71%] Building CXX object CMakeFiles/test_xsimd.dir/test_memory.cpp.o 455s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_memory.cpp.o -MF CMakeFiles/test_xsimd.dir/test_memory.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_memory.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_memory.cpp 456s [ 73%] Building CXX object CMakeFiles/test_xsimd.dir/test_poly_evaluation.cpp.o 456s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_poly_evaluation.cpp.o -MF CMakeFiles/test_xsimd.dir/test_poly_evaluation.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_poly_evaluation.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_poly_evaluation.cpp 457s [ 76%] Building CXX object CMakeFiles/test_xsimd.dir/test_power.cpp.o 457s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_power.cpp.o -MF CMakeFiles/test_xsimd.dir/test_power.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_power.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_power.cpp 458s [ 78%] Building CXX object CMakeFiles/test_xsimd.dir/test_rounding.cpp.o 458s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_rounding.cpp.o -MF CMakeFiles/test_xsimd.dir/test_rounding.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_rounding.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_rounding.cpp 460s [ 81%] Building CXX object CMakeFiles/test_xsimd.dir/test_select.cpp.o 460s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_select.cpp.o -MF CMakeFiles/test_xsimd.dir/test_select.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_select.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_select.cpp 461s [ 84%] Building CXX object CMakeFiles/test_xsimd.dir/test_shuffle.cpp.o 461s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_shuffle.cpp.o -MF CMakeFiles/test_xsimd.dir/test_shuffle.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_shuffle.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_shuffle.cpp 462s [ 86%] Building CXX object CMakeFiles/test_xsimd.dir/test_sum.cpp.o 462s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_sum.cpp.o -MF CMakeFiles/test_xsimd.dir/test_sum.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_sum.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_sum.cpp 463s [ 89%] Building CXX object CMakeFiles/test_xsimd.dir/test_traits.cpp.o 463s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_traits.cpp.o -MF CMakeFiles/test_xsimd.dir/test_traits.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_traits.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_traits.cpp 464s [ 92%] Building CXX object CMakeFiles/test_xsimd.dir/test_trigonometric.cpp.o 464s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_trigonometric.cpp.o -MF CMakeFiles/test_xsimd.dir/test_trigonometric.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_trigonometric.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_trigonometric.cpp 466s [ 94%] Building CXX object CMakeFiles/test_xsimd.dir/test_xsimd_api.cpp.o 466s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_xsimd_api.cpp.o -MF CMakeFiles/test_xsimd.dir/test_xsimd_api.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_xsimd_api.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_xsimd_api.cpp 475s [ 97%] Building CXX object CMakeFiles/test_xsimd.dir/test_gnu_source.cpp.o 475s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_gnu_source.cpp.o -MF CMakeFiles/test_xsimd.dir/test_gnu_source.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_gnu_source.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_gnu_source.cpp 476s [100%] Linking CXX executable test_xsimd 476s /usr/bin/cmake -E cmake_link_script CMakeFiles/test_xsimd.dir/link.txt --verbose=1 476s /usr/bin/clang++ -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++11 -g -fPIC -march=native -O3 -DNDEBUG CMakeFiles/test_xsimd.dir/main.cpp.o CMakeFiles/test_xsimd.dir/test_api.cpp.o CMakeFiles/test_xsimd.dir/test_arch.cpp.o CMakeFiles/test_xsimd.dir/test_basic_math.cpp.o CMakeFiles/test_xsimd.dir/test_batch.cpp.o CMakeFiles/test_xsimd.dir/test_batch_bool.cpp.o CMakeFiles/test_xsimd.dir/test_batch_cast.cpp.o CMakeFiles/test_xsimd.dir/test_batch_complex.cpp.o CMakeFiles/test_xsimd.dir/test_batch_float.cpp.o CMakeFiles/test_xsimd.dir/test_batch_int.cpp.o CMakeFiles/test_xsimd.dir/test_bitwise_cast.cpp.o CMakeFiles/test_xsimd.dir/test_batch_constant.cpp.o CMakeFiles/test_xsimd.dir/test_batch_manip.cpp.o CMakeFiles/test_xsimd.dir/test_complex_exponential.cpp.o CMakeFiles/test_xsimd.dir/test_complex_hyperbolic.cpp.o CMakeFiles/test_xsimd.dir/test_complex_power.cpp.o CMakeFiles/test_xsimd.dir/test_complex_trigonometric.cpp.o CMakeFiles/test_xsimd.dir/test_conversion.cpp.o CMakeFiles/test_xsimd.dir/test_custom_default_arch.cpp.o CMakeFiles/test_xsimd.dir/test_error_gamma.cpp.o CMakeFiles/test_xsimd.dir/test_explicit_batch_instantiation.cpp.o CMakeFiles/test_xsimd.dir/test_exponential.cpp.o CMakeFiles/test_xsimd.dir/test_extract_pair.cpp.o CMakeFiles/test_xsimd.dir/test_fp_manipulation.cpp.o CMakeFiles/test_xsimd.dir/test_hyperbolic.cpp.o CMakeFiles/test_xsimd.dir/test_load_store.cpp.o CMakeFiles/test_xsimd.dir/test_memory.cpp.o CMakeFiles/test_xsimd.dir/test_poly_evaluation.cpp.o CMakeFiles/test_xsimd.dir/test_power.cpp.o CMakeFiles/test_xsimd.dir/test_rounding.cpp.o CMakeFiles/test_xsimd.dir/test_select.cpp.o CMakeFiles/test_xsimd.dir/test_shuffle.cpp.o CMakeFiles/test_xsimd.dir/test_sum.cpp.o CMakeFiles/test_xsimd.dir/test_traits.cpp.o CMakeFiles/test_xsimd.dir/test_trigonometric.cpp.o CMakeFiles/test_xsimd.dir/test_xsimd_api.cpp.o CMakeFiles/test_xsimd.dir/test_gnu_source.cpp.o -o test_xsimd 476s make[2]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang' 476s [100%] Built target test_xsimd 476s make[1]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang' 476s /usr/bin/cmake -E cmake_progress_start /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang/CMakeFiles 0 476s UpdateCTestConfiguration from :/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang/DartConfiguration.tcl 476s UpdateCTestConfiguration from :/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang/DartConfiguration.tcl 476s Test project /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang 476s Constructing a list of tests 476s Done constructing a list of tests 476s Updating test list for fixtures 476s Added 0 tests to meet fixture requirements 476s Checking test dependency graph... 476s Checking test dependency graph end 476s test 1 476s Start 1: test_xsimd 476s 476s 1: Test command: /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang/test_xsimd 476s 1: Working Directory: /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang 476s 1: Test timeout computed to be: 10000000 476s 1: [doctest] doctest version is "2.4.12" 476s 1: [doctest] run with "--help" for options 476s 1: =============================================================================== 476s 1: [doctest] test cases: 65 | 65 passed | 0 failed | 0 skipped 476s 1: [doctest] assertions: 659 | 659 passed | 0 failed | 476s 1: [doctest] Status: SUCCESS! 476s 1/1 Test #1: test_xsimd ....................... Passed 0.01 sec 476s 476s 100% tests passed, 0 tests failed out of 1 476s 476s Total Test time (real) = 0.01 sec 477s autopkgtest [22:54:04]: test xsimd-test-clang: -----------------------] 481s xsimd-test-clang PASS 481s autopkgtest [22:54:08]: test xsimd-test-clang: - - - - - - - - - - results - - - - - - - - - - 484s autopkgtest [22:54:11]: test xsimd-test-clang-complex: preparing testbed 486s Reading package lists... 486s Building dependency tree... 486s Reading state information... 486s Solving dependencies... 487s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 494s autopkgtest [22:54:21]: test xsimd-test-clang-complex: [----------------------- 496s 496s Running tests from test/run_test_clang_complex 496s dpkg-architecture: warning: cannot determine CC system type, falling back to default (native compilation) 496s CMake Deprecation Warning at CMakeLists.txt:12 (cmake_minimum_required): 496s Compatibility with CMake < 3.10 will be removed from a future version of 496s CMake. 496s 496s Update the VERSION argument value. Or, use the ... syntax 496s to tell CMake that the project requires at least but has been updated 496s to work with policies introduced by or earlier. 496s 496s 497s -- The C compiler identification is Clang 21.1.8 497s -- The CXX compiler identification is Clang 21.1.8 497s -- Detecting C compiler ABI info 497s -- Detecting C compiler ABI info - done 497s -- Check for working C compiler: /usr/bin/cc - skipped 497s -- Detecting C compile features 497s -- Detecting C compile features - done 497s -- Detecting CXX compiler ABI info 497s -- Detecting CXX compiler ABI info - done 497s -- Check for working CXX compiler: /usr/bin/clang++ - skipped 497s -- Detecting CXX compile features 497s -- Detecting CXX compile features - done 497s -- Setting tests build type to Release 497s -- Performing Test HAS_CPP14_FLAG 498s -- Performing Test HAS_CPP14_FLAG - Success 498s -- Performing Test FLAG_SUPPORTED_bdver1 498s -- Performing Test FLAG_SUPPORTED_bdver1 - Failed 498s -- Performing Test FLAG_SUPPORTED_knl 498s -- Performing Test FLAG_SUPPORTED_knl - Failed 498s -- Performing Test FLAG_SUPPORTED_knm 498s -- Performing Test FLAG_SUPPORTED_knm - Failed 498s -- Performing Test FLAG_SUPPORTED_skylake-avx512 498s -- Performing Test FLAG_SUPPORTED_skylake-avx512 - Failed 498s -- Performing Test FLAG_SUPPORTED_cannonlake 498s -- Performing Test FLAG_SUPPORTED_cannonlake - Failed 498s -- Performing Test FLAG_SUPPORTED_icelake-client 498s -- Performing Test FLAG_SUPPORTED_icelake-client - Failed 498s -- Performing Test FLAG_SUPPORTED_icelake-server 498s -- Performing Test FLAG_SUPPORTED_icelake-server - Failed 498s -- Performing Test FLAG_SUPPORTED_cascadelake 498s -- Performing Test FLAG_SUPPORTED_cascadelake - Failed 498s -- Performing Test FLAG_SUPPORTED_cooperlake 498s -- Performing Test FLAG_SUPPORTED_cooperlake - Failed 498s -- Performing Test FLAG_SUPPORTED_tigerlake 499s -- Performing Test FLAG_SUPPORTED_tigerlake - Failed 499s -- Performing Test FLAG_SUPPORTED_sapphirerapids 499s -- Performing Test FLAG_SUPPORTED_sapphirerapids - Failed 499s -- Performing Test FLAG_SUPPORTED_alderlake 499s -- Performing Test FLAG_SUPPORTED_alderlake - Failed 499s -- Performing Test FLAG_SUPPORTED_rocketlake 499s -- Performing Test FLAG_SUPPORTED_rocketlake - Failed 499s -- Performing Test FLAG_SUPPORTED_graniterapids 499s -- Performing Test FLAG_SUPPORTED_graniterapids - Failed 499s -- Performing Test FLAG_SUPPORTED_graniterapids-d 499s -- Performing Test FLAG_SUPPORTED_graniterapids-d - Failed 499s -- Performing Test FLAG_SUPPORTED_znver4 499s -- Performing Test FLAG_SUPPORTED_znver4 - Failed 499s -- Configuring done (2.7s) 499s -- Generating done (0.0s) 499s -- Build files have been written to: /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex 499s /usr/bin/cmake -S/tmp/autopkgtest.kjZSsr/build.hH9/src/test -B/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex --check-build-system CMakeFiles/Makefile.cmake 0 499s /usr/bin/cmake -E cmake_progress_start /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex/CMakeFiles /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex//CMakeFiles/progress.marks 499s make -f CMakeFiles/Makefile2 all 499s make[1]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex' 499s make -f CMakeFiles/test_xsimd.dir/build.make CMakeFiles/test_xsimd.dir/depend 499s make[2]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex' 499s cd /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /tmp/autopkgtest.kjZSsr/build.hH9/src/test /tmp/autopkgtest.kjZSsr/build.hH9/src/test /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex /tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex/CMakeFiles/test_xsimd.dir/DependInfo.cmake "--color=" 499s make[2]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex' 499s make -f CMakeFiles/test_xsimd.dir/build.make CMakeFiles/test_xsimd.dir/build 499s make[2]: Entering directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex' 499s [ 2%] Building CXX object CMakeFiles/test_xsimd.dir/main.cpp.o 499s /usr/bin/clang++ -DXSIMD_ENABLE_XTL_COMPLEX=1 -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++14 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/main.cpp.o -MF CMakeFiles/test_xsimd.dir/main.cpp.o.d -o CMakeFiles/test_xsimd.dir/main.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/main.cpp 508s [ 5%] Building CXX object CMakeFiles/test_xsimd.dir/test_api.cpp.o 508s /usr/bin/clang++ -DXSIMD_ENABLE_XTL_COMPLEX=1 -mfloat-abi=hard -mfpu=vfpv3 -Wunused-parameter -Wextra -Wreorder -std=c++14 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_api.cpp.o -MF CMakeFiles/test_xsimd.dir/test_api.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_api.cpp.o -c /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_api.cpp 509s In file included from /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_api.cpp:12: 509s In file included from /usr/include/xsimd/xsimd.hpp:56: 509s In file included from /usr/include/xsimd/arch/xsimd_scalar.hpp:26: 509s In file included from /usr/include/xtl/xcomplex.hpp:32: 509s /usr/include/xtl/xtype_traits.hpp:306:40: error: no member named 'conjunction' in namespace 'std' 509s 306 | constexpr bool xtl_requires = std::conjunction::value; 509s | ^~~~~~~~~~~ 509s /usr/include/xtl/xtype_traits.hpp:306:52: error: 'C' does not refer to a value 509s 306 | constexpr bool xtl_requires = std::conjunction::value; 509s | ^ 509s /usr/include/xtl/xtype_traits.hpp:305:24: note: declared here 509s 305 | template 509s | ^ 510s /usr/include/xtl/xtype_traits.hpp:309:34: error: no template named 'disjunction' in namespace 'std'; did you mean 'is_function'? 510s 309 | constexpr bool either = std::disjunction::value; 510s | ~~~~~^ 510s /usr/lib/gcc/arm-linux-gnueabihf/15/../../../../include/c++/15/type_traits:662:12: note: 'is_function' declared here 510s 662 | struct is_function 510s | ^ 510s In file included from /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_api.cpp:12: 510s In file included from /usr/include/xsimd/xsimd.hpp:56: 510s In file included from /usr/include/xsimd/arch/xsimd_scalar.hpp:26: 510s In file included from /usr/include/xtl/xcomplex.hpp:32: 510s /usr/include/xtl/xtype_traits.hpp:312:36: error: no member named 'negation' in namespace 'std' 510s 312 | constexpr bool disallow = std::negation>::value; 510s | ^~~~~~~~ 510s /usr/include/xtl/xtype_traits.hpp:312:50: error: no member named 'conjunction' in namespace 'std' 510s 312 | constexpr bool disallow = std::negation>::value; 510s | ^~~~~~~~~~~ 510s /usr/include/xtl/xtype_traits.hpp:312:62: error: 'C' does not refer to a value 510s 312 | constexpr bool disallow = std::negation>::value; 510s | ^ 510s /usr/include/xtl/xtype_traits.hpp:311:24: note: declared here 510s 311 | template 510s | ^ 510s /usr/include/xtl/xtype_traits.hpp:315:40: error: no member named 'negation' in namespace 'std' 510s 315 | constexpr bool disallow_one = std::negation>::value; 510s | ^~~~~~~~ 510s /usr/include/xtl/xtype_traits.hpp:315:54: error: no template named 'disjunction' in namespace 'std'; did you mean 'is_function'? 510s 315 | constexpr bool disallow_one = std::negation>::value; 510s | ~~~~~^ 510s /usr/lib/gcc/arm-linux-gnueabihf/15/../../../../include/c++/15/type_traits:662:12: note: 'is_function' declared here 510s 662 | struct is_function 510s | ^ 510s In file included from /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_api.cpp:12: 510s In file included from /usr/include/xsimd/xsimd.hpp:56: 510s In file included from /usr/include/xsimd/arch/xsimd_scalar.hpp:26: 510s In file included from /usr/include/xtl/xcomplex.hpp:32: 510s /usr/include/xtl/xtype_traits.hpp:315:71: error: expected '(' for function-style cast or type construction 510s 315 | constexpr bool disallow_one = std::negation>::value; 510s | ~~~~~~~~~~~~~~~~~~~~~~^ 510s /usr/include/xtl/xtype_traits.hpp:315:74: error: no member named 'value' in the global namespace 510s 315 | constexpr bool disallow_one = std::negation>::value; 510s | ^~~~~ 510s /usr/include/xtl/xtype_traits.hpp:351:30: error: unknown template name 'conjunction' 510s 351 | struct all_scalar : std::conjunction...> 510s | ^ 510s In file included from /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_api.cpp:12: 510s In file included from /usr/include/xsimd/xsimd.hpp:56: 510s In file included from /usr/include/xsimd/arch/xsimd_scalar.hpp:26: 510s /usr/include/xtl/xcomplex.hpp:90:33: error: no template named 'disjunction' in namespace 'std'; did you mean 'is_function'? 510s 90 | using is_gen_complex = std::disjunction>, is_xcomplex>>; 510s | ~~~~~^ 510s /usr/lib/gcc/arm-linux-gnueabihf/15/../../../../include/c++/15/type_traits:662:12: note: 'is_function' declared here 510s 662 | struct is_function 510s | ^ 510s In file included from /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_api.cpp:12: 510s In file included from /usr/include/xsimd/xsimd.hpp:56: 510s In file included from /usr/include/xsimd/arch/xsimd_scalar.hpp:26: 510s /usr/include/xtl/xcomplex.hpp:90:33: error: too many template arguments for class template 'is_function' 510s 90 | using is_gen_complex = std::disjunction>, is_xcomplex>>; 510s | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 510s /usr/lib/gcc/arm-linux-gnueabihf/15/../../../../include/c++/15/type_traits:662:12: note: template is declared here 510s 661 | template 510s | ~~~~~~~~~~~~~~~~~~~~~~ 510s 662 | struct is_function 510s | ^ 510s In file included from /tmp/autopkgtest.kjZSsr/build.hH9/src/test/test_api.cpp:12: 510s In file included from /usr/include/xsimd/xsimd.hpp:56: 510s In file included from /usr/include/xsimd/arch/xsimd_scalar.hpp:26: 510s /usr/include/xtl/xcomplex.hpp:97:48: error: no template named 'is_gen_complex' 510s 97 | using disable_xcomplex = std::enable_if_t::value, R>; 510s | ^ 510s /usr/include/xtl/xcomplex.hpp:100:46: error: no template named 'is_gen_complex' 510s 100 | using enable_xcomplex = std::enable_if_t::value, R>; 510s | ^ 510s /usr/include/xtl/xcomplex.hpp:168:22: error: no member named 'conjunction' in namespace 'std' 510s 168 | std::conjunction< 510s | ^~~~~~~~~~~ 510s /usr/include/xtl/xcomplex.hpp:169:26: error: no member named 'negation' in namespace 'std' 510s 169 | std::negation>, 510s | ^~~~~~~~ 510s /usr/include/xtl/xcomplex.hpp:169:35: error: use of undeclared identifier 'is_gen_complex' 510s 169 | std::negation>, 510s | ^~~~~~~~~~~~~~ 510s /usr/include/xtl/xcomplex.hpp:172:20: error: non-friend class member 'value' cannot have a qualified name 510s 172 | >::value, 510s | ~~^ 510s fatal error: too many errors emitted, stopping now [-ferror-limit=] 510s 20 errors generated. 510s make[2]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex' 510s make[2]: *** [CMakeFiles/test_xsimd.dir/build.make:93: CMakeFiles/test_xsimd.dir/test_api.cpp.o] Error 1 510s make[1]: Leaving directory '/tmp/autopkgtest.kjZSsr/build.hH9/src/test/run_test_clang_complex' 510s make[1]: *** [CMakeFiles/Makefile2:133: CMakeFiles/test_xsimd.dir/all] Error 2 510s make: *** [Makefile:101: all] Error 2 510s autopkgtest [22:54:37]: test xsimd-test-clang-complex: -----------------------] 514s autopkgtest [22:54:41]: test xsimd-test-clang-complex: - - - - - - - - - - results - - - - - - - - - - 514s xsimd-test-clang-complex FAIL non-zero exit status 2 517s autopkgtest [22:54:44]: @@@@@@@@@@@@@@@@@@@@ summary 517s xsimd-test FAIL non-zero exit status 2 517s xsimd-test-complex FAIL non-zero exit status 2 517s xsimd-test-clang PASS 517s xsimd-test-clang-complex FAIL non-zero exit status 2